1 /* Force .data aligned to 4K, so that .got very likely gets at
2 0x5021a0 (0x60 bytes .tdata and 0x140 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 0x401000. */
42 /* GD -> IE because variable is not defined in executable */
44 leaq sG1@tlsgd
(%rip
), %rdi
47 call __tls_get_addr@plt
50 /* GD -> IE because variable is not defined in executable where
51 the variable is referenced through IE too */
53 leaq sG2@tlsgd
(%rip
), %rdi
56 call __tls_get_addr@plt
59 /* GD -> LE with global variable defined in executable */
61 leaq sg1@tlsgd
(%rip
), %rdi
64 call __tls_get_addr@plt
67 /* GD -> LE with local variable defined in executable */
69 leaq sl1@tlsgd
(%rip
), %rdi
72 call __tls_get_addr@plt
75 /* GD -> LE with hidden variable defined in executable */
77 leaq sh1@tlsgd
(%rip
), %rdi
80 call __tls_get_addr@plt
84 leaq sl1@tlsld
(%rip
), %rdi
85 call __tls_get_addr@plt
87 leaq
1+sl1@dtpoff
(%rax
), %rdx
89 leaq sl2@dtpoff+
2(%rax
), %r9
92 /* LD -> LE against hidden variables */
93 leaq sh1@tlsld
(%rip
), %rdi
94 call __tls_get_addr@plt
96 leaq sh1@dtpoff
(%rax
), %rdx
98 leaq
3+sh2@dtpoff
(%rax
), %rcx
101 /* IE against global var */
104 addq sG2@gottpoff
(%rip
), %r9
107 /* IE -> LE against global var defined in exec */
110 addq sg1@gottpoff
(%rip
), %r10
113 /* IE -> LE against local var */
116 addq sl1@gottpoff
(%rip
), %rax
119 /* IE -> LE against hidden var */
122 addq sh1@gottpoff
(%rip
), %rcx
125 /* Direct access through %fs */
127 /* IE against global var */
128 movq sG5@gottpoff
(%rip
), %rcx
130 movq
%fs:(%rcx
), %rdx
133 /* IE->LE against local var */
134 movq sl5@gottpoff
(%rip
), %r11
136 movq
%fs:(%r11), %r12
139 /* IE->LE against hidden var */
140 movq sh5@gottpoff
(%rip
), %rdx
142 movq
%fs:(%rdx
), %rdx