From nobody@FreeBSD.ORG Tue Aug 17 08:05:20 1999
Return-Path: <nobody@FreeBSD.ORG>
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 54A4E15714; Tue, 17 Aug 1999 08:05:20 -0700 (PDT)
Message-Id: <19990817150520.54A4E15714@hub.freebsd.org>
Date: Tue, 17 Aug 1999 08:05:20 -0700 (PDT)
From: ganssauge@gmx.de
Sender: nobody@FreeBSD.ORG
To: freebsd-gnats-submit@freebsd.org
Subject: The assembler chokes on very long operands when called with -k
X-Send-Pr-Version: www-1.0

>Number:         13200
>Category:       gnu
>Synopsis:       The assembler chokes on very long operands when called with -k
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Aug 17 08:10:01 PDT 1999
>Closed-Date:    Tue Jan 15 10:00:38 PST 2002
>Last-Modified:  Tue Jan 15 10:01:19 PST 2002
>Originator:     Gottfried Ganauge
>Release:        2.2.8-STABLE
>Organization:
>Environment:
FreeBSD gg3pc.lasec.de 2.2.8-STABLE FreeBSD 2.2.8-STABLE #0: Wed Dec  9 08:39:17 CET 1998     Root@gg3pc.lasec.de:/.tmp_mount/lasecpc/usr/src/sys/compile/GG3PC  i386
>Description:
When compiling C++ programs heavily using templates with EGCS-1.1.2
the compilation is aborted with a message stating that the assembler 
terminated with signal 11.
The same problem should happen when compiling to a.out on FreeBSD 3.2.
>How-To-Repeat:
Try to compile kdelibs11 from the ports collection using egcs-1.1.2.
the problem occurs at kab/addressbook.cc and on kab/keyvaluemap.cc.
>Fix:
Here is a patch to the assembler:
--- gnu/usr.bin/as/config/tc-i386.c     Fri Feb  5 12:53:30 1999
+++ /usr/src/gnu/usr.bin/as/config/tc-i386.c    Tue Aug 17 16:57:48 1999
@@ -1608,7 +1608,7 @@
                        register char *cp;
                        if (picmode &&
                                (cp = strchr(input_line_pointer,'@'))) {
-                               char tmpbuf[BUFSIZ];
+                               char *tmpbuf = alloca (cp - input_line_pointer +
 20);

                                if (strncmp(cp+1, "PLT", 3) == 0) {
                                        i.disp_reloc[this_operand] = RELOC_JMP_T
BL;


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback 
State-Changed-By: mike 
State-Changed-When: Fri Jul 20 17:14:50 PDT 2001 
State-Changed-Why:  

Does this problem still occur in newer versions of FreeBSD, 
such as 4.3-RELEASE? 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=13200 
State-Changed-From-To: feedback->closed 
State-Changed-By: ashp 
State-Changed-When: Tue Jan 15 10:00:38 PST 2002 
State-Changed-Why:  
egcs isn't the base compiler anymore, and this works fine with the latest 
stable. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=13200 
>Unformatted:
