diff options
author | Kuba Mracek <mracek@apple.com> | 2018-11-12 16:52:58 +0000 |
---|---|---|
committer | Kuba Mracek <mracek@apple.com> | 2018-11-12 16:52:58 +0000 |
commit | b2413ea9d358e09cb4f4678e1b10d99c2ee46849 (patch) | |
tree | a2372a12c17350a75244e8a104d71ec85435a795 /lldb/source/Core/PluginManager.cpp | |
parent | 63e4ebccfcd18afc818913e2dd9270dbabe980ef (diff) | |
download | bcm5719-llvm-b2413ea9d358e09cb4f4678e1b10d99c2ee46849.tar.gz bcm5719-llvm-b2413ea9d358e09cb4f4678e1b10d99c2ee46849.zip |
[lldb] Fix "code requires global destructor" warning in g_architecture_mutex
Differential Revision: https://reviews.llvm.org/D44060
llvm-svn: 346673
Diffstat (limited to 'lldb/source/Core/PluginManager.cpp')
-rw-r--r-- | lldb/source/Core/PluginManager.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lldb/source/Core/PluginManager.cpp b/lldb/source/Core/PluginManager.cpp index a0a9e9f0216..fbb25803988 100644 --- a/lldb/source/Core/PluginManager.cpp +++ b/lldb/source/Core/PluginManager.cpp @@ -286,7 +286,10 @@ struct ArchitectureInstance { typedef std::vector<ArchitectureInstance> ArchitectureInstances; -static std::mutex g_architecture_mutex; +static std::mutex &GetArchitectureMutex() { + static std::mutex g_architecture_mutex; + return g_architecture_mutex; +} static ArchitectureInstances &GetArchitectureInstances() { static ArchitectureInstances g_instances; @@ -296,13 +299,13 @@ static ArchitectureInstances &GetArchitectureInstances() { void PluginManager::RegisterPlugin(const ConstString &name, llvm::StringRef description, ArchitectureCreateInstance create_callback) { - std::lock_guard<std::mutex> guard(g_architecture_mutex); + std::lock_guard<std::mutex> guard(GetArchitectureMutex()); GetArchitectureInstances().push_back({name, description, create_callback}); } void PluginManager::UnregisterPlugin( ArchitectureCreateInstance create_callback) { - std::lock_guard<std::mutex> guard(g_architecture_mutex); + std::lock_guard<std::mutex> guard(GetArchitectureMutex()); auto &instances = GetArchitectureInstances(); for (auto pos = instances.begin(), end = instances.end(); pos != end; ++pos) { @@ -316,7 +319,7 @@ void PluginManager::UnregisterPlugin( std::unique_ptr<Architecture> PluginManager::CreateArchitectureInstance(const ArchSpec &arch) { - std::lock_guard<std::mutex> guard(g_architecture_mutex); + std::lock_guard<std::mutex> guard(GetArchitectureMutex()); for (const auto &instances : GetArchitectureInstances()) { if (auto plugin_up = instances.create_callback(arch)) return plugin_up; |