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
This commit is contained in:
Jim Ingham 2016-02-03 19:45:31 +00:00
parent 45b6159ed3
commit 22eeb7227c
3 changed files with 4 additions and 2 deletions

View File

@ -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()

View File

@ -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();
}

View File

@ -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)
{