[PATCH v4 0/5] Add support for TLS Descriptors (TLSDESC)

Lulu Cai cailulu@loongson.cn
Fri Dec 15 10:11:22 GMT 2023


v4 mainly adjusted the relaxation conditions of GD/LD/DESC:
1. It is possible to relax for undefined symbols.
2. Modified the pcaddi calculation method to calculate the
   got address of the symbol instead of the actual address of the symbol.

Lulu Cai (4):
  LoongArch: Add new relocs and macro for TLSDESC.
  LoongArch: Add support for TLSDESC in ld.
  LoongArch: Add tls transition support. Transitions between DESC->IE/LE
    and IE->LE are supported now.
  LoongArch: Add testsuit for DESC and tls transition and tls
    relaxation.

mengqinggang (1):
  LoongArch: TLS LD/GD/DESC relaxation

 bfd/bfd-in2.h                                 |  15 +
 bfd/elfnn-loongarch.c                         | 555 ++++++++++++++++--
 bfd/elfxx-loongarch.c                         | 265 ++++++++-
 bfd/libbfd.h                                  |  15 +
 bfd/reloc.c                                   |  36 ++
 gas/config/tc-loongarch.c                     |  20 +-
 gas/testsuite/gas/loongarch/macro_op.d        | 128 ++--
 gas/testsuite/gas/loongarch/macro_op_32.d     | 120 ++--
 .../gas/loongarch/macro_op_large_abs.d        | 160 ++---
 .../gas/loongarch/macro_op_large_pc.d         | 160 ++---
 gas/testsuite/gas/loongarch/tlsdesc_32.d      |  28 +
 gas/testsuite/gas/loongarch/tlsdesc_32.s      |  12 +
 gas/testsuite/gas/loongarch/tlsdesc_64.d      |  28 +
 gas/testsuite/gas/loongarch/tlsdesc_64.s      |  12 +
 .../gas/loongarch/tlsdesc_large_abs.d         |  21 +
 .../gas/loongarch/tlsdesc_large_abs.s         |   9 +
 .../gas/loongarch/tlsdesc_large_pc.d          |  22 +
 .../gas/loongarch/tlsdesc_large_pc.s          |  13 +
 include/elf/loongarch.h                       |  26 +-
 include/opcode/loongarch.h                    |   6 +
 ld/testsuite/ld-loongarch-elf/desc-ie.d       |  16 +
 ld/testsuite/ld-loongarch-elf/desc-ie.s       |  18 +
 ld/testsuite/ld-loongarch-elf/desc-le.d       |  15 +
 ld/testsuite/ld-loongarch-elf/desc-le.s       |  14 +
 ld/testsuite/ld-loongarch-elf/desc-norelax.d  |  16 +
 ld/testsuite/ld-loongarch-elf/desc-norelax.s  |   5 +
 ld/testsuite/ld-loongarch-elf/desc-relax.d    |  15 +
 ld/testsuite/ld-loongarch-elf/desc-relax.s    |   5 +
 ld/testsuite/ld-loongarch-elf/ie-le.d         |  13 +
 ld/testsuite/ld-loongarch-elf/ie-le.s         |  11 +
 .../ld-loongarch-elf/ld-loongarch-elf.exp     |   9 +
 ld/testsuite/ld-loongarch-elf/macro_op.d      | 391 ++++++------
 ld/testsuite/ld-loongarch-elf/macro_op_32.d   | 120 ++--
 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d   |  56 ++
 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s   |  66 +++
 opcodes/loongarch-opc.c                       |  54 ++
 36 files changed, 1907 insertions(+), 568 deletions(-)
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-norelax.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-norelax.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-relax.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-relax.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s

-- 
2.36.0



More information about the Binutils mailing list