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