aboutsummaryrefslogtreecommitdiffstats
path: root/powerpc
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-10-16 13:06:09 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2015-10-16 13:06:09 +0200
commit24b4159b6a29328c529e0e59405e03ea192aa99e (patch)
tree4b39da911a2eb037e3c9fb3950d53bb0bd6a41b2 /powerpc
parent1e52bb2001964d87086cea00d0cb779e270b99ce (diff)
downloadcompcert-kvx-24b4159b6a29328c529e0e59405e03ea192aa99e.tar.gz
compcert-kvx-24b4159b6a29328c529e0e59405e03ea192aa99e.zip
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.
Diffstat (limited to 'powerpc')
-rw-r--r--powerpc/AsmToJSON.ml1
-rw-r--r--powerpc/TargetPrinter.ml2
2 files changed, 3 insertions, 0 deletions
diff --git a/powerpc/AsmToJSON.ml b/powerpc/AsmToJSON.ml
index bc99be7a..b8f08f22 100644
--- a/powerpc/AsmToJSON.ml
+++ b/powerpc/AsmToJSON.ml
@@ -342,6 +342,7 @@ let p_section oc = function
| Section_debug_abbrev
| Section_debug_line _
| Section_debug_loc
+ | Section_debug_ranges
| Section_debug_str -> () (* There should be no info in the debug sections *)
let p_int_opt oc = function
diff --git a/powerpc/TargetPrinter.ml b/powerpc/TargetPrinter.ml
index 54a2868a..709a0d7c 100644
--- a/powerpc/TargetPrinter.ml
+++ b/powerpc/TargetPrinter.ml
@@ -127,6 +127,7 @@ module Linux_System : SYSTEM =
| Section_debug_abbrev -> ".section .debug_abbrev,\"\",@progbits"
| Section_debug_loc -> ".section .debug_loc,\"\",@progbits"
| Section_debug_line _ -> ".section .debug_line,\"\",@progbits"
+ | Section_debug_ranges -> ".section .debug_ranges,\"\",@progbits"
| Section_debug_str -> ".section .debug_str,\"MS\",@progbits,1"
@@ -222,6 +223,7 @@ module Diab_System : SYSTEM =
sprintf ".section .debug_line.%s,,n\n" s
| Section_debug_line None ->
sprintf ".section .debug_line,,n\n"
+ | Section_debug_ranges
| Section_debug_str -> assert false (* Should not be used *)
let section oc sec =