ld: Always call elf_backend_output_arch_local_syms
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 16 Nov 2022 23:06:37 +0000 (15:06 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 17 Nov 2022 16:13:37 +0000 (08:13 -0800)
commit25d17459e337a4cc9856f36c55a88b072c8709c9
tree39df322bb8810b66dd76b81eac13426c3039fcd2
parentcbda14deaf49b48450207cfb0990c71c11d07a64
ld: Always call elf_backend_output_arch_local_syms

Always call elf_backend_output_arch_local_syms since only the backend
knows if elf_backend_output_arch_local_syms is needed when all symbols
are striped.  elf_backend_output_arch_local_syms is defined only for
x86, ARM and AARCH64.  On x86, elf_backend_output_arch_local_syms must
be called to handle local IFUNC symbols even if all symbols are striped.
Update ARM and AARCH64 to skip elf_backend_output_arch_local_syms when
symbols aren't needed.

bfd/

PR ld/29797
* elf32-arm.c (elf32_arm_output_arch_local_syms): Skip if symbols
aren't needed.
* elfnn-aarch64.c (elfNN_aarch64_output_arch_local_syms):
Likewise.
* elflink.c (bfd_elf_final_link): Always call
elf_backend_output_arch_local_syms if available.

ld/

PR ld/29797
* testsuite/ld-elf/linux-x86.exp: Run PR ld/29797 test.
* testsuite/ld-elf/pr29797.c: New file.
bfd/elf32-arm.c
bfd/elflink.c
bfd/elfnn-aarch64.c
ld/testsuite/ld-elf/linux-x86.exp
ld/testsuite/ld-elf/pr29797.c [new file with mode: 0644]