Index: lldb/trunk/source/Utility/ModuleCache.cpp =================================================================== --- lldb/trunk/source/Utility/ModuleCache.cpp +++ lldb/trunk/source/Utility/ModuleCache.cpp @@ -11,6 +11,7 @@ #include "lldb/Core/Log.h" #include "lldb/Core/Module.h" +#include "lldb/Core/ModuleList.h" #include "lldb/Core/ModuleSpec.h" #include "lldb/Host/File.h" #include "lldb/Host/FileSystem.h" @@ -234,7 +235,7 @@ return Error ("Module %s has invalid file size", module_file_path.GetPath ().c_str ()); // We may have already cached module but downloaded from an another host - in this case let's create a link to it. - const auto error = CreateHostSysRootModuleLink(root_dir_spec, hostname, module_spec.GetFileSpec(), module_file_path, false); + auto error = CreateHostSysRootModuleLink(root_dir_spec, hostname, module_spec.GetFileSpec(), module_file_path, false); if (error.Fail ()) return Error ("Failed to create link to %s: %s", module_file_path.GetPath().c_str(), error.AsCString()); @@ -242,15 +243,20 @@ cached_module_spec.GetUUID ().Clear (); // Clear UUID since it may contain md5 content hash instead of real UUID. cached_module_spec.GetFileSpec () = module_file_path; cached_module_spec.GetPlatformFileSpec () = module_spec.GetFileSpec (); - cached_module_sp.reset (new Module (cached_module_spec)); + + error = ModuleList::GetSharedModule(cached_module_spec, + cached_module_sp, + nullptr, + nullptr, + did_create_ptr, + false); + if (error.Fail()) + return error; FileSpec symfile_spec = GetSymbolFileSpec(cached_module_sp->GetFileSpec ()); if (symfile_spec.Exists ()) cached_module_sp->SetSymbolFileFileSpec (symfile_spec); - if (did_create_ptr) - *did_create_ptr = true; - m_loaded_modules.insert (std::make_pair (module_spec.GetUUID ().GetAsString (), cached_module_sp)); return Error ();