Remove int2byte and byte2int utilities from py3compat
[pyelftools.git] / z.py
diff --git a/z.py b/z.py
index 34f4bc5dd9caef2df5593ca065fe187899a8a771..18f7d35b844d2585e3905c8e21ca03e95d4952d3 100644 (file)
--- a/z.py
+++ b/z.py
@@ -1,42 +1,38 @@
+#-------------------------------------------------------------------------------
+# elftools
+#
+# Eli Bendersky (eliben@gmail.com)
+# This code is in the public domain
+#-------------------------------------------------------------------------------
+
 # Just a script for playing around with pyelftools during testing
 # please ignore it!
 #
+from __future__ import print_function
 
 import sys, pprint
 from elftools.elf.structs import ELFStructs
 from elftools.elf.elffile import ELFFile
 from elftools.elf.sections import *
 
-# read a little-endian, 64-bit file
-es = ELFStructs(True, 64)
-
-stream = open('tests/testfiles/exe_simple64.elf', 'rb')
-#stream = open('binfiles/z32.elf', 'rb')
-
-efile = ELFFile(stream)
-print efile.elfclass, efile.little_endian
-print '===> %s sections!' % efile.num_sections() 
-
-print efile.has_dwarf_info()
+from elftools.elf.relocation import *
 
-dwarfinfo = efile.get_dwarf_info()
 
-cu = dwarfinfo.get_CU(3)
-print 'CU header', cu.header
-topdie = cu.get_top_DIE()
+stream = open('test/testfiles/exe_simple64.elf', 'rb')
 
-c = topdie.iter_children().next()
-
-print c
-
-print 'siblings.....'
-
-for s in c.iter_siblings():
-    print s
-
-from elftools.dwarf.location_expr import _DW_OP_name2opcode, _DW_OP_opcode2name
-
-print hex(_DW_OP_name2opcode['DW_OP_lit14'])
-print _DW_OP_opcode2name[0x0e]
+efile = ELFFile(stream)
+print('elfclass', efile.elfclass)
+print('===> %s sections!' % efile.num_sections())
+print(efile.header)
+
+dinfo = efile.get_dwarf_info()
+from elftools.dwarf.locationlists import LocationLists
+from elftools.dwarf.descriptions import describe_DWARF_expr
+llists = LocationLists(dinfo.debug_loc_sec.stream, dinfo.structs)
+for loclist in llists.iter_location_lists():
+    print('----> loclist!')
+    for li in loclist:
+        print(li)
+        print(describe_DWARF_expr(li.loc_expr, dinfo.structs))