52 lines · plain
1 .text2 3 .type bar, @function4bar:5 .cfi_startproc6 leal (%edi, %edi), %eax7 ret8 .cfi_endproc9 .size bar, .-bar10 11 .type foo, @function12foo:13 # Make the FDE entry start 16 bytes later than the actual function. The14 # size is chosen such that it is larger than the size of the FDE entry.15 # This allows us to test that we're using the correct offset for16 # unwinding (we'll stop 21 bytes into the function, but only 5 bytes17 # into the FDE).18 .nops 1619 .cfi_startproc20 .cfi_register %rip, %r1321 call bar22 addl $1, %eax23 movq %r13, %r1424 .cfi_register %rip, %r1425 movq $0, %r1326 jmp *%r14 # Return27 .cfi_endproc28 .size foo, .-foo29 30 .globl main31 .type main, @function32main:33 .cfi_startproc34 pushq %rbp35 .cfi_def_cfa_offset 1636 .cfi_offset 6, -1637 movq %rsp, %rbp38 .cfi_def_cfa_register 639 movl $47, %edi40 41 # Non-standard calling convention. Put return address in r13.42 pushq %r1343 leaq 1f(%rip), %r1344 jmp foo # call451:46 popq %r1347 popq %rbp48 .cfi_def_cfa 7, 849 ret50 .cfi_endproc51 .size main, .-main52