Eli Bendersky | c4a4c07 | 2011-09-17 15:28:28 +0300 | [diff] [blame] | 1 | # Just a script for playing around with pyelftools during testing |
| 2 | # please ignore it! |
| 3 | # |
| 4 | |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 5 | import sys |
| 6 | from elftools.elf.structs import ELFStructs |
| 7 | from elftools.elf.elffile import ELFFile |
| 8 | from elftools.elf.sections import * |
| 9 | |
| 10 | # read a little-endian, 64-bit file |
| 11 | es = ELFStructs(True, 64) |
| 12 | |
eliben | 4455651 | 2011-09-19 12:54:32 +0300 | [diff] [blame] | 13 | stream = open('tests/testfiles/z.elf', 'rb') |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 14 | #stream = open('binfiles/z32.elf', 'rb') |
| 15 | |
| 16 | efile = ELFFile(stream) |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 17 | print efile.elfclass, efile.little_endian |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 18 | print '===> %s sections!' % efile.num_sections() |
eliben | 54e39b2 | 2011-09-19 13:10:57 +0300 | [diff] [blame] | 19 | |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 20 | print efile.has_dwarf_info() |
| 21 | |
eliben | ce5ec71 | 2011-09-20 10:20:32 +0300 | [diff] [blame] | 22 | dwarfinfo = efile.get_dwarf_info() |
| 23 | print dwarfinfo |
| 24 | for cu in dwarfinfo._CU: |
| 25 | print cu, cu.header |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 26 | |
| 27 | |
| 28 | #~ print efile.get_section_by_name('.debug_info').name |
eliben | 54e39b2 | 2011-09-19 13:10:57 +0300 | [diff] [blame] | 29 | |
| 30 | #~ print '===> %s segments!' % efile.num_segments() |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 31 | |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 32 | #~ for sec in efile.iter_sections(): |
| 33 | #~ print type(sec), sec.name |
| 34 | #~ if isinstance(sec, SymbolTableSection): |
| 35 | #~ print ' linked string table:', sec.stringtable.name |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 36 | |
eliben | 54e39b2 | 2011-09-19 13:10:57 +0300 | [diff] [blame] | 37 | #~ for seg in efile.iter_segments(): |
| 38 | #~ print type(seg), seg['p_type'], seg['p_offset'] |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 39 | |
eliben | 54e39b2 | 2011-09-19 13:10:57 +0300 | [diff] [blame] | 40 | #~ for sec in efile.iter_sections(): |
| 41 | #~ if isinstance(sec, SymbolTableSection): |
| 42 | #~ print 'symbol table "%s ~~~"' % sec.name |
| 43 | #~ for sym in sec.iter_symbols(): |
| 44 | #~ print '%-26s %s %s' % (sym.name, sym['st_info']['type'], sym['st_info']['bind']) |
Eli Bendersky | a42f82d | 2011-09-09 06:02:47 +0300 | [diff] [blame] | 45 | |