Create a PLT entry for R_X86_64_PC32 in non-code sections
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 1 Oct 2015 17:49:33 +0000 (10:49 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 1 Oct 2015 17:49:33 +0000 (10:49 -0700)
commit5db4f0d383e3de40e594cf05dd8f6d743233a487
treef5231fc84b681e870f9d1c84cb9273b5b1b79353
parentdd0a637a3d8f5ca7229131c085ef6b8e255d01f6
Create a PLT entry for R_X86_64_PC32 in non-code sections

Since something like ".long foo - ." may be used as pointer, we make
sure that PLT is used if foo is a function defined in a shared library.

bfd/

PR ld/19031
* elf64-x86-64.c (elf_x86_64_check_relocs): Set
pointer_equality_needed for R_X86_64_PC32 reloc in non-code
sections.

ld/testsuite/

PR ld/19031
* ld-x86-64/x86-64.exp: Run PR ld/19031 test.
* ld-x86-64/pr19031.out: New file.
* ld-x86-64/pr19031a.c: Likewise.
* ld-x86-64/pr19031b.S: Likewise.
* ld-x86-64/pr19031c.c: Likewise.
bfd/ChangeLog
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-x86-64/pr19031.out [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr19031a.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr19031b.S [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr19031c.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp