Skip to content

Commit

Permalink
[lldb] Fix "code requires global destructor" warning in g_architectur…
Browse files Browse the repository at this point in the history
…e_mutex

Differential Revision: https://reviews.llvm.org/D44060

llvm-svn: 346673
  • Loading branch information
kubamracek committed Nov 12, 2018
1 parent 63e4ebc commit b2413ea
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions lldb/source/Core/PluginManager.cpp
Expand Up @@ -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;
Expand All @@ -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) {
Expand All @@ -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;
Expand Down

0 comments on commit b2413ea

Please sign in to comment.