| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # A function whose prologue and epilogue are described perfectly. eh_frame | ||
| # augmentation machinery should detect that no augmentation is needed and use | ||
| # eh_frame directly. | ||
|
|
||
| .text | ||
| .globl foo | ||
| foo: | ||
| .cfi_startproc | ||
| pushq %rax | ||
| .cfi_def_cfa_offset 16 | ||
| int3 | ||
| pop %rcx | ||
| .cfi_def_cfa_offset 8 | ||
| retq | ||
| .cfi_endproc | ||
|
|
||
| .globl asm_main | ||
| asm_main: | ||
| .cfi_startproc | ||
| callq foo | ||
| retq | ||
| .cfi_endproc |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Test handing of dwarf expressions specifying the location of registers, if | ||
| # those expressions refer to the frame's CFA value. | ||
|
|
||
| # UNSUPPORTED: system-windows | ||
| # REQUIRES: target-x86_64, native | ||
|
|
||
| # RUN: %clang_host %p/Inputs/call-asm.c %p/Inputs/eh-frame-augment-noop.s -o %t | ||
| # RUN: %lldb %t -s %s -o exit | FileCheck %s | ||
|
|
||
| process launch | ||
| # CHECK: stop reason | ||
|
|
||
| thread backtrace | ||
| # CHECK: frame #0: {{.*}}`foo + 2 | ||
| # CHECK: frame #1: {{.*}}`asm_main + 5 | ||
|
|
||
| target modules show-unwind -n foo | ||
| # CHECK: Asynchronous (not restricted to call-sites) UnwindPlan is 'eh_frame CFI' | ||
| # CHECK: eh_frame augmented UnwindPlan: | ||
| # CHECK: row[0]: 0: CFA=rsp +8 => rip=[CFA-8] | ||
| # CHECK-NEXT: row[1]: 1: CFA=rsp+16 => rip=[CFA-8] | ||
| # CHECK-NEXT: row[2]: 3: CFA=rsp +8 => rip=[CFA-8] |