From 6bece6366fb66be3d1ac6d2586f3f8643fed97aa Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Wed, 28 Jun 2017 13:47:52 +0200 Subject: Formatted json printing. Instead of just dumping the json output it is now a little bit formatted for better reading. Furthermore the AsmToJson function for the non powerpc targets now prints the json value "null" sucht that the resulting json file is valid json. --- driver/Driver.ml | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'driver') diff --git a/driver/Driver.ml b/driver/Driver.ml index 97082720..dfbac67f 100644 --- a/driver/Driver.ml +++ b/driver/Driver.ml @@ -18,6 +18,7 @@ open Driveraux open Frontend open Assembler open Linker +open Json (* Optional sdump suffix *) let sdump_suffix = ref ".json" @@ -29,15 +30,29 @@ let jdump_magic_number = "CompCertJDUMP" ^ Version.version let dump_jasm asm sourcename destfile = let oc = open_out_bin destfile in - let print_args oc = - output_string oc Sys.executable_name; + let pp = Format.formatter_of_out_channel oc in + let get_args () = + let buf = Buffer.create 100 in + Buffer.add_string buf Sys.executable_name; for i = 1 to (Array.length !argv - 1) do - fprintf oc " %s" (Responsefile.gnu_quote !argv.(i)) - done in - let dump_compile_info oc = - fprintf oc "{\n\"directory\":\"%s\",\n\"command\":\"%t\",\n\"file\":\"%s\"\n}" (Sys.getcwd ()) print_args sourcename in - fprintf oc "{\n\"Version\":\"%s\",\n\"System\":\"%s\"\n,\"Compile Info\" : %t,\n\"Compilation Unit\":\"%s\",\n\"Asm Ast\":%a}" - jdump_magic_number Configuration.system dump_compile_info sourcename AsmToJSON.p_program asm; + Buffer.add_string buf " "; + Buffer.add_string buf (Responsefile.gnu_quote !argv.(i)); + done; + Buffer.contents buf in + let dump_compile_info pp () = + pp_jobject_start pp; + pp_jmember ~first:true pp "directory" pp_jstring (Sys.getcwd ()); + pp_jmember pp "command" pp_jstring (get_args ()); + pp_jmember pp "file" pp_jstring sourcename; + pp_jobject_end pp in + pp_jobject_start pp; + pp_jmember ~first:true pp "Version" pp_jstring jdump_magic_number; + pp_jmember pp "System" pp_jstring Configuration.system; + pp_jmember pp "Compile Info" dump_compile_info (); + pp_jmember pp "Compilation Unit" pp_jstring sourcename; + pp_jmember pp "Asm Ast" AsmToJSON.pp_program asm; + pp_jobject_end pp; + Format.pp_print_flush pp (); close_out oc -- cgit