diff options
author | Jim Ingham <jingham@apple.com> | 2012-09-01 01:02:41 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2012-09-01 01:02:41 +0000 |
commit | 513c6bb88cb8e9174465ec987498b14d345ce3a0 (patch) | |
tree | 3b53690275d3301cff8c5cc2852354a58b830b34 /lldb/source/Target/Thread.cpp | |
parent | 4c05410f8f7d312fd45d8f156015cc2c13f5c977 (diff) | |
download | bcm5719-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.cpp | 18 |
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", |