This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH 0/5] Add support for R_386_GOT32X/R_X86_64_[REX_]GOTPCRELX
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: binutils at sourceware dot org
- Date: Thu, 22 Oct 2015 04:41:34 -0700
- Subject: [PATCH 0/5] Add support for R_386_GOT32X/R_X86_64_[REX_]GOTPCRELX
- Authentication-results: sourceware.org; auth=none
This set of patches adds support for the R_386_GOT32X relocation
proposed in
https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I
as well as the R_X86_64_GOTPCRELX and
R_X86_64_REX_GOTPCRELX relocations proposed in
https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0
The updated Intel386 psABI is at
https://github.com/hjl-tools/x86-psABI/wiki/intel386-psABI-20151021.pdf
and the updated x86-64 psABI is at
https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-gotpcrelx.pdf
H.J. Lu (5):
Add R_386_GOT32X support to gas and ld
Add R_X86_64_[REX_]GOTPCRELX support to gas and ld
Add "-z call-nop=PADDING" option to ld
Gold: Don't fail on R_386_GOT32X relocation
Gold: Don't fail on R_X86_64_[REX_]GOTPCRELX relocations
bfd/bfd-in2.h | 3 +
bfd/elf32-i386.c | 363 ++++++++++++++++++++++---
bfd/elf64-x86-64.c | 202 ++++++++++++--
bfd/libbfd.h | 3 +
bfd/reloc.c | 6 +
elfcpp/i386.h | 1 +
elfcpp/x86_64.h | 4 +
gas/config/tc-i386.c | 85 +++++-
gas/config/tc-i386.h | 11 +-
gas/testsuite/gas/i386/got.d | 29 ++
gas/testsuite/gas/i386/got.s | 29 ++
gas/testsuite/gas/i386/i386.exp | 4 +
gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel.d | 27 ++
gas/testsuite/gas/i386/ilp32/x86-64-localpic.d | 6 +-
gas/testsuite/gas/i386/localpic.d | 2 +-
gas/testsuite/gas/i386/mixed-mode-reloc32.d | 6 +-
gas/testsuite/gas/i386/reloc32.d | 2 +-
gas/testsuite/gas/i386/x86-64-gotpcrel.d | 25 ++
gas/testsuite/gas/i386/x86-64-gotpcrel.s | 23 ++
gas/testsuite/gas/i386/x86-64-localpic.d | 6 +-
gold/i386.cc | 6 +
gold/x86_64.cc | 20 +-
include/bfdlink.h | 6 +
include/elf/i386.h | 2 +
include/elf/x86-64.h | 14 +-
ld/emulparams/call_nop.sh | 48 ++++
ld/emulparams/elf32_x86_64.sh | 1 +
ld/emulparams/elf_i386.sh | 1 +
ld/emulparams/elf_i386_be.sh | 1 +
ld/emulparams/elf_i386_chaos.sh | 1 +
ld/emulparams/elf_i386_ldso.sh | 1 +
ld/emulparams/elf_i386_vxworks.sh | 1 +
ld/emulparams/elf_iamcu.sh | 1 +
ld/emulparams/elf_k1om.sh | 1 +
ld/emulparams/elf_l1om.sh | 1 +
ld/emulparams/elf_x86_64.sh | 1 +
ld/emultempl/elf32.em | 1 +
ld/ld.texinfo | 14 +
ld/testsuite/ld-i386/branch1.d | 17 ++
ld/testsuite/ld-i386/branch1.s | 15 +
ld/testsuite/ld-i386/call1.d | 3 +
ld/testsuite/ld-i386/call1.s | 9 +
ld/testsuite/ld-i386/call2.d | 3 +
ld/testsuite/ld-i386/call2.s | 8 +
ld/testsuite/ld-i386/call3.s | 9 +
ld/testsuite/ld-i386/call3a.d | 13 +
ld/testsuite/ld-i386/call3b.d | 13 +
ld/testsuite/ld-i386/call3c.d | 14 +
ld/testsuite/ld-i386/call3d.d | 14 +
ld/testsuite/ld-i386/call3e.d | 13 +
ld/testsuite/ld-i386/call3f.d | 14 +
ld/testsuite/ld-i386/call3g.d | 14 +
ld/testsuite/ld-i386/call3h.d | 14 +
ld/testsuite/ld-i386/got1.dd | 20 ++
ld/testsuite/ld-i386/got1.out | 7 +
ld/testsuite/ld-i386/got1a.S | 21 ++
ld/testsuite/ld-i386/got1b.c | 7 +
ld/testsuite/ld-i386/got1c.c | 7 +
ld/testsuite/ld-i386/got1d.S | 54 ++++
ld/testsuite/ld-i386/i386.exp | 46 ++++
ld/testsuite/ld-i386/jmp1.d | 3 +
ld/testsuite/ld-i386/jmp1.s | 9 +
ld/testsuite/ld-i386/jmp2.d | 3 +
ld/testsuite/ld-i386/jmp2.s | 8 +
ld/testsuite/ld-i386/lea1c.d | 4 +-
ld/testsuite/ld-i386/load1-nacl.d | 59 ++++
ld/testsuite/ld-i386/load1.d | 58 ++++
ld/testsuite/ld-i386/load1.s | 55 ++++
ld/testsuite/ld-i386/load2.d | 3 +
ld/testsuite/ld-i386/load2.s | 8 +
ld/testsuite/ld-i386/load3.d | 3 +
ld/testsuite/ld-i386/load3.s | 9 +
ld/testsuite/ld-i386/load4.s | 9 +
ld/testsuite/ld-i386/load4a.d | 4 +
ld/testsuite/ld-i386/load4b.d | 13 +
ld/testsuite/ld-i386/load5.s | 8 +
ld/testsuite/ld-i386/load5a.d | 4 +
ld/testsuite/ld-i386/load5b.d | 13 +
ld/testsuite/ld-i386/load6.d | 28 ++
ld/testsuite/ld-i386/load6.s | 33 +++
ld/testsuite/ld-i386/plt-main1.rd | 2 +-
ld/testsuite/ld-i386/plt-main3.rd | 2 +-
ld/testsuite/ld-i386/plt-main4.rd | 2 +-
ld/testsuite/ld-ifunc/ifunc-5r-local-x86-64.d | 2 +-
ld/testsuite/ld-x86-64/call1.s | 9 +
ld/testsuite/ld-x86-64/call1a.d | 13 +
ld/testsuite/ld-x86-64/call1b.d | 13 +
ld/testsuite/ld-x86-64/call1c.d | 14 +
ld/testsuite/ld-x86-64/call1d.d | 14 +
ld/testsuite/ld-x86-64/call1e.d | 13 +
ld/testsuite/ld-x86-64/call1f.d | 14 +
ld/testsuite/ld-x86-64/call1g.d | 14 +
ld/testsuite/ld-x86-64/call1h.d | 14 +
ld/testsuite/ld-x86-64/call1i.d | 14 +
ld/testsuite/ld-x86-64/gotpcrel1.dd | 17 ++
ld/testsuite/ld-x86-64/gotpcrel1.out | 8 +
ld/testsuite/ld-x86-64/gotpcrel1a.S | 18 ++
ld/testsuite/ld-x86-64/gotpcrel1b.c | 7 +
ld/testsuite/ld-x86-64/gotpcrel1c.c | 7 +
ld/testsuite/ld-x86-64/gotpcrel1d.S | 26 ++
ld/testsuite/ld-x86-64/load1.s | 51 ++++
ld/testsuite/ld-x86-64/load1a-nacl.d | 55 ++++
ld/testsuite/ld-x86-64/load1a.d | 55 ++++
ld/testsuite/ld-x86-64/load1b-nacl.d | 55 ++++
ld/testsuite/ld-x86-64/load1b.d | 56 ++++
ld/testsuite/ld-x86-64/load1c-nacl.d | 48 ++++
ld/testsuite/ld-x86-64/load1c.d | 48 ++++
ld/testsuite/ld-x86-64/load1d-nacl.d | 48 ++++
ld/testsuite/ld-x86-64/load1d.d | 48 ++++
ld/testsuite/ld-x86-64/plt-main1.rd | 2 +-
ld/testsuite/ld-x86-64/plt-main3.rd | 2 +-
ld/testsuite/ld-x86-64/plt-main4.rd | 2 +-
ld/testsuite/ld-x86-64/x86-64.exp | 41 +++
113 files changed, 2241 insertions(+), 120 deletions(-)
create mode 100644 gas/testsuite/gas/i386/got.d
create mode 100644 gas/testsuite/gas/i386/got.s
create mode 100644 gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel.d
create mode 100644 gas/testsuite/gas/i386/x86-64-gotpcrel.d
create mode 100644 gas/testsuite/gas/i386/x86-64-gotpcrel.s
create mode 100644 ld/emulparams/call_nop.sh
create mode 100644 ld/testsuite/ld-i386/branch1.d
create mode 100644 ld/testsuite/ld-i386/branch1.s
create mode 100644 ld/testsuite/ld-i386/call1.d
create mode 100644 ld/testsuite/ld-i386/call1.s
create mode 100644 ld/testsuite/ld-i386/call2.d
create mode 100644 ld/testsuite/ld-i386/call2.s
create mode 100644 ld/testsuite/ld-i386/call3.s
create mode 100644 ld/testsuite/ld-i386/call3a.d
create mode 100644 ld/testsuite/ld-i386/call3b.d
create mode 100644 ld/testsuite/ld-i386/call3c.d
create mode 100644 ld/testsuite/ld-i386/call3d.d
create mode 100644 ld/testsuite/ld-i386/call3e.d
create mode 100644 ld/testsuite/ld-i386/call3f.d
create mode 100644 ld/testsuite/ld-i386/call3g.d
create mode 100644 ld/testsuite/ld-i386/call3h.d
create mode 100644 ld/testsuite/ld-i386/got1.dd
create mode 100644 ld/testsuite/ld-i386/got1.out
create mode 100644 ld/testsuite/ld-i386/got1a.S
create mode 100644 ld/testsuite/ld-i386/got1b.c
create mode 100644 ld/testsuite/ld-i386/got1c.c
create mode 100644 ld/testsuite/ld-i386/got1d.S
create mode 100644 ld/testsuite/ld-i386/jmp1.d
create mode 100644 ld/testsuite/ld-i386/jmp1.s
create mode 100644 ld/testsuite/ld-i386/jmp2.d
create mode 100644 ld/testsuite/ld-i386/jmp2.s
create mode 100644 ld/testsuite/ld-i386/load1-nacl.d
create mode 100644 ld/testsuite/ld-i386/load1.d
create mode 100644 ld/testsuite/ld-i386/load1.s
create mode 100644 ld/testsuite/ld-i386/load2.d
create mode 100644 ld/testsuite/ld-i386/load2.s
create mode 100644 ld/testsuite/ld-i386/load3.d
create mode 100644 ld/testsuite/ld-i386/load3.s
create mode 100644 ld/testsuite/ld-i386/load4.s
create mode 100644 ld/testsuite/ld-i386/load4a.d
create mode 100644 ld/testsuite/ld-i386/load4b.d
create mode 100644 ld/testsuite/ld-i386/load5.s
create mode 100644 ld/testsuite/ld-i386/load5a.d
create mode 100644 ld/testsuite/ld-i386/load5b.d
create mode 100644 ld/testsuite/ld-i386/load6.d
create mode 100644 ld/testsuite/ld-i386/load6.s
create mode 100644 ld/testsuite/ld-x86-64/call1.s
create mode 100644 ld/testsuite/ld-x86-64/call1a.d
create mode 100644 ld/testsuite/ld-x86-64/call1b.d
create mode 100644 ld/testsuite/ld-x86-64/call1c.d
create mode 100644 ld/testsuite/ld-x86-64/call1d.d
create mode 100644 ld/testsuite/ld-x86-64/call1e.d
create mode 100644 ld/testsuite/ld-x86-64/call1f.d
create mode 100644 ld/testsuite/ld-x86-64/call1g.d
create mode 100644 ld/testsuite/ld-x86-64/call1h.d
create mode 100644 ld/testsuite/ld-x86-64/call1i.d
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1.dd
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1.out
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1a.S
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1b.c
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1c.c
create mode 100644 ld/testsuite/ld-x86-64/gotpcrel1d.S
create mode 100644 ld/testsuite/ld-x86-64/load1.s
create mode 100644 ld/testsuite/ld-x86-64/load1a-nacl.d
create mode 100644 ld/testsuite/ld-x86-64/load1a.d
create mode 100644 ld/testsuite/ld-x86-64/load1b-nacl.d
create mode 100644 ld/testsuite/ld-x86-64/load1b.d
create mode 100644 ld/testsuite/ld-x86-64/load1c-nacl.d
create mode 100644 ld/testsuite/ld-x86-64/load1c.d
create mode 100644 ld/testsuite/ld-x86-64/load1d-nacl.d
create mode 100644 ld/testsuite/ld-x86-64/load1d.d
--
2.4.3