diff options
author | Robert Flack <flackr@gmail.com> | 2015-03-11 21:14:22 +0000 |
---|---|---|
committer | Robert Flack <flackr@gmail.com> | 2015-03-11 21:14:22 +0000 |
commit | 5f4b6c7c9e1f8d1fbda62ea3729284e7c3db27f1 (patch) | |
tree | d6612dfdb0c989723e090afa2d6e01d36898b91d | |
parent | 91bd698eafe5014cd2852d3bb6f5119b73128c6e (diff) | |
download | bcm5719-llvm-5f4b6c7c9e1f8d1fbda62ea3729284e7c3db27f1.tar.gz bcm5719-llvm-5f4b6c7c9e1f8d1fbda62ea3729284e7c3db27f1.zip |
Initialize ProcessGDBRemoteLog for LLGS to fix remote platform logging
This was previously initialized by ProcessGDBRemote::Initialize but lldb-server does not contain ProcessGDBRemote anymore so this needs to be initialized directly.
Differential Revision: http://reviews.llvm.org/D8186
llvm-svn: 231966
11 files changed, 60 insertions, 72 deletions
diff --git a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp index 5a0b5ed1419..ebd2438da92 100644 --- a/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp +++ b/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp @@ -63,14 +63,7 @@ ProcessFreeBSD::Initialize() PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance); - Log::Callbacks log_callbacks = { - ProcessPOSIXLog::DisableLog, - ProcessPOSIXLog::EnableLog, - ProcessPOSIXLog::ListLogCategories - }; - - Log::RegisterLogChannel (ProcessFreeBSD::GetPluginNameStatic(), log_callbacks); - ProcessPOSIXLog::RegisterPluginName(GetPluginNameStatic()); + ProcessPOSIXLog::Initialize(GetPluginNameStatic()); g_initialized = true; } } diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp index 9b91751aa0d..78b98f29d36 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp @@ -1125,27 +1125,6 @@ NativeProcessLinux::AttachArgs::~AttachArgs() // Public Static Methods // ----------------------------------------------------------------------------- -void -NativeProcessLinux::Initialize() -{ - static ConstString g_name("linux"); - static bool g_initialized = false; - - if (!g_initialized) - { - g_initialized = true; - - Log::Callbacks log_callbacks = { - ProcessPOSIXLog::DisableLog, - ProcessPOSIXLog::EnableLog, - ProcessPOSIXLog::ListLogCategories - }; - - Log::RegisterLogChannel (g_name, log_callbacks); - ProcessPOSIXLog::RegisterPluginName (g_name); - } -} - lldb_private::Error NativeProcessLinux::LaunchProcess ( lldb_private::Module *exe_module, diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h index 7484fea8b32..0f0366a35d6 100644 --- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h +++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.h @@ -45,12 +45,6 @@ namespace lldb_private { public: - // --------------------------------------------------------------------- - // Public Static Methods - // --------------------------------------------------------------------- - static void - Initialize(); - static lldb_private::Error LaunchProcess ( Module *exe_module, diff --git a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp index 3e3feafbc91..d63528427ca 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessLinux.cpp @@ -60,15 +60,7 @@ ProcessLinux::Initialize() PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance); - - Log::Callbacks log_callbacks = { - ProcessPOSIXLog::DisableLog, - ProcessPOSIXLog::EnableLog, - ProcessPOSIXLog::ListLogCategories - }; - - Log::RegisterLogChannel (ProcessLinux::GetPluginNameStatic(), log_callbacks); - ProcessPOSIXLog::RegisterPluginName(GetPluginNameStatic()); + ProcessPOSIXLog::Initialize(GetPluginNameStatic()); } } diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp b/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp index 624ca87b883..6d1d91ad307 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp @@ -9,6 +9,8 @@ #include "ProcessPOSIXLog.h" +#include <mutex> + #include "lldb/Interpreter/Args.h" #include "lldb/Core/StreamFile.h" @@ -33,6 +35,22 @@ GetLog () return g_log; } +void +ProcessPOSIXLog::Initialize(ConstString name) +{ + static std::once_flag g_once_flag; + + std::call_once(g_once_flag, [name](){ + Log::Callbacks log_callbacks = { + DisableLog, + EnableLog, + ListLogCategories + }; + + Log::RegisterLogChannel (name, log_callbacks); + RegisterPluginName(name); + }); +} Log * ProcessPOSIXLog::GetLogIfAllCategoriesSet (uint32_t mask) diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.h b/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.h index a1e2e3747d2..7edd839152e 100644 --- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.h +++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIXLog.h @@ -43,6 +43,12 @@ class ProcessPOSIXLog static const char *m_pluginname; public: + // --------------------------------------------------------------------- + // Public Static Methods + // --------------------------------------------------------------------- + static void + Initialize(lldb_private::ConstString name); + static void RegisterPluginName(const char *pluginName) { diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 30caf92a335..e68a5d41a3a 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -2961,14 +2961,6 @@ ProcessGDBRemote::Initialize() GetPluginDescriptionStatic(), CreateInstance, DebuggerInitialize); - - Log::Callbacks log_callbacks = { - ProcessGDBRemoteLog::DisableLog, - ProcessGDBRemoteLog::EnableLog, - ProcessGDBRemoteLog::ListLogCategories - }; - - Log::RegisterLogChannel (ProcessGDBRemote::GetPluginNameStatic(), log_callbacks); } } diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp index 15b861feaa8..0f73e44590b 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp @@ -9,6 +9,8 @@ #include "ProcessGDBRemoteLog.h" +#include <mutex> + #include "lldb/Interpreter/Args.h" #include "lldb/Core/StreamFile.h" @@ -32,6 +34,22 @@ GetLog () return g_log; } +void +ProcessGDBRemoteLog::Initialize() +{ + static ConstString g_name("gdb-remote"); + static std::once_flag g_once_flag; + + std::call_once(g_once_flag, [](){ + Log::Callbacks log_callbacks = { + DisableLog, + EnableLog, + ListLogCategories + }; + + Log::RegisterLogChannel (g_name, log_callbacks); + }); +} Log * ProcessGDBRemoteLog::GetLogIfAllCategoriesSet (uint32_t mask) diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h index 93734067f13..c551f8eba59 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h @@ -35,6 +35,9 @@ class ProcessGDBRemoteLog { public: + static void + Initialize(); + static lldb_private::Log * GetLogIfAllCategoriesSet(uint32_t mask = 0); diff --git a/lldb/source/lldb.cpp b/lldb/source/lldb.cpp index 8d822867c02..65dca60583f 100644 --- a/lldb/source/lldb.cpp +++ b/lldb/source/lldb.cpp @@ -81,6 +81,7 @@ #if defined (__linux__) #include "Plugins/Process/Linux/ProcessLinux.h" +#include "Plugins/Process/POSIX/ProcessPOSIXLog.h" #endif #if defined (_WIN32) @@ -95,6 +96,7 @@ #endif #include "Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h" +#include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemote.h" #include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h" #include "Plugins/MemoryHistory/asan/MemoryHistoryASan.h" @@ -146,8 +148,9 @@ lldb_private::InitializeForLLGS () llvm::install_fatal_error_handler(fatal_error_handler, 0); - // Initialize plug-ins + ProcessGDBRemoteLog::Initialize(); + // Initialize plug-ins ObjectContainerBSDArchive::Initialize(); ObjectFileELF::Initialize(); ObjectFilePECOFF::Initialize(); @@ -173,6 +176,10 @@ lldb_private::InitializeForLLGS () PlatformDarwinKernel::Initialize(); ObjectFileMachO::Initialize(); #endif +#if defined (__linux__) + static ConstString g_linux_log_name("linux"); + ProcessPOSIXLog::Initialize(g_linux_log_name); +#endif #ifndef LLDB_DISABLE_PYTHON ScriptInterpreterPython::InitializePrivate(); OperatingSystemPython::Initialize(); diff --git a/lldb/tools/lldb-server/lldb-gdbserver.cpp b/lldb/tools/lldb-server/lldb-gdbserver.cpp index dc3f6fa4531..076c7c4fe2f 100644 --- a/lldb/tools/lldb-server/lldb-gdbserver.cpp +++ b/lldb/tools/lldb-server/lldb-gdbserver.cpp @@ -40,7 +40,6 @@ #include "lldb/Interpreter/CommandReturnObject.h" #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" -#include "Plugins/Process/Linux/NativeProcessLinux.h" #ifndef LLGS_PROGRAM_NAME #define LLGS_PROGRAM_NAME "lldb-server" @@ -482,30 +481,17 @@ ConnectToRemote (GDBRemoteCommunicationServerLLGS &gdb_server, bool reverse_conn } } -static void -initialize () -{ -#ifndef _WIN32 - // Setup signal handlers first thing. - signal (SIGPIPE, signal_handler); - signal (SIGHUP, signal_handler); -#endif - -#if defined (__linux__) - //---------------------------------------------------------------------- - // Linux hosted plugins - //---------------------------------------------------------------------- - NativeProcessLinux::Initialize(); -#endif -} - //---------------------------------------------------------------------- // main //---------------------------------------------------------------------- int main_gdbserver (int argc, char *argv[]) { - initialize (); +#ifndef _WIN32 + // Setup signal handlers first thing. + signal (SIGPIPE, signal_handler); + signal (SIGHUP, signal_handler); +#endif const char *progname = argv[0]; const char *subcommand = argv[1]; |