[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#321785: fakeroot: segfaults on [hppa]

> #1  0x406d7424 in __pthread_sigaction (sig=18, act=0xc0241ec8, 
> oact=0xc0241f50)
>      at signals.c:106
> 106               if (old == SIG_IGN || old == SIG_DFL || old == SIG_ERR)
> (gdb) print &old
> Address requested for identifier "old" which is in register $r11
> (gdb) print /x $r11
> $6 = 0x0
> (gdb) print /x $pc
> $7 = 0x406d7424
> (gdb) disassemble $pc-16 $pc+4
> Dump of assembler code from 0x406d7414 to 0x406d7428:
> 0x406d7414 <__pthread_sigaction+252>:   stw r20,-138(,sp)
> 0x406d7418 <__pthread_sigaction+256>:   copy r19,r4
> 0x406d741c <__pthread_sigaction+260>:   b,l 0x406dbcd8 
> <__canonicalize_funcptr_for_compare>,rp
> 0x406d7420 <__pthread_sigaction+264>:   ldo -2(r11),r26
> 0x406d7424 <__pthread_sigaction+268>:   copy r4,r19
> End of assembler dump.
> (gdb)
> Why is it doing that "ldo -2(r11),r26" ?

I would have thought that old (r11) would have just been copied to
r26.  Could you send preprocessed source and compilation details?

The handling of function pointers in 4.0 branch was broken prior to
this change:

2005-07-02  Jeff Law  <law@redhat.com>

        * tree-ssa-dom.c (find_equivalent_equality_comparison): Do not
	a eliminate type conversion which feeds an equality comparison
	if the original type or either operand in the comparison is a
	function pointer.

This change is in 4.0.1.

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

Reply to: