[COMMITTED] HPPA/IA64 : Don't use broken DL_AUTO_FUNCTION_ADDRESS()
Carlos O'Donell
carlos@redhat.com
Sat Nov 23 15:17:00 GMT 2013
On 11/21/2013 02:18 AM, Guy Martin wrote:
> On Mon, 18 Nov 2013 12:44:00 -0500
> "Carlos O'Donell" <carlos@redhat.com> wrote:
>
>> This looks good to me and makes everything cleaner.
>>
>
> I got my hands on a ia64 machine and the patch was broken for that arch.
> I've attached the working patch that has been tested on amd64/hppa/ia64.
>
>> Can you check this in yourself or do you need someone to check it in
>> for you?
>
> I cannot check it myself. I don't have rights on the glibc repo.
Checked in. No regressions on x86_64.
I only fixed one minor thing, you had a 90 character line in
sysdeps/generic/ldsodefs.h and I wrapped it down to under 80.
commit daf75146de07303ea0c5ad700ec5ef703ec114a1
Author: Guy Martin <gmsoft@tuxicoman.be>
Date: Thu Nov 21 13:23:16 2013 -0500
Don't use broken DL_AUTO_FUNCTION_ADDRESS()
On hppa and ia64, the macro DL_AUTO_FUNCTION_ADDRESS() uses the
variable fptr[2] in it's own scope.
The content of fptr[] is thus undefined right after the macro exits.
Newer gcc's (>= 4.7) reuse the stack space of this variable triggering
a segmentation fault in dl-init.c:69.
To fix this we rewrite the macros to make the call directly to init
and fini without needing to pass back a constructed function pointer.
Cheers,
Carlos.
More information about the Libc-alpha
mailing list