[all-commits] [llvm/llvm-project] c7d6d6: [BOLT][RISCV] Implement TLS le/ie relocations (#67...

Job Noorman via All-commits all-commits at lists.llvm.org
Thu Oct 5 01:54:06 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c7d6d62252e356be096462fc8b416bd6f725afbd
      https://github.com/llvm/llvm-project/commit/c7d6d62252e356be096462fc8b416bd6f725afbd
  Author: Job Noorman <jnoorman at igalia.com>
  Date:   2023-10-05 (Thu, 05 Oct 2023)

  Changed paths:
    M bolt/lib/Core/Relocation.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp
    M bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp
    A bolt/test/RISCV/Inputs/tls-le-gnu-ld.yaml
    A bolt/test/RISCV/reloc-tls.s
    A bolt/test/RISCV/tls-le-gnu-ld.test

  Log Message:
  -----------
  [BOLT][RISCV] Implement TLS le/ie relocations (#67112)

Handle the following relocations related to TLS local-exec and
initial-exec:
- R_RISCV_TLS_GOT_HI20
- R_RISCV_TPREL_HI20
- R_RISCV_TPREL_ADD
- R_RISCV_TPREL_LO12_I
- R_RISCV_TPREL_LO12_S

In addition, GNU ld has a quirk where after TLS le relaxation, two
unofficial relocation types may be emitted:
- R_RISCV_TPREL_I
- R_RISCV_TPREL_S

Since they are unofficial (defined in the reserved range of relocation
types), LLVM does not define them. Hence, I've defined them locally in
BOLT in a private namespace.




More information about the All-commits mailing list