Author: Dave Lee Date: 2021-02-11T14:57:20-08:00 New Revision: a5ab1dc4ad2c02510e363b4dd3c267f9eaf11516
URL: https://github.com/llvm/llvm-project/commit/a5ab1dc4ad2c02510e363b4dd3c267f9eaf11516 DIFF: https://github.com/llvm/llvm-project/commit/a5ab1dc4ad2c02510e363b4dd3c267f9eaf11516.diff LOG: [lldb] Add step target to ThreadPlanStepInRange constructor `QueueThreadPlanForStepInRange` accepts a `step_into_target`, but the constructor for `ThreadPlanStepInRange` does not. Instead, a caller would optionally call `SetStepInTarget()` in a separate statement. This change adds `step_into_target` as a constructor argument. This simplifies construction of `ThreadPlanSP`, by avoiding a subsequent downcast and conditional assignment. This constructor is already used in downstream repos. Differential Revision: https://reviews.llvm.org/D96539 Added: Modified: lldb/include/lldb/Target/ThreadPlanStepInRange.h lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp lldb/source/Target/Thread.cpp lldb/source/Target/ThreadPlanStepInRange.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Target/ThreadPlanStepInRange.h b/lldb/include/lldb/Target/ThreadPlanStepInRange.h index a26b0fb87b3a..f9ef87942a7c 100644 --- a/lldb/include/lldb/Target/ThreadPlanStepInRange.h +++ b/lldb/include/lldb/Target/ThreadPlanStepInRange.h @@ -22,7 +22,7 @@ class ThreadPlanStepInRange : public ThreadPlanStepRange, public: ThreadPlanStepInRange(Thread &thread, const AddressRange &range, const SymbolContext &addr_context, - lldb::RunMode stop_others, + const char *step_into_target, lldb::RunMode stop_others, LazyBool step_in_avoids_code_without_debug_info, LazyBool step_out_avoids_code_without_debug_info); @@ -34,10 +34,6 @@ class ThreadPlanStepInRange : public ThreadPlanStepRange, void SetAvoidRegexp(const char *name); - void SetStepInTarget(const char *target) { - m_step_into_target.SetCString(target); - } - static void SetDefaultFlagValue(uint32_t new_value); bool IsVirtualStep() override; diff --git a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp index 24ab9cc5f238..02d9bff9eee3 100644 --- a/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp +++ b/lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp @@ -397,8 +397,8 @@ CPPLanguageRuntime::GetStepThroughTrampolinePlan(Thread &thread, // We create a ThreadPlan to keep stepping through using the address range // of the current function. ret_plan_sp = std::make_shared<ThreadPlanStepInRange>( - thread, range_of_curr_func, sc, eOnlyThisThread, eLazyBoolYes, - eLazyBoolYes); + thread, range_of_curr_func, sc, nullptr, eOnlyThisThread, + eLazyBoolYes, eLazyBoolYes); return ret_plan_sp; } } diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 049e458d8b19..660d5f8908b3 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -1289,16 +1289,10 @@ ThreadPlanSP Thread::QueueThreadPlanForStepInRange( lldb::RunMode stop_other_threads, Status &status, LazyBool step_in_avoids_code_without_debug_info, LazyBool step_out_avoids_code_without_debug_info) { - ThreadPlanSP thread_plan_sp( - new ThreadPlanStepInRange(*this, range, addr_context, stop_other_threads, - step_in_avoids_code_without_debug_info, - step_out_avoids_code_without_debug_info)); - ThreadPlanStepInRange *plan = - static_cast<ThreadPlanStepInRange *>(thread_plan_sp.get()); - - if (step_in_target) - plan->SetStepInTarget(step_in_target); - + ThreadPlanSP thread_plan_sp(new ThreadPlanStepInRange( + *this, range, addr_context, step_in_target, stop_other_threads, + step_in_avoids_code_without_debug_info, + step_out_avoids_code_without_debug_info)); status = QueueThreadPlan(thread_plan_sp, abort_other_plans); return thread_plan_sp; } diff --git a/lldb/source/Target/ThreadPlanStepInRange.cpp b/lldb/source/Target/ThreadPlanStepInRange.cpp index a03bd93ac638..64ae0d7787d2 100644 --- a/lldb/source/Target/ThreadPlanStepInRange.cpp +++ b/lldb/source/Target/ThreadPlanStepInRange.cpp @@ -33,14 +33,14 @@ uint32_t ThreadPlanStepInRange::s_default_flag_values = ThreadPlanStepInRange::ThreadPlanStepInRange( Thread &thread, const AddressRange &range, - const SymbolContext &addr_context, lldb::RunMode stop_others, - LazyBool step_in_avoids_code_without_debug_info, + const SymbolContext &addr_context, const char *step_into_target, + lldb::RunMode stop_others, LazyBool step_in_avoids_code_without_debug_info, LazyBool step_out_avoids_code_without_debug_info) : ThreadPlanStepRange(ThreadPlan::eKindStepInRange, "Step Range stepping in", thread, range, addr_context, stop_others), ThreadPlanShouldStopHere(this), m_step_past_prologue(true), - m_virtual_step(false) { + m_virtual_step(false), m_step_into_target(step_into_target) { SetCallbacks(); SetFlagsToDefault(); SetupAvoidNoDebug(step_in_avoids_code_without_debug_info, _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits