[PATCH v4 0/9] RISC-V: Implement TLS Descriptors.

Tatsuyuki Ishi ishitatsuyuki@gmail.com
Tue Feb 20 17:55:47 GMT 2024


This patchset implements TLS Descriptors (TLSDESC) for RISC-V targets, per
the specification (merged) at [1].

Tested on rv32gc & rv64gc for:
- No regression (& passing new tests) in binutils
- No regression in gcc
- No regression in glibc for subdirs=elf
With both -mtls-dialect=desc and trad.

This contribution is made on behalf of Blue Whale Systems, which has
copyright assignment on file with the FSF.

[1]: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/373

v2: Add changelogs and tests. Minor fixes described in patch messages.
v3: Add relaxation support. This fixes tst-tls1-static in glibc.
v4: Fix issues pointed out in review (thanks Nelson).

Tatsuyuki Ishi (9):
  RISC-V: Fix local GOT and reloc size calculation for TLS.
  RISC-V: Add TLSDESC reloc definitions.
  RISC-V: Add assembly support for TLSDESC.
  RISC-V: Define and use GOT entry size constants for TLS.
  RISC-V: Initial ld.bfd support for TLSDESC.
  RISC-V: Move STATIC_TLS handling into record_tls_type.
  RISC-V: Unify TLS handling in check_relocs.
  RISC-V: Add elf_link_hash_entry to relax_func args.
  RISC-V: Introduce TLSDESC relaxation.

 bfd/bfd-in2.h                              |   4 +
 bfd/elfnn-riscv.c                          | 352 ++++++++++++++++++---
 bfd/elfxx-riscv.c                          | 130 +++++++-
 bfd/libbfd.h                               |   4 +
 bfd/reloc.c                                |   8 +
 gas/config/tc-riscv.c                      |  18 +-
 gas/testsuite/gas/riscv/tlsdesc.d          |  36 +++
 gas/testsuite/gas/riscv/tlsdesc.s          |  24 ++
 include/elf/riscv.h                        |  21 +-
 include/opcode/riscv.h                     |   1 +
 ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp |   8 +
 ld/testsuite/ld-riscv-elf/tls.d            |  17 +
 ld/testsuite/ld-riscv-elf/tls.s            |  42 +++
 ld/testsuite/ld-riscv-elf/tlsbin.d         |   7 +
 ld/testsuite/ld-riscv-elf/tlslib.s         |   6 +
 opcodes/riscv-opc.c                        |   1 +
 16 files changed, 623 insertions(+), 56 deletions(-)
 create mode 100644 gas/testsuite/gas/riscv/tlsdesc.d
 create mode 100644 gas/testsuite/gas/riscv/tlsdesc.s
 create mode 100644 ld/testsuite/ld-riscv-elf/tls.d
 create mode 100644 ld/testsuite/ld-riscv-elf/tls.s
 create mode 100644 ld/testsuite/ld-riscv-elf/tlsbin.d
 create mode 100644 ld/testsuite/ld-riscv-elf/tlslib.s

-- 
2.43.2



More information about the Binutils mailing list