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 <jo...@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

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

Reply via email to