Author: adrian Date: Mon Mar 12 13:52:36 2018 New Revision: 327330 URL: http://llvm.org/viewvc/llvm-project?rev=327330&view=rev Log: Introduce a setting to disable Spotlight while running the test suite
This is a more principled approach to disabling Spotlight .dSYM lookups while running the testsuite, most importantly it also works for the LIT-based tests, which I overlooked in my initial fix (renaming the test build dir to lldb-tests.noindex). Differential Revision: https://reviews.llvm.org/D44342 Added: lldb/trunk/lit/lit-lldb-init Modified: lldb/trunk/include/lldb/Core/ModuleList.h lldb/trunk/lit/lit.cfg lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py lldb/trunk/source/Core/ModuleList.cpp lldb/trunk/source/Host/macosx/Symbols.cpp Modified: lldb/trunk/include/lldb/Core/ModuleList.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ModuleList.h?rev=327330&r1=327329&r2=327330&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/ModuleList.h (original) +++ lldb/trunk/include/lldb/Core/ModuleList.h Mon Mar 12 13:52:36 2018 @@ -81,6 +81,7 @@ public: FileSpec GetClangModulesCachePath() const; bool SetClangModulesCachePath(llvm::StringRef path); + bool GetEnableExternalLookup() const; }; //---------------------------------------------------------------------- Added: lldb/trunk/lit/lit-lldb-init URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/lit-lldb-init?rev=327330&view=auto ============================================================================== --- lldb/trunk/lit/lit-lldb-init (added) +++ lldb/trunk/lit/lit-lldb-init Mon Mar 12 13:52:36 2018 @@ -0,0 +1,2 @@ +# LLDB init file for the LIT tests. +settings set symbols.enable-external-lookup false Modified: lldb/trunk/lit/lit.cfg URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/lit.cfg?rev=327330&r1=327329&r2=327330&view=diff ============================================================================== --- lldb/trunk/lit/lit.cfg (original) +++ lldb/trunk/lit/lit.cfg Mon Mar 12 13:52:36 2018 @@ -55,7 +55,8 @@ config.environment['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']) Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=327330&r1=327329&r2=327330&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Mon Mar 12 13:52:36 2018 @@ -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"]) Modified: lldb/trunk/source/Core/ModuleList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ModuleList.cpp?rev=327330&r1=327329&r2=327330&view=diff ============================================================================== --- lldb/trunk/source/Core/ModuleList.cpp (original) +++ lldb/trunk/source/Core/ModuleList.cpp Mon Mar 12 13:52:36 2018 @@ -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::ModuleListProperti 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, Modified: lldb/trunk/source/Host/macosx/Symbols.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Symbols.cpp?rev=327330&r1=327329&r2=327330&view=diff ============================================================================== --- lldb/trunk/source/Host/macosx/Symbols.cpp (original) +++ lldb/trunk/source/Host/macosx/Symbols.cpp Mon Mar 12 13:52:36 2018 @@ -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 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(c 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))) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits