gas 2.10.91 from 20000920 cvs is broken under hpux 10.20

John David Anglin dave@hiauly1.hia.nrc.ca
Fri Sep 22 16:39:00 GMT 2000


In trying to resolve this bug which has been noted for a few days on the
gcc-bugs list,

./xgcc -B./ -B/usr/local/hppa1.1-hp-hpux10.20/bin/ -isystem /usr/local/hppa1.1-hp-hpux10.20/include -O2   -DIN_GCC    -g -W -Wall  -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes  -Wno-long-long -isystem ./include  -fPIC -g1  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I../../gcc -I../../gcc/config -I../../gcc/../include -DUSE_COLLECT2 -DL_muldi3 -c ../../gcc/libgcc2.c -o libgcc/./_muldi3.o
../../gcc/libgcc2.c: In function `__muldi3':
../../gcc/libgcc2.c:199: Internal error: Segmentation fault.
   Please submit a full bug report.
   See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

I found that the segmentation fault on my machine occurs in emit-rtl.c.
The following code in reset_used_flags is incorrectly linked into cc1
and ultimately causes the fault:

        ldo 4(%r19),%r19
	addl %r19,%r21,%r20
	ldw 0(%r20),%r26
	.CALL ARGW0=GR
	bl reset_used_flags,%r2
	nop
	.stabn 68,0,2010,L$M646-reset_used_flags

The disassembly of emit-rtl.o with objdump looks ok

 200:   36 73 00 08     ldo 4(r19),r19
 204:   0a b3 0a 14     add,l r19,r21,r20
 208:   0e 80 10 9a     ldw  0(sr0,r20),r26
 20c:   e8 5f 1b dd     b,l 0 <reset_used_flags>,rp
 210:   08 00 02 40     nop

but when the module is linked the `b,l' to reset_used_flags changes to
a `b,l' into the middle of copy_rtx_if_shared (the previous function)

0x1d84d0 <reset_used_flags+512>:        ldo 4(r19),r19
0x1d84d4 <reset_used_flags+516>:        add,l r19,r21,r20
0x1d84d8 <reset_used_flags+520>:        ldw  0(sr0,r20),r26
0x1d84dc <reset_used_flags+524>:
    b,l 0x1d80bc <copy_rtx_if_shared+700>,rp
0x1d84e0 <reset_used_flags+528>:        nop

Since the linker hasn't changed, I would have to guess that there is a
relocation problem with respect to the above call.  However, when I
include the relocation info in the assembly dump of emit-rtl.o, things
appear normal:

 20c:   e8 5f 1b dd     b,l 0 <reset_used_flags>,rp
		 	20c: R_PCREL_CALL       reset_used_flags+0x40000000

Thus, I am not sure what's going on.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


More information about the Binutils mailing list