about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-07-15 07:37:47 -0400
committerMike Frysinger <vapier@gentoo.org>2015-07-16 09:03:08 -0400
commit2a6ad8142d14c998e6c5eb51418aac1f598b621e (patch)
tree29a2e0c65d1e11564b0f4d17066e0d07471ef511
parente591758b38a606f6197cfdd0f8382fa8397b5e77 (diff)
downloadglibc-2a6ad8142d14c998e6c5eb51418aac1f598b621e.tar.gz
glibc-2a6ad8142d14c998e6c5eb51418aac1f598b621e.tar.xz
glibc-2a6ad8142d14c998e6c5eb51418aac1f598b621e.zip
hppa/ia64: _dl_symbol_address: add PLT bypass for rtld
This symbol is defined in the ldso, and is used both there and libc.so.
There is no hidden symbol for it though which leads to relocations in
the ldso and the elf/check-localplt test failing.  Add a hidden def for
rtld to fix all of that.

This function/file is only used by hppa & ia64, so no testing is needed
for other arches.
-rw-r--r--ChangeLog7
-rw-r--r--elf/dl-symaddr.c1
-rw-r--r--sysdeps/hppa/dl-lookupcfg.h1
-rw-r--r--sysdeps/ia64/dl-lookupcfg.h1
4 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 34b31281ee..47e88edebe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-07-16  Mike Frysinger  <vapier@gentoo.org>
+
+	* elf/dl-symaddr.c (_dl_symbol_address): Add rtld_hidden_def.
+	* sysdeps/hppa/dl-lookupcfg.h (_dl_symbol_address): Add
+	rtld_hidden_proto.
+	* sysdeps/ia64/dl-lookupcfg.h (_dl_symbol_address): Likewise.
+
 2015-07-16  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
 	* tst-nodelete-opened.c (do_test): Add comment to clarify how
diff --git a/elf/dl-symaddr.c b/elf/dl-symaddr.c
index 1785382996..e18a203184 100644
--- a/elf/dl-symaddr.c
+++ b/elf/dl-symaddr.c
@@ -30,3 +30,4 @@ _dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref)
   else
     return (void *) value;
 }
+rtld_hidden_def (_dl_symbol_address)
diff --git a/sysdeps/hppa/dl-lookupcfg.h b/sysdeps/hppa/dl-lookupcfg.h
index 8fcdebd27e..cd0d6b15b3 100644
--- a/sysdeps/hppa/dl-lookupcfg.h
+++ b/sysdeps/hppa/dl-lookupcfg.h
@@ -25,6 +25,7 @@
 struct link_map;
 
 void *_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref);
+rtld_hidden_proto (_dl_symbol_address)
 
 #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)
 
diff --git a/sysdeps/ia64/dl-lookupcfg.h b/sysdeps/ia64/dl-lookupcfg.h
index 8796a71674..edf26359f6 100644
--- a/sysdeps/ia64/dl-lookupcfg.h
+++ b/sysdeps/ia64/dl-lookupcfg.h
@@ -28,6 +28,7 @@
 struct link_map;
 
 extern void *_dl_symbol_address (struct link_map *map, const Elf64_Sym *ref);
+rtld_hidden_proto (_dl_symbol_address)
 
 #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)