[Lldb-commits] [lldb] r259684 - The SetStopInfo from a Mach Exception was setting the stop

Jim Ingham via lldb-commits lldb-commits at lists.llvm.org
Wed Feb 3 11:45:32 PST 2016


Author: jingham
Date: Wed Feb  3 13:45:31 2016
New Revision: 259684

URL: http://llvm.org/viewvc/llvm-project?rev=259684&view=rev
Log:
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>)

Modified:
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py
    lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp
    lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp

Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py?rev=259684&r1=259683&r2=259684&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/breakpoint/consecutive_breakpoints/TestConsecutiveBreakpoints.py Wed Feb  3 13:45:31 2016
@@ -79,7 +79,6 @@ class ConsecutiveBreakpointsTestCase(Tes
         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()

Modified: lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp?rev=259684&r1=259683&r2=259684&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp (original)
+++ lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp Wed Feb  3 13:45:31 2016
@@ -507,6 +507,8 @@ StopInfoMachException::CreateStopReasonW
                         // 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();
                     }

Modified: lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp?rev=259684&r1=259683&r2=259684&view=diff
==============================================================================
--- lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp (original)
+++ lldb/trunk/source/Target/ThreadPlanStepInstruction.cpp Wed Feb  3 13:45:31 2016
@@ -239,7 +239,8 @@ ThreadPlanStepInstruction::ShouldStop (E
     }
     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)
             {




More information about the lldb-commits mailing list