Initial check-in of "fancy" inlined stepping. Doesn't do anything useful unless you switch LLDB_FANCY_INLINED_STEPPING to true. With that
on, basic inlined stepping works, including step-over of inlined functions. But for some as yet mysterious reason i386 debugging gets an
assert and dies immediately. So for now its off.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@163044 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/Thread.cpp b/source/Target/Thread.cpp
index 7ff006c..9de1691 100644
--- a/source/Target/Thread.cpp
+++ b/source/Target/Thread.cpp
@@ -349,15 +349,22 @@
// plans in case a plan needs to do any special business before it runs.
ThreadPlan *plan_ptr = GetCurrentPlan();
- plan_ptr->WillResume(resume_state, true);
+ bool need_to_resume = plan_ptr->WillResume(resume_state, true);
while ((plan_ptr = GetPreviousPlan(plan_ptr)) != NULL)
{
plan_ptr->WillResume (resume_state, false);
}
- m_actual_stop_info_sp.reset();
- return true;
+ // If the WillResume for the plan says we are faking a resume, then it will have set an appropriate stop info.
+ // In that case, don't reset it here.
+
+ if (need_to_resume)
+ {
+ m_actual_stop_info_sp.reset();
+ }
+
+ return need_to_resume;
}
void
@@ -409,7 +416,10 @@
GetRegisterContext()->GetPC());
return false;
}
-
+
+ // Adjust the stack frame's current inlined depth if it is needed.
+ GetStackFrameList()->CalculateCurrentInlinedDepth();
+
if (log)
{
log->Printf ("Thread::%s for tid = 0x%4.4llx, pc = 0x%16.16llx",