[1/2] hppa/ia64: _dl_symbol_address: add PLT bypass for rtld
Commit Message
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
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
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.
@@ -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)
@@ -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)
@@ -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)