summaryrefslogtreecommitdiff
path: root/debugger
diff options
context:
space:
mode:
authorFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>2012-05-30 14:52:37 +0000
committerFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>2012-05-30 14:52:37 +0000
commitd39d43e55fab716fbe05cec3c89233f0dd208835 (patch)
treebf5c56aa9bb32a0e3d49509b8b2863a9ec407563 /debugger
parente3d82817909dd7bc69dff4f75aa63c5ba606d9c8 (diff)
downloadocaml-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/.depend6
-rw-r--r--debugger/Makefile.shared6
-rw-r--r--debugger/command_line.ml4
-rw-r--r--debugger/envaux.ml2
-rw-r--r--debugger/eval.ml2
-rw-r--r--debugger/main.ml5
-rw-r--r--debugger/program_management.ml4
-rw-r--r--debugger/source.ml17
-rw-r--r--debugger/unix_tools.ml1
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