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>
Tue, 2 Dec 2014 23:19:25 +0000 (15:19 -0800)
commit9a926d55ab4b6667f6c35b518d59b902fe490d9d
tree65a4ca69cf169316c6fcfe5f02abe413ac5e75f0
parent5da3ffc99d0ec7d0770b4fcf8830ffe05d39b1b8
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_check_relocs): Allow copy relocs for non-GOT
pc-relative relocation in shared object.
(elf_x86_64_adjust_dynamic_symbol): Allocate copy relocs for
PIE.
(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