aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--debug/DwarfTypes.ml121
2 files changed, 122 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 2b668724..a0744c0d 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@
include Makefile.config
-DIRS=lib common $(ARCH) backend cfrontend driver \
+DIRS=lib common $(ARCH) backend cfrontend driver debug\
flocq/Core flocq/Prop flocq/Calc flocq/Appli exportclight \
cparser cparser/validator
diff --git a/debug/DwarfTypes.ml b/debug/DwarfTypes.ml
new file mode 100644
index 00000000..afa29e13
--- /dev/null
+++ b/debug/DwarfTypes.ml
@@ -0,0 +1,121 @@
+(* *********************************************************************)
+(* *)
+(* The Compcert verified compiler *)
+(* *)
+(* Bernhard Schommer, AbsInt Angewandte Informatik GmbH *)
+(* *)
+(* AbsInt Angewandte Informatik GmbH. All rights reserved. This file *)
+(* is distributed under the terms of the INRIA Non-Commercial *)
+(* License Agreement. *)
+(* *)
+(* *********************************************************************)
+
+(* Types used for writing dwarf debug information *)
+
+(* Basic types for the value of attributes *)
+
+type constant = int
+
+type flag = bool
+
+type reference = int
+
+type encoding =
+ | DW_ATE_address
+ | DW_ATE_boolean
+ | DW_ATE_complex_float
+ | DW_ATE_float
+ | DW_ATE_signed
+ | DW_ATE_signed_char
+ | DW_ATE_unsigned
+ | DW_ATE_unsigned_char
+
+type identifier_case =
+ | DW_ID_case_sensitive
+ | DW_ID_up_case
+ | DW_ID_down_case
+ | DW_ID_case_insensitive
+
+type address = int
+
+type language =
+ | DW_LANG_C
+ | DW_LANG_C89
+
+type block = string (* Used as bitvector *)
+
+type const_value =
+ | String of string
+ | Const of constant
+ | Block of block
+
+(* Types representing the attribute information per tag value *)
+
+type dw_tag_array_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;
+ dw_at_stride_size: constant option;
+ dw_at_type: reference option;
+ }
+
+type dw_tag_base_type =
+ {
+ dw_at_bit_offset: constant option;
+ dw_at_bit_size: constant option;
+ dw_at_byte_size: constant option;
+ dw_at_encoding: encoding option;
+ dw_at_name: string option;
+ dw_at_sibling: reference option;
+ }
+
+type dw_tag_compile_unit =
+ {
+ dw_at_base_types: reference option;
+ dw_at_comp_dir: string option;
+ dw_at_identifier_case: identifier_case option;
+ dw_at_high_pc: address option;
+ dw_at_language: language option;
+ dw_at_low_pc: address option;
+ dw_at_macro_info: constant option;
+ dw_at_name: string option;
+ dw_at_producer: string option;
+ dw_at_sibling: reference option;
+ dw_at_stmt_list: constant option;
+ }
+
+type dw_tag_const_type =
+ {
+ dw_at_sibling: reference option;
+ dw_at_type: reference option;
+ }
+
+type dw_tag_constant =
+ {
+ dw_at_const_value: constant option;
+ dw_at_declaration: flag option;
+ dw_at_external: flag option;
+ dw_at_name: string option;
+ dw_at_sibling: reference option;
+ dw_at_start_scope: constant option;
+ dw_at_type: reference option;
+ }
+
+type dw_tag_enumeration_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_enumerator =
+ {
+ dw_at_const_value: constant option;
+ dw_at_name: string option;
+ dw_at_sibling: reference option;
+ }