From 2ea43cdcabc87264c54eb3e487e43889c5f906f8 Mon Sep 17 00:00:00 2001 From: Enrico Granata Date: Mon, 13 May 2013 17:03:52 +0000 Subject: [PATCH] Provide a mechanism through which users can disable loading the Python scripts from dSYM files This relies on a target setting: target.load-script-from-symbol-file which defaults to false ("do NOT load the script") You need to set it to true before creating your target (or in your lldbinit file if you constantly rely on this feature) to allow the scripts to load llvm-svn: 181709 --- lldb/include/lldb/Target/Target.h | 6 ++++++ lldb/source/Commands/CommandObjectTarget.cpp | 4 ++++ lldb/source/Core/Module.cpp | 8 +++++++- lldb/source/Target/Target.cpp | 18 +++++++++++++++++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index c73d7afda41e..57e2270da539 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -147,6 +147,12 @@ public: bool GetUseFastStepping() const; + bool + GetLoadScriptFromSymbolFile() const; + + void + SetLoadScriptFromSymbolFile(bool b); + }; typedef std::shared_ptr TargetPropertiesSP; diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 0ad802d7a084..5d3de8df991e 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -4330,6 +4330,10 @@ protected: // in the debug info files in case the platform supports that. Error error; module_sp->LoadScriptingResourceInTarget (target, error); + if (error.Fail()) + result.AppendWarningWithFormat("unable to load scripting data for module %s - error reported was %s", + module_sp->GetFileSpec().GetFileNameStrippingExtension().GetCString(), + error.AsCString()); flush = true; result.SetStatus (eReturnStatusSuccessFinishResult); diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index b5874daeb80d..de39a988dd33 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -1243,6 +1243,8 @@ Module::LoadScriptingResourceInTarget (Target *target, Error& error) return false; } + bool shoud_load = target->TargetProperties::GetLoadScriptFromSymbolFile(); + Debugger &debugger = target->GetDebugger(); const ScriptLanguage script_language = debugger.GetScriptLanguage(); if (script_language != eScriptLanguageNone) @@ -1271,7 +1273,11 @@ Module::LoadScriptingResourceInTarget (Target *target, Error& error) FileSpec scripting_fspec (file_specs.GetFileSpecAtIndex(i)); if (scripting_fspec && scripting_fspec.Exists()) { - + if (!shoud_load) + { + error.SetErrorString("Target doesn't allow loading scripting resource. Please set target.load-script-from-symbol-file and retry."); + return false; + } StreamString scripting_stream; scripting_fspec.Dump(&scripting_stream); const bool can_reload = false; diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index c54cc15ca46f..f1a09a7f979c 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -2301,6 +2301,7 @@ g_properties[] = // FIXME: This is the wrong way to do per-architecture settings, but we don't have a general per architecture settings system in place yet. { "x86-disassembly-flavor" , OptionValue::eTypeEnum , false, eX86DisFlavorDefault, NULL, g_x86_dis_flavor_value_types, "The default disassembly flavor to use for x86 or x86-64 targets." }, { "use-fast-stepping" , OptionValue::eTypeBoolean , false, true, NULL, NULL, "Use a fast stepping algorithm based on running from branch to branch rather than instruction single-stepping." }, + { "load-script-from-symbol-file" , OptionValue::eTypeBoolean , false, false, NULL, NULL, "Allow LLDB to load scripting resources embedded in symbol files when available." }, { NULL , OptionValue::eTypeInvalid , false, 0 , NULL, NULL, NULL } }; enum @@ -2326,7 +2327,8 @@ enum ePropertyDisableSTDIO, ePropertyInlineStrategy, ePropertyDisassemblyFlavor, - ePropertyUseFastStepping + ePropertyUseFastStepping, + ePropertyLoadScriptFromSymbolFile }; @@ -2672,6 +2674,20 @@ TargetProperties::GetUseFastStepping () const return m_collection_sp->GetPropertyAtIndexAsBoolean (NULL, idx, g_properties[idx].default_uint_value != 0); } +bool +TargetProperties::GetLoadScriptFromSymbolFile () const +{ + const uint32_t idx = ePropertyLoadScriptFromSymbolFile; + return m_collection_sp->GetPropertyAtIndexAsBoolean (NULL, idx, g_properties[idx].default_uint_value != 0); +} + +void +TargetProperties::SetLoadScriptFromSymbolFile (bool b) +{ + const uint32_t idx = ePropertyLoadScriptFromSymbolFile; + m_collection_sp->SetPropertyAtIndexAsBoolean(NULL, idx, b); +} + const TargetPropertiesSP & Target::GetGlobalProperties() {