diff options
author | Kamil Rytarowski <n54@gmx.com> | 2017-02-06 17:55:02 +0000 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2017-02-06 17:55:02 +0000 |
commit | c5f28e2a05f2ebff09e1cd02a5faa84369c5c655 (patch) | |
tree | 2b060755745a90c26bf922b6baca662106b581cd /lldb/source/Plugins/Process/gdb-remote | |
parent | d3464bf9adc283bd5f75756bf99074f195117509 (diff) | |
download | bcm5719-llvm-c5f28e2a05f2ebff09e1cd02a5faa84369c5c655.tar.gz bcm5719-llvm-c5f28e2a05f2ebff09e1cd02a5faa84369c5c655.zip |
Switch std::call_once to llvm::call_once
Summary:
The std::call_once implementation in libstdc++ has problems on few systems: NetBSD, OpenBSD and Linux PPC. LLVM ships with a homegrown implementation llvm::call_once to help on these platforms.
This change is required in the NetBSD LLDB port. std::call_once with libstdc++ results with crashing the debugger.
Sponsored by <The NetBSD Foundation>
Reviewers: labath, joerg, emaste, mehdi_amini, clayborg
Reviewed By: labath, clayborg
Subscribers: #lldb
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D29288
llvm-svn: 294202
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote')
3 files changed, 10 insertions, 6 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp index 7751eeea72d..67e4c653946 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp @@ -20,6 +20,7 @@ // Other libraries and framework includes #include "llvm/Support/FileSystem.h" +#include "llvm/Support/Threading.h" #include "lldb/Core/Log.h" #include "lldb/Core/StreamGDBRemote.h" @@ -528,9 +529,9 @@ bool GDBRemoteCommunicationServerPlatform::FreePortForProcess(lldb::pid_t pid) { const FileSpec &GDBRemoteCommunicationServerPlatform::GetDomainSocketDir() { static FileSpec g_domainsocket_dir; - static std::once_flag g_once_flag; + static llvm::once_flag g_once_flag; - std::call_once(g_once_flag, []() { + llvm::call_once(g_once_flag, []() { const char *domainsocket_dir_env = ::getenv("LLDB_DEBUGSERVER_DOMAINSOCKET_DIR"); if (domainsocket_dir_env != nullptr) diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp index 6766da919ae..122cd9f7eb7 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -81,6 +81,7 @@ #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Threading.h" #define DEBUGSERVER_BASENAME "debugserver" using namespace lldb; @@ -3434,9 +3435,9 @@ void ProcessGDBRemote::KillDebugserverProcess() { } void ProcessGDBRemote::Initialize() { - static std::once_flag g_once_flag; + static llvm::once_flag g_once_flag; - std::call_once(g_once_flag, []() { + llvm::call_once(g_once_flag, []() { PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(), CreateInstance, DebuggerInitialize); diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp index 899037ae98a..7735cc0ba99 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp @@ -14,6 +14,8 @@ #include "lldb/Core/StreamFile.h" #include "lldb/Interpreter/Args.h" +#include "llvm/Support/Threading.h" + #include "ProcessGDBRemote.h" using namespace lldb; @@ -34,9 +36,9 @@ static Log *GetLog() { void ProcessGDBRemoteLog::Initialize() { static ConstString g_name("gdb-remote"); - static std::once_flag g_once_flag; + static llvm::once_flag g_once_flag; - std::call_once(g_once_flag, []() { + llvm::call_once(g_once_flag, []() { Log::Callbacks log_callbacks = {DisableLog, EnableLog, ListLogCategories}; Log::RegisterLogChannel(g_name, log_callbacks); |