Author: jingham
Date: Thu Aug 13 20:38:21 2015
New Revision: 244999

URL: http://llvm.org/viewvc/llvm-project?rev=244999&view=rev
Log:
I was assuming that when a bit of inlined code was followed by code from the 
inlining site, it was going to execute to the inlining site code, but 
apparently that's not always true.  So we need to be a bit more careful getting 
past the inlining, and use a StepOverRange plan not a RunToAddress plan.

<rdar://problem/22191804>

Modified:
    lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp

Modified: lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp?rev=244999&r1=244998&r2=244999&view=diff
==============================================================================
--- lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp (original)
+++ lldb/trunk/source/Target/ThreadPlanStepOverRange.cpp Thu Aug 13 20:38:21 
2015
@@ -303,10 +303,14 @@ ThreadPlanStepOverRange::ShouldStop (Eve
                                         if (next_line_entry.file == 
m_addr_context.line_entry.file)
                                         {
                                             const bool abort_other_plans = 
false;
-                                            const bool stop_other_threads = 
false;
-                                            new_plan_sp = 
m_thread.QueueThreadPlanForRunToAddress(abort_other_plans,
-                                                                               
                next_line_address,
-                                                                               
                stop_other_threads);
+                                            const RunMode stop_other_threads = 
RunMode::eAllThreads;
+                                            lldb::addr_t cur_pc = 
m_thread.GetStackFrameAtIndex(0)->GetRegisterContext()->GetPC();
+                                            AddressRange step_range(cur_pc, 
next_line_address.GetLoadAddress(&GetTarget()) - cur_pc);
+                                            
+                                            new_plan_sp = 
m_thread.QueueThreadPlanForStepOverRange (abort_other_plans,
+                                                                               
                     step_range,
+                                                                               
                     sc,
+                                                                               
                     stop_other_threads);
                                             break;
                                         }
                                         look_ahead_step++;


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to