summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/ThreadPlanStepRange.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2012-09-10 23:42:44 +0000
committerJim Ingham <jingham@apple.com>2012-09-10 23:42:44 +0000
commit927bfa3fd9416f9059a352ff7f1b5725c390f1d0 (patch)
treec86f839c645ecb2fcfc0863401c63bd24b179ed3 /lldb/source/Target/ThreadPlanStepRange.cpp
parent4f9c4608748ab0797fbbe51e6123dc0f07e8f0b0 (diff)
downloadbcm5719-llvm-927bfa3fd9416f9059a352ff7f1b5725c390f1d0.tar.gz
bcm5719-llvm-927bfa3fd9416f9059a352ff7f1b5725c390f1d0.zip
Shortcut ThreadPlanStepRange::MischiefManaged - if we have pushed new plans and they are not done, then we aren't done either.
<rdar://problem/12259124> llvm-svn: 163572
Diffstat (limited to 'lldb/source/Target/ThreadPlanStepRange.cpp')
-rw-r--r--lldb/source/Target/ThreadPlanStepRange.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/lldb/source/Target/ThreadPlanStepRange.cpp b/lldb/source/Target/ThreadPlanStepRange.cpp
index 14ed8b66075..73db0440087 100644
--- a/lldb/source/Target/ThreadPlanStepRange.cpp
+++ b/lldb/source/Target/ThreadPlanStepRange.cpp
@@ -146,9 +146,12 @@ ThreadPlanStepRange::InRange ()
if (log)
{
StreamString s;
- m_addr_context.line_entry.range.Dump (&s,
- m_thread.CalculateTarget().get(),
- Address::DumpStyleLoadAddress);
+ m_addr_context.line_entry.Dump (&s,
+ m_thread.CalculateTarget().get(),
+ true,
+ Address::DumpStyleLoadAddress,
+ Address::DumpStyleLoadAddress,
+ true);
log->Printf ("Step range plan stepped to another range of same line: %s", s.GetData());
}
@@ -167,9 +170,12 @@ ThreadPlanStepRange::InRange ()
if (log)
{
StreamString s;
- m_addr_context.line_entry.range.Dump (&s,
- m_thread.CalculateTarget().get(),
- Address::DumpStyleLoadAddress);
+ m_addr_context.line_entry.Dump (&s,
+ m_thread.CalculateTarget().get(),
+ true,
+ Address::DumpStyleLoadAddress,
+ Address::DumpStyleLoadAddress,
+ true);
log->Printf ("Step range plan stepped to the middle of new line(%d): %s, continuing to clear this line.",
new_context.line_entry.line,
@@ -367,6 +373,14 @@ ThreadPlanStepRange::GetPlanRunState ()
bool
ThreadPlanStepRange::MischiefManaged ()
{
+ // If we have pushed some plans between ShouldStop & MischiefManaged, then we're not done...
+ // I do this check first because we might have stepped somewhere that will fool InRange into
+ // thinking it needs to step past the end of that line. This happens, for instance, when stepping
+ // over inlined code that is in the middle of the current line.
+
+ if (!m_no_more_plans)
+ return false;
+
bool done = true;
if (!IsPlanComplete())
{
OpenPOWER on IntegriCloud