]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit - bfd/elf64-s390.c
Fix Sparc, s390 and AArch64 targets so that they can handle relocs against ifunc...
authorNick Clifton <nickc@redhat.com>
Fri, 9 Mar 2018 14:37:36 +0000 (14:37 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 9 Mar 2018 14:37:36 +0000 (14:37 +0000)
commitf657f8c4a1dc0ac69b16b1dc6eacbf5286f1f0a0
treecd660cfaf14687bc4785722975206591959142d8
parent9bd8e0b072ad5fc5b8956fd5d3e51dc5a9b0f236
Fix Sparc, s390 and AArch64 targets so that they can handle relocs against ifunc symbols found in note sections.

  Following on from PR 22929, I have found the same problem exists with
  other ifunc supporting targets too.  Plus see this link for the bug
  being reported against the s390x binutils for Fedora rawhide:

     https://bugzilla.redhat.com/show_bug.cgi?id=1553705

  So I am going to check in the patch below which applies the same
  change that H.J. made for the x86_64 target to the other affected
  targets.  (Specifically: S390, AArch64 and Sparc).  Plus it adds a new
  test to the linker testsuite to make sure that this problem stays
  fixed.

bfd * elf64-s390.c (elf_s390_relocate_section): Move check for
relocations against non-allocated sections to before the code that
handles ifunc relocations.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Treat
relocs against IFUNC symbols in non-allocated sections as relocs
against FUNC symbols.
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise.

ld * testsuite/ld-ifunc/ifuncmod5.s: New test.  Checks that targets
that support IFUNC symbols can handle relocations against those
symbols in NOTE sections.
* testsuite/ld-ifunc/ifuncmod5.d: New file:  Driver for the new
test.
* testsuite/ld-ifunc/ifunc.exp: Run the new test.
bfd/ChangeLog
bfd/elf32-s390.c
bfd/elf64-s390.c
bfd/elfnn-aarch64.c
bfd/elfxx-sparc.c
ld/ChangeLog
ld/testsuite/ld-ifunc/ifunc.exp
ld/testsuite/ld-ifunc/ifuncmod5.d [new file with mode: 0644]
ld/testsuite/ld-ifunc/ifuncmod5.s [new file with mode: 0644]