diff options
author | John David Anglin <dave.anglin@bell.net> | 2016-01-02 09:48:18 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2016-01-08 02:19:26 -0500 |
commit | 48025aa9ed3b9a5f5f3b1310eec79b66fb645c17 (patch) | |
tree | ca262547243148a546d8989f77b5180782374083 /ChangeLog | |
parent | 6e76c11f89e9bd0b8bb7185dc754bf6c7dac572b (diff) | |
download | glibc-48025aa9ed3b9a5f5f3b1310eec79b66fb645c17.tar.gz glibc-48025aa9ed3b9a5f5f3b1310eec79b66fb645c17.tar.xz glibc-48025aa9ed3b9a5f5f3b1310eec79b66fb645c17.zip |
hppa: fix dladdr [BZ #19415]
The attached patch fixes dladdr on hppa. Instead of using the generic version of _dl_lookup_address, we use an implementation more or less modeled after __canonicalize_funcptr_for_compare() in gcc. The function pointer is analyzed and if it points to the trampoline used to call _dl_runtime_resolve just before the global offset table, then we call _dl_fixup to resolve the function pointer. Then, we return the instruction pointer from the first word of the descriptor. The change fixes the testcase provided in [BZ #19415] and the Debian nss package now builds successfully.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 4db27e679f..56298db37c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-01-08 John David Anglin <danglin@gcc.gnu.org> + + [BZ #19415] + * sysdeps/hppa/dl-fptr.c (_dl_fixup): Declare. + (elf_machine_resolve): New. Return address of _dl_runtime_resolve. + (_dl_lookup_address): Rewrite using function resolver trampoline. + * sysdeps/hppa/dl-lookupcfg.h (DL_LOOKUP_ADDRESS): Don't clear bottom + two bits in address. + 2016-01-07 Mike Frysinger <vapier@gentoo.org> * longlong.h: Change !__SHMEDIA__ to |