[Lldb-commits] [lldb] [lldb] Store the dummy target in the selected exeuction context (PR #149615)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon Jul 21 09:59:46 PDT 2025
https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/149615
>From 770178784e122e99596280159791c0e7c7db7cf5 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Fri, 18 Jul 2025 16:32:06 -0700
Subject: [PATCH] [lldb] Store the dummy target in the selected exeuction
context
---
lldb/source/Core/Debugger.cpp | 4 +--
lldb/source/Core/Statusline.cpp | 6 +---
lldb/source/Interpreter/CommandObject.cpp | 37 ++++++++++++-----------
3 files changed, 22 insertions(+), 25 deletions(-)
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp
index ed674ee1275c7..3a3fb9eb0bdaa 100644
--- a/lldb/source/Core/Debugger.cpp
+++ b/lldb/source/Core/Debugger.cpp
@@ -1221,8 +1221,8 @@ void Debugger::RedrawStatusline(bool update) {
}
ExecutionContext Debugger::GetSelectedExecutionContext() {
- bool adopt_selected = true;
- ExecutionContextRef exe_ctx_ref(GetSelectedTarget().get(), adopt_selected);
+ ExecutionContextRef exe_ctx_ref(&GetSelectedOrDummyTarget(),
+ /*adopt_selected=*/true);
return ExecutionContext(exe_ctx_ref);
}
diff --git a/lldb/source/Core/Statusline.cpp b/lldb/source/Core/Statusline.cpp
index 393d427241021..cfed40ac7fb2b 100644
--- a/lldb/source/Core/Statusline.cpp
+++ b/lldb/source/Core/Statusline.cpp
@@ -134,11 +134,7 @@ void Statusline::Redraw(bool update) {
}
ExecutionContext exe_ctx = m_debugger.GetSelectedExecutionContext();
-
- // For colors and progress events, the format entity needs access to the
- // debugger, which requires a target in the execution context.
- if (!exe_ctx.HasTargetScope())
- exe_ctx.SetTargetPtr(&m_debugger.GetSelectedOrDummyTarget());
+ assert(exe_ctx.HasTargetScope() && "format entity needs a target");
SymbolContext symbol_ctx;
if (ProcessSP process_sp = exe_ctx.GetProcessSP()) {
diff --git a/lldb/source/Interpreter/CommandObject.cpp b/lldb/source/Interpreter/CommandObject.cpp
index 129646ebddb94..a72d804e5db5f 100644
--- a/lldb/source/Interpreter/CommandObject.cpp
+++ b/lldb/source/Interpreter/CommandObject.cpp
@@ -147,10 +147,11 @@ bool CommandObject::CheckRequirements(CommandReturnObject &result) {
// we don't want any CommandObject instances to keep any of these objects
// around longer than for a single command. Every command should call
// CommandObject::Cleanup() after it has completed.
- assert(!m_exe_ctx.GetTargetPtr());
- assert(!m_exe_ctx.GetProcessPtr());
- assert(!m_exe_ctx.GetThreadPtr());
- assert(!m_exe_ctx.GetFramePtr());
+ assert(!m_exe_ctx.HasTargetScope() ||
+ m_exe_ctx.GetTargetRef().IsDummyTarget());
+ assert(!m_exe_ctx.HasProcessScope());
+ assert(!m_exe_ctx.HasThreadScope());
+ assert(!m_exe_ctx.HasFrameScope());
// Lock down the interpreter's execution context prior to running the command
// so we guarantee the selected target, process, thread and frame can't go
@@ -312,7 +313,7 @@ void CommandObject::HandleArgumentCompletion(
assert(entry_ptr && "We said there was one entry, but there wasn't.");
return; // Not worth crashing if asserts are off...
}
-
+
CommandArgumentEntry &entry = *entry_ptr;
// For now, we only handle the simple case of one homogenous argument type.
if (entry.size() != 1)
@@ -495,21 +496,21 @@ bool CommandObject::IsPairType(ArgumentRepetitionType arg_repeat_type) {
(arg_repeat_type == eArgRepeatPairRangeOptional);
}
-std::optional<ArgumentRepetitionType>
+std::optional<ArgumentRepetitionType>
CommandObject::ArgRepetitionFromString(llvm::StringRef string) {
return llvm::StringSwitch<ArgumentRepetitionType>(string)
- .Case("plain", eArgRepeatPlain)
- .Case("optional", eArgRepeatOptional)
- .Case("plus", eArgRepeatPlus)
- .Case("star", eArgRepeatStar)
- .Case("range", eArgRepeatRange)
- .Case("pair-plain", eArgRepeatPairPlain)
- .Case("pair-optional", eArgRepeatPairOptional)
- .Case("pair-plus", eArgRepeatPairPlus)
- .Case("pair-star", eArgRepeatPairStar)
- .Case("pair-range", eArgRepeatPairRange)
- .Case("pair-range-optional", eArgRepeatPairRangeOptional)
- .Default({});
+ .Case("plain", eArgRepeatPlain)
+ .Case("optional", eArgRepeatOptional)
+ .Case("plus", eArgRepeatPlus)
+ .Case("star", eArgRepeatStar)
+ .Case("range", eArgRepeatRange)
+ .Case("pair-plain", eArgRepeatPairPlain)
+ .Case("pair-optional", eArgRepeatPairOptional)
+ .Case("pair-plus", eArgRepeatPairPlus)
+ .Case("pair-star", eArgRepeatPairStar)
+ .Case("pair-range", eArgRepeatPairRange)
+ .Case("pair-range-optional", eArgRepeatPairRangeOptional)
+ .Default({});
}
static CommandObject::CommandArgumentEntry
More information about the lldb-commits
mailing list