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 | 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 | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 22 | #~ dwarfinfo = efile.get_dwarf_info() |
eliben | 3b9ad82 | 2011-09-22 11:46:26 +0300 | [diff] [blame] | 23 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 24 | #~ cu = dwarfinfo.get_CU(3) |
25 | #~ print 'CU header', cu.header | ||||
26 | #~ topdie = cu.get_top_DIE() | ||||
eliben | 8eb8e7f | 2011-09-22 13:17:07 +0300 | [diff] [blame] | 27 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 28 | #~ c = topdie.iter_children().next() |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 29 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 30 | #~ print c |
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 | ba447bc | 2011-11-06 11:29:49 +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 | ba447bc | 2011-11-06 11:29:49 +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 |