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 | |
eliben | c6db4c4 | 2011-09-20 16:03:59 +0300 | [diff] [blame] | 5 | import sys, pprint |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 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 | 7f13df2 | 2011-09-26 11:17:03 +0300 | [diff] [blame] | 13 | stream = open('tests/testfiles/exe_simple64.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() |
eliben | 3b9ad82 | 2011-09-22 11:46:26 +0300 | [diff] [blame] | 23 | |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 24 | cu = dwarfinfo.get_CU(3) |
eliben | 3b9ad82 | 2011-09-22 11:46:26 +0300 | [diff] [blame] | 25 | print 'CU header', cu.header |
eliben | 8eb8e7f | 2011-09-22 13:17:07 +0300 | [diff] [blame] | 26 | topdie = cu.get_top_DIE() |
| 27 | |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 28 | c = topdie.iter_children().next() |
| 29 | |
| 30 | print c |
| 31 | |
| 32 | print 'siblings.....' |
| 33 | |
| 34 | for s in c.iter_siblings(): |
| 35 | print s |
| 36 | |
Eli Bendersky | ebe5116 | 2011-10-27 17:34:02 +0200 | [diff] [blame^] | 37 | from elftools.dwarf.location_expr import _DW_OP_name2opcode, _DW_OP_opcode2name |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 38 | |
Eli Bendersky | ebe5116 | 2011-10-27 17:34:02 +0200 | [diff] [blame^] | 39 | print hex(_DW_OP_name2opcode['DW_OP_lit14']) |
| 40 | print _DW_OP_opcode2name[0x0e] |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 41 | |
Eli Bendersky | a42f82d | 2011-09-09 06:02:47 +0300 | [diff] [blame] | 42 | |