forked from OSchip/llvm-project
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 llvm-svn: 327330
This commit is contained in:
parent
3a408538f0
commit
1cc1c5f298
|
@ -81,6 +81,7 @@ public:
|
|||
|
||||
FileSpec GetClangModulesCachePath() const;
|
||||
bool SetClangModulesCachePath(llvm::StringRef path);
|
||||
bool GetEnableExternalLookup() const;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
# LLDB init file for the LIT tests.
|
||||
settings set symbols.enable-external-lookup false
|
|
@ -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'])
|
||||
|
|
|
@ -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"])
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)))
|
||||
|
|
Loading…
Reference in New Issue