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
45 call __tls_get_addr@plt
48 /* GD -> IE because variable is not defined in executable where
49 the variable is referenced through IE too */
51 leaq sG2@tlsgd
(%rip
), %rdi
52 call __tls_get_addr@plt
55 /* GD -> LE with global variable defined in executable */
57 leaq sg1@tlsgd
(%rip
), %rdi
58 call __tls_get_addr@plt
61 /* GD -> LE with local variable defined in executable */
63 leaq sl1@tlsgd
(%rip
), %rdi
64 call __tls_get_addr@plt
67 /* GD -> LE with hidden variable defined in executable */
69 leaq sh1@tlsgd
(%rip
), %rdi
70 call __tls_get_addr@plt
74 leaq sl1@tlsld
(%rip
), %rdi
75 call __tls_get_addr@plt
77 leaq
1+sl1@dtpoff
(%rax
), %rdx
79 leaq sl2@dtpoff+
2(%rax
), %r9
82 /* LD against hidden variables */
83 leaq sh1@tlsld
(%rip
), %rdi
84 call __tls_get_addr@plt
86 leaq sh1@dtpoff
(%rax
), %rdx
88 leaq
3+sh2@dtpoff
(%rax
), %rcx
91 /* IE against global var */
94 addq sG2@gottpoff
(%rip
), %r9
97 /* IE -> LE against global var defined in exec */
100 addq sg1@gottpoff
(%rip
), %r10
103 /* IE -> LE against local var */
106 addq sl1@gottpoff
(%rip
), %rax
109 /* IE -> LE against hidden var */
112 addq sh1@gottpoff
(%rip
), %rcx
115 /* Direct access through %fs */
117 /* IE against global var */
118 movq sG5@gottpoff
(%rip
), %rcx
120 movq
%fs:(%rcx
), %rdx
123 /* IE->LE against local var */
124 movq sl5@gottpoff
(%rip
), %r11
126 movq
%fs:(%r11), %r12
129 /* IE->LE against hidden var */
130 movq sh5@gottpoff
(%rip
), %rdx
132 movq
%fs:(%rdx
), %rdx