diff options
| author | Ed Maste <emaste@freebsd.org> | 2013-10-11 01:16:08 +0000 |
|---|---|---|
| committer | Ed Maste <emaste@freebsd.org> | 2013-10-11 01:16:08 +0000 |
| commit | 04a8bab0477b9b916a6d6d04df6b8ebd55b4f721 (patch) | |
| tree | 13de7cb21a20f5f9a6e26432d2ee7993a2721cb8 /lldb/source/Plugins/ObjectFile/ELF | |
| parent | 9218f5178d36e54eda4362e65585e360a88f1aa6 (diff) | |
| download | bcm5719-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.cpp | 5 | ||||
| -rw-r--r-- | lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h | 2 |
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 (); |

