add_box_excl: use greater address below bound

It is possible, eg. for the end-of-data debug_line tag, that the address
does not correspond to an instruction address but eg. the last address
of .text. To avoid an error here, we use as a bound address the greater
known address below the given bound instead.
This commit is contained in:
Théophile Bastian 2019-11-22 12:44:46 +01:00
parent d738314490
commit 89ac1b8368

View file

@ -97,11 +97,14 @@ let add_box render_data range opt_data : render_data_t * int =
(** Same as [add_box], with an included start, excluded end for range. *) (** Same as [add_box], with an included start, excluded end for range. *)
let add_box_excl render_data (addr_beg, addr_end) opt_data = let add_box_excl render_data (addr_beg, addr_end) opt_data =
(match RawAsm.AddrMap.find_opt addr_end render_data.render_prev_address with let lower_than_end addr = addr <= addr_end in
| None -> Format.eprintf "Box end address %x not found, ignoring box." (match RawAsm.AddrMap.find_last_opt
addr_end ; lower_than_end render_data.render_prev_address with
raise Not_found | None ->
| Some end_bound -> add_box render_data (addr_beg, end_bound) opt_data Format.eprintf "Box end address %x not found, ignoring box.@."
addr_end ;
raise Not_found
| Some (_, end_bound) -> add_box render_data (addr_beg, end_bound) opt_data
) )
(** [to_file renderer render_data path] renders the given [render_data] to a (** [to_file renderer render_data path] renders the given [render_data] to a