| # REQUIRES: x86 |
| |
| # This tests verifies that TLS variables have correct offsets |
| RUN: lld -flavor old-gnu -target x86_64-linux %p/Inputs/tls.x86-64 -static \ |
| RUN: --output-filetype=yaml --noinhibit-exec | FileCheck %s -check-prefix=YAML |
| |
| RUN: lld -flavor old-gnu -target x86_64-linux %p/Inputs/tls.x86-64 -o %t \ |
| RUN: --noinhibit-exec -e main -static && llvm-objdump -d %t | FileCheck %s |
| |
| // Verify that the TLS accesses have the correct offsets. |
| |
| YAML: name: main |
| YAML: references: |
| YAML: kind: R_X86_64_TPOFF32 |
| YAML: offset: 9 |
| YAML: target: tls1 |
| YAML: kind: R_X86_64_TPOFF32 |
| YAML: offset: 17 |
| YAML: target: tls0 |
| YAML: kind: R_X86_64_TPOFF32 |
| YAML: offset: 25 |
| YAML: target: tls2 |
| |
| YAML: name: GOTTPOFF |
| YAML: kind: R_X86_64_GOTTPOFF |
| YAML: target: [[GOTNAME:[a-zA-Z0-9_]+]] |
| |
| YAML: type: got |
| YAML: references: |
| YAML: kind: R_X86_64_TPOFF64 |
| YAML: target: tls2 |
| |
| // main |
| CHECK: addl %fs:-4 |
| CHECK: addl %fs:-8 |
| CHECK: addl %fs:-12 |
| |
| // GOTTPOFF |
| CHECK: movq {{[0-9]+}}(%rip) |
| |
| // TLSLD |
| CHECK: movq %fs:0, %rax |
| CHECK: leaq -8(%rax), %rax |