Author: Kazu Hirata Date: 2025-04-25T11:01:19-07:00 New Revision: bc716a755a9bd0e5f0b5de0da0ffcc77374690db
URL: https://github.com/llvm/llvm-project/commit/bc716a755a9bd0e5f0b5de0da0ffcc77374690db DIFF: https://github.com/llvm/llvm-project/commit/bc716a755a9bd0e5f0b5de0da0ffcc77374690db.diff LOG: Revert "Add symbol locator time for each module in statistics (#134563)" This reverts commit 070a4ae2f9bcf6967a7147ed2972f409eaa7d3a6. Multiple buildbot failures have been reported: https://github.com/llvm/llvm-project/pull/134563 The build fails with: lldb/source/Target/Statistics.cpp:75:39: error: use of undeclared identifier 'num_symbols_loaded' Added: Modified: lldb/include/lldb/Core/Module.h lldb/include/lldb/Core/PluginManager.h lldb/include/lldb/Target/Statistics.h lldb/source/Core/DynamicLoader.cpp lldb/source/Core/ModuleList.cpp lldb/source/Core/PluginManager.cpp lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp lldb/source/Plugins/SymbolVendor/wasm/SymbolVendorWasm.cpp lldb/source/Target/Statistics.cpp lldb/test/Shell/Commands/command-statistics-dump.test lldb/unittests/Symbol/LocateSymbolFileTest.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h index 8bb55c95773bc..1ad67d6747850 100644 --- a/lldb/include/lldb/Core/Module.h +++ b/lldb/include/lldb/Core/Module.h @@ -885,10 +885,6 @@ class Module : public std::enable_shared_from_this<Module>, /// ElapsedTime RAII object. StatsDuration &GetSymtabIndexTime() { return m_symtab_index_time; } - StatisticsMap &GetSymbolLocatorStatistics() { - return m_symbol_locator_duration_map; - } - void ResetStatistics(); /// \class LookupInfo Module.h "lldb/Core/Module.h" @@ -1068,8 +1064,6 @@ class Module : public std::enable_shared_from_this<Module>, /// time for the symbol tables can be aggregated here. StatsDuration m_symtab_index_time; - StatisticsMap m_symbol_locator_duration_map; - /// A set of hashes of all warnings and errors, to avoid reporting them /// multiple times to the same Debugger. llvm::DenseMap<llvm::stable_hash, std::unique_ptr<std::once_flag>> diff --git a/lldb/include/lldb/Core/PluginManager.h b/lldb/include/lldb/Core/PluginManager.h index e2f709ecd2ff7..d73dd71d833f3 100644 --- a/lldb/include/lldb/Core/PluginManager.h +++ b/lldb/include/lldb/Core/PluginManager.h @@ -12,7 +12,6 @@ #include "lldb/Core/Architecture.h" #include "lldb/Interpreter/Interfaces/ScriptedInterfaceUsages.h" #include "lldb/Symbol/TypeSystem.h" -#include "lldb/Target/Statistics.h" #include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Status.h" @@ -380,13 +379,11 @@ class PluginManager { static SymbolLocatorCreateInstance GetSymbolLocatorCreateCallbackAtIndex(uint32_t idx); - static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec, - StatisticsMap &map); + static ModuleSpec LocateExecutableObjectFile(const ModuleSpec &module_spec); static FileSpec LocateExecutableSymbolFile(const ModuleSpec &module_spec, - const FileSpecList &default_search_paths, - StatisticsMap &map); + const FileSpecList &default_search_paths); static bool DownloadObjectAndSymbolFile(ModuleSpec &module_spec, Status &error, diff --git a/lldb/include/lldb/Target/Statistics.h b/lldb/include/lldb/Target/Statistics.h index 9ac32172e8002..565f1b4351bdd 100644 --- a/lldb/include/lldb/Target/Statistics.h +++ b/lldb/include/lldb/Target/Statistics.h @@ -90,26 +90,6 @@ class ElapsedTime { } }; -/// A class to count time for plugins -class StatisticsMap { -public: - void add(llvm::StringRef key, double value) { - if (key.empty()) - return; - auto it = map.find(key); - if (it == map.end()) - map.try_emplace(key, value); - else - it->second += value; - } - void merge(StatisticsMap map_to_merge) { - for (const auto &entry : map_to_merge.map) { - add(entry.first(), entry.second); - } - } - llvm::StringMap<double> map; -}; - /// A class to count success/fail statistics. struct StatsSuccessFail { StatsSuccessFail(llvm::StringRef n) : name(n.str()) {} @@ -138,7 +118,6 @@ struct ModuleStats { // track down all of the stats that contribute to this module. std::vector<intptr_t> symfile_modules; llvm::StringMap<llvm::json::Value> type_system_stats; - StatisticsMap symbol_locator_time; double symtab_parse_time = 0.0; double symtab_index_time = 0.0; uint32_t symtab_symbol_count = 0; diff --git a/lldb/source/Core/DynamicLoader.cpp b/lldb/source/Core/DynamicLoader.cpp index 291e6b73a2c39..76c71d2a49a48 100644 --- a/lldb/source/Core/DynamicLoader.cpp +++ b/lldb/source/Core/DynamicLoader.cpp @@ -243,22 +243,15 @@ ModuleSP DynamicLoader::LoadBinaryWithUUIDAndAddress( // find an executable and symbol file. if (!module_sp) { FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - StatisticsMap symbol_locator_map; module_spec.GetSymbolFileSpec() = - PluginManager::LocateExecutableSymbolFile(module_spec, search_paths, - symbol_locator_map); + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); ModuleSpec objfile_module_spec = - PluginManager::LocateExecutableObjectFile(module_spec, - symbol_locator_map); + PluginManager::LocateExecutableObjectFile(module_spec); module_spec.GetFileSpec() = objfile_module_spec.GetFileSpec(); if (FileSystem::Instance().Exists(module_spec.GetFileSpec()) && FileSystem::Instance().Exists(module_spec.GetSymbolFileSpec())) { module_sp = std::make_shared<Module>(module_spec); } - - if (module_sp) { - module_sp->GetSymbolLocatorStatistics().merge(symbol_locator_map); - } } // If we haven't found a binary, or we don't have a SymbolFile, see diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index 6052cc151744d..2b8ccab2406c6 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -917,10 +917,9 @@ ModuleList::GetSharedModule(const ModuleSpec &module_spec, ModuleSP &module_sp, // Fixup the incoming path in case the path points to a valid file, yet the // arch or UUID (if one was passed in) don't match. - ModuleSpec located_binary_modulespec; - StatisticsMap symbol_locator_map; - located_binary_modulespec = PluginManager::LocateExecutableObjectFile( - module_spec, symbol_locator_map); + ModuleSpec located_binary_modulespec = + PluginManager::LocateExecutableObjectFile(module_spec); + // Don't look for the file if it appears to be the same one we already // checked for above... if (located_binary_modulespec.GetFileSpec() != module_file_spec) { @@ -993,7 +992,6 @@ ModuleList::GetSharedModule(const ModuleSpec &module_spec, ModuleSP &module_sp, // By getting the object file we can guarantee that the architecture // matches if (module_sp && module_sp->GetObjectFile()) { - module_sp->GetSymbolLocatorStatistics().merge(symbol_locator_map); if (module_sp->GetObjectFile()->GetType() == ObjectFile::eTypeStubLibrary) { module_sp.reset(); diff --git a/lldb/source/Core/PluginManager.cpp b/lldb/source/Core/PluginManager.cpp index 32c2a00a861a7..73c018330a24e 100644 --- a/lldb/source/Core/PluginManager.cpp +++ b/lldb/source/Core/PluginManager.cpp @@ -1218,18 +1218,12 @@ PluginManager::GetSymbolLocatorCreateCallbackAtIndex(uint32_t idx) { } ModuleSpec -PluginManager::LocateExecutableObjectFile(const ModuleSpec &module_spec, - StatisticsMap &map) { +PluginManager::LocateExecutableObjectFile(const ModuleSpec &module_spec) { auto instances = GetSymbolLocatorInstances().GetSnapshot(); for (auto &instance : instances) { if (instance.locate_executable_object_file) { - StatsDuration time; - std::optional<ModuleSpec> result; - { - ElapsedTime elapsed(time); - result = instance.locate_executable_object_file(module_spec); - } - map.add(instance.name, time.get().count()); + std::optional<ModuleSpec> result = + instance.locate_executable_object_file(module_spec); if (result) return *result; } @@ -1238,19 +1232,12 @@ PluginManager::LocateExecutableObjectFile(const ModuleSpec &module_spec, } FileSpec PluginManager::LocateExecutableSymbolFile( - const ModuleSpec &module_spec, const FileSpecList &default_search_paths, - StatisticsMap &map) { + const ModuleSpec &module_spec, const FileSpecList &default_search_paths) { auto instances = GetSymbolLocatorInstances().GetSnapshot(); for (auto &instance : instances) { if (instance.locate_executable_symbol_file) { - StatsDuration time; - std::optional<FileSpec> result; - { - ElapsedTime elapsed(time); - result = instance.locate_executable_symbol_file(module_spec, - default_search_paths); - } - map.add(instance.name, time.get().count()); + std::optional<FileSpec> result = instance.locate_executable_symbol_file( + module_spec, default_search_paths); if (result) return *result; } diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp index 54869001b7b81..4fbead97e9c1a 100644 --- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp +++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp @@ -814,8 +814,8 @@ Status PlatformDarwinKernel::GetSharedModuleKernel( // append ".dSYM" to the filename for the SymbolFile. FileSpecList search_paths = process->GetTarget().GetDebugFileSearchPaths(); - FileSpec dsym_fspec = PluginManager::LocateExecutableSymbolFile( - kern_spec, search_paths, module_sp->GetSymbolLocatorStatistics()); + FileSpec dsym_fspec = + PluginManager::LocateExecutableSymbolFile(kern_spec, search_paths); if (FileSystem::Instance().Exists(dsym_fspec)) module_sp->SetSymbolFileFileSpec(dsym_fspec); if (did_create_ptr) diff --git a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp index 60952958cc0d1..6cc01436aef20 100644 --- a/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp +++ b/lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp @@ -276,15 +276,12 @@ Status ProcessKDP::DoConnectRemote(llvm::StringRef remote_url) { // Lookup UUID locally, before attempting dsymForUUID like action FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - - StatisticsMap symbol_locator_map; module_spec.GetSymbolFileSpec() = - PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, symbol_locator_map); + PluginManager::LocateExecutableSymbolFile(module_spec, + search_paths); if (module_spec.GetSymbolFileSpec()) { ModuleSpec executable_module_spec = - PluginManager::LocateExecutableObjectFile( - module_spec, symbol_locator_map); + PluginManager::LocateExecutableObjectFile(module_spec); if (FileSystem::Instance().Exists( executable_module_spec.GetFileSpec())) { module_spec.GetFileSpec() = @@ -300,8 +297,6 @@ Status ProcessKDP::DoConnectRemote(llvm::StringRef remote_url) { if (FileSystem::Instance().Exists(module_spec.GetFileSpec())) { ModuleSP module_sp(new Module(module_spec)); - module_sp->GetSymbolLocatorStatistics().merge( - symbol_locator_map); if (module_sp.get() && module_sp->GetObjectFile()) { // Get the current target executable ModuleSP exe_module_sp(target.GetExecutableModule()); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 907d63eb51afe..43f8650db4cad 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -4245,9 +4245,8 @@ const std::shared_ptr<SymbolFileDWARFDwo> &SymbolFileDWARF::GetDwpSymbolFile() { FileSpec(symfile.GetPath() + ".dwp", symfile.GetPathStyle()); LLDB_LOG(log, "Searching for DWP using: \"{0}\"", module_spec.GetSymbolFileSpec()); - dwp_filespec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, - m_objfile_sp->GetModule()->GetSymbolLocatorStatistics()); + dwp_filespec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); if (FileSystem::Instance().Exists(dwp_filespec)) { break; } @@ -4258,9 +4257,8 @@ const std::shared_ptr<SymbolFileDWARFDwo> &SymbolFileDWARF::GetDwpSymbolFile() { // find the correct DWP file, as the Debuginfod plugin uses *only* this // data to correctly match the DWP file with the binary. module_spec.GetUUID() = m_objfile_sp->GetUUID(); - dwp_filespec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, - m_objfile_sp->GetModule()->GetSymbolLocatorStatistics()); + dwp_filespec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); } if (FileSystem::Instance().Exists(dwp_filespec)) { LLDB_LOG(log, "Found DWP file: \"{0}\"", dwp_filespec); diff --git a/lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp b/lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp index 380986d8afab7..a2c3825cd537f 100644 --- a/lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp +++ b/lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp @@ -103,14 +103,14 @@ SymbolVendorELF::CreateInstance(const lldb::ModuleSP &module_sp, module_spec.GetSymbolFileSpec() = fspec; module_spec.GetUUID() = uuid; FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - FileSpec dsym_fspec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, module_sp->GetSymbolLocatorStatistics()); + FileSpec dsym_fspec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); if (!dsym_fspec || IsDwpSymbolFile(module_sp, dsym_fspec)) { // If we have a stripped binary or if we have a DWP file, SymbolLocator // plugins may be able to give us an unstripped binary or an // 'only-keep-debug' stripped file. - ModuleSpec unstripped_spec = PluginManager::LocateExecutableObjectFile( - module_spec, module_sp->GetSymbolLocatorStatistics()); + ModuleSpec unstripped_spec = + PluginManager::LocateExecutableObjectFile(module_spec); if (!unstripped_spec) return nullptr; // The default SymbolLocator plugin returns the original binary if no other @@ -127,6 +127,7 @@ SymbolVendorELF::CreateInstance(const lldb::ModuleSP &module_sp, dsym_file_data_sp, dsym_file_data_offset); if (!dsym_objfile_sp) return nullptr; + // This objfile is for debugging purposes. Sadly, ObjectFileELF won't // be able to figure this out consistently as the symbol file may not // have stripped the code sections, etc. diff --git a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp index 6a0b0ffee7e2d..f46bff8f7d12e 100644 --- a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp +++ b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp @@ -134,9 +134,8 @@ SymbolVendorMacOSX::CreateInstance(const lldb::ModuleSP &module_sp, ModuleSpec module_spec(file_spec, module_sp->GetArchitecture()); module_spec.GetUUID() = module_sp->GetUUID(); FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - - dsym_fspec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, module_sp->GetSymbolLocatorStatistics()); + dsym_fspec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); if (module_spec.GetSourceMappingList().GetSize()) module_sp->GetSourceMappingList().Append( module_spec.GetSourceMappingList(), true); diff --git a/lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp b/lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp index 33fdadce07dee..6393363db51f1 100644 --- a/lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp +++ b/lldb/source/Plugins/SymbolVendor/PECOFF/SymbolVendorPECOFF.cpp @@ -85,8 +85,8 @@ SymbolVendorPECOFF::CreateInstance(const lldb::ModuleSP &module_sp, module_spec.GetSymbolFileSpec() = fspec; module_spec.GetUUID() = uuid; FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - FileSpec dsym_fspec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, module_sp->GetSymbolLocatorStatistics()); + FileSpec dsym_fspec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); if (!dsym_fspec) return nullptr; diff --git a/lldb/source/Plugins/SymbolVendor/wasm/SymbolVendorWasm.cpp b/lldb/source/Plugins/SymbolVendor/wasm/SymbolVendorWasm.cpp index c18af06fbdc98..f8a9389c0ff93 100644 --- a/lldb/source/Plugins/SymbolVendor/wasm/SymbolVendorWasm.cpp +++ b/lldb/source/Plugins/SymbolVendor/wasm/SymbolVendorWasm.cpp @@ -85,8 +85,8 @@ SymbolVendorWasm::CreateInstance(const lldb::ModuleSP &module_sp, module_spec.GetSymbolFileSpec() = *symbol_file_spec; FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - FileSpec sym_fspec = PluginManager::LocateExecutableSymbolFile( - module_spec, search_paths, module_sp->GetSymbolLocatorStatistics()); + FileSpec sym_fspec = + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); if (!sym_fspec) return nullptr; diff --git a/lldb/source/Target/Statistics.cpp b/lldb/source/Target/Statistics.cpp index bd0c7b96ee8d2..12e7190ae1f74 100644 --- a/lldb/source/Target/Statistics.cpp +++ b/lldb/source/Target/Statistics.cpp @@ -72,15 +72,6 @@ json::Value ModuleStats::ToJSON() const { debug_info_had_incomplete_types); module.try_emplace("symbolTableStripped", symtab_stripped); module.try_emplace("symbolTableSymbolCount", symtab_symbol_count); - module.try_emplace("symbolsLoaded", num_symbols_loaded); - - if (!symbol_locator_time.map.empty()) { - json::Object obj; - for (const auto &entry : symbol_locator_time.map) - obj.try_emplace(entry.first().str(), entry.second); - module.try_emplace("symbolLocatorTime", std::move(obj)); - } - if (!symfile_path.empty()) module.try_emplace("symbolFilePath", symfile_path); @@ -298,7 +289,6 @@ llvm::json::Value DebuggerStats::ReportStatistics( json::Array json_targets; json::Array json_modules; - StatisticsMap symbol_locator_total_time; double symtab_parse_time = 0.0; double symtab_index_time = 0.0; double debug_parse_time = 0.0; @@ -329,8 +319,6 @@ llvm::json::Value DebuggerStats::ReportStatistics( ModuleStats module_stat; module_stat.symtab_parse_time = module->GetSymtabParseTime().get().count(); module_stat.symtab_index_time = module->GetSymtabIndexTime().get().count(); - module_stat.symbol_locator_time = module->GetSymbolLocatorStatistics(); - symbol_locator_total_time.merge(module_stat.symbol_locator_time); Symtab *symtab = module->GetSymtab(/*can_create=*/false); if (symtab) { module_stat.symtab_symbol_count = symtab->GetNumSymbols(); @@ -439,13 +427,6 @@ llvm::json::Value DebuggerStats::ReportStatistics( global_stats.try_emplace("targets", std::move(json_targets)); } - if (!symbol_locator_total_time.map.empty()) { - json::Object obj; - for (const auto &entry : symbol_locator_total_time.map) - obj.try_emplace(entry.first().str(), entry.second); - global_stats.try_emplace("totalSymbolLocatorTime", std::move(obj)); - } - ConstStringStats const_string_stats; json::Object json_memory{ {"strings", const_string_stats.ToJSON()}, diff --git a/lldb/test/Shell/Commands/command-statistics-dump.test b/lldb/test/Shell/Commands/command-statistics-dump.test index b3a3a8a9ecee7..bad7de0ecf61f 100644 --- a/lldb/test/Shell/Commands/command-statistics-dump.test +++ b/lldb/test/Shell/Commands/command-statistics-dump.test @@ -23,6 +23,7 @@ # CHECK: "modules": [ # CHECK: { # CHECK: "path": {{.*}}-main.exe +# CHECK-NOT: } # PRELOAD_TRUE: "symbolTableParseTime": # PRELOAD_TRUE-SAME: {{[1-9]+}} diff --git a/lldb/unittests/Symbol/LocateSymbolFileTest.cpp b/lldb/unittests/Symbol/LocateSymbolFileTest.cpp index 1592553672318..87f358b88eae7 100644 --- a/lldb/unittests/Symbol/LocateSymbolFileTest.cpp +++ b/lldb/unittests/Symbol/LocateSymbolFileTest.cpp @@ -29,9 +29,8 @@ TEST_F( TerminateLocateExecutableSymbolFileForUnknownExecutableAndUnknownSymbolFile) { ModuleSpec module_spec; FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - StatisticsMap map; FileSpec symbol_file_spec = - PluginManager::LocateExecutableSymbolFile(module_spec, search_paths, map); + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); } @@ -42,8 +41,7 @@ TEST_F(SymbolsTest, module_spec.GetSymbolFileSpec().SetFile( "4A524676-B24B-4F4E-968A-551D465EBAF1.so", FileSpec::Style::native); FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - StatisticsMap map; FileSpec symbol_file_spec = - PluginManager::LocateExecutableSymbolFile(module_spec, search_paths, map); + PluginManager::LocateExecutableSymbolFile(module_spec, search_paths); EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits