LD/ELF: Unify STB_GNU_UNIQUE handling
Take STB_GNU_UNIQUE handling scattered across targets and gather it in the generic ELF linker. Update test suite infrastructure accordingly. bfd/ * elf-s390-common.c (elf_s390_add_symbol_hook): Remove STB_GNU_UNIQUE handling. * elf32-arc.c (elf_arc_add_symbol_hook): Likewise. * elf32-arm.c (elf32_arm_add_symbol_hook): Likewise. * elf32-m68k.c (elf_m68k_add_symbol_hook): Likewise. * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise. * elf32-sparc.c (elf32_sparc_add_symbol_hook): Likewise. * elf64-ppc.c (ppc64_elf_add_symbol_hook): Likewise. * elf64-sparc.c (elf64_sparc_add_symbol_hook): Likewise. * elf64-x86-64.c (elf_x86_64_add_symbol_hook): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_add_symbol_hook): Likewise. * elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Likewise. * elf32-i386.c (elf_i386_add_symbol_hook): Remove function. (elf_backend_add_symbol_hook): Remove macro. * elflink.c (elf_link_add_object_symbols): Set `has_gnu_symbols' for STB_GNU_UNIQUE symbols. binutils/ * testsuite/lib/binutils-common.exp (supports_gnu_unique): New procedure. * testsuite/binutils-all/objcopy.exp: Use `supports_gnu_unique' with the `strip-10' test. ld/ * testsuite/ld-unique/unique.exp: Use `is_elf_format' and `supports_gnu_unique' to qualify testing.
This commit is contained in:
parent
fcdad592cd
commit
a43942db49
19 changed files with 104 additions and 83 deletions
|
@ -426,11 +426,10 @@ elf64_sparc_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
|
|||
{
|
||||
static const char *const stt_types[] = { "NOTYPE", "OBJECT", "FUNCTION" };
|
||||
|
||||
if ((ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC
|
||||
|| ELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE)
|
||||
if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC
|
||||
&& (abfd->flags & DYNAMIC) == 0
|
||||
&& bfd_get_flavour (info->output_bfd) == bfd_target_elf_flavour)
|
||||
elf_tdata (info->output_bfd)->has_gnu_symbols = elf_gnu_symbol_any;
|
||||
elf_tdata (info->output_bfd)->has_gnu_symbols |= elf_gnu_symbol_ifunc;
|
||||
|
||||
if (ELF_ST_TYPE (sym->st_info) == STT_REGISTER)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue