From 593f94055a72c8569e0f79833feb274a64241005 Mon Sep 17 00:00:00 2001 From: Jacques-Henri Jourdan Date: Thu, 2 May 2019 17:05:15 +0200 Subject: [PATCH] Dynlink support for ocamldebug This commit adds dynlink support for ocamldebug. As a side effect, it also: - factorizes the various functions searching for a code fragment into one, called [caml_find_code_fragment]; - removes the [caml_register_code_fragment], which does not seem to be used anywhere, and which clearly should not be used by external code. --- Changes | 7 + boot/ocamlc | Bin 2625388 -> 2629006 bytes boot/ocamllex | Bin 322848 -> 323190 bytes debugger/.depend | 35 +++- debugger/breakpoints.ml | 128 ++++++-------- debugger/breakpoints.mli | 17 +- debugger/checkpoints.ml | 24 +-- debugger/checkpoints.mli | 9 +- debugger/command_line.ml | 52 +++--- debugger/debugcom.ml | 73 +++++--- debugger/debugcom.mli | 25 ++- debugger/debugger_config.ml | 3 + debugger/debugger_config.mli | 1 + debugger/eval.ml | 5 +- debugger/eval.mli | 2 +- debugger/events.ml | 8 +- debugger/events.mli | 9 +- debugger/frames.ml | 14 +- debugger/frames.mli | 8 +- debugger/lexer.mll | 2 + debugger/parser.mly | 6 +- debugger/parser_aux.mli | 2 +- debugger/pos.ml | 10 +- debugger/pos.mli | 2 +- debugger/program_management.ml | 5 +- debugger/show_information.ml | 33 ++-- debugger/show_information.mli | 8 +- debugger/symbols.ml | 91 +++++++--- debugger/symbols.mli | 40 +++-- debugger/time_travel.ml | 68 +++++-- manual/manual/cmds/debugger.etex | 38 +++- runtime/.depend | 72 ++++---- runtime/backtrace.c | 1 + runtime/backtrace_byt.c | 4 + runtime/caml/debugger.h | 21 ++- runtime/caml/fix_code.h | 1 - runtime/caml/intext.h | 18 -- runtime/caml/misc.h | 13 ++ runtime/debugger.c | 166 +++++++++++++++--- runtime/extern.c | 22 +-- runtime/fix_code.c | 11 -- runtime/interp.c | 17 +- runtime/meta.c | 43 ++--- runtime/misc.c | 16 ++ runtime/startup_byt.c | 14 +- runtime/sys.c | 2 +- .../dynlink/host.debug.reference | 11 ++ testsuite/tests/tool-debugger/dynlink/host.ml | 35 ++++ .../tool-debugger/dynlink/host.reference | 2 + .../tests/tool-debugger/dynlink/input_script | 5 + .../tests/tool-debugger/dynlink/ocamltests | 1 + .../tests/tool-debugger/dynlink/plugin.ml | 4 + 52 files changed, 791 insertions(+), 413 deletions(-) create mode 100644 testsuite/tests/tool-debugger/dynlink/host.debug.reference create mode 100644 testsuite/tests/tool-debugger/dynlink/host.ml create mode 100644 testsuite/tests/tool-debugger/dynlink/host.reference create mode 100644 testsuite/tests/tool-debugger/dynlink/input_script create mode 100644 testsuite/tests/tool-debugger/dynlink/ocamltests create mode 100644 testsuite/tests/tool-debugger/dynlink/plugin.ml diff --git a/Changes b/Changes index 3bbd55fd0..797a281a4 100644 --- a/Changes +++ b/Changes @@ -52,6 +52,13 @@ Working version OCaml callback when called from C. (Jacques-Henri Jourdan, review by Stephen Dolan and Gabriel Scherer) +### Tools: + +* #6792, #8654 ocamldebug now supports program using Dynlink. This + breaks compatibility with emacs modes. + (Whitequark and Jacques-Henri Jourdan, review by Gabriel Scherer + and Xavier Clerc) + ### Standard library: - #8657: Optimization in [Array.make] when initializing with unboxed diff --git a/boot/ocamlc b/boot/ocamlc index 9b40fef9b0b8738a45ac71dc14887ec1d1cf32cd..cf6b0d7450b95e0b4fa00a2c3d6ce80f97aeda18 100755 GIT binary patch delta 260791 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≶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Ń(2rjDSd;_V9y;Ip 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 G-v0p`OyuMM delta 258382 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 delta 18009 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 Sy$XgGgoNDNoJOA2iT?|?yX3?G diff --git a/debugger/.depend b/debugger/.depend index 114bd380e..5fdc17ea7 100644 --- a/debugger/.depend +++ b/debugger/.depend @@ -2,8 +2,11 @@ breakpoints.cmo : \ symbols.cmi \ pos.cmi \ parameters.cmi \ + ../utils/misc.cmi \ ../bytecomp/instruct.cmi \ exec.cmi \ + events.cmi \ + debugger_config.cmi \ debugcom.cmi \ checkpoints.cmi \ breakpoints.cmi @@ -11,13 +14,17 @@ breakpoints.cmx : \ symbols.cmx \ pos.cmx \ parameters.cmx \ + ../utils/misc.cmx \ ../bytecomp/instruct.cmx \ exec.cmx \ + events.cmx \ + debugger_config.cmx \ debugcom.cmx \ checkpoints.cmx \ breakpoints.cmi breakpoints.cmi : \ - ../bytecomp/instruct.cmi + events.cmi \ + debugcom.cmi checkpoints.cmo : \ primitives.cmi \ int64ops.cmi \ @@ -112,16 +119,19 @@ debugcom.cmo : \ primitives.cmi \ ../utils/misc.cmi \ int64ops.cmi \ + ../bytecomp/instruct.cmi \ input_handling.cmi \ debugcom.cmi debugcom.cmx : \ primitives.cmx \ ../utils/misc.cmx \ int64ops.cmx \ + ../bytecomp/instruct.cmx \ input_handling.cmx \ debugcom.cmi debugcom.cmi : \ - primitives.cmi + primitives.cmi \ + ../bytecomp/instruct.cmi debugger_config.cmo : \ int64ops.cmi \ debugger_config.cmi @@ -143,6 +153,7 @@ eval.cmo : \ ../bytecomp/instruct.cmi \ ../typing/ident.cmi \ frames.cmi \ + events.cmi \ ../typing/env.cmi \ debugcom.cmi \ ../typing/ctype.cmi \ @@ -162,6 +173,7 @@ eval.cmx : \ ../bytecomp/instruct.cmx \ ../typing/ident.cmx \ frames.cmx \ + events.cmx \ ../typing/env.cmx \ debugcom.cmx \ ../typing/ctype.cmx \ @@ -172,8 +184,8 @@ eval.cmi : \ ../typing/path.cmi \ parser_aux.cmi \ ../parsing/longident.cmi \ - ../bytecomp/instruct.cmi \ ../typing/ident.cmi \ + events.cmi \ ../typing/env.cmi \ debugcom.cmi events.cmo : \ @@ -206,7 +218,7 @@ frames.cmx : \ debugcom.cmx \ frames.cmi frames.cmi : \ - ../bytecomp/instruct.cmi + events.cmi history.cmo : \ primitives.cmi \ int64ops.cmi \ @@ -340,18 +352,21 @@ parser.cmo : \ ../parsing/longident.cmi \ int64ops.cmi \ input_handling.cmi \ + debugcom.cmi \ parser.cmi parser.cmx : \ parser_aux.cmi \ ../parsing/longident.cmx \ int64ops.cmx \ input_handling.cmx \ + debugcom.cmx \ parser.cmi parser.cmi : \ parser_aux.cmi \ ../parsing/longident.cmi parser_aux.cmi : \ - ../parsing/longident.cmi + ../parsing/longident.cmi \ + debugcom.cmi pattern_matching.cmo : \ ../typing/typedtree.cmi \ parser_aux.cmi \ @@ -375,13 +390,15 @@ pattern_matching.cmi : \ pos.cmo : \ ../parsing/location.cmi \ ../bytecomp/instruct.cmi \ + events.cmi \ pos.cmi pos.cmx : \ ../parsing/location.cmx \ ../bytecomp/instruct.cmx \ + events.cmx \ pos.cmi pos.cmi : \ - ../bytecomp/instruct.cmi + events.cmi primitives.cmo : \ $(UNIXDIR)/unix.cmi \ primitives.cmi @@ -511,7 +528,7 @@ show_information.cmx : \ breakpoints.cmx \ show_information.cmi show_information.cmi : \ - ../bytecomp/instruct.cmi + events.cmi show_source.cmo : \ source.cmi \ primitives.cmi \ @@ -568,7 +585,9 @@ symbols.cmx : \ ../bytecomp/bytesections.cmx \ symbols.cmi symbols.cmi : \ - ../bytecomp/instruct.cmi + ../bytecomp/instruct.cmi \ + events.cmi \ + debugcom.cmi time_travel.cmo : \ trap_barrier.cmi \ symbols.cmi \ diff --git a/debugger/breakpoints.ml b/debugger/breakpoints.ml index 4751bde6b..dfbf41009 100644 --- a/debugger/breakpoints.ml +++ b/debugger/breakpoints.ml @@ -19,6 +19,7 @@ open Checkpoints open Debugcom open Instruct +open Events open Printf (*** Debugging. ***) @@ -30,10 +31,11 @@ let debug_breakpoints = ref false let breakpoint_number = ref 0 (* Breakpoint number -> event. *) -let breakpoints = ref ([] : (int * debug_event) list) +type breakpoint_id = int +let breakpoints = ref ([] : (breakpoint_id * code_event) list) (* Program counter -> breakpoint count. *) -let positions = ref ([] : (int * int ref) list) +let positions = ref ([] : (pc * int ref) list) (* Versions of the breakpoint list. *) let current_version = ref 0 @@ -58,17 +60,17 @@ let breakpoints_count () = (* List of breakpoints at `pc'. *) let rec breakpoints_at_pc pc = - begin try - let ev = Symbols.event_at_pc pc in - match ev.ev_repr with - Event_child {contents = pc'} -> breakpoints_at_pc pc' - | _ -> [] - with Not_found -> - [] + begin match Symbols.event_at_pc pc with + | {ev_frag = frag; ev_ev = {ev_repr = Event_child {contents = pos}}} -> + breakpoints_at_pc {frag; pos} + | _ -> [] + | exception Not_found -> [] end @ - List.map fst (List.filter (function (_, {ev_pos = pos}) -> pos = pc) - !breakpoints) + List.map fst (List.filter + (function (_, {ev_frag = frag; ev_ev = {ev_pos = pos}}) -> + {frag; pos} = pc) + !breakpoints) (* Is there a breakpoint at `pc' ? *) let breakpoint_at_pc pc = @@ -76,32 +78,28 @@ let breakpoint_at_pc pc = (*** Set and remove breakpoints ***) +let print_pc out {frag;pos} = fprintf out "%d:%d" frag pos + (* Remove all breakpoints. *) -let remove_breakpoints pos = +let remove_breakpoints pcs = if !debug_breakpoints then - (print_string "Removing breakpoints..."; print_newline ()); + printf "Removing breakpoints...\n%!"; List.iter - (function (pos, _) -> - if !debug_breakpoints then begin - print_int pos; - print_newline() - end; - reset_instr pos; - Symbols.set_event_at_pc pos) - pos + (function (pc, _) -> + if !debug_breakpoints then printf "%a\n%!" print_pc pc; + reset_instr pc; + Symbols.set_event_at_pc pc) + pcs (* Set all breakpoints. *) -let set_breakpoints pos = +let set_breakpoints pcs = if !debug_breakpoints then - (print_string "Setting breakpoints..."; print_newline ()); + printf "Setting breakpoints...\n%!"; List.iter - (function (pos, _) -> - if !debug_breakpoints then begin - print_int pos; - print_newline() - end; - set_breakpoint pos) - pos + (function (pc, _) -> + if !debug_breakpoints then printf "%a\n%!" print_pc pc; + set_breakpoint pc) + pcs (* Ensure the current version is installed in current checkpoint. *) let update_breakpoints () = @@ -119,25 +117,13 @@ let update_breakpoints () = set_breakpoints !positions; copy_breakpoints ()) -let change_version version pos = - Exec.protect - (function () -> - current_version := version; - positions := pos) - (* Execute given function with no breakpoint in current checkpoint. *) (* --- `goto' runs faster this way (does not stop on each breakpoint). *) let execute_without_breakpoints f = - let version = !current_version - and pos = !positions - in - change_version 0 []; - try - f (); - change_version version pos - with - _ -> - change_version version pos + Misc.protect_refs [Misc.R (Debugger_config.break_on_load, false); + Misc.R (current_version, 0); + Misc.R (positions, [])] + f (* Add a position in the position list. *) (* Change version if necessary. *) @@ -160,37 +146,33 @@ let remove_position pos = end (* Insert a new breakpoint in lists. *) -let rec new_breakpoint = - function - {ev_repr = Event_child pc} -> - new_breakpoint (Symbols.any_event_at_pc !pc) - | event -> - Exec.protect - (function () -> - incr breakpoint_number; - insert_position event.ev_pos; - breakpoints := (!breakpoint_number, event) :: !breakpoints); - if !Parameters.breakpoint then begin - printf "Breakpoint %d at %d: %s" !breakpoint_number event.ev_pos - (Pos.get_desc event); - print_newline () - end +let rec new_breakpoint event = + match event with + {ev_frag=frag; ev_ev={ev_repr=Event_child pos}} -> + new_breakpoint (Symbols.any_event_at_pc {frag; pos=(!pos)}) + | {ev_frag=frag; ev_ev={ev_pos=pos}} -> + let pc = {frag; pos} in + Exec.protect + (function () -> + incr breakpoint_number; + insert_position pc; + breakpoints := (!breakpoint_number, event) :: !breakpoints); + if !Parameters.breakpoint then + printf "Breakpoint %d at %a: %s\n%!" !breakpoint_number print_pc pc + (Pos.get_desc event) (* Remove a breakpoint from lists. *) let remove_breakpoint number = try let ev = List.assoc number !breakpoints in - let pos = ev.ev_pos in - Exec.protect - (function () -> - breakpoints := List.remove_assoc number !breakpoints; - remove_position pos; - if !Parameters.breakpoint then begin - printf "Removed breakpoint %d at %d: %s" number ev.ev_pos - (Pos.get_desc ev); - print_newline () - end - ) + let pc = {frag = ev.ev_frag; pos=ev.ev_ev.ev_pos} in + Exec.protect + (function () -> + breakpoints := List.remove_assoc number !breakpoints; + remove_position pc; + if !Parameters.breakpoint then + printf "Removed breakpoint %d at %a: %s\n%!" number print_pc pc + (Pos.get_desc ev)) with Not_found -> prerr_endline ("No breakpoint number " ^ (Int.to_string number) ^ "."); @@ -202,7 +184,7 @@ let remove_all_breakpoints () = (*** Temporary breakpoints. ***) (* Temporary breakpoint position. *) -let temporary_breakpoint_position = ref (None : int option) +let temporary_breakpoint_position = ref (None : pc option) (* Execute `funct' with a breakpoint added at `pc'. *) (* --- Used by `finish'. *) diff --git a/debugger/breakpoints.mli b/debugger/breakpoints.mli index be1baf12f..623c0ef3f 100644 --- a/debugger/breakpoints.mli +++ b/debugger/breakpoints.mli @@ -16,8 +16,6 @@ (******************************* Breakpoints ***************************) -open Instruct - (*** Debugging. ***) val debug_breakpoints : bool ref @@ -25,14 +23,15 @@ val debug_breakpoints : bool ref val breakpoints_count : unit -> int -(* Breakpoint number -> debug_event_kind. *) -val breakpoints : (int * debug_event) list ref +(* Breakpoint number -> code_event. *) +type breakpoint_id = int +val breakpoints : (breakpoint_id * Events.code_event) list ref (* Is there a breakpoint at `pc' ? *) -val breakpoint_at_pc : int -> bool +val breakpoint_at_pc : Debugcom.pc -> bool (* List of breakpoints at `pc'. *) -val breakpoints_at_pc : int -> int list +val breakpoints_at_pc : Debugcom.pc -> int list (*** Set and remove breakpoints ***) @@ -44,7 +43,7 @@ val update_breakpoints : unit -> unit val execute_without_breakpoints : (unit -> unit) -> unit (* Insert a new breakpoint in lists. *) -val new_breakpoint : debug_event -> unit +val new_breakpoint : Events.code_event -> unit (* Remove a breakpoint from lists. *) val remove_breakpoint : int -> unit @@ -54,8 +53,8 @@ val remove_all_breakpoints : unit -> unit (*** Temporary breakpoints. ***) (* Temporary breakpoint position. *) -val temporary_breakpoint_position : int option ref +val temporary_breakpoint_position : Debugcom.pc option ref (* Execute `funct' with a breakpoint added at `pc'. *) (* --- Used by `finish'. *) -val exec_with_temporary_breakpoint : int -> (unit -> unit) -> unit +val exec_with_temporary_breakpoint : Debugcom.pc -> (unit -> unit) -> unit diff --git a/debugger/checkpoints.ml b/debugger/checkpoints.ml index 7ab8de728..b78961408 100644 --- a/debugger/checkpoints.ml +++ b/debugger/checkpoints.ml @@ -43,8 +43,9 @@ type checkpoint = { mutable c_state : checkpoint_state; mutable c_parent : checkpoint; mutable c_breakpoint_version : int; - mutable c_breakpoints : (int * int ref) list; - mutable c_trap_barrier : int + mutable c_breakpoints : (pc * int ref) list; + mutable c_trap_barrier : int; + mutable c_code_fragments : int list } (*** Pseudo-checkpoint `root'. ***) @@ -59,7 +60,8 @@ let rec root = { c_parent = root; c_breakpoint_version = 0; c_breakpoints = []; - c_trap_barrier = 0 + c_trap_barrier = 0; + c_code_fragments = [0] } (*** Current state ***) @@ -75,12 +77,14 @@ let current_time () = let current_report () = !current_checkpoint.c_report -let current_pc () = - match current_report () with - None | Some {rep_type = Exited | Uncaught_exc} -> None - | Some {rep_program_pointer = pc } -> Some pc - let current_pc_sp () = + (* This pattern matching mimics the test used in debugger.c for + deciding whether or not PC/SP should be sent with the report. + See debugger.c, the [if] statement above the [command_loop] + label. *) match current_report () with - None | Some {rep_type = Exited | Uncaught_exc} -> None - | Some {rep_program_pointer = pc; rep_stack_pointer = sp } -> Some (pc, sp) + | Some {rep_type = Event | Breakpoint; + rep_program_pointer = pc; rep_stack_pointer = sp } -> Some (pc, sp) + | _ -> None + +let current_pc () = Option.map fst (current_pc_sp ()) diff --git a/debugger/checkpoints.mli b/debugger/checkpoints.mli index f3ca13808..d02240ee6 100644 --- a/debugger/checkpoints.mli +++ b/debugger/checkpoints.mli @@ -42,8 +42,9 @@ type checkpoint = mutable c_state : checkpoint_state; mutable c_parent : checkpoint; mutable c_breakpoint_version : int; - mutable c_breakpoints : (int * int ref) list; - mutable c_trap_barrier : int} + mutable c_breakpoints : (pc * int ref) list; + mutable c_trap_barrier : int; + mutable c_code_fragments : int list} (*** Pseudo-checkpoint `root'. ***) (* --- Parents of all checkpoints which have no parent. *) @@ -55,5 +56,5 @@ val current_checkpoint : checkpoint ref val current_time : unit -> int64 val current_report : unit -> report option -val current_pc : unit -> int option -val current_pc_sp : unit -> (int * int) option +val current_pc : unit -> pc option +val current_pc_sp : unit -> (pc * int) option diff --git a/debugger/command_line.ml b/debugger/command_line.ml index 0cd25ccb2..b9bc9d2f8 100644 --- a/debugger/command_line.ml +++ b/debugger/command_line.ml @@ -126,14 +126,15 @@ let add_breakpoint_at_pc pc = new_breakpoint (any_event_at_pc pc) with | Not_found -> - eprintf "Can\'t add breakpoint at pc %i: no event there.@." pc; + eprintf "Can\'t add breakpoint at pc %i:%i: no event there.@." + pc.frag pc.pos; raise Toplevel let add_breakpoint_after_pc pc = let rec try_add n = if n < 3 then begin try - new_breakpoint (any_event_at_pc (pc + n * 4)) + new_breakpoint (any_event_at_pc {pc with pos = pc.pos + n * 4}) with | Not_found -> try_add (n+1) @@ -156,11 +157,8 @@ let convert_module mdle = then Filename.chop_suffix m ".ml" else m) | None -> - try - (get_current_event ()).ev_module - with - | Not_found -> - error "Not in a module." + try (get_current_event ()).ev_ev.ev_module + with Not_found -> error "Not in a module." (** Toplevel. **) let current_line = ref "" @@ -303,7 +301,7 @@ let instr_run ppf lexbuf = ensure_loaded (); reset_named_values (); run (); - show_current_event ppf;; + show_current_event ppf let instr_reverse ppf lexbuf = eol lexbuf; @@ -502,7 +500,7 @@ let env_of_event = function None -> Env.empty | Some ev -> - Envaux.env_from_summary ev.Instruct.ev_typenv ev.Instruct.ev_typsubst + Envaux.env_from_summary ev.ev_ev.ev_typenv ev.ev_ev.ev_typsubst let print_command depth ppf lexbuf = let exprs = expression_list_eol Lexer.lexeme lexbuf in @@ -613,8 +611,8 @@ let instr_break ppf lexbuf = new_breakpoint ev | None -> error "Can\'t add breakpoint at this point.") - | BA_pc pc -> (* break PC *) - add_breakpoint_at_pc pc + | BA_pc {frag; pos} -> (* break PC *) + add_breakpoint_at_pc {frag; pos} | BA_function expr -> (* break FUNCTION *) let env = try @@ -644,7 +642,7 @@ let instr_break ppf lexbuf = let ev = event_at_pos module_name 0 in let ev_pos = {Lexing.dummy_pos with - pos_fname = (Events.get_pos ev).pos_fname} in + pos_fname = (Events.get_pos ev.ev_ev).pos_fname} in let buffer = try get_buffer ev_pos module_name with | Not_found -> @@ -703,7 +701,7 @@ let instr_backtrace ppf lexbuf = | Some x -> x in ensure_loaded (); match current_report() with - | None | Some {rep_type = Exited | Uncaught_exc} -> () + | None | Some {rep_type = Exited | Uncaught_exc | Code_loaded _} -> () | Some _ -> let frame_counter = ref 0 in let print_frame first_frame last_frame = function @@ -936,8 +934,8 @@ let info_checkpoints ppf lexbuf = !checkpoints)) let info_one_breakpoint ppf (num, ev) = - fprintf ppf "%3d %10d %s@." num ev.ev_pos (Pos.get_desc ev); -;; + fprintf ppf "%3d %d:%10d %s@." num ev.ev_frag ev.ev_ev.ev_pos + (Pos.get_desc ev) let info_breakpoints ppf lexbuf = eol lexbuf; @@ -946,7 +944,7 @@ let info_breakpoints ppf lexbuf = fprintf ppf "Num Address Where@."; List.iter (info_one_breakpoint ppf) (List.rev !breakpoints); end -;; + let info_events _ppf lexbuf = ensure_loaded (); @@ -955,6 +953,7 @@ let info_events _ppf lexbuf = in print_endline ("Module: " ^ mdle); print_endline " Address Characters Kind Repr."; + let frag, events = events_in_module mdle in List.iter (function ev -> let start_char, end_char = @@ -966,7 +965,8 @@ let info_events _ppf lexbuf = ev.ev_loc.Location.loc_start.Lexing.pos_cnum, ev.ev_loc.Location.loc_end.Lexing.pos_cnum in Printf.printf - "%10d %6d-%-6d %10s %10s\n" + "%d:%10d %6d-%-6d %10s %10s\n" + frag ev.ev_pos start_char end_char @@ -983,7 +983,7 @@ let info_events _ppf lexbuf = Event_none -> "" | Event_parent _ -> "(repr)" | Event_child repr -> Int.to_string !repr)) - (events_in_module mdle) + events (** User-defined printers **) @@ -1093,10 +1093,14 @@ Argument N means do this N times (or till program stops for another reason)." }; (* Breakpoints *) { instr_name = "break"; instr_prio = false; instr_action = instr_break; instr_repeat = false; instr_help = -"Set breakpoint at specified line or function.\ -\nSyntax: break function-name\ +"Set breakpoint.\ +\nSyntax: break\ +\n break function-name\ \n break @ [module] linenum\ -\n break @ [module] # characternum" }; +\n break @ [module] linenum columnnum\ +\n break @ [module] # characternum\ +\n break frag:pc\ +\n break pc" }; { instr_name = "delete"; instr_prio = false; instr_action = instr_delete; instr_repeat = false; instr_help = "delete some breakpoints.\n\ @@ -1214,7 +1218,11 @@ It can be either:\n\ "process to follow after forking.\n\ It can be either :\n\ child: the newly created process.\n\ - parent: the process that called fork.\n" }]; + parent: the process that called fork.\n" }; + { var_name = "break_on_load"; + var_action = boolean_variable false break_on_load; + var_help = +"whether to stop after loading new code (e.g. with Dynlink)." }]; info_list := (* info name, function, help *) diff --git a/debugger/debugcom.ml b/debugger/debugcom.ml index e828ec4e2..f9f8164f8 100644 --- a/debugger/debugcom.ml +++ b/debugger/debugcom.ml @@ -45,16 +45,23 @@ let set_current_connection io_chan = (* Modify the program code *) -let set_event pos = +type pc = + { frag : int; + pos : int; } + +let set_event {frag; pos} = output_char !conn.io_out 'e'; + output_binary_int !conn.io_out frag; output_binary_int !conn.io_out pos -let set_breakpoint pos = +let set_breakpoint {frag; pos} = output_char !conn.io_out 'B'; + output_binary_int !conn.io_out frag; output_binary_int !conn.io_out pos -let reset_instr pos = +let reset_instr {frag; pos} = output_char !conn.io_out 'i'; + output_binary_int !conn.io_out frag; output_binary_int !conn.io_out pos (* Basic commands for flow control *) @@ -65,12 +72,15 @@ type execution_summary = | Exited | Trap_barrier | Uncaught_exc + | Debug_info of Instruct.debug_event list array + | Code_loaded of int + | Code_unloaded of int type report = { rep_type : execution_summary; - rep_event_count : int; + rep_event_count : int64; rep_stack_pointer : int; - rep_program_pointer : int + rep_program_pointer : pc } type checkpoint_report = @@ -95,24 +105,33 @@ let do_go_smallint n = | 'x' -> Exited | 's' -> Trap_barrier | 'u' -> Uncaught_exc - | _ -> Misc.fatal_error "Debugcom.do_go" in + | 'D' -> Debug_info (input_value !conn.io_in : + Instruct.debug_event list array) + | 'L' -> Code_loaded (input_binary_int !conn.io_in) + | 'U' -> Code_unloaded (input_binary_int !conn.io_in) + | c -> Misc.fatal_error (Printf.sprintf "Debugcom.do_go %c" c) + in let event_counter = input_binary_int !conn.io_in in let stack_pos = input_binary_int !conn.io_in in - let pc = input_binary_int !conn.io_in in + let frag = input_binary_int !conn.io_in in + let pos = input_binary_int !conn.io_in in { rep_type = summary; - rep_event_count = event_counter; + rep_event_count = Int64.of_int event_counter; rep_stack_pointer = stack_pos; - rep_program_pointer = pc }) + rep_program_pointer = {frag; pos} }) let rec do_go n = assert (n >= _0); - if n > max_small_int then( - ignore (do_go_smallint max_int); - do_go (n -- max_small_int) - )else( + if n > max_small_int then + begin match do_go_smallint max_int with + | { rep_type = Event } -> + do_go (n -- max_small_int) + | report -> + { report with + rep_event_count = report.rep_event_count ++ (n -- max_small_int) } + end + else do_go_smallint (Int64.to_int n) - ) -;; (* Perform a checkpoint *) @@ -148,8 +167,9 @@ let initial_frame () = output_char !conn.io_out '0'; flush !conn.io_out; let stack_pos = input_binary_int !conn.io_in in - let pc = input_binary_int !conn.io_in in - (stack_pos, pc) + let frag = input_binary_int !conn.io_in in + let pos = input_binary_int !conn.io_in in + (stack_pos, {frag; pos}) let set_initial_frame () = ignore(initial_frame ()) @@ -163,8 +183,14 @@ let up_frame stacksize = output_binary_int !conn.io_out stacksize; flush !conn.io_out; let stack_pos = input_binary_int !conn.io_in in - let pc = if stack_pos = -1 then 0 else input_binary_int !conn.io_in in - (stack_pos, pc) + let frag, pos = + if stack_pos = -1 + then 0, 0 + else let frag = input_binary_int !conn.io_in in + let pos = input_binary_int !conn.io_in in + frag, pos + in + (stack_pos, { frag; pos }) (* Get and set the current frame position *) @@ -172,8 +198,9 @@ let get_frame () = output_char !conn.io_out 'f'; flush !conn.io_out; let stack_pos = input_binary_int !conn.io_in in - let pc = input_binary_int !conn.io_in in - (stack_pos, pc) + let frag = input_binary_int !conn.io_in in + let pos = input_binary_int !conn.io_in in + (stack_pos, {frag; pos}) let set_frame stack_pos = output_char !conn.io_out 'S'; @@ -308,7 +335,9 @@ module Remote_value = output_char !conn.io_out 'C'; output_remote_value !conn.io_out v; flush !conn.io_out; - input_binary_int !conn.io_in + let frag = input_binary_int !conn.io_in in + let pos = input_binary_int !conn.io_in in + {frag;pos} let same rv1 rv2 = match (rv1, rv2) with diff --git a/debugger/debugcom.mli b/debugger/debugcom.mli index 409136261..0b6eb30fc 100644 --- a/debugger/debugcom.mli +++ b/debugger/debugcom.mli @@ -16,18 +16,25 @@ (* Low-level communication with the debuggee *) +type pc = + { frag : int; + pos : int; } + type execution_summary = Event | Breakpoint | Exited | Trap_barrier | Uncaught_exc + | Debug_info of Instruct.debug_event list array + | Code_loaded of int + | Code_unloaded of int type report = { rep_type : execution_summary; - rep_event_count : int; + rep_event_count : int64; rep_stack_pointer : int; - rep_program_pointer : int } + rep_program_pointer : pc } type checkpoint_report = Checkpoint_done of int @@ -41,13 +48,13 @@ type follow_fork_mode = val set_current_connection : Primitives.io_channel -> unit (* Put an event at given pc *) -val set_event : int -> unit +val set_event : pc -> unit (* Put a breakpoint at given pc *) -val set_breakpoint : int -> unit +val set_breakpoint : pc -> unit (* Remove breakpoint or event at given pc *) -val reset_instr : int -> unit +val reset_instr : pc -> unit (* Create a new checkpoint (the current process forks). *) val do_checkpoint : unit -> checkpoint_report @@ -63,12 +70,12 @@ val wait_child : Primitives.io_channel -> unit (* Move to initial frame (that of current function). *) (* Return stack position and current pc *) -val initial_frame : unit -> int * int +val initial_frame : unit -> int * pc val set_initial_frame : unit -> unit (* Get the current frame position *) (* Return stack position and current pc *) -val get_frame : unit -> int * int +val get_frame : unit -> int * pc (* Set the current frame *) val set_frame : int -> unit @@ -76,7 +83,7 @@ val set_frame : int -> unit (* Move up one frame *) (* Return stack position and current pc. If there's no frame above, return (-1, 0). *) -val up_frame : int -> int * int +val up_frame : int -> int * pc (* Set the trap barrier to given stack position. *) val set_trap_barrier : int -> unit @@ -109,7 +116,7 @@ module Remote_value : val from_environment : int -> t val global : int -> t val accu : unit -> t - val closure_code : t -> int + val closure_code : t -> pc (* Returns a hexadecimal representation of the remote address, or [""] if the value is local. *) diff --git a/debugger/debugger_config.ml b/debugger/debugger_config.ml index 3996d221e..9677bb0c5 100644 --- a/debugger/debugger_config.ml +++ b/debugger/debugger_config.ml @@ -82,6 +82,9 @@ let make_checkpoints = ref "Win32" -> false | _ -> true) +(* Whether to break when new code is loaded. *) +let break_on_load = ref true + (*** Environment variables for debuggee. ***) let environment = ref [] diff --git a/debugger/debugger_config.mli b/debugger/debugger_config.mli index 42fa77440..9db86e933 100644 --- a/debugger/debugger_config.mli +++ b/debugger/debugger_config.mli @@ -34,6 +34,7 @@ val checkpoint_big_step : int64 ref val checkpoint_small_step : int64 ref val checkpoint_max_count : int ref val make_checkpoints : bool ref +val break_on_load : bool ref (*** Environment variables for debuggee. ***) diff --git a/debugger/eval.ml b/debugger/eval.ml index e3bacfa61..d3dbf2a30 100644 --- a/debugger/eval.ml +++ b/debugger/eval.ml @@ -19,6 +19,7 @@ open Path open Instruct open Types open Parser_aux +open Events type error = Unbound_identifier of Ident.t @@ -47,7 +48,7 @@ let rec address path event = function with Symtable.Error _ -> raise(Error(Unbound_identifier id)) else begin match event with - Some ev -> + Some {ev_ev = ev} -> begin try let pos = Ident.find_same id ev.ev_compenv.ce_stack in Debugcom.Remote_value.local (ev.ev_stacksize - pos) @@ -94,7 +95,7 @@ let rec expression event env = function end | E_result -> begin match event with - Some {ev_kind = Event_after ty; ev_typsubst = subst} + Some {ev_ev = {ev_kind = Event_after ty; ev_typsubst = subst}} when !Frames.current_frame = 0 -> (Debugcom.Remote_value.accu(), Subst.type_expr subst ty) | _ -> diff --git a/debugger/eval.mli b/debugger/eval.mli index 51d27136c..6aa8cb1ff 100644 --- a/debugger/eval.mli +++ b/debugger/eval.mli @@ -19,7 +19,7 @@ open Parser_aux open Format val expression : - Instruct.debug_event option -> Env.t -> expression -> + Events.code_event option -> Env.t -> expression -> Debugcom.Remote_value.t * type_expr type error = diff --git a/debugger/events.ml b/debugger/events.ml index a50eae0d6..3bad8b2f7 100644 --- a/debugger/events.ml +++ b/debugger/events.ml @@ -18,6 +18,10 @@ open Instruct +type code_event = + { ev_frag : int; + ev_ev : Instruct.debug_event } + let get_pos ev = match ev.ev_kind with | Event_before -> ev.ev_loc.Location.loc_start @@ -30,7 +34,7 @@ let get_pos ev = (* Event at current position *) let current_event = - ref (None : debug_event option) + ref (None : code_event option) (* Current position in source. *) (* Raise `Not_found' if not on an event (beginning or end of program). *) @@ -43,7 +47,7 @@ let current_event_is_before () = match !current_event with None -> raise Not_found - | Some {ev_kind = Event_before} -> + | Some {ev_ev = {ev_kind = Event_before}} -> true | _ -> false diff --git a/debugger/events.mli b/debugger/events.mli index f50f156e4..b095e50aa 100644 --- a/debugger/events.mli +++ b/debugger/events.mli @@ -16,15 +16,20 @@ open Instruct +(* A debug event associated with a code fragment. *) +type code_event = + { ev_frag : int; + ev_ev : Instruct.debug_event } + val get_pos : debug_event -> Lexing.position;; (** Current events. **) (* The event at current position. *) -val current_event : debug_event option ref +val current_event : code_event option ref (* Current position in source. *) (* Raise `Not_found' if not on an event (beginning or end of program). *) -val get_current_event : unit -> debug_event +val get_current_event : unit -> code_event val current_event_is_before : unit -> bool diff --git a/debugger/frames.ml b/debugger/frames.ml index 96b7ce153..e1edf2317 100644 --- a/debugger/frames.ml +++ b/debugger/frames.ml @@ -25,7 +25,7 @@ open Symbols let current_frame = ref 0 (* Event at selected position *) -let selected_event = ref (None : debug_event option) +let selected_event = ref (None : code_event option) (* Selected position in source. *) (* Raise `Not_found' if not on an event. *) @@ -33,7 +33,7 @@ let selected_point () = match !selected_event with None -> raise Not_found - | Some ev -> + | Some {ev_ev=ev} -> (ev.ev_module, (Events.get_pos ev).Lexing.pos_lnum, (Events.get_pos ev).Lexing.pos_cnum - (Events.get_pos ev).Lexing.pos_bol) @@ -42,7 +42,7 @@ let selected_event_is_before () = match !selected_event with None -> raise Not_found - | Some {ev_kind = Event_before} -> + | Some {ev_ev={ev_kind = Event_before}} -> true | _ -> false @@ -52,7 +52,7 @@ let selected_event_is_before () = let rec move_up frame_count event = if frame_count <= 0 then event else begin - let (sp, pc) = up_frame event.ev_stacksize in + let (sp, pc) = up_frame event.ev_ev.ev_stacksize in if sp < 0 then raise Not_found; move_up (frame_count - 1) (any_event_at_pc pc) end @@ -106,13 +106,13 @@ let reset_frame () = let do_backtrace action = match !current_event with None -> Misc.fatal_error "Frames.do_backtrace" - | Some curr_ev -> + | Some ev -> let (initial_sp, _) = get_frame() in set_initial_frame(); - let event = ref curr_ev in + let event = ref ev in begin try while action (Some !event) do - let (sp, pc) = up_frame !event.ev_stacksize in + let (sp, pc) = up_frame !event.ev_ev.ev_stacksize in if sp < 0 then raise Exit; event := any_event_at_pc pc done diff --git a/debugger/frames.mli b/debugger/frames.mli index 514aa2e36..08fd326cc 100644 --- a/debugger/frames.mli +++ b/debugger/frames.mli @@ -16,13 +16,13 @@ (****************************** Frames *********************************) -open Instruct +open Events (* Current frame number *) val current_frame : int ref -(* Event at selected position. *) -val selected_event : debug_event option ref +(* Fragment and event at selected position. *) +val selected_event : code_event option ref (* Selected position in source (module, line, column). *) (* Raise `Not_found' if not on an event. *) @@ -48,7 +48,7 @@ val reset_frame : unit -> unit or None if we've encountered a stack frame with no debugging info attached. Stop when the function returns false, or frame with no debugging info reached, or top of stack reached. *) -val do_backtrace : (debug_event option -> bool) -> unit +val do_backtrace : (code_event option -> bool) -> unit (* Return the number of frames in the stack, or (-1) if it can't be determined because some frames have no debugging info. *) diff --git a/debugger/lexer.mll b/debugger/lexer.mll index 8570b152a..f6744f792 100644 --- a/debugger/lexer.mll +++ b/debugger/lexer.mll @@ -83,6 +83,8 @@ and lexeme = (* Read a lexeme *) { AT } | "$" { DOLLAR } + | ":" + { COLON } | "!" { BANG } | "(" diff --git a/debugger/parser.mly b/debugger/parser.mly index 36864b042..b8789d94d 100644 --- a/debugger/parser.mly +++ b/debugger/parser.mly @@ -20,6 +20,7 @@ open Int64ops open Input_handling open Longident open Parser_aux +open Debugcom %} @@ -31,6 +32,7 @@ open Parser_aux %token STAR /* * */ %token MINUS /* - */ %token DOT /* . */ +%token COLON /* : */ %token HASH /* # */ %token AT /* @ */ %token DOLLAR /* $ */ @@ -235,7 +237,9 @@ expression_list_eol : break_argument_eol : end_of_line { BA_none } - | integer_eol { BA_pc $1 } + | integer_eol { BA_pc {frag = 0; pos = $1} } + | INTEGER COLON integer_eol { BA_pc {frag = to_int $1; + pos = $3} } | expression end_of_line { BA_function $1 } | AT opt_longident INTEGER opt_integer_eol { BA_pos1 ($2, (to_int $3), $4)} | AT opt_longident HASH integer_eol { BA_pos2 ($2, $4) } diff --git a/debugger/parser_aux.mli b/debugger/parser_aux.mli index 67c844627..36c383e0c 100644 --- a/debugger/parser_aux.mli +++ b/debugger/parser_aux.mli @@ -23,7 +23,7 @@ type expression = type break_arg = BA_none (* break *) - | BA_pc of int (* break PC *) + | BA_pc of Debugcom.pc (* break FRAG PC *) | BA_function of expression (* break FUNCTION *) | BA_pos1 of Longident.t option * int * int option (* break @ [MODULE] LINE [POS] *) diff --git a/debugger/pos.ml b/debugger/pos.ml index cc164e68d..2b5b0e2e2 100644 --- a/debugger/pos.ml +++ b/debugger/pos.ml @@ -13,14 +13,14 @@ (* *) (**************************************************************************) -open Instruct;; -open Lexing;; -open Location;; +open Instruct +open Lexing +open Location +open Events let get_desc ev = - let loc = ev.ev_loc in + let loc = ev.ev_ev.ev_loc in Printf.sprintf "file %s, line %d, characters %d-%d" loc.loc_start.pos_fname loc.loc_start.pos_lnum (loc.loc_start.pos_cnum - loc.loc_start.pos_bol + 1) (loc.loc_end.pos_cnum - loc.loc_start.pos_bol + 1) -;; diff --git a/debugger/pos.mli b/debugger/pos.mli index f5c376502..31bc341f5 100644 --- a/debugger/pos.mli +++ b/debugger/pos.mli @@ -13,4 +13,4 @@ (* *) (**************************************************************************) -val get_desc : Instruct.debug_event -> string;; +val get_desc : Events.code_event -> string;; diff --git a/debugger/program_management.ml b/debugger/program_management.ml index a232be2b2..318e3f2c2 100644 --- a/debugger/program_management.ml +++ b/debugger/program_management.ml @@ -126,7 +126,8 @@ let initialize_loading () = prerr_endline "Program not found."; raise Toplevel; end; - Symbols.read_symbols !program_name; + Symbols.clear_symbols (); + Symbols.read_symbols 0 !program_name; Load_path.init (Load_path.get_paths () @ !Symbols.program_source_dirs); Envaux.reset_cache (); if !debug_loading then @@ -134,7 +135,7 @@ let initialize_loading () = open_connection !socket_name (function () -> go_to _0; - Symbols.set_all_events(); + Symbols.set_all_events 0; exit_main_loop ()) (* Ensure the program is already loaded. *) diff --git a/debugger/show_information.ml b/debugger/show_information.ml index 29fe1fb69..27cdf5f6c 100644 --- a/debugger/show_information.ml +++ b/debugger/show_information.ml @@ -32,7 +32,7 @@ let show_current_event ppf = fprintf ppf "Time: %Li" (current_time ()); (match current_pc () with | Some pc -> - fprintf ppf " - pc: %i" pc + fprintf ppf " - pc: %i:%i" pc.frag pc.pos | _ -> ()); end; update_current_event (); @@ -43,7 +43,7 @@ let show_current_event ppf = fprintf ppf "Beginning of program.@."; show_no_point () | Some {rep_type = (Event | Breakpoint); rep_program_pointer = pc} -> - let ev = get_current_event () in + let ev = (get_current_event ()).ev_ev in if !Parameters.time then fprintf ppf " - module %s@." ev.ev_module; (match breakpoints_at_pc pc with | [] -> @@ -68,28 +68,34 @@ let show_current_event ppf = @[Uncaught exception:@ %a@]@." Printval.print_exception (Debugcom.Remote_value.accu ()); show_no_point () - | Some {rep_type = Trap_barrier} -> - (* Trap_barrier not visible outside *) - (* of module `time_travel'. *) + | Some {rep_type = Code_loaded frag} -> + let mds = String.concat ", " (Symbols.modules_in_code_fragment frag) in + fprintf ppf "@.Module(s) %s loaded.@." mds; + show_no_point () + | Some {rep_type = Trap_barrier} + | Some {rep_type = Debug_info _} + | Some {rep_type = Code_unloaded _} -> + (* Not visible outside *) + (* of module `time_travel'. *) if !Parameters.time then fprintf ppf "@."; Misc.fatal_error "Show_information.show_current_event" (* Display short information about one frame. *) -let show_one_frame framenum ppf event = - let pos = Events.get_pos event in +let show_one_frame framenum ppf ev = + let pos = Events.get_pos ev.ev_ev in let cnum = try - let buffer = get_buffer pos event.ev_module in + let buffer = get_buffer pos ev.ev_ev.ev_module in snd (start_and_cnum buffer pos) with _ -> pos.Lexing.pos_cnum in if !machine_readable then - fprintf ppf "#%i Pc: %i %s char %i@." - framenum event.ev_pos event.ev_module + fprintf ppf "#%i Pc: %i:%i %s char %i@." + framenum ev.ev_frag ev.ev_ev.ev_pos ev.ev_ev.ev_module cnum else fprintf ppf "#%i %s %s:%i:%i@." - framenum event.ev_module + framenum ev.ev_ev.ev_module pos.Lexing.pos_fname pos.Lexing.pos_lnum (pos.Lexing.pos_cnum - pos.Lexing.pos_bol + 1) @@ -101,7 +107,8 @@ let show_current_frame ppf selected = fprintf ppf "@.No frame selected.@." | Some sel_ev -> show_one_frame !current_frame ppf sel_ev; - begin match breakpoints_at_pc sel_ev.ev_pos with + begin match breakpoints_at_pc + {frag=sel_ev.ev_frag; pos = sel_ev.ev_ev.ev_pos} with | [] -> () | [breakpoint] -> fprintf ppf "Breakpoint: %i@." breakpoint @@ -111,4 +118,4 @@ let show_current_frame ppf selected = List.iter (function x -> fprintf ppf "%i " x) l) (List.sort compare breakpoints); end; - show_point sel_ev selected + show_point sel_ev.ev_ev selected diff --git a/debugger/show_information.mli b/debugger/show_information.mli index 2d6b6b018..bc5df9d9e 100644 --- a/debugger/show_information.mli +++ b/debugger/show_information.mli @@ -14,14 +14,14 @@ (* *) (**************************************************************************) -open Format;; +open Format (* Display information about the current event. *) -val show_current_event : formatter -> unit;; +val show_current_event : formatter -> unit (* Display information about the current frame. *) (* --- `select frame' must have succeeded before calling this function. *) -val show_current_frame : formatter -> bool -> unit;; +val show_current_frame : formatter -> bool -> unit (* Display short information about one frame. *) -val show_one_frame : int -> formatter -> Instruct.debug_event -> unit +val show_one_frame : int -> formatter -> Events.code_event -> unit diff --git a/debugger/symbols.ml b/debugger/symbols.ml index d22f1a171..6cb49c1ea 100644 --- a/debugger/symbols.ml +++ b/debugger/symbols.ml @@ -19,6 +19,8 @@ open Instruct open Debugger_config (* Toplevel *) open Program_loading +open Debugcom +open Events module String = Misc.Stdlib.String let modules = @@ -30,11 +32,11 @@ let program_source_dirs = let events = ref ([] : debug_event list) let events_by_pc = - (Hashtbl.create 257 : (int, debug_event) Hashtbl.t) + (Hashtbl.create 257 : (pc, debug_event) Hashtbl.t) let events_by_module = - (Hashtbl.create 17 : (string, debug_event array) Hashtbl.t) + (Hashtbl.create 17 : (string, int * debug_event array) Hashtbl.t) let all_events_by_module = - (Hashtbl.create 17 : (string, debug_event list) Hashtbl.t) + (Hashtbl.create 17 : (string, int * debug_event list) Hashtbl.t) let partition_modules evl = let rec partition_modules' ev evl = @@ -93,20 +95,19 @@ let read_symbols' bytecode_file = close_in_noerr ic; !eventlists, !dirs -let read_symbols bytecode_file = - let all_events, all_dirs = read_symbols' bytecode_file in - +let clear_symbols () = modules := []; events := []; - program_source_dirs := String.Set.elements all_dirs; + program_source_dirs := []; Hashtbl.clear events_by_pc; Hashtbl.clear events_by_module; - Hashtbl.clear all_events_by_module; + Hashtbl.clear all_events_by_module +let add_symbols frag all_events = List.iter (fun evl -> List.iter (fun ev -> events := ev :: !events; - Hashtbl.add events_by_pc ev.ev_pos ev) + Hashtbl.add events_by_pc {frag; pos = ev.ev_pos} ev) evl) all_events; @@ -120,7 +121,7 @@ let read_symbols bytecode_file = in let sorted_evl = List.sort cmp evl in modules := md :: !modules; - Hashtbl.add all_events_by_module md sorted_evl; + Hashtbl.add all_events_by_module md (frag, sorted_evl); let real_evl = List.filter (function @@ -128,20 +129,52 @@ let read_symbols bytecode_file = | _ -> true) sorted_evl in - Hashtbl.add events_by_module md (Array.of_list real_evl)) + Hashtbl.add events_by_module md (frag, Array.of_list real_evl)) all_events +let read_symbols frag bytecode_file = + let all_events, all_dirs = read_symbols' bytecode_file in + program_source_dirs := !program_source_dirs @ (String.Set.elements all_dirs); + add_symbols frag all_events + +let erase_symbols frag = + let pcs = Hashtbl.fold (fun pc _ pcs -> + if pc.frag = frag then pc :: pcs else pcs) + events_by_pc [] + in + List.iter (Hashtbl.remove events_by_pc) pcs; + + let mds = Hashtbl.fold (fun md (frag', _) mds -> + if frag' = frag then md :: mds else mds) + events_by_module [] + in + List.iter (Hashtbl.remove events_by_module) mds; + List.iter (Hashtbl.remove all_events_by_module) mds; + modules := List.filter (fun md -> not (List.mem md mds)) !modules + +let code_fragments () = + let frags = + Hashtbl.fold + (fun _ (frag, _) l -> frag :: l) + all_events_by_module [] + in + List.sort_uniq compare frags + +let modules_in_code_fragment frag' = + Hashtbl.fold (fun md (frag, _) l -> + if frag' = frag then md :: l else l) + all_events_by_module [] + let any_event_at_pc pc = - Hashtbl.find events_by_pc pc + { ev_frag = pc.frag; ev_ev = Hashtbl.find events_by_pc pc } let event_at_pc pc = - let ev = any_event_at_pc pc in - match ev.ev_kind with - Event_pseudo -> raise Not_found - | _ -> ev + match any_event_at_pc pc with + { ev_ev = { ev_kind = Event_pseudo } } -> raise Not_found + | ev -> ev let set_event_at_pc pc = - try ignore(event_at_pc pc); Debugcom.set_event pc + try ignore(event_at_pc pc); set_event pc with Not_found -> () (* List all events in module *) @@ -149,7 +182,7 @@ let events_in_module mdle = try Hashtbl.find all_events_by_module mdle with Not_found -> - [] + 0, [] (* Binary search of event at or just after char *) let find_event ev char = @@ -174,40 +207,40 @@ let find_event ev char = (* Return first event after the given position. *) (* Raise [Not_found] if module is unknown or no event is found. *) let event_at_pos md char = - let ev = Hashtbl.find events_by_module md in - ev.(find_event ev char) + let ev_frag, ev = Hashtbl.find events_by_module md in + { ev_frag; ev_ev = ev.(find_event ev char) } (* Return event closest to given position *) (* Raise [Not_found] if module is unknown or no event is found. *) let event_near_pos md char = - let ev = Hashtbl.find events_by_module md in + let ev_frag, ev = Hashtbl.find events_by_module md in try let pos = find_event ev char in (* Desired event is either ev.(pos) or ev.(pos - 1), whichever is closest *) if pos > 0 && char - (Events.get_pos ev.(pos - 1)).Lexing.pos_cnum <= (Events.get_pos ev.(pos)).Lexing.pos_cnum - char - then ev.(pos - 1) - else ev.(pos) + then { ev_frag; ev_ev = ev.(pos - 1) } + else { ev_frag; ev_ev = ev.(pos) } with Not_found -> let pos = Array.length ev - 1 in if pos < 0 then raise Not_found; - ev.(pos) + { ev_frag; ev_ev = ev.(pos) } (* Flip "event" bit on all instructions *) -let set_all_events () = +let set_all_events frag = Hashtbl.iter - (fun _pc ev -> + (fun pc ev -> match ev.ev_kind with Event_pseudo -> () - | _ -> Debugcom.set_event ev.ev_pos) + | _ when pc.frag = frag -> set_event pc + | _ -> ()) events_by_pc - (* Previous `pc'. *) (* Save time if `update_current_event' is called *) (* several times at the same point. *) -let old_pc = ref (None : int option) +let old_pc = ref (None : pc option) (* Recompute the current event *) let update_current_event () = diff --git a/debugger/symbols.mli b/debugger/symbols.mli index b1fc9d6f9..30728f558 100644 --- a/debugger/symbols.mli +++ b/debugger/symbols.mli @@ -14,6 +14,8 @@ (* *) (**************************************************************************) +open Events + (* Modules used by the program. *) val modules : string list ref @@ -21,31 +23,49 @@ val modules : string list ref * compiled *) val program_source_dirs : string list ref -(* Read debugging info from executable file *) -val read_symbols : string -> unit +(* Clear loaded symbols *) +val clear_symbols : unit -> unit -(* Flip "event" bit on all instructions *) -val set_all_events : unit -> unit +(* Read debugging info from executable or dynlinkable file + and associate with given code fragment *) +val read_symbols : int -> string -> unit + +(* Add debugging info from memory and associate with given + code fragment *) +val add_symbols : int -> Instruct.debug_event list list -> unit + +(* Erase debugging info associated with given code fragment *) +val erase_symbols : int -> unit + +(* Return the list of all code fragments that have debug info associated *) +val code_fragments : unit -> int list + +(* Flip "event" bit on all instructions in given fragment *) +val set_all_events : int -> unit (* Return event at given PC, or raise Not_found *) (* Can also return pseudo-event at beginning of functions *) -val any_event_at_pc : int -> Instruct.debug_event +val any_event_at_pc : Debugcom.pc -> code_event (* Return event at given PC, or raise Not_found *) -val event_at_pc : int -> Instruct.debug_event +val event_at_pc : Debugcom.pc -> code_event + (* Set event at given PC *) -val set_event_at_pc : int -> unit +val set_event_at_pc : Debugcom.pc -> unit (* List the events in `module'. *) -val events_in_module : string -> Instruct.debug_event list +val events_in_module : string -> int * Instruct.debug_event list + +(* List the modules in given code fragment. *) +val modules_in_code_fragment : int -> string list (* First event after the given position. *) (* --- Raise `Not_found' if no such event. *) -val event_at_pos : string -> int -> Instruct.debug_event +val event_at_pos : string -> int -> code_event (* Closest event from given position. *) (* --- Raise `Not_found' if no such event. *) -val event_near_pos : string -> int -> Instruct.debug_event +val event_near_pos : string -> int -> code_event (* Recompute the current event *) val update_current_event : unit -> unit diff --git a/debugger/time_travel.ml b/debugger/time_travel.ml index c239a20c1..4d3252fb1 100644 --- a/debugger/time_travel.ml +++ b/debugger/time_travel.ml @@ -99,6 +99,11 @@ let set_current_checkpoint checkpoint = if not checkpoint.c_valid then wait_for_connection checkpoint; current_checkpoint := checkpoint; + let dead_frags = List.filter (fun frag -> + not (List.mem frag checkpoint.c_code_fragments)) + (Symbols.code_fragments ()) + in + List.iter Symbols.erase_symbols dead_frags; set_current_connection checkpoint.c_fd (* Kill `checkpoint'. *) @@ -231,7 +236,8 @@ let duplicate_current_checkpoint () = c_parent = checkpoint; c_breakpoint_version = checkpoint.c_breakpoint_version; c_breakpoints = checkpoint.c_breakpoints; - c_trap_barrier = checkpoint.c_trap_barrier} + c_trap_barrier = checkpoint.c_trap_barrier; + c_code_fragments = checkpoint.c_code_fragments} in checkpoints := list_replace checkpoint new_checkpoint !checkpoints; set_current_checkpoint checkpoint; @@ -260,6 +266,29 @@ let interrupted = ref false (* Information about last breakpoint encountered *) let last_breakpoint = ref None +(* Last debug info loaded *) +let last_debug_info = ref None + +let rec do_go_dynlink steps = + match do_go steps with + | { rep_type = Code_loaded frag; rep_event_count = steps } as report -> + begin match !last_debug_info with + | Some di -> + Symbols.add_symbols frag di; + Symbols.set_all_events frag; + last_debug_info := None + | None -> assert false + end; + if !break_on_load then report + else do_go_dynlink steps + | { rep_type = Code_unloaded frag; rep_event_count = steps } -> + Symbols.erase_symbols frag; + do_go_dynlink steps + | { rep_type = Debug_info di; rep_event_count = steps } -> + last_debug_info := Some (Array.to_list di); + do_go_dynlink steps + | report -> report + (* Ensure we stop on an event. *) let rec stop_on_event report = match report with @@ -282,7 +311,7 @@ and find_event () = print_string "Searching next event..."; print_newline () end; - let report = do_go _1 in + let report = do_go_dynlink _1 in !current_checkpoint.c_report <- Some report; stop_on_event report @@ -302,9 +331,10 @@ let internal_step duration = update_breakpoints (); update_trap_barrier (); !current_checkpoint.c_state <- C_running duration; - let report = do_go duration in + let report = do_go_dynlink duration in !current_checkpoint.c_report <- Some report; !current_checkpoint.c_state <- C_stopped; + !current_checkpoint.c_code_fragments <- Symbols.code_fragments (); if report.rep_type = Event then begin !current_checkpoint.c_time <- !current_checkpoint.c_time ++ duration; @@ -314,7 +344,7 @@ let internal_step duration = else begin !current_checkpoint.c_time <- !current_checkpoint.c_time ++ duration - -- (Int64.of_int report.rep_event_count) ++ _1; + -- report.rep_event_count ++ _1; interrupted := true; last_breakpoint := None; stop_on_event report @@ -350,7 +380,8 @@ let new_checkpoint pid fd = c_parent = root; c_breakpoint_version = 0; c_breakpoints = []; - c_trap_barrier = 0} + c_trap_barrier = 0; + c_code_fragments = [0]} in insert_checkpoint new_checkpoint @@ -469,7 +500,6 @@ let find_last_breakpoint max_time = (Some (pc, _)) as state when breakpoint_at_pc pc -> state | _ -> None) - (* Run from `time_max' back to `time'. *) (* --- Assume 0 <= time < time_max *) let rec back_to time time_max = @@ -522,9 +552,9 @@ let finish () = None -> prerr_endline "`finish' not meaningful in outermost frame."; raise Toplevel - | Some curr_event -> + | Some {ev_ev={ev_stacksize}} -> set_initial_frame(); - let (frame, pc) = up_frame curr_event.ev_stacksize in + let (frame, pc) = up_frame ev_stacksize in if frame < 0 then begin prerr_endline "`finish' not meaningful in outermost frame."; raise Toplevel @@ -558,18 +588,18 @@ let next_1 () = match !current_event with None -> (* Beginning of the program. *) step _1 - | Some event1 -> + | Some {ev_ev={ev_stacksize=ev_stacksize1}} -> let (frame1, _pc1) = initial_frame() in step _1; if not !interrupted then begin Symbols.update_current_event (); match !current_event with None -> () - | Some event2 -> + | Some {ev_ev={ev_stacksize=ev_stacksize2}} -> let (frame2, _pc2) = initial_frame() in (* Call `finish' if we've entered a function. *) if frame1 >= 0 && frame2 >= 0 && - frame2 - event2.ev_stacksize > frame1 - event1.ev_stacksize + frame2 - ev_stacksize2 > frame1 - ev_stacksize1 then finish() end @@ -589,9 +619,9 @@ let start () = None -> prerr_endline "`start not meaningful in outermost frame."; raise Toplevel - | Some curr_event -> + | Some {ev_ev={ev_stacksize}} -> let (frame, _) = initial_frame() in - let (frame', pc) = up_frame curr_event.ev_stacksize in + let (frame', pc) = up_frame ev_stacksize in if frame' < 0 then begin prerr_endline "`start not meaningful in outermost frame."; raise Toplevel @@ -602,11 +632,11 @@ let start () = prerr_endline "Calling function has no debugging information."; raise Toplevel with - {ev_info = Event_return nargs} -> nargs + {ev_ev = {ev_info = Event_return nargs}} -> nargs | _ -> Misc.fatal_error "Time_travel.start" in let offset = if nargs < 4 then 1 else 2 in - let pc = pc - 4 * offset in + let pc = { pc with pos = pc.pos - 4 * offset } in while exec_with_temporary_breakpoint pc back_run; match !last_breakpoint with @@ -614,7 +644,7 @@ let start () = step _minus1; (not !interrupted) && - (frame' - nargs > frame - curr_event.ev_stacksize) + (frame' - nargs > frame - ev_stacksize) | _ -> false do @@ -626,18 +656,18 @@ let previous_1 () = match !current_event with None -> (* End of the program. *) step _minus1 - | Some event1 -> + | Some {ev_ev={ev_stacksize=ev_stacksize1}} -> let (frame1, _pc1) = initial_frame() in step _minus1; if not !interrupted then begin Symbols.update_current_event (); match !current_event with None -> () - | Some event2 -> + | Some {ev_ev={ev_stacksize=ev_stacksize2}} -> let (frame2, _pc2) = initial_frame() in (* Call `start' if we've entered a function. *) if frame1 >= 0 && frame2 >= 0 && - frame2 - event2.ev_stacksize > frame1 - event1.ev_stacksize + frame2 - ev_stacksize2 > frame1 - ev_stacksize1 then start() end diff --git a/manual/manual/cmds/debugger.etex b/manual/manual/cmds/debugger.etex index d77361e94..363911e22 100644 --- a/manual/manual/cmds/debugger.etex +++ b/manual/manual/cmds/debugger.etex @@ -86,7 +86,7 @@ by typing an end-of-file character (usually "ctrl-D"). Typing an interrupt character (usually "ctrl-C") will not exit the debugger, but will terminate the action of any debugger command that is in -progress and return to the debugger command level. +progress and return to the debugger command level. \section{Commands} \label{s:debugger-commands} @@ -310,8 +310,13 @@ column \var{column}. Set a breakpoint in module \var{module} at the event closest to character number \var{character}. -\item["break "\var{address}] -Set a breakpoint at the code address \var{address}. +\item["break " \var{frag}":"\var{pc}, "break " \var{pc}] +Set a breakpoint at code address \var{frag}":"\var{pc}. The integer +\var{frag} is the identifier of a code fragment, a set of modules that +have been loaded at once, either initially or with the "Dynlink" +module. The integer \var{pc} is the instruction counter within this +code fragment. If \var{frag} is ommited, it defaults to 0, which is +the code fragment of the program loaded initially. \item["delete "\optvar{breakpoint-numbers}] Delete the specified breakpoints. Without argument, all breakpoints @@ -513,6 +518,33 @@ checkpoints. Select whether the debugger makes checkpoints or not. \end{options} +\subsection{Behavior of the debugger with respect to "fork"} + +When the program issues a call to "fork", the debugger can either +follow the child or the parent. By default, the debugger follows the +parent process. The variable \var{follow_fork_mode} controls this +behavior: + +\begin{options} +\item["set follow_fork_mode" \var{child/parent}] +Select whether to follow the child or the parent in case of a call to +"fork". +\end{options} + +\subsection{Stopping execution when new code is loaded} + +The debugger is compatible with the "Dynlink" module. However, when an +external module is not yet loaded, it is impossible to set a +breakpoint in its code. In order to facilitate setting breakpoints in +dynamically loaded code, the debugger stops the program each time new +modules are loaded. This behavior can be disabled using the +"break_on_load" variable: + +\begin{options} +\item["set break_on_load" \var{on/off}] +Select whether to stop after loading new code. +\end{options} + \subsection{Communication between the debugger and the program} \label{s:communication} diff --git a/runtime/.depend b/runtime/.depend index 591991e53..d6bfbfaf0 100644 --- a/runtime/.depend +++ b/runtime/.depend @@ -18,12 +18,13 @@ backtrace_byt_b.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_b.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_b.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -183,8 +184,8 @@ meta_b.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_b.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -327,12 +328,13 @@ backtrace_byt_bd.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_bd.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_bd.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -496,8 +498,8 @@ meta_bd.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_bd.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -640,12 +642,13 @@ backtrace_byt_bi.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_bi.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_bi.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -805,8 +808,8 @@ meta_bi.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_bi.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -949,12 +952,13 @@ backtrace_byt_bpic.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_bpic.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_bpic.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -1114,8 +1118,8 @@ meta_bpic.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_bpic.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -1258,12 +1262,13 @@ backtrace_byt_n.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_n.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_n.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -1420,8 +1425,8 @@ meta_n.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_n.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -1564,12 +1569,13 @@ backtrace_byt_nd.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_nd.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_nd.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -1730,8 +1736,8 @@ meta_nd.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_nd.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -1874,12 +1880,13 @@ backtrace_byt_ni.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_ni.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_ni.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -2036,8 +2043,8 @@ meta_ni.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \ caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_ni.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ @@ -2180,12 +2187,13 @@ backtrace_byt_npic.$(O): backtrace_byt.c caml/config.h caml/m.h caml/s.h \ caml/exec.h caml/fix_code.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/startup.h caml/exec.h caml/stacks.h caml/memory.h caml/sys.h \ - caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h + caml/backtrace.h caml/fail.h caml/backtrace_prim.h caml/backtrace.h \ + caml/debugger.h backtrace_npic.$(O): backtrace.c caml/alloc.h caml/misc.h caml/config.h caml/m.h \ caml/s.h caml/mlvalues.h caml/memory.h caml/gc.h caml/major_gc.h \ caml/freelist.h caml/minor_gc.h caml/address_class.h caml/memprof.h \ caml/backtrace.h caml/exec.h caml/backtrace_prim.h caml/backtrace.h \ - caml/fail.h + caml/fail.h caml/debugger.h backtrace_nat_npic.$(O): backtrace_nat.c caml/alloc.h caml/misc.h caml/config.h \ caml/m.h caml/s.h caml/mlvalues.h caml/backtrace.h caml/exec.h \ caml/backtrace_prim.h caml/backtrace.h caml/memory.h caml/gc.h \ @@ -2342,8 +2350,8 @@ meta_npic.$(O): meta.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h caml/intext.h caml/io.h caml/major_gc.h caml/freelist.h caml/memory.h \ caml/gc.h caml/major_gc.h caml/minor_gc.h caml/address_class.h \ caml/memprof.h caml/minor_gc.h caml/misc.h caml/mlvalues.h caml/prims.h \ - caml/stacks.h caml/memory.h caml/backtrace_prim.h caml/backtrace.h \ - caml/exec.h + caml/stacks.h caml/memory.h caml/debugger.h caml/backtrace_prim.h \ + caml/backtrace.h caml/exec.h minor_gc_npic.$(O): minor_gc.c caml/custom.h caml/mlvalues.h caml/config.h \ caml/m.h caml/s.h caml/misc.h caml/config.h caml/fail.h caml/finalise.h \ caml/roots.h caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h \ diff --git a/runtime/backtrace.c b/runtime/backtrace.c index e59030abf..e5fd6705a 100644 --- a/runtime/backtrace.c +++ b/runtime/backtrace.c @@ -26,6 +26,7 @@ #include "caml/backtrace.h" #include "caml/backtrace_prim.h" #include "caml/fail.h" +#include "caml/debugger.h" /* The table of debug information fragments */ struct ext_table caml_debug_info; diff --git a/runtime/backtrace_byt.c b/runtime/backtrace_byt.c index be96de2f5..20917f784 100644 --- a/runtime/backtrace_byt.c +++ b/runtime/backtrace_byt.c @@ -42,6 +42,7 @@ #include "caml/backtrace.h" #include "caml/fail.h" #include "caml/backtrace_prim.h" +#include "caml/debugger.h" /* The table of debug information fragments */ struct ext_table caml_debug_info; @@ -178,6 +179,9 @@ CAMLprim value caml_add_debug_info(code_t code_start, value code_size, CAMLparam1(events_heap); struct debug_info *debug_info; + if (events_heap != Val_unit) + caml_debugger(DEBUG_INFO_ADDED, events_heap); + /* build the OCaml-side debug_info value */ debug_info = caml_stat_alloc(sizeof(struct debug_info)); diff --git a/runtime/caml/debugger.h b/runtime/caml/debugger.h index c98f35a8d..f5b27f618 100644 --- a/runtime/caml/debugger.h +++ b/runtime/caml/debugger.h @@ -29,13 +29,16 @@ extern uintnat caml_event_count; enum event_kind { EVENT_COUNT, BREAKPOINT, PROGRAM_START, PROGRAM_EXIT, - TRAP_BARRIER, UNCAUGHT_EXC + TRAP_BARRIER, UNCAUGHT_EXC, DEBUG_INFO_ADDED, + CODE_LOADED, CODE_UNLOADED }; void caml_debugger_init (void); -void caml_debugger (enum event_kind event); +void caml_debugger (enum event_kind event, value param); void caml_debugger_cleanup_fork (void); +opcode_t caml_debugger_saved_instruction(code_t pc); + /* Communication protocol */ /* Requests from the debugger to the runtime system */ @@ -97,7 +100,11 @@ enum debugger_request { /* Replies to a REQ_GO request. All replies are followed by three uint32_t: - the value of the event counter - the position of the stack - - the current pc. */ + - the current pc. + The REP_CODE_DEBUG_INFO reply is also followed by: + - the newly added debug information. + The REP_CODE_{UN,}LOADED reply is also followed by: + - the code fragment index. */ enum debugger_reply { REP_EVENT = 'e', @@ -108,8 +115,14 @@ enum debugger_reply { /* Program exited by calling exit or reaching the end of the source. */ REP_TRAP = 's', /* Trap barrier crossed. */ - REP_UNCAUGHT_EXC = 'u' + REP_UNCAUGHT_EXC = 'u', /* Program exited due to a stray exception. */ + REP_CODE_DEBUG_INFO = 'D', + /* Additional debug info loaded. */ + REP_CODE_LOADED = 'L', + /* Additional code loaded. */ + REP_CODE_UNLOADED = 'U', + /* Additional code unloaded. */ }; #endif /* CAML_INTERNALS */ diff --git a/runtime/caml/fix_code.h b/runtime/caml/fix_code.h index 7e5633d6d..83c393a17 100644 --- a/runtime/caml/fix_code.h +++ b/runtime/caml/fix_code.h @@ -26,7 +26,6 @@ extern code_t caml_start_code; extern asize_t caml_code_size; -extern unsigned char * caml_saved_code; void caml_init_code_fragments(void); void caml_load_code (int fd, asize_t len); diff --git a/runtime/caml/intext.h b/runtime/caml/intext.h index 927e24970..be4b9467b 100644 --- a/runtime/caml/intext.h +++ b/runtime/caml/intext.h @@ -188,24 +188,6 @@ CAMLnoreturn_start CAMLextern void caml_deserialize_error(char * msg) CAMLnoreturn_end; - -#ifdef CAML_INTERNALS - -/* Auxiliary stuff for sending code pointers */ - -struct code_fragment { - char * code_start; - char * code_end; - unsigned char digest[16]; - char digest_computed; -}; - -CAMLextern struct code_fragment * caml_extern_find_code(char *addr); - -extern struct ext_table caml_code_fragments_table; - -#endif /* CAML_INTERNALS */ - #ifdef __cplusplus } #endif diff --git a/runtime/caml/misc.h b/runtime/caml/misc.h index 3bdfef303..5a0555585 100644 --- a/runtime/caml/misc.h +++ b/runtime/caml/misc.h @@ -443,6 +443,19 @@ extern void caml_instr_atexit (void); # endif #endif +/* A table of all code fragments (main program and dynlinked modules) */ + +struct code_fragment { + char *code_start; + char *code_end; + unsigned char digest[16]; + char digest_computed; +}; + +extern struct ext_table caml_code_fragments_table; + +int caml_find_code_fragment(char* pc, int *index, struct code_fragment **cf); + #endif /* CAML_INTERNALS */ #ifdef __cplusplus diff --git a/runtime/debugger.c b/runtime/debugger.c index f77cf1eb6..ab66a0808 100644 --- a/runtime/debugger.c +++ b/runtime/debugger.c @@ -39,7 +39,7 @@ void caml_debugger_init(void) { } -void caml_debugger(enum event_kind event) +void caml_debugger(enum event_kind event, value param) { } @@ -95,6 +95,8 @@ static struct channel * dbg_out;/* Output channel on the socket */ static char *dbg_addr = NULL; +static struct ext_table breakpoints_table; + static void open_connection(void) { #ifdef _WIN32 @@ -186,6 +188,8 @@ void caml_debugger_init(void) if (dbg_addr != NULL) caml_stat_free(dbg_addr); dbg_addr = address; + caml_ext_table_init(&breakpoints_table, 16); + #ifdef _WIN32 winsock_startup(); (void)atexit(winsock_cleanup); @@ -266,16 +270,113 @@ static void safe_output_value(struct channel *chan, value val) caml_external_raise = saved_external_raise; } +struct breakpoint { + code_t pc; + opcode_t saved; +}; + +static struct breakpoint *find_breakpoint(code_t pc) +{ + struct breakpoint *bpti; + int i; + + for (i = 0; i < breakpoints_table.size; i++) { + bpti = (struct breakpoint *) breakpoints_table.contents[i]; + if (bpti->pc == pc) + return bpti; + } + + return NULL; +} + +static void save_instruction(code_t pc) +{ + struct breakpoint *bpt; + + if (find_breakpoint(pc) != NULL) { + /* Already saved. Nothing to do. */ + return; + } + + bpt = caml_stat_alloc(sizeof(struct breakpoint)); + bpt->pc = pc; + bpt->saved = *pc; + caml_ext_table_add(&breakpoints_table, bpt); +} + +static void set_instruction(code_t pc, opcode_t opcode) +{ + save_instruction(pc); + caml_set_instruction(pc, opcode); +} + +static void restore_instruction(code_t pc) +{ + struct breakpoint *bpt = find_breakpoint(pc); + CAMLassert (bpt != NULL); + + *pc = bpt->saved; + caml_ext_table_remove(&breakpoints_table, bpt); +} + +static code_t pc_from_pos(int frag, intnat pos) +{ + struct code_fragment *cf; + CAMLassert (frag >= 0); + CAMLassert (frag < caml_code_fragments_table.size); + CAMLassert (pos >= 0); + CAMLassert (pos < caml_code_size); + + cf = (struct code_fragment *) caml_code_fragments_table.contents[frag]; + return (code_t) (cf->code_start + pos); +} + +opcode_t caml_debugger_saved_instruction(code_t pc) +{ + struct breakpoint *bpt = find_breakpoint(pc); + CAMLassert (bpt != NULL); + + return bpt->saved; +} + +void caml_debugger_code_unloaded(int index) +{ + struct code_fragment *cf; + struct breakpoint *bpti; + int i; + + if (!caml_debugger_in_use) return; + + caml_putch(dbg_out, REP_CODE_UNLOADED); + caml_putword(dbg_out, index); + + cf = (struct code_fragment *) caml_code_fragments_table.contents[index]; + + for (i = 0; i < breakpoints_table.size; i++) { + bpti = (struct breakpoint *) breakpoints_table.contents[i]; + if ((char*) bpti->pc >= cf->code_start && (char*) bpti->pc < cf->code_end) { + caml_ext_table_remove(&breakpoints_table, bpti); + /* caml_ext_table_remove has shifted the next element in place + of the one we just removed. Decrement i for the next + iteration. */ + i--; + } + } +} + #define Pc(sp) ((code_t)((sp)[0])) #define Env(sp) ((sp)[1]) #define Extra_args(sp) (Long_val(((sp)[2]))) #define Locals(sp) ((sp) + 3) -void caml_debugger(enum event_kind event) +void caml_debugger(enum event_kind event, value param) { - value * frame; + value *frame, *newframe; intnat i, pos; value val; + int frag, found = 0; + struct code_fragment *cf; + (void) found; /* Silence unused variable warning. */ if (dbg_socket == -1) return; /* Not connected to a debugger. */ @@ -301,14 +402,30 @@ void caml_debugger(enum event_kind event) case UNCAUGHT_EXC: caml_putch(dbg_out, REP_UNCAUGHT_EXC); break; + case DEBUG_INFO_ADDED: + caml_putch(dbg_out, REP_CODE_DEBUG_INFO); + caml_output_val(dbg_out, /* debug_info */ param, Val_emptylist); + break; + case CODE_LOADED: + caml_putch(dbg_out, REP_CODE_LOADED); + caml_putword(dbg_out, /* index */ Long_val(param)); + break; + case CODE_UNLOADED: + caml_putch(dbg_out, REP_CODE_UNLOADED); + caml_putword(dbg_out, /* index */ Long_val(param)); + break; } caml_putword(dbg_out, caml_event_count); if (event == EVENT_COUNT || event == BREAKPOINT) { caml_putword(dbg_out, caml_stack_high - frame); - caml_putword(dbg_out, (Pc(frame) - caml_start_code) * sizeof(opcode_t)); + found = caml_find_code_fragment((char*) Pc(frame), &frag, &cf); + CAMLassert(found); + caml_putword(dbg_out, frag); + caml_putword(dbg_out, (char*) Pc(frame) - cf->code_start); } else { /* No PC and no stack frame associated with other events */ caml_putword(dbg_out, 0); + caml_putword(dbg_out, -1); caml_putword(dbg_out, 0); } caml_flush(dbg_out); @@ -319,23 +436,19 @@ void caml_debugger(enum event_kind event) while(1) { switch(caml_getch(dbg_in)) { case REQ_SET_EVENT: + frag = caml_getword(dbg_in); pos = caml_getword(dbg_in); - CAMLassert (pos >= 0); - CAMLassert (pos < caml_code_size); - caml_set_instruction(caml_start_code + pos / sizeof(opcode_t), EVENT); + set_instruction(pc_from_pos(frag, pos), EVENT); break; case REQ_SET_BREAKPOINT: + frag = caml_getword(dbg_in); pos = caml_getword(dbg_in); - CAMLassert (pos >= 0); - CAMLassert (pos < caml_code_size); - caml_set_instruction(caml_start_code + pos / sizeof(opcode_t), BREAK); + set_instruction(pc_from_pos(frag, pos), BREAK); break; case REQ_RESET_INSTR: + frag = caml_getword(dbg_in); pos = caml_getword(dbg_in); - CAMLassert (pos >= 0); - CAMLassert (pos < caml_code_size); - pos = pos / sizeof(opcode_t); - caml_set_instruction(caml_start_code + pos, caml_saved_code[pos]); + restore_instruction(pc_from_pos(frag, pos)); break; case REQ_CHECKPOINT: #ifndef _WIN32 @@ -371,10 +484,13 @@ void caml_debugger(enum event_kind event) /* Fall through */ case REQ_GET_FRAME: caml_putword(dbg_out, caml_stack_high - frame); - if (frame < caml_stack_high){ - caml_putword(dbg_out, (Pc(frame) - caml_start_code) * sizeof(opcode_t)); - }else{ - caml_putword (dbg_out, 0); + if (frame < caml_stack_high && + caml_find_code_fragment((char*) Pc(frame), &frag, &cf)) { + caml_putword(dbg_out, frag); + caml_putword(dbg_out, (char*) Pc(frame) - cf->code_start); + } else { + caml_putword(dbg_out, 0); + caml_putword(dbg_out, 0); } caml_flush(dbg_out); break; @@ -384,12 +500,15 @@ void caml_debugger(enum event_kind event) break; case REQ_UP_FRAME: i = caml_getword(dbg_in); - if (frame + Extra_args(frame) + i + 3 >= caml_stack_high) { + newframe = frame + Extra_args(frame) + i + 3; + if (newframe >= caml_stack_high || + !caml_find_code_fragment((char*) Pc(newframe), &frag, &cf)) { caml_putword(dbg_out, -1); } else { - frame += Extra_args(frame) + i + 3; + frame = newframe; caml_putword(dbg_out, caml_stack_high - frame); - caml_putword(dbg_out, (Pc(frame) - caml_start_code) * sizeof(opcode_t)); + caml_putword(dbg_out, frag); + caml_putword(dbg_out, (char*) Pc(frame) - cf->code_start); } caml_flush(dbg_out); break; @@ -441,7 +560,10 @@ void caml_debugger(enum event_kind event) break; case REQ_GET_CLOSURE_CODE: val = getval(dbg_in); - caml_putword(dbg_out, (Code_val(val)-caml_start_code) * sizeof(opcode_t)); + found = caml_find_code_fragment((char*) Code_val(val), &frag, &cf); + CAMLassert(found); + caml_putword(dbg_out, frag); + caml_putword(dbg_out, (char*) Code_val(val) - cf->code_start); caml_flush(dbg_out); break; case REQ_SET_FORK_MODE: diff --git a/runtime/extern.c b/runtime/extern.c index ac434210c..5409d7b18 100644 --- a/runtime/extern.c +++ b/runtime/extern.c @@ -610,9 +610,13 @@ static void extern_rec(value v) } } } - else if ((cf = caml_extern_find_code((char *) v)) != NULL) { + else if (caml_find_code_fragment((char*) v, NULL, &cf)) { if ((extern_flags & CLOSURES) == 0) extern_invalid_argument("output_value: functional value"); + if (! cf->digest_computed) { + caml_md5_block(cf->digest, cf->code_start, cf->code_end - cf->code_start); + cf->digest_computed = 1; + } writecode32(CODE_CODEPOINTER, (char *) v - cf->code_start); writeblock((const char *)cf->digest, 16); } else { @@ -929,19 +933,3 @@ CAMLexport void caml_serialize_block_float_8(void * data, intnat len) } #endif } - -/* Find where a code pointer comes from */ - -CAMLexport struct code_fragment * caml_extern_find_code(char *addr) -{ - int i; - for (i = caml_code_fragments_table.size - 1; i >= 0; i--) { - struct code_fragment * cf = caml_code_fragments_table.contents[i]; - if (! cf->digest_computed) { - caml_md5_block(cf->digest, cf->code_start, cf->code_end - cf->code_start); - cf->digest_computed = 1; - } - if (cf->code_start <= addr && addr < cf->code_end) return cf; - } - return NULL; -} diff --git a/runtime/fix_code.c b/runtime/fix_code.c index e55ac5c5d..3cfcac497 100644 --- a/runtime/fix_code.c +++ b/runtime/fix_code.c @@ -37,7 +37,6 @@ code_t caml_start_code; asize_t caml_code_size; -unsigned char * caml_saved_code; struct ext_table caml_code_fragments_table; /* Read the main bytecode block from a file */ @@ -56,8 +55,6 @@ void caml_init_code_fragments(void) { void caml_load_code(int fd, asize_t len) { - int i; - caml_code_size = len; caml_start_code = (code_t) caml_stat_alloc(caml_code_size); if (read(fd, (char *) caml_start_code, caml_code_size) != caml_code_size) @@ -67,15 +64,7 @@ void caml_load_code(int fd, asize_t len) #ifdef ARCH_BIG_ENDIAN caml_fixup_endianness(caml_start_code, caml_code_size); #endif - if (caml_debugger_in_use) { - len /= sizeof(opcode_t); - caml_saved_code = (unsigned char *) caml_stat_alloc(len); - for (i = 0; i < len; i++) caml_saved_code[i] = caml_start_code[i]; - } #ifdef THREADED_CODE - /* Better to thread now than at the beginning of [caml_interprete], - since the debugger interface needs to perform SET_EVENT requests - on the code. */ caml_thread_code(caml_start_code, caml_code_size); #endif } diff --git a/runtime/interp.c b/runtime/interp.c index 82f7e39b7..1521b5012 100644 --- a/runtime/interp.c +++ b/runtime/interp.c @@ -104,10 +104,10 @@ sp is a local copy of the global variable caml_extern_sp. */ #ifdef THREADED_CODE #define Restart_curr_instr \ - goto *(jumptable[caml_saved_code[pc - 1 - caml_start_code]]) + goto *((void*)(jumptbl_base + caml_debugger_saved_instruction(pc - 1))) #else #define Restart_curr_instr \ - curr_instr = caml_saved_code[pc - 1 - caml_start_code]; \ + curr_instr = caml_debugger_saved_instruction(pc - 1); \ goto dispatch_instr #endif @@ -845,17 +845,20 @@ value caml_interprete(code_t prog, asize_t prog_size) Next; Instruct(RAISE_NOTRACE): - if (caml_trapsp >= caml_trap_barrier) caml_debugger(TRAP_BARRIER); + if (caml_trapsp >= caml_trap_barrier) + caml_debugger(TRAP_BARRIER, Val_unit); goto raise_notrace; Instruct(RERAISE): - if (caml_trapsp >= caml_trap_barrier) caml_debugger(TRAP_BARRIER); + if (caml_trapsp >= caml_trap_barrier) + caml_debugger(TRAP_BARRIER, Val_unit); if (caml_backtrace_active) caml_stash_backtrace(accu, pc, sp, 1); goto raise_notrace; Instruct(RAISE): raise_exception: - if (caml_trapsp >= caml_trap_barrier) caml_debugger(TRAP_BARRIER); + if (caml_trapsp >= caml_trap_barrier) + caml_debugger(TRAP_BARRIER, Val_unit); if (caml_backtrace_active) caml_stash_backtrace(accu, pc, sp, 0); raise_notrace: if ((char *) caml_trapsp @@ -1130,14 +1133,14 @@ value caml_interprete(code_t prog, asize_t prog_size) Instruct(EVENT): if (--caml_event_count == 0) { Setup_for_debugger; - caml_debugger(EVENT_COUNT); + caml_debugger(EVENT_COUNT, Val_unit); Restore_after_debugger; } Restart_curr_instr; Instruct(BREAK): Setup_for_debugger; - caml_debugger(BREAKPOINT); + caml_debugger(BREAKPOINT, Val_unit); Restore_after_debugger; Restart_curr_instr; diff --git a/runtime/meta.c b/runtime/meta.c index 53b842228..1bfe06275 100644 --- a/runtime/meta.c +++ b/runtime/meta.c @@ -31,6 +31,7 @@ #include "caml/mlvalues.h" #include "caml/prims.h" #include "caml/stacks.h" +#include "caml/debugger.h" #include "caml/backtrace_prim.h" #ifndef NATIVE_CODE @@ -117,6 +118,10 @@ CAMLprim value caml_reify_bytecode(value ls_prog, caml_thread_code((code_t) prog, len); #endif caml_prepare_bytecode((code_t) prog, len); + + /* Notify debugger after fragment gets added and reified. */ + caml_debugger(CODE_LOADED, Val_long(caml_code_fragments_table.size - 1)); + clos = caml_alloc_small (1, Closure_tag); Code_val(clos) = (code_t) prog; bytecode = caml_alloc_small (2, Abstract_tag); @@ -136,26 +141,21 @@ CAMLprim value caml_static_release_bytecode(value bc) { code_t prog; asize_t len; - struct code_fragment * cf = NULL, * cfi; - int i; + int found, index; + struct code_fragment *cf; + prog = Bytecode_val(bc)->prog; len = Bytecode_val(bc)->len; caml_remove_debug_info(prog); - for (i = 0; i < caml_code_fragments_table.size; i++) { - cfi = (struct code_fragment *) caml_code_fragments_table.contents[i]; - if (cfi->code_start == (char *) prog && - cfi->code_end == (char *) prog + len) { - cf = cfi; - break; - } - } - if (!cf) { - /* [cf] Not matched with a caml_reify_bytecode call; impossible. */ - CAMLassert (0); - } else { - caml_ext_table_remove(&caml_code_fragments_table, cf); - } + found = caml_find_code_fragment((char*) prog, &index, &cf); + /* Not matched with a caml_reify_bytecode call; impossible. */ + CAMLassert(found); (void) found; /* Silence unused variable warning. */ + + /* Notify debugger before the fragment gets destroyed. */ + caml_debugger(CODE_UNLOADED, Val_long(index)); + + caml_ext_table_remove(&caml_code_fragments_table, cf); #ifndef NATIVE_CODE caml_release_bytecode(prog, len); @@ -166,17 +166,6 @@ CAMLprim value caml_static_release_bytecode(value bc) return Val_unit; } -CAMLprim value caml_register_code_fragment(value prog, value len, value digest) -{ - struct code_fragment * cf = caml_stat_alloc(sizeof(struct code_fragment)); - cf->code_start = (char *) prog; - cf->code_end = (char *) prog + Long_val(len); - memcpy(cf->digest, String_val(digest), 16); - cf->digest_computed = 1; - caml_ext_table_add(&caml_code_fragments_table, cf); - return Val_unit; -} - CAMLprim value caml_realloc_global(value size) { mlsize_t requested_size, actual_size, i; diff --git a/runtime/misc.c b/runtime/misc.c index 576f982a1..013959910 100644 --- a/runtime/misc.c +++ b/runtime/misc.c @@ -281,3 +281,19 @@ void caml_instr_atexit (void) } } #endif /* CAML_INSTR */ + +int caml_find_code_fragment(char* pc, int *index, struct code_fragment **cf) +{ + struct code_fragment *cfi; + int i; + + for (i = 0; i < caml_code_fragments_table.size; i++) { + cfi = (struct code_fragment *) caml_code_fragments_table.contents[i]; + if ((char*) pc >= cfi->code_start && (char*) pc < cfi->code_end) { + if (index != NULL) *index = i; + if (cf != NULL) *cf = cfi; + return 1; + } + } + return 0; +} diff --git a/runtime/startup_byt.c b/runtime/startup_byt.c index a996788bc..b45472663 100644 --- a/runtime/startup_byt.c +++ b/runtime/startup_byt.c @@ -444,14 +444,14 @@ CAMLexport void caml_main(char_os **argv) _beginthread(caml_signal_thread, 4096, NULL); #endif /* Execute the program */ - caml_debugger(PROGRAM_START); + caml_debugger(PROGRAM_START, Val_unit); res = caml_interprete(caml_start_code, caml_code_size); if (Is_exception_result(res)) { caml_exn_bucket = Extract_exception(res); if (caml_debugger_in_use) { caml_extern_sp = &caml_exn_bucket; /* The debugger needs the exception value.*/ - caml_debugger(UNCAUGHT_EXC); + caml_debugger(UNCAUGHT_EXC, Val_unit); } caml_fatal_uncaught_exception(caml_exn_bucket); } @@ -513,12 +513,6 @@ CAMLexport value caml_startup_code_exn( caml_code_size = code_size; caml_init_code_fragments(); caml_init_debug_info(); - if (caml_debugger_in_use) { - uintnat len, i; - len = code_size / sizeof(opcode_t); - caml_saved_code = (unsigned char *) caml_stat_alloc(len); - for (i = 0; i < len; i++) caml_saved_code[i] = caml_start_code[i]; - } #ifdef THREADED_CODE caml_thread_code(caml_start_code, code_size); #endif @@ -535,7 +529,7 @@ CAMLexport value caml_startup_code_exn( /* Initialize system libraries */ caml_sys_init(exe_name, argv); /* Execute the program */ - caml_debugger(PROGRAM_START); + caml_debugger(PROGRAM_START, Val_unit); return caml_interprete(caml_start_code, caml_code_size); } @@ -556,7 +550,7 @@ CAMLexport void caml_startup_code( if (caml_debugger_in_use) { caml_extern_sp = &caml_exn_bucket; /* The debugger needs the exception value.*/ - caml_debugger(UNCAUGHT_EXC); + caml_debugger(UNCAUGHT_EXC, Val_unit); } caml_fatal_uncaught_exception(caml_exn_bucket); } diff --git a/runtime/sys.c b/runtime/sys.c index 226d596cd..ae161244b 100644 --- a/runtime/sys.c +++ b/runtime/sys.c @@ -148,7 +148,7 @@ CAMLprim value caml_sys_exit(value retcode_v) } #ifndef NATIVE_CODE - caml_debugger(PROGRAM_EXIT); + caml_debugger(PROGRAM_EXIT, Val_unit); #endif caml_instr_atexit (); if (caml_cleanup_on_exit) diff --git a/testsuite/tests/tool-debugger/dynlink/host.debug.reference b/testsuite/tests/tool-debugger/dynlink/host.debug.reference new file mode 100644 index 000000000..2c3438ce7 --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/host.debug.reference @@ -0,0 +1,11 @@ +Loading program... done. +hello host + +Module(s) Plugin loaded. +Breakpoint: 1 +2 <|b|>print_endline "hello plugin" +Backtrace: +#0 Plugin plugin.ml:2:3 +#1 Plugin plugin.ml:4:10 +hello plugin +Program exit. diff --git a/testsuite/tests/tool-debugger/dynlink/host.ml b/testsuite/tests/tool-debugger/dynlink/host.ml new file mode 100644 index 000000000..bebb7aad3 --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/host.ml @@ -0,0 +1,35 @@ +(* TEST + +include dynlink +files = "host.ml plugin.ml" +libraries = "" + +flags += " -g " +ocamldebug_script = "${test_source_directory}/input_script" + +* debugger +** shared-libraries +** setup-ocamlc.byte-build-env +*** ocamlc.byte +module = "host.ml" +**** ocamlc.byte +module = "plugin.ml" +***** ocamlc.byte +module = "" +all_modules = "host.cmo" +program = "${test_build_directory}/host.byte" +libraries = "dynlink" + +****** run +output = "host.output" +******* check-program-output +reference = "${test_source_directory}/host.reference" + +******* ocamldebug +output = "host.debug.output" +******** check-program-output +reference = "${test_source_directory}/host.debug.reference" + +*) + +let () = print_endline "hello host"; Dynlink.loadfile "plugin.cmo" diff --git a/testsuite/tests/tool-debugger/dynlink/host.reference b/testsuite/tests/tool-debugger/dynlink/host.reference new file mode 100644 index 000000000..87d1fa92f --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/host.reference @@ -0,0 +1,2 @@ +hello host +hello plugin diff --git a/testsuite/tests/tool-debugger/dynlink/input_script b/testsuite/tests/tool-debugger/dynlink/input_script new file mode 100644 index 000000000..7f317811a --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/input_script @@ -0,0 +1,5 @@ +r +br @ Plugin 2 +r +bt +r diff --git a/testsuite/tests/tool-debugger/dynlink/ocamltests b/testsuite/tests/tool-debugger/dynlink/ocamltests new file mode 100644 index 000000000..f731a4ad6 --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/ocamltests @@ -0,0 +1 @@ +host.ml diff --git a/testsuite/tests/tool-debugger/dynlink/plugin.ml b/testsuite/tests/tool-debugger/dynlink/plugin.ml new file mode 100644 index 000000000..44160161d --- /dev/null +++ b/testsuite/tests/tool-debugger/dynlink/plugin.ml @@ -0,0 +1,4 @@ +let do_plugin () = + print_endline "hello plugin" + +let () = do_plugin ()