diff options
Diffstat (limited to 'lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s')
-rw-r--r-- | lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s b/lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s new file mode 100644 index 00000000000..d83551483dd --- /dev/null +++ b/lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s @@ -0,0 +1,39 @@ + .text + .globl bar +bar: + .cfi_startproc + leal (%edi, %edi), %eax + ret + .cfi_endproc + + .globl foo +foo: + .cfi_startproc + .cfi_escape 0x16, 0x10, 0x06, 0x38, 0x1c, 0x06, 0x08, 0x47, 0x1c + call bar + addl $1, %eax + popq %rdi + subq $0x47, %rdi + jmp *%rdi # Return + .cfi_endproc + + .globl asm_main +asm_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. The real return address must be + # decremented by 0x47. + leaq 0x47+1f(%rip), %rax + pushq %rax + jmp foo # call +1: + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc |