Eli Bendersky | db51f26 | 2013-03-23 06:33:09 -0700 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
| 2 | # elftools |
| 3 | # |
| 4 | # Eli Bendersky (eliben@gmail.com) |
| 5 | # This code is in the public domain |
| 6 | #------------------------------------------------------------------------------- |
| 7 | |
Eli Bendersky | c4a4c07 | 2011-09-17 15:28:28 +0300 | [diff] [blame] | 8 | # Just a script for playing around with pyelftools during testing |
| 9 | # please ignore it! |
| 10 | # |
Eli Bendersky | eefac9a | 2012-01-27 07:08:05 +0200 | [diff] [blame] | 11 | from __future__ import print_function |
Eli Bendersky | c4a4c07 | 2011-09-17 15:28:28 +0300 | [diff] [blame] | 12 | |
eliben | c6db4c4 | 2011-09-20 16:03:59 +0300 | [diff] [blame] | 13 | import sys, pprint |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 14 | from elftools.elf.structs import ELFStructs |
| 15 | from elftools.elf.elffile import ELFFile |
| 16 | from elftools.elf.sections import * |
| 17 | |
Eli Bendersky | ef943b7 | 2011-11-23 16:01:52 +0200 | [diff] [blame] | 18 | from elftools.elf.relocation import * |
Eli Bendersky | ddeedc4 | 2011-11-18 05:55:06 +0200 | [diff] [blame] | 19 | |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 20 | |
Eli Bendersky | 1b69efc | 2011-12-20 06:45:00 +0200 | [diff] [blame] | 21 | stream = open('test/testfiles/exe_simple64.elf', 'rb') |
Eli Bendersky | e0735d5 | 2011-09-08 20:12:44 +0300 | [diff] [blame] | 22 | |
| 23 | efile = ELFFile(stream) |
Eli Bendersky | eefac9a | 2012-01-27 07:08:05 +0200 | [diff] [blame] | 24 | print('elfclass', efile.elfclass) |
| 25 | print('===> %s sections!' % efile.num_sections()) |
| 26 | print(efile.header) |
Eli Bendersky | 90a3f6b | 2011-12-28 06:37:16 +0200 | [diff] [blame] | 27 | |
| 28 | dinfo = efile.get_dwarf_info() |
| 29 | from elftools.dwarf.locationlists import LocationLists |
| 30 | from elftools.dwarf.descriptions import describe_DWARF_expr |
| 31 | llists = LocationLists(dinfo.debug_loc_sec.stream, dinfo.structs) |
Eli Bendersky | 26e41c4 | 2011-12-28 09:21:14 +0200 | [diff] [blame] | 32 | for loclist in llists.iter_location_lists(): |
Eli Bendersky | eefac9a | 2012-01-27 07:08:05 +0200 | [diff] [blame] | 33 | print('----> loclist!') |
Eli Bendersky | 26e41c4 | 2011-12-28 09:21:14 +0200 | [diff] [blame] | 34 | for li in loclist: |
Eli Bendersky | eefac9a | 2012-01-27 07:08:05 +0200 | [diff] [blame] | 35 | print(li) |
| 36 | print(describe_DWARF_expr(li.loc_expr, dinfo.structs)) |
Eli Bendersky | 90a3f6b | 2011-12-28 06:37:16 +0200 | [diff] [blame] | 37 | |
| 38 | |