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 | |
Eli Bendersky | ef943b7 | 2011-11-23 16:01:52 +0200 | [diff] [blame^] | 10 | from elftools.elf.relocation import * |
Eli Bendersky | ddeedc4 | 2011-11-18 05:55:06 +0200 | [diff] [blame] | 11 | |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 12 | # read a little-endian, 64-bit file |
| 13 | es = ELFStructs(True, 64) |
| 14 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 15 | stream = open('tests/testfiles/penalty_64.o.elf', 'rb') |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 16 | #stream = open('binfiles/z32.elf', 'rb') |
| 17 | |
| 18 | efile = ELFFile(stream) |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 19 | print 'elfclass', efile.elfclass |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 20 | print '===> %s sections!' % efile.num_sections() |
eliben | 54e39b2 | 2011-09-19 13:10:57 +0300 | [diff] [blame] | 21 | |
eliben | ba447bc | 2011-11-06 11:29:49 +0200 | [diff] [blame] | 22 | #~ print efile.has_dwarf_info() |
eliben | 033b44f | 2011-09-19 15:48:39 +0300 | [diff] [blame] | 23 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 24 | dwarfinfo = efile.get_dwarf_info() |
| 25 | print dwarfinfo.get_string_from_table(0x4bc0) |
| 26 | cu = dwarfinfo.get_CU(0) |
eliben | 3b9ad82 | 2011-09-22 11:46:26 +0300 | [diff] [blame] | 27 | |
eliben | 985c2c1 | 2011-11-14 17:53:23 +0200 | [diff] [blame] | 28 | print cu.structs.Dwarf_dw_form['DW_FORM_strp'].parse('\x01\x00\x00\x00\x01\x00\x00\x00') |
| 29 | print 'CU header', cu.header |
| 30 | topdie = cu.get_top_DIE() |
eliben | 8eb8e7f | 2011-09-22 13:17:07 +0300 | [diff] [blame] | 31 | |
Eli Bendersky | 067b3fd | 2011-11-18 12:02:57 +0200 | [diff] [blame] | 32 | print topdie |
Eli Bendersky | ddeedc4 | 2011-11-18 05:55:06 +0200 | [diff] [blame] | 33 | dinfo_sec = efile.get_section_by_name('.debug_info') |
Eli Bendersky | d8d6449 | 2011-11-18 07:07:37 +0200 | [diff] [blame] | 34 | relman = DWARFRelocationManager(efile, dinfo_sec.name) |
eliben | 8eff3ee | 2011-10-02 09:50:37 +0200 | [diff] [blame] | 35 | |
Eli Bendersky | ddeedc4 | 2011-11-18 05:55:06 +0200 | [diff] [blame] | 36 | print relman._reloc_section.name, relman._reloc_section['sh_offset'] |
Eli Bendersky | 067b3fd | 2011-11-18 12:02:57 +0200 | [diff] [blame] | 37 | #pprint.pprint(relman._relocs) |
Eli Bendersky | a42f82d | 2011-09-09 06:02:47 +0300 | [diff] [blame] | 38 | |