summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2013-10-11 01:16:08 +0000
committerEd Maste <emaste@freebsd.org>2013-10-11 01:16:08 +0000
commit04a8bab0477b9b916a6d6d04df6b8ebd55b4f721 (patch)
tree13de7cb21a20f5f9a6e26432d2ee7993a2721cb8 /lldb/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
parent9218f5178d36e54eda4362e65585e360a88f1aa6 (diff)
downloadbcm5719-llvm-04a8bab0477b9b916a6d6d04df6b8ebd55b4f721.tar.gz
bcm5719-llvm-04a8bab0477b9b916a6d6d04df6b8ebd55b4f721.zip
Support mips shared object debug info
MIPS's .dyanamic section is read-only. Instead of using DT_DEBUG for the pointer to dyld information it uses a separate tag DT_MIPS_RLD_MAP which points to storage in the read-write .rld_map section, which in turn points to the dyld information. Review: http://llvm-reviews.chandlerc.com/D1890 llvm-svn: 192408
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