# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-cloudabi %s -o %t1.o
# RUN: ld.lld -pie %t1.o -o %t
# RUN: llvm-readobj -r %t | FileCheck --check-prefix=RELOCS %s
# RUN: llvm-objdump -d --no-show-raw-insn --no-print-imm-hex --no-leading-addr %t1.o | FileCheck --check-prefix=DIS %s
# Bug 27174: R_X86_64_TPOFF32 and R_X86_64_GOTTPOFF relocations should
# be eliminated when building a PIE executable, as the static TLS layout
# is fixed.
#
# RELOCS: Relocations [
# RELOCS-NEXT: ]
#
# DIS: <_start>:
# DIS-NEXT: movq %fs:0, %rax
# DIS-NEXT: movl $3, (%rax)
# DIS-NEXT: movq %fs:0, %rdx
# DIS-NEXT: movq (%rip), %rcx
# DIS-NEXT: movl $3, (%rdx,%rcx)
# DIS-NEXT: movabsq 0, %rax
.globl _start
_start:
movq %fs:0, %rax
movl $3, i@TPOFF(%rax)
movq %fs:0, %rdx
movq i@GOTTPOFF(%rip), %rcx
movl $3, (%rdx,%rcx)
# This additionally tests support for R_X86_64_TPOFF64 relocations.
movabs i@TPOFF, %rax
.section .tbss.i,"awT",@nobits
.globl i
i:
.long 0
.size i, 4