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 */
43 leaq sG1@tlsdesc
(%rip
), %rax
44 call
*sG1@tlscall
(%rax
)
47 /* GD -> IE because variable is not defined in executable where
48 the variable is referenced through IE too */
49 leaq sG2@tlsdesc
(%rip
), %rax
50 call
*sG2@tlscall
(%rax
)
53 /* GD -> LE with global variable defined in executable */
54 leaq sg1@tlsdesc
(%rip
), %rax
55 call
*sg1@tlscall
(%rax
)
58 /* GD -> LE with local variable defined in executable */
59 leaq sl1@tlsdesc
(%rip
), %rax
60 call
*sl1@tlscall
(%rax
)
63 /* GD -> LE with hidden variable defined in executable */
64 leaq sh1@tlsdesc
(%rip
), %rax
65 call
*sh1@tlscall
(%rax
)
69 leaq _TLS_MODULE_BASE_@tlsdesc
(%rip
), %rax
70 call
*_TLS_MODULE_BASE_@tlscall
(%rax
)
72 leaq
1+sl1@dtpoff
(%rax
), %rdx
74 leaq sl2@dtpoff+
2(%rax
), %r9
77 /* LD -> LE against hidden variables */
78 leaq sh1@dtpoff
(%rax
), %rdx
80 leaq
3+sh2@dtpoff
(%rax
), %rcx
83 /* IE against global var */
86 addq sG2@gottpoff
(%rip
), %r9
89 /* IE -> LE against global var defined in exec */
92 addq sg1@gottpoff
(%rip
), %r10
95 /* IE -> LE against local var */
98 addq sl1@gottpoff
(%rip
), %rax
101 /* IE -> LE against hidden var */
104 addq sh1@gottpoff
(%rip
), %rcx
107 /* Direct access through %fs */
109 /* IE against global var */
110 movq sG5@gottpoff
(%rip
), %rcx
112 movq
%fs:(%rcx
), %rdx
115 /* IE->LE against local var */
116 movq sl5@gottpoff
(%rip
), %r11
118 movq
%fs:(%r11), %r12
121 /* IE->LE against hidden var */
122 movq sh5@gottpoff
(%rip
), %rdx
124 movq
%fs:(%rdx
), %rdx
130 /* IE against global var */
131 addq sG2@gottpoff
(%rip
), %r16
132 addq
%rax
, sG2@gottpoff
(%rip
), %r16
133 addq sG2@gottpoff
(%rip
), %rax
, %r16
134 {nf
} addq sG2@gottpoff
(%rip
), %r16
135 {nf
} addq
%rax
, sG2@gottpoff
(%rip
), %r16
136 {nf
} addq sG2@gottpoff
(%rip
), %rax
, %r16
138 /* IE -> LE against global var defined in exec */
139 addq sg1@gottpoff
(%rip
), %r17
140 addq
%r8, sg1@gottpoff
(%rip
), %r17
141 addq sg1@gottpoff
(%rip
), %r8, %r17
142 {nf
} addq sg1@gottpoff
(%rip
), %r17
143 {nf
} addq
%r8, sg1@gottpoff
(%rip
), %r17
144 {nf
} addq sg1@gottpoff
(%rip
), %r8, %r17
146 /* IE -> LE against local var */
147 addq sl1@gottpoff
(%rip
), %r18
148 addq
%r8, sl1@gottpoff
(%rip
), %rax
149 addq sl1@gottpoff
(%rip
), %r8, %rax
150 {nf
} addq sl1@gottpoff
(%rip
), %r18
151 {nf
} addq
%r8, sl1@gottpoff
(%rip
), %rax
152 {nf
} addq sl1@gottpoff
(%rip
), %r8, %rax
154 /* IE -> LE against hidden var */
155 addq sh1@gottpoff
(%rip
), %r19
156 addq
%r19, sh1@gottpoff
(%rip
), %r8
157 addq sh1@gottpoff
(%rip
), %r19, %r8
158 {nf
} addq sh1@gottpoff
(%rip
), %r19
159 {nf
} addq
%r19, sh1@gottpoff
(%rip
), %r8
160 {nf
} addq sh1@gottpoff
(%rip
), %r19, %r8
162 /* Direct access through %fs */
164 /* IE against global var */
165 movq sG5@gottpoff
(%rip
), %r20
167 /* IE->LE against local var */
168 movq sl5@gottpoff
(%rip
), %r21
170 /* IE->LE against hidden var */
171 movq sh5@gottpoff
(%rip
), %r22
173 /* GD -> IE because variable is not defined in executable */
174 leaq sG1@tlsdesc
(%rip
), %r16
176 /* GD -> IE because variable is not defined in executable where
177 the variable is referenced through IE too */
178 leaq sG2@tlsdesc
(%rip
), %r17
180 /* GD -> LE with global variable defined in executable */
181 leaq sg1@tlsdesc
(%rip
), %r18
183 /* GD -> LE with local variable defined in executable */
184 leaq sl1@tlsdesc
(%rip
), %r19
186 /* GD -> LE with hidden variable defined in executable */
187 leaq sh1@tlsdesc
(%rip
), %r20