2019-09-27 16:38:31 +02:00
|
|
|
let uncaught_exn exc backtrace =
|
|
|
|
let descr = (match exc with
|
|
|
|
| Failure msg -> Format.sprintf " (%s)" msg
|
|
|
|
| _ -> ""
|
|
|
|
) in
|
|
|
|
Format.eprintf "Uncaught exception %s%s. Backtrace:@.%s@."
|
|
|
|
(Printexc.exn_slot_name exc)
|
|
|
|
descr
|
|
|
|
(Printexc.raw_backtrace_to_string backtrace) ;
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
let read_all handle =
|
|
|
|
let len = in_channel_length handle in
|
|
|
|
let buffer = Bytes.create len in
|
|
|
|
let bytes_read = input handle buffer 0 len in
|
2019-11-18 11:34:14 +01:00
|
|
|
if bytes_read <> len then (
|
|
|
|
Format.eprintf "Could not read whole file. Read %d, expected %d.@."
|
|
|
|
bytes_read len ;
|
2019-09-27 16:38:31 +02:00
|
|
|
raise (Failure "Could not read whole file")
|
2019-11-18 11:34:14 +01:00
|
|
|
)
|
2019-09-27 16:38:31 +02:00
|
|
|
else
|
|
|
|
Bytes.to_string buffer
|
|
|
|
|
|
|
|
let _ =
|
|
|
|
Printexc.record_backtrace true ;
|
|
|
|
Printexc.set_uncaught_exception_handler uncaught_exn ;
|
|
|
|
let in_path = "/tmp/objdump_dump" in
|
|
|
|
let in_handle = open_in in_path in
|
|
|
|
let objdump_out = read_all in_handle in
|
|
|
|
close_in in_handle ;
|
|
|
|
let parsed = Asm_acquire.interpret_objdump objdump_out in
|
2019-11-18 11:34:14 +01:00
|
|
|
|
|
|
|
let render_data = Renderer.init_render_data parsed in
|
|
|
|
let render_data, box1 = Renderer.add_box render_data (0x1004, 0x100f) in
|
|
|
|
ignore box1 ;
|
|
|
|
Format.printf "%s@." (Renderer.to_string Html_renderer.render render_data)
|