[1/2] hppa/ia64: _dl_symbol_address: add PLT bypass for rtld

Message ID 1436961343-4773-1-git-send-email-vapier@gentoo.org
State Committed
Delegated to: Mike Frysinger
Headers

Commit Message

Mike Frysinger July 15, 2015, 11:55 a.m. UTC
  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.

2015-07-15  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.
---
 elf/dl-symaddr.c            | 1 +
 sysdeps/hppa/dl-lookupcfg.h | 1 +
 sysdeps/ia64/dl-lookupcfg.h | 1 +
 3 files changed, 3 insertions(+)
  

Comments

Mike Frysinger July 16, 2015, 1:04 p.m. UTC | #1
On 15 Jul 2015 07:55, Mike Frysinger wrote:
> 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.

pushed both now
-mike
  
Carlos O'Donell July 16, 2015, 5:32 p.m. UTC | #2
On 07/16/2015 09:04 AM, Mike Frysinger wrote:
> On 15 Jul 2015 07:55, Mike Frysinger wrote:
>> 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.
> 
> pushed both now
> -mike
> 

Thanks.

c.
  

Patch

diff --git a/elf/dl-symaddr.c b/elf/dl-symaddr.c
index 1785382..e18a203 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 8fcdebd..cd0d6b1 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 8796a71..edf2635 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)