aboutsummaryrefslogtreecommitdiffstats
path: root/debug/DwarfPrinter.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-09-29 18:35:36 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2015-09-29 18:35:36 +0200
commit05acff8bcb4f127a6f0ff6c587ba38d1c8cbe2fc (patch)
treeef79a4e4e812a0dc988462d9c22670cddfa29a13 /debug/DwarfPrinter.ml
parent4e0ffb627524e3a251ee9e82ed88e1ed45e26b16 (diff)
downloadcompcert-kvx-05acff8bcb4f127a6f0ff6c587ba38d1c8cbe2fc.tar.gz
compcert-kvx-05acff8bcb4f127a6f0ff6c587ba38d1c8cbe2fc.zip
More fixes for the DebugInformation.
Changed the sizeof function to take into account the bytes needed for the sleb128/uleb128 encoding of the DW_OP_* arguments and changed the end_live_range function to only close functions where the live range is currently open.
Diffstat (limited to 'debug/DwarfPrinter.ml')
-rw-r--r--debug/DwarfPrinter.ml9
1 files changed, 2 insertions, 7 deletions
diff --git a/debug/DwarfPrinter.ml b/debug/DwarfPrinter.ml
index aa1c187f..a95c71a1 100644
--- a/debug/DwarfPrinter.ml
+++ b/debug/DwarfPrinter.ml
@@ -303,12 +303,6 @@ module DwarfPrinter(Target: DWARF_TARGET):
print_uleb128 oc col
| None -> ()
- let size_of_loc_expr = function
- | DW_OP_bregx _ -> 3
- | DW_OP_plus_uconst _ -> 2
- | DW_OP_piece _ -> 2
- | DW_OP_reg i -> if i < 32 then 1 else 2
-
let print_loc_expr oc = function
| DW_OP_bregx (a,b) ->
print_byte oc dw_op_bregx;
@@ -316,7 +310,7 @@ module DwarfPrinter(Target: DWARF_TARGET):
fprintf oc " .sleb128 %ld\n" b
| DW_OP_plus_uconst i ->
print_byte oc dw_op_plus_uconst;
- print_byte oc i
+ print_uleb128 oc i
| DW_OP_piece i ->
print_byte oc dw_op_piece;
print_uleb128 oc i
@@ -360,6 +354,7 @@ module DwarfPrinter(Target: DWARF_TARGET):
let print_data_location oc dl =
match dl with
| DataLocBlock e ->
+ print_sleb128 oc (size_of_loc_expr e);
print_loc_expr oc e
| _ -> ()