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-0dff7051ff02master
parent
8cd4fc6390
commit
bdc0fadee2
57
Changes
57
Changes
|
@ -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
15
INSTALL
|
@ -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
|
||||
|
||||
|
|
9
Makefile
9
Makefile
|
@ -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
|
||||
|
|
29
README.win32
29
README.win32
|
@ -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
|
||||
|
|
2
VERSION
2
VERSION
|
@ -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
2
_tags
|
@ -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
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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 *)
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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 ->
|
||||
|
|
|
@ -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#
|
||||
|
||||
|
|
|
@ -4,3 +4,4 @@ ocamlyacc
|
|||
camlheader
|
||||
myocamlbuild
|
||||
myocamlbuild.native
|
||||
libcamlrun.a
|
||||
|
|
BIN
boot/ocamlc
BIN
boot/ocamlc
Binary file not shown.
BIN
boot/ocamldep
BIN
boot/ocamldep
Binary file not shown.
BIN
boot/ocamllex
BIN
boot/ocamllex
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";;/' \
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 *)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -15,3 +15,5 @@ interp.a.lst
|
|||
*.[sd]obj
|
||||
*.lib
|
||||
.gdb_history
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:'
|
||||
|
|
|
@ -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";;
|
||||
|
|
242
debugger/.depend
242
debugger/.depend
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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. *)
|
||||
|
|
|
@ -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. *)
|
||||
|
|
|
@ -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 ^ ".")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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\
|
||||
|
|
|
@ -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\
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
|
64
lex/.depend
64
lex/.depend
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");;
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 []
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -14,3 +14,4 @@ stdlib_man
|
|||
test_stdlib
|
||||
test_latex
|
||||
test
|
||||
*.a
|
||||
|
|
228
ocamldoc/.depend
228
ocamldoc/.depend
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
*.o
|
||||
*.x
|
||||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
dbm.cmi:
|
||||
dbm.cmo: dbm.cmi
|
||||
dbm.cmx: dbm.cmi
|
||||
dbm.cmi:
|
||||
dbm.cmo: dbm.cmi
|
||||
dbm.cmx: dbm.cmi
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
extract_crc
|
||||
*.a
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
*.a
|
|
@ -0,0 +1 @@
|
|||
*.a
|
|
@ -5,4 +5,4 @@ labltktop labltk mltktop mltk
|
|||
modules
|
||||
labltk.cma
|
||||
labltk.cmxa
|
||||
|
||||
*.a
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
*.so
|
||||
*.a
|
|
@ -1,2 +1,4 @@
|
|||
gifanimtest
|
||||
gifanimtest-static
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
libnums.x
|
||||
*.c.x
|
||||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
libstr.x
|
||||
*.c.x
|
||||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
*.x
|
||||
thread.ml
|
||||
so_locations
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
marshal.mli
|
||||
pervasives.mli
|
||||
unix.mli
|
||||
*.so
|
||||
*.a
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue