[Lldb-commits] [PATCH] D82378: [lldb/Unwind] Use eh_frame plan directly when it doesn't need to be augmented

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Jun 26 03:13:52 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG5ed8765e2f00: [lldb/Unwind] Use eh_frame plan directly when it doesn't need to be augmented (authored by labath).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82378/new/

https://reviews.llvm.org/D82378

Files:
  lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
  lldb/test/Shell/Unwind/Inputs/eh-frame-augment-noop.s
  lldb/test/Shell/Unwind/eh-frame-augment-noop.test


Index: lldb/test/Shell/Unwind/eh-frame-augment-noop.test
===================================================================
--- /dev/null
+++ 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]
Index: lldb/test/Shell/Unwind/Inputs/eh-frame-augment-noop.s
===================================================================
--- /dev/null
+++ 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
Index: lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
===================================================================
--- lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
+++ 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;
           }
         }
       }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82378.273639.patch
Type: text/x-patch
Size: 2234 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200626/3f365ed2/attachment.bin>


More information about the lldb-commits mailing list