diff options
| author | Fabrice Le Fessant <Fabrice.Le_fessant@inria.fr> | 2012-05-30 14:52:37 +0000 |
|---|---|---|
| committer | Fabrice Le Fessant <Fabrice.Le_fessant@inria.fr> | 2012-05-30 14:52:37 +0000 |
| commit | d39d43e55fab716fbe05cec3c89233f0dd208835 (patch) | |
| tree | bf5c56aa9bb32a0e3d49509b8b2863a9ec407563 /debugger | |
| parent | e3d82817909dd7bc69dff4f75aa63c5ba606d9c8 (diff) | |
| download | ocaml-d39d43e55fab716fbe05cec3c89233f0dd208835.tar.gz | |
merge with branch bin-annot
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12516 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'debugger')
| -rw-r--r-- | debugger/.depend | 6 | ||||
| -rw-r--r-- | debugger/Makefile.shared | 6 | ||||
| -rw-r--r-- | debugger/command_line.ml | 4 | ||||
| -rw-r--r-- | debugger/envaux.ml | 2 | ||||
| -rw-r--r-- | debugger/eval.ml | 2 | ||||
| -rw-r--r-- | debugger/main.ml | 5 | ||||
| -rw-r--r-- | debugger/program_management.ml | 4 | ||||
| -rw-r--r-- | debugger/source.ml | 17 | ||||
| -rw-r--r-- | debugger/unix_tools.ml | 1 |
9 files changed, 35 insertions, 12 deletions
diff --git a/debugger/.depend b/debugger/.depend index 1a04b1eaaa..75ed135a3a 100644 --- a/debugger/.depend +++ b/debugger/.depend @@ -124,12 +124,14 @@ main.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi time_travel.cmi \ show_information.cmi question.cmi program_management.cmi primitives.cmi \ parameters.cmi ../utils/misc.cmi input_handling.cmi frames.cmi exec.cmi \ ../typing/env.cmi debugger_config.cmi ../utils/config.cmi \ - command_line.cmi ../utils/clflags.cmi checkpoints.cmi + command_line.cmi ../typing/cmi_format.cmi ../utils/clflags.cmi \ + checkpoints.cmi main.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx time_travel.cmx \ show_information.cmx question.cmx program_management.cmx primitives.cmx \ parameters.cmx ../utils/misc.cmx input_handling.cmx frames.cmx exec.cmx \ ../typing/env.cmx debugger_config.cmx ../utils/config.cmx \ - command_line.cmx ../utils/clflags.cmx checkpoints.cmx + command_line.cmx ../typing/cmi_format.cmx ../utils/clflags.cmx \ + checkpoints.cmx parameters.cmo: primitives.cmi envaux.cmi debugger_config.cmi \ ../utils/config.cmi parameters.cmi parameters.cmx: primitives.cmx envaux.cmx debugger_config.cmx \ diff --git a/debugger/Makefile.shared b/debugger/Makefile.shared index 820af9af9e..964f71f699 100644 --- a/debugger/Makefile.shared +++ b/debugger/Makefile.shared @@ -15,8 +15,8 @@ include ../config/Makefile CAMLC=../ocamlcomp.sh -COMPFLAGS=-warn-error A $(INCLUDES) -LINKFLAGS=-linkall -I $(UNIXDIR) +COMPFLAGS=-g -warn-error A $(INCLUDES) +LINKFLAGS=-g -linkall -I $(UNIXDIR) CAMLYACC=../boot/ocamlyacc YACCFLAGS= CAMLLEX=../boot/ocamlrun ../boot/ocamllex @@ -35,7 +35,7 @@ OTHEROBJS=\ ../typing/ident.cmo ../typing/path.cmo ../typing/types.cmo \ ../typing/btype.cmo ../typing/primitive.cmo ../typing/typedtree.cmo \ ../typing/subst.cmo ../typing/predef.cmo \ - ../typing/datarepr.cmo ../typing/env.cmo ../typing/oprint.cmo \ + ../typing/datarepr.cmo ../typing/cmi_format.cmo ../typing/env.cmo ../typing/oprint.cmo \ ../typing/ctype.cmo ../typing/printtyp.cmo ../typing/mtype.cmo \ ../bytecomp/runtimedef.cmo ../bytecomp/bytesections.cmo \ ../bytecomp/dll.cmo ../bytecomp/meta.cmo ../bytecomp/symtable.cmo \ diff --git a/debugger/command_line.ml b/debugger/command_line.ml index 9b0084daf2..3977a85677 100644 --- a/debugger/command_line.ml +++ b/debugger/command_line.ml @@ -209,8 +209,8 @@ let line_loop ppf line_buffer = with | Exit -> stop_user_input () - | Sys_error s -> - error ("System error : " ^ s) +(* | Sys_error s -> + error ("System error : " ^ s) *) (** Instructions. **) let instr_cd ppf lexbuf = diff --git a/debugger/envaux.ml b/debugger/envaux.ml index 56786929eb..d146cd0fd8 100644 --- a/debugger/envaux.ml +++ b/debugger/envaux.ml @@ -31,7 +31,7 @@ let reset_cache () = let extract_sig env mty = match Mtype.scrape env mty with - Tmty_signature sg -> sg + Mty_signature sg -> sg | _ -> fatal_error "Envaux.extract_sig" let rec env_from_summary sum subst = diff --git a/debugger/eval.ml b/debugger/eval.ml index 0f8c8a0566..1e84d92081 100644 --- a/debugger/eval.ml +++ b/debugger/eval.ml @@ -149,7 +149,7 @@ and find_label lbl env ty path tydesc pos = function [] -> raise(Error(Wrong_label(ty, lbl))) | (name, mut, ty_arg) :: rem -> - if name = lbl then begin + if Ident.name name = lbl then begin let ty_res = Btype.newgenty(Tconstr(path, tydesc.type_params, ref Mnil)) in diff --git a/debugger/main.ml b/debugger/main.ml index 9dbb41ee60..1dcd5cf40a 100644 --- a/debugger/main.ml +++ b/debugger/main.ml @@ -224,6 +224,11 @@ let main () = Env.report_error err_formatter e; eprintf "@]@."; exit 2 + | Cmi_format.Error e -> + eprintf "Debugger [version %s] environment error:@ @[@;" Config.version; + Cmi_format.report_error err_formatter e; + eprintf "@]@."; + exit 2 let _ = Printexc.catch (Unix.handle_unix_error main) () diff --git a/debugger/program_management.ml b/debugger/program_management.ml index 3e6ffa81d1..27f1d9cc58 100644 --- a/debugger/program_management.ml +++ b/debugger/program_management.ml @@ -116,8 +116,10 @@ let ask_kill_program () = (*** Program loading and initializations. ***) let initialize_loading () = - if !debug_loading then + if !debug_loading then begin prerr_endline "Loading debugging information..."; + Printf.fprintf Pervasives.stderr "\tProgram: [%s]\n%!" !program_name; + end; begin try access !program_name [F_OK] with Unix_error _ -> prerr_endline "Program not found."; diff --git a/debugger/source.ml b/debugger/source.ml index 0f705f2598..65634cbe5f 100644 --- a/debugger/source.ml +++ b/debugger/source.ml @@ -28,7 +28,7 @@ let source_of_module pos mdle = try (String.sub m 0 len') = m' && (String.get m len') = '.' with - Invalid_argument _ -> false in + Invalid_argument _ -> false in let path = Hashtbl.fold (fun mdl dirs acc -> @@ -39,7 +39,20 @@ let source_of_module pos mdle = Debugger_config.load_path_for !Config.load_path in let fname = pos.Lexing.pos_fname in - if Filename.is_implicit fname then + if fname = "" then + let innermost_module = + try + let dot_index = String.rindex mdle '.' in + String.sub mdle (succ dot_index) (pred ((String.length mdle) - dot_index)) + with Not_found -> mdle in + let rec loop = + function + | [] -> raise Not_found + | ext :: exts -> + try find_in_path_uncap path (innermost_module ^ ext) + with Not_found -> loop exts + in loop source_extensions + else if Filename.is_implicit fname then find_in_path path fname else fname diff --git a/debugger/unix_tools.ml b/debugger/unix_tools.ml index dea47f99f8..2897420bc8 100644 --- a/debugger/unix_tools.ml +++ b/debugger/unix_tools.ml @@ -58,6 +58,7 @@ let report_error = function (* Return the full path if found. *) (* Raise `Not_found' otherwise. *) let search_in_path name = + Printf.fprintf Pervasives.stderr "search_in_path [%s]\n%!" name; let check name = try access name [X_OK]; name with Unix_error _ -> raise Not_found in |
