summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/ModuleList.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2012-03-21 04:25:00 +0000
committerGreg Clayton <gclayton@apple.com>2012-03-21 04:25:00 +0000
commit2af282a16bf4ad932ee9988683abece95bcf95c2 (patch)
tree5dba2176977c102fcff3b9989fc708a7ec013bd9 /lldb/source/Core/ModuleList.cpp
parentf0a517fec882c3970eff36fd44ab2c7e1d831bf3 (diff)
downloadbcm5719-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.cpp9
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
OpenPOWER on IntegriCloud