From 52568a54d98b6c12b0cbc062ff24f5d7b986ffdc Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Fri, 3 Apr 2026 15:11:35 -0700 Subject: [PATCH] [lldb] Keep the existing behavior for untrusted dSYMs (#190407) This patch does two thing: - It reverts to the previous behavior of warning for untrusted dSYMs. - It includes whether a dSYM is trusted or untrusted in the warning output. My reasoning is that there's no tooling for automatically signing dSYMs and therefore we shouldn't change the behavior until this is more common. The inclusion of whether the dSYM is signed or not is the first step towards advertising the existence of the feature. This now also means the release note I added in #189444 is correct (again). --- lldb/source/Core/ModuleList.cpp | 20 ++++++++++++------- .../dsym-python-script-name-warnings.test | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index fae42cb90a7f..d3c52cfe7d8f 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -1373,26 +1373,31 @@ bool ModuleList::LoadScriptingResourceInTargetForModule(Module &module, if (!feedback_stream.Empty()) debugger.ReportWarning(feedback_stream.GetString().str(), debugger.GetID()); + const bool trusted = platform_sp->IsSymbolFileTrusted(module); + for (const auto &[scripting_fspec, load_style] : file_specs) { + if (load_style == eLoadScriptFromSymFileFalse) + continue; + if (!FileSystem::Instance().Exists(scripting_fspec)) continue; switch (load_style) { case eLoadScriptFromSymFileFalse: - continue; + llvm_unreachable("case already handled"); case eLoadScriptFromSymFileTrue: break; case eLoadScriptFromSymFileTrusted: - if (!platform_sp->IsSymbolFileTrusted(module)) - continue; - break; + if (trusted) + break; + LLVM_FALLTHROUGH; case eLoadScriptFromSymFileWarn: debugger.ReportWarning( llvm::formatv( // clang-format off -R"('{0}' contains a debug script. To run this script in this debug session: +R"('{0}' contains {1} debug script. To run this script in this debug session: - command script import "{1}" + command script import "{2}" To run all discovered debug scripts in this session: @@ -1400,10 +1405,11 @@ To run all discovered debug scripts in this session: )", // clang-format on module.GetFileSpec().GetFileNameStrippingExtension(), + trusted ? "a trusted" : "an untrusted", scripting_fspec.GetPath()), debugger.GetID()); - return false; + continue; } LLDB_LOG(log, "Auto-loading {0}", scripting_fspec.GetPath()); diff --git a/lldb/test/Shell/Platform/AutoLoad/Darwin/dsym-python-script-name-warnings.test b/lldb/test/Shell/Platform/AutoLoad/Darwin/dsym-python-script-name-warnings.test index 9c84045d7593..07fa3c0d6e67 100644 --- a/lldb/test/Shell/Platform/AutoLoad/Darwin/dsym-python-script-name-warnings.test +++ b/lldb/test/Shell/Platform/AutoLoad/Darwin/dsym-python-script-name-warnings.test @@ -33,7 +33,7 @@ ## Also confirm that the warning message about auto-loading scripts is printed afterwards. -# CHECK-REMOVE: warning: 'Test-Module2' contains a debug script. To run this script in this +# CHECK-REMOVE: warning: 'Test-Module2' contains an untrusted debug script. To run this script in this #--- main.c int main() { return 0; }