diff --git a/lib/System/DynamicLibrary.cpp b/lib/System/DynamicLibrary.cpp index 970266f3438..3bf172c22b3 100644 --- a/lib/System/DynamicLibrary.cpp +++ b/lib/System/DynamicLibrary.cpp @@ -18,11 +18,14 @@ #include // Collection of symbol name/value pairs to be searched prior to any libraries. -static std::map g_symbols; +std::map &g_symbols() { + static std::map symbols; + return symbols; +} void llvm::sys::DynamicLibrary::AddSymbol(const char* symbolName, void *symbolValue) { - g_symbols[symbolName] = symbolValue; + g_symbols()[symbolName] = symbolValue; } // It is not possible to use ltdl.c on VC++ builds as the terms of its LGPL @@ -76,8 +79,8 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char* symbolName) { // check_ltdl_initialization(); // First check symbols added via AddSymbol(). - std::map::iterator I = g_symbols.find(symbolName); - if (I != g_symbols.end()) + std::map::iterator I = g_symbols().find(symbolName); + if (I != g_symbols().end()) return I->second; // Now search the libraries.