aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf-s390-common.c
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2018-05-28 08:15:06 -0700
committerH.J. Lu <hjl.tools@gmail.com>2018-05-28 08:15:21 -0700
commitac98f9e2275ffcca560eaa0bddd282a1ff94fc28 (patch)
tree93151266d6d6817f64ef156a6dc3c523a206d4d2 /bfd/elf-s390-common.c
parent03fce1c78c01a9b0e30e91be60e7af717a10bb2c (diff)
downloadfsf-binutils-gdb-ac98f9e2275ffcca560eaa0bddd282a1ff94fc28.zip
fsf-binutils-gdb-ac98f9e2275ffcca560eaa0bddd282a1ff94fc28.tar.gz
fsf-binutils-gdb-ac98f9e2275ffcca560eaa0bddd282a1ff94fc28.tar.bz2
ld: Unify STT_GNU_IFUNC handling
Take STT_GNU_IFUNC handling scattered across targets and gather it in the generic ELF linker. bfd/ PR ld/23238 * elf-s390-common.c (elf_s390_add_symbol_hook): Removed. * elf32-arc.c (elf_arc_add_symbol_hook): Likewise. (elf_backend_add_symbol_hook): Likewise. * elf32-m68k.c (elf_m68k_add_symbol_hook): Likewise. (elf_backend_add_symbol_hook): Likewise. * elf32-s390.c (elf_backend_add_symbol_hook): Likewise. * elf32-sparc.c (elf32_sparc_add_symbol_hook): Likewise. (elf_backend_add_symbol_hook): Likewise. * elf64-s390.c (elf_backend_add_symbol_hook): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_add_symbol_hook): Likewise. * elfxx-aarch64.h (_bfd_aarch64_elf_add_symbol_hook): Likewise. (elf_backend_add_symbol_hook): Likewise. * elf32-arm.c (elf32_arm_add_symbol_hook): Remove STT_GNU_IFUNC handling. * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise. * elf64-ppc.c (ppc64_elf_add_symbol_hook): Likewise. * elf64-sparc.c (elf64_sparc_add_symbol_hook): Likewise. * elflink.c (elf_link_add_object_symbols): Set elf_gnu_symbol_ifunc for STT_GNU_IFUNC symbols. ld/ PR ld/23238 * testsuite/ld-ifunc/ifunc-26.d: New file. * testsuite/ld-ifunc/ifunc-26.s: Likewise. * testsuite/ld-ifunc/ifunc.exp: Run *.d tests without a working compiler.
Diffstat (limited to 'bfd/elf-s390-common.c')
-rw-r--r--bfd/elf-s390-common.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/bfd/elf-s390-common.c b/bfd/elf-s390-common.c
index 21195f2..b37cb25 100644
--- a/bfd/elf-s390-common.c
+++ b/bfd/elf-s390-common.c
@@ -223,25 +223,6 @@ elf_s390_allocate_local_syminfo (bfd *abfd, Elf_Internal_Shdr *symtab_hdr)
return TRUE;
}
-/* Pick ELFOSABI_GNU if IFUNC symbols are used. */
-
-static bfd_boolean
-elf_s390_add_symbol_hook (bfd *abfd,
- struct bfd_link_info *info,
- Elf_Internal_Sym *sym,
- const char **namep ATTRIBUTE_UNUSED,
- flagword *flagsp ATTRIBUTE_UNUSED,
- asection **secp ATTRIBUTE_UNUSED,
- bfd_vma *valp ATTRIBUTE_UNUSED)
-{
- 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_ifunc;
-
- return TRUE;
-}
-
/* Whether to sort relocs output by ld -r or ld --emit-relocs, by
r_offset. Don't do so for code sections. We want to keep ordering
of GDCALL / PLT32DBL for TLS optimizations as is. On the other