]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/i386-tls-ie-shared.s
Vendor import of lld trunk r302418:
[FreeBSD/FreeBSD.git] / test / ELF / i386-tls-ie-shared.s
1 // RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %s -o %t.o
2 // RUN: llvm-mc -filetype=obj -triple=i686-pc-linux %p/Inputs/tls-opt-iele-i686-nopic.s -o %tso.o
3 // RUN: ld.lld -shared %tso.o -o %tso
4 // RUN: ld.lld -shared %t.o %tso -o %t1
5 // RUN: llvm-readobj -s -r -d %t1 | FileCheck --check-prefix=GOTRELSHARED %s
6 // RUN: llvm-objdump -d %t1 | FileCheck --check-prefix=DISASMSHARED %s
7
8 // GOTRELSHARED:     Section {
9 // GOTRELSHARED:      Index: 8
10 // GOTRELSHARED:      Name: .got
11 // GOTRELSHARED-NEXT:   Type: SHT_PROGBITS
12 // GOTRELSHARED-NEXT:   Flags [
13 // GOTRELSHARED-NEXT:     SHF_ALLOC
14 // GOTRELSHARED-NEXT:     SHF_WRITE
15 // GOTRELSHARED-NEXT:   ]
16 // GOTRELSHARED-NEXT:   Address: 0x1060
17 // GOTRELSHARED-NEXT:   Offset: 0x1060
18 // GOTRELSHARED-NEXT:   Size: 16
19 // GOTRELSHARED-NEXT:   Link: 0
20 // GOTRELSHARED-NEXT:   Info: 0
21 // GOTRELSHARED-NEXT:   AddressAlignment: 4
22 // GOTRELSHARED-NEXT:   EntrySize: 0
23 // GOTRELSHARED-NEXT: }
24 // GOTRELSHARED:      Relocations [
25 // GOTRELSHARED-NEXT:   Section ({{.*}}) .rel.dyn {
26 // GOTRELSHARED-NEXT:     0x2002 R_386_RELATIVE - 0x0
27 // GOTRELSHARED-NEXT:     0x200A R_386_RELATIVE - 0x0
28 // GOTRELSHARED-NEXT:     0x2013 R_386_RELATIVE - 0x0
29 // GOTRELSHARED-NEXT:     0x201C R_386_RELATIVE - 0x0
30 // GOTRELSHARED-NEXT:     0x2024 R_386_RELATIVE - 0x0
31 // GOTRELSHARED-NEXT:     0x202D R_386_RELATIVE - 0x0
32 // GOTRELSHARED-NEXT:     0x2036 R_386_RELATIVE - 0x0
33 // GOTRELSHARED-NEXT:     0x203F R_386_RELATIVE - 0x0
34 // GOTRELSHARED-NEXT:     0x1060 R_386_TLS_TPOFF tlslocal0 0x0
35 // GOTRELSHARED-NEXT:     0x1064 R_386_TLS_TPOFF tlslocal1 0x0
36 // GOTRELSHARED-NEXT:     0x1068 R_386_TLS_TPOFF tlsshared0 0x0
37 // GOTRELSHARED-NEXT:     0x106C R_386_TLS_TPOFF tlsshared1 0x0
38 // GOTRELSHARED-NEXT:   }
39 // GOTRELSHARED-NEXT: ]
40 // GOTRELSHARED:      0x6FFFFFFA RELCOUNT             8
41
42 // DISASMSHARED:       Disassembly of section test:
43 // DISASMSHARED-NEXT:  _start:
44 // (.got)[0] = 0x1060 = 4192
45 // (.got)[1] = 0x1064 = 4196
46 // (.got)[2] = 0x1068 = 4200
47 // (.got)[3] = 0x106C = 4204
48 // DISASMSHARED-NEXT:  2000: {{.*}}  movl  4192, %ecx
49 // DISASMSHARED-NEXT:  2006: {{.*}}  movl  %gs:(%ecx), %eax
50 // DISASMSHARED-NEXT:  2009: {{.*}}  movl  4192, %eax
51 // DISASMSHARED-NEXT:  200e: {{.*}}  movl  %gs:(%eax), %eax
52 // DISASMSHARED-NEXT:  2011: {{.*}}  addl  4192, %ecx
53 // DISASMSHARED-NEXT:  2017: {{.*}}  movl  %gs:(%ecx), %eax
54 // DISASMSHARED-NEXT:  201a: {{.*}}  movl  4196, %ecx
55 // DISASMSHARED-NEXT:  2020: {{.*}}  movl  %gs:(%ecx), %eax
56 // DISASMSHARED-NEXT:  2023: {{.*}}  movl  4196, %eax
57 // DISASMSHARED-NEXT:  2028: {{.*}}  movl  %gs:(%eax), %eax
58 // DISASMSHARED-NEXT:  202b: {{.*}}  addl  4196, %ecx
59 // DISASMSHARED-NEXT:  2031: {{.*}}  movl  %gs:(%ecx), %eax
60 // DISASMSHARED-NEXT:  2034: {{.*}}  movl  4200, %ecx
61 // DISASMSHARED-NEXT:  203a: {{.*}}  movl  %gs:(%ecx), %eax
62 // DISASMSHARED-NEXT:  203d: {{.*}}  addl  4204, %ecx
63 // DISASMSHARED-NEXT:  2043: {{.*}}  movl  %gs:(%ecx), %eax
64
65 .type tlslocal0,@object
66 .section .tbss,"awT",@nobits
67 .globl tlslocal0
68 .align 4
69 tlslocal0:
70  .long 0
71  .size tlslocal0, 4
72
73 .type tlslocal1,@object
74 .section .tbss,"awT",@nobits
75 .globl tlslocal1
76 .align 4
77 tlslocal1:
78  .long 0
79  .size tlslocal1, 4
80
81 .section .text
82 .globl ___tls_get_addr
83 .type ___tls_get_addr,@function
84 ___tls_get_addr:
85
86 .section test, "axw"
87 .globl _start
88 _start:
89 movl tlslocal0@indntpoff,%ecx
90 movl %gs:(%ecx),%eax
91
92 movl tlslocal0@indntpoff,%eax
93 movl %gs:(%eax),%eax
94
95 addl tlslocal0@indntpoff,%ecx
96 movl %gs:(%ecx),%eax
97
98 movl tlslocal1@indntpoff,%ecx
99 movl %gs:(%ecx),%eax
100
101 movl tlslocal1@indntpoff,%eax
102 movl %gs:(%eax),%eax
103
104 addl tlslocal1@indntpoff,%ecx
105 movl %gs:(%ecx),%eax
106
107 movl tlsshared0@indntpoff,%ecx
108 movl %gs:(%ecx),%eax
109
110 addl tlsshared1@indntpoff,%ecx
111 movl %gs:(%ecx),%eax