summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp')
-rw-r--r--lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
index b46c9375802..a1511014009 100644
--- a/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
+++ b/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
@@ -289,12 +289,24 @@ ProcessPOSIX::GetImageInfoAddress()
{
Target *target = &GetTarget();
ObjectFile *obj_file = target->GetExecutableModule()->GetObjectFile();
- Address addr = obj_file->GetImageInfoAddress();
+ bool indirect;
+ Address addr = obj_file->GetImageInfoAddress(indirect);
- if (addr.IsValid())
- return addr.GetLoadAddress(target);
- else
- return LLDB_INVALID_ADDRESS;
+ if (addr.IsValid())
+ {
+ if (indirect)
+ {
+ Address ind_addr;
+ Error error;
+ if (target->ReadPointerFromMemory(addr.GetLoadAddress(target), false, error, ind_addr))
+ return ind_addr.GetLoadAddress(target);
+ }
+ else
+ {
+ return addr.GetLoadAddress(target);
+ }
+ }
+ return LLDB_INVALID_ADDRESS;
}
Error
OpenPOWER on IntegriCloud