diff options
author | Jim Ingham <jingham@apple.com> | 2012-09-05 21:12:49 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2012-09-05 21:12:49 +0000 |
commit | bad39e47cdaec2f6c8c9dfc3684e7b15fbdadc00 (patch) | |
tree | e65008288a95f6ff2af9b88d19fbdde20494be15 /lldb/source/Target/Thread.cpp | |
parent | 994f4040f506625902f9f381474686002fb626c5 (diff) | |
download | bcm5719-llvm-bad39e47cdaec2f6c8c9dfc3684e7b15fbdadc00.tar.gz bcm5719-llvm-bad39e47cdaec2f6c8c9dfc3684e7b15fbdadc00.zip |
Move calculating the CurrentInlinedDepth to AFTER the synchronous breakpoint callback gets a chance to run.
If the stopped event comes in with the Restarted bit set, don't try to hand that to the plans, but just return ShouldStop = false. There's nothing useful the plans can do, since the target is already running.
llvm-svn: 163244
Diffstat (limited to 'lldb/source/Target/Thread.cpp')
-rw-r--r-- | lldb/source/Target/Thread.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 9de1691cd47..2d6c00cf1bb 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -417,9 +417,6 @@ Thread::ShouldStop (Event* event_ptr) 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", @@ -447,6 +444,13 @@ Thread::ShouldStop (Event* event_ptr) return false; } + // If we've already been restarted, don't query the plans since the state they would examine is not current. + if (Process::ProcessEventData::GetRestartedFromEvent(event_ptr)) + return false; + + // Before the plans see the state of the world, calculate the current inlined depth. + GetStackFrameList()->CalculateCurrentInlinedDepth(); + // If the base plan doesn't understand why we stopped, then we have to find a plan that does. // If that plan is still working, then we don't need to do any more work. If the plan that explains // the stop is done, then we should pop all the plans below it, and pop it, and then let the plans above it decide |