From 2a6ad8142d14c998e6c5eb51418aac1f598b621e Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 15 Jul 2015 07:37:47 -0400 Subject: [PATCH] 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. --- ChangeLog | 7 +++++++ elf/dl-symaddr.c | 1 + sysdeps/hppa/dl-lookupcfg.h | 1 + sysdeps/ia64/dl-lookupcfg.h | 1 + 4 files changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 34b31281eeb..47e88edebe1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2015-07-16 Mike Frysinger + + * 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 * tst-nodelete-opened.c (do_test): Add comment to clarify how diff --git a/elf/dl-symaddr.c b/elf/dl-symaddr.c index 1785382996e..e18a2031844 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 8fcdebd27e3..cd0d6b15b36 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 8796a71674f..edf26359f6b 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) -- 2.47.2