[PATCH v2 0/4] OpenRISC large binary fixes

Giulio Benetti giulio.benetti@benettiengineering.com
Sat May 1 23:39:22 GMT 2021


Hi Stafford,

I've just back-ported to binutils 2.36.1 and tested in conjunction with 
your gcc patches for -mcmodel=large and it works perfectly while 
building libgeos. I've also checked with and without -mcmodel=large and
it works correctly since without it it fails and with it it links correctly.

I'm going to back port it to:
2.32
2.34
2.35.2
too.

Thanks a lot and
best regards
-- 
Giulio Benetti
Benetti Engineering sas

On 5/1/21 11:02 PM, Stafford Horne wrote:
> 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
> 



More information about the Binutils mailing list