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