#source: tlspic1.s #source: tlspic2.s #as: --64 #ld: -shared -melf_x86_64 --no-ld-generated-unwind-info #objdump: -drj.text #target: x86_64-*-* .*: +file format elf64-x86-64.* Disassembly of section .text: 0+1000 : +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 ([0-9a-f]{2} ){3}[ ]+data16 lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x180> +100f: [0-9a-f ]+ # -> R_X86_64_DTPMOD64 sg1 +1010: 66 66 48 e8 [0-9a-f ]+data16 data16 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x1a0> # -> 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 ([0-9a-f]{2} ){3}[ ]+data16 lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x130> +1037: [0-9a-f ]+ # -> R_X86_64_DTPMOD64 [0 0x2000000000000000] +1038: 66 66 48 e8 [0-9a-f ]+data16 data16 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x140> # -> 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 ([0-9a-f]{2} ){3}[ ]+data16 lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x1a8> +105f: [0-9a-f ]+ # -> R_X86_64_DTPMOD64 [0 0x4000000000000000] +1060: 66 66 48 e8 [0-9a-f ]+data16 data16 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x1b8> # -> 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 ([0-9a-f]{2} ){3}[ ]+data16 lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x160> +1087: [0-9a-f ]+ # -> R_X86_64_DTPMOD64 [0 0x6000000000000000] +1088: 66 66 48 e8 [0-9a-f ]+data16 data16 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x170> # -> R_X86_64_TPOFF64 *ABS*+0x64 +10a4: 90[ ]+nop * +10a5: 90[ ]+nop * +10a6: 90[ ]+nop * +10a7: 90[ ]+nop * # LD +10a8: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> 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 ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> 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 ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rcx +# [0-9a-f]+ <_DYNAMIC\+0x1a0> # -> 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%r14 +# [0-9a-f]+ <_DYNAMIC\+0x140> # -> 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rcx +# [0-9a-f]+ <_DYNAMIC\+0x1b8> # -> 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 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rcx +# [0-9a-f]+ <_DYNAMIC\+0x170> # -> 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 ([0-9a-f]{2} ){4}[ ]+mov 0x[0-9a-f]+\(%rip\),%rcx +# [0-9a-f]+ <_DYNAMIC\+0x178> # -> 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 ([0-9a-f]{2} ){4}[ ]+mov 0x[0-9a-f]+\(%rip\),%r10 +# [0-9a-f]+ <_DYNAMIC\+0x148> # -> 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 ([0-9a-f]{2} ){4}[ ]+mov 0x[0-9a-f]+\(%rip\),%rdx +# [0-9a-f]+ <_DYNAMIC\+0x190> # -> 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 ([0-9a-f]{2} ){4}[ ]+mov 0x[0-9a-f]+\(%rip\),%rcx +# [0-9a-f]+ <_DYNAMIC\+0x198> # -> 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: 49 bb ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%r11 +11af: ([0-9a-f]{2} ){3} +11b2: 53[ ]+push %rbx +11b3: 53[ ]+push %rbx +11b4: 48 8d 1d ed ff ff ff[ ]+lea -0x13\(%rip\),%rbx +# [0-9a-f]+ +11bb: 4c 01 db[ ]+add %r11,%rbx +11be: 90[ ]+nop * +11bf: 90[ ]+nop * +11c0: 90[ ]+nop * +11c1: 90[ ]+nop * # -mcmodel=large sequences # # -mcmodel=large GD +11c2: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x180> # -> R_X86_64_DTPMOD64 sg1 +11c9: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +11d0: ([0-9a-f]{2} ){3} +11d3: 48 01 d8[ ]+add %rbx,%rax +11d6: ff d0[ ]+callq \*%rax +11d8: 90[ ]+nop * +11d9: 90[ ]+nop * +11da: 90[ ]+nop * +11db: 90[ ]+nop * # -mcmodel=large GD -> IE because variable is referenced through IE too # -> R_X86_64_TPOFF64 sg2 +11dc: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax +11e3: 00 00 +11e5: 48 03 05 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x1a0> # -> R_X86_64_TPOFF64 sg2 +11ec: 66 0f 1f 44 00 00[ ]+nopw 0x0\(%rax,%rax,1\) +11f2: 90[ ]+nop * +11f3: 90[ ]+nop * +11f4: 90[ ]+nop * +11f5: 90[ ]+nop * # -mcmodel=large GD against local variable +11f6: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x130> # -> R_X86_64_DTPMOD64 [0 0x2000000000000000] +11fd: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +1204: ([0-9a-f]{2} ){3} +1207: 48 01 d8[ ]+add %rbx,%rax +120a: ff d0[ ]+callq \*%rax +120c: 90[ ]+nop * +120d: 90[ ]+nop * +120e: 90[ ]+nop * +120f: 90[ ]+nop * # -mcmodel=large GD -> IE against local variable referenced through IE too +1210: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax +1217: 00 00 +1219: 48 03 05 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x140> # -> R_X86_64_TPOFF64 *ABS*+0x24 +1220: 66 0f 1f 44 00 00[ ]+nopw 0x0\(%rax,%rax,1\) +1226: 90[ ]+nop * +1227: 90[ ]+nop * +1228: 90[ ]+nop * +1229: 90[ ]+nop * # -mcmodel=large GD against hidden and local variable +122a: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x1a8> # -> R_X86_64_DTPMOD64 [0 0x4000000000000000] +1231: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +1238: ([0-9a-f]{2} ){3} +123b: 48 01 d8[ ]+add %rbx,%rax +123e: ff d0[ ]+callq \*%rax +1240: 90[ ]+nop * +1241: 90[ ]+nop * +1242: 90[ ]+nop * +1243: 90[ ]+nop * # -mcmodel=large GD -> IE against hidden and local variable referenced through IE too +1244: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax +124b: 00 00 +124d: 48 03 05 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x1b8> # -> R_X86_64_TPOFF64 *ABS*+0x44 +1254: 66 0f 1f 44 00 00[ ]+nopw 0x0\(%rax,%rax,1\) +125a: 90[ ]+nop * +125b: 90[ ]+nop * +125c: 90[ ]+nop * +125d: 90[ ]+nop * # -mcmodel=large GD against hidden but not local variable +125e: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x160> # -> R_X86_64_DTPMOD64 [0 0x6000000000000000] +1265: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +126c: ([0-9a-f]{2} ){3} +126f: 48 01 d8[ ]+add %rbx,%rax +1272: ff d0[ ]+callq \*%rax +1274: 90[ ]+nop * +1275: 90[ ]+nop * +1276: 90[ ]+nop * +1277: 90[ ]+nop * # -mcmodel=large GD -> IE against hidden but not local variable referenced through IE too +1278: 64 48 8b 04 25 00 00[ ]+mov %fs:0x0,%rax +127f: 00 00 +1281: 48 03 05 ([0-9a-f]{2} ){4}[ ]+add 0x[0-9a-f]+\(%rip\),%rax +# [0-9a-f]+ <_DYNAMIC\+0x170> # -> R_X86_64_TPOFF64 *ABS*+0x64 +1288: 66 0f 1f 44 00 00[ ]+nopw 0x0\(%rax,%rax,1\) +128e: 90[ ]+nop * +128f: 90[ ]+nop * +1290: 90[ ]+nop * +1291: 90[ ]+nop * # -mcmodel=large LD +1292: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] +1299: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +12a0: ([0-9a-f]{2} ){3} +12a3: 48 01 d8[ ]+add %rbx,%rax +12a6: ff d0[ ]+callq \*%rax +12a8: 90[ ]+nop * +12a9: 90[ ]+nop * +12aa: 48 8d 90 20 00 00 00[ ]+lea 0x20\(%rax\),%rdx +12b1: 90[ ]+nop * +12b2: 90[ ]+nop * +12b3: 4c 8d 88 26 00 00 00[ ]+lea 0x26\(%rax\),%r9 +12ba: 90[ ]+nop * +12bb: 90[ ]+nop * +12bc: 90[ ]+nop * +12bd: 90[ ]+nop * # -mcmodel=large LD against hidden and local variables +12be: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] +12c5: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +12cc: ([0-9a-f]{2} ){3} +12cf: 48 01 d8[ ]+add %rbx,%rax +12d2: ff d0[ ]+callq \*%rax +12d4: 90[ ]+nop * +12d5: 90[ ]+nop * +12d6: 48 8d 90 40 00 00 00[ ]+lea 0x40\(%rax\),%rdx +12dd: 90[ ]+nop * +12de: 90[ ]+nop * +12df: 48 8d 88 47 00 00 00[ ]+lea 0x47\(%rax\),%rcx +12e6: 90[ ]+nop * +12e7: 90[ ]+nop * +12e8: 90[ ]+nop * +12e9: 90[ ]+nop * # -mcmodel=large LD against hidden but not local variables +12ea: 48 8d 3d ([0-9a-f]{2} ){4}[ ]+lea 0x[0-9a-f]+\(%rip\),%rdi +# [0-9a-f]+ <_DYNAMIC\+0x150> # -> R_X86_64_DTPMOD64 [0 0x000000000000000] +12f1: 48 b8 ([0-9a-f]{2} ){5}[ ]+movabs \$0x[0-9a-f]+,%rax # -> R_X86_64_JUMP_SLOT __tls_get_addr +12f8: ([0-9a-f]{2} ){3} +12fb: 48 01 d8[ ]+add %rbx,%rax +12fe: ff d0[ ]+callq \*%rax +1300: 90[ ]+nop * +1301: 90[ ]+nop * +1302: 4c 8d a0 60 00 00 00[ ]+lea 0x60\(%rax\),%r12 +1309: 90[ ]+nop * +130a: 90[ ]+nop * +130b: 48 8d 88 65 00 00 00[ ]+lea 0x65\(%rax\),%rcx +1312: 90[ ]+nop * +1313: 90[ ]+nop * +1314: 90[ ]+nop * +1315: 90[ ]+nop * +1316: 5b[ ]+pop %rbx +1317: 5b[ ]+pop %rbx +1318: c9[ ]+leaveq +1319: c3[ ]+retq