summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Thread.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-09-01 01:02:41 +0000
committerJim Ingham <jingham@apple.com>2012-09-01 01:02:41 +0000
commit513c6bb88cb8e9174465ec987498b14d345ce3a0 (patch)
tree3b53690275d3301cff8c5cc2852354a58b830b34 /lldb/source/Target/Thread.cpp
parent4c05410f8f7d312fd45d8f156015cc2c13f5c977 (diff)
downloadbcm5719-llvm-513c6bb88cb8e9174465ec987498b14d345ce3a0.tar.gz
bcm5719-llvm-513c6bb88cb8e9174465ec987498b14d345ce3a0.zip
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. llvm-svn: 163044
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
-rw-r--r--lldb/source/Target/Thread.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp
index 7ff006c6bce..9de1691cd47 100644
--- a/lldb/source/Target/Thread.cpp
+++ b/lldb/source/Target/Thread.cpp
@@ -349,15 +349,22 @@ Thread::WillResume (StateType resume_state)
// 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 @@ Thread::ShouldStop (Event* event_ptr)
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",
OpenPOWER on IntegriCloud