| .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 |