diff options
Diffstat (limited to 'lldb/source')
-rw-r--r-- | lldb/source/Commands/CommandObjectTarget.cpp | 4 | ||||
-rw-r--r-- | lldb/source/Core/Module.cpp | 8 | ||||
-rw-r--r-- | lldb/source/Target/Target.cpp | 18 |
3 files changed, 28 insertions, 2 deletions
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index 0ad802d7a08..5d3de8df991 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 b5874daeb80..de39a988dd3 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 c54cc15ca46..f1a09a7f979 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() { |