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