- Added some initial support for parsing Solaris OpenCSW ELF files
(contributed by Yann Rouillard).
- - Added some initial support for DWARF4 and DWARF generated by recent
- versions of Clang.
+ - Added some initial support for DWARF4 (as generated by gcc 4.8)
+ and DWARF generated by recent versions of Clang (3.3).
+ Version 0.21 (17.04.2013)
return '1' if attr.value else '0'
def _describe_attr_present(attr, die, section_offset):
+ """ Some forms may simply mean that an attribute is present,
+ without providing any value.
+ """
return '1'
def _describe_attr_block(attr, die, section_offset):
DW_FORM_block4=_describe_attr_block,
DW_FORM_block=_describe_attr_block,
DW_FORM_flag_present=_describe_attr_present,
- # Not sure how to print them
- # DW_FORM_exprloc=_describe_attr_value_passthrough,
- # DW_FORM_ref_sig8=_describe_attr_ref,
-
+ DW_FORM_exprloc=_describe_attr_block,
+ DW_FORM_ref_sig8=_describe_attr_ref,
)
DW_AT_GNU_vector = 0x2107,
DW_AT_GNU_template_name = 0x2110,
+ DW_AT_GNU_call_site_value = 0x2111,
+ DW_AT_GNU_call_site_data_value = 0x2112,
+ DW_AT_GNU_call_site_target = 0x2113,
+ DW_AT_GNU_call_site_target_clobbered = 0x2114,
+ DW_AT_GNU_tail_call = 0x2115,
+ DW_AT_GNU_all_tail_call_sites = 0x2116,
+ DW_AT_GNU_all_call_sites = 0x2117,
+ DW_AT_GNU_all_source_call_sites = 0x2118,
+
DW_AT_APPLE_optimized = 0x3fe1,
DW_AT_APPLE_flags = 0x3fe2,
DW_AT_APPLE_isa = 0x3fe3,
DW_FORM_indirect=self.Dwarf_uleb128(''),
+ # New forms in DWARFv4
DW_FORM_flag_present = StaticField('', 0),
- # Needs checkings
- #DW_FORM_sec_offset = self.Dwarf_offset(''),
- #DW_FORM_exprloc = self.Dwarf_uleb128(''),
- #DW_FORM_ref_sig8 = self.Dwarf_offset(''),
-
+ DW_FORM_sec_offset = self.Dwarf_offset(''),
+ DW_FORM_exprloc = self._make_block_struct(self.Dwarf_uleb128),
+ DW_FORM_ref_sig8 = self.Dwarf_offset(''),
)
def _create_lineprog_header(self):