summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2016-02-03 19:45:31 +0000
committerJim Ingham <jingham@apple.com>2016-02-03 19:45:31 +0000
commit22eeb7227c9fcd4d6b5f6cddaacadece580002f4 (patch)
treeb555b94e9f60909ea745d71b6993685c064aba62
parent45b6159ed34dd4ce6e58ac67d66044b057d9001f (diff)
downloadbcm5719-llvm-22eeb7227c9fcd4d6b5f6cddaacadece580002f4.tar.gz
bcm5719-llvm-22eeb7227c9fcd4d6b5f6cddaacadece580002f4.zip
The SetStopInfo from a Mach Exception was setting the stop
reason to None when we stop due to a trace, then noticed that we were on a breakpoint that was not valid for the current thread. That should actually have set it back to trace. This was pr26441 (<rdar://problem/24470203>) llvm-svn: 259684
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py1
-rw-r--r--lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp2
-rw-r--r--lldb/source/Target/ThreadPlanStepInstruction.cpp3
3 files changed, 4 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py
index 8aa1ee75ef0..d2bd9f2812d 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py
@@ -79,7 +79,6 @@ class ConsecutiveBreakpointsTestCase(TestBase):
self.finish_test()
@no_debug_info_test
- @expectedFailureDarwin(bugnumber="llvm.org/pr26441")
def test_single_step_thread_specific(self):
"""Test that single step stops, even though the second breakpoint is not valid."""
self.prepare_test()
diff --git a/lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp b/lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp
index 3bf766e875c..7c0487b1d43 100644
--- a/lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp
+++ b/lldb/source/Plugins/Process/Utility/StopInfoMachException.cpp
@@ -507,6 +507,8 @@ StopInfoMachException::CreateStopReasonWithMachException
// report the breakpoint regardless of the thread.
if (bp_site_sp->ValidForThisThread (&thread) || thread.GetProcess()->GetOperatingSystem () != NULL)
return StopInfo::CreateStopReasonWithBreakpointSiteID (thread, bp_site_sp->GetID());
+ else if (is_trace_if_actual_breakpoint_missing)
+ return StopInfo::CreateStopReasonToTrace (thread);
else
return StopInfoSP();
}
diff --git a/lldb/source/Target/ThreadPlanStepInstruction.cpp b/lldb/source/Target/ThreadPlanStepInstruction.cpp
index 9d7d52167ff..ccfd52e00e1 100644
--- a/lldb/source/Target/ThreadPlanStepInstruction.cpp
+++ b/lldb/source/Target/ThreadPlanStepInstruction.cpp
@@ -239,7 +239,8 @@ ThreadPlanStepInstruction::ShouldStop (Event *event_ptr)
}
else
{
- if (m_thread.GetRegisterContext()->GetPC(0) != m_instruction_addr)
+ lldb::addr_t pc_addr = m_thread.GetRegisterContext()->GetPC(0);
+ if (pc_addr != m_instruction_addr)
{
if (--m_iteration_count <= 0)
{
OpenPOWER on IntegriCloud