102 lines · plain
1// This is reduced test case for BOLT containing an internal call based on2// GetCoreDump (from google core dumper).3 4 .text5 .globl getCallback6 .type getCallback, %function7getCallback:8 .cfi_startproc9 pushq %rbp10 movq %rsp, %rbp11 pushq %r1212 pushq %rbx13 subq $288, %rsp14 callq .Lnext_instr15.Lnext_instr:16 popq %rax17 addq $17, %rax18 addq $288, %rsp19 popq %rbx20 popq %r1221 popq %rbp22 retq23.Lweird_callback:24 mov $0xDEADBEEF, %rax25 retq26 .cfi_endproc27 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, %rax34// 0f 05 syscall35// 58 popq %rax36//37 .globl getCallback238 .type getCallback2, %function39getCallback2:40 .cfi_startproc41 pushq %rbp42 movq %rsp, %rbp43 pushq %r1244 pushq %rbx45 subq $288, %rsp46 movq $3, %rbx47.Lheader:48 cmpq $0, %rbx49 jz .Lunwind50 callq .Lbb51 nopl (%rax, %rax)52 mov $0xDEADBEEF, %rax53 retq54.Lunwind:55 addq $288, %rsp56 popq %rbx57 popq %r1258 jmp .Lend59.Lbb:60 popq %rax61 add $4, %rax62 decq %rbx63 jmp .Lheader64.Lend:65 popq %rbp66 retq67 .cfi_endproc68 69// This case emulates pseudo-inlined functions found in Intel MKL library.70 .globl getCallback371 .type getCallback3, %function72getCallback3:73 .cfi_startproc74 pushq %rbp75 movq %rsp, %rbp76 callq getCallback_inlined77 jmp .L2end78 nop79getCallback_inlined:80 pushq %rbp81 movq %rsp, %rbp82 pushq %r1283 pushq %rbx84 subq $288, %rsp85 callq .L2next_instr86.L2next_instr:87 popq %rax88 addq $17, %rax89 addq $288, %rsp90 popq %rbx91 popq %r1292 popq %rbp93 retq94.L2weird_callback:95 mov $0xDEADBEEF, %rax96 retq97 98.L2end:99 popq %rbp100 retq101 .cfi_endproc102