[parisc-linux] Re: gcc-3.2 -> gcc-3.3 transition on hppa
John David Anglin
dave@hiauly1.hia.nrc.ca
Tue, 18 Mar 2003 15:55:42 -0500 (EST)
> > I believe that we were talking about a problem in in glibc's use
> > of __canonicalize_funcptr_for_compare with a gcc 3.3 compiled kernel.
>
> Quoting an earlier mail:
> > IAOQ = 10351b7c
> > Func: __canonicalize_funcptr_for_compare, Off: 38, Addr: 0x10351b7c
> > 10351b70: 2a 6b 50 00 addil 56800,r19,%r1
> > 10351b74: 48 21 0c a8 ldw 654(r1),r1
> > 10351b78: d4 60 1c 1e depwi 0,31,2,r3
> > 10351b7c: 0c 60 10 94 ldw 0(sr0,r3),r20
> >
> > GR0 = 00000000
> >
> > GR1 = 103eee50
> > Func: _GLOBAL_OFFSET_TABLE_, Off: 0, Addr: 0x103eee50
> >
> > GR2 = 101342f8
> > Func: do_sigaction, Off: a8, Addr: 0x101342f8
>
> these are definitely kernel addresses....
Right. I see the code that's causing the problem in kernel/signal.c:
if (k->sa.sa_handler == SIG_IGN
|| (k->sa.sa_handler == SIG_DFL
You don't want to canonicalize k->sa.sa_handler here, so a cast to
void * or something is needed. The PA is the only port that I am
aware of that needs to canonicalize function pointers.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)