llvm-project/lld/test/ELF/riscv-tls-le.s

49 lines
1.6 KiB
ArmAsm

# REQUIRES: riscv
# RUN: llvm-mc -filetype=obj -triple=riscv32 %s -o %t.32.o
# RUN: ld.lld %t.32.o -o %t.32
# RUN: llvm-nm -p %t.32 | FileCheck --check-prefixes=NM %s
# RUN: llvm-objdump -d --no-show-raw-insn %t.32 | FileCheck --check-prefixes=LE %s
# RUN: ld.lld -pie %t.32.o -o %t.32
# RUN: llvm-objdump -d --no-show-raw-insn %t.32 | FileCheck --check-prefixes=LE %s
# RUN: llvm-mc -filetype=obj -triple=riscv64 %s -o %t.64.o
# RUN: ld.lld %t.64.o -o %t.64
# RUN: llvm-objdump -d --no-show-raw-insn %t.64 | FileCheck --check-prefixes=LE %s
# RUN: ld.lld -pie %t.64.o -o %t.64
# RUN: llvm-objdump -d --no-show-raw-insn %t.64 | FileCheck --check-prefixes=LE %s
# RUN: not ld.lld -shared %t.32.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR --implicit-check-not=error:
# ERR: error: relocation R_RISCV_TPREL_HI20 against .LANCHOR0 cannot be used with -shared
# ERR: error: relocation R_RISCV_TPREL_LO12_I against .LANCHOR0 cannot be used with -shared
# ERR: error: relocation R_RISCV_TPREL_HI20 against a cannot be used with -shared
# ERR: error: relocation R_RISCV_TPREL_LO12_S against a cannot be used with -shared
# NM: {{0*}}00000008 b .LANCHOR0
# NM: {{0*}}0000000c B a
## .LANCHOR0@tprel = 8
## a@tprel = 12
# LE: lui a5, 0
# LE-NEXT: add a5, a5, tp
# LE-NEXT: addi a5, a5, 8
# LE-NEXT: lui a5, 0
# LE-NEXT: add a5, a5, tp
# LE-NEXT: sw a0, 12(a5)
lui a5, %tprel_hi(.LANCHOR0)
add a5, a5, tp, %tprel_add(.LANCHOR0)
addi a5, a5, %tprel_lo(.LANCHOR0)
lui a5, %tprel_hi(a)
add a5, a5, tp, %tprel_add(a)
sw a0, %tprel_lo(a)(a5)
.section .tbss
.space 8
.LANCHOR0:
.zero 4
.globl a
a: