[PATCH v2 0/4] OpenRISC large binary fixes

Stafford Horne shorne@gmail.com
Sat May 1 21:02:13 GMT 2021


Changes since v1:
 - Replaced patches 3/4 with a different approach.  Instead of relying on seeing
   R_OR1K_GOT_AHI16 relocations to enable large plts, I just track the PLT entry
   count and switch to large PLT when we detect the overflow will occur.
 - Patch "Avoid R_OR1K_GOT16 overflow failures in presence of R_OR1K_GOT_AHI16"
   is the actual bug fix for 21464, which was missed in the original series.  We
   inhibit truncation detection when the low got() relocation is paired with the
   new high gotha() relocation.

These are several fixes to OpenRISC BFD to handle issues mostly related to
linking large files.

There will be a GCC patch then depends on this, a new -mcmodel=large argument is
added to GCC to allow creating GOT relocation values larger than 64k.

The series fixes 3 issues:

 * PR 27624 - Assertion failure when dynamic symol is localized
 * PR 21464 - GOT relocation truncation.
 * PR 27746 - Issue with silent overlows in PLT code.

Stafford Horne (4):
  or1k: Fix issue with plt link failure for local calls
  or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha()
  or1k: Avoid R_OR1K_GOT16 overflow failures in presence of
    R_OR1K_GOT_AHI16
  or1k: Support large plt_relocs when generating plt entries

 bfd/bfd-in2.h                    |   1 +
 bfd/elf32-or1k.c                 | 190 +++++++++++++++++++++++--------
 bfd/libbfd.h                     |   1 +
 bfd/reloc.c                      |   2 +
 cpu/or1k.opc                     |   7 +-
 gas/testsuite/gas/or1k/reloc-1.d |   4 +-
 gas/testsuite/gas/or1k/reloc-1.s |   4 +
 include/elf/or1k.h               |   1 +
 ld/testsuite/ld-or1k/gotha1.dd   |  34 ++++++
 ld/testsuite/ld-or1k/gotha1.s    |  24 ++++
 ld/testsuite/ld-or1k/gotha2.dd   |  21 ++++
 ld/testsuite/ld-or1k/gotha2.s    |  22 ++++
 ld/testsuite/ld-or1k/or1k.exp    |   8 ++
 ld/testsuite/ld-or1k/pltlib.s    |   1 +
 opcodes/or1k-asm.c               |   7 +-
 15 files changed, 279 insertions(+), 48 deletions(-)
 create mode 100644 ld/testsuite/ld-or1k/gotha1.dd
 create mode 100644 ld/testsuite/ld-or1k/gotha1.s
 create mode 100644 ld/testsuite/ld-or1k/gotha2.dd
 create mode 100644 ld/testsuite/ld-or1k/gotha2.s

-- 
2.26.2



More information about the Binutils mailing list