From 24b4159b6a29328c529e0e59405e03ea192aa99e Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Fri, 16 Oct 2015 13:06:09 +0200 Subject: Implemented the usage of DW_AT_ranges for non-contiguous address ranges. The gcc produces DW_AT_ranges for non-contiguous address ranges, like compilation units containing functions which are placed in different ELF-sections or lexical scopes that are split up. With this commit CompCert also uses this DWARF v3 feature for gnu backend based targets. In order to ensure backward compability a flag is added which avoids this and produces debug info in DWARF v2 format. Bug 17392. --- debug/DwarfTypes.mli | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'debug/DwarfTypes.mli') diff --git a/debug/DwarfTypes.mli b/debug/DwarfTypes.mli index ff895623..a4c75201 100644 --- a/debug/DwarfTypes.mli +++ b/debug/DwarfTypes.mli @@ -89,7 +89,7 @@ type dw_form = type dw_range = | Pc_pair of reference * reference (* Simple low,high pc *) - | Offset of reference * constant (* DWARF 3 version for different range *) + | Offset of constant (* DWARF 3 version for different range *) | Empty (* Needed for compilation units only containing variables *) (* Types representing the attribute information per tag value *) @@ -273,6 +273,12 @@ type location_entry = } type dw_locations = constant option * location_entry list +type range_entry = (address * address) list + +type dw_ranges = range_entry list + +type dw_string = (int * string) list + type diab_entry = { section_name: string; @@ -284,9 +290,7 @@ type diab_entry = type diab_entries = diab_entry list -type dw_string = (int * string) list - -type gnu_entries = dw_entry * dw_locations * dw_string +type gnu_entries = dw_entry * dw_locations * dw_string * dw_ranges type debug_entries = | Diab of diab_entries -- cgit