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
This commit is contained in:
@@ -26,6 +26,8 @@
|
||||
#include "lldb/Symbol/SymbolFile.h"
|
||||
#include "lldb/Symbol/VariableList.h"
|
||||
|
||||
#include "llvm/Support/Threading.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
||||
@@ -644,8 +646,8 @@ size_t ModuleList::GetIndexForModule(const Module *module) const {
|
||||
|
||||
static ModuleList &GetSharedModuleList() {
|
||||
static ModuleList *g_shared_module_list = nullptr;
|
||||
static std::once_flag g_once_flag;
|
||||
std::call_once(g_once_flag, []() {
|
||||
static llvm::once_flag g_once_flag;
|
||||
llvm::call_once(g_once_flag, []() {
|
||||
// NOTE: Intentionally leak the module list so a program doesn't have to
|
||||
// cleanup all modules and object files as it exits. This just wastes time
|
||||
// doing a bunch of cleanup that isn't required.
|
||||
|
||||
Reference in New Issue
Block a user