summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile/ELF
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/ObjectFile/ELF
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/ObjectFile/ELF')
-rw-r--r--lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp5
-rw-r--r--lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index 0e31cbb45c8..00204e1ec0a 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -515,7 +515,7 @@ ObjectFileELF::GetDependentModules(FileSpecList &files)
}
Address
-ObjectFileELF::GetImageInfoAddress()
+ObjectFileELF::GetImageInfoAddress(bool &indirect)
{
if (!ParseDynamicSymbols())
return Address();
@@ -539,8 +539,9 @@ ObjectFileELF::GetImageInfoAddress()
{
ELFDynamic &symbol = m_dynamic_symbols[i];
- if (symbol.d_tag == DT_DEBUG)
+ if (symbol.d_tag == DT_DEBUG || symbol.d_tag == DT_MIPS_RLD_MAP)
{
+ indirect = (symbol.d_tag == DT_MIPS_RLD_MAP);
// Compute the offset as the number of previous entries plus the
// size of d_tag.
addr_t offset = i * dynsym_hdr->sh_entsize + GetAddressByteSize();
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
index d66b6a1f252..1ee7979ef0e 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
@@ -127,7 +127,7 @@ public:
GetDependentModules(lldb_private::FileSpecList& files);
virtual lldb_private::Address
- GetImageInfoAddress();
+ GetImageInfoAddress(bool &indirect);
virtual lldb_private::Address
GetEntryPointAddress ();
OpenPOWER on IntegriCloud