| # 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 |