diff --git a/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp b/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp --- a/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp +++ b/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp @@ -141,7 +141,7 @@ // and we don't need to modify it at all. if (first_row_pc_loc.GetOffset() == -wordsize) { - do_augment_unwindplan = false; + return true; } } } diff --git a/lldb/test/Shell/Unwind/Inputs/eh-frame-augment-noop.s b/lldb/test/Shell/Unwind/Inputs/eh-frame-augment-noop.s new file mode 100644 --- /dev/null +++ b/lldb/test/Shell/Unwind/Inputs/eh-frame-augment-noop.s @@ -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 diff --git a/lldb/test/Shell/Unwind/eh-frame-augment-noop.test b/lldb/test/Shell/Unwind/eh-frame-augment-noop.test new file mode 100644 --- /dev/null +++ b/lldb/test/Shell/Unwind/eh-frame-augment-noop.test @@ -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]