diff options
Diffstat (limited to 'test/ELF/pack-dyn-relocs-tls-x86-64.s')
-rw-r--r-- | test/ELF/pack-dyn-relocs-tls-x86-64.s | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/ELF/pack-dyn-relocs-tls-x86-64.s b/test/ELF/pack-dyn-relocs-tls-x86-64.s new file mode 100644 index 0000000000000..491efa6cc1d46 --- /dev/null +++ b/test/ELF/pack-dyn-relocs-tls-x86-64.s @@ -0,0 +1,23 @@ +// REQUIRES: x86 + +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o +// RUN: ld.lld -shared --pack-dyn-relocs=android %t.o -o %t.so +// RUN: llvm-readobj -relocations %t.so | FileCheck %s + +// Bug 37841: Symbol::getVA must work on TLS symbols during the layout loop in +// finalizeSections. This test uses an atypical IE access in a shared object to +// access a local TLS symbol, because a more typical access would avoid the +// bug. + + .globl foo +foo: + movq tlsvar@GOTTPOFF(%rip), %rcx + + .section .tdata,"awT",@progbits + .space 0x1234 +tlsvar: + .word 42 + +// CHECK: Section ({{.+}}) .rela.dyn { +// CHECK-NEXT: R_X86_64_TPOFF64 - 0x1234 +// CHECK-NEXT: } |