1// This is reduced test case for BOLT containing an internal call based on 2// GetCoreDump (from google core dumper). 3 4 .text 5 .globl getCallback 6 .type getCallback, %function 7getCallback: 8 .cfi_startproc 9 pushq %rbp 10 movq %rsp, %rbp 11 pushq %r12 12 pushq %rbx 13 subq $288, %rsp 14 callq .Lnext_instr 15.Lnext_instr: 16 popq %rax 17 addq $17, %rax 18 addq $288, %rsp 19 popq %rbx 20 popq %r12 21 popq %rbp 22 retq 23.Lweird_callback: 24 mov $0xDEADBEEF, %rax 25 retq 26 .cfi_endproc 27 28 29// This one is inspired by: 30// 31// e8 11 00 00 00 callq 17 <ListerThread+0x569> 32// 0f 1f 84 00 00 00 00 00 nopl (%rax,%rax) 33// 48 c7 c0 0f 00 00 00 movq $15, %rax 34// 0f 05 syscall 35// 58 popq %rax 36// 37 .globl getCallback2 38 .type getCallback2, %function 39getCallback2: 40 .cfi_startproc 41 pushq %rbp 42 movq %rsp, %rbp 43 pushq %r12 44 pushq %rbx 45 subq $288, %rsp 46 movq $3, %rbx 47.Lheader: 48 cmpq $0, %rbx 49 jz .Lunwind 50 callq .Lbb 51 nopl (%rax, %rax) 52 mov $0xDEADBEEF, %rax 53 retq 54.Lunwind: 55 addq $288, %rsp 56 popq %rbx 57 popq %r12 58 jmp .Lend 59.Lbb: 60 popq %rax 61 add $4, %rax 62 decq %rbx 63 jmp .Lheader 64.Lend: 65 popq %rbp 66 retq 67 .cfi_endproc 68 69// This case emulates pseudo-inlined functions found in Intel MKL library. 70 .globl getCallback3 71 .type getCallback3, %function 72getCallback3: 73 .cfi_startproc 74 pushq %rbp 75 movq %rsp, %rbp 76 callq getCallback_inlined 77 jmp .L2end 78 nop 79getCallback_inlined: 80 pushq %rbp 81 movq %rsp, %rbp 82 pushq %r12 83 pushq %rbx 84 subq $288, %rsp 85 callq .L2next_instr 86.L2next_instr: 87 popq %rax 88 addq $17, %rax 89 addq $288, %rsp 90 popq %rbx 91 popq %r12 92 popq %rbp 93 retq 94.L2weird_callback: 95 mov $0xDEADBEEF, %rax 96 retq 97 98.L2end: 99 popq %rbp 100 retq 101 .cfi_endproc 102