X86-64: Allow copy relocs for building PIE
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 2 Dec 2014 23:14:28 +0000 (15:14 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 3 Dec 2014 13:43:05 +0000 (05:43 -0800)
commit631d040f80d99b7b993abd77c9d064fa8bccd711
treeddcfdd20fc8fdee224d2d39cb801cabd9c783c2c
parent005cb1192ac986f689938e91c4702dbd49635982
X86-64: Allow copy relocs for building PIE

This patch allows copy relocs for non-GOT pc-relative relocation in PIE.

bfd/

* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Always
allow copy relocs for building executables.
(elf_x86_64_adjust_dynamic_symbol): Allocate copy relocs for
PIE.
(elf_x86_64_allocate_dynrelocs): For PIE, discard space for
relocs against symbols which turn out to need copy relocs.
(elf_x86_64_relocate_section): Don't copy a pc-relative
relocation into the output file if the symbol needs copy reloc.

ld/testsuite/

* ld-x86-64/copyreloc-lib.c: New file.
* ld-x86-64/copyreloc-main.c: Likewise.
* ld-x86-64/copyreloc-main.out: Likewise.
* ld-x86-64/copyreloc-main1.rd: Likewise.
* ld-x86-64/copyreloc-main2.rd: Likewise.

* ld-x86-64/x86-64.exp: Run copyreloc tests.
bfd/ChangeLog
bfd/elf64-x86-64.c
ld/testsuite/ChangeLog
ld/testsuite/ld-x86-64/copyreloc-lib.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/copyreloc-main.c [new file with mode: 0644]
ld/testsuite/ld-x86-64/copyreloc-main.out [new file with mode: 0644]
ld/testsuite/ld-x86-64/copyreloc-main1.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/copyreloc-main2.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp