Skip to content
  • H.J. Lu's avatar
    ld: Unify STT_GNU_IFUNC handling · ac98f9e2
    H.J. Lu authored
    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.
    ac98f9e2