[Lldb-commits] [lldb] a5ab1dc - [lldb] Add step target to ThreadPlanStepInRange constructor
Dave Lee via lldb-commits
lldb-commits at lists.llvm.org
Thu Feb 11 14:57:42 PST 2021
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,
More information about the lldb-commits
mailing list