aboutsummaryrefslogtreecommitdiffstats
path: root/debug/DwarfTypes.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2014-10-14 19:17:47 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2014-10-14 19:17:47 +0200
commit9a262b34da8960fc644674d8b8dcadcd7e51b829 (patch)
tree7ee7376cad2754fb28cc0de0573f69d71523c4f0 /debug/DwarfTypes.ml
parent6fea0ef0958b66711235659ac2cd7122afc04897 (diff)
downloadcompcert-9a262b34da8960fc644674d8b8dcadcd7e51b829.tar.gz
compcert-9a262b34da8960fc644674d8b8dcadcd7e51b829.zip
Added more types.
Diffstat (limited to 'debug/DwarfTypes.ml')
-rw-r--r--debug/DwarfTypes.ml125
1 files changed, 125 insertions, 0 deletions
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;
+ }