|
1 | | -; RUN: llc -filetype=obj -mtriple=aarch64--linux-gnu -o - %s | llvm-dwarfdump -v - | FileCheck %s |
2 | | -; |
3 | | -; CHECK: .debug_info contents: |
4 | | -; CHECK: DW_TAG_variable |
5 | | -; CHECK-NOT: DW_AT_location |
| 1 | +; RUN: llc -O0 -mtriple=aarch64 --aarch64-emit-debug-tls-location -filetype=obj < %s \ |
| 2 | +; RUN: | llvm-dwarfdump - | FileCheck %s --check-prefix=TLS |
| 3 | + |
| 4 | +; RUN: llc -O0 -mtriple=aarch64 --aarch64-emit-debug-tls-location=false -filetype=obj < %s \ |
| 5 | +; RUN: | llvm-dwarfdump - | FileCheck %s --check-prefix=NO-TLS |
| 6 | + |
| 7 | +; RUN: llc -O0 -mtriple=aarch64 -filetype=obj < %s \ |
| 8 | +; RUN: | llvm-dwarfdump - | FileCheck %s --check-prefix=NO-TLS |
| 9 | + |
| 10 | +; RUN: llc -O0 -mtriple=aarch64 --aarch64-emit-debug-tls-location -filetype=obj < %s -o %t |
| 11 | +; RUN: llvm-objdump -r %t | FileCheck %s --check-prefix=OBJDUMP |
| 12 | +; RUN: llvm-readelf -r %t | FileCheck %s --check-prefix=RELOC |
| 13 | + |
| 14 | +; TLS: .debug_info contents: |
| 15 | +; TLS: DW_TAG_variable |
| 16 | +; TLS-NEXT: DW_AT_name ("var") |
| 17 | +; TLS-NEXT: DW_AT_type (0x{{.*}} "int") |
| 18 | +; TLS-NEXT: DW_AT_external (true) |
| 19 | +; TLS-NEXT: DW_AT_decl_file ("{{.*}}tls-at-location.c") |
| 20 | +; TLS-NEXT: DW_AT_decl_line (1) |
| 21 | +; TLS-NEXT: DW_AT_location (DW_OP_const8u 0x0, DW_OP_GNU_push_tls_address) |
| 22 | + |
| 23 | +; NO-TLS: .debug_info contents: |
| 24 | +; NO-TLS: DW_TAG_variable |
| 25 | +; NO-TLS-NEXT: DW_AT_name ("var") |
| 26 | +; NO-TLS-NOT: DW_AT_location |
| 27 | + |
| 28 | +; OBJDUMP: R_AARCH64_TLS_DTPREL64 var |
| 29 | + |
| 30 | +; RELOC: R_AARCH64_TLS_DTPREL64 {{0+}} var + 0 |
6 | 31 |
|
7 | 32 | @var = thread_local global i32 0, align 4, !dbg !0 |
8 | 33 |
|
|
0 commit comments