From dc0ac714064d9627fb17ad5166c2ec2752323425 Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Thu, 6 Nov 2014 19:13:13 +0100 Subject: Added more functions to print the abbreviations. --- powerpc/PrintDiab.ml | 147 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 120 insertions(+), 27 deletions(-) (limited to 'powerpc') diff --git a/powerpc/PrintDiab.ml b/powerpc/PrintDiab.ml index 516b0038..bbb08229 100644 --- a/powerpc/PrintDiab.ml +++ b/powerpc/PrintDiab.ml @@ -123,27 +123,64 @@ module Diab_System = add_abbr_uleb v1 buf; add_abbr_uleb v2 buf - let add_sibling = add_abbr_entry (1,19) - - let add_decl_file = add_abbr_entry (58,6) + let add_sibling = add_abbr_entry (0x1,0x13) + + let add_decl_file = add_abbr_entry (0x3a,0x6) - let add_decl_line = add_abbr_entry (59,15) + let add_decl_line = add_abbr_entry (0x3b,0xf) - let add_type = add_abbr_entry (73,16) + let add_type = add_abbr_entry (0x49,0x10) - let add_name = add_abbr_entry (3,8) + let add_name = add_abbr_entry (0x3,0x8) - let add_encoding = add_abbr_entry (62,11) + let add_encoding = add_abbr_entry (0x3e,0xb) - let add_byte_size = add_abbr_entry (11,11) + let add_byte_size = add_abbr_entry (0xb,0xb) - let add_high_pc = add_abbr_entry (18,1) + let add_high_pc = add_abbr_entry (0x12,0x1) - let add_low_pc = add_abbr_entry (17,1) + let add_low_pc = add_abbr_entry (0x11,0x1) - let add_stmt_list = add_abbr_entry (16,6) + let add_stmt_list = add_abbr_entry (0x10,0x6) - let add_declaration = add_abbr_entry (60,12) + let add_declaration = add_abbr_entry (0x3c,0xc) + + let add_external = add_abbr_entry (0x3f,0xc) + + let add_prototyped = add_abbr_entry (0x27,0xc) + + let add_bit_offset = add_abbr_entry (0xd,0xb) + + let add_location loc buf = + match loc with + | None -> () + | Some (LocConst _) -> add_abbr_entry (0x2,0x6) buf + | Some (LocBlock _) -> add_abbr_entry (0x2,0x9) buf + + let add_data_location loc buf = + match loc with + | None -> () + | Some (DataLocBlock __) -> add_abbr_entry (0x38,0x9) buf + | Some (DataLocRef _) -> add_abbr_entry (0x38,0x13) buf + + let add_bound_value bound = + match bound with + | BoundConst _ -> add_abbr_entry (0x2f,0xf) + | BoundRef _ -> add_abbr_entry (0x2f,0x13) + + let add_comp_dir = add_abbr_entry (0x1b,0x8) + + let add_language = add_abbr_entry (0x13,0xf) + + let add_producer = add_abbr_entry (0x25,0x8) + + let add_value = add_abbr_entry (0x1c,0xd) + + let add_artificial = add_abbr_entry (0x34,0xc) + + let add_variable_parameter = add_abbr_entry (0x4b,0xc) + + let add_bit_size = add_abbr_entry (0xc,0xb) let abbrv_string_of_entity entity has_sibling = let buf = Buffer.create 12 in @@ -161,42 +198,52 @@ module Diab_System = in (match entity.tag with | DW_TAG_array_type e -> - prologue 1; + prologue 0x1; add_attr_some e.array_type_decl_file add_decl_file; add_attr_some e.array_type_decl_line add_decl_line; add_type buf | DW_TAG_base_type _ -> - prologue 36; + prologue 0x24; add_encoding buf; add_byte_size buf; add_name buf | DW_TAG_compile_unit e -> - prologue 17; - add_abbr_entry (27,8) buf; + prologue 0x11; + add_comp_dir buf; add_high_pc buf; add_low_pc buf; - add_abbr_entry (19,15) buf; + add_language buf; add_name buf; - add_abbr_entry (37,8) buf; + add_producer buf; add_attr_some e.compile_unit_stmt_list add_stmt_list | DW_TAG_const_type _ -> - prologue 40; + prologue 0x26; add_type buf | DW_TAG_enumeration_type e -> - prologue 4; + prologue 0x4; add_attr_some e.enumeration_decl_file add_decl_file; add_attr_some e.enumeration_decl_line add_decl_line; add_byte_size buf; add_name buf; add_attr_some e.enumeration_declaration add_declaration | DW_TAG_enumerator e -> - prologue 40; + prologue 0x28; add_attr_some e.enumerator_decl_file add_decl_file; add_attr_some e.enumerator_decl_line add_decl_line; - add_abbr_entry (28,13) buf; + add_value buf; add_name buf + | DW_TAG_formal_parameter e -> + prologue 0x34; + add_attr_some e.formal_parameter_decl_file add_decl_file; + add_attr_some e.formal_parameter_decl_line add_decl_line; + add_attr_some e.formal_parameter_artificial add_artificial; + add_location e.formal_parameter_location buf; + add_name buf; + add_location e.formal_parameter_segment buf; + add_type buf; + add_attr_some e.formal_parameter_variable_parameter add_variable_parameter | DW_TAG_label _ -> - prologue 10; + prologue 0xa; add_low_pc buf; add_name buf; | DW_TAG_lexical_block _ -> @@ -208,9 +255,9 @@ module Diab_System = add_attr_some e.member_decl_file add_decl_file; add_attr_some e.member_decl_line add_decl_line; add_attr_some e.member_byte_size add_byte_size; - add_attr_some e.member_bit_offset (add_abbr_entry (13,11)); - add_attr_some e.member_bit_size (add_abbr_entry (12,11)); - add_attr_some e.member_data_member_location (add_abbr_entry (56,9)); + add_attr_some e.member_bit_offset add_bit_offset; + add_attr_some e.member_bit_size add_bit_size; + add_data_location e.member_data_member_location buf; add_attr_some e.member_declaration add_declaration; add_name buf; add_type buf @@ -224,7 +271,53 @@ module Diab_System = add_byte_size buf; add_attr_some e.structure_declaration add_declaration; add_name buf - | _ -> ()); + | DW_TAG_subprogram e -> + prologue 0x2e; + add_attr_some e.subprogram_decl_file add_decl_file; + add_attr_some e.subprogram_decl_line add_decl_line; + add_attr_some e.subprogram_external add_external; + add_high_pc buf; + add_low_pc buf; + add_name buf; + add_prototyped buf; + add_type buf + | DW_TAG_subrange_type e -> + prologue 0x21; + add_attr_some e.subrange_type add_type; + add_bound_value e.subrange_upper_bound buf + | DW_TAG_subroutine_type _ -> + prologue 0x15; + add_prototyped buf + | DW_TAG_typedef e -> + prologue 0x16; + add_attr_some e.typedef_decl_file add_decl_file; + add_attr_some e.typedef_decl_line add_decl_line; + add_name buf; + add_type buf + | DW_TAG_union_type e -> + prologue 0x17; + add_attr_some e.union_decl_file add_decl_file; + add_attr_some e.union_decl_line add_decl_line; + add_byte_size buf; + add_name buf + | DW_TAG_unspecified_parameter e -> + prologue 0x18; + add_attr_some e.unspecified_parameter_decl_file add_decl_file; + add_attr_some e.unspecified_parameter_decl_line add_decl_line; + add_attr_some e.unspecified_parameter_artificial add_artificial + | DW_TAG_variable e -> + prologue 0x34; + add_attr_some e.variable_decl_file add_decl_file; + add_attr_some e.variable_decl_line add_decl_line; + add_attr_some e.variable_declaration add_declaration; + add_attr_some e.variable_external add_external; + add_location e.variable_location buf; + add_name buf; + add_location e.variable_segment buf; + add_type buf + | DW_TAG_volatile_type _ -> + prologue 0x35; + add_type buf); Buffer.contents buf let get_abbrv entity has_sibling = -- cgit