summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2013-05-13 17:03:52 +0000
committerEnrico Granata <egranata@apple.com>2013-05-13 17:03:52 +0000
commit2ea43cdcabc87264c54eb3e487e43889c5f906f8 (patch)
tree4a195daf210a00a5246feaacb3d6b0c856ab39c2
parent7b4baa91ce2f98bf49a102e17a7fc91ec00e5789 (diff)
downloadbcm5719-llvm-2ea43cdcabc87264c54eb3e487e43889c5f906f8.tar.gz
bcm5719-llvm-2ea43cdcabc87264c54eb3e487e43889c5f906f8.zip
<rdar://problem/13183720>
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
-rw-r--r--lldb/include/lldb/Target/Target.h6
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp4
-rw-r--r--lldb/source/Core/Module.cpp8
-rw-r--r--lldb/source/Target/Target.cpp18
4 files changed, 34 insertions, 2 deletions
diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h
index c73d7afda41..57e2270da53 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<TargetProperties> TargetPropertiesSP;
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()
{
OpenPOWER on IntegriCloud