about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@bell.net>2016-01-02 09:48:18 -0500
committerMike Frysinger <vapier@gentoo.org>2016-01-08 02:19:26 -0500
commit48025aa9ed3b9a5f5f3b1310eec79b66fb645c17 (patch)
treeca262547243148a546d8989f77b5180782374083 /ChangeLog
parent6e76c11f89e9bd0b8bb7185dc754bf6c7dac572b (diff)
downloadglibc-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--ChangeLog9
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