]>
Commit | Line | Data |
---|---|---|
bffbf940 JJ |
1 | #source: tlsbinpic.s |
2 | #source: tlsbin.s | |
3 | #as: --64 | |
4 | #ld: -shared -melf_x86_64 | |
5 | #objdump: -drj.text | |
6 | #target: x86_64-*-* | |
7 | ||
8 | # PT_TLS layout is: | |
9 | # Offset from Offset from Name | |
10 | # TCB base TCB end | |
11 | # 0x00 -0xa0 sg1..sg8 | |
12 | # 0x20 -0x80 sl1..sl8 | |
13 | # 0x40 -0x60 sh1..sh8 | |
14 | # 0x60 -0x40 bg1..bg8 | |
15 | # 0x80 -0x20 bl1..bl8 | |
16 | ||
17 | .*: +file format elf64-x86-64 | |
18 | ||
19 | Disassembly of section .text: | |
20 | ||
21 | 0+401000 <fn2>: | |
22 | 401000: 55[ ]+push %rbp | |
23 | 401001: 48 89 e5[ ]+mov %rsp,%rbp | |
24 | # GD -> IE because variable is not defined in executable | |
25 | 401004: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
26 | 40100b: 00 00 * | |
8c37241b | 27 | 40100d: 48 03 05 d4 03 10 00[ ]+add 1049556\(%rip\),%rax +# 5013e8 <.*> |
bffbf940 JJ |
28 | # -> R_X86_64_TPOFF64 sG1 |
29 | 401014: 90[ ]+nop * | |
30 | 401015: 90[ ]+nop * | |
31 | 401016: 90[ ]+nop * | |
32 | 401017: 90[ ]+nop * | |
33 | # GD -> IE because variable is not defined in executable where | |
34 | # the variable is referenced through IE too | |
35 | 401018: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
36 | 40101f: 00 00 * | |
8c37241b | 37 | 401021: 48 03 05 b0 03 10 00[ ]+add 1049520\(%rip\),%rax +# 5013d8 <.*> |
bffbf940 JJ |
38 | # -> R_X86_64_TPOFF64 sG2 |
39 | 401028: 90[ ]+nop * | |
40 | 401029: 90[ ]+nop * | |
41 | 40102a: 90[ ]+nop * | |
42 | 40102b: 90[ ]+nop * | |
43 | # GD -> LE with global variable defined in executable | |
44 | 40102c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
45 | 401033: 00 00 * | |
46 | 401035: 48 8d 80 60 ff ff ff[ ]+lea 0xf+60\(%rax\),%rax | |
47 | # sg1 | |
48 | 40103c: 90[ ]+nop * | |
49 | 40103d: 90[ ]+nop * | |
50 | 40103e: 90[ ]+nop * | |
51 | 40103f: 90[ ]+nop * | |
52 | # GD -> LE with local variable defined in executable | |
53 | 401040: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
54 | 401047: 00 00 * | |
55 | 401049: 48 8d 80 80 ff ff ff[ ]+lea 0xf+80\(%rax\),%rax | |
56 | # sl1 | |
57 | 401050: 90[ ]+nop * | |
58 | 401051: 90[ ]+nop * | |
59 | 401052: 90[ ]+nop * | |
60 | 401053: 90[ ]+nop * | |
61 | # GD -> LE with hidden variable defined in executable | |
62 | 401054: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
63 | 40105b: 00 00 * | |
64 | 40105d: 48 8d 80 a0 ff ff ff[ ]+lea 0xf+a0\(%rax\),%rax | |
65 | # sh1 | |
66 | 401064: 90[ ]+nop * | |
67 | 401065: 90[ ]+nop * | |
68 | 401066: 90[ ]+nop * | |
69 | 401067: 90[ ]+nop * | |
a45bb67d | 70 | # LD -> LE |
bffbf940 JJ |
71 | 401068: 66 66 66 64 48 8b 04[ ]+mov %fs:0x0,%rax |
72 | 40106f: 25 00 00 00 00 * | |
73 | 401074: 90[ ]+nop * | |
74 | 401075: 90[ ]+nop * | |
75 | 401076: 48 8d 90 81 ff ff ff[ ]+lea 0xf+81\(%rax\),%rdx | |
76 | # sl1+1 | |
77 | 40107d: 90[ ]+nop * | |
78 | 40107e: 90[ ]+nop * | |
79 | 40107f: 4c 8d 88 86 ff ff ff[ ]+lea 0xf+86\(%rax\),%r9 | |
80 | # sl2+2 | |
81 | 401086: 90[ ]+nop * | |
82 | 401087: 90[ ]+nop * | |
83 | 401088: 90[ ]+nop * | |
84 | 401089: 90[ ]+nop * | |
a45bb67d | 85 | # LD -> LE against hidden variables |
bffbf940 JJ |
86 | 40108a: 66 66 66 64 48 8b 04[ ]+mov %fs:0x0,%rax |
87 | 401091: 25 00 00 00 00 * | |
88 | 401096: 90[ ]+nop * | |
89 | 401097: 90[ ]+nop * | |
90 | 401098: 48 8d 90 a0 ff ff ff[ ]+lea 0xf+a0\(%rax\),%rdx | |
91 | # sh1 | |
92 | 40109f: 90[ ]+nop * | |
93 | 4010a0: 90[ ]+nop * | |
94 | 4010a1: 48 8d 88 a7 ff ff ff[ ]+lea 0xf+a7\(%rax\),%rcx | |
95 | # sh2+3 | |
96 | 4010a8: 90[ ]+nop * | |
97 | 4010a9: 90[ ]+nop * | |
98 | 4010aa: 90[ ]+nop * | |
99 | 4010ab: 90[ ]+nop * | |
100 | # IE against global var | |
101 | 4010ac: 64 4c 8b 0c 25 00 00[ ]+mov %fs:0x0,%r9 | |
102 | 4010b3: 00 00 * | |
103 | 4010b5: 90[ ]+nop * | |
104 | 4010b6: 90[ ]+nop * | |
8c37241b | 105 | 4010b7: 4c 03 0d 1a 03 10 00[ ]+add 1049370\(%rip\),%r9 +# 5013d8 <.*> |
bffbf940 JJ |
106 | # -> R_X86_64_TPOFF64 sG2 |
107 | 4010be: 90[ ]+nop * | |
108 | 4010bf: 90[ ]+nop * | |
109 | 4010c0: 90[ ]+nop * | |
110 | 4010c1: 90[ ]+nop * | |
111 | # IE -> LE against global var defined in exec | |
112 | 4010c2: 64 4c 8b 14 25 00 00[ ]+mov %fs:0x0,%r10 | |
113 | 4010c9: 00 00 * | |
114 | 4010cb: 90[ ]+nop * | |
115 | 4010cc: 90[ ]+nop * | |
116 | 4010cd: 4d 8d 92 60 ff ff ff[ ]+lea 0xf+60\(%r10\),%r10 | |
117 | # sg1 | |
118 | 4010d4: 90[ ]+nop * | |
119 | 4010d5: 90[ ]+nop * | |
120 | 4010d6: 90[ ]+nop * | |
121 | 4010d7: 90[ ]+nop * | |
122 | # IE -> LE against local var | |
123 | 4010d8: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
124 | 4010df: 00 00 * | |
125 | 4010e1: 90[ ]+nop * | |
126 | 4010e2: 90[ ]+nop * | |
127 | 4010e3: 48 8d 80 80 ff ff ff[ ]+lea 0xf+80\(%rax\),%rax | |
128 | # sl1 | |
129 | 4010ea: 90[ ]+nop * | |
130 | 4010eb: 90[ ]+nop * | |
131 | 4010ec: 90[ ]+nop * | |
132 | 4010ed: 90[ ]+nop * | |
133 | # IE -> LE against hidden var | |
134 | 4010ee: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx | |
135 | 4010f5: 00 00 * | |
136 | 4010f7: 90[ ]+nop * | |
137 | 4010f8: 90[ ]+nop * | |
138 | 4010f9: 48 8d 89 a0 ff ff ff[ ]+lea 0xf+a0\(%rcx\),%rcx | |
139 | # sh1 | |
140 | 401100: 90[ ]+nop * | |
141 | 401101: 90[ ]+nop * | |
142 | 401102: 90[ ]+nop * | |
143 | 401103: 90[ ]+nop * | |
144 | # Direct access through %fs | |
145 | # IE against global var | |
8c37241b | 146 | 401104: 48 8b 0d c5 02 10 00[ ]+mov 1049285\(%rip\),%rcx +# 5013d0 <.*> |
bffbf940 JJ |
147 | # -> R_X86_64_TPOFF64 sG5 |
148 | 40110b: 90[ ]+nop * | |
149 | 40110c: 90[ ]+nop * | |
150 | 40110d: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx | |
151 | 401111: 90[ ]+nop * | |
152 | 401112: 90[ ]+nop * | |
153 | 401113: 90[ ]+nop * | |
154 | 401114: 90[ ]+nop * | |
155 | # IE->LE against local var | |
156 | 401115: 49 c7 c3 90 ff ff ff[ ]+mov \$0xf+90,%r11 | |
157 | # sl5 | |
158 | 40111c: 90[ ]+nop * | |
159 | 40111d: 90[ ]+nop * | |
160 | 40111e: 64 4d 8b 23[ ]+mov %fs:\(%r11\),%r12 | |
161 | 401122: 90[ ]+nop * | |
162 | 401123: 90[ ]+nop * | |
163 | 401124: 90[ ]+nop * | |
164 | 401125: 90[ ]+nop * | |
165 | # IE->LE against hidden var | |
166 | 401126: 48 c7 c2 b0 ff ff ff[ ]+mov \$0xf+b0,%rdx | |
167 | 40112d: 90[ ]+nop * | |
168 | 40112e: 90[ ]+nop * | |
169 | 40112f: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx | |
170 | # sh5 | |
171 | 401133: 90[ ]+nop * | |
172 | 401134: 90[ ]+nop * | |
173 | 401135: 90[ ]+nop * | |
174 | 401136: 90[ ]+nop * | |
175 | 401137: c9[ ]+leaveq * | |
176 | 401138: c3[ ]+retq * | |
177 | 401139: 90[ ]+nop * | |
178 | 40113a: 90[ ]+nop * | |
179 | 40113b: 90[ ]+nop * | |
180 | ||
181 | 0+40113c <_start>: | |
182 | 40113c: 55[ ]+push %rbp | |
183 | 40113d: 48 89 e5[ ]+mov %rsp,%rbp | |
184 | # IE against global var | |
185 | 401140: 64 4c 8b 1c 25 00 00[ ]+mov %fs:0x0,%r11 | |
186 | 401147: 00 00 * | |
187 | 401149: 90[ ]+nop * | |
188 | 40114a: 90[ ]+nop * | |
8c37241b | 189 | 40114b: 4c 03 1d 8e 02 10 00[ ]+add 1049230\(%rip\),%r11 +# 5013e0 <.*> |
bffbf940 JJ |
190 | # -> R_X86_64_TPOFF64 sG6 |
191 | 401152: 90[ ]+nop * | |
192 | 401153: 90[ ]+nop * | |
193 | 401154: 90[ ]+nop * | |
194 | 401155: 90[ ]+nop * | |
195 | # IE -> LE against global var defined in exec | |
196 | 401156: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx | |
197 | 40115d: 00 00 * | |
198 | 40115f: 90[ ]+nop * | |
199 | 401160: 90[ ]+nop * | |
200 | 401161: 48 8d 92 d4 ff ff ff[ ]+lea 0xf+d4\(%rdx\),%rdx | |
201 | # bg6 | |
202 | 401168: 90[ ]+nop * | |
203 | 401169: 90[ ]+nop * | |
204 | 40116a: 90[ ]+nop * | |
205 | 40116b: 90[ ]+nop * | |
206 | # IE -> LE against local var | |
207 | 40116c: 64 4c 8b 24 25 00 00[ ]+mov %fs:0x0,%r12 | |
208 | 401173: 00 00 * | |
209 | 401175: 90[ ]+nop * | |
210 | 401176: 90[ ]+nop * | |
211 | 401177: 49 81 c4 f4 ff ff ff[ ]+add \$0xf+f4,%r12 | |
212 | # bl6 | |
213 | 40117e: 90[ ]+nop * | |
214 | 40117f: 90[ ]+nop * | |
215 | 401180: 90[ ]+nop * | |
216 | 401181: 90[ ]+nop * | |
217 | # direct %fs access IE -> LE against local var | |
218 | 401182: 48 c7 c2 fc ff ff ff[ ]+mov \$0xf+fc,%rdx | |
219 | # bl8 | |
220 | 401189: 90[ ]+nop * | |
221 | 40118a: 90[ ]+nop * | |
222 | 40118b: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax | |
223 | 40118f: 90[ ]+nop * | |
224 | 401190: 90[ ]+nop * | |
225 | 401191: 90[ ]+nop * | |
226 | 401192: 90[ ]+nop * | |
227 | # IE -> LE against hidden but not local var | |
228 | 401193: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx | |
229 | 40119a: 00 00 * | |
230 | 40119c: 90[ ]+nop * | |
231 | 40119d: 90[ ]+nop * | |
232 | 40119e: 48 8d 92 b4 ff ff ff[ ]+lea 0xf+b4\(%rdx\),%rdx | |
233 | # sh6 | |
234 | 4011a5: 90[ ]+nop * | |
235 | 4011a6: 90[ ]+nop * | |
236 | 4011a7: 90[ ]+nop * | |
237 | 4011a8: 90[ ]+nop * | |
238 | # direct %fs access IE -> LE against hidden but not local var | |
239 | 4011a9: 48 c7 c2 bc ff ff ff[ ]+mov \$0xf+bc,%rdx | |
240 | # sh8 | |
241 | 4011b0: 90[ ]+nop * | |
242 | 4011b1: 90[ ]+nop * | |
243 | 4011b2: 64 48 8b 02[ ]+mov %fs:\(%rdx\),%rax | |
244 | 4011b6: 90[ ]+nop * | |
245 | 4011b7: 90[ ]+nop * | |
246 | 4011b8: 90[ ]+nop * | |
247 | 4011b9: 90[ ]+nop * | |
248 | # LE, global var defined in exec | |
249 | 4011ba: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax | |
250 | 4011c1: 00 00 * | |
251 | 4011c3: 90[ ]+nop * | |
252 | 4011c4: 90[ ]+nop * | |
253 | 4011c5: 48 8d 90 64 ff ff ff[ ]+lea 0xf+64\(%rax\),%rdx | |
254 | # sg2 | |
255 | 4011cc: 90[ ]+nop * | |
256 | 4011cd: 90[ ]+nop * | |
257 | 4011ce: 90[ ]+nop * | |
258 | 4011cf: 90[ ]+nop * | |
259 | # LE, local var, non-canonical sequence | |
260 | 4011d0: 49 c7 c1 e6 ff ff ff[ ]+mov \$0xf+e6,%r9 | |
261 | # bl2+2 | |
262 | 4011d7: 90[ ]+nop * | |
263 | 4011d8: 90[ ]+nop * | |
264 | 4011d9: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx | |
265 | 4011e0: 00 00 * | |
266 | 4011e2: 90[ ]+nop * | |
267 | 4011e3: 90[ ]+nop * | |
268 | 4011e4: 4c 01 ca[ ]+add %r9,%rdx | |
269 | 4011e7: 90[ ]+nop * | |
270 | 4011e8: 90[ ]+nop * | |
271 | 4011e9: 90[ ]+nop * | |
272 | 4011ea: 90[ ]+nop * | |
273 | # LE, hidden var defined in exec, non-canonical sequence | |
274 | 4011eb: 64 48 8b 14 25 00 00[ ]+mov %fs:0x0,%rdx | |
275 | 4011f2: 00 00 * | |
276 | 4011f4: 90[ ]+nop * | |
277 | 4011f5: 90[ ]+nop * | |
278 | 4011f6: 48 81 c2 a5 ff ff ff[ ]+add \$0xf+a5,%rdx | |
279 | # sh2+1 | |
280 | 4011fd: 90[ ]+nop * | |
281 | 4011fe: 90[ ]+nop * | |
282 | 4011ff: 90[ ]+nop * | |
283 | 401200: 90[ ]+nop * | |
284 | # Direct %fs access | |
285 | # LE, global var defined in exec | |
286 | 401201: 64 48 8b 04 25 68 ff[ ]+mov %fs:0xf+68,%rax | |
287 | 401208: ff ff * | |
288 | # sg3 | |
289 | 40120a: 90[ ]+nop * | |
290 | 40120b: 90[ ]+nop * | |
291 | 40120c: 90[ ]+nop * | |
292 | 40120d: 90[ ]+nop * | |
293 | # LE, local var | |
294 | 40120e: 64 4c 8b 14 25 eb ff[ ]+mov %fs:0xf+eb,%r10 | |
295 | 401215: ff ff * | |
296 | # bl3+3 | |
297 | 401217: 90[ ]+nop * | |
298 | 401218: 90[ ]+nop * | |
299 | 401219: 90[ ]+nop * | |
300 | 40121a: 90[ ]+nop * | |
301 | # LE, hidden var defined in exec | |
302 | 40121b: 64 48 8b 14 25 a9 ff[ ]+mov %fs:0xf+a9,%rdx | |
303 | 401222: ff ff * | |
304 | # sh3+1 | |
305 | 401224: 90[ ]+nop * | |
306 | 401225: 90[ ]+nop * | |
307 | 401226: 90[ ]+nop * | |
308 | 401227: 90[ ]+nop * | |
309 | 401228: c9[ ]+leaveq * | |
310 | 401229: c3[ ]+retq * |