[Lldb-commits] [lldb] r141349 - /lldb/trunk/source/Target/StackFrameList.cpp

Greg Clayton gclayton at apple.com
Thu Oct 6 18:52:19 PDT 2011

Author: gclayton
Date: Thu Oct  6 20:52:19 2011
New Revision: 141349

URL: http://llvm.org/viewvc/llvm-project?rev=141349&view=rev

Fixed the root cause of what was causing an assertion to fire during single stepping. We had an issue with the inlined stack frames where when we had inlined frames that were not in the first concrete frame where we passed the wrong PC down. We needed to decrement the PC by one for these frames to make
sure we are using the same address that did the symbol context lookup.


Modified: lldb/trunk/source/Target/StackFrameList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/StackFrameList.cpp?rev=141349&r1=141348&r2=141349&view=diff
--- lldb/trunk/source/Target/StackFrameList.cpp (original)
+++ lldb/trunk/source/Target/StackFrameList.cpp Thu Oct  6 20:52:19 2011
@@ -116,7 +116,15 @@
                 Block *unwind_block = unwind_sc.block;
                 if (unwind_block)
-                    Address curr_frame_address = unwind_frame_sp->GetFrameCodeAddress();
+                    Address curr_frame_address (unwind_frame_sp->GetFrameCodeAddress());
+                    // Be sure to adjust the frame address to match the address
+                    // that was used to lookup the symbol context above. If we are
+                    // in the first concrete frame, then we lookup using the current
+                    // address, else we decrement the address by one to get the correct
+                    // location.
+                    if (idx > 0)
+                        curr_frame_address.Slide(-1);
                     SymbolContext next_frame_sc;
                     Address next_frame_address;

More information about the lldb-commits mailing list