diff options
author | Ashok Thirumurthi <ashok.thirumurthi@intel.com> | 2013-07-11 20:39:00 +0000 |
---|---|---|
committer | Ashok Thirumurthi <ashok.thirumurthi@intel.com> | 2013-07-11 20:39:00 +0000 |
commit | 4822d9263a66fca01bf06e32e04e12fbce30451e (patch) | |
tree | bb6dc2dd151c6bedaf8817fdab77dcc4effbf8da /lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | |
parent | ed0f6468b804ad5a8f972e37e481c2a68cd174ee (diff) | |
download | bcm5719-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.cpp | 29 |
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 §ion_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()) |