|
// a7920fd5915afd41455261c42b6e8788c63acc748805d466190366e56bbc90eb |
|
// $ /home/brandtbucher/.pyenv/versions/3.13-dev/bin/python3.13 ./Tools/jit/build.py x86_64-pc-linux-gnu |
|
|
|
typedef enum { |
|
HoleKind_ARM64_RELOC_GOT_LOAD_PAGE21, |
|
HoleKind_ARM64_RELOC_GOT_LOAD_PAGEOFF12, |
|
HoleKind_ARM64_RELOC_PAGE21, |
|
HoleKind_ARM64_RELOC_PAGEOFF12, |
|
HoleKind_ARM64_RELOC_UNSIGNED, |
|
HoleKind_IMAGE_REL_AMD64_REL32, |
|
HoleKind_IMAGE_REL_ARM64_BRANCH26, |
|
HoleKind_IMAGE_REL_ARM64_PAGEBASE_REL21, |
|
HoleKind_IMAGE_REL_ARM64_PAGEOFFSET_12A, |
|
HoleKind_IMAGE_REL_ARM64_PAGEOFFSET_12L, |
|
HoleKind_IMAGE_REL_I386_DIR32, |
|
HoleKind_IMAGE_REL_I386_REL32, |
|
HoleKind_R_AARCH64_ABS64, |
|
HoleKind_R_AARCH64_ADR_GOT_PAGE, |
|
HoleKind_R_AARCH64_CALL26, |
|
HoleKind_R_AARCH64_JUMP26, |
|
HoleKind_R_AARCH64_LD64_GOT_LO12_NC, |
|
HoleKind_R_AARCH64_MOVW_UABS_G0_NC, |
|
HoleKind_R_AARCH64_MOVW_UABS_G1_NC, |
|
HoleKind_R_AARCH64_MOVW_UABS_G2_NC, |
|
HoleKind_R_AARCH64_MOVW_UABS_G3, |
|
HoleKind_R_X86_64_64, |
|
HoleKind_R_X86_64_GOTPCREL, |
|
HoleKind_R_X86_64_GOTPCRELX, |
|
HoleKind_R_X86_64_PC32, |
|
HoleKind_R_X86_64_REX_GOTPCRELX, |
|
HoleKind_X86_64_RELOC_BRANCH, |
|
HoleKind_X86_64_RELOC_GOT, |
|
HoleKind_X86_64_RELOC_GOT_LOAD, |
|
HoleKind_X86_64_RELOC_SIGNED, |
|
HoleKind_X86_64_RELOC_UNSIGNED, |
|
} HoleKind; |
|
|
|
typedef enum { |
|
HoleValue_CODE, |
|
HoleValue_CONTINUE, |
|
HoleValue_DATA, |
|
HoleValue_EXECUTOR, |
|
HoleValue_GOT, |
|
HoleValue_OPARG, |
|
HoleValue_OPERAND, |
|
HoleValue_TARGET, |
|
HoleValue_TOP, |
|
HoleValue_ZERO, |
|
} HoleValue; |
|
|
|
typedef struct { |
|
const uint64_t offset; |
|
const HoleKind kind; |
|
const HoleValue value; |
|
const void *symbol; |
|
const uint64_t addend; |
|
} Hole; |
|
|
|
typedef struct { |
|
const size_t body_size; |
|
const unsigned char * const body; |
|
const size_t holes_size; |
|
const Hole * const holes; |
|
} Stencil; |
|
|
|
typedef struct { |
|
const Stencil code; |
|
const Stencil data; |
|
} StencilGroup; |
|
|
|
// _BEFORE_ASYNC_WITH |
|
// |
|
// /tmp/tmp2mfmnab2/_BEFORE_ASYNC_WITH.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d7 movq %rdx, %r15 |
|
// e: 48 89 f3 movq %rsi, %rbx |
|
// 11: 49 89 fe movq %rdi, %r14 |
|
// 14: 4c 8b 6e f8 movq -0x8(%rsi), %r13 |
|
// 18: be 40 68 00 00 movl $0x6840, %esi # imm = 0x6840 |
|
// 1d: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x24 <_JIT_ENTRY+0x24> |
|
// 0000000000000020: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 |
|
// 24: 4c 89 ef movq %r13, %rdi |
|
// 27: ff 15 00 00 00 00 callq *(%rip) # 0x2d <_JIT_ENTRY+0x2d> |
|
// 0000000000000029: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 |
|
// 2d: 48 85 c0 testq %rax, %rax |
|
// 30: 0f 84 90 00 00 00 je 0xc6 <_JIT_ENTRY+0xc6> |
|
// 36: 49 89 c4 movq %rax, %r12 |
|
// 39: be 78 68 00 00 movl $0x6878, %esi # imm = 0x6878 |
|
// 3e: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x45 <_JIT_ENTRY+0x45> |
|
// 0000000000000041: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 |
|
// 45: 4c 89 ef movq %r13, %rdi |
|
// 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> |
|
// 000000000000004a: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 |
|
// 4e: 48 85 c0 testq %rax, %rax |
|
// 51: 0f 84 a9 00 00 00 je 0x100 <_JIT_ENTRY+0x100> |
|
// 57: 48 89 c5 movq %rax, %rbp |
|
// 5a: 49 8b 45 00 movq (%r13), %rax |
|
// 5e: 85 c0 testl %eax, %eax |
|
// 60: 78 12 js 0x74 <_JIT_ENTRY+0x74> |
|
// 62: 48 ff c8 decq %rax |
|
// 65: 49 89 45 00 movq %rax, (%r13) |
|
// 69: 75 09 jne 0x74 <_JIT_ENTRY+0x74> |
|
// 6b: 4c 89 ef movq %r13, %rdi |
|
// 6e: ff 15 00 00 00 00 callq *(%rip) # 0x74 <_JIT_ENTRY+0x74> |
|
// 0000000000000070: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 74: 4c 89 e7 movq %r12, %rdi |
|
// 77: ff 15 00 00 00 00 callq *(%rip) # 0x7d <_JIT_ENTRY+0x7d> |
|
// 0000000000000079: R_X86_64_GOTPCRELX PyObject_CallNoArgs-0x4 |
|
// 7d: 49 89 c5 movq %rax, %r13 |
|
// 80: 49 8b 04 24 movq (%r12), %rax |
|
// 84: 85 c0 testl %eax, %eax |
|
// 86: 78 0d js 0x95 <_JIT_ENTRY+0x95> |
|
// 88: 48 ff c8 decq %rax |
|
// 8b: 49 89 04 24 movq %rax, (%r12) |
|
// 8f: 0f 84 b5 00 00 00 je 0x14a <_JIT_ENTRY+0x14a> |
|
// 95: 4d 85 ed testq %r13, %r13 |
|
// 98: 0f 84 be 00 00 00 je 0x15c <_JIT_ENTRY+0x15c> |
|
// 9e: 48 89 6b f8 movq %rbp, -0x8(%rbx) |
|
// a2: 4c 89 2b movq %r13, (%rbx) |
|
// a5: 48 83 c3 08 addq $0x8, %rbx |
|
// a9: 4c 89 f7 movq %r14, %rdi |
|
// ac: 48 89 de movq %rbx, %rsi |
|
// af: 4c 89 fa movq %r15, %rdx |
|
// b2: 48 83 c4 08 addq $0x8, %rsp |
|
// b6: 5b popq %rbx |
|
// b7: 41 5c popq %r12 |
|
// b9: 41 5d popq %r13 |
|
// bb: 41 5e popq %r14 |
|
// bd: 41 5f popq %r15 |
|
// bf: 5d popq %rbp |
|
// c0: ff 25 00 00 00 00 jmpq *(%rip) # 0xc6 <_JIT_ENTRY+0xc6> |
|
// 00000000000000c2: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// c6: 49 8b 47 70 movq 0x70(%r15), %rax |
|
// ca: 48 85 c0 testq %rax, %rax |
|
// cd: 74 0b je 0xda <_JIT_ENTRY+0xda> |
|
// cf: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) |
|
// d4: 0f 85 a0 00 00 00 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// da: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xe1 <_JIT_ENTRY+0xe1> |
|
// 00000000000000dd: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 |
|
// e1: 48 8b 30 movq (%rax), %rsi |
|
// e4: 49 8b 45 08 movq 0x8(%r13), %rax |
|
// e8: 48 8b 48 18 movq 0x18(%rax), %rcx |
|
// ec: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0xf3 <_JIT_ENTRY+0xf3> |
|
// 00000000000000ef: R_X86_64_PC32 .L.str.15-0x4 |
|
// f3: 4c 89 ff movq %r15, %rdi |
|
// f6: 31 c0 xorl %eax, %eax |
|
// f8: ff 15 00 00 00 00 callq *(%rip) # 0xfe <_JIT_ENTRY+0xfe> |
|
// 00000000000000fa: R_X86_64_GOTPCRELX _PyErr_Format-0x4 |
|
// fe: eb 7a jmp 0x17a <_JIT_ENTRY+0x17a> |
|
// 100: 49 8b 47 70 movq 0x70(%r15), %rax |
|
// 104: 48 85 c0 testq %rax, %rax |
|
// 107: 74 07 je 0x110 <_JIT_ENTRY+0x110> |
|
// 109: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) |
|
// 10e: 75 24 jne 0x134 <_JIT_ENTRY+0x134> |
|
// 110: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x117 <_JIT_ENTRY+0x117> |
|
// 0000000000000113: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 |
|
// 117: 48 8b 30 movq (%rax), %rsi |
|
// 11a: 49 8b 45 08 movq 0x8(%r13), %rax |
|
// 11e: 48 8b 48 18 movq 0x18(%rax), %rcx |
|
// 122: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0x129 <_JIT_ENTRY+0x129> |
|
// 0000000000000125: R_X86_64_PC32 .L.str.16-0x4 |
|
// 129: 4c 89 ff movq %r15, %rdi |
|
// 12c: 31 c0 xorl %eax, %eax |
|
// 12e: ff 15 00 00 00 00 callq *(%rip) # 0x134 <_JIT_ENTRY+0x134> |
|
// 0000000000000130: R_X86_64_GOTPCRELX _PyErr_Format-0x4 |
|
// 134: 49 8b 04 24 movq (%r12), %rax |
|
// 138: 85 c0 testl %eax, %eax |
|
// 13a: 78 3e js 0x17a <_JIT_ENTRY+0x17a> |
|
// 13c: 48 ff c8 decq %rax |
|
// 13f: 49 89 04 24 movq %rax, (%r12) |
|
// 143: 75 35 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// 145: 4c 89 e7 movq %r12, %rdi |
|
// 148: eb 2a jmp 0x174 <_JIT_ENTRY+0x174> |
|
// 14a: 4c 89 e7 movq %r12, %rdi |
|
// 14d: ff 15 00 00 00 00 callq *(%rip) # 0x153 <_JIT_ENTRY+0x153> |
|
// 000000000000014f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 153: 4d 85 ed testq %r13, %r13 |
|
// 156: 0f 85 42 ff ff ff jne 0x9e <_JIT_ENTRY+0x9e> |
|
// 15c: 48 83 c3 f8 addq $-0x8, %rbx |
|
// 160: 48 8b 45 00 movq (%rbp), %rax |
|
// 164: 85 c0 testl %eax, %eax |
|
// 166: 78 12 js 0x17a <_JIT_ENTRY+0x17a> |
|
// 168: 48 ff c8 decq %rax |
|
// 16b: 48 89 45 00 movq %rax, (%rbp) |
|
// 16f: 75 09 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// 171: 48 89 ef movq %rbp, %rdi |
|
// 174: ff 15 00 00 00 00 callq *(%rip) # 0x17a <_JIT_ENTRY+0x17a> |
|
// 0000000000000176: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 17a: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x181 <_JIT_ENTRY+0x181> |
|
// 000000000000017d: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 181: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) |
|
// 188: 4c 29 f3 subq %r14, %rbx |
|
// 18b: 48 83 c3 b8 addq $-0x48, %rbx |
|
// 18f: 48 c1 eb 03 shrq $0x3, %rbx |
|
// 193: 41 89 5e 40 movl %ebx, 0x40(%r14) |
|
// 197: 31 c0 xorl %eax, %eax |
|
// 199: 48 83 c4 08 addq $0x8, %rsp |
|
// 19d: 5b popq %rbx |
|
// 19e: 41 5c popq %r12 |
|
// 1a0: 41 5d popq %r13 |
|
// 1a2: 41 5e popq %r14 |
|
// 1a4: 41 5f popq %r15 |
|
// 1a6: 5d popq %rbp |
|
// 1a7: c3 retq |
|
// 1a8: |
|
static const unsigned char _BEFORE_ASYNC_WITH_code_body[425] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x48, 0x89, |
|
0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf8, |
|
0xbe, 0x40, 0x68, 0x00, 0x00, 0x48, 0x03, 0x35, |
|
0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, |
|
0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, |
|
0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, 0x49, 0x89, |
|
0xc4, 0xbe, 0x78, 0x68, 0x00, 0x00, 0x48, 0x03, |
|
0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, |
|
0xc0, 0x0f, 0x84, 0xa9, 0x00, 0x00, 0x00, 0x48, |
|
0x89, 0xc5, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, |
|
0x78, 0x12, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, |
|
0x00, 0x75, 0x09, 0x4c, 0x89, 0xef, 0xff, 0x15, |
|
0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, |
|
0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc5, |
|
0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x0d, |
|
0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x0f, |
|
0x84, 0xb5, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, |
|
0x0f, 0x84, 0xbe, 0x00, 0x00, 0x00, 0x48, 0x89, |
|
0x6b, 0xf8, 0x4c, 0x89, 0x2b, 0x48, 0x83, 0xc3, |
|
0x08, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, |
|
0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, |
|
0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0b, 0x48, |
|
0x83, 0x78, 0x08, 0x00, 0x0f, 0x85, 0xa0, 0x00, |
|
0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, |
|
0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, |
|
0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, |
|
0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x7a, |
|
0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, |
|
0x07, 0x48, 0x83, 0x78, 0x08, 0x00, 0x75, 0x24, |
|
0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, |
|
0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, |
|
0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, |
|
0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x3e, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x75, 0x35, 0x4c, 0x89, 0xe7, |
|
0xeb, 0x2a, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, |
|
0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x85, |
|
0x42, 0xff, 0xff, 0xff, 0x48, 0x83, 0xc3, 0xf8, |
|
0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, |
|
0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x75, |
|
0x09, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, |
|
0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, |
|
0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, |
|
0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, |
|
0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, |
|
0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BEFORE_ASYNC_WITH_code_holes[17] = { |
|
{0x20, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, |
|
{0x29, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, |
|
{0x41, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, |
|
{0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, |
|
{0x70, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, |
|
{0x79, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, |
|
{0xc2, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xcc}, |
|
{0xdd, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xd4}, |
|
{0xef, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, -0x4}, |
|
{0xfa, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xdc}, |
|
{0x113, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xd4}, |
|
{0x125, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, 0x47}, |
|
{0x130, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xdc}, |
|
{0x14f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, |
|
{0x176, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, |
|
{0x17d, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xe4}, |
|
}; |
|
// 0: "'%.200s' object does not support the asynchronous context manager protocol\x00'%.200s' object does not support the asynchronous context manager protocol (missed __aexit__ method)\x00" |
|
// b0: |
|
// b0: &_PyRuntime+0x0 |
|
// b8: &_PyObject_LookupSpecial+0x0 |
|
// c0: &_Py_Dealloc+0x0 |
|
// c8: &PyObject_CallNoArgs+0x0 |
|
// d0: CONTINUE |
|
// d8: &PyExc_TypeError+0x0 |
|
// e0: &_PyErr_Format+0x0 |
|
// e8: EXECUTOR |
|
static const unsigned char _BEFORE_ASYNC_WITH_data_body[241] = { |
|
0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, |
|
0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, |
|
0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, |
|
0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, |
|
0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x79, |
|
0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, 0x75, |
|
0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, |
|
0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, |
|
0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, |
|
0x6f, 0x6c, 0x00, 0x27, 0x25, 0x2e, 0x32, 0x30, |
|
0x30, 0x73, 0x27, 0x20, 0x6f, 0x62, 0x6a, 0x65, |
|
0x63, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, |
|
0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, |
|
0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, |
|
0x61, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, |
|
0x6e, 0x6f, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x6e, |
|
0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, |
|
0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, |
|
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x20, 0x28, 0x6d, |
|
0x69, 0x73, 0x73, 0x65, 0x64, 0x20, 0x5f, 0x5f, |
|
0x61, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x5f, 0x20, |
|
0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x29, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BEFORE_ASYNC_WITH_data_holes[9] = { |
|
{0xb0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyRuntime, 0x0}, |
|
{0xb8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyObject_LookupSpecial, 0x0}, |
|
{0xc0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, |
|
{0xc8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_CallNoArgs, 0x0}, |
|
{0xd0, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0xd8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyExc_TypeError, 0x0}, |
|
{0xe0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_Format, 0x0}, |
|
{0xe8, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BEFORE_WITH |
|
// |
|
// /tmp/tmp2mfmnab2/_BEFORE_WITH.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d7 movq %rdx, %r15 |
|
// e: 48 89 f3 movq %rsi, %rbx |
|
// 11: 49 89 fe movq %rdi, %r14 |
|
// 14: 4c 8b 6e f8 movq -0x8(%rsi), %r13 |
|
// 18: be 28 70 00 00 movl $0x7028, %esi # imm = 0x7028 |
|
// 1d: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x24 <_JIT_ENTRY+0x24> |
|
// 0000000000000020: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 |
|
// 24: 4c 89 ef movq %r13, %rdi |
|
// 27: ff 15 00 00 00 00 callq *(%rip) # 0x2d <_JIT_ENTRY+0x2d> |
|
// 0000000000000029: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 |
|
// 2d: 48 85 c0 testq %rax, %rax |
|
// 30: 0f 84 90 00 00 00 je 0xc6 <_JIT_ENTRY+0xc6> |
|
// 36: 49 89 c4 movq %rax, %r12 |
|
// 39: be 90 70 00 00 movl $0x7090, %esi # imm = 0x7090 |
|
// 3e: 48 03 35 00 00 00 00 addq (%rip), %rsi # 0x45 <_JIT_ENTRY+0x45> |
|
// 0000000000000041: R_X86_64_REX_GOTPCRELX _PyRuntime-0x4 |
|
// 45: 4c 89 ef movq %r13, %rdi |
|
// 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> |
|
// 000000000000004a: R_X86_64_GOTPCRELX _PyObject_LookupSpecial-0x4 |
|
// 4e: 48 85 c0 testq %rax, %rax |
|
// 51: 0f 84 a9 00 00 00 je 0x100 <_JIT_ENTRY+0x100> |
|
// 57: 48 89 c5 movq %rax, %rbp |
|
// 5a: 49 8b 45 00 movq (%r13), %rax |
|
// 5e: 85 c0 testl %eax, %eax |
|
// 60: 78 12 js 0x74 <_JIT_ENTRY+0x74> |
|
// 62: 48 ff c8 decq %rax |
|
// 65: 49 89 45 00 movq %rax, (%r13) |
|
// 69: 75 09 jne 0x74 <_JIT_ENTRY+0x74> |
|
// 6b: 4c 89 ef movq %r13, %rdi |
|
// 6e: ff 15 00 00 00 00 callq *(%rip) # 0x74 <_JIT_ENTRY+0x74> |
|
// 0000000000000070: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 74: 4c 89 e7 movq %r12, %rdi |
|
// 77: ff 15 00 00 00 00 callq *(%rip) # 0x7d <_JIT_ENTRY+0x7d> |
|
// 0000000000000079: R_X86_64_GOTPCRELX PyObject_CallNoArgs-0x4 |
|
// 7d: 49 89 c5 movq %rax, %r13 |
|
// 80: 49 8b 04 24 movq (%r12), %rax |
|
// 84: 85 c0 testl %eax, %eax |
|
// 86: 78 0d js 0x95 <_JIT_ENTRY+0x95> |
|
// 88: 48 ff c8 decq %rax |
|
// 8b: 49 89 04 24 movq %rax, (%r12) |
|
// 8f: 0f 84 b5 00 00 00 je 0x14a <_JIT_ENTRY+0x14a> |
|
// 95: 4d 85 ed testq %r13, %r13 |
|
// 98: 0f 84 be 00 00 00 je 0x15c <_JIT_ENTRY+0x15c> |
|
// 9e: 48 89 6b f8 movq %rbp, -0x8(%rbx) |
|
// a2: 4c 89 2b movq %r13, (%rbx) |
|
// a5: 48 83 c3 08 addq $0x8, %rbx |
|
// a9: 4c 89 f7 movq %r14, %rdi |
|
// ac: 48 89 de movq %rbx, %rsi |
|
// af: 4c 89 fa movq %r15, %rdx |
|
// b2: 48 83 c4 08 addq $0x8, %rsp |
|
// b6: 5b popq %rbx |
|
// b7: 41 5c popq %r12 |
|
// b9: 41 5d popq %r13 |
|
// bb: 41 5e popq %r14 |
|
// bd: 41 5f popq %r15 |
|
// bf: 5d popq %rbp |
|
// c0: ff 25 00 00 00 00 jmpq *(%rip) # 0xc6 <_JIT_ENTRY+0xc6> |
|
// 00000000000000c2: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// c6: 49 8b 47 70 movq 0x70(%r15), %rax |
|
// ca: 48 85 c0 testq %rax, %rax |
|
// cd: 74 0b je 0xda <_JIT_ENTRY+0xda> |
|
// cf: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) |
|
// d4: 0f 85 a0 00 00 00 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// da: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xe1 <_JIT_ENTRY+0xe1> |
|
// 00000000000000dd: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 |
|
// e1: 48 8b 30 movq (%rax), %rsi |
|
// e4: 49 8b 45 08 movq 0x8(%r13), %rax |
|
// e8: 48 8b 48 18 movq 0x18(%rax), %rcx |
|
// ec: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0xf3 <_JIT_ENTRY+0xf3> |
|
// 00000000000000ef: R_X86_64_PC32 .L.str.17-0x4 |
|
// f3: 4c 89 ff movq %r15, %rdi |
|
// f6: 31 c0 xorl %eax, %eax |
|
// f8: ff 15 00 00 00 00 callq *(%rip) # 0xfe <_JIT_ENTRY+0xfe> |
|
// 00000000000000fa: R_X86_64_GOTPCRELX _PyErr_Format-0x4 |
|
// fe: eb 7a jmp 0x17a <_JIT_ENTRY+0x17a> |
|
// 100: 49 8b 47 70 movq 0x70(%r15), %rax |
|
// 104: 48 85 c0 testq %rax, %rax |
|
// 107: 74 07 je 0x110 <_JIT_ENTRY+0x110> |
|
// 109: 48 83 78 08 00 cmpq $0x0, 0x8(%rax) |
|
// 10e: 75 24 jne 0x134 <_JIT_ENTRY+0x134> |
|
// 110: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x117 <_JIT_ENTRY+0x117> |
|
// 0000000000000113: R_X86_64_REX_GOTPCRELX PyExc_TypeError-0x4 |
|
// 117: 48 8b 30 movq (%rax), %rsi |
|
// 11a: 49 8b 45 08 movq 0x8(%r13), %rax |
|
// 11e: 48 8b 48 18 movq 0x18(%rax), %rcx |
|
// 122: 48 8d 15 00 00 00 00 leaq (%rip), %rdx # 0x129 <_JIT_ENTRY+0x129> |
|
// 0000000000000125: R_X86_64_PC32 .L.str.18-0x4 |
|
// 129: 4c 89 ff movq %r15, %rdi |
|
// 12c: 31 c0 xorl %eax, %eax |
|
// 12e: ff 15 00 00 00 00 callq *(%rip) # 0x134 <_JIT_ENTRY+0x134> |
|
// 0000000000000130: R_X86_64_GOTPCRELX _PyErr_Format-0x4 |
|
// 134: 49 8b 04 24 movq (%r12), %rax |
|
// 138: 85 c0 testl %eax, %eax |
|
// 13a: 78 3e js 0x17a <_JIT_ENTRY+0x17a> |
|
// 13c: 48 ff c8 decq %rax |
|
// 13f: 49 89 04 24 movq %rax, (%r12) |
|
// 143: 75 35 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// 145: 4c 89 e7 movq %r12, %rdi |
|
// 148: eb 2a jmp 0x174 <_JIT_ENTRY+0x174> |
|
// 14a: 4c 89 e7 movq %r12, %rdi |
|
// 14d: ff 15 00 00 00 00 callq *(%rip) # 0x153 <_JIT_ENTRY+0x153> |
|
// 000000000000014f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 153: 4d 85 ed testq %r13, %r13 |
|
// 156: 0f 85 42 ff ff ff jne 0x9e <_JIT_ENTRY+0x9e> |
|
// 15c: 48 83 c3 f8 addq $-0x8, %rbx |
|
// 160: 48 8b 45 00 movq (%rbp), %rax |
|
// 164: 85 c0 testl %eax, %eax |
|
// 166: 78 12 js 0x17a <_JIT_ENTRY+0x17a> |
|
// 168: 48 ff c8 decq %rax |
|
// 16b: 48 89 45 00 movq %rax, (%rbp) |
|
// 16f: 75 09 jne 0x17a <_JIT_ENTRY+0x17a> |
|
// 171: 48 89 ef movq %rbp, %rdi |
|
// 174: ff 15 00 00 00 00 callq *(%rip) # 0x17a <_JIT_ENTRY+0x17a> |
|
// 0000000000000176: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 17a: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x181 <_JIT_ENTRY+0x181> |
|
// 000000000000017d: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 181: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) |
|
// 188: 4c 29 f3 subq %r14, %rbx |
|
// 18b: 48 83 c3 b8 addq $-0x48, %rbx |
|
// 18f: 48 c1 eb 03 shrq $0x3, %rbx |
|
// 193: 41 89 5e 40 movl %ebx, 0x40(%r14) |
|
// 197: 31 c0 xorl %eax, %eax |
|
// 199: 48 83 c4 08 addq $0x8, %rsp |
|
// 19d: 5b popq %rbx |
|
// 19e: 41 5c popq %r12 |
|
// 1a0: 41 5d popq %r13 |
|
// 1a2: 41 5e popq %r14 |
|
// 1a4: 41 5f popq %r15 |
|
// 1a6: 5d popq %rbp |
|
// 1a7: c3 retq |
|
// 1a8: |
|
static const unsigned char _BEFORE_WITH_code_body[425] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd7, 0x48, 0x89, |
|
0xf3, 0x49, 0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf8, |
|
0xbe, 0x28, 0x70, 0x00, 0x00, 0x48, 0x03, 0x35, |
|
0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, 0xff, |
|
0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xc0, |
|
0x0f, 0x84, 0x90, 0x00, 0x00, 0x00, 0x49, 0x89, |
|
0xc4, 0xbe, 0x90, 0x70, 0x00, 0x00, 0x48, 0x03, |
|
0x35, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, |
|
0xc0, 0x0f, 0x84, 0xa9, 0x00, 0x00, 0x00, 0x48, |
|
0x89, 0xc5, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, |
|
0x78, 0x12, 0x48, 0xff, 0xc8, 0x49, 0x89, 0x45, |
|
0x00, 0x75, 0x09, 0x4c, 0x89, 0xef, 0xff, 0x15, |
|
0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, |
|
0x15, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0xc5, |
|
0x49, 0x8b, 0x04, 0x24, 0x85, 0xc0, 0x78, 0x0d, |
|
0x48, 0xff, 0xc8, 0x49, 0x89, 0x04, 0x24, 0x0f, |
|
0x84, 0xb5, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, |
|
0x0f, 0x84, 0xbe, 0x00, 0x00, 0x00, 0x48, 0x89, |
|
0x6b, 0xf8, 0x4c, 0x89, 0x2b, 0x48, 0x83, 0xc3, |
|
0x08, 0x4c, 0x89, 0xf7, 0x48, 0x89, 0xde, 0x4c, |
|
0x89, 0xfa, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, |
|
0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, 0x0b, 0x48, |
|
0x83, 0x78, 0x08, 0x00, 0x0f, 0x85, 0xa0, 0x00, |
|
0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, |
|
0x00, 0x48, 0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, |
|
0x48, 0x8b, 0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, |
|
0x00, 0x00, 0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x7a, |
|
0x49, 0x8b, 0x47, 0x70, 0x48, 0x85, 0xc0, 0x74, |
|
0x07, 0x48, 0x83, 0x78, 0x08, 0x00, 0x75, 0x24, |
|
0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, |
|
0x8b, 0x30, 0x49, 0x8b, 0x45, 0x08, 0x48, 0x8b, |
|
0x48, 0x18, 0x48, 0x8d, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x4c, 0x89, 0xff, 0x31, 0xc0, 0xff, 0x15, |
|
0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x3e, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x75, 0x35, 0x4c, 0x89, 0xe7, |
|
0xeb, 0x2a, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, |
|
0x00, 0x00, 0x00, 0x4d, 0x85, 0xed, 0x0f, 0x85, |
|
0x42, 0xff, 0xff, 0xff, 0x48, 0x83, 0xc3, 0xf8, |
|
0x48, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x12, |
|
0x48, 0xff, 0xc8, 0x48, 0x89, 0x45, 0x00, 0x75, |
|
0x09, 0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, |
|
0x00, 0x00, 0x48, 0x8b, 0x05, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x89, 0x87, 0x28, 0x01, 0x00, 0x00, |
|
0x4c, 0x29, 0xf3, 0x48, 0x83, 0xc3, 0xb8, 0x48, |
|
0xc1, 0xeb, 0x03, 0x41, 0x89, 0x5e, 0x40, 0x31, |
|
0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, |
|
0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BEFORE_WITH_code_holes[17] = { |
|
{0x20, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x94}, |
|
{0x29, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x9c}, |
|
{0x41, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x94}, |
|
{0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x9c}, |
|
{0x70, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, |
|
{0x79, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xac}, |
|
{0xc2, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xb4}, |
|
{0xdd, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, |
|
{0xef, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, -0x4}, |
|
{0xfa, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, |
|
{0x113, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xbc}, |
|
{0x125, HoleKind_R_X86_64_PC32, HoleValue_DATA, NULL, 0x3a}, |
|
{0x130, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc4}, |
|
{0x14f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, |
|
{0x176, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xa4}, |
|
{0x17d, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0xcc}, |
|
}; |
|
// 0: "'%.200s' object does not support the context manager protocol\x00'%.200s' object does not support the context manager protocol (missed __exit__ method)\x00" |
|
// 95: 00 00 00 |
|
// 98: &_PyRuntime+0x0 |
|
// a0: &_PyObject_LookupSpecial+0x0 |
|
// a8: &_Py_Dealloc+0x0 |
|
// b0: &PyObject_CallNoArgs+0x0 |
|
// b8: CONTINUE |
|
// c0: &PyExc_TypeError+0x0 |
|
// c8: &_PyErr_Format+0x0 |
|
// d0: EXECUTOR |
|
static const unsigned char _BEFORE_WITH_data_body[217] = { |
|
0x27, 0x25, 0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, |
|
0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, |
|
0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, |
|
0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, |
|
0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, |
|
0x74, 0x65, 0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, |
|
0x61, 0x67, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, |
|
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x00, 0x27, 0x25, |
|
0x2e, 0x32, 0x30, 0x30, 0x73, 0x27, 0x20, 0x6f, |
|
0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x6f, |
|
0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, |
|
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x74, |
|
0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, |
|
0x78, 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, |
|
0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
|
0x63, 0x6f, 0x6c, 0x20, 0x28, 0x6d, 0x69, 0x73, |
|
0x73, 0x65, 0x64, 0x20, 0x5f, 0x5f, 0x65, 0x78, |
|
0x69, 0x74, 0x5f, 0x5f, 0x20, 0x6d, 0x65, 0x74, |
|
0x68, 0x6f, 0x64, 0x29, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BEFORE_WITH_data_holes[9] = { |
|
{0x98, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyRuntime, 0x0}, |
|
{0xa0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyObject_LookupSpecial, 0x0}, |
|
{0xa8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, |
|
{0xb0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_CallNoArgs, 0x0}, |
|
{0xb8, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0xc0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyExc_TypeError, 0x0}, |
|
{0xc8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyErr_Format, 0x0}, |
|
{0xd0, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp |
|
// 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 |
|
// 1c: 0f b7 05 00 00 00 00 movzwl (%rip), %eax # 0x23 <_JIT_ENTRY+0x23> |
|
// 000000000000001f: R_X86_64_GOTPCREL _JIT_OPARG-0x4 |
|
// 23: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x2a <_JIT_ENTRY+0x2a> |
|
// 0000000000000026: R_X86_64_REX_GOTPCRELX _PyEval_BinaryOps-0x4 |
|
// 2a: 48 89 ef movq %rbp, %rdi |
|
// 2d: 4c 89 ee movq %r13, %rsi |
|
// 30: ff 14 c1 callq *(%rcx,%rax,8) |
|
// 33: 49 89 c4 movq %rax, %r12 |
|
// 36: 48 8b 45 00 movq (%rbp), %rax |
|
// 3a: 85 c0 testl %eax, %eax |
|
// 3c: 78 09 js 0x47 <_JIT_ENTRY+0x47> |
|
// 3e: 48 ff c8 decq %rax |
|
// 41: 48 89 45 00 movq %rax, (%rbp) |
|
// 45: 74 1c je 0x63 <_JIT_ENTRY+0x63> |
|
// 47: 49 8b 45 00 movq (%r13), %rax |
|
// 4b: 85 c0 testl %eax, %eax |
|
// 4d: 78 25 js 0x74 <_JIT_ENTRY+0x74> |
|
// 4f: 48 ff c8 decq %rax |
|
// 52: 49 89 45 00 movq %rax, (%r13) |
|
// 56: 75 1c jne 0x74 <_JIT_ENTRY+0x74> |
|
// 58: 4c 89 ef movq %r13, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 61: eb 11 jmp 0x74 <_JIT_ENTRY+0x74> |
|
// 63: 48 89 ef movq %rbp, %rdi |
|
// 66: ff 15 00 00 00 00 callq *(%rip) # 0x6c <_JIT_ENTRY+0x6c> |
|
// 0000000000000068: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 6c: 49 8b 45 00 movq (%r13), %rax |
|
// 70: 85 c0 testl %eax, %eax |
|
// 72: 79 db jns 0x4f <_JIT_ENTRY+0x4f> |
|
// 74: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 78: 4d 85 e4 testq %r12, %r12 |
|
// 7b: 74 24 je 0xa1 <_JIT_ENTRY+0xa1> |
|
// 7d: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 81: 4c 89 20 movq %r12, (%rax) |
|
// 84: 48 89 df movq %rbx, %rdi |
|
// 87: 4c 89 fe movq %r15, %rsi |
|
// 8a: 4c 89 f2 movq %r14, %rdx |
|
// 8d: 48 83 c4 08 addq $0x8, %rsp |
|
// 91: 5b popq %rbx |
|
// 92: 41 5c popq %r12 |
|
// 94: 41 5d popq %r13 |
|
// 96: 41 5e popq %r14 |
|
// 98: 41 5f popq %r15 |
|
// 9a: 5d popq %rbp |
|
// 9b: ff 25 00 00 00 00 jmpq *(%rip) # 0xa1 <_JIT_ENTRY+0xa1> |
|
// 000000000000009d: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// a1: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0xa8 <_JIT_ENTRY+0xa8> |
|
// 00000000000000a4: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// a8: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// af: 48 29 d8 subq %rbx, %rax |
|
// b2: 48 83 c0 b8 addq $-0x48, %rax |
|
// b6: 48 c1 e8 03 shrq $0x3, %rax |
|
// ba: 89 43 40 movl %eax, 0x40(%rbx) |
|
// bd: 31 c0 xorl %eax, %eax |
|
// bf: 48 83 c4 08 addq $0x8, %rsp |
|
// c3: 5b popq %rbx |
|
// c4: 41 5c popq %r12 |
|
// c6: 41 5d popq %r13 |
|
// c8: 41 5e popq %r14 |
|
// ca: 41 5f popq %r15 |
|
// cc: 5d popq %rbp |
|
// cd: c3 retq |
|
// ce: |
|
static const unsigned char _BINARY_OP_code_body[207] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, |
|
0x4c, 0x8b, 0x6e, 0xf8, 0x0f, 0xb7, 0x05, 0x00, |
|
0x00, 0x00, 0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, |
|
0x00, 0x00, 0x48, 0x89, 0xef, 0x4c, 0x89, 0xee, |
|
0xff, 0x14, 0xc1, 0x49, 0x89, 0xc4, 0x48, 0x8b, |
|
0x45, 0x00, 0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, |
|
0xc8, 0x48, 0x89, 0x45, 0x00, 0x74, 0x1c, 0x49, |
|
0x8b, 0x45, 0x00, 0x85, 0xc0, 0x78, 0x25, 0x48, |
|
0xff, 0xc8, 0x49, 0x89, 0x45, 0x00, 0x75, 0x1c, |
|
0x4c, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0xeb, 0x11, 0x48, 0x89, 0xef, 0xff, 0x15, |
|
0x00, 0x00, 0x00, 0x00, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x79, 0xdb, 0x49, 0x8d, 0x47, 0xf0, |
|
0x4d, 0x85, 0xe4, 0x74, 0x24, 0x49, 0x83, 0xc7, |
|
0xf8, 0x4c, 0x89, 0x20, 0x48, 0x89, 0xdf, 0x4c, |
|
0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, 0xc4, |
|
0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, |
|
0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, 0x00, |
|
0x00, 0x48, 0x8b, 0x0d, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0x8e, 0x28, 0x01, 0x00, 0x00, 0x48, |
|
0x29, 0xd8, 0x48, 0x83, 0xc0, 0xb8, 0x48, 0xc1, |
|
0xe8, 0x03, 0x89, 0x43, 0x40, 0x31, 0xc0, 0x48, |
|
0x83, 0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, |
|
0x41, 0x5e, 0x41, 0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_code_holes[7] = { |
|
{0x1f, HoleKind_R_X86_64_GOTPCREL, HoleValue_DATA, NULL, -0x4}, |
|
{0x26, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x68, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x9d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
{0xa4, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x1c}, |
|
}; |
|
// 0: |
|
// 0: OPARG |
|
// 8: &_PyEval_BinaryOps+0x0 |
|
// 10: &_Py_Dealloc+0x0 |
|
// 18: CONTINUE |
|
// 20: EXECUTOR |
|
static const unsigned char _BINARY_OP_data_body[41] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_data_holes[6] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_OPARG, NULL, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyEval_BinaryOps, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x20, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_ADD_FLOAT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_ADD_FLOAT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 41 57 pushq %r15 |
|
// 2: 41 56 pushq %r14 |
|
// 4: 41 55 pushq %r13 |
|
// 6: 41 54 pushq %r12 |
|
// 8: 53 pushq %rbx |
|
// 9: 49 89 d7 movq %rdx, %r15 |
|
// c: 48 89 f3 movq %rsi, %rbx |
|
// f: 49 89 fe movq %rdi, %r14 |
|
// 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 |
|
// 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero |
|
// 20: f2 41 0f 58 44 24 10 addsd 0x10(%r12), %xmm0 |
|
// 27: 49 83 7d 00 01 cmpq $0x1, (%r13) |
|
// 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> |
|
// 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) |
|
// 34: 49 8b 04 24 movq (%r12), %rax |
|
// 38: 85 c0 testl %eax, %eax |
|
// 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> |
|
// 3c: 48 ff c8 decq %rax |
|
// 3f: 49 89 04 24 movq %rax, (%r12) |
|
// 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> |
|
// 45: 4c 89 e7 movq %r12, %rdi |
|
// 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> |
|
// 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 |
|
// 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 50: 49 83 3c 24 01 cmpq $0x1, (%r12) |
|
// 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> |
|
// 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) |
|
// 5e: 49 8b 45 00 movq (%r13), %rax |
|
// 62: 85 c0 testl %eax, %eax |
|
// 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> |
|
// 66: 48 ff c8 decq %rax |
|
// 69: 49 89 45 00 movq %rax, (%r13) |
|
// 6d: 4d 89 e5 movq %r12, %r13 |
|
// 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> |
|
// 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 |
|
// 78: 48 85 c0 testq %rax, %rax |
|
// 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> |
|
// 7d: 49 8b 4d 00 movq (%r13), %rcx |
|
// 81: 85 c9 testl %ecx, %ecx |
|
// 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> |
|
// 85: 48 ff c9 decq %rcx |
|
// 88: 49 89 4d 00 movq %rcx, (%r13) |
|
// 8c: 49 8b 0c 24 movq (%r12), %rcx |
|
// 90: 85 c9 testl %ecx, %ecx |
|
// 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> |
|
// 94: 48 ff c9 decq %rcx |
|
// 97: 49 89 0c 24 movq %rcx, (%r12) |
|
// 9b: 49 89 c5 movq %rax, %r13 |
|
// 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) |
|
// a2: 48 83 c3 f8 addq $-0x8, %rbx |
|
// a6: 4c 89 f7 movq %r14, %rdi |
|
// a9: 48 89 de movq %rbx, %rsi |
|
// ac: 4c 89 fa movq %r15, %rdx |
|
// af: 5b popq %rbx |
|
// b0: 41 5c popq %r12 |
|
// b2: 41 5d popq %r13 |
|
// b4: 41 5e popq %r14 |
|
// b6: 41 5f popq %r15 |
|
// b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> |
|
// 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> |
|
// 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) |
|
// cc: 4c 29 f3 subq %r14, %rbx |
|
// cf: 48 83 c3 b8 addq $-0x48, %rbx |
|
// d3: 48 c1 eb 03 shrq $0x3, %rbx |
|
// d7: 41 89 5e 40 movl %ebx, 0x40(%r14) |
|
// db: 31 c0 xorl %eax, %eax |
|
// dd: 5b popq %rbx |
|
// de: 41 5c popq %r12 |
|
// e0: 41 5d popq %r13 |
|
// e2: 41 5e popq %r14 |
|
// e4: 41 5f popq %r15 |
|
// e6: c3 retq |
|
// e7: |
|
static const unsigned char _BINARY_OP_ADD_FLOAT_code_body[232] = { |
|
0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, |
|
0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, |
|
0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, |
|
0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, |
|
0xf2, 0x41, 0x0f, 0x58, 0x44, 0x24, 0x10, 0x49, |
|
0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, |
|
0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, |
|
0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, |
|
0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, |
|
0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, |
|
0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, |
|
0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, |
|
0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, |
|
0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, |
|
0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, |
|
0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, |
|
0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, |
|
0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, |
|
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, |
|
0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, |
|
0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, |
|
0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, |
|
0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_ADD_FLOAT_code_holes[5] = { |
|
{0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyFloat_ExactDealloc+0x0 |
|
// 8: &PyFloat_FromDouble+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_ADD_FLOAT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_ADD_FLOAT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_ADD_INT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_ADD_INT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp |
|
// 1c: 4c 89 ef movq %r13, %rdi |
|
// 1f: 48 89 ee movq %rbp, %rsi |
|
// 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> |
|
// 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Add-0x4 |
|
// 28: 49 89 c4 movq %rax, %r12 |
|
// 2b: 48 8b 45 00 movq (%rbp), %rax |
|
// 2f: 85 c0 testl %eax, %eax |
|
// 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> |
|
// 33: 48 ff c8 decq %rax |
|
// 36: 48 89 45 00 movq %rax, (%rbp) |
|
// 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> |
|
// 3c: 49 8b 45 00 movq (%r13), %rax |
|
// 40: 85 c0 testl %eax, %eax |
|
// 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> |
|
// 44: 48 ff c8 decq %rax |
|
// 47: 49 89 45 00 movq %rax, (%r13) |
|
// 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> |
|
// 4d: 4c 89 ef movq %r13, %rdi |
|
// 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> |
|
// 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> |
|
// 58: 48 89 ef movq %rbp, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 61: 49 8b 45 00 movq (%r13), %rax |
|
// 65: 85 c0 testl %eax, %eax |
|
// 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> |
|
// 69: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 6d: 4d 85 e4 testq %r12, %r12 |
|
// 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> |
|
// 72: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 76: 4c 89 20 movq %r12, (%rax) |
|
// 79: 48 89 df movq %rbx, %rdi |
|
// 7c: 4c 89 fe movq %r15, %rsi |
|
// 7f: 4c 89 f2 movq %r14, %rdx |
|
// 82: 48 83 c4 08 addq $0x8, %rsp |
|
// 86: 5b popq %rbx |
|
// 87: 41 5c popq %r12 |
|
// 89: 41 5d popq %r13 |
|
// 8b: 41 5e popq %r14 |
|
// 8d: 41 5f popq %r15 |
|
// 8f: 5d popq %rbp |
|
// 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> |
|
// 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> |
|
// 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// a4: 48 29 d8 subq %rbx, %rax |
|
// a7: 48 83 c0 b8 addq $-0x48, %rax |
|
// ab: 48 c1 e8 03 shrq $0x3, %rax |
|
// af: 89 43 40 movl %eax, 0x40(%rbx) |
|
// b2: 31 c0 xorl %eax, %eax |
|
// b4: 48 83 c4 08 addq $0x8, %rsp |
|
// b8: 5b popq %rbx |
|
// b9: 41 5c popq %r12 |
|
// bb: 41 5d popq %r13 |
|
// bd: 41 5e popq %r14 |
|
// bf: 41 5f popq %r15 |
|
// c1: 5d popq %rbp |
|
// c2: c3 retq |
|
// c3: |
|
static const unsigned char _BINARY_OP_ADD_INT_code_body[196] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, |
|
0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, |
|
0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, |
|
0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, |
|
0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, |
|
0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, |
|
0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, |
|
0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, |
|
0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, |
|
0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, |
|
0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, |
|
0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, |
|
0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, |
|
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, |
|
0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_ADD_INT_code_holes[6] = { |
|
{0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyLong_Add+0x0 |
|
// 8: &PyObject_Free+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_ADD_INT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_ADD_INT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Add, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_ADD_UNICODE |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_ADD_UNICODE.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp |
|
// 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 |
|
// 1c: 48 89 ef movq %rbp, %rdi |
|
// 1f: 4c 89 ee movq %r13, %rsi |
|
// 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> |
|
// 0000000000000024: R_X86_64_GOTPCRELX PyUnicode_Concat-0x4 |
|
// 28: 49 89 c4 movq %rax, %r12 |
|
// 2b: 48 8b 45 00 movq (%rbp), %rax |
|
// 2f: 85 c0 testl %eax, %eax |
|
// 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> |
|
// 33: 48 ff c8 decq %rax |
|
// 36: 48 89 45 00 movq %rax, (%rbp) |
|
// 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> |
|
// 3c: 49 8b 45 00 movq (%r13), %rax |
|
// 40: 85 c0 testl %eax, %eax |
|
// 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> |
|
// 44: 48 ff c8 decq %rax |
|
// 47: 49 89 45 00 movq %rax, (%r13) |
|
// 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> |
|
// 4d: 4c 89 ef movq %r13, %rdi |
|
// 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> |
|
// 0000000000000052: R_X86_64_GOTPCRELX _PyUnicode_ExactDealloc-0x4 |
|
// 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> |
|
// 58: 48 89 ef movq %rbp, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX _PyUnicode_ExactDealloc-0x4 |
|
// 61: 49 8b 45 00 movq (%r13), %rax |
|
// 65: 85 c0 testl %eax, %eax |
|
// 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> |
|
// 69: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 6d: 4d 85 e4 testq %r12, %r12 |
|
// 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> |
|
// 72: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 76: 4c 89 20 movq %r12, (%rax) |
|
// 79: 48 89 df movq %rbx, %rdi |
|
// 7c: 4c 89 fe movq %r15, %rsi |
|
// 7f: 4c 89 f2 movq %r14, %rdx |
|
// 82: 48 83 c4 08 addq $0x8, %rsp |
|
// 86: 5b popq %rbx |
|
// 87: 41 5c popq %r12 |
|
// 89: 41 5d popq %r13 |
|
// 8b: 41 5e popq %r14 |
|
// 8d: 41 5f popq %r15 |
|
// 8f: 5d popq %rbp |
|
// 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> |
|
// 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> |
|
// 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// a4: 48 29 d8 subq %rbx, %rax |
|
// a7: 48 83 c0 b8 addq $-0x48, %rax |
|
// ab: 48 c1 e8 03 shrq $0x3, %rax |
|
// af: 89 43 40 movl %eax, 0x40(%rbx) |
|
// b2: 31 c0 xorl %eax, %eax |
|
// b4: 48 83 c4 08 addq $0x8, %rsp |
|
// b8: 5b popq %rbx |
|
// b9: 41 5c popq %r12 |
|
// bb: 41 5d popq %r13 |
|
// bd: 41 5e popq %r14 |
|
// bf: 41 5f popq %r15 |
|
// c1: 5d popq %rbp |
|
// c2: c3 retq |
|
// c3: |
|
static const unsigned char _BINARY_OP_ADD_UNICODE_code_body[196] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, |
|
0x4c, 0x8b, 0x6e, 0xf8, 0x48, 0x89, 0xef, 0x4c, |
|
0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, |
|
0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, |
|
0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, |
|
0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, |
|
0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, |
|
0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, |
|
0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, |
|
0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, |
|
0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, |
|
0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, |
|
0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, |
|
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, |
|
0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_ADD_UNICODE_code_holes[6] = { |
|
{0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &PyUnicode_Concat+0x0 |
|
// 8: &_PyUnicode_ExactDealloc+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_ADD_UNICODE_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_ADD_UNICODE_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyUnicode_Concat, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyUnicode_ExactDealloc, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_MULTIPLY_FLOAT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_MULTIPLY_FLOAT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 41 57 pushq %r15 |
|
// 2: 41 56 pushq %r14 |
|
// 4: 41 55 pushq %r13 |
|
// 6: 41 54 pushq %r12 |
|
// 8: 53 pushq %rbx |
|
// 9: 49 89 d7 movq %rdx, %r15 |
|
// c: 48 89 f3 movq %rsi, %rbx |
|
// f: 49 89 fe movq %rdi, %r14 |
|
// 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 |
|
// 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero |
|
// 20: f2 41 0f 59 44 24 10 mulsd 0x10(%r12), %xmm0 |
|
// 27: 49 83 7d 00 01 cmpq $0x1, (%r13) |
|
// 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> |
|
// 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) |
|
// 34: 49 8b 04 24 movq (%r12), %rax |
|
// 38: 85 c0 testl %eax, %eax |
|
// 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> |
|
// 3c: 48 ff c8 decq %rax |
|
// 3f: 49 89 04 24 movq %rax, (%r12) |
|
// 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> |
|
// 45: 4c 89 e7 movq %r12, %rdi |
|
// 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> |
|
// 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 |
|
// 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 50: 49 83 3c 24 01 cmpq $0x1, (%r12) |
|
// 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> |
|
// 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) |
|
// 5e: 49 8b 45 00 movq (%r13), %rax |
|
// 62: 85 c0 testl %eax, %eax |
|
// 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> |
|
// 66: 48 ff c8 decq %rax |
|
// 69: 49 89 45 00 movq %rax, (%r13) |
|
// 6d: 4d 89 e5 movq %r12, %r13 |
|
// 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> |
|
// 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 |
|
// 78: 48 85 c0 testq %rax, %rax |
|
// 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> |
|
// 7d: 49 8b 4d 00 movq (%r13), %rcx |
|
// 81: 85 c9 testl %ecx, %ecx |
|
// 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> |
|
// 85: 48 ff c9 decq %rcx |
|
// 88: 49 89 4d 00 movq %rcx, (%r13) |
|
// 8c: 49 8b 0c 24 movq (%r12), %rcx |
|
// 90: 85 c9 testl %ecx, %ecx |
|
// 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> |
|
// 94: 48 ff c9 decq %rcx |
|
// 97: 49 89 0c 24 movq %rcx, (%r12) |
|
// 9b: 49 89 c5 movq %rax, %r13 |
|
// 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) |
|
// a2: 48 83 c3 f8 addq $-0x8, %rbx |
|
// a6: 4c 89 f7 movq %r14, %rdi |
|
// a9: 48 89 de movq %rbx, %rsi |
|
// ac: 4c 89 fa movq %r15, %rdx |
|
// af: 5b popq %rbx |
|
// b0: 41 5c popq %r12 |
|
// b2: 41 5d popq %r13 |
|
// b4: 41 5e popq %r14 |
|
// b6: 41 5f popq %r15 |
|
// b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> |
|
// 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> |
|
// 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) |
|
// cc: 4c 29 f3 subq %r14, %rbx |
|
// cf: 48 83 c3 b8 addq $-0x48, %rbx |
|
// d3: 48 c1 eb 03 shrq $0x3, %rbx |
|
// d7: 41 89 5e 40 movl %ebx, 0x40(%r14) |
|
// db: 31 c0 xorl %eax, %eax |
|
// dd: 5b popq %rbx |
|
// de: 41 5c popq %r12 |
|
// e0: 41 5d popq %r13 |
|
// e2: 41 5e popq %r14 |
|
// e4: 41 5f popq %r15 |
|
// e6: c3 retq |
|
// e7: |
|
static const unsigned char _BINARY_OP_MULTIPLY_FLOAT_code_body[232] = { |
|
0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, |
|
0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, |
|
0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, |
|
0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, |
|
0xf2, 0x41, 0x0f, 0x59, 0x44, 0x24, 0x10, 0x49, |
|
0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, |
|
0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, |
|
0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, |
|
0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, |
|
0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, |
|
0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, |
|
0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, |
|
0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, |
|
0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, |
|
0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, |
|
0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, |
|
0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, |
|
0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, |
|
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, |
|
0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, |
|
0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, |
|
0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, |
|
0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_MULTIPLY_FLOAT_code_holes[5] = { |
|
{0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyFloat_ExactDealloc+0x0 |
|
// 8: &PyFloat_FromDouble+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_MULTIPLY_FLOAT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_MULTIPLY_FLOAT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_MULTIPLY_INT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_MULTIPLY_INT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp |
|
// 1c: 4c 89 ef movq %r13, %rdi |
|
// 1f: 48 89 ee movq %rbp, %rsi |
|
// 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> |
|
// 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Multiply-0x4 |
|
// 28: 49 89 c4 movq %rax, %r12 |
|
// 2b: 48 8b 45 00 movq (%rbp), %rax |
|
// 2f: 85 c0 testl %eax, %eax |
|
// 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> |
|
// 33: 48 ff c8 decq %rax |
|
// 36: 48 89 45 00 movq %rax, (%rbp) |
|
// 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> |
|
// 3c: 49 8b 45 00 movq (%r13), %rax |
|
// 40: 85 c0 testl %eax, %eax |
|
// 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> |
|
// 44: 48 ff c8 decq %rax |
|
// 47: 49 89 45 00 movq %rax, (%r13) |
|
// 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> |
|
// 4d: 4c 89 ef movq %r13, %rdi |
|
// 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> |
|
// 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> |
|
// 58: 48 89 ef movq %rbp, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 61: 49 8b 45 00 movq (%r13), %rax |
|
// 65: 85 c0 testl %eax, %eax |
|
// 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> |
|
// 69: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 6d: 4d 85 e4 testq %r12, %r12 |
|
// 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> |
|
// 72: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 76: 4c 89 20 movq %r12, (%rax) |
|
// 79: 48 89 df movq %rbx, %rdi |
|
// 7c: 4c 89 fe movq %r15, %rsi |
|
// 7f: 4c 89 f2 movq %r14, %rdx |
|
// 82: 48 83 c4 08 addq $0x8, %rsp |
|
// 86: 5b popq %rbx |
|
// 87: 41 5c popq %r12 |
|
// 89: 41 5d popq %r13 |
|
// 8b: 41 5e popq %r14 |
|
// 8d: 41 5f popq %r15 |
|
// 8f: 5d popq %rbp |
|
// 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> |
|
// 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> |
|
// 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// a4: 48 29 d8 subq %rbx, %rax |
|
// a7: 48 83 c0 b8 addq $-0x48, %rax |
|
// ab: 48 c1 e8 03 shrq $0x3, %rax |
|
// af: 89 43 40 movl %eax, 0x40(%rbx) |
|
// b2: 31 c0 xorl %eax, %eax |
|
// b4: 48 83 c4 08 addq $0x8, %rsp |
|
// b8: 5b popq %rbx |
|
// b9: 41 5c popq %r12 |
|
// bb: 41 5d popq %r13 |
|
// bd: 41 5e popq %r14 |
|
// bf: 41 5f popq %r15 |
|
// c1: 5d popq %rbp |
|
// c2: c3 retq |
|
// c3: |
|
static const unsigned char _BINARY_OP_MULTIPLY_INT_code_body[196] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, |
|
0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, |
|
0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, |
|
0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, |
|
0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, |
|
0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, |
|
0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, |
|
0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, |
|
0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, |
|
0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, |
|
0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, |
|
0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, |
|
0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, |
|
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, |
|
0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_MULTIPLY_INT_code_holes[6] = { |
|
{0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyLong_Multiply+0x0 |
|
// 8: &PyObject_Free+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_MULTIPLY_INT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_MULTIPLY_INT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Multiply, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_SUBTRACT_FLOAT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_SUBTRACT_FLOAT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 41 57 pushq %r15 |
|
// 2: 41 56 pushq %r14 |
|
// 4: 41 55 pushq %r13 |
|
// 6: 41 54 pushq %r12 |
|
// 8: 53 pushq %rbx |
|
// 9: 49 89 d7 movq %rdx, %r15 |
|
// c: 48 89 f3 movq %rsi, %rbx |
|
// f: 49 89 fe movq %rdi, %r14 |
|
// 12: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 16: 4c 8b 66 f8 movq -0x8(%rsi), %r12 |
|
// 1a: f2 41 0f 10 45 10 movsd 0x10(%r13), %xmm0 # xmm0 = mem[0],zero |
|
// 20: f2 41 0f 5c 44 24 10 subsd 0x10(%r12), %xmm0 |
|
// 27: 49 83 7d 00 01 cmpq $0x1, (%r13) |
|
// 2c: 75 22 jne 0x50 <_JIT_ENTRY+0x50> |
|
// 2e: f2 41 0f 11 45 10 movsd %xmm0, 0x10(%r13) |
|
// 34: 49 8b 04 24 movq (%r12), %rax |
|
// 38: 85 c0 testl %eax, %eax |
|
// 3a: 78 62 js 0x9e <_JIT_ENTRY+0x9e> |
|
// 3c: 48 ff c8 decq %rax |
|
// 3f: 49 89 04 24 movq %rax, (%r12) |
|
// 43: 75 59 jne 0x9e <_JIT_ENTRY+0x9e> |
|
// 45: 4c 89 e7 movq %r12, %rdi |
|
// 48: ff 15 00 00 00 00 callq *(%rip) # 0x4e <_JIT_ENTRY+0x4e> |
|
// 000000000000004a: R_X86_64_GOTPCRELX _PyFloat_ExactDealloc-0x4 |
|
// 4e: eb 4e jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 50: 49 83 3c 24 01 cmpq $0x1, (%r12) |
|
// 55: 75 1b jne 0x72 <_JIT_ENTRY+0x72> |
|
// 57: f2 41 0f 11 44 24 10 movsd %xmm0, 0x10(%r12) |
|
// 5e: 49 8b 45 00 movq (%r13), %rax |
|
// 62: 85 c0 testl %eax, %eax |
|
// 64: 78 07 js 0x6d <_JIT_ENTRY+0x6d> |
|
// 66: 48 ff c8 decq %rax |
|
// 69: 49 89 45 00 movq %rax, (%r13) |
|
// 6d: 4d 89 e5 movq %r12, %r13 |
|
// 70: eb 2c jmp 0x9e <_JIT_ENTRY+0x9e> |
|
// 72: ff 15 00 00 00 00 callq *(%rip) # 0x78 <_JIT_ENTRY+0x78> |
|
// 0000000000000074: R_X86_64_GOTPCRELX PyFloat_FromDouble-0x4 |
|
// 78: 48 85 c0 testq %rax, %rax |
|
// 7b: 74 41 je 0xbe <_JIT_ENTRY+0xbe> |
|
// 7d: 49 8b 4d 00 movq (%r13), %rcx |
|
// 81: 85 c9 testl %ecx, %ecx |
|
// 83: 78 07 js 0x8c <_JIT_ENTRY+0x8c> |
|
// 85: 48 ff c9 decq %rcx |
|
// 88: 49 89 4d 00 movq %rcx, (%r13) |
|
// 8c: 49 8b 0c 24 movq (%r12), %rcx |
|
// 90: 85 c9 testl %ecx, %ecx |
|
// 92: 78 07 js 0x9b <_JIT_ENTRY+0x9b> |
|
// 94: 48 ff c9 decq %rcx |
|
// 97: 49 89 0c 24 movq %rcx, (%r12) |
|
// 9b: 49 89 c5 movq %rax, %r13 |
|
// 9e: 4c 89 6b f0 movq %r13, -0x10(%rbx) |
|
// a2: 48 83 c3 f8 addq $-0x8, %rbx |
|
// a6: 4c 89 f7 movq %r14, %rdi |
|
// a9: 48 89 de movq %rbx, %rsi |
|
// ac: 4c 89 fa movq %r15, %rdx |
|
// af: 5b popq %rbx |
|
// b0: 41 5c popq %r12 |
|
// b2: 41 5d popq %r13 |
|
// b4: 41 5e popq %r14 |
|
// b6: 41 5f popq %r15 |
|
// b8: ff 25 00 00 00 00 jmpq *(%rip) # 0xbe <_JIT_ENTRY+0xbe> |
|
// 00000000000000ba: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// be: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0xc5 <_JIT_ENTRY+0xc5> |
|
// 00000000000000c1: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// c5: 49 89 87 28 01 00 00 movq %rax, 0x128(%r15) |
|
// cc: 4c 29 f3 subq %r14, %rbx |
|
// cf: 48 83 c3 b8 addq $-0x48, %rbx |
|
// d3: 48 c1 eb 03 shrq $0x3, %rbx |
|
// d7: 41 89 5e 40 movl %ebx, 0x40(%r14) |
|
// db: 31 c0 xorl %eax, %eax |
|
// dd: 5b popq %rbx |
|
// de: 41 5c popq %r12 |
|
// e0: 41 5d popq %r13 |
|
// e2: 41 5e popq %r14 |
|
// e4: 41 5f popq %r15 |
|
// e6: c3 retq |
|
// e7: |
|
static const unsigned char _BINARY_OP_SUBTRACT_FLOAT_code_body[232] = { |
|
0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, |
|
0x53, 0x49, 0x89, 0xd7, 0x48, 0x89, 0xf3, 0x49, |
|
0x89, 0xfe, 0x4c, 0x8b, 0x6e, 0xf0, 0x4c, 0x8b, |
|
0x66, 0xf8, 0xf2, 0x41, 0x0f, 0x10, 0x45, 0x10, |
|
0xf2, 0x41, 0x0f, 0x5c, 0x44, 0x24, 0x10, 0x49, |
|
0x83, 0x7d, 0x00, 0x01, 0x75, 0x22, 0xf2, 0x41, |
|
0x0f, 0x11, 0x45, 0x10, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x62, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x75, 0x59, 0x4c, 0x89, 0xe7, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x4e, |
|
0x49, 0x83, 0x3c, 0x24, 0x01, 0x75, 0x1b, 0xf2, |
|
0x41, 0x0f, 0x11, 0x44, 0x24, 0x10, 0x49, 0x8b, |
|
0x45, 0x00, 0x85, 0xc0, 0x78, 0x07, 0x48, 0xff, |
|
0xc8, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x89, 0xe5, |
|
0xeb, 0x2c, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x48, 0x85, 0xc0, 0x74, 0x41, 0x49, 0x8b, 0x4d, |
|
0x00, 0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, |
|
0x49, 0x89, 0x4d, 0x00, 0x49, 0x8b, 0x0c, 0x24, |
|
0x85, 0xc9, 0x78, 0x07, 0x48, 0xff, 0xc9, 0x49, |
|
0x89, 0x0c, 0x24, 0x49, 0x89, 0xc5, 0x4c, 0x89, |
|
0x6b, 0xf0, 0x48, 0x83, 0xc3, 0xf8, 0x4c, 0x89, |
|
0xf7, 0x48, 0x89, 0xde, 0x4c, 0x89, 0xfa, 0x5b, |
|
0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x05, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x87, |
|
0x28, 0x01, 0x00, 0x00, 0x4c, 0x29, 0xf3, 0x48, |
|
0x83, 0xc3, 0xb8, 0x48, 0xc1, 0xeb, 0x03, 0x41, |
|
0x89, 0x5e, 0x40, 0x31, 0xc0, 0x5b, 0x41, 0x5c, |
|
0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_SUBTRACT_FLOAT_code_holes[5] = { |
|
{0x4a, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x74, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0xba, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0xc1, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyFloat_ExactDealloc+0x0 |
|
// 8: &PyFloat_FromDouble+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_SUBTRACT_FLOAT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_SUBTRACT_FLOAT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyFloat_ExactDealloc, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyFloat_FromDouble, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_OP_SUBTRACT_INT |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_OP_SUBTRACT_INT.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 4c 8b 6e f0 movq -0x10(%rsi), %r13 |
|
// 18: 48 8b 6e f8 movq -0x8(%rsi), %rbp |
|
// 1c: 4c 89 ef movq %r13, %rdi |
|
// 1f: 48 89 ee movq %rbp, %rsi |
|
// 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> |
|
// 0000000000000024: R_X86_64_GOTPCRELX _PyLong_Subtract-0x4 |
|
// 28: 49 89 c4 movq %rax, %r12 |
|
// 2b: 48 8b 45 00 movq (%rbp), %rax |
|
// 2f: 85 c0 testl %eax, %eax |
|
// 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> |
|
// 33: 48 ff c8 decq %rax |
|
// 36: 48 89 45 00 movq %rax, (%rbp) |
|
// 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> |
|
// 3c: 49 8b 45 00 movq (%r13), %rax |
|
// 40: 85 c0 testl %eax, %eax |
|
// 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> |
|
// 44: 48 ff c8 decq %rax |
|
// 47: 49 89 45 00 movq %rax, (%r13) |
|
// 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> |
|
// 4d: 4c 89 ef movq %r13, %rdi |
|
// 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> |
|
// 0000000000000052: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> |
|
// 58: 48 89 ef movq %rbp, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX PyObject_Free-0x4 |
|
// 61: 49 8b 45 00 movq (%r13), %rax |
|
// 65: 85 c0 testl %eax, %eax |
|
// 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> |
|
// 69: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 6d: 4d 85 e4 testq %r12, %r12 |
|
// 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> |
|
// 72: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 76: 4c 89 20 movq %r12, (%rax) |
|
// 79: 48 89 df movq %rbx, %rdi |
|
// 7c: 4c 89 fe movq %r15, %rsi |
|
// 7f: 4c 89 f2 movq %r14, %rdx |
|
// 82: 48 83 c4 08 addq $0x8, %rsp |
|
// 86: 5b popq %rbx |
|
// 87: 41 5c popq %r12 |
|
// 89: 41 5d popq %r13 |
|
// 8b: 41 5e popq %r14 |
|
// 8d: 41 5f popq %r15 |
|
// 8f: 5d popq %rbp |
|
// 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> |
|
// 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> |
|
// 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// a4: 48 29 d8 subq %rbx, %rax |
|
// a7: 48 83 c0 b8 addq $-0x48, %rax |
|
// ab: 48 c1 e8 03 shrq $0x3, %rax |
|
// af: 89 43 40 movl %eax, 0x40(%rbx) |
|
// b2: 31 c0 xorl %eax, %eax |
|
// b4: 48 83 c4 08 addq $0x8, %rsp |
|
// b8: 5b popq %rbx |
|
// b9: 41 5c popq %r12 |
|
// bb: 41 5d popq %r13 |
|
// bd: 41 5e popq %r14 |
|
// bf: 41 5f popq %r15 |
|
// c1: 5d popq %rbp |
|
// c2: c3 retq |
|
// c3: |
|
static const unsigned char _BINARY_OP_SUBTRACT_INT_code_body[196] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x4c, 0x8b, 0x6e, 0xf0, |
|
0x48, 0x8b, 0x6e, 0xf8, 0x4c, 0x89, 0xef, 0x48, |
|
0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, |
|
0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, |
|
0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, |
|
0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, |
|
0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, |
|
0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, |
|
0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, |
|
0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, |
|
0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, |
|
0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, |
|
0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, |
|
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, |
|
0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_OP_SUBTRACT_INT_code_holes[6] = { |
|
{0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x52, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x5d, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x92, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x99, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
}; |
|
// 0: |
|
// 0: &_PyLong_Subtract+0x0 |
|
// 8: &PyObject_Free+0x0 |
|
// 10: CONTINUE |
|
// 18: EXECUTOR |
|
static const unsigned char _BINARY_OP_SUBTRACT_INT_data_body[33] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_OP_SUBTRACT_INT_data_holes[5] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyLong_Subtract, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_Free, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_SLICE |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_SLICE.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 48 8b 76 f8 movq -0x8(%rsi), %rsi |
|
// 18: 4d 8b 67 e8 movq -0x18(%r15), %r12 |
|
// 1c: 49 8b 7f f0 movq -0x10(%r15), %rdi |
|
// 20: ff 15 00 00 00 00 callq *(%rip) # 0x26 <_JIT_ENTRY+0x26> |
|
// 0000000000000022: R_X86_64_GOTPCRELX _PyBuildSlice_ConsumeRefs-0x4 |
|
// 26: 48 85 c0 testq %rax, %rax |
|
// 29: 74 2e je 0x59 <_JIT_ENTRY+0x59> |
|
// 2b: 48 89 c5 movq %rax, %rbp |
|
// 2e: 4c 89 e7 movq %r12, %rdi |
|
// 31: 48 89 c6 movq %rax, %rsi |
|
// 34: ff 15 00 00 00 00 callq *(%rip) # 0x3a <_JIT_ENTRY+0x3a> |
|
// 0000000000000036: R_X86_64_GOTPCRELX PyObject_GetItem-0x4 |
|
// 3a: 49 89 c5 movq %rax, %r13 |
|
// 3d: 48 8b 45 00 movq (%rbp), %rax |
|
// 41: 85 c0 testl %eax, %eax |
|
// 43: 78 17 js 0x5c <_JIT_ENTRY+0x5c> |
|
// 45: 48 ff c8 decq %rax |
|
// 48: 48 89 45 00 movq %rax, (%rbp) |
|
// 4c: 75 0e jne 0x5c <_JIT_ENTRY+0x5c> |
|
// 4e: 48 89 ef movq %rbp, %rdi |
|
// 51: ff 15 00 00 00 00 callq *(%rip) # 0x57 <_JIT_ENTRY+0x57> |
|
// 0000000000000053: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 57: eb 03 jmp 0x5c <_JIT_ENTRY+0x5c> |
|
// 59: 45 31 ed xorl %r13d, %r13d |
|
// 5c: 49 8b 04 24 movq (%r12), %rax |
|
// 60: 85 c0 testl %eax, %eax |
|
// 62: 78 09 js 0x6d <_JIT_ENTRY+0x6d> |
|
// 64: 48 ff c8 decq %rax |
|
// 67: 49 89 04 24 movq %rax, (%r12) |
|
// 6b: 74 2d je 0x9a <_JIT_ENTRY+0x9a> |
|
// 6d: 49 8d 47 e8 leaq -0x18(%r15), %rax |
|
// 71: 4d 85 ed testq %r13, %r13 |
|
// 74: 74 36 je 0xac <_JIT_ENTRY+0xac> |
|
// 76: 49 83 c7 f0 addq $-0x10, %r15 |
|
// 7a: 4c 89 28 movq %r13, (%rax) |
|
// 7d: 48 89 df movq %rbx, %rdi |
|
// 80: 4c 89 fe movq %r15, %rsi |
|
// 83: 4c 89 f2 movq %r14, %rdx |
|
// 86: 48 83 c4 08 addq $0x8, %rsp |
|
// 8a: 5b popq %rbx |
|
// 8b: 41 5c popq %r12 |
|
// 8d: 41 5d popq %r13 |
|
// 8f: 41 5e popq %r14 |
|
// 91: 41 5f popq %r15 |
|
// 93: 5d popq %rbp |
|
// 94: ff 25 00 00 00 00 jmpq *(%rip) # 0x9a <_JIT_ENTRY+0x9a> |
|
// 0000000000000096: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 9a: 4c 89 e7 movq %r12, %rdi |
|
// 9d: ff 15 00 00 00 00 callq *(%rip) # 0xa3 <_JIT_ENTRY+0xa3> |
|
// 000000000000009f: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// a3: 49 8d 47 e8 leaq -0x18(%r15), %rax |
|
// a7: 4d 85 ed testq %r13, %r13 |
|
// aa: 75 ca jne 0x76 <_JIT_ENTRY+0x76> |
|
// ac: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0xb3 <_JIT_ENTRY+0xb3> |
|
// 00000000000000af: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// b3: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// ba: 48 29 d8 subq %rbx, %rax |
|
// bd: 48 83 c0 b8 addq $-0x48, %rax |
|
// c1: 48 c1 e8 03 shrq $0x3, %rax |
|
// c5: 89 43 40 movl %eax, 0x40(%rbx) |
|
// c8: 31 c0 xorl %eax, %eax |
|
// ca: 48 83 c4 08 addq $0x8, %rsp |
|
// ce: 5b popq %rbx |
|
// cf: 41 5c popq %r12 |
|
// d1: 41 5d popq %r13 |
|
// d3: 41 5e popq %r14 |
|
// d5: 41 5f popq %r15 |
|
// d7: 5d popq %rbp |
|
// d8: c3 retq |
|
// d9: |
|
static const unsigned char _BINARY_SLICE_code_body[218] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x76, 0xf8, |
|
0x4d, 0x8b, 0x67, 0xe8, 0x49, 0x8b, 0x7f, 0xf0, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, |
|
0xc0, 0x74, 0x2e, 0x48, 0x89, 0xc5, 0x4c, 0x89, |
|
0xe7, 0x48, 0x89, 0xc6, 0xff, 0x15, 0x00, 0x00, |
|
0x00, 0x00, 0x49, 0x89, 0xc5, 0x48, 0x8b, 0x45, |
|
0x00, 0x85, 0xc0, 0x78, 0x17, 0x48, 0xff, 0xc8, |
|
0x48, 0x89, 0x45, 0x00, 0x75, 0x0e, 0x48, 0x89, |
|
0xef, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, |
|
0x03, 0x45, 0x31, 0xed, 0x49, 0x8b, 0x04, 0x24, |
|
0x85, 0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x04, 0x24, 0x74, 0x2d, 0x49, 0x8d, 0x47, |
|
0xe8, 0x4d, 0x85, 0xed, 0x74, 0x36, 0x49, 0x83, |
|
0xc7, 0xf0, 0x4c, 0x89, 0x28, 0x48, 0x89, 0xdf, |
|
0x4c, 0x89, 0xfe, 0x4c, 0x89, 0xf2, 0x48, 0x83, |
|
0xc4, 0x08, 0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, |
|
0x5e, 0x41, 0x5f, 0x5d, 0xff, 0x25, 0x00, 0x00, |
|
0x00, 0x00, 0x4c, 0x89, 0xe7, 0xff, 0x15, 0x00, |
|
0x00, 0x00, 0x00, 0x49, 0x8d, 0x47, 0xe8, 0x4d, |
|
0x85, 0xed, 0x75, 0xca, 0x48, 0x8b, 0x0d, 0x00, |
|
0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, 0x28, 0x01, |
|
0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, 0x83, 0xc0, |
|
0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, 0x43, 0x40, |
|
0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xc3, |
|
}; |
|
static const Hole _BINARY_SLICE_code_holes[7] = { |
|
{0x22, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|
{0x36, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x4}, |
|
{0x53, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0x96, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0x14}, |
|
{0x9f, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, 0xc}, |
|
{0xaf, HoleKind_R_X86_64_REX_GOTPCRELX, HoleValue_DATA, NULL, 0x1c}, |
|
}; |
|
// 0: |
|
// 0: &_PyBuildSlice_ConsumeRefs+0x0 |
|
// 8: &PyObject_GetItem+0x0 |
|
// 10: &_Py_Dealloc+0x0 |
|
// 18: CONTINUE |
|
// 20: EXECUTOR |
|
static const unsigned char _BINARY_SLICE_data_body[41] = { |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
}; |
|
static const Hole _BINARY_SLICE_data_holes[6] = { |
|
{0x0, HoleKind_R_X86_64_64, HoleValue_ZERO, &_PyBuildSlice_ConsumeRefs, 0x0}, |
|
{0x8, HoleKind_R_X86_64_64, HoleValue_ZERO, &PyObject_GetItem, 0x0}, |
|
{0x10, HoleKind_R_X86_64_64, HoleValue_ZERO, &_Py_Dealloc, 0x0}, |
|
{0x18, HoleKind_R_X86_64_64, HoleValue_CONTINUE, NULL, 0x0}, |
|
{0x20, HoleKind_R_X86_64_64, HoleValue_EXECUTOR, NULL, 0x0}, |
|
}; |
|
|
|
// _BINARY_SUBSCR |
|
// |
|
// /tmp/tmp2mfmnab2/_BINARY_SUBSCR.o: file format elf64-x86-64 |
|
// |
|
// Disassembly of section .text: |
|
// |
|
// 0000000000000000 <_JIT_ENTRY>: |
|
// 0: 55 pushq %rbp |
|
// 1: 41 57 pushq %r15 |
|
// 3: 41 56 pushq %r14 |
|
// 5: 41 55 pushq %r13 |
|
// 7: 41 54 pushq %r12 |
|
// 9: 53 pushq %rbx |
|
// a: 50 pushq %rax |
|
// b: 49 89 d6 movq %rdx, %r14 |
|
// e: 49 89 f7 movq %rsi, %r15 |
|
// 11: 48 89 fb movq %rdi, %rbx |
|
// 14: 48 8b 6e f0 movq -0x10(%rsi), %rbp |
|
// 18: 4c 8b 6e f8 movq -0x8(%rsi), %r13 |
|
// 1c: 48 89 ef movq %rbp, %rdi |
|
// 1f: 4c 89 ee movq %r13, %rsi |
|
// 22: ff 15 00 00 00 00 callq *(%rip) # 0x28 <_JIT_ENTRY+0x28> |
|
// 0000000000000024: R_X86_64_GOTPCRELX PyObject_GetItem-0x4 |
|
// 28: 49 89 c4 movq %rax, %r12 |
|
// 2b: 48 8b 45 00 movq (%rbp), %rax |
|
// 2f: 85 c0 testl %eax, %eax |
|
// 31: 78 09 js 0x3c <_JIT_ENTRY+0x3c> |
|
// 33: 48 ff c8 decq %rax |
|
// 36: 48 89 45 00 movq %rax, (%rbp) |
|
// 3a: 74 1c je 0x58 <_JIT_ENTRY+0x58> |
|
// 3c: 49 8b 45 00 movq (%r13), %rax |
|
// 40: 85 c0 testl %eax, %eax |
|
// 42: 78 25 js 0x69 <_JIT_ENTRY+0x69> |
|
// 44: 48 ff c8 decq %rax |
|
// 47: 49 89 45 00 movq %rax, (%r13) |
|
// 4b: 75 1c jne 0x69 <_JIT_ENTRY+0x69> |
|
// 4d: 4c 89 ef movq %r13, %rdi |
|
// 50: ff 15 00 00 00 00 callq *(%rip) # 0x56 <_JIT_ENTRY+0x56> |
|
// 0000000000000052: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 56: eb 11 jmp 0x69 <_JIT_ENTRY+0x69> |
|
// 58: 48 89 ef movq %rbp, %rdi |
|
// 5b: ff 15 00 00 00 00 callq *(%rip) # 0x61 <_JIT_ENTRY+0x61> |
|
// 000000000000005d: R_X86_64_GOTPCRELX _Py_Dealloc-0x4 |
|
// 61: 49 8b 45 00 movq (%r13), %rax |
|
// 65: 85 c0 testl %eax, %eax |
|
// 67: 79 db jns 0x44 <_JIT_ENTRY+0x44> |
|
// 69: 49 8d 47 f0 leaq -0x10(%r15), %rax |
|
// 6d: 4d 85 e4 testq %r12, %r12 |
|
// 70: 74 24 je 0x96 <_JIT_ENTRY+0x96> |
|
// 72: 49 83 c7 f8 addq $-0x8, %r15 |
|
// 76: 4c 89 20 movq %r12, (%rax) |
|
// 79: 48 89 df movq %rbx, %rdi |
|
// 7c: 4c 89 fe movq %r15, %rsi |
|
// 7f: 4c 89 f2 movq %r14, %rdx |
|
// 82: 48 83 c4 08 addq $0x8, %rsp |
|
// 86: 5b popq %rbx |
|
// 87: 41 5c popq %r12 |
|
// 89: 41 5d popq %r13 |
|
// 8b: 41 5e popq %r14 |
|
// 8d: 41 5f popq %r15 |
|
// 8f: 5d popq %rbp |
|
// 90: ff 25 00 00 00 00 jmpq *(%rip) # 0x96 <_JIT_ENTRY+0x96> |
|
// 0000000000000092: R_X86_64_GOTPCRELX _JIT_CONTINUE-0x4 |
|
// 96: 48 8b 0d 00 00 00 00 movq (%rip), %rcx # 0x9d <_JIT_ENTRY+0x9d> |
|
// 0000000000000099: R_X86_64_REX_GOTPCRELX _JIT_EXECUTOR-0x4 |
|
// 9d: 49 89 8e 28 01 00 00 movq %rcx, 0x128(%r14) |
|
// a4: 48 29 d8 subq %rbx, %rax |
|
// a7: 48 83 c0 b8 addq $-0x48, %rax |
|
// ab: 48 c1 e8 03 shrq $0x3, %rax |
|
// af: 89 43 40 movl %eax, 0x40(%rbx) |
|
// b2: 31 c0 xorl %eax, %eax |
|
// b4: 48 83 c4 08 addq $0x8, %rsp |
|
// b8: 5b popq %rbx |
|
// b9: 41 5c popq %r12 |
|
// bb: 41 5d popq %r13 |
|
// bd: 41 5e popq %r14 |
|
// bf: 41 5f popq %r15 |
|
// c1: 5d popq %rbp |
|
// c2: c3 retq |
|
// c3: |
|
static const unsigned char _BINARY_SUBSCR_code_body[196] = { |
|
0x55, 0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, |
|
0x54, 0x53, 0x50, 0x49, 0x89, 0xd6, 0x49, 0x89, |
|
0xf7, 0x48, 0x89, 0xfb, 0x48, 0x8b, 0x6e, 0xf0, |
|
0x4c, 0x8b, 0x6e, 0xf8, 0x48, 0x89, 0xef, 0x4c, |
|
0x89, 0xee, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, |
|
0x49, 0x89, 0xc4, 0x48, 0x8b, 0x45, 0x00, 0x85, |
|
0xc0, 0x78, 0x09, 0x48, 0xff, 0xc8, 0x48, 0x89, |
|
0x45, 0x00, 0x74, 0x1c, 0x49, 0x8b, 0x45, 0x00, |
|
0x85, 0xc0, 0x78, 0x25, 0x48, 0xff, 0xc8, 0x49, |
|
0x89, 0x45, 0x00, 0x75, 0x1c, 0x4c, 0x89, 0xef, |
|
0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, |
|
0x48, 0x89, 0xef, 0xff, 0x15, 0x00, 0x00, 0x00, |
|
0x00, 0x49, 0x8b, 0x45, 0x00, 0x85, 0xc0, 0x79, |
|
0xdb, 0x49, 0x8d, 0x47, 0xf0, 0x4d, 0x85, 0xe4, |
|
0x74, 0x24, 0x49, 0x83, 0xc7, 0xf8, 0x4c, 0x89, |
|
0x20, 0x48, 0x89, 0xdf, 0x4c, 0x89, 0xfe, 0x4c, |
|
0x89, 0xf2, 0x48, 0x83, 0xc4, 0x08, 0x5b, 0x41, |
|
0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, 0x5f, 0x5d, |
|
0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, |
|
0x0d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x89, 0x8e, |
|
0x28, 0x01, 0x00, 0x00, 0x48, 0x29, 0xd8, 0x48, |
|
0x83, 0xc0, 0xb8, 0x48, 0xc1, 0xe8, 0x03, 0x89, |
|
0x43, 0x40, 0x31, 0xc0, 0x48, 0x83, 0xc4, 0x08, |
|
0x5b, 0x41, 0x5c, 0x41, 0x5d, 0x41, 0x5e, 0x41, |
|
0x5f, 0x5d, 0xc3, |
|
}; |
|
static const Hole _BINARY_SUBSCR_code_holes[6] = { |
|
{0x24, HoleKind_R_X86_64_GOTPCRELX, HoleValue_DATA, NULL, -0x4}, |
|