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 | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 13 | stream = open('tests/testfiles/penalty_64.o.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 | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 17 | print 'elfclass', efile.elfclass |
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 | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 20 | #~ print efile.has_dwarf_info() |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 21 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 22 | dwarfinfo = efile.get_dwarf_info() |
| 23 | print dwarfinfo.get_string_from_table(0x4bc0) |
| 24 | cu = dwarfinfo.get_CU(0) |
eliben | 3b9ad82 | 2011-09-22 11:46:26 +0300 | [diff] [blame] | 25 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 26 | print cu.structs.Dwarf_dw_form['DW_FORM_strp'].parse('\x01\x00\x00\x00\x01\x00\x00\x00') |
| 27 | print 'CU header', cu.header |
| 28 | topdie = cu.get_top_DIE() |
eliben | 8eb8e7f | 2011-09-22 13:17:07 +0300 | [diff] [blame] | 29 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 30 | print topdie |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 31 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 32 | #~ print 'siblings.....' |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 33 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 34 | #~ for s in c.iter_siblings(): |
| 35 | #~ print s |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 36 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +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 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +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 | |