.text | |
.type bar, @function | |
bar: | |
.cfi_startproc | |
leal (%edi, %edi), %eax | |
ret | |
.cfi_endproc | |
.size bar, .-bar | |
.type foo, @function | |
foo: | |
nop # Make the FDE entry start one byte later than the actual function. | |
.cfi_startproc | |
.cfi_register %rip, %r13 | |
call bar | |
addl $1, %eax | |
jmp *%r13 # Return | |
.cfi_endproc | |
.size foo, .-foo | |
.globl main | |
.type main, @function | |
main: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
movq %rsp, %rbp | |
.cfi_def_cfa_register 6 | |
movl $47, %edi | |
# Non-standard calling convention. Put return address in r13. | |
pushq %r13 | |
leaq 1f(%rip), %r13 | |
jmp foo # call | |
1: | |
popq %r13 | |
popq %rbp | |
.cfi_def_cfa 7, 8 | |
ret | |
.cfi_endproc | |
.size main, .-main |