forked from OSchip/llvm-project
102 lines
1.6 KiB
ArmAsm
102 lines
1.6 KiB
ArmAsm
// 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 <ListerThread+0x569>
|
|
// 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
|