Index: include/lldb/Core/Debugger.h =================================================================== --- include/lldb/Core/Debugger.h +++ include/lldb/Core/Debugger.h @@ -402,7 +402,7 @@ std::shared_ptr m_log_callback_stream_sp; ConstString m_instance_name; static LoadPluginCallbackType g_load_plugin_callback; - typedef std::vector LoadedPluginsList; + typedef std::vector LoadedPluginsList; LoadedPluginsList m_loaded_plugins; HostThread m_event_handler_thread; HostThread m_io_handler_thread; Index: include/lldb/lldb-private-types.h =================================================================== --- include/lldb/lldb-private-types.h +++ include/lldb/lldb-private-types.h @@ -26,7 +26,7 @@ class Platform; class ExecutionContext; -typedef llvm::sys::DynamicLibrary (*LoadPluginCallbackType)( +typedef llvm::sys::DynamicLibrary* (*LoadPluginCallbackType)( const lldb::DebuggerSP &debugger_sp, const FileSpec &spec, Status &error); //---------------------------------------------------------------------- Index: source/API/SBDebugger.cpp =================================================================== --- source/API/SBDebugger.cpp +++ source/API/SBDebugger.cpp @@ -55,12 +55,11 @@ using namespace lldb; using namespace lldb_private; -static llvm::sys::DynamicLibrary LoadPlugin(const lldb::DebuggerSP &debugger_sp, - const FileSpec &spec, - Status &error) { - llvm::sys::DynamicLibrary dynlib = - llvm::sys::DynamicLibrary::getPermanentLibrary(spec.GetPath().c_str()); - if (dynlib.isValid()) { +static llvm::sys::DynamicLibrary * +LoadPlugin(const lldb::DebuggerSP &debugger_sp, const FileSpec &spec, + Status &error) { + if (llvm::sys::DynamicLibrary *dynlib = + llvm::sys::DynamicLibrary::getPermanentLibrary(spec.GetPath().c_str())) { typedef bool (*LLDBCommandPluginInit)(lldb::SBDebugger & debugger); lldb::SBDebugger debugger_sb(debugger_sp); @@ -69,7 +68,7 @@ // TODO: mangle this differently for your system - on OSX, the first // underscore needs to be removed and the second one stays LLDBCommandPluginInit init_func = - (LLDBCommandPluginInit)dynlib.getAddressOfSymbol( + (LLDBCommandPluginInit)dynlib->getAddressOfSymbol( "_ZN4lldb16PluginInitializeENS_10SBDebuggerE"); if (init_func) { if (init_func(debugger_sb)) @@ -88,7 +87,7 @@ else error.SetErrorString("no such file"); } - return llvm::sys::DynamicLibrary(); + return nullptr; } static llvm::ManagedStatic g_debugger_lifetime; Index: source/Core/Debugger.cpp =================================================================== --- source/Core/Debugger.cpp +++ source/Core/Debugger.cpp @@ -582,9 +582,8 @@ bool Debugger::LoadPlugin(const FileSpec &spec, Status &error) { if (g_load_plugin_callback) { - llvm::sys::DynamicLibrary dynlib = - g_load_plugin_callback(shared_from_this(), spec, error); - if (dynlib.isValid()) { + if (llvm::sys::DynamicLibrary *dynlib = + g_load_plugin_callback(shared_from_this(), spec, error)) { m_loaded_plugins.push_back(dynlib); return true; } Index: source/Core/PluginManager.cpp =================================================================== --- source/Core/PluginManager.cpp +++ source/Core/PluginManager.cpp @@ -52,11 +52,9 @@ typedef void (*PluginTermCallback)(); struct PluginInfo { - PluginInfo() : plugin_init_callback(nullptr), plugin_term_callback(nullptr) {} - - llvm::sys::DynamicLibrary library; - PluginInitCallback plugin_init_callback; - PluginTermCallback plugin_term_callback; + llvm::sys::DynamicLibrary* library = nullptr; + PluginInitCallback plugin_init_callback = nullptr; + PluginTermCallback plugin_term_callback = nullptr; }; typedef std::map PluginTerminateMap; @@ -113,10 +111,10 @@ std::string pluginLoadError; plugin_info.library = llvm::sys::DynamicLibrary::getPermanentLibrary( plugin_file_spec.GetPath().c_str(), &pluginLoadError); - if (plugin_info.library.isValid()) { + if (plugin_info.library) { bool success = false; plugin_info.plugin_init_callback = CastToFPtr( - plugin_info.library.getAddressOfSymbol("LLDBPluginInitialize")); + plugin_info.library->getAddressOfSymbol("LLDBPluginInitialize")); if (plugin_info.plugin_init_callback) { // Call the plug-in "bool LLDBPluginInitialize(void)" function success = plugin_info.plugin_init_callback(); @@ -125,7 +123,7 @@ if (success) { // It is ok for the "LLDBPluginTerminate" symbol to be nullptr plugin_info.plugin_term_callback = CastToFPtr( - plugin_info.library.getAddressOfSymbol("LLDBPluginTerminate")); + plugin_info.library->getAddressOfSymbol("LLDBPluginTerminate")); } else { // The initialize function returned FALSE which means the plug-in // might not be @@ -185,14 +183,12 @@ std::lock_guard guard(GetPluginMapMutex()); PluginTerminateMap &plugin_map = GetPluginMap(); - PluginTerminateMap::const_iterator pos, end = plugin_map.end(); - for (pos = plugin_map.begin(); pos != end; ++pos) { + for (const auto &pos : plugin_map) { + const PluginInfo &plugin = pos.second; // Call the plug-in "void LLDBPluginTerminate (void)" function if there // is one (if the symbol was not nullptr). - if (pos->second.library.isValid()) { - if (pos->second.plugin_term_callback) - pos->second.plugin_term_callback(); - } + if (plugin.library && plugin.plugin_term_callback) + plugin.plugin_term_callback(); } plugin_map.clear(); }