merge changes from release/3.11.1 to release/3.11.2

git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@9540 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
master
Damien Doligez 2010-01-20 16:26:46 +00:00
parent 8cd4fc6390
commit bdc0fadee2
132 changed files with 1400 additions and 864 deletions

57
Changes
View File

@ -22,8 +22,10 @@ Language features:
"let [rec] <ident> : 'a1 ... 'an. <typexp> = ..."
- First-class packages modules.
New kind of type expression, for packaged modules: (module PT).
New kind of expression, to pack a module as a first-class value: (module MODEXPR : PT).
New kind of module expression, to unpack a first-class value as a module: (val EXPR : PT).
New kind of expression, to pack a module as a first-class value:
(module MODEXPR : PT).
New kind of module expression, to unpack a first-class value as a module:
(val EXPR : PT).
PT is a package type of the form "S" or
"S with type t1 = ... and ... and type tn = ..." (S refers to a module type).
- Local opening of modules in a subexpression.
@ -58,6 +60,55 @@ Bug Fixes:
- PR#4775: compiler crash on crazy types (temporary fix)
Objective Caml 3.11.2:
----------------------
Bug fixes:
- PR#4151: better documentation for min and max w.r.t. NaN
- PR#4421: ocamlbuild uses wrong compiler for C files
- PR#4710, PR#4720: ocamlbuild does not use properly configuration information
- PR#4750: under some Windows installations, high start-up times for Unix lib
- PR#4777: problem with scanf and CRLF
- PR#4783: ocamlmklib problem under Windows
- PR#4810: BSD problem with socket addresses, e.g. in Unix.getnameinfo
- PR#4813: issue with parsing of float literals by the GNU assembler
- PR#4816: problem with modules and private types
- PR#4818: missed opportunity for type-based optimization of bigarray accesses
- PR#4821: check for duplicate method names in classes
- PR#4823: build problem on Mac OS X
- PR#4836: spurious errors raised by Unix.single_write under Windows
- PR#4841, PR#4860, PR#4930: problem with ocamlopt -output-obj under Mac OS X
- PR#4847: C compiler error with ocamlc -output-obj under Win64
- PR#4856: ocamlbuild uses ocamlrun to execute a native plugin
- PR#4867, PR#4760: ocamlopt -shared fails on Mac OS X 64bit
- PR#4873: ocamlbuild ignores "thread" tag when building a custom toplevel
- PR#4890: ocamlbuild tries to use native plugin on bytecode-only arch
- PR#4896: ocamlbuild should always pass -I to tools for external libraries
- PR#4900: small bug triggering automatic compaction even if max_overhead = 1M
- PR#4902: bug in %.0F printf format
- PR#4910: problem with format concatenation
- PR#4922: ocamlbuild recompiles too many files
- PR#4923: missing \xff for scanf %S
- PR#4933: functors not handling private types correctly
- PR#4940: problem with end-of-line in DOS text mode, tentative fix
- PR#4953: problem compiling bytecode interpreter on ARM in Thumb mode.
- PR#4955: compiler crash when typing recursive type expression with constraint
- Module Printf: the simple conversion %F (without width indication) was not
treated properly.
- Makefile: problem with cygwin, flexdll, and symbolic links
- Various build problems with ocamlbuild under Windows with msvc
Feature wishes:
- PR#9: (tentative implementation) make ocamldebug use #linenum annotations
- PR#123, PR#4477: custom exception printers
- PR#3456: Obj.double_field and Obj.set_double_field functions
- PR#4003: destination directory can be given to Filename.[open_]temp_file
- PR#4647: Buffer.blit function
- PR#4685: access to Filename.dir_sep
- PR#4703: support for debugging embedded applications
- PR#4723: "clear_rules" function to empty the set of ocamlbuild rules
- PR#4921: configure option to help cross-compilers
Objective Caml 3.11.1:
----------------------
@ -113,6 +164,7 @@ Other changes:
(contributed by Jonathan Davies, Citrix).
- Support for 64-bit mode in Solaris/x86 (PR#4670).
Objective Caml 3.11.0:
----------------------
@ -261,6 +313,7 @@ Bug fixes:
- Small bugs in the make-package-macosx script
- Bug in typing of polymorphic variants (reported on caml-list)
Objective Caml 3.10.1:
----------------------

15
INSTALL
View File

@ -109,7 +109,7 @@ The "configure" script accepts the following options:
-as <assembler and options> (default: determined automatically)
The assembler to use for assembling ocamlopt-generated code.
-aspp <assembler and options> (default: determined automatically>
-aspp <assembler and options> (default: determined automatically)
The assembler to use for assembling the parts of the
run-time system manually written in assembly language.
This assembler must preprocess its input with the C preprocessor.
@ -126,10 +126,13 @@ Examples:
Installation in /usr, man pages in section "l":
./configure -bindir /usr/bin -libdir /usr/lib/ocaml -mandir /usr/man/manl
On a MacOSX/Intel Core 2 or MacOSX/PowerPC host, to build a 64-bit version
of OCaml:
On a MacOSX 10.5/Intel Core 2 or MacOSX 10.5/PowerPC host,
to build a 64-bit version of OCaml:
./configure -cc "gcc -m64"
On a MacOSX 10.6/Intel Core 2, to build a 32-bit version of OCaml:
./configure -cc "gcc -m32" -as "as -arch i386" -aspp "gcc -m32 -c"
On a Linux x86/64 bits host, to build a 32-bit version of OCaml:
./configure -cc "gcc -m32" -as "as --32" -aspp "gcc -m32 -c"
@ -188,9 +191,9 @@ or:
make opt > log.opt 2>&1 # in sh
make opt >& log.opt # in csh
5- (Optional) If you want to compile fast versions of the Objective
Caml compilers, you can compile them with the native-code compiler
(they are compiled to bytecode by default). Just do:
5- Compile fast versions of the Objective Caml compilers, by
compiling them with the native-code compiler (you have only compiled
them to bytecode so far). Just do:
make opt.opt

View File

@ -567,10 +567,11 @@ alldepend::
# The runtime system for the native-code compiler
runtimeopt:
runtimeopt: makeruntimeopt
cp asmrun/libasmrun.a stdlib/libasmrun.a
makeruntimeopt:
cd asmrun; $(MAKE) all
if test -f stdlib/libasmrun.a; then :; else \
ln -s ../asmrun/libasmrun.a stdlib/libasmrun.a; fi
clean::
cd asmrun; $(MAKE) clean
@ -762,6 +763,6 @@ distclean:
.PHONY: ocamldoc.opt ocamllex ocamllex.opt ocamltools ocamltools.opt
.PHONY: ocamlyacc opt-core opt opt.opt otherlibraries
.PHONY: otherlibrariesopt package-macosx promote promote-cross
.PHONY: restore runtime runtimeopt world world.opt
.PHONY: restore runtime runtimeopt makeruntimeopt world world.opt
include .depend

View File

@ -61,7 +61,7 @@ Microsoft Visual C++ compiler (items [1] and [2] in the section
The native-code compiler (ocamlopt) requires Visual C++ (items [1], [2]),
the Microsoft assembler MASM (item [3]) and the flexdll tool (item [5]).
The LablTk GUI requires Tcl/Tk 8.4 (item [4]).
The LablTk GUI requires Tcl/Tk 8.5 (item [4]).
INSTALLATION:
@ -70,33 +70,34 @@ The binary distribution is a self-installing executable archive.
Just run it and it should install OCaml automatically.
To run programs that use the LablTK GUI, the directory where the
DLLs tk84.dll and tcl84.dll were installed (by the Tcl/Tk
DLLs tk85.dll and tcl85.dll were installed (by the Tcl/Tk
installer) must be added to the PATH environment variable.
To compile programs that use the LablTK GUI, the directory where the
libraries tk84.lib and tcl84.lib were installed (by the Tcl/Tk
libraries tk85.lib and tcl85.lib were installed (by the Tcl/Tk
installer) must be added to the library search path in the LIB
environment variable. E.g. if Tcl/Tk was installed in C:\tcl, add
"C:\tcl\lib" to the LIB environment variable.
THIRD-PARTY SOFTWARE:
[1] Visual C++ version 2005, 2003, or 6.
We use Visual C++ 2005 Express Edition, which can be downloaded for free
[1] Visual C++ version 2008, 2005, 2003, or 6.
We use Visual C++ 2008 Express Edition, which can be downloaded for free
from http://www.microsoft.com.
[2] Windows header files and development libraries. We found them in
the Microsoft Windows Server 2003 SP1 Platform SDK, which can
be downloaded for free from http://www.microsoft.com/.
[2] Windows header files and development libraries. They are included
in the Visual C++ 2008 Express Edition distribution.
Otherwise, you can find them in the Windows Platform SDK,
which can be downloaded for free from http://www.microsoft.com/.
[3] MASM version 6.11 or later. The full distribution of Visual C++ 2005
contains MASM version 8. Users of the Express Edition of Visual C++
or 2008 contains MASM version 8. Users of the Express Edition of Visual C++
2005 can download MASM version 8 from
http://www.microsoft.com/downloads/details.aspx?FamilyID=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=en
To obtain MASM version 6.11, see
http://users.easystreet.com/jkirwan/new/pctools.html.
[4] TCL/TK version 8.4. Windows binaries are available as part of the
[4] TCL/TK version 8.5. Windows binaries are available as part of the
ActiveTCL distribution at http://www.activestate.com/products/ActiveTcl/
[5] flexdll.
@ -190,7 +191,7 @@ Do *not* install the Mingw/MSYS development tools from www.mingw.org:
these are not compatible with this Caml port (@responsefile not
recognized on the command line).
The LablTk GUI requires Tcl/Tk 8.4. Windows binaries are available
The LablTk GUI requires Tcl/Tk 8.5. Windows binaries are available
as part of the ActiveTCL distribution at
http://www.activestate.com/products/ActiveTcl/
@ -200,11 +201,11 @@ The binary distribution is a self-installing executable archive.
Just run it and it should install OCaml automatically.
To run programs that use the LablTK GUI, the directory where the
DLLs tk84.dll and tcl84.dll were installed (by the Tcl/Tk
DLLs tk85.dll and tcl85.dll were installed (by the Tcl/Tk
installer) must be added to the PATH environment variable.
To compile programs that use the LablTK GUI, the directory where the
libraries tk84.lib and tcl84.lib were installed (by the Tcl/Tk
libraries tk85.lib and tcl85.lib were installed (by the Tcl/Tk
installer) must be added to the library search path in the LIB
environment variable. E.g. if Tcl/Tk was installed in C:\tcl, add
"C:\tcl\lib" to the LIB environment variable.
@ -217,7 +218,7 @@ You will need the following software components to perform the recompilation:
- Cygwin: http://sourceware.cygnus.com/cygwin/
Install at least the following packages: binutils, diffutils,
gcc-core, gcc-mingw-core, make, mingw-runtime, ncurses, w32-api.
- TCL/TK version 8.4 (see above).
- TCL/TK version 8.5 (see above).
- The flexdll tool (see above).
Do *not* install the standalone distribution of MinGW, nor the

View File

@ -1,4 +1,4 @@
3.12.0+dev16 (2010-01-07)
3.12.0+dev17 (2010-01-20)
# The version string is the first line of this file.
# It must be in the format described in stdlib/sys.mli

2
_tags
View File

@ -55,6 +55,7 @@ true: use_stdlib
<otherlibs/num/nums.cm{,x}a> or <otherlibs/dbm/dbm.cm{,x}a>: ocamlmklib
<otherlibs/{,win32}graph/graphics.cm{,x}a>: ocamlmklib
<otherlibs/threads/threads.cm{,x}a>: ocamlmklib
"otherlibs/threads/unix.cma": ocamlmklib
<otherlibs/bigarray/bigarray.cm{,x}a>: ocamlmklib
<otherlibs/{bigarray,systhreads}/**.ml*>: include_unix
@ -70,6 +71,7 @@ true: use_stdlib
<otherlibs/bigarray/**>: otherlibs_bigarray
<otherlibs/num/**>: otherlibs_num
<otherlibs/threads/**>: otherlibs_threads
"otherlibs/threads/unix.cma": -otherlibs_threads
<otherlibs/systhreads/**>: otherlibs_systhreads
<otherlibs/dbm/**>: otherlibs_dbm
<otherlibs/graph/**>: otherlibs_graph

View File

@ -793,9 +793,9 @@ let emit_item = function
long decimal constants *)
` .quad 0x{emit_string(Nativeint.format "%x" n)}\n`
| Csingle f ->
` .float {emit_string f}\n`
emit_float32_directive ".long" f
| Cdouble f ->
` .double {emit_string f}\n`
emit_float64_directive ".quad" f
| Csymbol_address s ->
` .quad {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -575,33 +575,26 @@ let emit_instr fallthrough i =
end
| Lswitch jumptbl ->
let lbl = new_label() in
if !pic_code || !Clflags.dlcode then begin
(* PR#4424: r11 is known to be clobbered by the Lswitch,
meaning that no variable that is live across the Lswitch
is assigned to r11. However, the argument to Lswitch
can still be assigned to r11, so we need to special-case
this situation. *)
if i.arg.(0).loc = Reg 9 (* ie r11, cf amd64/proc.ml *) then begin
` salq $3, %r11\n`;
` pushq %r11\n`;
` leaq {emit_label lbl}(%rip), %r11\n`;
` addq 0(%rsp), %r11\n`;
` addq $8, %rsp\n`;
` jmp *(%r11)\n`
end else begin
` leaq {emit_label lbl}(%rip), %r11\n`;
` jmp *(%r11, {emit_reg i.arg.(0)}, 8)\n`
end
end else begin
` jmp *{emit_label lbl}(, {emit_reg i.arg.(0)}, 8)\n`
end;
(* rax and rdx are clobbered by the Lswitch,
meaning that no variable that is live across the Lswitch
is assigned to rax or rdx. However, the argument to Lswitch
can still be assigned to one of these two registers, so
we must be careful not to clobber it before use. *)
let (tmp1, tmp2) =
if i.arg.(0).loc = Reg 0 (* rax *)
then (phys_reg 4 (*rdx*), phys_reg 0 (*rax*))
else (phys_reg 0 (*rax*), phys_reg 4 (*rdx*)) in
` leaq {emit_label lbl}(%rip), {emit_reg tmp1}\n`;
` movslq ({emit_reg tmp1}, {emit_reg i.arg.(0)}, 4), {emit_reg tmp2}\n`;
` addq {emit_reg tmp2}, {emit_reg tmp1}\n`;
` jmp *{emit_reg tmp1}\n`;
if macosx
then ` .const\n`
else ` .section .rodata\n`;
emit_align 8;
emit_align 4;
`{emit_label lbl}:`;
for i = 0 to Array.length jumptbl - 1 do
` .quad {emit_label jumptbl.(i)}\n`
` .long {emit_label jumptbl.(i)} - {emit_label lbl}\n`
done;
` .text\n`
| Lsetuptrap lbl ->
@ -634,7 +627,8 @@ let rec emit_all fallthrough i =
(* Emission of the floating-point constants *)
let emit_float_constant (lbl, cst) =
`{emit_label lbl}: .double {emit_string cst}\n`
`{emit_label lbl}:`;
emit_float64_directive ".quad" cst
(* Emission of the profiling prelude *)
@ -667,7 +661,9 @@ let fundecl fundecl =
bound_error_call := 0;
` .text\n`;
emit_align 16;
if macosx && is_generic_function fundecl.fun_name
if macosx
&& not !Clflags.output_c_object
&& is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@ -712,9 +708,9 @@ let emit_item = function
| Cint n ->
` .quad {emit_nativeint n}\n`
| Csingle f ->
` .float {emit_string f}\n`
emit_float32_directive ".long" f
| Cdouble f ->
` .double {emit_string f}\n`
emit_float64_directive ".quad" f
| Csymbol_address s ->
` .quad {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -92,7 +92,6 @@ let phys_reg n =
let rax = phys_reg 0
let rcx = phys_reg 5
let rdx = phys_reg 4
let r11 = phys_reg 9
let rxmm15 = phys_reg 115
let stack_slot slot ty =
@ -170,7 +169,7 @@ let destroyed_at_oper = function
| Iop(Istore(Single, _)) -> [| rxmm15 |]
| Iop(Ialloc _ | Iintop(Icomp _) | Iintop_imm((Idiv|Imod|Icomp _), _))
-> [| rax |]
| Iswitch(_, _) when !pic_code || !Clflags.dlcode -> [| r11 |]
| Iswitch(_, _) -> [| rax; rdx |]
| _ -> [||]
let destroyed_at_raise = all_phys_regs

View File

@ -585,6 +585,9 @@ let emit_item = function
| Csingle f ->
` .float {emit_string f}\n`
| Cdouble f ->
(* FIXME: this version of the ARM port is mixed-endian, so we
use .double instead of emit_float64_directive. The next
version is little-endian, so we'll use emit_float64 then. *)
` .align 0\n`;
` .double {emit_string f}\n`
| Csymbol_address s ->

View File

@ -259,6 +259,7 @@ let link_shared ppf objfiles output_name =
(fun (info, file_name, crc) -> check_consistency file_name info crc)
units_tolink;
Clflags.ccobjs := !Clflags.ccobjs @ !lib_ccobjs;
Clflags.ccopts := !lib_ccopts @ !Clflags.ccopts;
let objfiles = List.rev (List.map object_file_name objfiles) @
!Clflags.ccobjs in

View File

@ -93,6 +93,27 @@ let emit_bytes_directive directive s =
done;
if !pos > 0 then emit_char '\n'
(* PR#4813: assemblers do strange things with float literals indeed,
so we convert to IEEE representation ourselves and emit float
literals as 32- or 64-bit integers. *)
let emit_float64_directive directive f =
let x = Int64.bits_of_float (float_of_string f) in
emit_printf "\t%s\t0x%Lx\n" directive x
let emit_float64_split_directive directive f =
let x = Int64.bits_of_float (float_of_string f) in
let lo = Int64.logand x 0xFFFF_FFFFL
and hi = Int64.shift_right_logical x 32 in
emit_printf "\t%s\t0x%Lx, 0x%Lx\n"
directive
(if Arch.big_endian then hi else lo)
(if Arch.big_endian then lo else hi)
let emit_float32_directive directive f =
let x = Int32.bits_of_float (float_of_string f) in
emit_printf "\t%s\t0x%lx\n" directive x
(* Record live pointers at call points *)
type frame_descr =

View File

@ -25,6 +25,9 @@ val emit_char: char -> unit
val emit_string_literal: string -> unit
val emit_string_directive: string -> string -> unit
val emit_bytes_directive: string -> string -> unit
val emit_float64_directive: string -> string -> unit
val emit_float64_split_directive: string -> string -> unit
val emit_float32_directive: string -> string -> unit
type frame_descr =
{ fd_lbl: int; (* Return address *)

View File

@ -299,7 +299,9 @@ let emit_float_constants () =
` .text\n`;
emit_align 8;
List.iter
(fun (lbl, cst) -> `{emit_label lbl}: .double {emit_string cst}\n`)
(fun (lbl, cst) ->
`{emit_label lbl}:`;
emit_float64_split_directive ".long" cst)
!float_constants;
float_constants := []
@ -972,9 +974,9 @@ let emit_item = function
| Cint n ->
` .long {emit_nativeint n}\n`
| Csingle f ->
` .float {emit_string f}\n`
emit_float32_directive ".long" f
| Cdouble f ->
` .double {emit_string f}\n`
emit_float64_split_directive ".long" f
| Csymbol_address s ->
use_symbol s;
` .long {emit_symbol s}\n`

View File

@ -815,7 +815,8 @@ let rec emit_all fallthrough i =
let emit_float_constant (lbl, cst) =
` .data\n`;
`{emit_label lbl}: .double {emit_string cst}\n`
`{emit_label lbl}:`;
emit_float64_split_directive ".long" cst
(* Emission of external symbol references (for MacOSX) *)
@ -888,7 +889,9 @@ let fundecl fundecl =
bound_error_call := 0;
` .text\n`;
emit_align 16;
if macosx && is_generic_function fundecl.fun_name
if macosx
&& not !Clflags.output_c_object
&& is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@ -928,9 +931,9 @@ let emit_item = function
| Cint n ->
` .long {emit_nativeint n}\n`
| Csingle f ->
` .float {emit_string f}\n`
emit_float32_directive ".long" f
| Cdouble f ->
` .double {emit_string f}\n`
emit_float64_split_directive ".long" f
| Csymbol_address s ->
` .long {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -1287,9 +1287,9 @@ let emit_item = function
| Cint n ->
` data8 {emit_nativeint n}\n`
| Csingle f ->
` real4 {emit_string f}\n`
emit_float32_directive "data4" f
| Cdouble f ->
` real8 {emit_string f}\n`
emit_float64_directive "data8" f
| Csymbol_address s ->
` data8 {emit_symbol s}#\n`
| Clabel_address lbl ->

View File

@ -527,10 +527,9 @@ let emit_item = function
| Cint n ->
` .word {emit_nativeint n}\n`
| Csingle f ->
` .float {emit_string f}\n`
emit_float32_directive ".word" f
| Cdouble f ->
` .align 0\n`; (* Prevent alignment on 8-byte boundary *)
` .double {emit_string f}\n`
emit_float64_split_directive ".word" f
| Csymbol_address s ->
` .word {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -835,7 +835,9 @@ let fundecl fundecl =
call_gc_label := 0;
float_literals := [];
int_literals := [];
if Config.system = "rhapsody" && is_generic_function fundecl.fun_name
if Config.system = "rhapsody"
&& not !Clflags.output_c_object
&& is_generic_function fundecl.fun_name
then (* PR#4690 *)
` .private_extern {emit_symbol fundecl.fun_name}\n`
else
@ -871,7 +873,10 @@ let fundecl fundecl =
` .align 3\n`;
List.iter
(fun (f, lbl) ->
`{emit_label lbl}: .double 0d{emit_string f}\n`)
`{emit_label lbl}:`;
if ppc64
then emit_float64_directive ".quad" f
else emit_float64_split_directive ".long" f)
!float_literals;
List.iter
(fun (n, lbl) ->
@ -902,9 +907,11 @@ let emit_item = function
| Cint n ->
` {emit_string datag} {emit_nativeint n}\n`
| Csingle f ->
` .float 0d{emit_string f}\n`
emit_float32_directive ".long" f
| Cdouble f ->
` .double 0d{emit_string f}\n`
if ppc64
then emit_float64_directive ".quad" f
else emit_float64_split_directive ".long" f
| Csymbol_address s ->
` {emit_string datag} {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -195,7 +195,8 @@ let float_constants = ref ([] : (int * string) list)
let emit_float_constant (lbl, cst) =
rodata ();
` .align 8\n`;
`{emit_label lbl}: .double 0r{emit_string cst}\n`
`{emit_label lbl}:`;
emit_float64_split_directive ".word" cst
(* Emission of the profiling prelude *)
let emit_profile () =
@ -723,9 +724,9 @@ let emit_item = function
| Cint n ->
` .word {emit_nativeint n}\n`
| Csingle f ->
` .single 0r{emit_string f}\n`
emit_float32_directive ".word" f
| Cdouble f ->
` .double 0r{emit_string f}\n`
emit_float64_split_directive ".word" f
| Csymbol_address s ->
` .word {emit_symbol s}\n`
| Clabel_address lbl ->

View File

@ -12,7 +12,7 @@
/* $Id$ */
/* Asm part of the runtime system, Alpha processor */
/* Asm part of the runtime system, IA64 processor */
#undef BROKEN_POSTINCREMENT
@ -68,15 +68,8 @@ caml_allocN:
sub r4 = r4, r2 ;;
cmp.ltu p0, p6 = r4, r5
(p6) br.ret.sptk b0 ;;
/* Stash return address at sp (in stack scratch area) */
mov r3 = b0 ;;
st8 [sp] = r3
/* Call GC */
br.call.sptk b0 = caml_call_gc# ;;
/* Return to caller */
ld8 r3 = [sp] ;;
mov b0 = r3 ;;
br.ret.sptk b0
/* Fall through caml_call_gc */
br.sptk.many caml_call_gc#
.endp caml_allocN#

View File

@ -4,3 +4,4 @@ ocamlyacc
camlheader
myocamlbuild
myocamlbuild.native
libcamlrun.a

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -13,7 +13,6 @@ set -ex
mkdir -p _build/boot
cp -f byterun/ocamlrun.exe \
byterun/libcamlrun.$A \
byterun/ocamlrun.dll \
asmrun/libasmrun.$A \
yacc/ocamlyacc.exe \
boot/ocamlc \
@ -21,5 +20,4 @@ cp -f byterun/ocamlrun.exe \
boot/ocamldep \
_build/boot
mkdir -p _build/byterun
cp -f byterun/ocamlrun.exe byterun/ocamlrun.dll boot
cp -f byterun/ocamlrun.$A _build/byterun
cp -f byterun/ocamlrun.exe boot

View File

@ -132,7 +132,6 @@ cd ..
WIN32=""
if [ "x$EXE" = "x.exe" ]; then
installbin win32caml/ocamlwin.exe $PREFIX/OCamlWin.exe
installdir byterun/ocamlrun.dll $BINDIR
WIN32=win32
fi
@ -140,7 +139,7 @@ installdir otherlibs/"$WIN32"unix/unixsupport.h \
otherlibs/bigarray/bigarray.h \
$LIBDIR/caml
installdir yacc/ocamlyacc byterun/ocamlrun $BINDIR
installdir yacc/ocamlyacc$EXE byterun/ocamlrun$EXE $BINDIR
installdir config/Makefile $LIBDIR/Makefile.config
installdir byterun/ld.conf $LIBDIR

View File

@ -19,6 +19,7 @@ cd `dirname $0`/..
sed \
-e 's/^.*FLEXDIR.*$//g' \
-e 's/^#ml \(.*\)/\1/' \
-e 's/^\([^"][^"]*\("[^"]*"[^"]*\)*\)#.*$/\1/' \
-e 's/^\(#.*\)$/(* \1 *)/' \
-e 's/^\(.*\$([0-9]).*\)$/(* \1 *)/' \
-e 's/^\([^(=]*\)=\([^"]*\)$/let <:lower<\1>> = "\2";;/' \

View File

@ -377,14 +377,40 @@ let output_data_string outchan data =
end
done
(* Output a debug stub *)
let output_cds_file outfile =
Misc.remove_file outfile;
let outchan =
open_out_gen [Open_wronly; Open_trunc; Open_creat; Open_binary]
0o777 outfile in
try
Bytesections.init_record outchan;
(* The map of global identifiers *)
Symtable.output_global_map outchan;
Bytesections.record outchan "SYMB";
(* Debug info *)
output_debug_info outchan;
Bytesections.record outchan "DBUG";
(* The table of contents and the trailer *)
Bytesections.write_toc_and_trailer outchan;
close_out outchan
with x ->
close_out outchan;
remove_file outfile;
raise x
(* Output a bytecode executable as a C file *)
let link_bytecode_as_c tolink outfile =
let outchan = open_out outfile in
try
begin try
(* The bytecode *)
output_string outchan "#include <caml/mlvalues.h>\n";
output_string outchan "\
#ifdef __cplusplus\n\
extern \"C\" {\n\
#endif\n\
#include <caml/mlvalues.h>\n\
CAMLextern void caml_startup_code(\n\
code_t code, asize_t code_size,\n\
char *data, asize_t data_size,\n\
@ -393,8 +419,11 @@ CAMLextern void caml_startup_code(\n\
output_string outchan "static int caml_code[] = {\n";
Symtable.init();
Consistbl.clear crc_interfaces;
let output_fun = output_code_string outchan
and currpos_fun () = 0 in
let currpos = ref 0 in
let output_fun code =
output_code_string outchan code;
currpos := !currpos + String.length code
and currpos_fun () = !currpos in
List.iter (link_file output_fun currpos_fun) tolink;
(* The final STOP instruction *)
Printf.fprintf outchan "\n0x%x};\n\n" Opcodes.opSTOP;
@ -422,18 +451,24 @@ void caml_startup(char ** argv)\n\
caml_data, sizeof(caml_data),\n\
caml_sections, sizeof(caml_sections),\n\
argv);\n\
}\n";
}\n\
#ifdef __cplusplus\n\
}\n\
#endif\n";
close_out outchan
with x ->
close_out outchan;
raise x
end;
if !Clflags.debug then
output_cds_file ((Filename.chop_extension outfile) ^ ".cds")
(* Build a custom runtime *)
let build_custom_runtime prim_name exec_name =
Ccomp.call_linker Ccomp.Exe exec_name
([prim_name] @ List.rev !Clflags.ccobjs @ ["-lcamlrun"])
Config.bytecomp_c_libraries
(Clflags.std_include_flag "-I" ^ " " ^ Config.bytecomp_c_libraries)
let append_bytecode_and_cleanup bytecode_name exec_name prim_name =
let oc = open_out_gen [Open_wronly; Open_append; Open_binary] 0 exec_name in
@ -472,7 +507,20 @@ let link objfiles output_name =
try
link_bytecode tolink bytecode_name false;
let poc = open_out prim_name in
output_string poc "\
#ifdef __cplusplus\n\
extern \"C\" {\n\
#endif\n\
#ifdef _WIN64\n\
typedef __int64 value;\n\
#else\n\
typedef long value;\n\
#endif\n";
Symtable.output_primitive_table poc;
output_string poc "\
#ifdef __cplusplus\n\
}\n\
#endif\n";
close_out poc;
let exec_name = fix_exec_name output_name in
if not (build_custom_runtime prim_name exec_name)

View File

@ -114,14 +114,10 @@ open Printf
let output_primitive_table outchan =
let prim = all_primitives() in
fprintf outchan "\
#ifdef __cplusplus\n\
extern \"C\" {\n\
#endif\n";
for i = 0 to Array.length prim - 1 do
fprintf outchan "extern long %s();\n" prim.(i)
fprintf outchan "extern value %s();\n" prim.(i)
done;
fprintf outchan "typedef long (*primitive)();\n";
fprintf outchan "typedef value (*primitive)();\n";
fprintf outchan "primitive caml_builtin_cprim[] = {\n";
for i = 0 to Array.length prim - 1 do
fprintf outchan " %s,\n" prim.(i)
@ -131,11 +127,7 @@ let output_primitive_table outchan =
for i = 0 to Array.length prim - 1 do
fprintf outchan " \"%s\",\n" prim.(i)
done;
fprintf outchan " (char *) 0 };\n";
fprintf outchan "\
#ifdef __cplusplus\n\
}\n\
#endif\n"
fprintf outchan " (char *) 0 };\n"
(* Initialization for batch linking *)

View File

@ -22,18 +22,17 @@ open Types
open Typedtree
open Lambda
let scrape env ty =
(Ctype.repr (Ctype.expand_head_opt env (Ctype.correct_levels ty))).desc
let has_base_type exp base_ty_path =
let exp_ty =
Ctype.expand_head_opt exp.exp_env (Ctype.correct_levels exp.exp_type) in
match Ctype.repr exp_ty with
{desc = Tconstr(p, _, _)} -> Path.same p base_ty_path
match scrape exp.exp_env exp.exp_type with
| Tconstr(p, _, _) -> Path.same p base_ty_path
| _ -> false
let maybe_pointer exp =
let exp_ty =
Ctype.expand_head_opt exp.exp_env (Ctype.correct_levels exp.exp_type) in
match (Ctype.repr exp_ty).desc with
Tconstr(p, args, abbrev) ->
match scrape exp.exp_env exp.exp_type with
| Tconstr(p, args, abbrev) ->
not (Path.same p Predef.path_int) &&
not (Path.same p Predef.path_char) &&
begin try
@ -50,9 +49,8 @@ let maybe_pointer exp =
| _ -> true
let array_element_kind env ty =
let ty = Ctype.repr (Ctype.expand_head_opt env ty) in
match ty.desc with
Tvar | Tunivar ->
match scrape env ty with
| Tvar | Tunivar ->
Pgenarray
| Tconstr(p, args, abbrev) ->
if Path.same p Predef.path_int || Path.same p Predef.path_char then
@ -85,9 +83,8 @@ let array_element_kind env ty =
Paddrarray
let array_kind_gen ty env =
let array_ty = Ctype.expand_head_opt env (Ctype.correct_levels ty) in
match (Ctype.repr array_ty).desc with
Tconstr(p, [elt_ty], _) | Tpoly({desc = Tconstr(p, [elt_ty], _)}, _)
match scrape env ty with
| Tconstr(p, [elt_ty], _) | Tpoly({desc = Tconstr(p, [elt_ty], _)}, _)
when Path.same p Predef.path_array ->
array_element_kind env elt_ty
| _ ->
@ -98,9 +95,9 @@ let array_kind exp = array_kind_gen exp.exp_type exp.exp_env
let array_pattern_kind pat = array_kind_gen pat.pat_type pat.pat_env
let bigarray_decode_type ty tbl dfl =
match (Ctype.repr ty).desc with
Tconstr(Pdot(Pident mod_id, type_name, _), [], _)
let bigarray_decode_type env ty tbl dfl =
match scrape env ty with
| Tconstr(Pdot(Pident mod_id, type_name, _), [], _)
when Ident.name mod_id = "Bigarray" ->
begin try List.assoc type_name tbl with Not_found -> dfl end
| _ ->
@ -125,10 +122,9 @@ let layout_table =
"fortran_layout", Pbigarray_fortran_layout]
let bigarray_kind_and_layout exp =
let ty = Ctype.repr (Ctype.expand_head_opt exp.exp_env exp.exp_type) in
match ty.desc with
Tconstr(p, [caml_type; elt_type; layout_type], abbrev) ->
(bigarray_decode_type elt_type kind_table Pbigarray_unknown,
bigarray_decode_type layout_type layout_table Pbigarray_unknown_layout)
match scrape exp.exp_env exp.exp_type with
| Tconstr(p, [caml_type; elt_type; layout_type], abbrev) ->
(bigarray_decode_type exp.exp_env elt_type kind_table Pbigarray_unknown,
bigarray_decode_type exp.exp_env layout_type layout_table Pbigarray_unknown_layout)
| _ ->
(Pbigarray_unknown, Pbigarray_unknown_layout)

View File

@ -15,3 +15,5 @@ interp.a.lst
*.[sd]obj
*.lib
.gdb_history
*.so
*.a

View File

@ -105,13 +105,13 @@ printexc.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
roots.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
freelist.h minor_gc.h globroots.h stacks.h
signals_byt.o: signals_byt.c config.h ../config/m.h ../config/s.h \
compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
minor_gc.h osdeps.h signals.h signals_machdep.h
signals.o: signals.c alloc.h compatibility.h misc.h config.h \
../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
sys.h
signals_byt.o: signals_byt.c config.h ../config/m.h ../config/s.h \
compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
minor_gc.h osdeps.h signals.h signals_machdep.h
stacks.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
minor_gc.h
@ -243,13 +243,13 @@ printexc.d.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
roots.d.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
freelist.h minor_gc.h globroots.h stacks.h
signals_byt.d.o: signals_byt.c config.h ../config/m.h ../config/s.h \
compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
minor_gc.h osdeps.h signals.h signals_machdep.h
signals.d.o: signals.c alloc.h compatibility.h misc.h config.h \
../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
sys.h
signals_byt.d.o: signals_byt.c config.h ../config/m.h ../config/s.h \
compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
minor_gc.h osdeps.h signals.h signals_machdep.h
stacks.d.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
minor_gc.h

View File

@ -39,6 +39,7 @@ CAMLexport int caml_backtrace_active = 0;
CAMLexport int caml_backtrace_pos = 0;
CAMLexport code_t * caml_backtrace_buffer = NULL;
CAMLexport value caml_backtrace_last_exn = Val_unit;
CAMLexport char * caml_cds_file = NULL;
#define BACKTRACE_BUFFER_SIZE 1024
/* Location of fields in the Instruct.debug_event record */
@ -135,7 +136,11 @@ static value read_debug_info(void)
uint32 num_events, orig, i;
value evl, l;
exec_name = caml_exe_name;
if (caml_cds_file != NULL) {
exec_name = caml_cds_file;
} else {
exec_name = caml_exe_name;
}
fd = caml_attempt_open(&exec_name, &trail, 1);
if (fd < 0) CAMLreturn(Val_false);
caml_read_section_descriptors(fd, &trail);

View File

@ -22,6 +22,7 @@ CAMLextern int caml_backtrace_active;
CAMLextern int caml_backtrace_pos;
CAMLextern code_t * caml_backtrace_buffer;
CAMLextern value caml_backtrace_last_exn;
CAMLextern char * caml_cds_file;
CAMLprim value caml_record_backtrace(value vflag);
#ifndef NATIVE_CODE

View File

@ -419,7 +419,7 @@ static void test_and_compact (void)
fp = 100.0 * caml_fl_cur_size
/ (Wsize_bsize (caml_stat_heap_size) - caml_fl_cur_size);
if (fp > 1000000.0) fp = 1000000.0;
if (fp > 999999.0) fp = 999999.0;
caml_gc_message (0x200, "Estimated overhead (lower bound) = %"
ARCH_INTNAT_PRINTF_FORMAT "u%%\n",
(uintnat) fp);

View File

@ -157,7 +157,8 @@ sp is a local copy of the global variable caml_extern_sp. */
#define SP_REG asm("a4")
#define ACCU_REG asm("d7")
#endif
#ifdef __arm__
/* PR#4953: these specific registers not available in Thumb mode */
#if defined (__arm__) && !defined(__thumb__)
#define PC_REG asm("r6")
#define SP_REG asm("r8")
#define ACCU_REG asm("r7")

View File

@ -165,6 +165,10 @@ CAMLprim value caml_obj_truncate (value v, value newsize)
return Val_unit;
}
CAMLprim value caml_obj_add_offset (value v, value offset)
{
return v + Int32_val (offset);
}
/* The following functions are used in stdlib/lazy.ml.
They are not written in O'Caml because they must be atomic with respect

View File

@ -439,12 +439,18 @@ CAMLexport void caml_startup_code(
char **argv)
{
value res;
char* cds_file;
caml_init_ieee_floats();
caml_init_custom_operations();
#ifdef DEBUG
caml_verb_gc = 63;
#endif
cds_file = getenv("CAML_DEBUG_FILE");
if (cds_file != NULL) {
caml_cds_file = caml_stat_alloc(strlen(cds_file) + 1);
strcpy(caml_cds_file, cds_file);
}
parse_camlrunparam();
caml_external_raise = NULL;
/* Initialize the abstract machine */
@ -454,8 +460,17 @@ CAMLexport void caml_startup_code(
init_atoms();
/* Initialize the interpreter */
caml_interprete(NULL, 0);
/* Initialize the debugger, if needed */
caml_debugger_init();
/* Load the code */
caml_start_code = code;
caml_code_size = code_size;
if (caml_debugger_in_use) {
int 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
@ -469,10 +484,19 @@ CAMLexport void caml_startup_code(
/* Record the sections (for caml_get_section_table in meta.c) */
caml_section_table = section_table;
caml_section_table_size = section_table_size;
/* Run the code */
/* Initialize system libraries */
caml_init_exceptions();
caml_sys_init("", argv);
res = caml_interprete(caml_start_code, code_size);
if (Is_exception_result(res))
caml_fatal_uncaught_exception(Extract_exception(res));
/* Execute the program */
caml_debugger(PROGRAM_START);
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_fatal_uncaught_exception(caml_exn_bucket);
}
}

View File

@ -90,7 +90,7 @@ let may_define_unix = if windows then [] else ["-D UNIX"]
let () =
!options.ocaml_Flags ^= "-w Aler -warn-error Aler"^^
(if getenv "DTYPES" "" <> "" then "-dtypes"
(if getenv "DTYPES" "" <> "" then "-annot"
else "");
!options.ocaml_P4 := camlp4boot_may_debug may_define_unix;
!options.ocaml_P4_opt := camlp4boot_may_debug ("-D OPT" :: may_define_unix);

View File

@ -78,10 +78,14 @@ SHARPBANGSCRIPTS=true
# Under FreeBSD:
#CPP=cpp -P
### Magic declarations for ocamlbuild -- leave unchanged
#ml let syslib x = "-l"^x;;
#ml let mklib out files opts = Printf.sprintf "ar rc %s %s %s; ranlib %s" out opts files out;;
### How to invoke ranlib
# BSD-style:
#RANLIB=ranlib
#RANLIBCMD=ranlib
RANLIB=ranlib
RANLIBCMD=ranlib
# If ranlib is not needed:
#RANLIB=ar rs
#RANLIBCMD=

View File

@ -145,11 +145,11 @@ BNG_ARCH=ia32
BNG_ASM_LEVEL=1
### Configuration for LablTk
# Set TK_ROOT to the directory where you installed TCL/TK 8.4
# Set TK_ROOT to the directory where you installed TCL/TK 8.5
# There must be no spaces or special characters in $(TK_ROOT)
TK_ROOT=c:/tcl
TK_DEFS=-I$(TK_ROOT)/include
TK_LINK=$(TK_ROOT)/bin/tk84.dll $(TK_ROOT)/bin/tcl84.dll -lws2_32
TK_LINK=$(TK_ROOT)/bin/tk85.dll $(TK_ROOT)/bin/tcl85.dll -lws2_32
############# Aliases for common commands

View File

@ -80,7 +80,7 @@ BYTECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
BYTECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(BYTECC). (For static linking.)
BYTECCLINKOPTS=/MD /F16777216
BYTECCLINKOPTS=
### Additional compile-time options for $(BYTECC). (For building a DLL.)
DLLCCCOMPOPTS=/Ox /MD
@ -131,7 +131,7 @@ NATIVECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
NATIVECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(NATIVECC)
NATIVECCLINKOPTS=/MD /F16777216
NATIVECCLINKOPTS=
### Build partially-linked object file
PACKLD=link /lib /nologo /out:# there must be no space after this '/out:'
@ -145,17 +145,17 @@ BNG_ARCH=generic
BNG_ASM_LEVEL=0
### Configuration for LablTk
# Set TK_ROOT to the directory where you installed TCL/TK 8.3
# Set TK_ROOT to the directory where you installed TCL/TK 8.5
TK_ROOT=c:/tcl
TK_DEFS=-I$(TK_ROOT)/include
# The following definition avoids hard-wiring $(TK_ROOT) in the libraries
# produced by OCaml, and is therefore required for binary distribution
# of these libraries. However, $(TK_ROOT)/lib must be added to the LIB
# environment variable, as described in README.win32.
TK_LINK=tk84.lib tcl84.lib ws2_32.lib
TK_LINK=tk85.lib tcl85.lib ws2_32.lib
# An alternative definition that avoids mucking with the LIB variable,
# but hard-wires the Tcl/Tk location in the binaries
# TK_LINK=$(TK_ROOT)/tk84.lib $(TK_ROOT)/tcl84.lib ws2_32.lib
# TK_LINK=$(TK_ROOT)/tk85.lib $(TK_ROOT)/tcl85.lib ws2_32.lib
############# Aliases for common commands

View File

@ -83,7 +83,7 @@ BYTECCCOMPOPTS=/Ox /MD
BYTECCDBGCOMPOPTS=-DDEBUG /Zi /W3 /Wp64
### Additional link-time options for $(BYTECC). (For static linking.)
BYTECCLINKOPTS=/MD /F33554432
BYTECCLINKOPTS=
### Additional compile-time options for $(BYTECC). (For building a DLL.)
DLLCCCOMPOPTS=/Ox /MD
@ -135,7 +135,7 @@ NATIVECC=cl /nologo
NATIVECCCOMPOPTS=/Ox /MD
### Additional link-time options for $(NATIVECC)
NATIVECCLINKOPTS=/MD /F33554432
NATIVECCLINKOPTS=
### Build partially-linked object file
PACKLD=link /lib /nologo /machine:AMD64 /out:# there must be no space after this '/out:'

20
configure vendored
View File

@ -95,6 +95,8 @@ while : ; do
pthread_wanted=no;;
-no-tk|--no-tk)
tk_wanted=no;;
-partialld|--partialld)
partialld="$2"; shift;;
-tkdefs*|--tkdefs*)
tk_defs=$2; shift;;
-tklibs*|--tklibs*)
@ -303,14 +305,16 @@ case "$bytecc,$host" in
gcc*,*-*-cygwin*)
bytecccompopts="-fno-defer-pop $gcc_warnings -U_WIN32"
dllccompopts="-D_WIN32 -DCAML_DLL"
flexlink="flexlink -chain cygwin -merge-manifest"
flexdir=`$flexlink -where | dos2unix`
if test -z "$flexdir"; then
echo "flexlink not found: native shared libraries won't be available"
withsharedlibs=no
else
iflexdir="-I\"$flexdir\""
mkexe="$flexlink -exe"
if test $withsharedlibs = yes; then
flexlink="flexlink -chain cygwin -merge-manifest"
flexdir=`$flexlink -where | dos2unix`
if test -z "$flexdir"; then
echo "flexlink not found: native shared libraries won't be available"
withsharedlibs=no
else
iflexdir="-I\"$flexdir\""
mkexe="$flexlink -exe"
fi
fi
exe=".exe"
ostype="Cygwin";;

View File

@ -1,46 +1,46 @@
breakpoints.cmi: primitives.cmi ../bytecomp/instruct.cmi
checkpoints.cmi: primitives.cmi debugcom.cmi
command_line.cmi:
debugcom.cmi: primitives.cmi
debugger_config.cmi:
dynlink.cmi:
envaux.cmi: ../typing/path.cmi ../bytecomp/instruct.cmi ../typing/env.cmi
breakpoints.cmi: primitives.cmi ../bytecomp/instruct.cmi
checkpoints.cmi: primitives.cmi debugcom.cmi
command_line.cmi:
debugcom.cmi: primitives.cmi
debugger_config.cmi:
dynlink.cmi:
envaux.cmi: ../typing/path.cmi ../bytecomp/instruct.cmi ../typing/env.cmi
eval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
../parsing/longident.cmi ../bytecomp/instruct.cmi ../typing/ident.cmi \
../typing/env.cmi debugcom.cmi
events.cmi: ../bytecomp/instruct.cmi
exec.cmi:
frames.cmi: primitives.cmi ../bytecomp/instruct.cmi
history.cmi:
input_handling.cmi: primitives.cmi
int64ops.cmi:
lexer.cmi: parser.cmi
loadprinter.cmi: ../parsing/longident.cmi dynlink.cmi
parameters.cmi:
parser.cmi: parser_aux.cmi ../parsing/longident.cmi
parser_aux.cmi: primitives.cmi ../parsing/longident.cmi
pattern_matching.cmi: ../typing/typedtree.cmi parser_aux.cmi debugcom.cmi
pos.cmi: ../bytecomp/instruct.cmi
primitives.cmi: ../otherlibs/unix/unix.cmi
../typing/env.cmi debugcom.cmi
events.cmi: ../bytecomp/instruct.cmi
exec.cmi:
frames.cmi: primitives.cmi ../bytecomp/instruct.cmi
history.cmi:
input_handling.cmi: primitives.cmi
int64ops.cmi:
lexer.cmi: parser.cmi
loadprinter.cmi: ../parsing/longident.cmi dynlink.cmi
parameters.cmi:
parser.cmi: parser_aux.cmi ../parsing/longident.cmi
parser_aux.cmi: primitives.cmi ../parsing/longident.cmi
pattern_matching.cmi: ../typing/typedtree.cmi parser_aux.cmi debugcom.cmi
pos.cmi: ../bytecomp/instruct.cmi
primitives.cmi: $(UNIXDIR)/unix.cmi
printval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
../typing/env.cmi debugcom.cmi
program_loading.cmi: primitives.cmi
program_management.cmi:
question.cmi:
show_information.cmi: ../bytecomp/instruct.cmi
show_source.cmi: ../bytecomp/instruct.cmi
source.cmi:
symbols.cmi: ../bytecomp/instruct.cmi
time_travel.cmi: primitives.cmi
trap_barrier.cmi:
unix_tools.cmi: ../otherlibs/unix/unix.cmi
../typing/env.cmi debugcom.cmi
program_loading.cmi: primitives.cmi
program_management.cmi:
question.cmi:
show_information.cmi: ../bytecomp/instruct.cmi
show_source.cmi: ../bytecomp/instruct.cmi
source.cmi:
symbols.cmi: ../bytecomp/instruct.cmi
time_travel.cmi: primitives.cmi
trap_barrier.cmi:
unix_tools.cmi: $(UNIXDIR)/unix.cmi
breakpoints.cmo: symbols.cmi primitives.cmi pos.cmi ../bytecomp/instruct.cmi \
exec.cmi debugcom.cmi checkpoints.cmi breakpoints.cmi
exec.cmi debugcom.cmi checkpoints.cmi breakpoints.cmi
breakpoints.cmx: symbols.cmx primitives.cmx pos.cmx ../bytecomp/instruct.cmx \
exec.cmx debugcom.cmx checkpoints.cmx breakpoints.cmi
checkpoints.cmo: primitives.cmi int64ops.cmi debugcom.cmi checkpoints.cmi
checkpoints.cmx: primitives.cmx int64ops.cmx debugcom.cmx checkpoints.cmi
command_line.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi \
exec.cmx debugcom.cmx checkpoints.cmx breakpoints.cmi
checkpoints.cmo: primitives.cmi int64ops.cmi debugcom.cmi checkpoints.cmi
checkpoints.cmx: primitives.cmx int64ops.cmx debugcom.cmx checkpoints.cmi
command_line.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi \
../typing/types.cmi time_travel.cmi symbols.cmi source.cmi \
show_source.cmi show_information.cmi question.cmi program_management.cmi \
program_loading.cmi printval.cmi primitives.cmi pos.cmi parser_aux.cmi \
@ -49,8 +49,8 @@ command_line.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi \
../bytecomp/instruct.cmi input_handling.cmi history.cmi frames.cmi \
events.cmi eval.cmi envaux.cmi debugger_config.cmi debugcom.cmi \
../typing/ctype.cmi ../utils/config.cmi checkpoints.cmi breakpoints.cmi \
command_line.cmi
command_line.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx \
command_line.cmi
command_line.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx \
../typing/types.cmx time_travel.cmx symbols.cmx source.cmx \
show_source.cmx show_information.cmx question.cmx program_management.cmx \
program_loading.cmx printval.cmx primitives.cmx pos.cmx parser_aux.cmi \
@ -59,154 +59,154 @@ command_line.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx \
../bytecomp/instruct.cmx input_handling.cmx history.cmx frames.cmx \
events.cmx eval.cmx envaux.cmx debugger_config.cmx debugcom.cmx \
../typing/ctype.cmx ../utils/config.cmx checkpoints.cmx breakpoints.cmx \
command_line.cmi
command_line.cmi
debugcom.cmo: primitives.cmi ../utils/misc.cmi int64ops.cmi \
input_handling.cmi debugcom.cmi
input_handling.cmi debugcom.cmi
debugcom.cmx: primitives.cmx ../utils/misc.cmx int64ops.cmx \
input_handling.cmx debugcom.cmi
debugger_config.cmo: int64ops.cmi debugger_config.cmi
debugger_config.cmx: int64ops.cmx debugger_config.cmi
input_handling.cmx debugcom.cmi
debugger_config.cmo: int64ops.cmi debugger_config.cmi
debugger_config.cmx: int64ops.cmx debugger_config.cmi
dynlink.cmo: ../bytecomp/symtable.cmi ../bytecomp/opcodes.cmo \
../utils/misc.cmi ../bytecomp/meta.cmi ../bytecomp/dll.cmi \
../utils/consistbl.cmi ../utils/config.cmi ../bytecomp/cmo_format.cmi \
dynlink.cmi
dynlink.cmi
dynlink.cmx: ../bytecomp/symtable.cmx ../bytecomp/opcodes.cmx \
../utils/misc.cmx ../bytecomp/meta.cmx ../bytecomp/dll.cmx \
../utils/consistbl.cmx ../utils/config.cmx ../bytecomp/cmo_format.cmi \
dynlink.cmi
dynlink.cmi
envaux.cmo: ../typing/types.cmi ../typing/subst.cmi ../typing/printtyp.cmi \
../typing/path.cmi ../typing/mtype.cmi ../utils/misc.cmi \
../bytecomp/instruct.cmi ../typing/env.cmi envaux.cmi
../bytecomp/instruct.cmi ../typing/env.cmi envaux.cmi
envaux.cmx: ../typing/types.cmx ../typing/subst.cmx ../typing/printtyp.cmx \
../typing/path.cmx ../typing/mtype.cmx ../utils/misc.cmx \
../bytecomp/instruct.cmx ../typing/env.cmx envaux.cmi
../bytecomp/instruct.cmx ../typing/env.cmx envaux.cmi
eval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi ../typing/subst.cmi \
printval.cmi ../typing/printtyp.cmi ../typing/predef.cmi \
../typing/path.cmi parser_aux.cmi ../utils/misc.cmi \
../parsing/longident.cmi ../bytecomp/instruct.cmi ../typing/ident.cmi \
frames.cmi ../typing/env.cmi debugcom.cmi ../typing/ctype.cmi \
../typing/btype.cmi eval.cmi
../typing/btype.cmi eval.cmi
eval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx ../typing/subst.cmx \
printval.cmx ../typing/printtyp.cmx ../typing/predef.cmx \
../typing/path.cmx parser_aux.cmi ../utils/misc.cmx \
../parsing/longident.cmx ../bytecomp/instruct.cmx ../typing/ident.cmx \
frames.cmx ../typing/env.cmx debugcom.cmx ../typing/ctype.cmx \
../typing/btype.cmx eval.cmi
events.cmo: ../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi
events.cmx: ../parsing/location.cmx ../bytecomp/instruct.cmx events.cmi
exec.cmo: exec.cmi
exec.cmx: exec.cmi
../typing/btype.cmx eval.cmi
events.cmo: ../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi
events.cmx: ../parsing/location.cmx ../bytecomp/instruct.cmx events.cmi
exec.cmo: exec.cmi
exec.cmx: exec.cmi
frames.cmo: symbols.cmi ../utils/misc.cmi ../bytecomp/instruct.cmi events.cmi \
debugcom.cmi frames.cmi
debugcom.cmi frames.cmi
frames.cmx: symbols.cmx ../utils/misc.cmx ../bytecomp/instruct.cmx events.cmx \
debugcom.cmx frames.cmi
debugcom.cmx frames.cmi
history.cmo: primitives.cmi int64ops.cmi debugger_config.cmi checkpoints.cmi \
history.cmi
history.cmi
history.cmx: primitives.cmx int64ops.cmx debugger_config.cmx checkpoints.cmx \
history.cmi
input_handling.cmo: ../otherlibs/unix/unix.cmi primitives.cmi \
input_handling.cmi
input_handling.cmx: ../otherlibs/unix/unix.cmx primitives.cmx \
input_handling.cmi
int64ops.cmo: int64ops.cmi
int64ops.cmx: int64ops.cmi
lexer.cmo: parser.cmi lexer.cmi
lexer.cmx: parser.cmx lexer.cmi
history.cmi
input_handling.cmo: $(UNIXDIR)/unix.cmi primitives.cmi \
input_handling.cmi
input_handling.cmx: $(UNIXDIR)/unix.cmx primitives.cmx \
input_handling.cmi
int64ops.cmo: int64ops.cmi
int64ops.cmx: int64ops.cmi
lexer.cmo: parser.cmi lexer.cmi
lexer.cmx: parser.cmx lexer.cmi
loadprinter.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi printval.cmi \
../typing/printtyp.cmi ../typing/path.cmi ../utils/misc.cmi \
../parsing/longident.cmi ../typing/ident.cmi ../typing/env.cmi \
dynlink.cmi ../typing/ctype.cmi ../utils/config.cmi loadprinter.cmi
dynlink.cmi ../typing/ctype.cmi ../utils/config.cmi loadprinter.cmi
loadprinter.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx printval.cmx \
../typing/printtyp.cmx ../typing/path.cmx ../utils/misc.cmx \
../parsing/longident.cmx ../typing/ident.cmx ../typing/env.cmx \
dynlink.cmx ../typing/ctype.cmx ../utils/config.cmx loadprinter.cmi
main.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi time_travel.cmi \
show_information.cmi question.cmi program_management.cmi parameters.cmi \
../utils/misc.cmi input_handling.cmi frames.cmi exec.cmi \
dynlink.cmx ../typing/ctype.cmx ../utils/config.cmx loadprinter.cmi
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
main.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx time_travel.cmx \
show_information.cmx question.cmx program_management.cmx parameters.cmx \
../utils/misc.cmx input_handling.cmx frames.cmx exec.cmx \
command_line.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 ../utils/clflags.cmx checkpoints.cmx
parameters.cmo: primitives.cmi envaux.cmi debugger_config.cmi \
../utils/config.cmi parameters.cmi
../utils/config.cmi parameters.cmi
parameters.cmx: primitives.cmx envaux.cmx debugger_config.cmx \
../utils/config.cmx parameters.cmi
../utils/config.cmx parameters.cmi
parser.cmo: parser_aux.cmi ../parsing/longident.cmi int64ops.cmi \
input_handling.cmi parser.cmi
input_handling.cmi parser.cmi
parser.cmx: parser_aux.cmi ../parsing/longident.cmx int64ops.cmx \
input_handling.cmx parser.cmi
input_handling.cmx parser.cmi
pattern_matching.cmo: ../typing/typedtree.cmi parser_aux.cmi \
../utils/misc.cmi debugger_config.cmi debugcom.cmi ../typing/ctype.cmi \
pattern_matching.cmi
pattern_matching.cmi
pattern_matching.cmx: ../typing/typedtree.cmx parser_aux.cmi \
../utils/misc.cmx debugger_config.cmx debugcom.cmx ../typing/ctype.cmx \
pattern_matching.cmi
pattern_matching.cmi
pos.cmo: source.cmi primitives.cmi ../parsing/location.cmi \
../bytecomp/instruct.cmi pos.cmi
../bytecomp/instruct.cmi pos.cmi
pos.cmx: source.cmx primitives.cmx ../parsing/location.cmx \
../bytecomp/instruct.cmx pos.cmi
primitives.cmo: ../otherlibs/unix/unix.cmi primitives.cmi
primitives.cmx: ../otherlibs/unix/unix.cmx primitives.cmi
../bytecomp/instruct.cmx pos.cmi
primitives.cmo: $(UNIXDIR)/unix.cmi primitives.cmi
primitives.cmx: $(UNIXDIR)/unix.cmx primitives.cmi
printval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi \
../typing/printtyp.cmi ../typing/path.cmi parser_aux.cmi \
../typing/outcometree.cmi ../typing/oprint.cmi \
../toplevel/genprintval.cmi debugcom.cmi printval.cmi
../toplevel/genprintval.cmi debugcom.cmi printval.cmi
printval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx \
../typing/printtyp.cmx ../typing/path.cmx parser_aux.cmi \
../typing/outcometree.cmi ../typing/oprint.cmx \
../toplevel/genprintval.cmx debugcom.cmx printval.cmi
program_loading.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi primitives.cmi \
parameters.cmi input_handling.cmi debugger_config.cmi program_loading.cmi
program_loading.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx primitives.cmx \
parameters.cmx input_handling.cmx debugger_config.cmx program_loading.cmi
program_management.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi \
../toplevel/genprintval.cmx debugcom.cmx printval.cmi
program_loading.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi primitives.cmi \
parameters.cmi input_handling.cmi debugger_config.cmi program_loading.cmi
program_loading.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx primitives.cmx \
parameters.cmx input_handling.cmx debugger_config.cmx program_loading.cmi
program_management.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi \
time_travel.cmi symbols.cmi question.cmi program_loading.cmi \
primitives.cmi parameters.cmi int64ops.cmi input_handling.cmi history.cmi \
debugger_config.cmi breakpoints.cmi program_management.cmi
program_management.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx \
debugger_config.cmi breakpoints.cmi program_management.cmi
program_management.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx \
time_travel.cmx symbols.cmx question.cmx program_loading.cmx \
primitives.cmx parameters.cmx int64ops.cmx input_handling.cmx history.cmx \
debugger_config.cmx breakpoints.cmx program_management.cmi
question.cmo: primitives.cmi lexer.cmi input_handling.cmi question.cmi
question.cmx: primitives.cmx lexer.cmx input_handling.cmx question.cmi
show_information.cmo: symbols.cmi show_source.cmi printval.cmi \
debugger_config.cmx breakpoints.cmx program_management.cmi
question.cmo: primitives.cmi lexer.cmi input_handling.cmi question.cmi
question.cmx: primitives.cmx lexer.cmx input_handling.cmx question.cmi
show_information.cmo: symbols.cmi source.cmi show_source.cmi printval.cmi \
../utils/misc.cmi ../bytecomp/instruct.cmi frames.cmi events.cmi \
debugcom.cmi checkpoints.cmi breakpoints.cmi show_information.cmi
show_information.cmx: symbols.cmx show_source.cmx printval.cmx \
debugcom.cmi checkpoints.cmi breakpoints.cmi show_information.cmi
show_information.cmx: symbols.cmx source.cmx show_source.cmx printval.cmx \
../utils/misc.cmx ../bytecomp/instruct.cmx frames.cmx events.cmx \
debugcom.cmx checkpoints.cmx breakpoints.cmx show_information.cmi
debugcom.cmx checkpoints.cmx breakpoints.cmx show_information.cmi
show_source.cmo: source.cmi primitives.cmi parameters.cmi \
../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi \
debugger_config.cmi show_source.cmi
debugger_config.cmi show_source.cmi
show_source.cmx: source.cmx primitives.cmx parameters.cmx \
../parsing/location.cmx ../bytecomp/instruct.cmx events.cmx \
debugger_config.cmx show_source.cmi
debugger_config.cmx show_source.cmi
source.cmo: primitives.cmi ../utils/misc.cmi debugger_config.cmi \
../utils/config.cmi source.cmi
../utils/config.cmi source.cmi
source.cmx: primitives.cmx ../utils/misc.cmx debugger_config.cmx \
../utils/config.cmx source.cmi
symbols.cmo: ../bytecomp/symtable.cmi ../bytecomp/instruct.cmi events.cmi \
debugger_config.cmi debugcom.cmi checkpoints.cmi \
../bytecomp/bytesections.cmi symbols.cmi
symbols.cmx: ../bytecomp/symtable.cmx ../bytecomp/instruct.cmx events.cmx \
debugger_config.cmx debugcom.cmx checkpoints.cmx \
../bytecomp/bytesections.cmx symbols.cmi
../utils/config.cmx source.cmi
symbols.cmo: ../bytecomp/symtable.cmi program_loading.cmi \
../bytecomp/instruct.cmi events.cmi debugger_config.cmi debugcom.cmi \
checkpoints.cmi ../bytecomp/bytesections.cmi symbols.cmi
symbols.cmx: ../bytecomp/symtable.cmx program_loading.cmx \
../bytecomp/instruct.cmx events.cmx debugger_config.cmx debugcom.cmx \
checkpoints.cmx ../bytecomp/bytesections.cmx symbols.cmi
time_travel.cmo: trap_barrier.cmi symbols.cmi question.cmi \
program_loading.cmi primitives.cmi ../utils/misc.cmi int64ops.cmi \
../bytecomp/instruct.cmi input_handling.cmi exec.cmi events.cmi \
debugger_config.cmi debugcom.cmi checkpoints.cmi breakpoints.cmi \
time_travel.cmi
time_travel.cmi
time_travel.cmx: trap_barrier.cmx symbols.cmx question.cmx \
program_loading.cmx primitives.cmx ../utils/misc.cmx int64ops.cmx \
../bytecomp/instruct.cmx input_handling.cmx exec.cmx events.cmx \
debugger_config.cmx debugcom.cmx checkpoints.cmx breakpoints.cmx \
time_travel.cmi
trap_barrier.cmo: exec.cmi debugcom.cmi checkpoints.cmi trap_barrier.cmi
trap_barrier.cmx: exec.cmx debugcom.cmx checkpoints.cmx trap_barrier.cmi
unix_tools.cmo: ../otherlibs/unix/unix.cmi primitives.cmi ../utils/misc.cmi \
unix_tools.cmi
unix_tools.cmx: ../otherlibs/unix/unix.cmx primitives.cmx ../utils/misc.cmx \
unix_tools.cmi
time_travel.cmi
trap_barrier.cmo: exec.cmi debugcom.cmi checkpoints.cmi trap_barrier.cmi
trap_barrier.cmx: exec.cmx debugcom.cmx checkpoints.cmx trap_barrier.cmi
unix_tools.cmo: $(UNIXDIR)/unix.cmi primitives.cmi ../utils/misc.cmi \
unix_tools.cmi
unix_tools.cmx: $(UNIXDIR)/unix.cmx primitives.cmx ../utils/misc.cmx \
unix_tools.cmi

View File

@ -60,11 +60,11 @@ OBJS=\
pos.cmo \
checkpoints.cmo \
events.cmo \
program_loading.cmo \
symbols.cmo \
breakpoints.cmo \
trap_barrier.cmo \
history.cmo \
program_loading.cmo \
printval.cmo \
show_source.cmo \
time_travel.cmo \
@ -72,7 +72,7 @@ OBJS=\
frames.cmo \
eval.cmo \
show_information.cmo \
loadprinter.cmo \
loadprinter.cmo \
parser.cmo \
command_line.cmo \
main.cmo
@ -99,7 +99,8 @@ clean::
$(CAMLC) -c $(COMPFLAGS) $<
depend: beforedepend
$(CAMLDEP) $(DEPFLAGS) *.mli *.ml > .depend
$(CAMLDEP) $(DEPFLAGS) *.mli *.ml \
| sed -e 's,$(UNIXDIR)/,$$(UNIXDIR)/,' > .depend
lexer.ml: lexer.mll
$(CAMLLEX) lexer.mll

View File

@ -705,26 +705,30 @@ let instr_last ppf lexbuf =
let instr_list ppf lexbuf =
let (mo, beg, e) = list_arguments_eol Lexer.lexeme lexbuf in
let (curr_mod, point) =
let (curr_mod, line, column) =
try
selected_point ()
with
| Not_found ->
("", -1)
("", -1, -1)
in
let mdle = convert_module (module_of_longident mo) in
let pos = Lexing.dummy_pos in
let buffer =
try get_buffer pos mdle with
| Not_found -> error ("No source file for " ^ mdle ^ ".") in
let point =
if column <> -1 then
(point_of_coord buffer line 1) + column
else
-1 in
let beginning =
match beg with
| None when (mo <> None) || (point = -1) ->
| None when (mo <> None) || (line = -1) ->
1
| None ->
let buffer =
try get_buffer pos mdle with
| Not_found -> error ("No source file for " ^ mdle ^ ".")
in
begin try
max 1 ((snd (line_of_pos buffer point)) - 10)
max 1 (line - 10)
with Out_of_range ->
1
end
@ -861,11 +865,19 @@ let info_events ppf lexbuf =
print_endline " Address Characters Kind Repr.";
List.iter
(function ev ->
Printf.printf
let start_char, end_char =
try
let buffer = get_buffer (Events.get_pos ev) ev.ev_module in
(snd (start_and_cnum buffer ev.ev_loc.Location.loc_start)),
(snd (start_and_cnum buffer ev.ev_loc.Location.loc_end))
with _ ->
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"
ev.ev_pos
ev.ev_loc.Location.loc_start.Lexing.pos_cnum
ev.ev_loc.Location.loc_end.Lexing.pos_cnum
start_char
end_char
((match ev.ev_kind with
Event_before -> "before"
| Event_after _ -> "after"

View File

@ -33,7 +33,9 @@ let selected_point () =
None ->
raise Not_found
| Some ev ->
(ev.ev_module, (Events.get_pos ev).Lexing.pos_cnum)
(ev.ev_module,
(Events.get_pos ev).Lexing.pos_lnum,
(Events.get_pos ev).Lexing.pos_cnum - (Events.get_pos ev).Lexing.pos_bol)
let selected_event_is_before () =
match !selected_event with

View File

@ -24,9 +24,9 @@ val current_frame : int ref
(* Event at selected position. *)
val selected_event : debug_event option ref
(* Selected position in source. *)
(* Selected position in source (module, line, column). *)
(* Raise `Not_found' if not on an event. *)
val selected_point : unit -> string * int
val selected_point : unit -> string * int * int
val selected_event_is_before : unit -> bool

View File

@ -24,6 +24,7 @@ open Program_management
open Frames
open Show_information
open Format
open Primitives
let line_buffer = Lexing.from_function read_user_input
@ -107,7 +108,39 @@ let rec protect ppf restart loop =
kill_program ();
raise x
let toplevel_loop () = protect Format.std_formatter loop loop
let execute_file_if_any () =
let buffer = Buffer.create 128 in
begin
try
let base = ".ocamldebug" in
let file =
if Sys.file_exists base then
base
else
Filename.concat (Sys.getenv "HOME") base in
let ch = open_in file in
fprintf Format.std_formatter "Executing file %s@." file;
while true do
let line = string_trim (input_line ch) in
if line <> "" && line.[0] <> '#' then begin
Buffer.add_string buffer line;
Buffer.add_char buffer '\n'
end
done;
with _ -> ()
end;
let len = Buffer.length buffer in
if len > 0 then
let commands = Buffer.sub buffer 0 (pred len) in
line_loop Format.std_formatter (Lexing.from_string commands)
let toplevel_loop () =
interactif := false;
current_prompt := "";
execute_file_if_any ();
interactif := true;
current_prompt := debugger_prompt;
protect Format.std_formatter loop loop
(* Parsing of command-line arguments *)
@ -167,7 +200,6 @@ let main () =
arguments := !arguments ^ " " ^ (Filename.quote Sys.argv.(j))
done
end;
current_prompt := debugger_prompt;
printf "\tObjective Caml Debugger version %s@.@." Config.version;
Config.load_path := !default_load_path;
Clflags.recursive_types := true; (* Allow recursive types. *)

View File

@ -20,6 +20,7 @@ open Checkpoints
open Events
open Symbols
open Frames
open Source
open Show_source
open Breakpoints
@ -68,9 +69,15 @@ let show_current_event ppf =
(* Display short information about one frame. *)
let show_one_frame framenum ppf event =
let pos = Events.get_pos event in
let cnum =
try
let buffer = get_buffer pos event.ev_module in
snd (start_and_cnum buffer pos)
with _ -> pos.Lexing.pos_cnum in
fprintf ppf "#%i Pc : %i %s char %i@."
framenum event.ev_pos event.ev_module
(Events.get_pos event).Lexing.pos_cnum
cnum
(* Display information about the current frame. *)
(* --- `select frame' must have succeded before calling this function. *)

View File

@ -45,13 +45,16 @@ let show_point ev selected =
let before = (ev.ev_kind = Event_before) in
if !emacs && selected then
begin try
let buffer = get_buffer (Events.get_pos ev) mdle in
let source = source_of_module ev.ev_loc.Location.loc_start mdle in
printf "\026\026M%s:%i:%i" source
ev.ev_loc.Location.loc_start.Lexing.pos_cnum
ev.ev_loc.Location.loc_end.Lexing.pos_cnum;
(snd (start_and_cnum buffer ev.ev_loc.Location.loc_start))
(snd (start_and_cnum buffer ev.ev_loc.Location.loc_end));
printf "%s\n" (if before then ":before" else ":after")
with
Not_found -> (* get_buffer *)
Out_of_range -> (* point_of_coord *)
prerr_endline "Position out of range."
| Not_found -> (* Events.get_pos || get_buffer *)
prerr_endline ("No source file for " ^ mdle ^ ".");
show_no_point ()
end
@ -59,11 +62,10 @@ let show_point ev selected =
begin try
let pos = Events.get_pos ev in
let buffer = get_buffer pos mdle in
let point = pos.Lexing.pos_cnum in
let (start, line_number) = line_of_pos buffer point in
ignore(print_line buffer line_number start point before)
let start, point = start_and_cnum buffer pos in
ignore(print_line buffer pos.Lexing.pos_lnum start point before)
with
Out_of_range -> (* line_of_pos *)
Out_of_range -> (* point_of_coord *)
prerr_endline "Position out of range."
| Not_found -> (* Events.get_pos || get_buffer *)
prerr_endline ("No source file for " ^ mdle ^ ".")

View File

@ -185,3 +185,8 @@ let pos_of_line buffer line =
(* --- The first line and column are line 1 and column 1. *)
let point_of_coord buffer line column =
fst (pos_of_line buffer line) + (pred column)
let start_and_cnum buffer pos =
let line_number = pos.Lexing.pos_lnum in
let start = point_of_coord buffer line_number 1 in
start, start + (pos.Lexing.pos_cnum - pos.Lexing.pos_bol)

View File

@ -56,3 +56,6 @@ val pos_of_line : buffer -> int -> position
(* Convert a coordinate (line / column) into a position. *)
(* --- The first line and column are line 1 and column 1. *)
val point_of_coord : buffer -> int -> int -> int
(* Return the offsets of both line start and cnum for the passed position. *)
val start_and_cnum : buffer -> Lexing.position -> (int * int)

View File

@ -17,6 +17,7 @@
open Instruct
open Debugger_config (* Toplevel *)
open Program_loading
let modules =
ref ([] : string list)
@ -61,6 +62,12 @@ let read_symbols' bytecode_file =
List.iter (relocate_event orig) evl;
eventlists := evl :: !eventlists
done;
begin try
ignore (Bytesections.seek_section ic "CODE")
with Not_found ->
(* The file contains only debugging info, loading mode is forced to "manual" *)
set_launching_function (List.assoc "manual" loading_modes)
end;
close_in_noerr ic;
!eventlists

View File

@ -144,7 +144,7 @@ struct
\032 -<letter> disable set <letter>\n\
\032 @<num> enable warning <num> and treat it as an error\n\
\032 @<letter> enable set <letter> and treat them as errors\n\
\032 default setting is \"+a-4-6-9-27-28\"";
\032 default setting is \"+a-4-6-9-27-28-29\"";
"-warn-error" , Arg.String F._warn_error,
"<list> Enable or disable error status for warnings according\n\
\ to <list>. See option -w for the syntax of <list>.\n\

View File

@ -179,7 +179,7 @@ let main () =
\032 -<letter> disable set <letter>\n\
\032 @<num> enable warning <num> and treat it as an error\n\
\032 @<letter> enable set <letter> and treat them as errors\n\
\032 default setting is \"+a-4-6-9-27\"";
\032 default setting is \"+a-4-6-9-27-28-29\"";
"-warn-error" , Arg.String (Warnings.parse_options true),
"<list> Enable or disable error status for warnings according\n\
\ to <list>. See option -w for the syntax of <list>.\n\

View File

@ -256,9 +256,9 @@ See `caml-types-location-re' for annotation file format.
(let* ((loc-re (concat caml-types-position-re " "
caml-types-position-re))
(end-re (concat caml-types-position-re " --"))
(def-re (concat "def \\([^ ]\\)* " loc-re))
(def-end-re (concat "def \\([^ ]\\)* " end-re))
(internal-re (concat "int_ref \\([^ ]\\)* " loc-re))
(def-re (concat "def \\([^ ]*\\) " loc-re))
(def-end-re (concat "def \\([^ ]*\\) " end-re))
(internal-re (concat "int_ref \\([^ ]*\\) " loc-re))
(external-re "ext_ref \\(.*\\)"))
(cond
((string-match def-re kind)
@ -359,7 +359,7 @@ See `caml-types-location-re' for annotation file format.
(expand-file-name "_build" project-dir)))))
(if (equal project-dir (parent-dir project-dir))
(error (concat "No annotation file. "
"You should compile with option \"-dtypes\".")))
"You should compile with option \"-annot\".")))
(setq project-dir (parent-dir project-dir)))
type-path))))

View File

@ -1,34 +1,34 @@
common.cmi: syntax.cmi lexgen.cmi
compact.cmi: lexgen.cmi
cset.cmi:
lexer.cmi: parser.cmi
lexgen.cmi: syntax.cmi
output.cmi: syntax.cmi lexgen.cmi compact.cmi common.cmi
outputbis.cmi: syntax.cmi lexgen.cmi common.cmi
parser.cmi: syntax.cmi
syntax.cmi: cset.cmi
table.cmi:
common.cmo: syntax.cmi lexgen.cmi common.cmi
common.cmx: syntax.cmx lexgen.cmx common.cmi
compact.cmo: table.cmi lexgen.cmi compact.cmi
compact.cmx: table.cmx lexgen.cmx compact.cmi
cset.cmo: cset.cmi
cset.cmx: cset.cmi
lexer.cmo: syntax.cmi parser.cmi lexer.cmi
lexer.cmx: syntax.cmx parser.cmx lexer.cmi
lexgen.cmo: table.cmi syntax.cmi cset.cmi lexgen.cmi
lexgen.cmx: table.cmx syntax.cmx cset.cmx lexgen.cmi
common.cmi: syntax.cmi lexgen.cmi
compact.cmi: lexgen.cmi
cset.cmi:
lexer.cmi: parser.cmi
lexgen.cmi: syntax.cmi
output.cmi: syntax.cmi lexgen.cmi compact.cmi common.cmi
outputbis.cmi: syntax.cmi lexgen.cmi common.cmi
parser.cmi: syntax.cmi
syntax.cmi: cset.cmi
table.cmi:
common.cmo: syntax.cmi lexgen.cmi common.cmi
common.cmx: syntax.cmx lexgen.cmx common.cmi
compact.cmo: table.cmi lexgen.cmi compact.cmi
compact.cmx: table.cmx lexgen.cmx compact.cmi
cset.cmo: cset.cmi
cset.cmx: cset.cmi
lexer.cmo: syntax.cmi parser.cmi lexer.cmi
lexer.cmx: syntax.cmx parser.cmx lexer.cmi
lexgen.cmo: table.cmi syntax.cmi cset.cmi lexgen.cmi
lexgen.cmx: table.cmx syntax.cmx cset.cmx lexgen.cmi
main.cmo: syntax.cmi parser.cmi outputbis.cmi output.cmi lexgen.cmi lexer.cmi \
cset.cmi compact.cmi common.cmi
cset.cmi compact.cmi common.cmi
main.cmx: syntax.cmx parser.cmx outputbis.cmx output.cmx lexgen.cmx lexer.cmx \
cset.cmx compact.cmx common.cmx
output.cmo: syntax.cmi lexgen.cmi compact.cmi common.cmi output.cmi
output.cmx: syntax.cmx lexgen.cmx compact.cmx common.cmx output.cmi
outputbis.cmo: syntax.cmi lexgen.cmi common.cmi outputbis.cmi
outputbis.cmx: syntax.cmx lexgen.cmx common.cmx outputbis.cmi
parser.cmo: syntax.cmi cset.cmi parser.cmi
parser.cmx: syntax.cmx cset.cmx parser.cmi
syntax.cmo: cset.cmi syntax.cmi
syntax.cmx: cset.cmx syntax.cmi
table.cmo: table.cmi
table.cmx: table.cmi
cset.cmx compact.cmx common.cmx
output.cmo: syntax.cmi lexgen.cmi compact.cmi common.cmi output.cmi
output.cmx: syntax.cmx lexgen.cmx compact.cmx common.cmx output.cmi
outputbis.cmo: syntax.cmi lexgen.cmi common.cmi outputbis.cmi
outputbis.cmx: syntax.cmx lexgen.cmx common.cmx outputbis.cmi
parser.cmo: syntax.cmi cset.cmi parser.cmi
parser.cmx: syntax.cmx cset.cmx parser.cmi
syntax.cmo: cset.cmi syntax.cmi
syntax.cmx: cset.cmx syntax.cmi
table.cmo: table.cmi
table.cmx: table.cmi

View File

@ -14,6 +14,8 @@
# The lexer generator
include ../config/Makefile
CAMLC=../boot/ocamlrun ../boot/ocamlc -I ../boot
CAMLOPT=../boot/ocamlrun ../ocamlopt -I ../stdlib
COMPFLAGS=-warn-error A

View File

@ -469,7 +469,7 @@ rule "Standard library manual"
Seq[Cmd(S[A"mkdir"; A"-p"; P"ocamldoc/stdlib_man"]);
Cmd(S[ocamldoc; A"-man"; A"-d"; P"ocamldoc/stdlib_man";
A"-I"; P "stdlib"; A"-I"; P"otherlibs/unix"; A"-I"; P"otherlibs/num";
A"-t"; A"Ocaml library"; A"-man-mini"; atomize stdlib_mlis])]
A"-t"; A"OCaml library"; A"-man-mini"; atomize stdlib_mlis])]
end;;
flag ["ocaml"; "compile"; "bootstrap_thread"]
@ -643,7 +643,7 @@ rule "camlheader"
rule "ocaml C stubs on windows: dlib & d.o* -> dll"
~prod:"%.dll"
~deps:["%.dlib"(*; "byterun/ocamlrun"-.-C.a*)]
~deps:["%.dlib"(*; "byterun/libcamlrun"-.-C.a*)]
~insert:`top
begin fun env build ->
let dlib = env "%.dlib" in
@ -659,7 +659,7 @@ rule "ocaml C stubs on windows: dlib & d.o* -> dll"
| Outcome.Good d_o -> d_o
| Outcome.Bad exn -> raise exn
end resluts in
mkdll dll (S[atomize objs; P("byterun/ocamlrun"-.-C.a)])
mkdll dll (S[atomize objs; P("byterun/libcamlrun"-.-C.a)])
(T(tags_of_pathname dll++"dll"++"link"++"c"))
end;;

View File

@ -53,6 +53,7 @@ val ext_asm : string
val ext_dll : string
val o : string
val a : string
val so : string
val toolchain : string
val ccomptype : string
val extralibs : string

View File

@ -1,6 +1,6 @@
# OCamlbuild tags file
true: debug
<*.ml> or <*.mli>: warn_A, warn_error_A, warn_e, dtypes
<*.ml> or <*.mli>: warn_A, warn_error_A, warn_e, annot
"discard_printf.ml": rectypes
"ocamlbuildlib.cma" or "ocamlbuildlightlib.cma": linkall
<*.byte> or <*.native> or <*.top>: use_unix

View File

@ -278,7 +278,7 @@ let execute_many ?(quiet=false) ?(pretend=false) cmds =
| Some _ -> false :: acc_res, acc_exn
end ([], None) konts
in match opt_exn with
| Some(exn) -> Some(res, exn)
| Some(exn) -> Some(List.rev res, exn)
| None -> None
else
My_unix.execute_many ~ticker ?max_jobs ~display konts

View File

@ -305,7 +305,8 @@ rule "ocaml C stubs: c -> o"
begin fun env _build ->
let c = env "%.c" in
let o = env x_o in
let cc = Cmd(S[!Options.ocamlc; T(tags_of_pathname c++"c"++"compile"); A"-c"; Px c]) in
let comp = if Tags.mem "native" (tags_of_pathname c) then !Options.ocamlopt else !Options.ocamlc in
let cc = Cmd(S[comp; T(tags_of_pathname c++"c"++"compile"); A"-c"; Px c]) in
if Pathname.dirname o = Pathname.current_dir_name then cc
else Seq[cc; mv (Pathname.basename o) o]
end;;
@ -416,6 +417,8 @@ flag ["ocaml"; "compile"; "thread"] (A "-thread");;
flag ["ocaml"; "doc"; "thread"] (S[A"-I"; A"+threads"]);;
flag ["ocaml"; "link"; "thread"; "native"; "program"] (S[A "threads.cmxa"; A "-thread"]);;
flag ["ocaml"; "link"; "thread"; "byte"; "program"] (S[A "threads.cma"; A "-thread"]);;
flag ["ocaml"; "link"; "thread"; "native"; "toplevel"] (S[A "threads.cmxa"; A "-thread"]);;
flag ["ocaml"; "link"; "thread"; "byte"; "toplevel"] (S[A "threads.cma"; A "-thread"]);;
flag ["ocaml"; "compile"; "nopervasives"] (A"-nopervasives");;
flag ["ocaml"; "compile"; "nolabels"] (A"-nolabels");;

View File

@ -123,7 +123,10 @@ let ocaml_lib ?(extern=false) ?(byte=true) ?(native=true) ?dir ?tag_name libpath
end;
match dir with
| None -> ()
| Some dir -> flag ["ocaml"; tag_name; "compile"] (S[A"-I"; P dir])
| Some dir ->
List.iter
(fun x -> flag ["ocaml"; tag_name; x] (S[A"-I"; P dir]))
["compile"; "doc"; "infer_interface"]
let cmi_of = Pathname.update_extensions "cmi"

View File

@ -166,7 +166,7 @@ slide "The tags, our way to specify exceptions", 'fragile=singleslide' do
end
code_tags do
: "funny.ml": rectypes
~<**/*.ml*>~: warn_A, warn_error_A, debug, dtypes
~<**/*.ml*>~: warn_A, warn_error_A, debug, annot
"foo.ml" or "bar.ml": warn_v, warn_error_v
"vendor.ml": -warn_A, -warn_error_A
<main.{byte,native}>: use_unix

View File

@ -31,6 +31,7 @@ type env = Pathname.t -> Pathname.t
type builder = Pathname.t list list -> (Pathname.t, exn) Ocamlbuild_pack.My_std.Outcome.t list
type action = env -> builder -> Command.t
let rule = Rule.rule
let clear_rules = Rule.clear_rules
let dep = Command.dep
let copy_rule = Rule.copy_rule
let ocaml_lib = Ocamlbuild_pack.Ocaml_utils.ocaml_lib

View File

@ -61,6 +61,7 @@ let stdout_isatty () =
Unix.isatty Unix.stdout
let execute_many =
let exit i = raise (My_std.Exit_with_code i) in
let exit = function
| Ocamlbuild_executor.Subcommand_failed -> exit Exit_codes.rc_executor_subcommand_failed
| Ocamlbuild_executor.Subcommand_got_signal -> exit Exit_codes.rc_executor_subcommand_got_signal

View File

@ -76,9 +76,10 @@ let program_to_execute = ref false
let must_clean = ref false
let show_documentation = ref false
let recursive = ref false
let ext_lib = ref "a"
let ext_obj = ref "o"
let ext_dll = ref "so"
let ext_lib = ref Ocamlbuild_Myocamlbuild_config.a
let ext_obj = ref Ocamlbuild_Myocamlbuild_config.o
let ext_dll = ref Ocamlbuild_Myocamlbuild_config.so
let exe = ref Ocamlbuild_Myocamlbuild_config.exe
let targets_internal = ref []
let ocaml_libs_internal = ref []

View File

@ -30,7 +30,7 @@ module Make(U:sig end) =
let we_have_a_config_file = sys_file_exists plugin_config_file
let we_need_a_plugin = !Options.plugin && sys_file_exists plugin_file
let we_have_a_plugin = sys_file_exists (!Options.build_dir/plugin)
let we_have_a_plugin = sys_file_exists ((!Options.build_dir/plugin)^(!Options.exe))
let we_have_a_config_file_interface = sys_file_exists plugin_config_file_interface
let up_to_date_or_copy fn =
@ -56,6 +56,12 @@ module Make(U:sig end) =
() (* Up to date *)
(* FIXME: remove ocamlbuild_config.ml in _build/ if removed in parent *)
else begin
if !Options.native_plugin
&& not (sys_file_exists ((!Ocamlbuild_where.libdir)/"ocamlbuildlib.cmxa")) then
begin
Options.native_plugin := false;
eprintf "Warning: Won't be able to compile a native plugin"
end;
let plugin_config =
if we_have_a_config_file then
if we_have_a_config_file_interface then
@ -83,10 +89,10 @@ module Make(U:sig end) =
let cmd =
Cmd(S[compiler; A"-I"; P dir; libs; more_options;
P(dir/ocamlbuildlib); plugin_config; P plugin_file;
P(dir/ocamlbuild); A"-o"; Px plugin])
P(dir/ocamlbuild); A"-o"; Px (plugin^(!Options.exe))])
in
Shell.chdir !Options.build_dir;
Shell.rm_f plugin;
Shell.rm_f (plugin^(!Options.exe));
Command.execute cmd
end
@ -96,7 +102,8 @@ module Make(U:sig end) =
rebuild_plugin_if_needed ();
Shell.chdir Pathname.pwd;
if not !Options.just_plugin then
let spec = S[!Options.ocamlrun; P(!Options.build_dir/plugin);
let runner = if !Options.native_plugin then N else !Options.ocamlrun in
let spec = S[runner; P(!Options.build_dir/plugin^(!Options.exe));
A"-no-plugin"; atomize (List.tl (Array.to_list Sys.argv))] in
let () = Log.finish () in
raise (Exit_silently_with_code (sys_command (Command.string_of_command_spec spec)))

View File

@ -227,7 +227,7 @@ let call builder r =
then thunk ()
else List.iter (fun x -> Resource.Cache.suspend_resource x action.command thunk r.prods) r.prods
let (get_rules, add_rule) =
let (get_rules, add_rule, clear_rules) =
let rules = ref [] in
(fun () -> !rules),
begin fun pos r ->
@ -248,7 +248,8 @@ let (get_rules, add_rule) =
List.fold_right begin fun x acc ->
if x.name = s then r :: x :: acc else x :: acc
end !rules []
end
end,
(fun () -> rules := [])
let rule name ?(tags=[]) ?(prods=[]) ?(deps=[]) ?prod ?dep ?stamp ?(insert = `bottom) code =
let res_add import xs xopt =

View File

@ -73,6 +73,7 @@ val print_rule_name : Format.formatter -> 'a gen_rule -> unit
val print_rule_contents : 'a rule_printer
val get_rules : unit -> rule_scheme list
val clear_rules : unit -> unit
val call : builder -> rule -> unit

View File

@ -397,6 +397,7 @@ module type OPTIONS = sig
val ext_obj : string ref
val ext_lib : string ref
val ext_dll : string ref
val exe : string ref
end
module type ARCH = sig
@ -520,6 +521,9 @@ module type PLUGIN = sig
?insert:[`top | `before of string | `after of string | `bottom] ->
string -> string -> unit
(** Empties the list of rules of the ocamlbuild engine. *)
val clear_rules : unit -> unit
(** [dep tags deps] Will build [deps] when all [tags] will be activated. *)
val dep : Tags.elt list -> Pathname.t list -> unit

View File

@ -14,3 +14,4 @@ stdlib_man
test_stdlib
test_latex
test
*.a

View File

@ -1,11 +1,11 @@
odoc.cmo: ../typing/typedtree.cmi odoc_texi.cmo odoc_messages.cmo \
odoc_man.cmo odoc_latex.cmo odoc_info.cmi odoc_html.cmo odoc_global.cmi \
odoc_dot.cmo odoc_config.cmi odoc_args.cmi odoc_analyse.cmi \
../utils/misc.cmi ../utils/config.cmi ../utils/clflags.cmi
../utils/misc.cmi ../utils/config.cmi ../utils/clflags.cmi
odoc.cmx: ../typing/typedtree.cmx odoc_texi.cmx odoc_messages.cmx \
odoc_man.cmx odoc_latex.cmx odoc_info.cmx odoc_html.cmx odoc_global.cmx \
odoc_dot.cmx odoc_config.cmx odoc_args.cmx odoc_analyse.cmx \
../utils/misc.cmx ../utils/config.cmx ../utils/clflags.cmx
../utils/misc.cmx ../utils/config.cmx ../utils/clflags.cmx
odoc_analyse.cmo: ../utils/warnings.cmi ../typing/typetexp.cmi \
../typing/types.cmi ../typing/typemod.cmi ../typing/typedtree.cmi \
../typing/typedecl.cmi ../typing/typecore.cmi ../typing/typeclass.cmi \
@ -17,7 +17,7 @@ odoc_analyse.cmo: ../utils/warnings.cmi ../typing/typetexp.cmi \
odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
../parsing/lexer.cmi ../typing/includemod.cmi ../typing/env.cmi \
../typing/ctype.cmi ../utils/config.cmi ../utils/clflags.cmi \
../utils/ccomp.cmi odoc_analyse.cmi
../utils/ccomp.cmi odoc_analyse.cmi
odoc_analyse.cmx: ../utils/warnings.cmx ../typing/typetexp.cmx \
../typing/types.cmx ../typing/typemod.cmx ../typing/typedtree.cmx \
../typing/typedecl.cmx ../typing/typecore.cmx ../typing/typeclass.cmx \
@ -29,215 +29,215 @@ odoc_analyse.cmx: ../utils/warnings.cmx ../typing/typetexp.cmx \
odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
../parsing/lexer.cmx ../typing/includemod.cmx ../typing/env.cmx \
../typing/ctype.cmx ../utils/config.cmx ../utils/clflags.cmx \
../utils/ccomp.cmx odoc_analyse.cmi
../utils/ccomp.cmx odoc_analyse.cmi
odoc_args.cmo: odoc_types.cmi odoc_module.cmo odoc_messages.cmo \
odoc_global.cmi odoc_config.cmi ../utils/misc.cmi ../utils/config.cmi \
../utils/clflags.cmi odoc_args.cmi
../utils/clflags.cmi odoc_args.cmi
odoc_args.cmx: odoc_types.cmx odoc_module.cmx odoc_messages.cmx \
odoc_global.cmx odoc_config.cmx ../utils/misc.cmx ../utils/config.cmx \
../utils/clflags.cmx odoc_args.cmi
../utils/clflags.cmx odoc_args.cmi
odoc_ast.cmo: ../typing/types.cmi ../typing/typedtree.cmi \
../typing/predef.cmi ../typing/path.cmi ../parsing/parsetree.cmi \
odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_sig.cmi \
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_messages.cmo \
odoc_global.cmi odoc_exception.cmo odoc_env.cmi odoc_class.cmo \
odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
../typing/ident.cmi ../parsing/asttypes.cmi odoc_ast.cmi
../typing/ident.cmi ../parsing/asttypes.cmi odoc_ast.cmi
odoc_ast.cmx: ../typing/types.cmx ../typing/typedtree.cmx \
../typing/predef.cmx ../typing/path.cmx ../parsing/parsetree.cmi \
odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_sig.cmx \
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_messages.cmx \
odoc_global.cmx odoc_exception.cmx odoc_env.cmx odoc_class.cmx \
odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
../typing/ident.cmx ../parsing/asttypes.cmi odoc_ast.cmi
../typing/ident.cmx ../parsing/asttypes.cmi odoc_ast.cmi
odoc_class.cmo: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
odoc_parameter.cmo odoc_name.cmi
odoc_parameter.cmo odoc_name.cmi
odoc_class.cmx: ../typing/types.cmx odoc_value.cmx odoc_types.cmx \
odoc_parameter.cmx odoc_name.cmx
odoc_parameter.cmx odoc_name.cmx
odoc_comments.cmo: odoc_types.cmi odoc_text.cmi odoc_see_lexer.cmo \
odoc_parser.cmi odoc_misc.cmi odoc_messages.cmo odoc_lexer.cmo \
odoc_global.cmi odoc_cross.cmi odoc_comments_global.cmi odoc_comments.cmi
odoc_global.cmi odoc_cross.cmi odoc_comments_global.cmi odoc_comments.cmi
odoc_comments.cmx: odoc_types.cmx odoc_text.cmx odoc_see_lexer.cmx \
odoc_parser.cmx odoc_misc.cmx odoc_messages.cmx odoc_lexer.cmx \
odoc_global.cmx odoc_cross.cmx odoc_comments_global.cmx odoc_comments.cmi
odoc_comments_global.cmo: odoc_comments_global.cmi
odoc_comments_global.cmx: odoc_comments_global.cmi
odoc_config.cmo: ../utils/config.cmi odoc_config.cmi
odoc_config.cmx: ../utils/config.cmx odoc_config.cmi
odoc_control.cmo:
odoc_control.cmx:
odoc_global.cmx odoc_cross.cmx odoc_comments_global.cmx odoc_comments.cmi
odoc_comments_global.cmo: odoc_comments_global.cmi
odoc_comments_global.cmx: odoc_comments_global.cmi
odoc_config.cmo: ../utils/config.cmi odoc_config.cmi
odoc_config.cmx: ../utils/config.cmx odoc_config.cmi
odoc_control.cmo:
odoc_control.cmx:
odoc_cross.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_search.cmi \
odoc_scan.cmo odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
odoc_misc.cmi odoc_messages.cmo odoc_exception.cmo odoc_class.cmo \
odoc_cross.cmi
odoc_cross.cmi
odoc_cross.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_search.cmx \
odoc_scan.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
odoc_misc.cmx odoc_messages.cmx odoc_exception.cmx odoc_class.cmx \
odoc_cross.cmi
odoc_dag2html.cmo: odoc_info.cmi odoc_dag2html.cmi
odoc_dag2html.cmx: odoc_info.cmx odoc_dag2html.cmi
odoc_cross.cmi
odoc_dag2html.cmo: odoc_info.cmi odoc_dag2html.cmi
odoc_dag2html.cmx: odoc_info.cmx odoc_dag2html.cmi
odoc_dep.cmo: ../parsing/parsetree.cmi odoc_type.cmo odoc_print.cmi \
odoc_module.cmo ../tools/depend.cmi
odoc_module.cmo ../tools/depend.cmi
odoc_dep.cmx: ../parsing/parsetree.cmi odoc_type.cmx odoc_print.cmx \
odoc_module.cmx ../tools/depend.cmx
odoc_dot.cmo: odoc_info.cmi
odoc_dot.cmx: odoc_info.cmx
odoc_module.cmx ../tools/depend.cmx
odoc_dot.cmo: odoc_info.cmi
odoc_dot.cmx: odoc_info.cmx
odoc_env.cmo: ../typing/types.cmi ../typing/printtyp.cmi ../typing/predef.cmi \
../typing/path.cmi odoc_name.cmi ../typing/btype.cmi odoc_env.cmi
../typing/path.cmi odoc_name.cmi ../typing/btype.cmi odoc_env.cmi
odoc_env.cmx: ../typing/types.cmx ../typing/printtyp.cmx ../typing/predef.cmx \
../typing/path.cmx odoc_name.cmx ../typing/btype.cmx odoc_env.cmi
odoc_exception.cmo: ../typing/types.cmi odoc_types.cmi odoc_name.cmi
odoc_exception.cmx: ../typing/types.cmx odoc_types.cmx odoc_name.cmx
odoc_global.cmo: ../utils/clflags.cmi odoc_global.cmi
odoc_global.cmx: ../utils/clflags.cmx odoc_global.cmi
../typing/path.cmx odoc_name.cmx ../typing/btype.cmx odoc_env.cmi
odoc_exception.cmo: ../typing/types.cmi odoc_types.cmi odoc_name.cmi
odoc_exception.cmx: ../typing/types.cmx odoc_types.cmx odoc_name.cmx
odoc_global.cmo: ../utils/clflags.cmi odoc_global.cmi
odoc_global.cmx: ../utils/clflags.cmx odoc_global.cmi
odoc_html.cmo: odoc_text.cmi odoc_ocamlhtml.cmo odoc_messages.cmo \
odoc_info.cmi odoc_dag2html.cmi odoc_args.cmi ../parsing/asttypes.cmi
odoc_info.cmi odoc_dag2html.cmi odoc_args.cmi ../parsing/asttypes.cmi
odoc_html.cmx: odoc_text.cmx odoc_ocamlhtml.cmx odoc_messages.cmx \
odoc_info.cmx odoc_dag2html.cmx odoc_args.cmx ../parsing/asttypes.cmi
odoc_info.cmx odoc_dag2html.cmx odoc_args.cmx ../parsing/asttypes.cmi
odoc_info.cmo: ../typing/printtyp.cmi odoc_value.cmo odoc_types.cmi \
odoc_type.cmo odoc_text.cmi odoc_str.cmi odoc_search.cmi odoc_scan.cmo \
odoc_print.cmi odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
odoc_misc.cmi odoc_messages.cmo odoc_global.cmi odoc_exception.cmo \
odoc_dep.cmo odoc_config.cmi odoc_comments.cmi odoc_class.cmo \
odoc_args.cmi odoc_analyse.cmi odoc_info.cmi
odoc_args.cmi odoc_analyse.cmi odoc_info.cmi
odoc_info.cmx: ../typing/printtyp.cmx odoc_value.cmx odoc_types.cmx \
odoc_type.cmx odoc_text.cmx odoc_str.cmx odoc_search.cmx odoc_scan.cmx \
odoc_print.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
odoc_misc.cmx odoc_messages.cmx odoc_global.cmx odoc_exception.cmx \
odoc_dep.cmx odoc_config.cmx odoc_comments.cmx odoc_class.cmx \
odoc_args.cmx odoc_analyse.cmx odoc_info.cmi
odoc_inherit.cmo:
odoc_inherit.cmx:
odoc_args.cmx odoc_analyse.cmx odoc_info.cmi
odoc_inherit.cmo:
odoc_inherit.cmx:
odoc_latex.cmo: odoc_to_text.cmo odoc_messages.cmo odoc_latex_style.cmo \
odoc_info.cmi ../parsing/asttypes.cmi
odoc_info.cmi ../parsing/asttypes.cmi
odoc_latex.cmx: odoc_to_text.cmx odoc_messages.cmx odoc_latex_style.cmx \
odoc_info.cmx ../parsing/asttypes.cmi
odoc_latex_style.cmo:
odoc_latex_style.cmx:
odoc_info.cmx ../parsing/asttypes.cmi
odoc_latex_style.cmo:
odoc_latex_style.cmx:
odoc_lexer.cmo: odoc_parser.cmi odoc_messages.cmo odoc_comments_global.cmi \
odoc_args.cmi
odoc_args.cmi
odoc_lexer.cmx: odoc_parser.cmx odoc_messages.cmx odoc_comments_global.cmx \
odoc_args.cmx
odoc_args.cmx
odoc_man.cmo: odoc_str.cmi odoc_print.cmi odoc_misc.cmi odoc_messages.cmo \
odoc_info.cmi odoc_args.cmi ../parsing/asttypes.cmi
odoc_info.cmi odoc_args.cmi ../parsing/asttypes.cmi
odoc_man.cmx: odoc_str.cmx odoc_print.cmx odoc_misc.cmx odoc_messages.cmx \
odoc_info.cmx odoc_args.cmx ../parsing/asttypes.cmi
odoc_info.cmx odoc_args.cmx ../parsing/asttypes.cmi
odoc_merge.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo \
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_messages.cmo \
odoc_exception.cmo odoc_class.cmo odoc_args.cmi odoc_merge.cmi
odoc_exception.cmo odoc_class.cmo odoc_args.cmi odoc_merge.cmi
odoc_merge.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx \
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_messages.cmx \
odoc_exception.cmx odoc_class.cmx odoc_args.cmx odoc_merge.cmi
odoc_messages.cmo: odoc_global.cmi odoc_config.cmi ../utils/config.cmi
odoc_messages.cmx: odoc_global.cmx odoc_config.cmx ../utils/config.cmx
odoc_exception.cmx odoc_class.cmx odoc_args.cmx odoc_merge.cmi
odoc_messages.cmo: odoc_global.cmi odoc_config.cmi ../utils/config.cmi
odoc_messages.cmx: odoc_global.cmx odoc_config.cmx ../utils/config.cmx
odoc_misc.cmo: ../typing/types.cmi ../typing/predef.cmi ../typing/path.cmi \
odoc_types.cmi odoc_messages.cmo ../parsing/longident.cmi \
../typing/ctype.cmi ../typing/btype.cmi odoc_misc.cmi
../typing/ctype.cmi ../typing/btype.cmi odoc_misc.cmi
odoc_misc.cmx: ../typing/types.cmx ../typing/predef.cmx ../typing/path.cmx \
odoc_types.cmx odoc_messages.cmx ../parsing/longident.cmx \
../typing/ctype.cmx ../typing/btype.cmx odoc_misc.cmi
../typing/ctype.cmx ../typing/btype.cmx odoc_misc.cmi
odoc_module.cmo: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
odoc_type.cmo odoc_name.cmi odoc_exception.cmo odoc_class.cmo
odoc_type.cmo odoc_name.cmi odoc_exception.cmo odoc_class.cmo
odoc_module.cmx: ../typing/types.cmx odoc_value.cmx odoc_types.cmx \
odoc_type.cmx odoc_name.cmx odoc_exception.cmx odoc_class.cmx
odoc_type.cmx odoc_name.cmx odoc_exception.cmx odoc_class.cmx
odoc_name.cmo: ../typing/path.cmi odoc_misc.cmi ../typing/ident.cmi \
odoc_name.cmi
odoc_name.cmi
odoc_name.cmx: ../typing/path.cmx odoc_misc.cmx ../typing/ident.cmx \
odoc_name.cmi
odoc_ocamlhtml.cmo:
odoc_ocamlhtml.cmx:
odoc_parameter.cmo: ../typing/types.cmi odoc_types.cmi
odoc_parameter.cmx: ../typing/types.cmx odoc_types.cmx
odoc_parser.cmo: odoc_types.cmi odoc_comments_global.cmi odoc_parser.cmi
odoc_parser.cmx: odoc_types.cmx odoc_comments_global.cmx odoc_parser.cmi
odoc_print.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_print.cmi
odoc_print.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_print.cmi
odoc_name.cmi
odoc_ocamlhtml.cmo:
odoc_ocamlhtml.cmx:
odoc_parameter.cmo: ../typing/types.cmi odoc_types.cmi
odoc_parameter.cmx: ../typing/types.cmx odoc_types.cmx
odoc_parser.cmo: odoc_types.cmi odoc_comments_global.cmi odoc_parser.cmi
odoc_parser.cmx: odoc_types.cmx odoc_comments_global.cmx odoc_parser.cmi
odoc_print.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_print.cmi
odoc_print.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_print.cmi
odoc_scan.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_module.cmo \
odoc_exception.cmo odoc_class.cmo
odoc_exception.cmo odoc_class.cmo
odoc_scan.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_module.cmx \
odoc_exception.cmx odoc_class.cmx
odoc_exception.cmx odoc_class.cmx
odoc_search.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo \
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_exception.cmo \
odoc_class.cmo odoc_search.cmi
odoc_class.cmo odoc_search.cmi
odoc_search.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx \
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_exception.cmx \
odoc_class.cmx odoc_search.cmi
odoc_see_lexer.cmo: odoc_parser.cmi
odoc_see_lexer.cmx: odoc_parser.cmx
odoc_class.cmx odoc_search.cmi
odoc_see_lexer.cmo: odoc_parser.cmi
odoc_see_lexer.cmx: odoc_parser.cmx
odoc_sig.cmo: ../typing/types.cmi ../typing/typedtree.cmi ../typing/path.cmi \
../parsing/parsetree.cmi odoc_value.cmo odoc_types.cmi odoc_type.cmo \
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_misc.cmi \
odoc_messages.cmo odoc_merge.cmi odoc_global.cmi odoc_exception.cmo \
odoc_env.cmi odoc_class.cmo odoc_args.cmi ../utils/misc.cmi \
../parsing/location.cmi ../typing/btype.cmi ../parsing/asttypes.cmi \
odoc_sig.cmi
odoc_sig.cmi
odoc_sig.cmx: ../typing/types.cmx ../typing/typedtree.cmx ../typing/path.cmx \
../parsing/parsetree.cmi odoc_value.cmx odoc_types.cmx odoc_type.cmx \
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_misc.cmx \
odoc_messages.cmx odoc_merge.cmx odoc_global.cmx odoc_exception.cmx \
odoc_env.cmx odoc_class.cmx odoc_args.cmx ../utils/misc.cmx \
../parsing/location.cmx ../typing/btype.cmx ../parsing/asttypes.cmi \
odoc_sig.cmi
odoc_sig.cmi
odoc_str.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_value.cmo \
odoc_type.cmo odoc_print.cmi odoc_name.cmi odoc_misc.cmi \
odoc_messages.cmo odoc_exception.cmo odoc_class.cmo \
../parsing/asttypes.cmi odoc_str.cmi
../parsing/asttypes.cmi odoc_str.cmi
odoc_str.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_value.cmx \
odoc_type.cmx odoc_print.cmx odoc_name.cmx odoc_misc.cmx \
odoc_messages.cmx odoc_exception.cmx odoc_class.cmx \
../parsing/asttypes.cmi odoc_str.cmi
odoc_test.cmo: odoc_info.cmi
odoc_test.cmx: odoc_info.cmx
../parsing/asttypes.cmi odoc_str.cmi
odoc_test.cmo: odoc_info.cmi
odoc_test.cmx: odoc_info.cmx
odoc_texi.cmo: odoc_to_text.cmo odoc_messages.cmo odoc_info.cmi \
../parsing/asttypes.cmi
../parsing/asttypes.cmi
odoc_texi.cmx: odoc_to_text.cmx odoc_messages.cmx odoc_info.cmx \
../parsing/asttypes.cmi
../parsing/asttypes.cmi
odoc_text.cmo: odoc_types.cmi odoc_text_parser.cmi odoc_text_lexer.cmo \
odoc_text.cmi
odoc_text.cmi
odoc_text.cmx: odoc_types.cmx odoc_text_parser.cmx odoc_text_lexer.cmx \
odoc_text.cmi
odoc_text_lexer.cmo: odoc_text_parser.cmi odoc_misc.cmi
odoc_text_lexer.cmx: odoc_text_parser.cmx odoc_misc.cmx
odoc_text_parser.cmo: odoc_types.cmi odoc_misc.cmi odoc_text_parser.cmi
odoc_text_parser.cmx: odoc_types.cmx odoc_misc.cmx odoc_text_parser.cmi
odoc_to_text.cmo: odoc_messages.cmo odoc_info.cmi
odoc_to_text.cmx: odoc_messages.cmx odoc_info.cmx
odoc_text.cmi
odoc_text_lexer.cmo: odoc_text_parser.cmi odoc_misc.cmi
odoc_text_lexer.cmx: odoc_text_parser.cmx odoc_misc.cmx
odoc_text_parser.cmo: odoc_types.cmi odoc_misc.cmi odoc_text_parser.cmi
odoc_text_parser.cmx: odoc_types.cmx odoc_misc.cmx odoc_text_parser.cmi
odoc_to_text.cmo: odoc_messages.cmo odoc_info.cmi
odoc_to_text.cmx: odoc_messages.cmx odoc_info.cmx
odoc_type.cmo: ../typing/types.cmi odoc_types.cmi odoc_name.cmi \
../parsing/asttypes.cmi
../parsing/asttypes.cmi
odoc_type.cmx: ../typing/types.cmx odoc_types.cmx odoc_name.cmx \
../parsing/asttypes.cmi
odoc_types.cmo: odoc_messages.cmo odoc_types.cmi
odoc_types.cmx: odoc_messages.cmx odoc_types.cmi
../parsing/asttypes.cmi
odoc_types.cmo: odoc_messages.cmo odoc_types.cmi
odoc_types.cmx: odoc_messages.cmx odoc_types.cmi
odoc_value.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_types.cmi \
odoc_parameter.cmo odoc_name.cmi
odoc_parameter.cmo odoc_name.cmi
odoc_value.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_types.cmx \
odoc_parameter.cmx odoc_name.cmx
odoc_analyse.cmi: odoc_module.cmo odoc_args.cmi
odoc_args.cmi: odoc_types.cmi odoc_module.cmo
odoc_parameter.cmx odoc_name.cmx
odoc_analyse.cmi: odoc_module.cmo odoc_args.cmi
odoc_args.cmi: odoc_types.cmi odoc_module.cmo
odoc_ast.cmi: ../typing/types.cmi ../typing/typedtree.cmi ../typing/path.cmi \
../parsing/parsetree.cmi odoc_sig.cmi odoc_name.cmi odoc_module.cmo
odoc_comments.cmi: odoc_types.cmi odoc_module.cmo
odoc_comments_global.cmi:
odoc_config.cmi:
odoc_cross.cmi: odoc_types.cmi odoc_module.cmo
odoc_dag2html.cmi: odoc_info.cmi
odoc_env.cmi: ../typing/types.cmi odoc_name.cmi
odoc_global.cmi:
../parsing/parsetree.cmi odoc_sig.cmi odoc_name.cmi odoc_module.cmo
odoc_comments.cmi: odoc_types.cmi odoc_module.cmo
odoc_comments_global.cmi:
odoc_config.cmi:
odoc_cross.cmi: odoc_types.cmi odoc_module.cmo
odoc_dag2html.cmi: odoc_info.cmi
odoc_env.cmi: ../typing/types.cmi odoc_name.cmi
odoc_global.cmi:
odoc_info.cmi: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
odoc_type.cmo odoc_search.cmi odoc_parameter.cmo odoc_module.cmo \
odoc_exception.cmo odoc_class.cmo ../parsing/asttypes.cmi
odoc_merge.cmi: odoc_types.cmi odoc_module.cmo
odoc_misc.cmi: ../typing/types.cmi odoc_types.cmi ../parsing/longident.cmi
odoc_exception.cmo odoc_class.cmo
odoc_merge.cmi: odoc_types.cmi odoc_module.cmo
odoc_misc.cmi: ../typing/types.cmi odoc_types.cmi ../parsing/longident.cmi
odoc_name.cmi: ../typing/path.cmi ../parsing/longident.cmi \
../typing/ident.cmi
odoc_parser.cmi: odoc_types.cmi
odoc_print.cmi: ../typing/types.cmi
../typing/ident.cmi
odoc_parser.cmi: odoc_types.cmi
odoc_print.cmi: ../typing/types.cmi
odoc_search.cmi: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_module.cmo \
odoc_exception.cmo odoc_class.cmo
odoc_exception.cmo odoc_class.cmo
odoc_sig.cmi: ../typing/types.cmi ../parsing/parsetree.cmi odoc_types.cmi \
odoc_type.cmo odoc_name.cmi odoc_module.cmo odoc_env.cmi odoc_class.cmo
odoc_type.cmo odoc_name.cmi odoc_module.cmo odoc_env.cmi odoc_class.cmo
odoc_str.cmi: ../typing/types.cmi odoc_value.cmo odoc_type.cmo \
odoc_exception.cmo odoc_class.cmo
odoc_text.cmi: odoc_types.cmi
odoc_text_parser.cmi: odoc_types.cmi
odoc_types.cmi:
odoc_exception.cmo odoc_class.cmo
odoc_text.cmi: odoc_types.cmi
odoc_text_parser.cmi: odoc_types.cmi
odoc_types.cmi:

View File

@ -81,11 +81,11 @@ let _ =
prerr_endline (Odoc_messages.load_file_error file "Not_found");
exit 1
| Sys_error s
| Failure s ->
| Failure s ->
prerr_endline (Odoc_messages.load_file_error file s);
exit 1
let _ = print_DEBUG "Fin du chargement dynamique éventuel"
let _ = print_DEBUG "Fin du chargement dynamique eventuel"
let default_html_generator = new Odoc_html.html
let default_latex_generator = new Odoc_latex.latex

View File

@ -332,7 +332,7 @@ module Analyser =
in
(new_param, func_body2)
| _ ->
print_DEBUG3 "Pas le bon filtre pour le paramètre optionnel avec valeur par défaut.";
print_DEBUG3 "Pas le bon filtre pour le parametre optionnel avec valeur par defaut.";
(parameter, func_body)
)
)
@ -477,7 +477,7 @@ module Analyser =
in
(new_param, body2)
| _ ->
print_DEBUG3 "Pas le bon filtre pour le paramètre optionnel avec valeur par défaut.";
print_DEBUG3 "Pas le bon filtre pour le parametre optionnel avec valeur par defaut.";
(parameter, body)
)
)

View File

@ -18,4 +18,5 @@
# respecting the cpp # line annotation conventions
echo "# 1 \"$1\""
LC_ALL=C sed -e '/DEBUG/s/.*//' "$1"
LC_ALL=C sed -e '/DEBUG/c\
(* DEBUG statement removed *)' "$1"

View File

@ -1,3 +1,5 @@
*.o
*.x
so_locations
*.so
*.a

View File

@ -27,6 +27,6 @@ mmap_win32.o: mmap_win32.c bigarray.h ../../byterun/config.h \
../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/misc.h \
../../byterun/mlvalues.h ../../byterun/sys.h ../../byterun/misc.h \
../unix/unixsupport.h
bigarray.cmi:
bigarray.cmo: bigarray.cmi
bigarray.cmx: bigarray.cmi
bigarray.cmi:
bigarray.cmo: bigarray.cmi
bigarray.cmx: bigarray.cmi

View File

@ -1 +1,3 @@
so_locations
*.so
*.a

View File

@ -1,3 +1,3 @@
dbm.cmi:
dbm.cmo: dbm.cmi
dbm.cmx: dbm.cmi
dbm.cmi:
dbm.cmo: dbm.cmi
dbm.cmx: dbm.cmi

View File

@ -1 +1,2 @@
extract_crc
*.a

View File

@ -1 +1,3 @@
so_locations
*.so
*.a

View File

@ -144,9 +144,9 @@ text.o: text.c libgraph.h \
../../byterun/config.h ../../byterun/alloc.h \
../../byterun/compatibility.h ../../byterun/misc.h \
../../byterun/mlvalues.h
graphics.cmi:
graphicsX11.cmi:
graphics.cmo: graphics.cmi
graphics.cmx: graphics.cmi
graphicsX11.cmo: graphics.cmi graphicsX11.cmi
graphicsX11.cmx: graphics.cmx graphicsX11.cmi
graphics.cmi:
graphicsX11.cmi:
graphics.cmo: graphics.cmi
graphics.cmx: graphics.cmi
graphicsX11.cmo: graphics.cmi graphicsX11.cmi
graphicsX11.cmx: graphics.cmx graphicsX11.cmi

View File

@ -0,0 +1 @@
*.a

View File

@ -0,0 +1 @@
*.a

View File

@ -5,4 +5,4 @@ labltktop labltk mltktop mltk
modules
labltk.cma
labltk.cmxa
*.a

View File

@ -0,0 +1,2 @@
*.so
*.a

View File

@ -1,2 +1,4 @@
gifanimtest
gifanimtest-static
*.so
*.a

View File

@ -1,3 +1,5 @@
libnums.x
*.c.x
so_locations
*.so
*.a

View File

@ -27,24 +27,24 @@ nat_stubs.o: nat_stubs.c ../../byterun/alloc.h \
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
../../byterun/misc.h ../../byterun/mlvalues.h bng.h nat.h
arith_flags.cmi:
arith_status.cmi:
big_int.cmi: nat.cmi
int_misc.cmi:
nat.cmi:
num.cmi: ratio.cmi nat.cmi big_int.cmi
ratio.cmi: nat.cmi big_int.cmi
arith_flags.cmo: arith_flags.cmi
arith_flags.cmx: arith_flags.cmi
arith_status.cmo: arith_flags.cmi arith_status.cmi
arith_status.cmx: arith_flags.cmx arith_status.cmi
big_int.cmo: nat.cmi int_misc.cmi big_int.cmi
big_int.cmx: nat.cmx int_misc.cmx big_int.cmi
int_misc.cmo: int_misc.cmi
int_misc.cmx: int_misc.cmi
nat.cmo: int_misc.cmi nat.cmi
nat.cmx: int_misc.cmx nat.cmi
num.cmo: ratio.cmi nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi num.cmi
num.cmx: ratio.cmx nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx num.cmi
ratio.cmo: nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi ratio.cmi
ratio.cmx: nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx ratio.cmi
arith_flags.cmi:
arith_status.cmi:
big_int.cmi: nat.cmi
int_misc.cmi:
nat.cmi:
num.cmi: ratio.cmi nat.cmi big_int.cmi
ratio.cmi: nat.cmi big_int.cmi
arith_flags.cmo: arith_flags.cmi
arith_flags.cmx: arith_flags.cmi
arith_status.cmo: arith_flags.cmi arith_status.cmi
arith_status.cmx: arith_flags.cmx arith_status.cmi
big_int.cmo: nat.cmi int_misc.cmi big_int.cmi
big_int.cmx: nat.cmx int_misc.cmx big_int.cmi
int_misc.cmo: int_misc.cmi
int_misc.cmx: int_misc.cmi
nat.cmo: int_misc.cmi nat.cmi
nat.cmx: int_misc.cmx nat.cmi
num.cmo: ratio.cmi nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi num.cmi
num.cmx: ratio.cmx nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx num.cmi
ratio.cmo: nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi ratio.cmi
ratio.cmx: nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx ratio.cmi

View File

@ -368,14 +368,24 @@ static uintnat deserialize_nat(void * dst)
#if defined(ARCH_SIXTYFOUR) && defined(ARCH_BIG_ENDIAN)
{ uint32 * p;
mlsize_t i;
for (i = len, p = dst; i > 0; i -= 2, p += 2) {
for (i = len, p = dst; i > 1; i -= 2, p += 2) {
p[1] = deserialize_uint_4(); /* low 32 bits of 64-bit digit */
p[0] = deserialize_uint_4(); /* high 32 bits of 64-bit digit */
}
if (i > 0){
p[1] = deserialize_uint_4(); /* low 32 bits of 64-bit digit */
p[0] = 0; /* high 32 bits of 64-bit digit */
++ len;
}
}
#else
deserialize_block_4(dst, len);
#if defined(ARCH_SIXTYFOUR)
if (len & 1){
((uint32 *) dst)[len] = 0;
++ len;
}
#endif
#endif
return len * 4;
}

View File

@ -1,3 +1,5 @@
libstr.x
*.c.x
so_locations
*.so
*.a

View File

@ -12,6 +12,6 @@ strstubs.o: strstubs.c ../../byterun/mlvalues.h \
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/fail.h \
../../byterun/compatibility.h ../../byterun/misc.h \
../../byterun/mlvalues.h
str.cmi:
str.cmo: str.cmi
str.cmx: str.cmi
str.cmi:
str.cmo: str.cmi
str.cmx: str.cmi

View File

@ -1,3 +1,5 @@
*.x
thread.ml
so_locations
*.so
*.a

View File

@ -22,22 +22,22 @@ posix.o: posix.c ../../byterun/alloc.h ../../byterun/compatibility.h \
../../byterun/mlvalues.h ../../byterun/stacks.h ../../byterun/misc.h \
../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/sys.h \
../../byterun/misc.h
condition.cmi: mutex.cmi
event.cmi:
mutex.cmi:
thread.cmi:
threadUnix.cmi:
condition.cmo: mutex.cmi condition.cmi
condition.cmx: mutex.cmx condition.cmi
event.cmo: mutex.cmi condition.cmi event.cmi
event.cmx: mutex.cmx condition.cmx event.cmi
mutex.cmo: mutex.cmi
mutex.cmx: mutex.cmi
thread.cmo: thread.cmi
thread.cmx: thread.cmi
threadUnix.cmo: thread.cmi threadUnix.cmi
threadUnix.cmx: thread.cmx threadUnix.cmi
thread_posix.cmo:
thread_posix.cmx:
thread_win32.cmo:
thread_win32.cmx:
condition.cmi: mutex.cmi
event.cmi:
mutex.cmi:
thread.cmi:
threadUnix.cmi:
condition.cmo: mutex.cmi condition.cmi
condition.cmx: mutex.cmx condition.cmi
event.cmo: mutex.cmi condition.cmi event.cmi
event.cmx: mutex.cmx condition.cmx event.cmi
mutex.cmo: mutex.cmi
mutex.cmx: mutex.cmi
thread.cmo: thread.cmi
thread.cmx: thread.cmi
threadUnix.cmo: thread.cmi threadUnix.cmi
threadUnix.cmx: thread.cmx threadUnix.cmi
thread_posix.cmo:
thread_posix.cmx:
thread_win32.cmo:
thread_win32.cmx:

View File

@ -1,3 +1,5 @@
marshal.mli
pervasives.mli
unix.mli
*.so
*.a

View File

@ -21,24 +21,24 @@ scheduler.o: scheduler.c ../../byterun/alloc.h \
../../byterun/mlvalues.h ../../byterun/stacks.h ../../byterun/misc.h \
../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/sys.h \
../../byterun/misc.h
condition.cmi: mutex.cmi
event.cmi:
mutex.cmi:
thread.cmi: unix.cmo
threadUnix.cmi: unix.cmo
condition.cmo: thread.cmi mutex.cmi condition.cmi
condition.cmx: thread.cmx mutex.cmx condition.cmi
event.cmo: mutex.cmi condition.cmi event.cmi
event.cmx: mutex.cmx condition.cmx event.cmi
marshal.cmo: pervasives.cmo
marshal.cmx: pervasives.cmx
mutex.cmo: thread.cmi mutex.cmi
mutex.cmx: thread.cmx mutex.cmi
pervasives.cmo: unix.cmo
pervasives.cmx: unix.cmx
thread.cmo: unix.cmo thread.cmi
thread.cmx: unix.cmx thread.cmi
threadUnix.cmo: unix.cmo thread.cmi threadUnix.cmi
threadUnix.cmx: unix.cmx thread.cmx threadUnix.cmi
unix.cmo:
unix.cmx:
condition.cmi: mutex.cmi
event.cmi:
mutex.cmi:
thread.cmi: unix.cmo
threadUnix.cmi: unix.cmo
condition.cmo: thread.cmi mutex.cmi condition.cmi
condition.cmx: thread.cmx mutex.cmx condition.cmi
event.cmo: mutex.cmi condition.cmi event.cmi
event.cmx: mutex.cmx condition.cmx event.cmi
marshal.cmo: pervasives.cmo
marshal.cmx: pervasives.cmx
mutex.cmo: thread.cmi mutex.cmi
mutex.cmx: thread.cmx mutex.cmi
pervasives.cmo: unix.cmo
pervasives.cmx: unix.cmx
thread.cmo: unix.cmo thread.cmi
thread.cmx: unix.cmx thread.cmi
threadUnix.cmo: unix.cmo thread.cmi threadUnix.cmi
threadUnix.cmx: unix.cmx thread.cmx threadUnix.cmi
unix.cmo:
unix.cmx:

Some files were not shown because too many files have changed in this diff Show More