[PATCH v2 0/6] Add new relocations for LoongArch.

liuzhensong liuzhensong@loongson.cn
Thu Jul 21 01:37:46 GMT 2022


This is the v2 version of patches to support new relocations for LoongArch.

The new reloc types docnments are on:
https://github.com/loongson/LoongArch-Documentation/pull/57/files

The testsuite status:

                === binutils Summary === 

# of expected passes            241
# of unsupported tests          6

                === gas Summary ===

# of expected passes            270
# of unsupported tests          7

                === ld Summary ===

# of expected passes            1457
# of expected failures          11
# of untested testcases         1
# of unsupported tests          154


The patch set changelog:

v1 -> v2
1. Rename some relocations.
2. Fix bug caused by a pointer point to global ifunc.
3. Fix bug in relocation R_LARCH_SOP_PUSH_GPREL.
3. Change some comments.
4. Add testcases.


liuzhensong (6):
  bfd: Add supported for LoongArch new relocations.
  LoongArch:opcodes: Add new reloc types.
  LoongArch: gas: Add new reloc types.
  LoongArch: Move ifunc info to rela.dyn from rela.plt.
  bfd: Delete R_LARCH_NONE from dyn info of LoongArch.
  LoongArch: Add testcases for new relocate types.

 bfd/bfd-in2.h                                 |   37 +
 bfd/elfnn-loongarch.c                         | 1554 ++++++++++++-----
 bfd/elfxx-loongarch.c                         | 1371 +++++++++++----
 bfd/elfxx-loongarch.h                         |    4 +
 bfd/libbfd.h                                  |   37 +
 bfd/reloc.c                                   |   82 +
 binutils/readelf.c                            |    2 +
 gas/config/loongarch-lex.h                    |    3 +
 gas/config/loongarch-parse.y                  |   72 +-
 gas/config/tc-loongarch.c                     |  140 +-
 gas/config/tc-loongarch.h                     |    7 +-
 gas/testsuite/gas/all/gas.exp                 |    4 +-
 gas/testsuite/gas/loongarch/jmp_op.d          |   82 +-
 gas/testsuite/gas/loongarch/jmp_op.s          |   38 +-
 gas/testsuite/gas/loongarch/macro_op.d        |  778 +--------
 gas/testsuite/gas/loongarch/macro_op.s        |   44 +-
 gas/testsuite/gas/loongarch/macro_op_32.d     |   55 +
 gas/testsuite/gas/loongarch/macro_op_32.s     |   16 +
 .../gas/loongarch/macro_op_large_abs.d        |   77 +
 .../gas/loongarch/macro_op_large_abs.s        |    9 +
 .../gas/loongarch/macro_op_large_pc.d         |   77 +
 .../gas/loongarch/macro_op_large_pc.s         |    9 +
 gas/testsuite/gas/loongarch/reloc.d           |  167 ++
 gas/testsuite/gas/loongarch/reloc.s           |  144 ++
 include/elf/loongarch.h                       |  139 ++
 ld/testsuite/ld-elf/eh5.d                     |    2 +-
 ld/testsuite/ld-elf/pr26936.d                 |    2 +-
 ld/testsuite/ld-elf/shared.exp                |    6 +-
 ld/testsuite/ld-loongarch-elf/attr-ifunc-4.c  |   23 +
 .../ld-loongarch-elf/attr-ifunc-4.out         |    1 +
 ld/testsuite/ld-loongarch-elf/disas-jirl-32.d |   18 +-
 ld/testsuite/ld-loongarch-elf/disas-jirl.d    |   19 +-
 ld/testsuite/ld-loongarch-elf/ifunc.exp       |   34 +
 ld/testsuite/ld-loongarch-elf/jmp_op.d        |   84 +-
 ld/testsuite/ld-loongarch-elf/jmp_op.s        |   42 +-
 .../ld-loongarch-elf/libnopic-global.s        |  113 ++
 ld/testsuite/ld-loongarch-elf/macro_op.d      |  883 ++--------
 ld/testsuite/ld-loongarch-elf/macro_op.s      |   57 +-
 ld/testsuite/ld-loongarch-elf/macro_op_32.d   |  768 +-------
 ld/testsuite/ld-loongarch-elf/macro_op_32.s   |   43 +-
 .../ld-loongarch-elf/nopic-global-so.rd       |    5 +
 .../ld-loongarch-elf/nopic-global-so.sd       |   10 +
 .../ld-loongarch-elf/nopic-global.out         |    1 +
 ld/testsuite/ld-loongarch-elf/nopic-global.s  |  373 ++++
 ld/testsuite/ld-loongarch-elf/nopic-global.sd |    5 +
 ld/testsuite/ld-loongarch-elf/nopic-global.xd |    3 +
 ld/testsuite/ld-loongarch-elf/nopic-local.out |    1 +
 ld/testsuite/ld-loongarch-elf/nopic-local.rd  |    0
 ld/testsuite/ld-loongarch-elf/nopic-local.s   |  383 ++++
 ld/testsuite/ld-loongarch-elf/nopic-local.sd  |    5 +
 ld/testsuite/ld-loongarch-elf/nopic-local.xd  |    3 +
 .../ld-loongarch-elf/nopic-weak-global-so.rd  |    5 +
 .../ld-loongarch-elf/nopic-weak-global-so.sd  |   10 +
 .../ld-loongarch-elf/nopic-weak-global.out    |    1 +
 .../ld-loongarch-elf/nopic-weak-global.s      |  374 ++++
 .../ld-loongarch-elf/nopic-weak-global.sd     |    5 +
 .../ld-loongarch-elf/nopic-weak-global.xd     |    3 +
 .../ld-loongarch-elf/nopic-weak-local.out     |    1 +
 .../ld-loongarch-elf/nopic-weak-local.rd      |    0
 .../ld-loongarch-elf/nopic-weak-local.s       |  383 ++++
 .../ld-loongarch-elf/nopic-weak-local.sd      |    5 +
 .../ld-loongarch-elf/nopic-weak-local.xd      |    3 +
 ld/testsuite/ld-loongarch-elf/pic.exp         |  202 +++
 ld/testsuite/ld-loongarch-elf/pic.ld          |   18 +
 opcodes/loongarch-opc.c                       |  412 +++--
 65 files changed, 5773 insertions(+), 3481 deletions(-)
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_32.d
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_32.s
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_large_abs.d
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_large_abs.s
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_large_pc.d
 create mode 100644 gas/testsuite/gas/loongarch/macro_op_large_pc.s
 create mode 100644 gas/testsuite/gas/loongarch/reloc.d
 create mode 100644 gas/testsuite/gas/loongarch/reloc.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/attr-ifunc-4.c
 create mode 100644 ld/testsuite/ld-loongarch-elf/attr-ifunc-4.out
 create mode 100644 ld/testsuite/ld-loongarch-elf/ifunc.exp
 create mode 100644 ld/testsuite/ld-loongarch-elf/libnopic-global.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global-so.rd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global-so.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global.out
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-global.xd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-local.out
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-local.rd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-local.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-local.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-local.xd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global-so.rd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global-so.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global.out
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-global.xd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-local.out
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-local.rd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-local.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-local.sd
 create mode 100644 ld/testsuite/ld-loongarch-elf/nopic-weak-local.xd
 create mode 100644 ld/testsuite/ld-loongarch-elf/pic.exp
 create mode 100644 ld/testsuite/ld-loongarch-elf/pic.ld

-- 
2.31.1



More information about the Binutils mailing list