This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[COMMITTED] HPPA/IA64 : Don't use broken DL_AUTO_FUNCTION_ADDRESS()


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]