diff options
author | Greg Clayton <gclayton@apple.com> | 2012-03-21 04:25:00 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-03-21 04:25:00 +0000 |
commit | 2af282a16bf4ad932ee9988683abece95bcf95c2 (patch) | |
tree | 5dba2176977c102fcff3b9989fc708a7ec013bd9 /lldb/source/Core/ModuleList.cpp | |
parent | f0a517fec882c3970eff36fd44ab2c7e1d831bf3 (diff) | |
download | bcm5719-llvm-2af282a16bf4ad932ee9988683abece95bcf95c2.tar.gz bcm5719-llvm-2af282a16bf4ad932ee9988683abece95bcf95c2.zip |
Fixed the ability to load a module from a path by using just a UUID. After
the migration to ModuleSpec objects this broke and is now fixed.
Also fixed a case in the darwin kernel dynamic loader where we just need to
trust the load address of the kernel if we can't read it from memory.
llvm-svn: 153164
Diffstat (limited to 'lldb/source/Core/ModuleList.cpp')
-rw-r--r-- | lldb/source/Core/ModuleList.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index 1055e21d412..0cc97988029 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -711,14 +711,17 @@ ModuleList::GetSharedModule // Make sure no one else can try and get or create a module while this // function is actively working on it by doing an extra lock on the // global mutex list. + ModuleSpec platform_module_spec(module_spec); + platform_module_spec.GetFileSpec() = file_spec; + platform_module_spec.GetPlatformFileSpec() = file_spec; ModuleList matching_module_list; - if (shared_module_list.FindModules (module_spec, matching_module_list) > 0) + if (shared_module_list.FindModules (platform_module_spec, matching_module_list) > 0) { module_sp = matching_module_list.GetModuleAtIndex(0); // If we didn't have a UUID in mind when looking for the object file, // then we should make sure the modification time hasn't changed! - if (module_spec.GetUUIDPtr() == NULL) + if (platform_module_spec.GetUUIDPtr() == NULL) { TimeValue file_spec_mod_time(file_spec.GetModificationTime()); if (file_spec_mod_time.IsValid()) @@ -736,7 +739,7 @@ ModuleList::GetSharedModule if (module_sp.get() == NULL) { - module_sp.reset (new Module (module_spec)); + module_sp.reset (new Module (platform_module_spec)); // Make sure there are a module and an object file since we can specify // a valid file path with an architecture that might not be in that file. // By getting the object file we can guarantee that the architecture matches |