This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/5] Add support for R_386_GOT32X/R_X86_64_[REX_]GOTPCRELX


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]