diff options
| author | Stella Stamenova <stilis@microsoft.com> | 2019-02-15 21:40:59 +0000 |
|---|---|---|
| committer | Stella Stamenova <stilis@microsoft.com> | 2019-02-15 21:40:59 +0000 |
| commit | a2d9fdf5b65ab1b17409d7a7eae74802cb569c5d (patch) | |
| tree | 053ab4c8efee2cba8b2ffe4e9ac9a63281918345 /lldb/source/Plugins/DynamicLoader | |
| parent | 8220ecbce1a42410f07f0f3ea546661f76a6b896 (diff) | |
| download | bcm5719-llvm-a2d9fdf5b65ab1b17409d7a7eae74802cb569c5d.tar.gz bcm5719-llvm-a2d9fdf5b65ab1b17409d7a7eae74802cb569c5d.zip | |
[win] Resolve the module only if there isn't one already
Summary:
This commit modifies the OnLoadModule method to resolve the module
unless we already have one
Change by Hui Huang to fix the failing LLDB tests on Windows
Reviewers: labath, asmith
Subscribers: abidh, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D58303
llvm-svn: 354172
Diffstat (limited to 'lldb/source/Plugins/DynamicLoader')
| -rw-r--r-- | lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp | 28 | ||||
| -rw-r--r-- | lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h | 3 |
2 files changed, 21 insertions, 10 deletions
diff --git a/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp b/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp index f45d7116dcf..a2a17b2d4bd 100644 --- a/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp +++ b/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.cpp @@ -62,19 +62,26 @@ DynamicLoader *DynamicLoaderWindowsDYLD::CreateInstance(Process *process, return nullptr; } -void DynamicLoaderWindowsDYLD::OnLoadModule(const ModuleSpec &module_spec, +void DynamicLoaderWindowsDYLD::OnLoadModule(lldb::ModuleSP module_sp, + const ModuleSpec module_spec, lldb::addr_t module_addr) { - // Confusingly, there is no Target::AddSharedModule. Instead, calling - // GetSharedModule() with a new module will add it to the module list and - // return a corresponding ModuleSP. - Status error; - ModuleSP module_sp = - m_process->GetTarget().GetSharedModule(module_spec, &error); - if (error.Fail()) - return; + + // Resolve the module unless we already have one. + if (!module_sp) { + // Confusingly, there is no Target::AddSharedModule. Instead, calling + // GetSharedModule() with a new module will add it to the module list and + // return a corresponding ModuleSP. + Status error; + module_sp = m_process->GetTarget().GetSharedModule(module_spec, &error); + if (error.Fail()) + return; + } m_loaded_modules[module_sp] = module_addr; UpdateLoadedSectionsCommon(module_sp, module_addr, false); + ModuleList module_list; + module_list.Append(module_sp); + m_process->GetTarget().ModulesDidLoad(module_list); } void DynamicLoaderWindowsDYLD::OnUnloadModule(lldb::addr_t module_addr) { @@ -86,6 +93,9 @@ void DynamicLoaderWindowsDYLD::OnUnloadModule(lldb::addr_t module_addr) { if (module_sp) { m_loaded_modules.erase(module_sp); UnloadSectionsCommon(module_sp); + ModuleList module_list; + module_list.Append(module_sp); + m_process->GetTarget().ModulesDidUnload(module_list, false); } } diff --git a/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h b/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h index ef859255db1..100689a6312 100644 --- a/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h +++ b/lldb/source/Plugins/DynamicLoader/Windows-DYLD/DynamicLoaderWindowsDYLD.h @@ -29,7 +29,8 @@ public: static DynamicLoader *CreateInstance(Process *process, bool force); - void OnLoadModule(const ModuleSpec &module_spec, lldb::addr_t module_addr); + void OnLoadModule(lldb::ModuleSP module_sp, const ModuleSpec module_spec, + lldb::addr_t module_addr); void OnUnloadModule(lldb::addr_t module_addr); void DidAttach() override; |

