summaryrefslogtreecommitdiffstats
path: root/lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s')
-rw-r--r--lldb/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s39
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
OpenPOWER on IntegriCloud