Convert PLT reloc only if pointer equality isn't needed
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 27 May 2015 21:32:24 +0000 (14:32 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 27 May 2015 21:32:24 +0000 (14:32 -0700)
commit8ded2ddc8bac501c1ee0706cb3d3ef3fb1c10b85
treee9aa707387d1a08ca901853b0b1887839590338e
parent924c2928ae3f7a9fa1130103e6a83ff2b1ff17dd
Convert PLT reloc only if pointer equality isn't needed

When pointer equality needed, we can't replace PLT relocations with
GOT relocations for -z now.  This patch checks if pointer equality is
needed before converting PLT relocations to GOT relocations.

bfd/

PR binutils/18458
* elf32-i386.c (elf_i386_check_relocs): Create .plt.got section
for now binding only if pointer equality isn't needed.
(elf_i386_allocate_dynrelocs): Use .plt.got section for now
binding only if pointer equality isn't needed.
* elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got
section for now binding only if pointer equality isn't needed.
(elf_x86_64_allocate_dynrelocs): Use .plt.got section for now
binding only if pointer equality isn't needed.

ld/testsuite/

PR binutils/18458
* ld-elf/shared.exp (build_tests): Build libpr18458a.so and
libpr18458b.so.
(run_tests): Run pr18458 test.
* ld-elf/pr18458a.c: New file.
* ld-elf/pr18458b.c: Likewise.
* ld-elf/pr18458c.c: Likewise.
bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/pr18458a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr18458b.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr18458c.c [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp