1 /* Force .data aligned to 4K, so .got very likely gets at 0x102190
2 (0x60 bytes .tdata and 0x130 bytes .dynamic) */
5 .section ".tdata", "awT", @progbits
6 .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
7 .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
8 .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
33 /* Force .text aligned to 4K, so it very likely gets at 0x1000. */
45 leaq sg1@tlsgd
(%rip
), %rdi
48 call __tls_get_addr@plt
51 /* GD -> IE because variable is referenced through IE too */
53 leaq sg2@tlsgd
(%rip
), %rdi
56 call __tls_get_addr@plt
59 /* GD against local variable */
61 leaq sl1@tlsgd
(%rip
), %rdi
64 call __tls_get_addr@plt
67 /* GD -> IE against local variable referenced through IE too */
69 leaq sl2@tlsgd
(%rip
), %rdi
72 call __tls_get_addr@plt
75 /* GD against hidden and local variable */
77 leaq sh1@tlsgd
(%rip
), %rdi
80 call __tls_get_addr@plt
83 /* GD -> IE against hidden and local variable referenced through
86 leaq sh2@tlsgd
(%rip
), %rdi
89 call __tls_get_addr@plt
92 /* GD against hidden but not local variable */
94 leaq sH1@tlsgd
(%rip
), %rdi
97 call __tls_get_addr@plt
100 /* GD -> IE against hidden but not local variable referenced through
103 leaq sH2@tlsgd
(%rip
), %rdi
106 call __tls_get_addr@plt
110 leaq sl1@tlsld
(%rip
), %rdi
111 call __tls_get_addr@plt
113 leaq sl1@dtpoff
(%rax
), %rdx
115 leaq
2+sl2@dtpoff
(%rax
), %r9
118 /* LD against hidden and local variables */
119 leaq sh1@tlsld
(%rip
), %rdi
120 call __tls_get_addr@plt
122 leaq sh1@dtpoff
(%rax
), %rdx
124 leaq sh2@dtpoff+
3(%rax
), %rcx
127 /* LD against hidden but not local variables */
128 leaq sH1@tlsld
(%rip
), %rdi
129 call __tls_get_addr@plt
131 leaq sH1@dtpoff
(%rax
), %r12
133 leaq sH2@dtpoff+
1(%rax
), %rcx
136 /* IE against global var */
139 addq sg2@gottpoff
(%rip
), %rcx
142 /* IE against local var */
145 addq sl2@gottpoff
(%rip
), %r14
148 /* IE against hidden and local var */
151 addq sh2@gottpoff
(%rip
), %rcx
154 /* IE against hidden but not local var */
157 addq sH2@gottpoff
(%rip
), %rcx
160 /* Direct access through %fs */
162 /* IE against global var */
163 movq sg5@gottpoff
(%rip
), %rcx
165 movq
%fs:(%rcx
), %rdx
168 /* IE against local var */
169 movq sl5@gottpoff
(%rip
), %r10
171 movq
%fs:(%r10), %r12
174 /* IE against hidden and local var */
175 movq sh5@gottpoff
(%rip
), %rdx
177 movq
%fs:(%rdx
), %rdx
180 /* IE against hidden but not local var */
181 movq sH5@gottpoff
(%rip
), %rcx
183 movq
%fs:(%rcx
), %rdx
186 1: movabsq $_GLOBAL_OFFSET_TABLE_-
1b, %r11
193 /* -mcmodel=large sequences */
195 /* -mcmodel=large GD */
196 leaq sg1@tlsgd
(%rip
), %rdi
197 movabsq $__tls_get_addr@pltoff
, %rax
202 /* -mcmodel=large GD -> IE because variable is referenced through IE too */
203 leaq sg2@tlsgd
(%rip
), %rdi
204 movabsq $__tls_get_addr@pltoff
, %rax
209 /* -mcmodel=large GD against local variable */
210 leaq sl1@tlsgd
(%rip
), %rdi
211 movabsq $__tls_get_addr@pltoff
, %rax
216 /* -mcmodel=large GD -> IE against local variable referenced through IE too */
217 leaq sl2@tlsgd
(%rip
), %rdi
218 movabsq $__tls_get_addr@pltoff
, %rax
223 /* -mcmodel=large GD against hidden and local variable */
224 leaq sh1@tlsgd
(%rip
), %rdi
225 movabsq $__tls_get_addr@pltoff
, %rax
230 /* -mcmodel=large GD -> IE against hidden and local variable referenced through
232 leaq sh2@tlsgd
(%rip
), %rdi
233 movabsq $__tls_get_addr@pltoff
, %rax
238 /* -mcmodel=large GD against hidden but not local variable */
239 leaq sH1@tlsgd
(%rip
), %rdi
240 movabsq $__tls_get_addr@pltoff
, %rax
245 /* -mcmodel=large GD -> IE against hidden but not local variable referenced through
247 leaq sH2@tlsgd
(%rip
), %rdi
248 movabsq $__tls_get_addr@pltoff
, %rax
253 /* -mcmodel=large LD */
254 leaq sl1@tlsld
(%rip
), %rdi
255 movabsq $__tls_get_addr@pltoff
, %rax
259 leaq sl1@dtpoff
(%rax
), %rdx
261 leaq
2+sl2@dtpoff
(%rax
), %r9
264 /* -mcmodel=large LD against hidden and local variables */
265 leaq sh1@tlsld
(%rip
), %rdi
266 movabsq $__tls_get_addr@pltoff
, %rax
270 leaq sh1@dtpoff
(%rax
), %rdx
272 leaq sh2@dtpoff+
3(%rax
), %rcx
275 /* -mcmodel=large LD against hidden but not local variables */
276 leaq sH1@tlsld
(%rip
), %rdi
277 movabsq $__tls_get_addr@pltoff
, %rax
281 leaq sH1@dtpoff
(%rax
), %r12
283 leaq sH2@dtpoff+
1(%rax
), %rcx