Mercurial > hg > CbC > CbC_llvm
comparison lld/test/ELF/x86-64-tls-dynamic.s @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 0572611fdcc8 |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // REQUIRES: x86 | |
2 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t | |
3 // RUN: ld.lld --hash-style=sysv -shared %t -o %tout | |
4 // RUN: llvm-readobj --sections -r %tout | FileCheck %s | |
5 // RUN: llvm-objdump -d %tout | FileCheck %s --check-prefix=DIS | |
6 | |
7 leaq a@tlsld(%rip), %rdi | |
8 callq __tls_get_addr@PLT | |
9 leaq b@tlsld(%rip), %rdi | |
10 callq __tls_get_addr@PLT | |
11 leaq a@dtpoff(%rax), %rcx | |
12 leaq b@dtpoff(%rax), %rcx | |
13 .long b@dtpoff, 0 | |
14 leaq c@tlsgd(%rip), %rdi | |
15 rex64 | |
16 callq __tls_get_addr@PLT | |
17 leaq a@dtpoff(%rax), %rcx | |
18 // Initial Exec Model Code Sequence, II | |
19 movq c@gottpoff(%rip),%rax | |
20 movq %fs:(%rax),%rax | |
21 movabs $a@dtpoff, %rax | |
22 movabs $b@dtpoff, %rax | |
23 movabs $a@dtpoff, %rax | |
24 | |
25 .global a | |
26 .hidden a | |
27 .section .tbss,"awT",@nobits | |
28 .align 4 | |
29 a: | |
30 .long 0 | |
31 | |
32 .section .tbss,"awT",@nobits | |
33 .align 4 | |
34 b: | |
35 .long 0 | |
36 .global c | |
37 .section .tbss,"awT",@nobits | |
38 .align 4 | |
39 c: | |
40 .long 0 | |
41 | |
42 // Get the address of the got, and check that it has 4 entries. | |
43 | |
44 // CHECK: Sections [ | |
45 // CHECK: Name: .got ( | |
46 // CHECK-NEXT: Type: SHT_PROGBITS | |
47 // CHECK-NEXT: Flags [ | |
48 // CHECK-NEXT: SHF_ALLOC | |
49 // CHECK-NEXT: SHF_WRITE | |
50 // CHECK-NEXT: ] | |
51 // CHECK-NEXT: Address: 0x24A0 | |
52 // CHECK-NEXT: Offset: | |
53 // CHECK-NEXT: Size: 40 | |
54 | |
55 // CHECK: Relocations [ | |
56 // CHECK: Section ({{.+}}) .rela.dyn { | |
57 // CHECK-NEXT: 0x24A0 R_X86_64_DTPMOD64 - 0x0 | |
58 // CHECK-NEXT: 0x24B0 R_X86_64_DTPMOD64 c 0x0 | |
59 // CHECK-NEXT: 0x24B8 R_X86_64_DTPOFF64 c 0x0 | |
60 // CHECK-NEXT: 0x24C0 R_X86_64_TPOFF64 c 0x0 | |
61 // CHECK-NEXT: } | |
62 | |
63 // 4457 = (0x24A0 + -4) - (0x1330 + 3) // PC relative offset to got entry. | |
64 // 4445 = (0x24B0 + -4) - (0x133c + 3) // PC relative offset to got entry. | |
65 // 4427 = (0x24B8 + -4) - (0x135e + 3) // PC relative offset to got entry. | |
66 // 4423 = (0x24C0 + -4) - (0x1372 + 3) // PC relative offset to got entry. | |
67 | |
68 // DIS: Disassembly of section .text: | |
69 // DIS-EMPTY: | |
70 // DIS-NEXT: .text: | |
71 // DIS-NEXT: 1330: {{.+}} leaq 4457(%rip), %rdi | |
72 // DIS-NEXT: {{.+}} callq | |
73 // DIS-NEXT: 133c: {{.+}} leaq 4445(%rip), %rdi | |
74 // DIS-NEXT: {{.+}} callq | |
75 // DIS-NEXT: {{.+}} leaq (%rax), %rcx | |
76 // DIS-NEXT: {{.+}} leaq 4(%rax), %rcx | |
77 // DIS-NEXT: 04 00 | |
78 // DIS-NEXT: 00 00 | |
79 // DIS-NEXT: 00 00 | |
80 // DIS-NEXT: 00 00 | |
81 // DIS-NEXT: 135e: {{.+}} leaq 4427(%rip), %rdi | |
82 // DIS-NEXT: {{.+}} callq | |
83 // DIS-NEXT: {{.+}} leaq (%rax), %rcx | |
84 // DIS-NEXT: 1372: {{.+}} movq 4423(%rip), %rax | |
85 // DIS-NEXT: {{.+}} movq %fs:(%rax), %rax | |
86 // DIS-NEXT: {{.+}} movabsq $0, %rax | |
87 // DIS-NEXT: {{.+}} movabsq $4, %rax | |
88 // DIS-NEXT: {{.+}} movabsq $0, %rax |