// This is reduced test case for BOLT containing an internal call based on // GetCoreDump (from google core dumper). .text .globl getCallback .type getCallback, %function getCallback: .cfi_startproc pushq %rbp movq %rsp, %rbp pushq %r12 pushq %rbx subq $288, %rsp callq .Lnext_instr .Lnext_instr: popq %rax addq $17, %rax addq $288, %rsp popq %rbx popq %r12 popq %rbp retq .Lweird_callback: mov $0xDEADBEEF, %rax retq .cfi_endproc // This one is inspired by: // // e8 11 00 00 00 callq 17 // 0f 1f 84 00 00 00 00 00 nopl (%rax,%rax) // 48 c7 c0 0f 00 00 00 movq $15, %rax // 0f 05 syscall // 58 popq %rax // .globl getCallback2 .type getCallback2, %function getCallback2: .cfi_startproc pushq %rbp movq %rsp, %rbp pushq %r12 pushq %rbx subq $288, %rsp movq $3, %rbx .Lheader: cmpq $0, %rbx jz .Lunwind callq .Lbb nopl (%rax, %rax) mov $0xDEADBEEF, %rax retq .Lunwind: addq $288, %rsp popq %rbx popq %r12 jmp .Lend .Lbb: popq %rax add $4, %rax decq %rbx jmp .Lheader .Lend: popq %rbp retq .cfi_endproc // This case emulates pseudo-inlined functions found in Intel MKL library. .globl getCallback3 .type getCallback3, %function getCallback3: .cfi_startproc pushq %rbp movq %rsp, %rbp callq getCallback_inlined jmp .L2end nop getCallback_inlined: pushq %rbp movq %rsp, %rbp pushq %r12 pushq %rbx subq $288, %rsp callq .L2next_instr .L2next_instr: popq %rax addq $17, %rax addq $288, %rsp popq %rbx popq %r12 popq %rbp retq .L2weird_callback: mov $0xDEADBEEF, %rax retq .L2end: popq %rbp retq .cfi_endproc