From 9a262b34da8960fc644674d8b8dcadcd7e51b829 Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Tue, 14 Oct 2014 19:17:47 +0200 Subject: Added more types. --- debug/DwarfTypes.ml | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) (limited to 'debug/DwarfTypes.ml') diff --git a/debug/DwarfTypes.ml b/debug/DwarfTypes.ml index afa29e13..61a6e768 100644 --- a/debug/DwarfTypes.ml +++ b/debug/DwarfTypes.ml @@ -44,11 +44,36 @@ type language = type block = string (* Used as bitvector *) +type calling_convention = + | DW_CC_normal + | DW_CC_program + | DW_CC_nocall + | DW_CC_lo_user + | DW_CC_hi_user + +type inline = + | DW_INL_not_inlined + | DW_INL_inlined + | DW_INL_declared_not_inlined + | DW_INL_declared_inlined + type const_value = | String of string | Const of constant | Block of block +type location_value = + | Const of constant + | Block of block + +type data_location_value = + | Block of block + | Ref of reference + +type bound_value = + | Const of constant + | Ref of reference + (* Types representing the attribute information per tag value *) type dw_tag_array_type = @@ -119,3 +144,103 @@ type dw_tag_enumerator = dw_at_name: string option; dw_at_sibling: reference option; } + +type dw_tag_formal_parameter = + { + dw_at_artificial: flag option; + dw_at_location: location_value option; + dw_at_name: string option; + dw_at_segment: location_value option; + dw_at_sibling: reference option; + dw_at_type: reference option; + dw_at_variable_parameter: flag option; + } + +type dw_tag_inlined_subroutine = + { + dw_at_high_pc: address option; + dw_at_low_pc: address option; + dw_at_segment: location_value option; + dw_at_sibling: reference option; + dw_at_return_addr: location_value option; + dw_at_start_scope: constant option; + } + +type dw_tag_label = + { + dw_at_low_pc: address option; + dw_at_name: string option; + dw_at_segment: location_value option; + dw_at_start_scope: constant option; + dw_at_sibling: reference option; + } + +type dw_tag_lexical_block = + { + dw_at_high_pc: address option; + dw_at_low_pc: address option; + dw_at_name: string option; + dw_at_segment: location_value option; + dw_at_sibling: reference option; + } + +type dw_tag_member = + { + dw_at_byte_size: constant option; + dw_at_bit_offset: constant option; + dw_at_bit_size: constant option; + dw_at_data_member_location: data_location_value option; + dw_at_declaration: flag option; + dw_at_name: string option; + dw_at_sibling: reference option; + dw_at_type: reference option; + } + +type dw_tag_pointer_type = + { + dw_at_address_class: constant option; + dw_at_sibling: reference option; + dw_at_type: reference option; + } + +type dw_tag_structure_type = + { + dw_at_byte_size: constant option; + dw_at_declaration: flag option; + dw_at_name: string option; + dw_at_sibling: reference option; + dw_at_start_scope: constant option; + } + +type dw_tag_subprogram = + { + dw_at_address_class: constant option; + dw_at_artificial: flag option; + dw_at_calling_convention: calling_convention option; + dw_at_declaration: flag option; + dw_at_external: flag option; + dw_frame_base: location_value option; + dw_at_high_pc: address option; + dw_at_inline: inline option; + dw_at_low_pc: address option; + dw_at_name: string option; + dw_at_prototyped: flag option; + dw_at_return_addr: location_value option; + dw_at_segment: location_value option; + dw_at_sibling: reference option; + dw_at_start_scope: constant option; + dw_at_static_link: location_value option; + dw_at_type: reference option; + } + +type dw_subrange_type = + { + dw_at_byte_size: constant option; + dw_at_declaration: flag option; + dw_at_count: bound_value option; + dw_at_lower_bound: bound_value option; + dw_at_name: string option; + dw_at_sibling: reference option; + dw_at_type: reference option; + dw_at_upper_bound: bound_value option; + } -- cgit