| #source: tlspic1.s |
| #source: tlspic2.s |
| #as: --64 |
| #ld: -shared -melf_x86_64 |
| #objdump: -drj.text |
| #target: x86_64-*-* |
| |
| .*: +file format elf64-x86-64 |
| |
| Disassembly of section .text: |
| |
| 0+1000 <fn1>: |
| +1000: 55[ ]+push %rbp |
| +1001: 48 89 e5[ ]+mov %rsp,%rbp |
| +1004: 90[ ]+nop * |
| +1005: 90[ ]+nop * |
| +1006: 90[ ]+nop * |
| +1007: 90[ ]+nop * |
| # GD |
| +1008: 66 48 8d 3d 80 03 20[ ]+data32 lea 0x200380\(%rip\),%rdi +# 201390 <.*> |
| +100f: 00 * |
| # -> R_X86_64_DTPMOD64 sg1 |
| +1010: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +1017: [0-9a-f ]+ |
| +1018: 90[ ]+nop * |
| +1019: 90[ ]+nop * |
| +101a: 90[ ]+nop * |
| +101b: 90[ ]+nop * |
| # GD -> IE because variable is referenced through IE too |
| +101c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
| +1023: 00 00 * |
| +1025: 48 03 05 84 03 20 00[ ]+add 0x200384\(%rip\),%rax +# 2013b0 <.*> |
| # -> R_X86_64_TPOFF64 sg2 |
| +102c: 90[ ]+nop * |
| +102d: 90[ ]+nop * |
| +102e: 90[ ]+nop * |
| +102f: 90[ ]+nop * |
| # GD against local variable |
| +1030: 66 48 8d 3d 08 03 20[ ]+data32 lea 0x200308\(%rip\),%rdi +# 201340 <.*> |
| +1037: 00 * |
| # -> R_X86_64_DTPMOD64 [0 0x2000000000000000] |
| +1038: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +103f: [0-9a-f ]+ |
| +1040: 90[ ]+nop * |
| +1041: 90[ ]+nop * |
| +1042: 90[ ]+nop * |
| +1043: 90[ ]+nop * |
| # GD -> IE against local variable referenced through IE too |
| +1044: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
| +104b: 00 00 * |
| +104d: 48 03 05 fc 02 20 00[ ]+add 0x2002fc\(%rip\),%rax +# 201350 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x24 |
| +1054: 90[ ]+nop * |
| +1055: 90[ ]+nop * |
| +1056: 90[ ]+nop * |
| +1057: 90[ ]+nop * |
| # GD against hidden and local variable |
| +1058: 66 48 8d 3d 58 03 20[ ]+data32 lea 0x200358\(%rip\),%rdi +# 2013b8 <.*> |
| +105f: 00 * |
| # -> R_X86_64_DTPMOD64 [0 0x4000000000000000] |
| +1060: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +1067: [0-9a-f ]+ |
| +1068: 90[ ]+nop * |
| +1069: 90[ ]+nop * |
| +106a: 90[ ]+nop * |
| +106b: 90[ ]+nop * |
| # GD -> IE against hidden and local variable referenced through IE too |
| +106c: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
| +1073: 00 00 * |
| +1075: 48 03 05 4c 03 20 00[ ]+add 0x20034c\(%rip\),%rax +# 2013c8 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x44 |
| +107c: 90[ ]+nop * |
| +107d: 90[ ]+nop * |
| +107e: 90[ ]+nop * |
| +107f: 90[ ]+nop * |
| # GD against hidden but not local variable |
| +1080: 66 48 8d 3d e8 02 20[ ]+data32 lea 0x2002e8\(%rip\),%rdi +# 201370 <.*> |
| +1087: 00 * |
| # -> R_X86_64_DTPMOD64 [0 0x6000000000000000] |
| +1088: 66 66 48 e8 [0-9a-f ]+data32 data32 callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +108f: [0-9a-f ]+ |
| +1090: 90[ ]+nop * |
| +1091: 90[ ]+nop * |
| +1092: 90[ ]+nop * |
| +1093: 90[ ]+nop * |
| # GD -> IE against hidden but not local variable referenced through IE too |
| +1094: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax |
| +109b: 00 00 * |
| +109d: 48 03 05 dc 02 20 00[ ]+add 0x2002dc\(%rip\),%rax +# 201380 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x64 |
| +10a4: 90[ ]+nop * |
| +10a5: 90[ ]+nop * |
| +10a6: 90[ ]+nop * |
| +10a7: 90[ ]+nop * |
| # LD |
| +10a8: 48 8d 3d b1 02 20 00[ ]+lea 0x2002b1\(%rip\),%rdi +# 201360 <.*> |
| # -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
| +10af: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +10b4: 90[ ]+nop * |
| +10b5: 90[ ]+nop * |
| +10b6: 48 8d 90 20 00 00 00[ ]+lea 0x20\(%rax\),%rdx |
| +10bd: 90[ ]+nop * |
| +10be: 90[ ]+nop * |
| +10bf: 4c 8d 88 26 00 00 00[ ]+lea 0x26\(%rax\),%r9 |
| +10c6: 90[ ]+nop * |
| +10c7: 90[ ]+nop * |
| +10c8: 90[ ]+nop * |
| +10c9: 90[ ]+nop * |
| # LD against hidden and local variables |
| +10ca: 48 8d 3d 8f 02 20 00[ ]+lea 0x20028f\(%rip\),%rdi +# 201360 <.*> |
| # -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
| +10d1: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +10d6: 90[ ]+nop * |
| +10d7: 90[ ]+nop * |
| +10d8: 48 8d 90 40 00 00 00[ ]+lea 0x40\(%rax\),%rdx |
| +10df: 90[ ]+nop * |
| +10e0: 90[ ]+nop * |
| +10e1: 48 8d 88 47 00 00 00[ ]+lea 0x47\(%rax\),%rcx |
| +10e8: 90[ ]+nop * |
| +10e9: 90[ ]+nop * |
| +10ea: 90[ ]+nop * |
| +10eb: 90[ ]+nop * |
| # LD against hidden but not local variables |
| +10ec: 48 8d 3d 6d 02 20 00[ ]+lea 0x20026d\(%rip\),%rdi +# 201360 <.*> |
| # -> R_X86_64_DTPMOD64 [0 0x000000000000000] |
| +10f3: e8 [0-9a-f ]+callq [0-9a-f]+ <.*> |
| # -> R_X86_64_JUMP_SLOT __tls_get_addr |
| +10f8: 90[ ]+nop * |
| +10f9: 90[ ]+nop * |
| +10fa: 4c 8d a0 60 00 00 00[ ]+lea 0x60\(%rax\),%r12 |
| +1101: 90[ ]+nop * |
| +1102: 90[ ]+nop * |
| +1103: 48 8d 88 65 00 00 00[ ]+lea 0x65\(%rax\),%rcx |
| +110a: 90[ ]+nop * |
| +110b: 90[ ]+nop * |
| # IE against global var |
| +110c: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
| +1113: 00 00 * |
| +1115: 90[ ]+nop * |
| +1116: 90[ ]+nop * |
| +1117: 48 03 0d 92 02 20 00[ ]+add 0x200292\(%rip\),%rcx +# 2013b0 <.*> |
| # -> R_X86_64_TPOFF64 sg2 |
| +111e: 90[ ]+nop * |
| +111f: 90[ ]+nop * |
| +1120: 90[ ]+nop * |
| +1121: 90[ ]+nop * |
| # IE against local var |
| +1122: 64 4c 8b 34 25 00 00[ ]+mov %fs:0x0,%r14 |
| +1129: 00 00 * |
| +112b: 90[ ]+nop * |
| +112c: 90[ ]+nop * |
| +112d: 4c 03 35 1c 02 20 00[ ]+add 0x20021c\(%rip\),%r14 +# 201350 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x24 |
| +1134: 90[ ]+nop * |
| +1135: 90[ ]+nop * |
| +1136: 90[ ]+nop * |
| +1137: 90[ ]+nop * |
| # IE against hidden and local var |
| +1138: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
| +113f: 00 00 * |
| +1141: 90[ ]+nop * |
| +1142: 90[ ]+nop * |
| +1143: 48 03 0d 7e 02 20 00[ ]+add 0x20027e\(%rip\),%rcx +# 2013c8 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x44 |
| +114a: 90[ ]+nop * |
| +114b: 90[ ]+nop * |
| +114c: 90[ ]+nop * |
| +114d: 90[ ]+nop * |
| # IE against hidden but not local var |
| +114e: 64 48 8b 0c 25 00 00[ ]+mov %fs:0x0,%rcx |
| +1155: 00 00 * |
| +1157: 90[ ]+nop * |
| +1158: 90[ ]+nop * |
| +1159: 48 03 0d 20 02 20 00[ ]+add 0x200220\(%rip\),%rcx +# 201380 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x64 |
| +1160: 90[ ]+nop * |
| +1161: 90[ ]+nop * |
| +1162: 90[ ]+nop * |
| +1163: 90[ ]+nop * |
| # Direct access through %fs |
| # IE against global var |
| +1164: 48 8b 0d 1d 02 20 00[ ]+mov 0x20021d\(%rip\),%rcx +# 201388 <.*> |
| # -> R_X86_64_TPOFF64 sg5 |
| +116b: 90[ ]+nop * |
| +116c: 90[ ]+nop * |
| +116d: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
| +1171: 90[ ]+nop * |
| +1172: 90[ ]+nop * |
| +1173: 90[ ]+nop * |
| +1174: 90[ ]+nop * |
| # IE against local var |
| +1175: 4c 8b 15 dc 01 20 00[ ]+mov 0x2001dc\(%rip\),%r10 +# 201358 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x30 |
| +117c: 90[ ]+nop * |
| +117d: 90[ ]+nop * |
| +117e: 64 4d 8b 22[ ]+mov %fs:\(%r10\),%r12 |
| +1182: 90[ ]+nop * |
| +1183: 90[ ]+nop * |
| +1184: 90[ ]+nop * |
| +1185: 90[ ]+nop * |
| # IE against hidden and local var |
| +1186: 48 8b 15 13 02 20 00[ ]+mov 0x200213\(%rip\),%rdx +# 2013a0 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x50 |
| +118d: 90[ ]+nop * |
| +118e: 90[ ]+nop * |
| +118f: 64 48 8b 12[ ]+mov %fs:\(%rdx\),%rdx |
| +1193: 90[ ]+nop * |
| +1194: 90[ ]+nop * |
| +1195: 90[ ]+nop * |
| +1196: 90[ ]+nop * |
| # IE against hidden but not local var |
| +1197: 48 8b 0d 0a 02 20 00[ ]+mov 0x20020a\(%rip\),%rcx +# 2013a8 <.*> |
| # -> R_X86_64_TPOFF64 *ABS*+0x70 |
| +119e: 90[ ]+nop * |
| +119f: 90[ ]+nop * |
| +11a0: 64 48 8b 11[ ]+mov %fs:\(%rcx\),%rdx |
| +11a4: 90[ ]+nop * |
| +11a5: 90[ ]+nop * |
| +11a6: 90[ ]+nop * |
| +11a7: 90[ ]+nop * |
| +11a8: c9[ ]+leaveq * |
| +11a9: c3[ ]+retq * |
| +11aa: 90[ ]+nop * |
| +11ab: 90[ ]+nop * |