1 /* Force .got aligned to 4K, so it very likely gets at 0x804a100
2 (0x60 bytes .tdata and 0xa0 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 0x8049000. */
45 addl $_GLOBAL_OFFSET_TABLE_+
[.-1b], %ebx
48 /* GD -> IE because variable is not defined in executable */
49 leal sG1@tlsgd
(,%ebx
,1), %eax
50 call ___tls_get_addr@plt
53 /* GD -> IE because variable is not defined in executable where
54 the variable is referenced through @gottpoff too */
55 leal sG2@tlsgd
(,%ebx
,1), %eax
56 call ___tls_get_addr@plt
59 /* GD -> IE because variable is not defined in executable where
60 the variable is referenced through @gotntpoff too */
61 leal sG3@tlsgd
(,%ebx
,1), %eax
62 call ___tls_get_addr@plt
65 /* GD -> IE because variable is not defined in executable where
66 the variable is referenced through @gottpoff and @gotntpoff too */
67 leal sG4@tlsgd
(,%ebx
,1), %eax
68 call ___tls_get_addr@plt
71 /* GD -> LE with global variable defined in executable */
72 leal sg1@tlsgd
(,%ebx
,1), %eax
73 call ___tls_get_addr@plt
76 /* GD -> LE with local variable defined in executable */
77 leal sl1@tlsgd
(,%ebx
,1), %eax
78 call ___tls_get_addr@plt
81 /* GD -> LE with hidden variable defined in executable */
82 leal sh1@tlsgd
(,%ebx
,1), %eax
83 call ___tls_get_addr@plt
87 leal sl1@tlsldm
(%ebx
), %eax
88 call ___tls_get_addr@PLT
90 leal sl1@dtpoff
(%eax
), %edx
92 leal sl2@dtpoff
(%eax
), %ecx
95 /* LD -> LE against hidden variables */
96 leal sh1@tlsldm
(%ebx
), %eax
97 call ___tls_get_addr@PLT
99 leal sh1@dtpoff
(%eax
), %edx
101 leal sh2@dtpoff
(%eax
), %ecx
104 /* @gottpoff IE against global var */
107 subl sG2@gottpoff
(%ebx
), %ecx
110 /* @gottpoff IE against global var */
113 subl sG4@gottpoff
(%ebx
), %eax
116 /* @gotntpoff IE against global var */
119 addl sG3@gotntpoff
(%ebx
), %ecx
122 /* @gotntpoff IE against global var */
125 addl sG4@gotntpoff
(%ebx
), %eax
128 /* @gottpoff IE -> LE against global var defined in exec */
131 subl sg1@gottpoff
(%ebx
), %ecx
134 /* @gotntpoff IE -> LE against local var */
137 addl sl1@gotntpoff
(%ebx
), %eax
140 /* @gottpoff IE -> LE against hidden var */
143 subl sh1@gottpoff
(%ebx
), %ecx
146 /* Direct access through %gs */
148 /* @gotntpoff IE against global var */
149 movl sG5@gotntpoff
(%ebx
), %ecx
151 movl
%gs
:(%ecx
), %edx
154 /* @gotntpoff IE->LE against local var */
155 movl sl5@gotntpoff
(%ebx
), %eax
157 movl
%gs
:(%eax
), %edx
160 /* @gotntpoff IE->LE against hidden var */
161 movl sh5@gotntpoff
(%ebx
), %edx
163 movl
%gs
:(%edx
), %edx