Index: include/lldb/Host/Host.h =================================================================== --- include/lldb/Host/Host.h +++ include/lldb/Host/Host.h @@ -196,8 +196,6 @@ static bool GetProcessInfo(lldb::pid_t pid, ProcessInstanceInfo &proc_info); - static const lldb::UnixSignalsSP &GetUnixSignals(); - /// Launch the process specified in launch_info. The monitoring callback in /// launch_info must be set, and it will be called when the process /// terminates. Index: include/lldb/Host/Symbols.h =================================================================== --- include/lldb/Host/Symbols.h +++ include/lldb/Host/Symbols.h @@ -11,6 +11,7 @@ #include +#include "lldb/Core/FileSpecList.h" #include "lldb/Utility/FileSpec.h" namespace lldb_private { @@ -35,7 +36,9 @@ // Locating the file should happen only on the local computer or using the // current computers global settings. //---------------------------------------------------------------------- - static FileSpec LocateExecutableSymbolFile(const ModuleSpec &module_spec); + static FileSpec + LocateExecutableSymbolFile(const ModuleSpec &module_spec, + const FileSpecList &default_search_paths); static FileSpec FindSymbolFileInBundle(const FileSpec &dsym_bundle_fspec, const lldb_private::UUID *uuid, Index: include/lldb/Target/Platform.h =================================================================== --- include/lldb/Target/Platform.h +++ include/lldb/Target/Platform.h @@ -689,7 +689,7 @@ virtual const lldb::UnixSignalsSP &GetRemoteUnixSignals(); - const lldb::UnixSignalsSP &GetUnixSignals(); + lldb::UnixSignalsSP GetUnixSignals(); //------------------------------------------------------------------ /// Locate a queue name given a thread's qaddr Index: include/lldb/Target/UnixSignals.h =================================================================== --- include/lldb/Target/UnixSignals.h +++ include/lldb/Target/UnixSignals.h @@ -22,6 +22,7 @@ class UnixSignals { public: static lldb::UnixSignalsSP Create(const ArchSpec &arch); + static lldb::UnixSignalsSP CreateForHost(); //------------------------------------------------------------------ // Constructors and Destructors Index: source/Host/common/Host.cpp =================================================================== --- source/Host/common/Host.cpp +++ source/Host/common/Host.cpp @@ -56,7 +56,6 @@ #include "lldb/Host/ProcessLauncher.h" #include "lldb/Host/ThreadLauncher.h" #include "lldb/Host/posix/ConnectionFileDescriptorPosix.h" -#include "lldb/Target/UnixSignals.h" #include "lldb/Utility/DataBufferLLVM.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/Log.h" @@ -613,12 +612,6 @@ #endif -const UnixSignalsSP &Host::GetUnixSignals() { - static const auto s_unix_signals_sp = - UnixSignals::Create(HostInfo::GetArchitecture()); - return s_unix_signals_sp; -} - std::unique_ptr Host::CreateDefaultConnection(llvm::StringRef url) { #if defined(_WIN32) if (url.startswith("file://")) Index: source/Host/common/Symbols.cpp =================================================================== --- source/Host/common/Symbols.cpp +++ source/Host/common/Symbols.cpp @@ -7,10 +7,10 @@ //===----------------------------------------------------------------------===// #include "lldb/Host/Symbols.h" +#include "lldb/Core/ModuleList.h" #include "lldb/Core/ModuleSpec.h" #include "lldb/Host/FileSystem.h" #include "lldb/Symbol/ObjectFile.h" -#include "lldb/Target/Target.h" #include "lldb/Utility/ArchSpec.h" #include "lldb/Utility/DataBuffer.h" #include "lldb/Utility/DataExtractor.h" @@ -248,7 +248,9 @@ // Keep "symbols.enable-external-lookup" description in sync with this function. -FileSpec Symbols::LocateExecutableSymbolFile(const ModuleSpec &module_spec) { +FileSpec +Symbols::LocateExecutableSymbolFile(const ModuleSpec &module_spec, + const FileSpecList &default_search_paths) { FileSpec symbol_file_spec = module_spec.GetSymbolFileSpec(); if (symbol_file_spec.IsAbsolute() && FileSystem::Instance().Exists(symbol_file_spec)) @@ -256,8 +258,7 @@ const char *symbol_filename = symbol_file_spec.GetFilename().AsCString(); if (symbol_filename && symbol_filename[0]) { - FileSpecList debug_file_search_paths( - Target::GetDefaultDebugFileSearchPaths()); + FileSpecList debug_file_search_paths = default_search_paths; // Add module directory. FileSpec module_file_spec = module_spec.GetFileSpec(); Index: source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp =================================================================== --- source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp +++ source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp @@ -398,7 +398,7 @@ StringExtractorGDBRemote &packet) { StructuredData::Array signal_array; - const auto &signals = Host::GetUnixSignals(); + lldb::UnixSignalsSP signals = UnixSignals::CreateForHost(); for (auto signo = signals->GetFirstSignalNumber(); signo != LLDB_INVALID_SIGNAL_NUMBER; signo = signals->GetNextSignalNumber(signo)) { Index: source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp =================================================================== --- source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -49,6 +49,7 @@ #include "lldb/Symbol/VariableList.h" #include "lldb/Target/Language.h" +#include "lldb/Target/Target.h" #include "AppleDWARFIndex.h" #include "DWARFASTParser.h" @@ -3836,7 +3837,10 @@ module_spec.GetFileSpec() = m_obj_file->GetFileSpec(); module_spec.GetSymbolFileSpec() = FileSpec(m_obj_file->GetFileSpec().GetPath() + ".dwp"); - FileSpec dwp_filespec = Symbols::LocateExecutableSymbolFile(module_spec); + + FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); + FileSpec dwp_filespec = + Symbols::LocateExecutableSymbolFile(module_spec, search_paths); if (FileSystem::Instance().Exists(dwp_filespec)) { m_dwp_symfile = SymbolFileDWARFDwp::Create(GetObjectFile()->GetModule(), dwp_filespec); Index: source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp =================================================================== --- source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp +++ source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp @@ -17,6 +17,7 @@ #include "lldb/Host/Host.h" #include "lldb/Host/Symbols.h" #include "lldb/Symbol/ObjectFile.h" +#include "lldb/Target/Target.h" #include "lldb/Utility/StreamString.h" #include "lldb/Utility/Timer.h" @@ -103,7 +104,9 @@ FileSystem::Instance().Resolve(module_spec.GetFileSpec()); module_spec.GetSymbolFileSpec() = fspec; module_spec.GetUUID() = uuid; - FileSpec dsym_fspec = Symbols::LocateExecutableSymbolFile(module_spec); + FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); + FileSpec dsym_fspec = + Symbols::LocateExecutableSymbolFile(module_spec, search_paths); if (dsym_fspec) { DataBufferSP dsym_file_data_sp; lldb::offset_t dsym_file_data_offset = 0; Index: source/Target/Platform.cpp =================================================================== --- source/Target/Platform.cpp +++ source/Target/Platform.cpp @@ -1740,9 +1740,9 @@ return s_default_unix_signals_sp; } -const UnixSignalsSP &Platform::GetUnixSignals() { +UnixSignalsSP Platform::GetUnixSignals() { if (IsHost()) - return Host::GetUnixSignals(); + return UnixSignals::CreateForHost(); return GetRemoteUnixSignals(); } Index: source/Target/UnixSignals.cpp =================================================================== --- source/Target/UnixSignals.cpp +++ source/Target/UnixSignals.cpp @@ -11,6 +11,7 @@ #include "Plugins/Process/Utility/LinuxSignals.h" #include "Plugins/Process/Utility/MipsLinuxSignals.h" #include "Plugins/Process/Utility/NetBSDSignals.h" +#include "lldb/Host/HostInfo.h" #include "lldb/Host/StringConvert.h" #include "lldb/Utility/ArchSpec.h" @@ -50,6 +51,12 @@ } } +lldb::UnixSignalsSP UnixSignals::CreateForHost() { + static lldb::UnixSignalsSP s_unix_signals_sp = + Create(HostInfo::GetArchitecture()); + return s_unix_signals_sp; +} + //---------------------------------------------------------------------- // UnixSignals constructor //---------------------------------------------------------------------- Index: unittests/Host/SymbolsTest.cpp =================================================================== --- unittests/Host/SymbolsTest.cpp +++ unittests/Host/SymbolsTest.cpp @@ -12,6 +12,7 @@ #include "lldb/Host/FileSystem.h" #include "lldb/Host/HostInfo.h" #include "lldb/Host/Symbols.h" +#include "lldb/Target/Target.h" using namespace lldb_private; @@ -33,7 +34,9 @@ SymbolsTest, TerminateLocateExecutableSymbolFileForUnknownExecutableAndUnknownSymbolFile) { ModuleSpec module_spec; - FileSpec symbol_file_spec = Symbols::LocateExecutableSymbolFile(module_spec); + FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); + FileSpec symbol_file_spec = + Symbols::LocateExecutableSymbolFile(module_spec, search_paths); EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); } @@ -43,6 +46,8 @@ // using a GUID here because the symbol file shouldn't actually exist on disk module_spec.GetSymbolFileSpec().SetFile( "4A524676-B24B-4F4E-968A-551D465EBAF1.so", FileSpec::Style::native); - FileSpec symbol_file_spec = Symbols::LocateExecutableSymbolFile(module_spec); + FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); + FileSpec symbol_file_spec = + Symbols::LocateExecutableSymbolFile(module_spec, search_paths); EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); }