summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/include/lldb/Core/ModuleList.h1
-rw-r--r--lldb/lit/lit-lldb-init2
-rw-r--r--lldb/lit/lit.cfg3
-rw-r--r--lldb/packages/Python/lldbsuite/test/lldbtest.py7
-rw-r--r--lldb/source/Core/ModuleList.cpp13
-rw-r--r--lldb/source/Host/macosx/Symbols.cpp9
6 files changed, 31 insertions, 4 deletions
diff --git a/lldb/include/lldb/Core/ModuleList.h b/lldb/include/lldb/Core/ModuleList.h
index 319e14994f8..72a22fb5182 100644
--- a/lldb/include/lldb/Core/ModuleList.h
+++ b/lldb/include/lldb/Core/ModuleList.h
@@ -81,6 +81,7 @@ public:
FileSpec GetClangModulesCachePath() const;
bool SetClangModulesCachePath(llvm::StringRef path);
+ bool GetEnableExternalLookup() const;
};
//----------------------------------------------------------------------
diff --git a/lldb/lit/lit-lldb-init b/lldb/lit/lit-lldb-init
new file mode 100644
index 00000000000..b3a5d4dc984
--- /dev/null
+++ b/lldb/lit/lit-lldb-init
@@ -0,0 +1,2 @@
+# LLDB init file for the LIT tests.
+settings set symbols.enable-external-lookup false
diff --git a/lldb/lit/lit.cfg b/lldb/lit/lit.cfg
index e312d4aa9cf..35972aff9a4 100644
--- a/lldb/lit/lit.cfg
+++ b/lldb/lit/lit.cfg
@@ -55,7 +55,8 @@ config.environment['PYTHON_EXECUTABLE'] = getattr(config, 'python_executable', '
config.substitutions.append(('%python', config.python_executable))
debugserver = lit.util.which('debugserver', lldb_tools_dir)
-lldb = lit.util.which('lldb', lldb_tools_dir)
+lldb = "%s -S %s/lit-lldb-init" % (lit.util.which('lldb', lldb_tools_dir),
+ config.test_source_root)
if not os.path.exists(config.cc):
config.cc = lit.util.which(config.cc, config.environment['PATH'])
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index 925cddd38f1..3d10418a8ca 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -1917,13 +1917,18 @@ class TestBase(Base):
# decorators.
Base.setUp(self)
- # Set the clang modules cache path.
if self.child:
+ # Set the clang modules cache path.
assert(self.getDebugInfo() == 'default')
mod_cache = os.path.join(self.getBuildDir(), "module-cache")
self.runCmd('settings set symbols.clang-modules-cache-path "%s"'
% mod_cache)
+ # Disable Spotlight lookup. The testsuite creates
+ # different binaries with the same UUID, because they only
+ # differ in the debug info, which is not being hashed.
+ self.runCmd('settings set symbols.enable-external-lookup false')
+
if "LLDB_MAX_LAUNCH_COUNT" in os.environ:
self.maxLaunchCount = int(os.environ["LLDB_MAX_LAUNCH_COUNT"])
diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp
index 605fe2f29a8..4c99bbcbda7 100644
--- a/lldb/source/Core/ModuleList.cpp
+++ b/lldb/source/Core/ModuleList.cpp
@@ -67,12 +67,17 @@ using namespace lldb_private;
namespace {
PropertyDefinition g_properties[] = {
+ {"enable-external-lookup", OptionValue::eTypeBoolean, true, true, nullptr,
+ nullptr,
+ "Control the use of external tools or libraries to locate symbol files. "
+ "On macOS, Spotlight is used to locate a matching .dSYM bundle based on "
+ "the UUID of the executable."},
{"clang-modules-cache-path", OptionValue::eTypeFileSpec, true, 0, nullptr,
nullptr,
"The path to the clang modules cache directory (-fmodules-cache-path)."},
{nullptr, OptionValue::eTypeInvalid, false, 0, nullptr, nullptr, nullptr}};
-enum { ePropertyClangModulesCachePath };
+enum { ePropertyEnableExternalLookup, ePropertyClangModulesCachePath };
} // namespace
@@ -85,6 +90,12 @@ ModuleListProperties::ModuleListProperties() {
SetClangModulesCachePath(path);
}
+bool ModuleListProperties::GetEnableExternalLookup() const {
+ const uint32_t idx = ePropertyEnableExternalLookup;
+ return m_collection_sp->GetPropertyAtIndexAsBoolean(
+ nullptr, idx, g_properties[idx].default_uint_value != 0);
+}
+
FileSpec ModuleListProperties::GetClangModulesCachePath() const {
return m_collection_sp
->GetPropertyAtIndexAsOptionValueFileSpec(nullptr, false,
diff --git a/lldb/source/Host/macosx/Symbols.cpp b/lldb/source/Host/macosx/Symbols.cpp
index a0b3ece55fa..b28d3b3e8e4 100644
--- a/lldb/source/Host/macosx/Symbols.cpp
+++ b/lldb/source/Host/macosx/Symbols.cpp
@@ -23,6 +23,7 @@
#include "Host/macosx/cfcpp/CFCData.h"
#include "Host/macosx/cfcpp/CFCReleaser.h"
#include "Host/macosx/cfcpp/CFCString.h"
+#include "lldb/Core/ModuleList.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Host/Host.h"
#include "lldb/Symbol/ObjectFile.h"
@@ -54,6 +55,13 @@ CFDictionaryRef DBGCopyDSYMPropertyLists(CFURLRef dsym_url);
int LocateMacOSXFilesUsingDebugSymbols(const ModuleSpec &module_spec,
ModuleSpec &return_module_spec) {
+ Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST);
+ if (!ModuleList::GetGlobalModuleListProperties().GetEnableExternalLookup()) {
+ if (log)
+ log->Printf("Spotlight lookup for .dSYM bundles is disabled.");
+ return 0;
+ }
+
return_module_spec = module_spec;
return_module_spec.GetFileSpec().Clear();
return_module_spec.GetSymbolFileSpec().Clear();
@@ -79,7 +87,6 @@ int LocateMacOSXFilesUsingDebugSymbols(const ModuleSpec &module_spec,
if (module_uuid_ref.get()) {
CFCReleaser<CFURLRef> exec_url;
const FileSpec *exec_fspec = module_spec.GetFileSpecPtr();
- Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST);
if (exec_fspec) {
char exec_cf_path[PATH_MAX];
if (exec_fspec->GetPath(exec_cf_path, sizeof(exec_cf_path)))
OpenPOWER on IntegriCloud