From e91837467546a468fb3d57f6b4ca2822949f0626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Mon, 18 Nov 2019 13:58:47 +0100 Subject: [PATCH] Add prog path in render data --- src/elf_arrows.ml | 4 ++-- src/html_renderer.ml | 13 ++++++++++--- src/render_html.jingoo | 10 ++++++++-- src/renderer.ml | 7 +++++-- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/elf_arrows.ml b/src/elf_arrows.ml index d592314..b176c2b 100644 --- a/src/elf_arrows.ml +++ b/src/elf_arrows.ml @@ -86,8 +86,8 @@ let _ = line_info ; ) elf_handles ; - let multi_render_data = List.map (fun (ElfHandle(_, _, static_info, asm)) -> - let render_data = Renderer.init_render_data asm in + let multi_render_data = List.map (fun (ElfHandle(path, _, static_info, asm)) -> + let render_data = Renderer.init_render_data asm path in let line_info = static_info.ds_evaluated_line_info in let boxed_render_data = add_line_boxes render_data line_info in boxed_render_data diff --git a/src/html_renderer.ml b/src/html_renderer.ml index bd19334..5092a38 100644 --- a/src/html_renderer.ml +++ b/src/html_renderer.ml @@ -39,13 +39,20 @@ let render_prog_box annotated_prog = Jingoo.Jg_types.(Renderer.AnnotAsm.( |> box_list )) -let render_progs_box annotated_progs = - List.map render_prog_box annotated_progs - |> Jingoo.Jg_types.box_list +let render_progs_box annotated_progs = Jingoo.Jg_types.( + List.map (fun (prog_path, annotated_prog) -> + [ + ("path", box_string prog_path); + ("prog", render_prog_box annotated_prog) + ] |> box_obj) + annotated_progs + |> box_list +) (** [render multi_render_data] renders the given [render_data] to a string. *) let render multi_render_data = Jingoo.( let annotated_progs = List.map (fun render_data -> + render_data.Renderer.render_prog_path, Renderer.render_data_to_annotated_asm render_data) multi_render_data in let models = [ ("progs", render_progs_box annotated_progs); diff --git a/src/render_html.jingoo b/src/render_html.jingoo index 2f4c17b..f7e115f 100644 --- a/src/render_html.jingoo +++ b/src/render_html.jingoo @@ -20,6 +20,11 @@ border: 1px solid #9584ff; } + .progpath { + text-align: center; + font-size: 1.3em; + } + .subroutine { margin: 20px 0; } @@ -48,9 +53,10 @@
- {% for subroutines in progs %} + {% for prog in progs %}
- {% for subroutine in subroutines %} +

{{ prog.path }}

+ {% for subroutine in prog.prog %}
{{ subroutine.sub_addr }} diff --git a/src/renderer.ml b/src/renderer.ml index 4cfb055..bfddd7e 100644 --- a/src/renderer.ml +++ b/src/renderer.ml @@ -17,6 +17,7 @@ type tag_addr_range_t = TaggedRange of addr_range_tag_t * addr_range_t * box_data_t type render_data_t = { + render_prog_path : string ; render_prog : RawAsm.asm_info_t ; render_boxes : tag_addr_range_t list ; render_prev_address : RawAsm.addr_t RawAsm.AddrMap.t @@ -51,8 +52,10 @@ let make_prev_address prog = addr_map (** Initializes a rendering data structure on the given program *) -let init_render_data prog = - { render_prog = prog ; +let init_render_data prog path = + { + render_prog_path = path ; + render_prog = prog ; render_boxes = [] ; render_prev_address = make_prev_address prog ; }