This revision was automatically updated to reflect the committed changes. Closed by commit rGee232506b870: [lldb] Move UnixSignals creation into Platform plugins (authored by bulbazord).
Changed prior to commit: https://reviews.llvm.org/D146263?vs=505934&id=506757#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D146263/new/ https://reviews.llvm.org/D146263 Files: lldb/include/lldb/Target/Platform.h lldb/include/lldb/Target/UnixSignals.h lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt lldb/source/Plugins/Platform/FreeBSD/CMakeLists.txt lldb/source/Plugins/Platform/FreeBSD/FreeBSDSignals.cpp lldb/source/Plugins/Platform/FreeBSD/FreeBSDSignals.h lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h lldb/source/Plugins/Platform/Linux/CMakeLists.txt lldb/source/Plugins/Platform/Linux/LinuxSignals.cpp lldb/source/Plugins/Platform/Linux/LinuxSignals.h lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp lldb/source/Plugins/Platform/Linux/PlatformLinux.h lldb/source/Plugins/Platform/NetBSD/CMakeLists.txt lldb/source/Plugins/Platform/NetBSD/NetBSDSignals.cpp lldb/source/Plugins/Platform/NetBSD/NetBSDSignals.h lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h lldb/source/Plugins/Platform/Windows/PlatformWindows.h lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt lldb/source/Plugins/Platform/gdb-server/GDBRemoteSignals.cpp lldb/source/Plugins/Platform/gdb-server/GDBRemoteSignals.h lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h lldb/source/Plugins/Process/Utility/CMakeLists.txt lldb/source/Plugins/Process/Utility/FreeBSDSignals.cpp lldb/source/Plugins/Process/Utility/FreeBSDSignals.h lldb/source/Plugins/Process/Utility/GDBRemoteSignals.cpp lldb/source/Plugins/Process/Utility/GDBRemoteSignals.h lldb/source/Plugins/Process/Utility/LinuxSignals.cpp lldb/source/Plugins/Process/Utility/LinuxSignals.h lldb/source/Plugins/Process/Utility/NetBSDSignals.cpp lldb/source/Plugins/Process/Utility/NetBSDSignals.h lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp lldb/source/Target/CMakeLists.txt lldb/source/Target/Platform.cpp lldb/source/Target/UnixSignals.cpp lldb/unittests/Process/gdb-remote/CMakeLists.txt lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp lldb/unittests/Target/RemoteAwarePlatformTest.cpp
Index: lldb/unittests/Target/RemoteAwarePlatformTest.cpp =================================================================== --- lldb/unittests/Target/RemoteAwarePlatformTest.cpp +++ lldb/unittests/Target/RemoteAwarePlatformTest.cpp @@ -35,6 +35,8 @@ MOCK_METHOD2(ResolveRemoteExecutable, std::pair<Status, ModuleSP>(const ModuleSpec &, const FileSpecList *)); + MOCK_METHOD0(CreateUnixSignals, lldb::UnixSignalsSP()); + Status ResolveRemoteExecutable( const ModuleSpec &module_spec, lldb::ModuleSP &exe_module_sp, const FileSpecList *module_search_paths_ptr) /*override*/ @@ -61,6 +63,7 @@ ProcessSP(ProcessAttachInfo &, Debugger &, Target *, Status &)); MOCK_METHOD0(CalculateTrapHandlerSymbolNames, void()); MOCK_METHOD0(GetUserIDResolver, UserIDResolver &()); + MOCK_METHOD0(CreateUnixSignals, lldb::UnixSignalsSP()); }; namespace { Index: lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp =================================================================== --- lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp +++ lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp @@ -9,7 +9,7 @@ #include "GDBRemoteTestUtils.h" -#include "Plugins/Process/Utility/LinuxSignals.h" +#include "Plugins/Platform/Linux/LinuxSignals.h" #include "Plugins/Process/gdb-remote/GDBRemoteClientBase.h" #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h" #include "lldb/Utility/GDBRemote.h" Index: lldb/unittests/Process/gdb-remote/CMakeLists.txt =================================================================== --- lldb/unittests/Process/gdb-remote/CMakeLists.txt +++ lldb/unittests/Process/gdb-remote/CMakeLists.txt @@ -11,7 +11,7 @@ lldbCore lldbHost lldbPluginPlatformMacOSX - lldbPluginProcessUtility + lldbPluginPlatformLinux lldbPluginProcessGDBRemote LLVMTestingSupport Index: lldb/source/Target/UnixSignals.cpp =================================================================== --- lldb/source/Target/UnixSignals.cpp +++ lldb/source/Target/UnixSignals.cpp @@ -7,10 +7,8 @@ //===----------------------------------------------------------------------===// #include "lldb/Target/UnixSignals.h" -#include "Plugins/Process/Utility/FreeBSDSignals.h" -#include "Plugins/Process/Utility/LinuxSignals.h" -#include "Plugins/Process/Utility/NetBSDSignals.h" #include "lldb/Host/HostInfo.h" +#include "lldb/Target/Platform.h" #include "lldb/Utility/ArchSpec.h" #include <optional> #include <sstream> @@ -30,24 +28,25 @@ m_description.assign(description); } -lldb::UnixSignalsSP UnixSignals::Create(const ArchSpec &arch) { - const auto &triple = arch.GetTriple(); - switch (triple.getOS()) { - case llvm::Triple::Linux: - return std::make_shared<LinuxSignals>(); - case llvm::Triple::FreeBSD: - case llvm::Triple::OpenBSD: - return std::make_shared<FreeBSDSignals>(); - case llvm::Triple::NetBSD: - return std::make_shared<NetBSDSignals>(); - default: - return std::make_shared<UnixSignals>(); +lldb::UnixSignalsSP UnixSignals::CreateForHost() { + static lldb::UnixSignalsSP s_unix_signals_sp; + if (s_unix_signals_sp) + return s_unix_signals_sp; + + auto host_platform_sp = Platform::GetHostPlatform(); + + // If we have no host platform, be resilient and use default UnixSignals. + if (!host_platform_sp) + s_unix_signals_sp = std::make_shared<UnixSignals>(); + else { + s_unix_signals_sp = host_platform_sp->CreateUnixSignals(); + // If the Host platform cannot create a UnixSignals object, fall back to the + // default UnixSignals. This may happen on platforms without a + // UnixSignals implementation (e.g. Windows). + if (!s_unix_signals_sp) + s_unix_signals_sp = std::make_shared<UnixSignals>(); } -} -lldb::UnixSignalsSP UnixSignals::CreateForHost() { - static lldb::UnixSignalsSP s_unix_signals_sp = - Create(HostInfo::GetArchitecture()); return s_unix_signals_sp; } Index: lldb/source/Target/Platform.cpp =================================================================== --- lldb/source/Target/Platform.cpp +++ lldb/source/Target/Platform.cpp @@ -1672,7 +1672,7 @@ const char *Platform::GetCacheHostname() { return GetHostname(); } -const UnixSignalsSP &Platform::GetRemoteUnixSignals() { +UnixSignalsSP Platform::GetRemoteUnixSignals() { static const auto s_default_unix_signals_sp = std::make_shared<UnixSignals>(); return s_default_unix_signals_sp; } Index: lldb/source/Target/CMakeLists.txt =================================================================== --- lldb/source/Target/CMakeLists.txt +++ lldb/source/Target/CMakeLists.txt @@ -85,7 +85,6 @@ lldbInterpreter lldbSymbol lldbUtility - lldbPluginProcessUtility LINK_COMPONENTS Support Index: lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp =================================================================== --- lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -206,12 +206,14 @@ arch.GetArchitectureName()); return error; } - GetTarget().SetArchitecture(arch, true /*set_platform*/); + GetTarget().SetArchitecture(arch, /*set_platform = */ true); m_thread_list = m_minidump_parser->GetThreads(); m_active_exception = m_minidump_parser->GetExceptionStream(); - SetUnixSignals(UnixSignals::Create(GetArchitecture())); + auto platform_sp = GetTarget().GetPlatform(); + if (platform_sp) + SetUnixSignals(platform_sp->GetUnixSignals()); ReadModuleList(); if (ModuleSP module = GetTarget().GetExecutableModule()) Index: lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp =================================================================== --- lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -74,7 +74,7 @@ #include "GDBRemoteRegisterContext.h" #include "GDBRemoteRegisterFallback.h" -#include "Plugins/Process/Utility/GDBRemoteSignals.h" +#include "Plugins/Platform/gdb-server/GDBRemoteSignals.h" #include "Plugins/Process/Utility/InferiorCallPOSIX.h" #include "Plugins/Process/Utility/StopInfoMachException.h" #include "ProcessGDBRemote.h" @@ -967,15 +967,13 @@ MapSupportedStructuredDataPlugins(*supported_packets); // If connected to LLDB ("native-signals+"), use signal defs for - // the remote platform. If connected to GDB, just use the standard set. - if (!m_gdb_comm.UsesNativeSignals()) { + // the remote platform (assuming it's available). If connected to GDB, just + // use the standard set. + auto platform_sp = GetTarget().GetPlatform(); + if (!platform_sp || !m_gdb_comm.UsesNativeSignals()) SetUnixSignals(std::make_shared<GDBRemoteSignals>()); - } else { - PlatformSP platform_sp = GetTarget().GetPlatform(); - if (platform_sp && platform_sp->IsConnected()) - SetUnixSignals(platform_sp->GetUnixSignals()); - else - SetUnixSignals(UnixSignals::Create(GetTarget().GetArchitecture())); + else { + SetUnixSignals(platform_sp->GetUnixSignals()); } } Index: lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp =================================================================== --- lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp +++ lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp @@ -18,6 +18,7 @@ #include "lldb/Target/ABI.h" #include "lldb/Target/DynamicLoader.h" #include "lldb/Target/MemoryRegionInfo.h" +#include "lldb/Target/Platform.h" #include "lldb/Target/Target.h" #include "lldb/Target/UnixSignals.h" #include "lldb/Utility/DataBufferHeap.h" @@ -223,9 +224,10 @@ ArchSpec target_arch = GetTarget().GetArchitecture(); ArchSpec core_arch(m_core_module_sp->GetArchitecture()); target_arch.MergeFrom(core_arch); - GetTarget().SetArchitecture(target_arch); - - SetUnixSignals(UnixSignals::Create(GetArchitecture())); + GetTarget().SetArchitecture(target_arch, /* set_platform = */ true); + + if (auto platform_sp = GetTarget().GetPlatform()) + SetUnixSignals(platform_sp->GetUnixSignals()); // Ensure we found at least one thread that was stopped on a signal. bool siginfo_signal_found = false; Index: lldb/source/Plugins/Process/Utility/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Process/Utility/CMakeLists.txt +++ lldb/source/Plugins/Process/Utility/CMakeLists.txt @@ -1,18 +1,14 @@ add_lldb_library(lldbPluginProcessUtility AuxVector.cpp - FreeBSDSignals.cpp - GDBRemoteSignals.cpp HistoryThread.cpp HistoryUnwind.cpp InferiorCallPOSIX.cpp LinuxProcMaps.cpp - LinuxSignals.cpp MemoryTagManagerAArch64MTE.cpp NativeProcessSoftwareSingleStep.cpp NativeRegisterContextDBReg_arm64.cpp NativeRegisterContextDBReg_x86.cpp NativeRegisterContextRegisterInfo.cpp - NetBSDSignals.cpp RegisterContext_x86.cpp RegisterContextDarwin_arm.cpp RegisterContextDarwin_arm64.cpp Index: lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h =================================================================== --- lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h +++ lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h @@ -13,7 +13,6 @@ #include <optional> #include <string> -#include "Plugins/Process/Utility/GDBRemoteSignals.h" #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h" #include "lldb/Target/Platform.h" @@ -146,7 +145,7 @@ void CalculateTrapHandlerSymbolNames() override; - const lldb::UnixSignalsSP &GetRemoteUnixSignals() override; + lldb::UnixSignalsSP GetRemoteUnixSignals() override; size_t ConnectToWaitingProcesses(lldb_private::Debugger &debugger, lldb_private::Status &error) override; @@ -154,6 +153,11 @@ virtual size_t GetPendingGdbServerList(std::vector<std::string> &connection_urls); + lldb::UnixSignalsSP CreateUnixSignals() override { + // PlatformRemoteGDBServer should defer to other platforms. + return lldb::UnixSignalsSP(); + } + protected: std::unique_ptr<process_gdb_remote::GDBRemoteCommunicationClient> m_gdb_client_up; Index: lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp =================================================================== --- lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp +++ lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "PlatformRemoteGDBServer.h" +#include "GDBRemoteSignals.h" #include "lldb/Host/Config.h" #include "lldb/Breakpoint/BreakpointLocation.h" @@ -31,7 +32,6 @@ #include "lldb/Utility/UriParser.h" #include "llvm/Support/FormatAdapters.h" -#include "Plugins/Process/Utility/GDBRemoteSignals.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" #include <optional> @@ -680,17 +680,13 @@ m_trap_handlers.push_back(ConstString("_sigtramp")); } -const UnixSignalsSP &PlatformRemoteGDBServer::GetRemoteUnixSignals() { +UnixSignalsSP PlatformRemoteGDBServer::GetRemoteUnixSignals() { if (!IsConnected()) - return Platform::GetRemoteUnixSignals(); + return UnixSignalsSP(); if (m_remote_signals_sp) return m_remote_signals_sp; - // If packet not implemented or JSON failed to parse, we'll guess the signal - // set based on the remote architecture. - m_remote_signals_sp = UnixSignals::Create(GetRemoteSystemArchitecture()); - StringExtractorGDBRemote response; auto result = m_gdb_client_up->SendPacketAndWaitForResponse("jSignalsInfo", response); Index: lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt +++ lldb/source/Plugins/Platform/gdb-server/CMakeLists.txt @@ -1,4 +1,5 @@ add_lldb_library(lldbPluginPlatformGDB PLUGIN + GDBRemoteSignals.cpp PlatformRemoteGDBServer.cpp LINK_LIBS @@ -6,6 +7,5 @@ lldbCore lldbHost lldbTarget - lldbPluginProcessUtility lldbPluginProcessGDBRemote ) Index: lldb/source/Plugins/Platform/Windows/PlatformWindows.h =================================================================== --- lldb/source/Plugins/Platform/Windows/PlatformWindows.h +++ lldb/source/Plugins/Platform/Windows/PlatformWindows.h @@ -82,6 +82,10 @@ std::vector<ArchSpec> m_supported_architectures; + lldb::UnixSignalsSP CreateUnixSignals() override { + return lldb::UnixSignalsSP(); + } + private: std::unique_ptr<lldb_private::UtilityFunction> MakeLoadImageUtilityFunction(lldb_private::ExecutionContext &context, Index: lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h =================================================================== --- lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h +++ lldb/source/Plugins/Platform/QemuUser/PlatformQemuUser.h @@ -69,6 +69,12 @@ arch, addr, length, prot, flags, fd, offset); } + lldb::UnixSignalsSP CreateUnixSignals() override { + // PlatformQemuUser shouldn't create its own UnixSignals. It should defer to + // other platforms. + return lldb::UnixSignalsSP(); + } + private: static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch); static void DebuggerInitialize(Debugger &debugger); Index: lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h =================================================================== --- lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h +++ lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.h @@ -35,7 +35,7 @@ GetFile(const lldb_private::FileSpec &source, const lldb_private::FileSpec &destination) override; - const lldb::UnixSignalsSP &GetRemoteUnixSignals() override; + lldb::UnixSignalsSP GetRemoteUnixSignals() override; lldb::ProcessSP Attach(lldb_private::ProcessAttachInfo &attach_info, lldb_private::Debugger &debugger, @@ -69,6 +69,8 @@ lldb_private::ConstString GetFullNameForDylib(lldb_private::ConstString basename) override; + lldb::UnixSignalsSP CreateUnixSignals() override; + protected: std::unique_ptr<lldb_private::OptionGroupPlatformRSync> m_option_group_platform_rsync; Index: lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp =================================================================== --- lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp +++ lldb/source/Plugins/Platform/POSIX/PlatformPOSIX.cpp @@ -27,6 +27,7 @@ #include "lldb/Target/ExecutionContext.h" #include "lldb/Target/Process.h" #include "lldb/Target/Thread.h" +#include "lldb/Target/UnixSignals.h" #include "lldb/Utility/DataBufferHeap.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/LLDBLog.h" @@ -294,9 +295,13 @@ return ""; } -const lldb::UnixSignalsSP &PlatformPOSIX::GetRemoteUnixSignals() { - if (IsRemote() && m_remote_platform_sp) - return m_remote_platform_sp->GetRemoteUnixSignals(); +lldb::UnixSignalsSP PlatformPOSIX::GetRemoteUnixSignals() { + if (IsRemote() && m_remote_platform_sp) { + if (auto unix_signals_sp = m_remote_platform_sp->GetRemoteUnixSignals()) + return unix_signals_sp; + } + if (auto unix_signals_sp = CreateUnixSignals()) + return unix_signals_sp; return Platform::GetRemoteUnixSignals(); } @@ -989,3 +994,7 @@ stream.Printf("lib%s.so", basename.GetCString()); return ConstString(stream.GetString()); } + +lldb::UnixSignalsSP PlatformPOSIX::CreateUnixSignals() { + return std::make_shared<UnixSignals>(); +} Index: lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h =================================================================== --- lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h +++ lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.h @@ -61,6 +61,8 @@ std::vector<ArchSpec> m_supported_architectures; + lldb::UnixSignalsSP CreateUnixSignals() override; + private: std::mutex m_mutex; std::shared_ptr<TypeSystemClang> m_type_system; Index: lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp =================================================================== --- lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp +++ lldb/source/Plugins/Platform/NetBSD/PlatformNetBSD.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "PlatformNetBSD.h" +#include "NetBSDSignals.h" #include "lldb/Host/Config.h" #include <cstdio> @@ -348,3 +349,7 @@ ast->CompleteTagDeclarationDefinition(siginfo_type); return siginfo_type; } + +lldb::UnixSignalsSP PlatformNetBSD::CreateUnixSignals() { + return std::make_shared<NetBSDSignals>(); +} Index: lldb/source/Plugins/Platform/NetBSD/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/NetBSD/CMakeLists.txt +++ lldb/source/Plugins/Platform/NetBSD/CMakeLists.txt @@ -1,4 +1,5 @@ add_lldb_library(lldbPluginPlatformNetBSD PLUGIN + NetBSDSignals.cpp PlatformNetBSD.cpp LINK_LIBS Index: lldb/source/Plugins/Platform/Linux/PlatformLinux.h =================================================================== --- lldb/source/Plugins/Platform/Linux/PlatformLinux.h +++ lldb/source/Plugins/Platform/Linux/PlatformLinux.h @@ -64,6 +64,8 @@ std::vector<ArchSpec> m_supported_architectures; + lldb::UnixSignalsSP CreateUnixSignals() override; + private: std::mutex m_mutex; std::shared_ptr<TypeSystemClang> m_type_system; Index: lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp =================================================================== --- lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp +++ lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "PlatformLinux.h" +#include "LinuxSignals.h" #include "lldb/Host/Config.h" #include <cstdio> @@ -480,3 +481,7 @@ ast->CompleteTagDeclarationDefinition(siginfo_type); return siginfo_type; } + +lldb::UnixSignalsSP PlatformLinux::CreateUnixSignals() { + return std::make_shared<LinuxSignals>(); +} Index: lldb/source/Plugins/Platform/Linux/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/Linux/CMakeLists.txt +++ lldb/source/Plugins/Platform/Linux/CMakeLists.txt @@ -1,4 +1,5 @@ add_lldb_library(lldbPluginPlatformLinux PLUGIN + LinuxSignals.cpp PlatformLinux.cpp LINK_LIBS Index: lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h =================================================================== --- lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h +++ lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.h @@ -59,6 +59,8 @@ std::vector<ArchSpec> m_supported_architectures; + lldb::UnixSignalsSP CreateUnixSignals() override; + private: std::mutex m_mutex; std::shared_ptr<TypeSystemClang> m_type_system; Index: lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp =================================================================== --- lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp +++ lldb/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "PlatformFreeBSD.h" +#include "FreeBSDSignals.h" #include "lldb/Host/Config.h" #include <cstdio> @@ -282,3 +283,7 @@ ast->CompleteTagDeclarationDefinition(siginfo_type); return siginfo_type; } + +lldb::UnixSignalsSP PlatformFreeBSD::CreateUnixSignals() { + return std::make_shared<FreeBSDSignals>(); +} Index: lldb/source/Plugins/Platform/FreeBSD/CMakeLists.txt =================================================================== --- lldb/source/Plugins/Platform/FreeBSD/CMakeLists.txt +++ lldb/source/Plugins/Platform/FreeBSD/CMakeLists.txt @@ -1,4 +1,5 @@ add_lldb_library(lldbPluginPlatformFreeBSD PLUGIN + FreeBSDSignals.cpp PlatformFreeBSD.cpp LINK_LIBS Index: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt =================================================================== --- lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt +++ lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/CMakeLists.txt @@ -19,6 +19,7 @@ lldbUtility lldbPluginExpressionParserClang lldbPluginCPPRuntime + lldbPluginProcessUtility lldbPluginTypeSystemClang CLANG_LIBS clangAST Index: lldb/include/lldb/Target/UnixSignals.h =================================================================== --- lldb/include/lldb/Target/UnixSignals.h +++ lldb/include/lldb/Target/UnixSignals.h @@ -22,7 +22,6 @@ class UnixSignals { public: - static lldb::UnixSignalsSP Create(const ArchSpec &arch); static lldb::UnixSignalsSP CreateForHost(); // Constructors and Destructors Index: lldb/include/lldb/Target/Platform.h =================================================================== --- lldb/include/lldb/Target/Platform.h +++ lldb/include/lldb/Target/Platform.h @@ -619,10 +619,12 @@ return 1; } - virtual const lldb::UnixSignalsSP &GetRemoteUnixSignals(); + virtual lldb::UnixSignalsSP GetRemoteUnixSignals(); lldb::UnixSignalsSP GetUnixSignals(); + virtual lldb::UnixSignalsSP CreateUnixSignals() = 0; + /// Locate a queue name given a thread's qaddr /// /// On a system using libdispatch ("Grand Central Dispatch") style queues, a
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits