]> git.ipfire.org Git - thirdparty/glibc.git/commit
Don't use broken DL_AUTO_FUNCTION_ADDRESS()
authorGuy Martin <gmsoft@tuxicoman.be>
Thu, 21 Nov 2013 18:23:16 +0000 (13:23 -0500)
committerMike Frysinger <vapier@gentoo.org>
Sun, 24 Nov 2013 17:36:47 +0000 (12:36 -0500)
commitd1b29e58c17436b3e0cf92c12b1e99ec6b4cd9ba
tree3e5cd5e7a08b223edeaa805265aa92ef6ddc4d8a
parentb15ad643798707d247598a765edfa0ac0e8088c5
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.

URL: https://bugs.gentoo.org/486618
URL: https://bugs.gentoo.org/486974

(cherry picked from commit daf75146de07303ea0c5ad700ec5ef703ec114a1)
elf/dl-close.c
elf/dl-fini.c
elf/dl-init.c
ports/sysdeps/hppa/dl-lookupcfg.h
ports/sysdeps/hppa/dl-machine.h
ports/sysdeps/ia64/dl-lookupcfg.h
ports/sysdeps/ia64/dl-machine.h
sysdeps/generic/ldsodefs.h