Fix recent pull by refactoring the code a bit and fixing failing tests.
authorEli Bendersky <eliben@gmail.com>
Fri, 27 Dec 2013 14:30:27 +0000 (06:30 -0800)
committerEli Bendersky <eliben@gmail.com>
Fri, 27 Dec 2013 14:30:27 +0000 (06:30 -0800)
elftools/dwarf/die.py
examples/dwarf_die_tree.py
examples/examine_dwarf_info.py
examples/reference_output/dwarf_die_tree.out
examples/reference_output/examine_dwarf_info.out

index 282dc7c66df0465fd8a4e31718ed4430441ae14e..7cdefb597e5b3990d6a340fa45270fcbd5a616b8 100644 (file)
@@ -100,26 +100,18 @@ class DIE(object):
         """
         return self._parent
 
-    def get_filename(self):
-        """Return the filename for the DIE.
-        The filename, which is the join of 'DW_AT_comp_dir' and 'DW_AT_name',
-        either of which may be missing in practice. Note that its value
-        is usually a string taken from the .debug_string section and the
-        returned value will be a string.
+    def get_full_path(self):
+        """ Return the full path filename for the DIE.
+
+            The filename is the join of 'DW_AT_comp_dir' and 'DW_AT_name',
+            either of which may be missing in practice. Note that its value is
+            usually a string taken from the .debug_string section and the
+            returned value will be a string.
         """
-        comp_dir = ''
-        try:
-            comp_dir_attr = self.attributes['DW_AT_comp_dir']
-            comp_dir = bytes2str(comp_dir_attr.value)
-        except KeyError:
-            pass
-
-        fname = ''
-        try:
-            fname_attr = self.attributes['DW_AT_name']
-            fname = bytes2str(fname_attr.value)
-        except KeyError:
-            pass
+        comp_dir_attr = self.attributes.get('DW_AT_comp_dir', None)
+        comp_dir = bytes2str(comp_dir_attr.value) if comp_dir_attr else ''
+        fname_attr = self.attributes.get('DW_AT_name', None)
+        fname = bytes2str(fname_attr.value) if fname_attr else ''
         return os.path.join(comp_dir, fname)
 
     def iter_children(self):
index ba0e0e7f06a4a445cd145d224855bca51d59e13f..ef108c35adf7410f3fe667c642ee72e62f2859e3 100644 (file)
@@ -44,7 +44,7 @@ def process_file(filename):
             print('    Top DIE with tag=%s' % top_DIE.tag)
 
             # We're interested in the filename...
-            print('    name=%s' % top_DIE.get_filename())
+            print('    name=%s' % top_DIE.get_full_path())
 
             # Display DIEs recursively starting with top_DIE
             die_info_rec(top_DIE)
index 3a54848ff23b9dcd65d80071c1f94a3a0c2af625..0e1619e9f7a65bba9f2a950489f6a3712342d65d 100644 (file)
@@ -43,7 +43,7 @@ def process_file(filename):
             print('    Top DIE with tag=%s' % top_DIE.tag)
 
             # We're interested in the filename...
-            print('    name=%s' % top_DIE.get_filename())
+            print('    name=%s' % top_DIE.get_full_path())
 
 if __name__ == '__main__':
     for filename in sys.argv[1:]:
index 143cbbb42b2cafacc3487c4955652537c1c12fac..4a81a8ee177be186de4896ec119200db6f802815 100644 (file)
@@ -1,11 +1,11 @@
 Processing file: ./examples/sample_exe64.elf
   Found a compile unit at offset 0, length 115
     Top DIE with tag=DW_TAG_compile_unit
-    name=../sysdeps/x86_64/elf/start.S
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/../sysdeps/x86_64/elf/start.S
     DIE tag=DW_TAG_compile_unit
   Found a compile unit at offset 119, length 135
     Top DIE with tag=DW_TAG_compile_unit
-    name=init.c
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/init.c
     DIE tag=DW_TAG_compile_unit
       DIE tag=DW_TAG_base_type
       DIE tag=DW_TAG_base_type
@@ -21,7 +21,7 @@ Processing file: ./examples/sample_exe64.elf
       DIE tag=DW_TAG_const_type
   Found a compile unit at offset 258, length 156
     Top DIE with tag=DW_TAG_compile_unit
-    name=z.c
+    name=/tmp/ebenders/z.c
     DIE tag=DW_TAG_compile_unit
       DIE tag=DW_TAG_subprogram
         DIE tag=DW_TAG_formal_parameter
@@ -33,7 +33,7 @@ Processing file: ./examples/sample_exe64.elf
       DIE tag=DW_TAG_variable
   Found a compile unit at offset 418, length 300
     Top DIE with tag=DW_TAG_compile_unit
-    name=elf-init.c
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/elf-init.c
     DIE tag=DW_TAG_compile_unit
       DIE tag=DW_TAG_base_type
       DIE tag=DW_TAG_typedef
index 968be294a6717a355f86553e176c269e387890af..51146264cc97ce614d624c53a646d774affdbddc 100644 (file)
@@ -1,13 +1,13 @@
 Processing file: ./examples/sample_exe64.elf
   Found a compile unit at offset 0, length 115
     Top DIE with tag=DW_TAG_compile_unit
-    name=../sysdeps/x86_64/elf/start.S
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/../sysdeps/x86_64/elf/start.S
   Found a compile unit at offset 119, length 135
     Top DIE with tag=DW_TAG_compile_unit
-    name=init.c
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/init.c
   Found a compile unit at offset 258, length 156
     Top DIE with tag=DW_TAG_compile_unit
-    name=z.c
+    name=/tmp/ebenders/z.c
   Found a compile unit at offset 418, length 300
     Top DIE with tag=DW_TAG_compile_unit
-    name=elf-init.c
+    name=/usr/src/packages/BUILD/glibc-2.11.1/csu/elf-init.c