forked from OSchip/llvm-project
43 lines
1.0 KiB
ArmAsm
43 lines
1.0 KiB
ArmAsm
.text
|
|
.globl bar
|
|
bar:
|
|
.cfi_startproc
|
|
leal (%edi, %edi), %eax
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.globl asm_main
|
|
asm_main:
|
|
.cfi_startproc
|
|
pushq %rbp
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset %rbp, -16
|
|
movq %rsp, %rbp
|
|
.cfi_def_cfa_register %rbp
|
|
movl $47, %edi
|
|
|
|
# install tramp as return address
|
|
# (similar to signal return trampolines on some platforms)
|
|
leaq tramp(%rip), %rax
|
|
pushq %rax
|
|
jmp bar # call, with return address pointing to tramp
|
|
|
|
popq %rbp
|
|
.cfi_def_cfa %rsp, 8
|
|
ret
|
|
.cfi_endproc
|
|
|
|
.globl tramp
|
|
tramp:
|
|
.cfi_startproc
|
|
.cfi_signal_frame
|
|
# Emit cfi to line up with the frame created by asm_main
|
|
.cfi_def_cfa_offset 16
|
|
.cfi_offset %rbp, -16
|
|
.cfi_def_cfa_register %rbp
|
|
# copy asm_main's epilog to clean up the frame
|
|
popq %rbp
|
|
.cfi_def_cfa %rsp, 8
|
|
ret
|
|
.cfi_endproc
|