summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
diff options
context:
space:
mode:
authorAshok Thirumurthi <ashok.thirumurthi@intel.com>2013-07-11 20:39:00 +0000
committerAshok Thirumurthi <ashok.thirumurthi@intel.com>2013-07-11 20:39:00 +0000
commit4822d9263a66fca01bf06e32e04e12fbce30451e (patch)
treebb6dc2dd151c6bedaf8817fdab77dcc4effbf8da /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
parented0f6468b804ad5a8f972e37e481c2a68cd174ee (diff)
downloadbcm5719-llvm-4822d9263a66fca01bf06e32e04e12fbce30451e.tar.gz
bcm5719-llvm-4822d9263a66fca01bf06e32e04e12fbce30451e.zip
Adds methods to ObjectFileELF to access data in ELF segments
in preparation to add support for ELF core files. Patch by Samuel Jacob! llvm-svn: 186114
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp')
-rw-r--r--lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index fde83fb43c1..251b8f9fc9d 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -801,6 +801,33 @@ ObjectFileELF::GetSectionHeaderInfo(SectionHeaderColl &section_headers,
return 0;
}
+size_t
+ObjectFileELF::GetProgramHeaderCount()
+{
+ return ParseProgramHeaders();
+}
+
+const elf::ELFProgramHeader *
+ObjectFileELF::GetProgramHeaderByIndex(lldb::user_id_t id)
+{
+ if (!id || !ParseProgramHeaders())
+ return NULL;
+
+ if (--id < m_program_headers.size())
+ return &m_program_headers[id];
+
+ return NULL;
+}
+
+DataExtractor
+ObjectFileELF::GetSegmentDataByIndex(lldb::user_id_t id)
+{
+ const elf::ELFProgramHeader *segment_header = GetProgramHeaderByIndex(id);
+ if (segment_header == NULL)
+ return DataExtractor();
+ return DataExtractor(m_data, segment_header->p_offset, segment_header->p_filesz);
+}
+
//----------------------------------------------------------------------
// ParseSectionHeaders
//----------------------------------------------------------------------
@@ -813,7 +840,7 @@ ObjectFileELF::ParseSectionHeaders()
const ObjectFileELF::ELFSectionHeaderInfo *
ObjectFileELF::GetSectionHeaderByIndex(lldb::user_id_t id)
{
- if (!ParseSectionHeaders() || !id)
+ if (!id || !ParseSectionHeaders())
return NULL;
if (--id < m_section_headers.size())
OpenPOWER on IntegriCloud