summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Maranget <luc.maranget@inria.fr>2012-08-09 12:54:45 +0000
committerLuc Maranget <luc.maranget@inria.fr>2012-08-09 12:54:45 +0000
commit6f6d58433da8a9c810e7dc5d3d17ff0f7739a19c (patch)
tree7e84a1c03bf69db4efabe938c993663628f722cf
parent66c4ae32109b6d0ef1acdd73ecb753e167750641 (diff)
downloadocaml-6f6d58433da8a9c810e7dc5d3d17ff0f7739a19c.tar.gz
Merge jo312 11009 -> 11115 [last commit in jo312]
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/jocamltrunk@12845 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--.depend36
-rw-r--r--Changes96
-rw-r--r--Changes_JoCaml5
-rw-r--r--LICENSE5
-rw-r--r--Makefile1
-rw-r--r--README_OCAML4
-rw-r--r--VERSION2
-rw-r--r--asmcomp/amd64/emit.mlp15
-rw-r--r--asmcomp/amd64/emit_nt.mlp17
-rw-r--r--asmcomp/asmlink.ml2
-rw-r--r--asmcomp/closure.ml2
-rw-r--r--asmcomp/cmmgen.ml50
-rw-r--r--asmcomp/comballoc.ml2
-rw-r--r--asmcomp/i386/emit_nt.mlp2
-rw-r--r--asmcomp/selectgen.ml14
-rw-r--r--asmrun/.depend699
-rw-r--r--asmrun/amd64.S64
-rw-r--r--asmrun/amd64nt.asm64
-rwxr-xr-xboot/ocamlcbin1175571 -> 1179258 bytes
-rwxr-xr-xboot/ocamldepbin313804 -> 314856 bytes
-rwxr-xr-xboot/ocamllexbin170094 -> 170267 bytes
-rwxr-xr-xbuild/boot.sh2
-rw-r--r--build/camlp4-bootstrap-recipe.txt3
-rwxr-xr-xbuild/camlp4-byte-only.sh3
-rwxr-xr-xbuild/camlp4-native-only.sh3
-rwxr-xr-xbuild/fastworld.sh7
-rwxr-xr-xbuild/install.sh2
-rwxr-xr-xbuild/ocamlbuild-byte-only.sh3
-rwxr-xr-xbuild/ocamlbuild-native-only.sh3
-rwxr-xr-xbuild/ocamlbuildlib-native-only.sh3
-rw-r--r--build/otherlibs-targets.sh3
-rw-r--r--build/targets.sh3
-rwxr-xr-xbuild/world.sh3
-rw-r--r--bytecomp/bytegen.ml10
-rw-r--r--bytecomp/bytelink.ml40
-rw-r--r--bytecomp/bytepackager.ml32
-rw-r--r--bytecomp/lambda.ml12
-rw-r--r--bytecomp/lambda.mli2
-rw-r--r--bytecomp/printlambda.ml2
-rw-r--r--bytecomp/simplif.ml96
-rw-r--r--bytecomp/simplif.mli9
-rw-r--r--bytecomp/translclass.ml10
-rw-r--r--bytecomp/translcore.ml20
-rw-r--r--byterun/compare.c63
-rw-r--r--byterun/custom.h2
-rw-r--r--byterun/fail.c13
-rw-r--r--byterun/gc_ctrl.c7
-rw-r--r--byterun/ints.c2
-rw-r--r--byterun/major_gc.h2
-rw-r--r--byterun/stacks.c2
-rw-r--r--byterun/startup.c2
-rw-r--r--byterun/sys.c8
-rw-r--r--config/auto-aux/expm1.c26
-rwxr-xr-xconfigure11
-rw-r--r--emacs/Makefile6
-rw-r--r--emacs/caml-emacs.el3
-rw-r--r--emacs/caml-font.el2
-rw-r--r--emacs/caml-types.el49
-rw-r--r--emacs/caml-xemacs.el4
-rw-r--r--emacs/caml.el11
-rw-r--r--emacs/camldebug.el20
-rw-r--r--emacs/inf-caml.el10
-rw-r--r--lex/output.ml4
-rw-r--r--lex/outputbis.ml58
-rw-r--r--man/ocamldep.m58
-rw-r--r--ocamldoc/Makefile2
-rw-r--r--ocamldoc/odoc_args.ml115
-rw-r--r--ocamldoc/odoc_args.mli155
-rw-r--r--ocamldoc/odoc_html.ml28
-rw-r--r--ocamldoc/odoc_info.mli103
-rw-r--r--ocamldoc/odoc_latex_style.ml134
-rw-r--r--ocamldoc/odoc_merge.ml20
-rw-r--r--ocamldoc/odoc_messages.ml13
-rw-r--r--ocamldoc/odoc_types.ml2
-rw-r--r--ocamldoc/odoc_types.mli1
-rw-r--r--otherlibs/bigarray/bigarray_stubs.c5
-rw-r--r--otherlibs/bigarray/mmap_unix.c3
-rw-r--r--otherlibs/bigarray/mmap_win32.c4
-rw-r--r--otherlibs/db/.depend2
-rw-r--r--otherlibs/join/joinTextProc.ml21
-rw-r--r--otherlibs/join/joinTextProc.mli4
-rw-r--r--otherlibs/labltk/browser/shell.ml2
-rw-r--r--otherlibs/num/big_int.ml4
-rw-r--r--otherlibs/systhreads/Makefile2
-rw-r--r--otherlibs/systhreads/st_stubs.c5
-rw-r--r--otherlibs/systhreads/thread.ml14
-rw-r--r--otherlibs/threads/.depend45
-rw-r--r--otherlibs/threads/Makefile2
-rw-r--r--otherlibs/unix/.depend3
-rw-r--r--otherlibs/unix/lseek.c1
-rw-r--r--otherlibs/win32unix/channels.c1
-rw-r--r--otherlibs/win32unix/close.c17
-rw-r--r--parsing/parser.mly2
-rw-r--r--stdlib/arg.ml8
-rw-r--r--stdlib/arg.mli18
-rw-r--r--stdlib/camlheaderd2
-rw-r--r--stdlib/filename.mli2
-rw-r--r--stdlib/format.mli4
-rw-r--r--stdlib/parsing.ml2
-rw-r--r--stdlib/pervasives.mli15
-rw-r--r--stdlib/printf.ml14
-rw-r--r--stdlib/printf.mli6
-rw-r--r--stdlib/scanf.mli2
-rw-r--r--stdlib/string.ml2
-rw-r--r--stdlib/sys.mli2
-rw-r--r--test/.cvsignore2
-rw-r--r--test/.depend28
-rw-r--r--test/test_bng.c408
-rw-r--r--testsuite/interactive/lib-gc/alloc.ml2
-rw-r--r--testsuite/lib/testing.ml2
-rw-r--r--testsuite/lib/testing.mli2
-rw-r--r--testsuite/tests/asmcomp/alpha.S2
-rw-r--r--testsuite/tests/asmcomp/amd64.S2
-rw-r--r--testsuite/tests/asmcomp/arith.cmm2
-rw-r--r--testsuite/tests/asmcomp/arm.S2
-rw-r--r--testsuite/tests/asmcomp/checkbound.cmm2
-rw-r--r--testsuite/tests/asmcomp/fib.cmm2
-rw-r--r--testsuite/tests/asmcomp/hppa.S2
-rw-r--r--testsuite/tests/asmcomp/i386.S2
-rw-r--r--testsuite/tests/asmcomp/i386nt.asm2
-rw-r--r--testsuite/tests/asmcomp/ia64.S2
-rw-r--r--testsuite/tests/asmcomp/integr.cmm2
-rw-r--r--testsuite/tests/asmcomp/lexcmm.mli2
-rw-r--r--testsuite/tests/asmcomp/lexcmm.mll2
-rw-r--r--testsuite/tests/asmcomp/m68k.S2
-rw-r--r--testsuite/tests/asmcomp/main.c2
-rw-r--r--testsuite/tests/asmcomp/main.ml2
-rw-r--r--testsuite/tests/asmcomp/mainarith.c2
-rw-r--r--testsuite/tests/asmcomp/mips.s2
-rw-r--r--testsuite/tests/asmcomp/parsecmm.mly2
-rw-r--r--testsuite/tests/asmcomp/parsecmmaux.ml2
-rw-r--r--testsuite/tests/asmcomp/parsecmmaux.mli2
-rw-r--r--testsuite/tests/asmcomp/power-aix.S2
-rw-r--r--testsuite/tests/asmcomp/power-elf.S2
-rw-r--r--testsuite/tests/asmcomp/power-rhapsody.S2
-rw-r--r--testsuite/tests/asmcomp/quicksort.cmm2
-rw-r--r--testsuite/tests/asmcomp/quicksort2.cmm2
-rw-r--r--testsuite/tests/asmcomp/soli.cmm2
-rw-r--r--testsuite/tests/asmcomp/sparc.S2
-rw-r--r--testsuite/tests/asmcomp/tagged-fib.cmm2
-rw-r--r--testsuite/tests/asmcomp/tagged-integr.cmm2
-rw-r--r--testsuite/tests/asmcomp/tagged-quicksort.cmm2
-rw-r--r--testsuite/tests/asmcomp/tagged-tak.cmm2
-rw-r--r--testsuite/tests/asmcomp/tak.cmm2
-rw-r--r--testsuite/tests/basic-more/tformat.ml2
-rw-r--r--testsuite/tests/basic-private/length.ml2
-rw-r--r--testsuite/tests/basic-private/length.mli2
-rw-r--r--testsuite/tests/basic-private/tlength.ml2
-rw-r--r--testsuite/tests/basic/maps.ml2
-rw-r--r--testsuite/tests/basic/sets.ml2
-rwxr-xr-xtestsuite/tests/embedded/.svnignore10
-rwxr-xr-xtestsuite/tests/gc-roots/.svnignore10
-rw-r--r--testsuite/tests/lib-bigarray/fftba.ml2
-rw-r--r--testsuite/tests/lib-bigarray/pr5115.ml13
-rw-r--r--testsuite/tests/lib-bigarray/pr5115.reference2
-rwxr-xr-xtestsuite/tests/lib-digest/.svnignore10
-rw-r--r--testsuite/tests/lib-dynlink-bytecode/.svnignore13
-rw-r--r--testsuite/tests/lib-dynlink-native/.svnignore12
-rw-r--r--testsuite/tests/lib-scanf/tscanf.ml2
-rw-r--r--testsuite/tests/misc-kb/equations.ml2
-rw-r--r--testsuite/tests/misc-kb/equations.mli2
-rw-r--r--testsuite/tests/misc-kb/kb.ml2
-rw-r--r--testsuite/tests/misc-kb/kb.mli2
-rw-r--r--testsuite/tests/misc-kb/kbmain.ml2
-rw-r--r--testsuite/tests/misc-kb/orderings.ml2
-rw-r--r--testsuite/tests/misc-kb/orderings.mli2
-rw-r--r--testsuite/tests/misc-kb/terms.ml2
-rw-r--r--testsuite/tests/misc-kb/terms.mli2
-rw-r--r--testsuite/tests/misc-unsafe/fft.ml2
-rw-r--r--testsuite/tests/misc-unsafe/quicksort.ml2
-rw-r--r--testsuite/tests/misc-unsafe/soli.ml2
-rw-r--r--testsuite/tests/misc/bdd.ml2
-rw-r--r--testsuite/tests/misc/boyer.ml2
-rw-r--r--testsuite/tests/misc/fib.ml2
-rw-r--r--testsuite/tests/misc/hamming.ml2
-rw-r--r--testsuite/tests/misc/nucleic.ml2
-rw-r--r--testsuite/tests/misc/sieve.ml2
-rw-r--r--testsuite/tests/misc/sorts.ml2
-rw-r--r--testsuite/tests/misc/takc.ml2
-rw-r--r--testsuite/tests/misc/taku.ml2
-rw-r--r--testsuite/tests/misc/weaktest.ml2
-rw-r--r--testsuite/tests/regression-camlp4-class-type-plus/Makefile5
-rw-r--r--testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml9
-rw-r--r--testsuite/tests/regression-pr5080-notes/Makefile5
-rw-r--r--testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml4
-rw-r--r--testsuite/tests/tool-lexyacc/.svnignore15
-rw-r--r--testsuite/tests/tool-lexyacc/gram_aux.ml2
-rw-r--r--testsuite/tests/tool-lexyacc/grammar.mly2
-rw-r--r--testsuite/tests/tool-lexyacc/input2
-rw-r--r--testsuite/tests/tool-lexyacc/lexgen.ml2
-rw-r--r--testsuite/tests/tool-lexyacc/main.ml2
-rw-r--r--testsuite/tests/tool-lexyacc/output.ml2
-rw-r--r--testsuite/tests/tool-lexyacc/scan_aux.ml2
-rw-r--r--testsuite/tests/tool-lexyacc/scanner.mll2
-rw-r--r--testsuite/tests/tool-lexyacc/syntax.ml2
-rw-r--r--testsuite/tests/tool-ocaml/lib.ml4
-rw-r--r--testsuite/tests/tool-ocaml/t301-object.ml4
-rw-r--r--testsuite/tests/tool-ocamldoc/odoc_test.ml2
-rwxr-xr-xtestsuite/tests/typing-fstclassmod/.svnignore10
-rwxr-xr-xtestsuite/tests/typing-labels/.svnignore10
-rw-r--r--testsuite/tests/typing-labels/mixin.ml2
-rw-r--r--testsuite/tests/typing-labels/mixin2.ml2
-rw-r--r--testsuite/tests/typing-labels/mixin3.ml2
-rw-r--r--testsuite/tests/typing-modules-bugs/Makefile2
-rw-r--r--testsuite/tests/typing-modules-bugs/pr5164_ok.ml9
-rw-r--r--testsuite/tests/typing-modules/Makefile3
-rw-r--r--testsuite/tests/typing-modules/Test.ml5
-rw-r--r--testsuite/tests/typing-modules/Test.ml.reference6
-rw-r--r--testsuite/tests/typing-objects-bugs/pr5156_ok.ml10
-rwxr-xr-xtestsuite/tests/typing-objects/.svnignore10
-rwxr-xr-xtestsuite/tests/typing-poly/.svnignore10
-rw-r--r--testsuite/tests/typing-poly/poly.ml2
-rwxr-xr-xtestsuite/tests/typing-private/.svnignore10
-rwxr-xr-xtestsuite/tests/typing-typeparam/.svnignore10
-rw-r--r--tools/Makefile.shared8
-rw-r--r--tools/ocamldep.ml43
-rw-r--r--tools/ocamlmklib.mlp111
-rwxr-xr-xtools/remove_DEBUG22
-rw-r--r--typing/ctype.ml19
-rw-r--r--typing/ctype.mli1
-rw-r--r--typing/env.ml2
-rw-r--r--typing/oprint.ml2
-rw-r--r--typing/printtyp.ml4
-rw-r--r--typing/typeclass.ml6
-rw-r--r--typing/typedecl.ml8
-rw-r--r--typing/typedecl.mli2
-rw-r--r--typing/typemod.ml23
-rw-r--r--typing/unused_var.ml2
228 files changed, 2422 insertions, 1141 deletions
diff --git a/.depend b/.depend
index fed6efb287..30f02e840d 100644
--- a/.depend
+++ b/.depend
@@ -343,13 +343,13 @@ bytecomp/translobj.cmi: bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi
bytecomp/typeopt.cmi: typing/types.cmi typing/typedtree.cmi typing/path.cmi \
bytecomp/lambda.cmi typing/env.cmi
bytecomp/bytegen.cmo: typing/types.cmi bytecomp/switch.cmi typing/subst.cmi \
- typing/stypes.cmi typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \
+ typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi \
bytecomp/instruct.cmi typing/ident.cmi utils/config.cmi \
- parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi
+ parsing/asttypes.cmi bytecomp/bytegen.cmi
bytecomp/bytegen.cmx: typing/types.cmx bytecomp/switch.cmx typing/subst.cmx \
- typing/stypes.cmx typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \
+ typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \
bytecomp/instruct.cmx typing/ident.cmx utils/config.cmx \
- parsing/asttypes.cmi typing/annot.cmi bytecomp/bytegen.cmi
+ parsing/asttypes.cmi bytecomp/bytegen.cmi
bytecomp/bytelibrarian.cmo: utils/misc.cmi utils/config.cmi \
bytecomp/cmo_format.cmi utils/clflags.cmi bytecomp/bytelink.cmi \
bytecomp/bytelibrarian.cmi
@@ -432,10 +432,12 @@ bytecomp/printlambda.cmx: typing/types.cmx typing/primitive.cmx \
parsing/asttypes.cmi bytecomp/printlambda.cmi
bytecomp/runtimedef.cmo: bytecomp/runtimedef.cmi
bytecomp/runtimedef.cmx: bytecomp/runtimedef.cmi
-bytecomp/simplif.cmo: bytecomp/lambda.cmi typing/ident.cmi utils/clflags.cmi \
- parsing/asttypes.cmi bytecomp/simplif.cmi
-bytecomp/simplif.cmx: bytecomp/lambda.cmx typing/ident.cmx utils/clflags.cmx \
- parsing/asttypes.cmi bytecomp/simplif.cmi
+bytecomp/simplif.cmo: typing/stypes.cmi bytecomp/lambda.cmi typing/ident.cmi \
+ utils/clflags.cmi parsing/asttypes.cmi typing/annot.cmi \
+ bytecomp/simplif.cmi
+bytecomp/simplif.cmx: typing/stypes.cmx bytecomp/lambda.cmx typing/ident.cmx \
+ utils/clflags.cmx parsing/asttypes.cmi typing/annot.cmi \
+ bytecomp/simplif.cmi
bytecomp/switch.cmo: bytecomp/switch.cmi
bytecomp/switch.cmx: bytecomp/switch.cmi
bytecomp/symtable.cmo: utils/tbl.cmi bytecomp/runtimedef.cmi \
@@ -641,9 +643,9 @@ asmcomp/codegen.cmx: asmcomp/split.cmx asmcomp/spill.cmx asmcomp/reload.cmx \
asmcomp/coloring.cmo: asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/coloring.cmi
asmcomp/coloring.cmx: asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/coloring.cmi
asmcomp/comballoc.cmo: asmcomp/reg.cmi asmcomp/mach.cmi utils/config.cmi \
- asmcomp/comballoc.cmi
+ asmcomp/arch.cmo asmcomp/comballoc.cmi
asmcomp/comballoc.cmx: asmcomp/reg.cmx asmcomp/mach.cmx utils/config.cmx \
- asmcomp/comballoc.cmi
+ asmcomp/arch.cmx asmcomp/comballoc.cmi
asmcomp/compilenv.cmo: utils/misc.cmi bytecomp/lambda.cmi typing/ident.cmi \
typing/env.cmi utils/config.cmi asmcomp/cmx_format.cmi \
asmcomp/clambda.cmi asmcomp/compilenv.cmi
@@ -724,12 +726,14 @@ asmcomp/schedgen.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
asmcomp/schedgen.cmi
asmcomp/scheduling.cmo: asmcomp/schedgen.cmi asmcomp/scheduling.cmi
asmcomp/scheduling.cmx: asmcomp/schedgen.cmx asmcomp/scheduling.cmi
-asmcomp/selectgen.cmo: utils/tbl.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
- utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi asmcomp/debuginfo.cmi \
- asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/selectgen.cmi
-asmcomp/selectgen.cmx: utils/tbl.cmx asmcomp/reg.cmx asmcomp/proc.cmx \
- utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx asmcomp/debuginfo.cmx \
- asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/selectgen.cmi
+asmcomp/selectgen.cmo: utils/tbl.cmi bytecomp/simplif.cmi asmcomp/reg.cmi \
+ asmcomp/proc.cmi utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi \
+ asmcomp/debuginfo.cmi asmcomp/cmm.cmi asmcomp/arch.cmo \
+ asmcomp/selectgen.cmi
+asmcomp/selectgen.cmx: utils/tbl.cmx bytecomp/simplif.cmx asmcomp/reg.cmx \
+ asmcomp/proc.cmx utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx \
+ asmcomp/debuginfo.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \
+ asmcomp/selectgen.cmi
asmcomp/selection.cmo: asmcomp/selectgen.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
utils/misc.cmi asmcomp/mach.cmi asmcomp/debuginfo.cmi asmcomp/cmm.cmi \
utils/clflags.cmi asmcomp/arch.cmo asmcomp/selection.cmi
diff --git a/Changes b/Changes
index 91480f0d5e..f75cca9733 100644
--- a/Changes
+++ b/Changes
@@ -1,7 +1,99 @@
-Objective Caml 3.13.0:
+Objective Caml 3.12.1:
----------------------
-- Warning 28 is now enabled by default.
+Bug fixes:
+- PR#4345, PR#4767: problems with camlp4 printing of float values
+- PR#4380: ocamlbuild should not use tput on windows
+- PR#4487, PR#5164: multiple 'module type of' are incompatible
+- PR#4552: ocamlbuild does not create symlinks when using '.itarget' file
+- PR#4673, PR#5144: camlp4 fails on object copy syntax
+- PR#4702: system threads: cleanup tick thread at exit
+- PR#4732: camlp4 rejects polymorphic variants using keywords from macros
+- PR#4778: Win32/MSVC port: rare syntax error in generated MASM assembly file
+- PR#4794, PR#4959: call annotations not generated by ocamlopt
+- PR#4820: revised syntax pretty printer crashes with 'Stack_overflow'
+- PR#4928: wrong printing of classes and class types by camlp4
+- PR#4939: camlp4 rejects patterns of the '?x:_' form
+- PR#4967: ocamlbuild passes wrong switches to ocamldep through menhir
+- PR#4972: mkcamlp4 does not include 'dynlink.cma'
+- PR#5039: ocamlbuild should use '-linkpkg' only when linking programs
+- PR#5066: ocamldoc: add -charset option used in html generator
+- PR#5069: fcntl() in caml_sys_open may block, do it within blocking section
+- PR#5071, PR#5129, PR#5134: inconsistencies between camlp4 and camlp4* binaries
+- PR#5080, PR#5104: regression in type constructor handling by camlp4
+- PR#5090: bad interaction between toplevel and camlp4
+- PR#5095: ocamlbuild ignores some tags when building bytecode objects
+- PR#5100: ocamlbuild always rebuilds a 'cmxs' file
+- PR#5103: build and install objinfo when building with ocamlbuild
+- PR#5109: crash when a parser calls a lexer that calls another parser
+- PR#5110: invalid module name when using optional argument
+- PR#5115: bytecode executables produced by msvc64 port crash on 32-bit versions
+- PR#5117: bigarray: wrong function name without HAS_MMAP; missing include
+- PR#5118: Camlp4o and integer literals
+- PR#5122: camlp4 rejects lowercase identifiers for module types
+- PR#5123: shift_right_big_int returns a wrong zero
+- PR#5124: substitution inside a signature leads to odd printing
+- PR#5128: typo in 'Camlp4ListComprehension' syntax extension
+- PR#5136: obsolete function used in emacs mode
+- PR#5145: ocamldoc: missing html escapes
+- PR#5146: problem with spaces in multi-line string constants
+- PR#5149: (partial) various documentation problems
+- PR#5156: rare compiler crash with objects
+- PR#5165: ocamlbuild does not pass '-thread' option to ocamlfind
+- PR#5167: camlp4r loops when printing package type
+- PR#5172: camlp4 support for 'module type of' construct
+- PR#5175: in bigarray accesses, make sure bigarray expr is evaluated only once
+- PR#5177: Gc.compact implies Gc.full_major
+- PR#5182: use bytecode version of ocamldoc to generate man pages
+- PR#5184: under Windows, alignment issue with bigarrays mapped from files
+- PR#5188: double-free corruption in bytecode system threads
+- PR#5192: mismatch between words and bytes in interpreting max_young_wosize
+- PR#5202: error in documentation of atan2
+- PR#5209: natdynlink incorrectly detected on BSD systems
+- PR#5213: ocamlbuild should pass '-rectypes' to ocamldoc when needed
+- PR#5217: ocamlfind plugin should add '-linkpkg' for toplevel
+- PR#5228: document the exceptions raised by functions in 'Filename'
+- PR#5229: typo in build script ('TAG_LINE' vs 'TAGLINE')
+- PR#5230: error in documentation of Scanf.Scanning.open_in
+- PR#5234: option -shared reverses order of -cclib options
+- PR#5237: incorrect .size directives generated for x86-32 and x86-64
+- PR#5244: String.compare uses polymorphic compare_val (regression of PR#4194)
+- PR#5248: regression introduced while fixing PR#5118
+- PR#5252: typo in docs
+- PR#5258: win32unix: unix fd leak under windows
+- PR#5269: (tentative fix) Wrong ext_ref entries in .annot files
+- PR#5272: caml.el doesn't recognize downto as a keyword
+- PR#5276: issue with ocamlc -pack and recursively-packed modules
+- PR#5280: alignment constraints incorrectly autodetected on MIPS 32
+- PR#5281: typo in error message
+- PR#5308: unused variables not detected in "include (struct .. end)"
+- camlp4 revised syntax printing bug in the toplevel (reported on caml-list)
+- configure: do not define _WIN32 under cygwin
+- Hardened generic comparison in the case where two custom blocks
+ are compared and have different sets of custom operations.
+- Hardened comparison between bigarrays in the case where the two
+ bigarrays have different kinds.
+- Fixed wrong autodetection of expm1() and log1p().
+- don't add .exe suffix when installing the ocamlmktop shell script
+- ocamldoc: minor fixes related to the display of ocamldoc options
+- fixed bug with huge values in OCAMLRUNPARAM
+- mismatch between declaration and definition of caml_major_collection_slice
+
+Feature wishes:
+- PR#4992: added '-ml-synonym' and '-mli-synonym' options to ocamldep
+- PR#5065: added '-ocamldoc' option to ocamlbuild
+- PR#5139: added possibility to add options to ocamlbuild
+- PR#5158: added access to current camlp4 parsers and printers
+- PR#5180: improved instruction selection for float operations on amd64
+- stdlib: added a 'usage_string' function to Arg
+- allow with constraints to add a type equation to a datatype definition
+- ocamldoc: allow to merge '@before' tags like other ones
+- ocamlbuild: allow dependency on file "_oasis"
+
+Other changes:
+- Changed default minor heap size from 32k to 256k words.
+- Added new operation 'compare_ext' to custom blocks, called when
+ comparing a custom block value with an unboxed integer.
Objective Caml 3.12.0:
diff --git a/Changes_JoCaml b/Changes_JoCaml
index c0cd8815b7..2ef2d4587d 100644
--- a/Changes_JoCaml
+++ b/Changes_JoCaml
@@ -1,7 +1,10 @@
+JoCaml 3.12.1
+-------------
+- Follow ocaml release.
- JoinPool bug: nagain was decremented twice!
JoCaml 3.12.0
-
+-------------
- Corrected bug in typing : arguments of join-patterns must
get unified, channel per channel, before compiling algebraic
patterns in join-patterns. Reason: the compilation assumes
diff --git a/LICENSE b/LICENSE
index cecc326ccf..29b5c8503b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -6,8 +6,9 @@ INRIA" in the following directories and their sub-directories:
and "the Compiler" refers to all files marked "Copyright INRIA" in the
following directories and their sub-directories:
- asmcomp, boot, bytecomp, debugger, driver, lex, ocamldoc, parsing,
- tools, toplevel, typing, utils, yacc
+ asmcomp, boot, build, bytecomp, debugger, driver, lex, man,
+ ocamlbuild, ocamldoc, parsing, testsuite, tools, toplevel, typing,
+ utils, yacc
The Compiler is distributed under the terms of the Q Public License
version 1.0 with a change to choice of law (included below).
diff --git a/Makefile b/Makefile
index 4a7a0a078c..e2a3c47763 100644
--- a/Makefile
+++ b/Makefile
@@ -273,7 +273,6 @@ base.opt: checkstack runtime core ocaml opt-core ocamlc.opt otherlibraries \
ocamlbuild.byte camlp4out $(DEBUGGER) ocamldoc ocamlopt.opt \
otherlibrariesopt
-
# Installation
install:
if test -d $(BINDIR); then : ; else $(MKDIR) $(BINDIR); fi
diff --git a/README_OCAML b/README_OCAML
index e82420df26..5933521d4f 100644
--- a/README_OCAML
+++ b/README_OCAML
@@ -21,7 +21,7 @@ native-code compiler currently runs on the following platforms:
Tier 1 (actively used and maintained by the core Caml team):
- AMD64 (Opteron) Linux
+ AMD64 (Opteron) Linux, MacOS X, MS Windows
IA32 (Pentium) Linux, FreeBSD, MacOS X, MS Windows
PowerPC MacOS X
@@ -84,7 +84,7 @@ All files marked "Copyright INRIA" in this distribution are copyright
INSTALLATION:
-See the file INSTALL for installation instructions on Unix, Linux and
+See the file INSTALL for installation instructions on Unix, Linux and
MacOS X machines. For MS Windows, see README.win32.
DOCUMENTATION:
diff --git a/VERSION b/VERSION
index 55bb3d111e..1e51987ca4 100644
--- a/VERSION
+++ b/VERSION
@@ -1,4 +1,4 @@
-3.13.0+dev3 (2011-03-07)
+3.99.0+dev (2012-08-09)
# The version string is the first line of this file.
# It must be in the format described in stdlib/sys.mli
diff --git a/asmcomp/amd64/emit.mlp b/asmcomp/amd64/emit.mlp
index 40f95a2855..a33a0fa9cd 100644
--- a/asmcomp/amd64/emit.mlp
+++ b/asmcomp/amd64/emit.mlp
@@ -338,9 +338,12 @@ let emit_instr fallthrough i =
| Lop(Imove | Ispill | Ireload) ->
let src = i.arg.(0) and dst = i.res.(0) in
if src.loc <> dst.loc then begin
- if src.typ = Float then
- ` movsd {emit_reg src}, {emit_reg dst}\n`
- else
+ match src.typ, src.loc, dst.loc with
+ Float, Reg _, Reg _ ->
+ ` movapd {emit_reg src}, {emit_reg dst}\n`
+ | Float, _, _ ->
+ ` movsd {emit_reg src}, {emit_reg dst}\n`
+ | _ ->
` movq {emit_reg src}, {emit_reg dst}\n`
end
| Lop(Iconst_int n) ->
@@ -359,7 +362,7 @@ let emit_instr fallthrough i =
| _ ->
let lbl = new_label() in
float_constants := (lbl, s) :: !float_constants;
- ` movlpd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n`
+ ` movsd {emit_label lbl}(%rip), {emit_reg i.res.(0)}\n`
end
| Lop(Iconst_symbol s) ->
` {load_symbol_addr s}, {emit_reg i.res.(0)}\n`
@@ -412,7 +415,7 @@ let emit_instr fallthrough i =
| Single ->
` cvtss2sd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
| Double | Double_u ->
- ` movlpd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
+ ` movsd {emit_addressing addr i.arg 0}, {emit_reg dest}\n`
end
| Lop(Istore(chunk, addr)) ->
begin match chunk with
@@ -428,7 +431,7 @@ let emit_instr fallthrough i =
` cvtsd2ss {emit_reg i.arg.(0)}, %xmm15\n`;
` movss %xmm15, {emit_addressing addr i.arg 1}\n`
| Double | Double_u ->
- ` movlpd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n`
+ ` movsd {emit_reg i.arg.(0)}, {emit_addressing addr i.arg 1}\n`
end
| Lop(Ialloc n) ->
if !fastcode_flag then begin
diff --git a/asmcomp/amd64/emit_nt.mlp b/asmcomp/amd64/emit_nt.mlp
index 3374f4d36b..724d6ee016 100644
--- a/asmcomp/amd64/emit_nt.mlp
+++ b/asmcomp/amd64/emit_nt.mlp
@@ -332,10 +332,13 @@ let emit_instr fallthrough i =
| Lop(Imove | Ispill | Ireload) ->
let src = i.arg.(0) and dst = i.res.(0) in
if src.loc <> dst.loc then begin
- if src.typ = Float then
- ` movsd {emit_reg dst}, {emit_reg src}\n`
- else
- ` mov {emit_reg dst}, {emit_reg src}\n`
+ match src.typ, src.loc, dst.loc with
+ Float, Reg _, Reg _ ->
+ ` movapd {emit_reg dst}, {emit_reg src}\n`
+ | Float, _, _ ->
+ ` movsd {emit_reg dst}, {emit_reg src}\n`
+ | _ ->
+ ` mov {emit_reg dst}, {emit_reg src}\n`
end
| Lop(Iconst_int n) ->
if n = 0n then begin
@@ -357,7 +360,7 @@ let emit_instr fallthrough i =
| _ ->
let lbl = new_label() in
float_constants := (lbl, s) :: !float_constants;
- ` movlpd {emit_reg i.res.(0)}, {emit_label lbl}\n`
+ ` movsd {emit_reg i.res.(0)}, {emit_label lbl}\n`
end
| Lop(Iconst_symbol s) ->
add_used_symbol s;
@@ -418,7 +421,7 @@ let emit_instr fallthrough i =
| Single ->
` cvtss2sd {emit_reg dest}, REAL4 PTR {emit_addressing addr i.arg 0}\n`
| Double | Double_u ->
- ` movlpd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n`
+ ` movsd {emit_reg dest}, REAL8 PTR {emit_addressing addr i.arg 0}\n`
end
| Lop(Istore(chunk, addr)) ->
begin match chunk with
@@ -434,7 +437,7 @@ let emit_instr fallthrough i =
` cvtsd2ss xmm15, {emit_reg i.arg.(0)}\n`;
` movss REAL4 PTR {emit_addressing addr i.arg 1}, xmm15\n`
| Double | Double_u ->
- ` movlpd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n`
+ ` movsd REAL8 PTR {emit_addressing addr i.arg 1}, {emit_reg i.arg.(0)}\n`
end
| Lop(Ialloc n) ->
if !fastcode_flag then begin
diff --git a/asmcomp/asmlink.ml b/asmcomp/asmlink.ml
index 5f0b72fed2..d78880369f 100644
--- a/asmcomp/asmlink.ml
+++ b/asmcomp/asmlink.ml
@@ -262,7 +262,7 @@ let link_shared ppf objfiles output_name =
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
+ (List.rev !Clflags.ccobjs) in
let startup =
if !Clflags.keep_startup_file
diff --git a/asmcomp/closure.ml b/asmcomp/closure.ml
index aaf3ee7d52..d003fcf8cf 100644
--- a/asmcomp/closure.ml
+++ b/asmcomp/closure.ml
@@ -516,7 +516,7 @@ let rec close fenv cenv = function
| ((ufunct, _), uargs) ->
(Ugeneric_apply(ufunct, uargs, Debuginfo.none), Value_unknown)
end
- | Lsend(kind, met, obj, args) ->
+ | Lsend(kind, met, obj, args, _) ->
let (umet, _) = close fenv cenv met in
let (uobj, _) = close fenv cenv obj in
(Usend(kind, umet, uobj, close_list fenv cenv args, Debuginfo.none),
diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml
index bf99b7c543..a39237c804 100644
--- a/asmcomp/cmmgen.ml
+++ b/asmcomp/cmmgen.ml
@@ -580,32 +580,34 @@ let bigarray_word_kind = function
| Pbigarray_complex64 -> Double
let bigarray_get unsafe elt_kind layout b args dbg =
- match elt_kind with
- Pbigarray_complex32 | Pbigarray_complex64 ->
- let kind = bigarray_word_kind elt_kind in
- let sz = bigarray_elt_size elt_kind / 2 in
- bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
- box_complex
- (Cop(Cload kind, [addr]))
- (Cop(Cload kind, [Cop(Cadda, [addr; Cconst_int sz])])))
- | _ ->
- Cop(Cload (bigarray_word_kind elt_kind),
- [bigarray_indexing unsafe elt_kind layout b args dbg])
+ bind "ba" b (fun b ->
+ match elt_kind with
+ Pbigarray_complex32 | Pbigarray_complex64 ->
+ let kind = bigarray_word_kind elt_kind in
+ let sz = bigarray_elt_size elt_kind / 2 in
+ bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
+ box_complex
+ (Cop(Cload kind, [addr]))
+ (Cop(Cload kind, [Cop(Cadda, [addr; Cconst_int sz])])))
+ | _ ->
+ Cop(Cload (bigarray_word_kind elt_kind),
+ [bigarray_indexing unsafe elt_kind layout b args dbg]))
let bigarray_set unsafe elt_kind layout b args newval dbg =
- match elt_kind with
- Pbigarray_complex32 | Pbigarray_complex64 ->
- let kind = bigarray_word_kind elt_kind in
- let sz = bigarray_elt_size elt_kind / 2 in
- bind "newval" newval (fun newv ->
- bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
- Csequence(
- Cop(Cstore kind, [addr; complex_re newv]),
- Cop(Cstore kind,
- [Cop(Cadda, [addr; Cconst_int sz]); complex_im newv]))))
- | _ ->
- Cop(Cstore (bigarray_word_kind elt_kind),
- [bigarray_indexing unsafe elt_kind layout b args dbg; newval])
+ bind "ba" b (fun b ->
+ match elt_kind with
+ Pbigarray_complex32 | Pbigarray_complex64 ->
+ let kind = bigarray_word_kind elt_kind in
+ let sz = bigarray_elt_size elt_kind / 2 in
+ bind "newval" newval (fun newv ->
+ bind "addr" (bigarray_indexing unsafe elt_kind layout b args dbg) (fun addr ->
+ Csequence(
+ Cop(Cstore kind, [addr; complex_re newv]),
+ Cop(Cstore kind,
+ [Cop(Cadda, [addr; Cconst_int sz]); complex_im newv]))))
+ | _ ->
+ Cop(Cstore (bigarray_word_kind elt_kind),
+ [bigarray_indexing unsafe elt_kind layout b args dbg; newval]))
(* Simplification of some primitives into C calls *)
diff --git a/asmcomp/comballoc.ml b/asmcomp/comballoc.ml
index 5a862b1729..13dbcaffe2 100644
--- a/asmcomp/comballoc.ml
+++ b/asmcomp/comballoc.ml
@@ -38,7 +38,7 @@ let rec combine i allocstate =
combine i.next (Pending_alloc(i.res.(0), sz)) in
(instr_cons (Iop(Ialloc newsz)) i.arg i.res newnext, 0)
| Pending_alloc(reg, ofs) ->
- if ofs + sz < Config.max_young_wosize then begin
+ if ofs + sz < Config.max_young_wosize * Arch.size_addr then begin
let (newnext, newsz) =
combine i.next (Pending_alloc(reg, ofs + sz)) in
(instr_cons (Iop(Iintop_imm(Iadd, ofs))) [| reg |] i.res newnext,
diff --git a/asmcomp/i386/emit_nt.mlp b/asmcomp/i386/emit_nt.mlp
index da1606e449..7091b3df8f 100644
--- a/asmcomp/i386/emit_nt.mlp
+++ b/asmcomp/i386/emit_nt.mlp
@@ -813,7 +813,7 @@ let emit_item = function
add_def_symbol s ;
`{emit_symbol s} LABEL DWORD\n`
| Cdefine_label lbl ->
- `{emit_label (100000 + lbl)} `
+ `{emit_label (100000 + lbl)} LABEL DWORD\n`
| Cint8 n ->
` BYTE {emit_int n}\n`
| Cint16 n ->
diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml
index a8979235e9..50f949a77f 100644
--- a/asmcomp/selectgen.ml
+++ b/asmcomp/selectgen.ml
@@ -824,3 +824,17 @@ method emit_fundecl f =
fun_fast = f.Cmm.fun_fast }
end
+
+(* Tail call criterion (estimated). Assumes:
+- all arguments are of type "int" (always the case for Caml function calls)
+- one extra argument representing the closure environment (conservative).
+*)
+
+let is_tail_call nargs =
+ assert (Reg.dummy.typ = Int);
+ let args = Array.make (nargs + 1) Reg.dummy in
+ let (loc_arg, stack_ofs) = Proc.loc_arguments args in
+ stack_ofs = 0
+
+let _ =
+ Simplif.is_tail_native_heuristic := is_tail_call
diff --git a/asmrun/.depend b/asmrun/.depend
index ab5bde8560..d51ba10315 100644
--- a/asmrun/.depend
+++ b/asmrun/.depend
@@ -4,21 +4,42 @@ alloc.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h
+alloc.p.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/stacks.h ../byterun/memory.h
array.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+array.p.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h
backtrace.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+backtrace.p.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
callback.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/mlvalues.h
+callback.p.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
compact.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
@@ -27,19 +48,40 @@ compact.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+compact.p.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
compare.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+compare.p.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
custom.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+custom.p.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
debugger.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
+debugger.p.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
dynlink.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
@@ -54,30 +96,62 @@ extern.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/reverse.h
+extern.p.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/reverse.h
fail.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+fail.p.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \
+ ../byterun/memory.h
finalise.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/signals.h
+finalise.p.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
floats.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+floats.p.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
freelist.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+freelist.p.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
@@ -86,17 +160,36 @@ gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h stack.h
+gc_ctrl.p.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
globroots.o: globroots.c ../byterun/memory.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
../byterun/globroots.h ../byterun/roots.h
+globroots.p.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
hash.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+hash.p.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
@@ -104,12 +197,25 @@ intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
+intern.p.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
ints.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ints.p.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
io.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
@@ -117,14 +223,29 @@ io.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
../byterun/sys.h
+io.p.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
lexing.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h
+lexing.p.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
main.o: main.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/sys.h
+main.p.o: main.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
major_gc.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
@@ -134,12 +255,27 @@ major_gc.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+major_gc.p.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
md5.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
../byterun/reverse.h
+md5.p.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
@@ -147,6 +283,13 @@ memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/signals.h
+memory.p.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
meta.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
@@ -164,17 +307,37 @@ minor_gc.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
../byterun/weak.h
+minor_gc.p.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
misc.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+misc.p.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
natdynlink.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
+natdynlink.p.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
@@ -182,16 +345,33 @@ obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/prims.h
+obj.p.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
parsing.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/alloc.h
+parsing.p.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
printexc.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/printexc.h
+printexc.p.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
roots.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
@@ -199,6 +379,13 @@ roots.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h stack.h ../byterun/roots.h
+roots.p.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
@@ -207,12 +394,26 @@ signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
../byterun/sys.h
+signals.p.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
signals_asm.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
signals_osdep.h stack.h
+signals_asm.p.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
startup.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
@@ -221,9 +422,20 @@ startup.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+startup.p.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
+ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
str.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+str.p.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
@@ -231,41 +443,83 @@ sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+sys.p.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
terminfo.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
../byterun/io.h ../byterun/mlvalues.h
+terminfo.p.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
unix.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/osdeps.h
+unix.p.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
weak.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h
+weak.p.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h
alloc.d.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h
+alloc.p.d.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/stacks.h ../byterun/memory.h
array.d.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+array.p.d.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h
backtrace.d.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+backtrace.p.d.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
callback.d.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/mlvalues.h
+callback.p.d.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
compact.d.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
@@ -274,19 +528,40 @@ compact.d.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+compact.p.d.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
compare.d.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+compare.p.d.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
custom.d.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+custom.p.d.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
debugger.d.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
+debugger.p.d.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
dynlink.d.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
@@ -301,30 +576,62 @@ extern.d.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/reverse.h
+extern.p.d.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/reverse.h
fail.d.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+fail.p.d.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \
+ ../byterun/memory.h
finalise.d.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/signals.h
+finalise.p.d.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
floats.d.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+floats.p.d.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
freelist.d.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+freelist.p.d.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
@@ -333,17 +640,36 @@ gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h stack.h
+gc_ctrl.p.d.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
globroots.d.o: globroots.c ../byterun/memory.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
../byterun/globroots.h ../byterun/roots.h
+globroots.p.d.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
hash.d.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+hash.p.d.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
@@ -351,12 +677,25 @@ intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
+intern.p.d.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
ints.d.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ints.p.d.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
@@ -364,14 +703,29 @@ io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
../byterun/sys.h
+io.p.d.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
lexing.d.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h
+lexing.p.d.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
main.d.o: main.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/sys.h
+main.p.d.o: main.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
major_gc.d.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
@@ -381,12 +735,27 @@ major_gc.d.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+major_gc.p.d.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
md5.d.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
../byterun/reverse.h
+md5.p.d.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
@@ -394,6 +763,13 @@ memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/signals.h
+memory.p.d.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
meta.d.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
@@ -411,17 +787,37 @@ minor_gc.d.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
../byterun/weak.h
+minor_gc.p.d.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
misc.d.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+misc.p.d.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
natdynlink.d.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
+natdynlink.p.d.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
@@ -429,16 +825,33 @@ obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/prims.h
+obj.p.d.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
parsing.d.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/alloc.h
+parsing.p.d.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
printexc.d.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/printexc.h
+printexc.p.d.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
roots.d.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
@@ -446,6 +859,13 @@ roots.d.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h stack.h ../byterun/roots.h
+roots.p.d.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
@@ -454,12 +874,26 @@ signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
../byterun/sys.h
+signals.p.d.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
signals_asm.d.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
signals_osdep.h stack.h
+signals_asm.p.d.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
startup.d.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
@@ -468,9 +902,20 @@ startup.d.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+startup.p.d.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
+ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
str.d.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+str.p.d.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
@@ -478,41 +923,83 @@ sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+sys.p.d.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
terminfo.d.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
../byterun/io.h ../byterun/mlvalues.h
+terminfo.p.d.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
unix.d.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/osdeps.h
+unix.p.d.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
weak.d.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h
+weak.p.d.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h
alloc.p.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h
+alloc.p.p.o: alloc.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/stacks.h ../byterun/memory.h
array.p.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+array.p.p.o: array.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h
backtrace.p.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+backtrace.p.p.o: backtrace.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
callback.p.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/mlvalues.h
+callback.p.p.o: callback.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
compact.p.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
@@ -521,19 +1008,40 @@ compact.p.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+compact.p.p.o: compact.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
compare.p.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h
+compare.p.p.o: compare.p.c ../byterun/custom.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
custom.p.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+custom.p.p.o: custom.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
debugger.p.o: debugger.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
+debugger.p.p.o: debugger.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/debugger.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/misc.h
dynlink.p.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
@@ -548,30 +1056,62 @@ extern.p.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/reverse.h
+extern.p.p.o: extern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/reverse.h
fail.p.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+fail.p.p.o: fail.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h ../byterun/gc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h ../byterun/signals.h stack.h ../byterun/roots.h \
+ ../byterun/memory.h
finalise.p.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/signals.h
+finalise.p.p.o: finalise.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
floats.p.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+floats.p.p.o: floats.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
freelist.p.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+freelist.p.p.o: freelist.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
gc_ctrl.p.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
@@ -580,17 +1120,36 @@ gc_ctrl.p.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h stack.h
+gc_ctrl.p.p.o: gc_ctrl.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
globroots.p.o: globroots.c ../byterun/memory.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
../byterun/globroots.h ../byterun/roots.h
+globroots.p.p.o: globroots.p.c ../byterun/memory.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
hash.p.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+hash.p.p.o: hash.p.c ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
intern.p.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
@@ -598,12 +1157,25 @@ intern.p.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
+intern.p.p.o: intern.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/reverse.h ../byterun/md5.h
ints.p.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ints.p.p.o: ints.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
io.p.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
@@ -611,14 +1183,29 @@ io.p.o: io.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
../byterun/sys.h
+io.p.p.o: io.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
lexing.p.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h
+lexing.p.p.o: lexing.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
main.p.o: main.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/sys.h
+main.p.p.o: main.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
major_gc.p.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
@@ -628,12 +1215,27 @@ major_gc.p.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/weak.h
+major_gc.p.p.o: major_gc.p.c ../byterun/compact.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
md5.p.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
../byterun/reverse.h
+md5.p.p.o: md5.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
memory.p.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
@@ -641,6 +1243,13 @@ memory.p.o: memory.c ../byterun/fail.h ../byterun/misc.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/signals.h
+memory.p.p.o: memory.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
meta.p.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
@@ -658,17 +1267,37 @@ minor_gc.p.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
../byterun/weak.h
+minor_gc.p.p.o: minor_gc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
misc.p.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h
+misc.p.p.o: misc.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
natdynlink.p.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
+natdynlink.p.p.o: natdynlink.p.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ natdynlink.h ../byterun/osdeps.h ../byterun/fail.h
obj.p.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
@@ -676,16 +1305,33 @@ obj.p.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/prims.h
+obj.p.p.o: obj.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
parsing.p.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/minor_gc.h ../byterun/alloc.h
+parsing.p.p.o: parsing.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
printexc.p.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
../byterun/printexc.h
+printexc.p.p.o: printexc.p.c ../byterun/backtrace.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
roots.p.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
@@ -693,6 +1339,13 @@ roots.p.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h stack.h ../byterun/roots.h
+roots.p.p.o: roots.p.c ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
signals.p.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
@@ -701,12 +1354,26 @@ signals.p.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
../byterun/sys.h
+signals.p.p.o: signals.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
signals_asm.p.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
signals_osdep.h stack.h
+signals_asm.p.p.o: signals_asm.p.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
startup.p.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
@@ -715,9 +1382,20 @@ startup.p.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+startup.p.p.o: startup.p.c ../byterun/callback.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
+ ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
str.p.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+str.p.p.o: str.p.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
sys.p.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
@@ -725,17 +1403,38 @@ sys.p.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+sys.p.p.o: sys.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
terminfo.p.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
../byterun/io.h ../byterun/mlvalues.h
+terminfo.p.p.o: terminfo.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
unix.p.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
../byterun/misc.h ../byterun/osdeps.h
+unix.p.p.o: unix.p.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
weak.p.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/minor_gc.h ../byterun/mlvalues.h
+weak.p.p.o: weak.p.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/mlvalues.h
diff --git a/asmrun/amd64.S b/asmrun/amd64.S
index 97de518399..645c2e616d 100644
--- a/asmrun/amd64.S
+++ b/asmrun/amd64.S
@@ -147,44 +147,44 @@ FUNCTION(G(caml_call_gc))
STORE_VAR(%r14, caml_exception_pointer)
/* Save floating-point registers */
subq $(16*8), %rsp
- movlpd %xmm0, 0*8(%rsp)
- movlpd %xmm1, 1*8(%rsp)
- movlpd %xmm2, 2*8(%rsp)
- movlpd %xmm3, 3*8(%rsp)
- movlpd %xmm4, 4*8(%rsp)
- movlpd %xmm5, 5*8(%rsp)
- movlpd %xmm6, 6*8(%rsp)
- movlpd %xmm7, 7*8(%rsp)
- movlpd %xmm8, 8*8(%rsp)
- movlpd %xmm9, 9*8(%rsp)
- movlpd %xmm10, 10*8(%rsp)
- movlpd %xmm11, 11*8(%rsp)
- movlpd %xmm12, 12*8(%rsp)
- movlpd %xmm13, 13*8(%rsp)
- movlpd %xmm14, 14*8(%rsp)
- movlpd %xmm15, 15*8(%rsp)
+ movsd %xmm0, 0*8(%rsp)
+ movsd %xmm1, 1*8(%rsp)
+ movsd %xmm2, 2*8(%rsp)
+ movsd %xmm3, 3*8(%rsp)
+ movsd %xmm4, 4*8(%rsp)
+ movsd %xmm5, 5*8(%rsp)
+ movsd %xmm6, 6*8(%rsp)
+ movsd %xmm7, 7*8(%rsp)
+ movsd %xmm8, 8*8(%rsp)
+ movsd %xmm9, 9*8(%rsp)
+ movsd %xmm10, 10*8(%rsp)
+ movsd %xmm11, 11*8(%rsp)
+ movsd %xmm12, 12*8(%rsp)
+ movsd %xmm13, 13*8(%rsp)
+ movsd %xmm14, 14*8(%rsp)
+ movsd %xmm15, 15*8(%rsp)
/* Call the garbage collector */
call GCALL(caml_garbage_collection)
/* Restore caml_young_ptr, caml_exception_pointer */
LOAD_VAR(caml_young_ptr, %r15)
LOAD_VAR(caml_exception_pointer, %r14)
/* Restore all regs used by the code generator */
- movlpd 0*8(%rsp), %xmm0
- movlpd 1*8(%rsp), %xmm1
- movlpd 2*8(%rsp), %xmm2
- movlpd 3*8(%rsp), %xmm3
- movlpd 4*8(%rsp), %xmm4
- movlpd 5*8(%rsp), %xmm5
- movlpd 6*8(%rsp), %xmm6
- movlpd 7*8(%rsp), %xmm7
- movlpd 8*8(%rsp), %xmm8
- movlpd 9*8(%rsp), %xmm9
- movlpd 10*8(%rsp), %xmm10
- movlpd 11*8(%rsp), %xmm11
- movlpd 12*8(%rsp), %xmm12
- movlpd 13*8(%rsp), %xmm13
- movlpd 14*8(%rsp), %xmm14
- movlpd 15*8(%rsp), %xmm15
+ movsd 0*8(%rsp), %xmm0
+ movsd 1*8(%rsp), %xmm1
+ movsd 2*8(%rsp), %xmm2
+ movsd 3*8(%rsp), %xmm3
+ movsd 4*8(%rsp), %xmm4
+ movsd 5*8(%rsp), %xmm5
+ movsd 6*8(%rsp), %xmm6
+ movsd 7*8(%rsp), %xmm7
+ movsd 8*8(%rsp), %xmm8
+ movsd 9*8(%rsp), %xmm9
+ movsd 10*8(%rsp), %xmm10
+ movsd 11*8(%rsp), %xmm11
+ movsd 12*8(%rsp), %xmm12
+ movsd 13*8(%rsp), %xmm13
+ movsd 14*8(%rsp), %xmm14
+ movsd 15*8(%rsp), %xmm15
addq $(16*8), %rsp
popq %rax
popq %rbx
diff --git a/asmrun/amd64nt.asm b/asmrun/amd64nt.asm
index c1d97e05b1..4c31bc8731 100644
--- a/asmrun/amd64nt.asm
+++ b/asmrun/amd64nt.asm
@@ -67,43 +67,43 @@ L105:
mov caml_gc_regs, rsp
; Save floating-point registers
sub rsp, 16*8
- movlpd QWORD PTR [rsp + 0*8], xmm0
- movlpd QWORD PTR [rsp + 1*8], xmm1
- movlpd QWORD PTR [rsp + 2*8], xmm2
- movlpd QWORD PTR [rsp + 3*8], xmm3
- movlpd QWORD PTR [rsp + 4*8], xmm4
- movlpd QWORD PTR [rsp + 5*8], xmm5
- movlpd QWORD PTR [rsp + 6*8], xmm6
- movlpd QWORD PTR [rsp + 7*8], xmm7
- movlpd QWORD PTR [rsp + 8*8], xmm8
- movlpd QWORD PTR [rsp + 9*8], xmm9
- movlpd QWORD PTR [rsp + 10*8], xmm10
- movlpd QWORD PTR [rsp + 11*8], xmm11
- movlpd QWORD PTR [rsp + 12*8], xmm12
- movlpd QWORD PTR [rsp + 13*8], xmm13
- movlpd QWORD PTR [rsp + 14*8], xmm14
- movlpd QWORD PTR [rsp + 15*8], xmm15
+ movsd QWORD PTR [rsp + 0*8], xmm0
+ movsd QWORD PTR [rsp + 1*8], xmm1
+ movsd QWORD PTR [rsp + 2*8], xmm2
+ movsd QWORD PTR [rsp + 3*8], xmm3
+ movsd QWORD PTR [rsp + 4*8], xmm4
+ movsd QWORD PTR [rsp + 5*8], xmm5
+ movsd QWORD PTR [rsp + 6*8], xmm6
+ movsd QWORD PTR [rsp + 7*8], xmm7
+ movsd QWORD PTR [rsp + 8*8], xmm8
+ movsd QWORD PTR [rsp + 9*8], xmm9
+ movsd QWORD PTR [rsp + 10*8], xmm10
+ movsd QWORD PTR [rsp + 11*8], xmm11
+ movsd QWORD PTR [rsp + 12*8], xmm12
+ movsd QWORD PTR [rsp + 13*8], xmm13
+ movsd QWORD PTR [rsp + 14*8], xmm14
+ movsd QWORD PTR [rsp + 15*8], xmm15
; Call the garbage collector
sub rsp, 32 ; PR#5008: bottom 32 bytes are reserved for callee
call caml_garbage_collection
add rsp, 32 ; PR#5008
; Restore all regs used by the code generator
- movlpd xmm0, QWORD PTR [rsp + 0*8]
- movlpd xmm1, QWORD PTR [rsp + 1*8]
- movlpd xmm2, QWORD PTR [rsp + 2*8]
- movlpd xmm3, QWORD PTR [rsp + 3*8]
- movlpd xmm4, QWORD PTR [rsp + 4*8]
- movlpd xmm5, QWORD PTR [rsp + 5*8]
- movlpd xmm6, QWORD PTR [rsp + 6*8]
- movlpd xmm7, QWORD PTR [rsp + 7*8]
- movlpd xmm8, QWORD PTR [rsp + 8*8]
- movlpd xmm9, QWORD PTR [rsp + 9*8]
- movlpd xmm10, QWORD PTR [rsp + 10*8]
- movlpd xmm11, QWORD PTR [rsp + 11*8]
- movlpd xmm12, QWORD PTR [rsp + 12*8]
- movlpd xmm13, QWORD PTR [rsp + 13*8]
- movlpd xmm14, QWORD PTR [rsp + 14*8]
- movlpd xmm15, QWORD PTR [rsp + 15*8]
+ movsd xmm0, QWORD PTR [rsp + 0*8]
+ movsd xmm1, QWORD PTR [rsp + 1*8]
+ movsd xmm2, QWORD PTR [rsp + 2*8]
+ movsd xmm3, QWORD PTR [rsp + 3*8]
+ movsd xmm4, QWORD PTR [rsp + 4*8]
+ movsd xmm5, QWORD PTR [rsp + 5*8]
+ movsd xmm6, QWORD PTR [rsp + 6*8]
+ movsd xmm7, QWORD PTR [rsp + 7*8]
+ movsd xmm8, QWORD PTR [rsp + 8*8]
+ movsd xmm9, QWORD PTR [rsp + 9*8]
+ movsd xmm10, QWORD PTR [rsp + 10*8]
+ movsd xmm11, QWORD PTR [rsp + 11*8]
+ movsd xmm12, QWORD PTR [rsp + 12*8]
+ movsd xmm13, QWORD PTR [rsp + 13*8]
+ movsd xmm14, QWORD PTR [rsp + 14*8]
+ movsd xmm15, QWORD PTR [rsp + 15*8]
add rsp, 16*8
pop rax
pop rbx
diff --git a/boot/ocamlc b/boot/ocamlc
index 182ac395e6..60b3f4f754 100755
--- a/boot/ocamlc
+++ b/boot/ocamlc
Binary files differ
diff --git a/boot/ocamldep b/boot/ocamldep
index a4add20b5f..1e3597d47f 100755
--- a/boot/ocamldep
+++ b/boot/ocamldep
Binary files differ
diff --git a/boot/ocamllex b/boot/ocamllex
index 151c06019e..3f2607705d 100755
--- a/boot/ocamllex
+++ b/boot/ocamllex
Binary files differ
diff --git a/build/boot.sh b/build/boot.sh
index 7329d20b76..3de6006abf 100755
--- a/build/boot.sh
+++ b/build/boot.sh
@@ -2,7 +2,7 @@
# $Id$
cd `dirname $0`/..
set -ex
-TAGLINE='true: -use_stdlib'
+TAG_LINE='true: -use_stdlib'
./boot/ocamlrun boot/myocamlbuild.boot \
-tag-line "$TAG_LINE" \
boot/stdlib.cma boot/std_exit.cmo
diff --git a/build/camlp4-bootstrap-recipe.txt b/build/camlp4-bootstrap-recipe.txt
index 9f1417a2fa..264d63551e 100644
--- a/build/camlp4-bootstrap-recipe.txt
+++ b/build/camlp4-bootstrap-recipe.txt
@@ -95,7 +95,8 @@
Then "Generate Camlp4Ast.ml" and build.
We get a single warning in Camlp4/Struct/Camlp4Ast2OCamlAst.ml but
- don't fix it now.
+ don't fix it now. Notice that you may need to disable '-warn-error'
+ in order to be able to successfully compile, despite of the warning.
Then I hacked the camlp4/boot/camlp4boot.ml to generate:
Ast.ExOpI(_loc, i, e)
diff --git a/build/camlp4-byte-only.sh b/build/camlp4-byte-only.sh
index ab98ef50ff..39b346172d 100755
--- a/build/camlp4-byte-only.sh
+++ b/build/camlp4-byte-only.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/camlp4-native-only.sh b/build/camlp4-native-only.sh
index d9bdbd1db5..629684b7b2 100755
--- a/build/camlp4-native-only.sh
+++ b/build/camlp4-native-only.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/fastworld.sh b/build/fastworld.sh
index 10ffa812f8..8263908057 100755
--- a/build/fastworld.sh
+++ b/build/fastworld.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
@@ -45,3 +44,7 @@ cp _build/myocamlbuild boot/myocamlbuild.native
$OCAMLC_NATIVE $TOPLEVEL $OTHERLIBS_BYTE $OTHERLIBS_NATIVE $OCAMLLEX_BYTE \
$OCAMLLEX_NATIVE $TOOLS_BYTE $TOOLS_NATIVE $DEBUGGER \
$OCAMLDOC_BYTE $OCAMLDOC_NATIVE $OCAMLBUILD_BYTE $CAMLP4_BYTE $CAMLP4_NATIVE
+
+cd tools
+make objinfo_helper
+cd ..
diff --git a/build/install.sh b/build/install.sh
index 1a60a87ecc..264d598312 100755
--- a/build/install.sh
+++ b/build/install.sh
@@ -264,6 +264,8 @@ installbin lex/ocamllex.opt$EXE $BINDIR/ocamllex.opt$EXE
installbin tools/ocamldep.native$EXE $BINDIR/ocamldep.opt$EXE
echo "Installing some tools..."
+installbin tools/objinfo.byte$EXE $BINDIR/ocamlobjinfo$EXE
+installbin ../tools/objinfo_helper$EXE $LIBDIR/objinfo_helper$EXE
installbin tools/ocamlcp.byte$EXE $BINDIR/ocamlcp$EXE
installbin tools/ocamldep.byte$EXE $BINDIR/ocamldep$EXE
installbin tools/ocamlmklib.byte$EXE $BINDIR/ocamlmklib$EXE
diff --git a/build/ocamlbuild-byte-only.sh b/build/ocamlbuild-byte-only.sh
index 17f7b87a86..2f226d422c 100755
--- a/build/ocamlbuild-byte-only.sh
+++ b/build/ocamlbuild-byte-only.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/ocamlbuild-native-only.sh b/build/ocamlbuild-native-only.sh
index ce96412745..c61f6a1ab9 100755
--- a/build/ocamlbuild-native-only.sh
+++ b/build/ocamlbuild-native-only.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/ocamlbuildlib-native-only.sh b/build/ocamlbuildlib-native-only.sh
index a7a570a924..52bfb8fe24 100755
--- a/build/ocamlbuildlib-native-only.sh
+++ b/build/ocamlbuildlib-native-only.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/otherlibs-targets.sh b/build/otherlibs-targets.sh
index 301b75f191..e3d9fedf27 100644
--- a/build/otherlibs-targets.sh
+++ b/build/otherlibs-targets.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/build/targets.sh b/build/targets.sh
index 146015a637..66406aab04 100644
--- a/build/targets.sh
+++ b/build/targets.sh
@@ -30,7 +30,8 @@ OCAMLBUILD_BYTE="ocamlbuild/ocamlbuildlib.cma \
ocamlbuild/ocamlbuild.byte$EXE \
ocamlbuild/ocamlbuildlight.byte$EXE"
TOPLEVEL=ocaml$EXE
-TOOLS_BYTE="tools/ocamldep.byte$EXE tools/profiling.cmo \
+TOOLS_BYTE="tools/objinfo.byte$EXE \
+ tools/ocamldep.byte$EXE tools/profiling.cmo \
tools/ocamlprof.byte$EXE tools/ocamlcp.byte$EXE \
tools/ocamlmktop.byte$EXE tools/ocamlmklib$EXE \
tools/scrapelabels.byte tools/addlabels.byte \
diff --git a/build/world.sh b/build/world.sh
index 0b9a4b2891..534bce5459 100755
--- a/build/world.sh
+++ b/build/world.sh
@@ -8,8 +8,7 @@
# #
# Copyright 2008 Institut National de Recherche en Informatique et #
# en Automatique. All rights reserved. This file is distributed #
-# under the terms of the GNU Library General Public License, with #
-# the special exception on linking described in file LICENSE. #
+# under the terms of the Q Public License version 1.0. #
# #
#########################################################################
diff --git a/bytecomp/bytegen.ml b/bytecomp/bytegen.ml
index 09c254d4f3..b6c8f6fae8 100644
--- a/bytecomp/bytegen.ml
+++ b/bytecomp/bytegen.ml
@@ -413,12 +413,10 @@ let rec comp_expr env exp sz cont =
| Lapply(func, args, loc) ->
let nargs = List.length args in
if is_tailcall cont then begin
- Stypes.record (Stypes.An_call (loc, Annot.Tail));
comp_args env args sz
(Kpush :: comp_expr env func (sz + nargs)
(Kappterm(nargs, sz + nargs) :: discard_dead_code cont))
end else begin
- Stypes.record (Stypes.An_call (loc, Annot.Stack));
if nargs < 4 then
comp_args env args sz
(Kpush :: comp_expr env func (sz + nargs) (Kapply nargs :: cont))
@@ -430,7 +428,7 @@ let rec comp_expr env exp sz cont =
(Kapply nargs :: cont1))
end
end
- | Lsend(kind, met, obj, args) ->
+ | Lsend(kind, met, obj, args, _) ->
let args = if kind = Cached then List.tl args else args in
let nargs = List.length args + 1 in
let getmethod, args' =
@@ -746,9 +744,9 @@ let rec comp_expr env exp sz cont =
| Lev_after ty ->
let info =
match lam with
- Lapply(_, args, _) -> Event_return (List.length args)
- | Lsend(_, _, _, args) -> Event_return (List.length args + 1)
- | _ -> Event_other
+ Lapply(_, args, _) -> Event_return (List.length args)
+ | Lsend(_, _, _, args, _) -> Event_return (List.length args + 1)
+ | _ -> Event_other
in
let ev = event (Event_after ty) info in
let cont1 = add_event ev cont in
diff --git a/bytecomp/bytelink.ml b/bytecomp/bytelink.ml
index 3165777dd9..ad1a3cc708 100644
--- a/bytecomp/bytelink.ml
+++ b/bytecomp/bytelink.ml
@@ -407,15 +407,15 @@ let link_bytecode_as_c tolink outfile =
begin try
(* The bytecode *)
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\
- char *section_table, asize_t section_table_size,\n\
- char **argv);\n";
+#ifdef __cplusplus\
+\nextern \"C\" {\
+\n#endif\
+\n#include <caml/mlvalues.h>\
+\nCAMLextern void caml_startup_code(\
+\n code_t code, asize_t code_size,\
+\n char *data, asize_t data_size,\
+\n char *section_table, asize_t section_table_size,\
+\n char **argv);\n";
output_string outchan "static int caml_code[] = {\n";
Symtable.init();
Consistbl.clear crc_interfaces;
@@ -444,17 +444,17 @@ CAMLextern void caml_startup_code(\n\
(* The table of primitives *)
Symtable.output_primitive_table outchan;
(* The entry point *)
- output_string outchan "\n\
-void caml_startup(char ** argv)\n\
-{\n\
- caml_startup_code(caml_code, sizeof(caml_code),\n\
- caml_data, sizeof(caml_data),\n\
- caml_sections, sizeof(caml_sections),\n\
- argv);\n\
-}\n\
-#ifdef __cplusplus\n\
-}\n\
-#endif\n";
+ output_string outchan "\
+\nvoid caml_startup(char ** argv)\
+\n{\
+\n caml_startup_code(caml_code, sizeof(caml_code),\
+\n caml_data, sizeof(caml_data),\
+\n caml_sections, sizeof(caml_sections),\
+\n argv);\
+\n}\
+\n#ifdef __cplusplus\
+\n}\
+\n#endif\n";
close_out outchan
with x ->
close_out outchan;
diff --git a/bytecomp/bytepackager.ml b/bytecomp/bytepackager.ml
index 6649aa3d51..e2b6ff54bb 100644
--- a/bytecomp/bytepackager.ml
+++ b/bytecomp/bytepackager.ml
@@ -39,7 +39,7 @@ let force_link = ref false
SETGLOBAL relocations that correspond to one of the units being
consolidated. *)
-let rename_relocation objfile mapping defined base (rel, ofs) =
+let rename_relocation packagename objfile mapping defined base (rel, ofs) =
let rel' =
match rel with
Reloc_getglobal id ->
@@ -49,7 +49,14 @@ let rename_relocation objfile mapping defined base (rel, ofs) =
then Reloc_getglobal id'
else raise(Error(Forward_reference(objfile, id)))
with Not_found ->
- rel
+ (* PR#5276: unique-ize dotted global names, which appear
+ if one of the units being consolidated is itself a packed
+ module. *)
+ let name = Ident.name id in
+ if String.contains name '.' then
+ Reloc_getglobal (Ident.create_persistent (packagename ^ "." ^ name))
+ else
+ rel
end
| Reloc_setglobal id ->
begin try
@@ -58,7 +65,12 @@ let rename_relocation objfile mapping defined base (rel, ofs) =
then raise(Error(Multiple_definition(objfile, id)))
else Reloc_setglobal id'
with Not_found ->
- rel
+ (* PR#5276, as above *)
+ let name = Ident.name id in
+ if String.contains name '.' then
+ Reloc_setglobal (Ident.create_persistent (packagename ^ "." ^ name))
+ else
+ rel
end
| _ ->
rel in
@@ -112,12 +124,12 @@ let read_member_info file =
Accumulate relocs, debug info, etc.
Return size of bytecode. *)
-let rename_append_bytecode oc mapping defined ofs prefix subst objfile compunit =
+let rename_append_bytecode packagename oc mapping defined ofs prefix subst objfile compunit =
let ic = open_in_bin objfile in
try
Bytelink.check_consistency objfile compunit;
List.iter
- (rename_relocation objfile mapping defined ofs)
+ (rename_relocation packagename objfile mapping defined ofs)
compunit.cu_reloc;
primitives := compunit.cu_primitives @ !primitives;
if compunit.cu_force_link then force_link := true;
@@ -136,20 +148,20 @@ let rename_append_bytecode oc mapping defined ofs prefix subst objfile compunit
(* Same, for a list of .cmo and .cmi files.
Return total size of bytecode. *)
-let rec rename_append_bytecode_list oc mapping defined ofs prefix subst = function
+let rec rename_append_bytecode_list packagename oc mapping defined ofs prefix subst = function
[] ->
ofs
| m :: rem ->
match m.pm_kind with
| PM_intf ->
- rename_append_bytecode_list oc mapping defined ofs prefix subst rem
+ rename_append_bytecode_list packagename oc mapping defined ofs prefix subst rem
| PM_impl compunit ->
let size =
- rename_append_bytecode oc mapping defined ofs prefix subst
+ rename_append_bytecode packagename oc mapping defined ofs prefix subst
m.pm_file compunit in
let id = Ident.create_persistent m.pm_name in
let root = Path.Pident (Ident.create_persistent prefix) in
- rename_append_bytecode_list
+ rename_append_bytecode_list packagename
oc mapping (id :: defined)
(ofs + size) prefix (Subst.add_module id (Path.Pdot (root, Ident.name id, Path.nopos)) subst) rem
@@ -191,7 +203,7 @@ let package_object_files files targetfile targetname coercion =
let pos_depl = pos_out oc in
output_binary_int oc 0;
let pos_code = pos_out oc in
- let ofs = rename_append_bytecode_list oc mapping [] 0 targetname Subst.identity members in
+ let ofs = rename_append_bytecode_list targetname oc mapping [] 0 targetname Subst.identity members in
build_global_target oc targetname members mapping ofs coercion;
let pos_debug = pos_out oc in
if !Clflags.debug && !events <> [] then
diff --git a/bytecomp/lambda.ml b/bytecomp/lambda.ml
index d299883b24..09e48967b0 100644
--- a/bytecomp/lambda.ml
+++ b/bytecomp/lambda.ml
@@ -140,7 +140,7 @@ type lambda =
| Lwhile of lambda * lambda
| Lfor of Ident.t * lambda * lambda * direction_flag * lambda
| Lassign of Ident.t * lambda
- | Lsend of meth_kind * lambda * lambda * lambda list
+ | Lsend of meth_kind * lambda * lambda * lambda list * Location.t
| Levent of lambda * lambda_event
| Lifused of Ident.t * lambda
@@ -202,7 +202,7 @@ let rec same l1 l2 =
same b1 b2 && df1 = df2 && same c1 c2
| Lassign(id1, a1), Lassign(id2, a2) ->
Ident.same id1 id2 && same a1 a2
- | Lsend(k1, a1, b1, cl1), Lsend(k2, a2, b2, cl2) ->
+ | Lsend(k1, a1, b1, cl1, _), Lsend(k2, a2, b2, cl2, _) ->
k1 = k2 && same a1 a2 && same b1 b2 && samelist same cl1 cl2
| Levent(a1, ev1), Levent(a2, ev2) ->
same a1 a2 && ev1.lev_loc = ev2.lev_loc
@@ -278,7 +278,7 @@ let rec iter f = function
f e1; f e2; f e3
| Lassign(id, e) ->
f e
- | Lsend (k, met, obj, args) ->
+ | Lsend (k, met, obj, args, _) ->
List.iter f (met::obj::args)
| Levent (lam, evt) ->
f lam
@@ -321,7 +321,7 @@ let free_variables l =
free_ids (function Lvar id -> [id] | _ -> []) l
let free_methods l =
- free_ids (function Lsend(Self, Lvar meth, obj, _) -> [meth] | _ -> []) l
+ free_ids (function Lsend(Self, Lvar meth, obj, _, _) -> [meth] | _ -> []) l
(* Check if an action has a "when" guard *)
let raise_count = ref 0
@@ -399,8 +399,8 @@ let subst_lambda s lam =
| Lwhile(e1, e2) -> Lwhile(subst e1, subst e2)
| Lfor(v, e1, e2, dir, e3) -> Lfor(v, subst e1, subst e2, dir, subst e3)
| Lassign(id, e) -> Lassign(id, subst e)
- | Lsend (k, met, obj, args) ->
- Lsend (k, subst met, subst obj, List.map subst args)
+ | Lsend (k, met, obj, args, loc) ->
+ Lsend (k, subst met, subst obj, List.map subst args, loc)
| Levent (lam, evt) -> Levent (subst lam, evt)
| Lifused (v, e) -> Lifused (v, subst e)
and subst_decl (id, exp) = (id, subst exp)
diff --git a/bytecomp/lambda.mli b/bytecomp/lambda.mli
index bdafb9984b..60ca4b8b58 100644
--- a/bytecomp/lambda.mli
+++ b/bytecomp/lambda.mli
@@ -149,7 +149,7 @@ type lambda =
| Lwhile of lambda * lambda
| Lfor of Ident.t * lambda * lambda * direction_flag * lambda
| Lassign of Ident.t * lambda
- | Lsend of meth_kind * lambda * lambda * lambda list
+ | Lsend of meth_kind * lambda * lambda * lambda list * Location.t
| Levent of lambda * lambda_event
| Lifused of Ident.t * lambda
diff --git a/bytecomp/printlambda.ml b/bytecomp/printlambda.ml
index 0d6e19148d..9bfa099e15 100644
--- a/bytecomp/printlambda.ml
+++ b/bytecomp/printlambda.ml
@@ -285,7 +285,7 @@ let rec lam ppf = function
lam hi lam body
| Lassign(id, expr) ->
fprintf ppf "@[<2>(assign@ %a@ %a)@]" Ident.print id lam expr
- | Lsend (k, met, obj, largs) ->
+ | Lsend (k, met, obj, largs, _) ->
let args ppf largs =
List.iter (fun l -> fprintf ppf "@ %a" lam l) largs in
let kind =
diff --git a/bytecomp/simplif.ml b/bytecomp/simplif.ml
index 6081d5bd4a..cd942ca2d5 100644
--- a/bytecomp/simplif.ml
+++ b/bytecomp/simplif.ml
@@ -75,9 +75,9 @@ let rec eliminate_ref id = function
dir, eliminate_ref id e3)
| Lassign(v, e) ->
Lassign(v, eliminate_ref id e)
- | Lsend(k, m, o, el) ->
+ | Lsend(k, m, o, el, loc) ->
Lsend(k, eliminate_ref id m, eliminate_ref id o,
- List.map (eliminate_ref id) el)
+ List.map (eliminate_ref id) el, loc)
| Levent(l, ev) ->
Levent(eliminate_ref id l, ev)
| Lifused(v, e) ->
@@ -144,7 +144,7 @@ let simplify_exits lam =
(* Lalias-bound variables are never assigned, so don't increase
v's refcount *)
count l
- | Lsend(k, m, o, ll) -> List.iter count (m::o::ll)
+ | Lsend(k, m, o, ll, _) -> List.iter count (m::o::ll)
| Levent(l, _) -> count l
| Lifused(v, l) -> count l
@@ -250,7 +250,7 @@ let simplify_exits lam =
| Lfor(v, l1, l2, dir, l3) ->
Lfor(v, simplif l1, simplif l2, dir, simplif l3)
| Lassign(v, l) -> Lassign(v, simplif l)
- | Lsend(k, m, o, ll) -> Lsend(k, simplif m, simplif o, List.map simplif ll)
+ | Lsend(k, m, o, ll, loc) -> Lsend(k, simplif m, simplif o, List.map simplif ll, loc)
| Levent(l, ev) -> Levent(simplif l, ev)
| Lifused(v, l) -> Lifused (v,simplif l)
in
@@ -313,7 +313,7 @@ let simplify_lets lam =
(* Lalias-bound variables are never assigned, so don't increase
v's refcount *)
count l
- | Lsend(_, m, o, ll) -> List.iter count (m::o::ll)
+ | Lsend(_, m, o, ll, _) -> List.iter count (m::o::ll)
| Levent(l, _) -> count l
| Lifused(v, l) ->
if count_var v > 0 then count l
@@ -402,11 +402,93 @@ let simplify_lets lam =
| Lfor(v, l1, l2, dir, l3) ->
Lfor(v, simplif l1, simplif l2, dir, simplif l3)
| Lassign(v, l) -> Lassign(v, simplif l)
- | Lsend(k, m, o, ll) -> Lsend(k, simplif m, simplif o, List.map simplif ll)
+ | Lsend(k, m, o, ll, loc) -> Lsend(k, simplif m, simplif o, List.map simplif ll, loc)
| Levent(l, ev) -> Levent(simplif l, ev)
| Lifused(v, l) ->
if count_var v > 0 then simplif l else lambda_unit
in
simplif lam
-let simplify_lambda lam = simplify_lets (simplify_exits lam)
+(* Tail call info in annotation files *)
+
+let is_tail_native_heuristic : (int -> bool) ref =
+ ref (fun n -> true)
+
+let rec emit_tail_infos is_tail lambda =
+ let call_kind args =
+ if is_tail
+ && ((not !Clflags.native_code)
+ || (!is_tail_native_heuristic (List.length args)))
+ then Annot.Tail
+ else Annot.Stack in
+ match lambda with
+ | Lvar _ -> ()
+ | Lconst _ -> ()
+ | Lapply (func, l, loc) ->
+ list_emit_tail_infos false l;
+ Stypes.record (Stypes.An_call (loc, call_kind l))
+ | Lfunction (_, _, lam) ->
+ emit_tail_infos true lam
+ | Llet (_, _, lam, body) ->
+ emit_tail_infos false lam;
+ emit_tail_infos is_tail body
+ | Lletrec (bindings, body) ->
+ List.iter (fun (_, lam) -> emit_tail_infos false lam) bindings;
+ emit_tail_infos is_tail body
+ | Lprim (Pidentity, [arg]) ->
+ emit_tail_infos is_tail arg
+ | Lprim (Psequand, [arg1; arg2])
+ | Lprim (Psequor, [arg1; arg2]) ->
+ emit_tail_infos false arg1;
+ emit_tail_infos is_tail arg2
+ | Lprim (_, l) ->
+ list_emit_tail_infos false l
+ | Lswitch (lam, sw) ->
+ emit_tail_infos false lam;
+ list_emit_tail_infos_fun snd is_tail sw.sw_consts;
+ list_emit_tail_infos_fun snd is_tail sw.sw_blocks
+ | Lstaticraise (_, l) ->
+ list_emit_tail_infos false l
+ | Lstaticcatch (body, _, handler) ->
+ emit_tail_infos is_tail body;
+ emit_tail_infos is_tail handler
+ | Ltrywith (body, _, handler) ->
+ emit_tail_infos false body;
+ emit_tail_infos is_tail handler
+ | Lifthenelse (cond, ifso, ifno) ->
+ emit_tail_infos false cond;
+ emit_tail_infos is_tail ifso;
+ emit_tail_infos is_tail ifno
+ | Lsequence (lam1, lam2) ->
+ emit_tail_infos false lam1;
+ emit_tail_infos is_tail lam2
+ | Lwhile (cond, body) ->
+ emit_tail_infos false cond;
+ emit_tail_infos false body
+ | Lfor (_, low, high, _, body) ->
+ emit_tail_infos false low;
+ emit_tail_infos false high;
+ emit_tail_infos false body
+ | Lassign (_, lam) ->
+ emit_tail_infos false lam
+ | Lsend (_, meth, obj, args, loc) ->
+ emit_tail_infos false meth;
+ emit_tail_infos false obj;
+ list_emit_tail_infos false args;
+ Stypes.record (Stypes.An_call (loc, call_kind (obj :: args)))
+ | Levent (lam, _) ->
+ emit_tail_infos is_tail lam
+ | Lifused (_, lam) ->
+ emit_tail_infos is_tail lam
+and list_emit_tail_infos_fun f is_tail =
+ List.iter (fun x -> emit_tail_infos is_tail (f x))
+and list_emit_tail_infos is_tail =
+ List.iter (emit_tail_infos is_tail)
+
+(* The entry point:
+ simplification + emission of tailcall annotations, if needed. *)
+
+let simplify_lambda lam =
+ let res = simplify_lets (simplify_exits lam) in
+ if !Clflags.annotations then emit_tail_infos true res;
+ res
diff --git a/bytecomp/simplif.mli b/bytecomp/simplif.mli
index 5e5217ff18..2d9b352bb6 100644
--- a/bytecomp/simplif.mli
+++ b/bytecomp/simplif.mli
@@ -12,8 +12,15 @@
(* $Id$ *)
-(* Elimination of useless Llet(Alias) bindings *)
+(* Elimination of useless Llet(Alias) bindings.
+ Transformation of let-bound references into variables.
+ Simplification over staticraise/staticcatch constructs.
+ Generation of tail-call annotations if -annot is set. *)
open Lambda
val simplify_lambda: lambda -> lambda
+
+(* To be filled by asmcomp/selectgen.ml *)
+val is_tail_native_heuristic: (int -> bool) ref
+ (* # arguments -> can tailcall *)
diff --git a/bytecomp/translclass.ml b/bytecomp/translclass.ml
index 98c1e0878f..b64c9c47db 100644
--- a/bytecomp/translclass.ml
+++ b/bytecomp/translclass.ml
@@ -497,7 +497,7 @@ let rec builtin_meths self env env2 body =
"var", [Lvar n]
| Lprim(Pfield n, [Lvar e]) when Ident.same e env ->
"env", [Lvar env2; Lconst(Const_pointer n)]
- | Lsend(Self, met, Lvar s, []) when List.mem s self ->
+ | Lsend(Self, met, Lvar s, [], _) when List.mem s self ->
"meth", [met]
| _ -> raise Not_found
in
@@ -512,15 +512,15 @@ let rec builtin_meths self env env2 body =
| Lapply(f, [p; arg], _) when const_path f && const_path p ->
let s, args = conv arg in
("app_const_"^s, f :: p :: args)
- | Lsend(Self, Lvar n, Lvar s, [arg]) when List.mem s self ->
+ | Lsend(Self, Lvar n, Lvar s, [arg], _) when List.mem s self ->
let s, args = conv arg in
("meth_app_"^s, Lvar n :: args)
- | Lsend(Self, met, Lvar s, []) when List.mem s self ->
+ | Lsend(Self, met, Lvar s, [], _) when List.mem s self ->
("get_meth", [met])
- | Lsend(Public, met, arg, []) ->
+ | Lsend(Public, met, arg, [], _) ->
let s, args = conv arg in
("send_"^s, met :: args)
- | Lsend(Cached, met, arg, [_;_]) ->
+ | Lsend(Cached, met, arg, [_;_], _) ->
let s, args = conv arg in
("send_"^s, met :: args)
| Lfunction (Curried, [x], body) ->
diff --git a/bytecomp/translcore.ml b/bytecomp/translcore.ml
index 4abd9d1243..2569b30313 100644
--- a/bytecomp/translcore.ml
+++ b/bytecomp/translcore.ml
@@ -604,12 +604,12 @@ and transl_exp0 e =
if public_send || p.prim_name = "%sendself" then
let kind = if public_send then Public else Self in
let obj = Ident.create "obj" and meth = Ident.create "meth" in
- Lfunction(Curried, [obj; meth], Lsend(kind, Lvar meth, Lvar obj, []))
+ Lfunction(Curried, [obj; meth], Lsend(kind, Lvar meth, Lvar obj, [], e.exp_loc))
else if p.prim_name = "%sendcache" then
let obj = Ident.create "obj" and meth = Ident.create "meth" in
let cache = Ident.create "cache" and pos = Ident.create "pos" in
Lfunction(Curried, [obj; meth; cache; pos],
- Lsend(Cached, Lvar meth, Lvar obj, [Lvar cache; Lvar pos]))
+ Lsend(Cached, Lvar meth, Lvar obj, [Lvar cache; Lvar pos], e.exp_loc))
else
transl_primitive p
| Texp_ident(path, {val_kind = Val_anc _}) ->
@@ -669,10 +669,10 @@ and transl_exp0 e =
if public_send || p.prim_name = "%sendself" then
let kind = if public_send then Public else Self in
let obj = List.hd argl in
- wrap (Lsend (kind, List.nth argl 1, obj, []))
+ wrap (Lsend (kind, List.nth argl 1, obj, [], e.exp_loc))
else if p.prim_name = "%sendcache" then
match argl with [obj; meth; cache; pos] ->
- wrap (Lsend(Cached, meth, obj, [cache; pos]))
+ wrap (Lsend(Cached, meth, obj, [cache; pos], e.exp_loc))
| _ -> assert false
else begin
let prim = transl_prim p args in
@@ -798,11 +798,11 @@ and transl_exp0 e =
let obj = transl_exp expr in
let lam =
match met with
- Tmeth_val id -> Lsend (Self, Lvar id, obj, [])
+ Tmeth_val id -> Lsend (Self, Lvar id, obj, [], e.exp_loc)
| Tmeth_name nm ->
let (tag, cache) = Translobj.meth obj nm in
let kind = if cache = [] then Public else Cached in
- Lsend (kind, tag, obj, cache)
+ Lsend (kind, tag, obj, cache, e.exp_loc)
in
event_after e lam
| Texp_new (cl, _) ->
@@ -1206,10 +1206,10 @@ and transl_tupled_cases patl_expr_list =
and transl_apply lam sargs loc =
let lapply funct args =
match funct with
- Lsend(k, lmet, lobj, largs) ->
- Lsend(k, lmet, lobj, largs @ args)
- | Levent(Lsend(k, lmet, lobj, largs), _) ->
- Lsend(k, lmet, lobj, largs @ args)
+ Lsend(k, lmet, lobj, largs, loc) ->
+ Lsend(k, lmet, lobj, largs @ args, loc)
+ | Levent(Lsend(k, lmet, lobj, largs, loc), _) ->
+ Lsend(k, lmet, lobj, largs @ args, loc)
| Lapply(lexp, largs, _) ->
Lapply(lexp, largs @ args, loc)
| lexp ->
diff --git a/byterun/compare.c b/byterun/compare.c
index 35a7f66ce9..751630757b 100644
--- a/byterun/compare.c
+++ b/byterun/compare.c
@@ -104,18 +104,44 @@ static intnat compare_val(value v1, value v2, int total)
if (Is_long(v2))
return Long_val(v1) - Long_val(v2);
/* Subtraction above cannot overflow and cannot result in UNORDERED */
- if (Is_in_value_area(v2) &&
- Tag_val(v2) == Forward_tag) {
- v2 = Forward_val(v2);
- continue;
+ if (Is_in_value_area(v2)) {
+ switch (Tag_val(v2)) {
+ case Forward_tag:
+ v2 = Forward_val(v2);
+ continue;
+ case Custom_tag: {
+ int res;
+ int (*compare)(value v1, value v2) = Custom_ops_val(v2)->compare_ext;
+ if (compare == NULL) break; /* for backward compatibility */
+ caml_compare_unordered = 0;
+ res = compare(v1, v2);
+ if (caml_compare_unordered && !total) return UNORDERED;
+ if (res != 0) return res;
+ goto next_item;
+ }
+ default: /*fallthrough*/;
+ }
}
return LESS; /* v1 long < v2 block */
}
if (Is_long(v2)) {
- if (Is_in_value_area(v1) &&
- Tag_val(v1) == Forward_tag) {
- v1 = Forward_val(v1);
- continue;
+ if (Is_in_value_area(v1)) {
+ switch (Tag_val(v1)) {
+ case Forward_tag:
+ v1 = Forward_val(v1);
+ continue;
+ case Custom_tag: {
+ int res;
+ int (*compare)(value v1, value v2) = Custom_ops_val(v1)->compare_ext;
+ if (compare == NULL) break; /* for backward compatibility */
+ caml_compare_unordered = 0;
+ res = compare(v1, v2);
+ if (caml_compare_unordered && !total) return UNORDERED;
+ if (res != 0) return res;
+ goto next_item;
+ }
+ default: /*fallthrough*/;
+ }
}
return GREATER; /* v1 block > v2 long */
}
@@ -134,17 +160,14 @@ static intnat compare_val(value v1, value v2, int total)
if (t1 != t2) return (intnat)t1 - (intnat)t2;
switch(t1) {
case String_tag: {
- mlsize_t len1, len2, len;
- unsigned char * p1, * p2;
+ mlsize_t len1, len2;
+ int res;
if (v1 == v2) break;
len1 = caml_string_length(v1);
len2 = caml_string_length(v2);
- for (len = (len1 <= len2 ? len1 : len2),
- p1 = (unsigned char *) String_val(v1),
- p2 = (unsigned char *) String_val(v2);
- len > 0;
- len--, p1++, p2++)
- if (*p1 != *p2) return (intnat)*p1 - (intnat)*p2;
+ res = memcmp(String_val(v1), String_val(v2), len1 <= len2 ? len1 : len2);
+ if (res < 0) return LESS;
+ if (res > 0) return GREATER;
if (len1 != len2) return len1 - len2;
break;
}
@@ -198,12 +221,18 @@ static intnat compare_val(value v1, value v2, int total)
case Custom_tag: {
int res;
int (*compare)(value v1, value v2) = Custom_ops_val(v1)->compare;
+ /* Hardening against comparisons between different types */
+ if (compare != Custom_ops_val(v2)->compare) {
+ return strcmp(Custom_ops_val(v1)->identifier,
+ Custom_ops_val(v2)->identifier) < 0
+ ? LESS : GREATER;
+ }
if (compare == NULL) {
compare_free_stack();
caml_invalid_argument("equal: abstract value");
}
caml_compare_unordered = 0;
- res = Custom_ops_val(v1)->compare(v1, v2);
+ res = compare(v1, v2);
if (caml_compare_unordered && !total) return UNORDERED;
if (res != 0) return res;
break;
diff --git a/byterun/custom.h b/byterun/custom.h
index a706857ae0..51fabed9da 100644
--- a/byterun/custom.h
+++ b/byterun/custom.h
@@ -31,6 +31,7 @@ struct custom_operations {
/*out*/ uintnat * wsize_32 /*size in bytes*/,
/*out*/ uintnat * wsize_64 /*size in bytes*/);
uintnat (*deserialize)(void * dst);
+ int (*compare_ext)(value v1, value v2);
};
#define custom_finalize_default NULL
@@ -38,6 +39,7 @@ struct custom_operations {
#define custom_hash_default NULL
#define custom_serialize_default NULL
#define custom_deserialize_default NULL
+#define custom_compare_ext_default NULL
#define Custom_ops_val(v) (*((struct custom_operations **) (v)))
diff --git a/byterun/fail.c b/byterun/fail.c
index b1a08c6110..aceb253b9d 100644
--- a/byterun/fail.c
+++ b/byterun/fail.c
@@ -15,6 +15,8 @@
/* Raising exceptions from C. */
+#include <stdio.h>
+#include <stdlib.h>
#include "alloc.h"
#include "fail.h"
#include "io.h"
@@ -85,13 +87,24 @@ CAMLexport void caml_raise_with_string(value tag, char const *msg)
CAMLnoreturn;
}
+/* PR#5115: Failure and Invalid_argument can be triggered by
+ input_value while reading the initial value of [caml_global_data]. */
+
CAMLexport void caml_failwith (char const *msg)
{
+ if (caml_global_data == 0) {
+ fprintf(stderr, "Fatal error: exception Failure(\"%s\")\n", msg);
+ exit(2);
+ }
caml_raise_with_string(Field(caml_global_data, FAILURE_EXN), msg);
}
CAMLexport void caml_invalid_argument (char const *msg)
{
+ if (caml_global_data == 0) {
+ fprintf(stderr, "Fatal error: exception Invalid_argument(\"%s\")\n", msg);
+ exit(2);
+ }
caml_raise_with_string(Field(caml_global_data, INVALID_EXN), msg);
}
diff --git a/byterun/gc_ctrl.c b/byterun/gc_ctrl.c
index 0fe2215155..9a2e0b08ca 100644
--- a/byterun/gc_ctrl.c
+++ b/byterun/gc_ctrl.c
@@ -467,8 +467,11 @@ CAMLprim value caml_gc_major_slice (value v)
CAMLprim value caml_gc_compaction(value v)
{ Assert (v == Val_unit);
+ caml_gc_message (0x10, "Heap compaction requested\n", 0);
caml_empty_minor_heap ();
caml_finish_major_cycle ();
+ caml_final_do_calls ();
+ caml_empty_minor_heap ();
caml_finish_major_cycle ();
caml_compact_heap ();
caml_final_do_calls ();
@@ -481,7 +484,9 @@ void caml_init_gc (uintnat minor_size, uintnat major_size,
{
uintnat major_heap_size = Bsize_wsize (norm_heapincr (major_size));
- caml_page_table_initialize(Bsize_wsize(minor_size) + major_heap_size);
+ if (caml_page_table_initialize(Bsize_wsize(minor_size) + major_heap_size)){
+ caml_fatal_error ("OCaml runtime error: cannot initialize page table\n");
+ }
caml_set_minor_heap_size (Bsize_wsize (norm_minsize (minor_size)));
caml_major_heap_increment = Bsize_wsize (norm_heapincr (major_incr));
caml_percent_free = norm_pfree (percent_fr);
diff --git a/byterun/ints.c b/byterun/ints.c
index 9fdaa1802b..51a9a3b3b0 100644
--- a/byterun/ints.c
+++ b/byterun/ints.c
@@ -614,7 +614,7 @@ static void nativeint_serialize(value v, uintnat * wsize_32,
{
intnat l = Nativeint_val(v);
#ifdef ARCH_SIXTYFOUR
- if (l <= 0x7FFFFFFFL && l >= -0x80000000L) {
+ if (l >= -((intnat)1 << 31) && l < ((intnat)1 << 31)) {
caml_serialize_int_1(1);
caml_serialize_int_4((int32) l);
} else {
diff --git a/byterun/major_gc.h b/byterun/major_gc.h
index 5e48e3431f..12f8806705 100644
--- a/byterun/major_gc.h
+++ b/byterun/major_gc.h
@@ -54,7 +54,7 @@ extern char *caml_gc_sweep_hp;
void caml_init_major_heap (asize_t); /* size in bytes */
asize_t caml_round_heap_chunk_size (asize_t); /* size in bytes */
void caml_darken (value, value *);
-intnat caml_major_collection_slice (long);
+intnat caml_major_collection_slice (intnat);
void major_collection (void);
void caml_finish_major_cycle (void);
diff --git a/byterun/stacks.c b/byterun/stacks.c
index f2de29f09c..ed06f95346 100644
--- a/byterun/stacks.c
+++ b/byterun/stacks.c
@@ -28,7 +28,7 @@ CAMLexport value * caml_stack_threshold;
CAMLexport value * caml_extern_sp;
CAMLexport value * caml_trapsp;
CAMLexport value * caml_trap_barrier;
-value caml_global_data;
+value caml_global_data = 0;
uintnat caml_max_stack_size; /* also used in gc_ctrl.c */
diff --git a/byterun/startup.c b/byterun/startup.c
index b69c04f220..20e61e7d2f 100644
--- a/byterun/startup.c
+++ b/byterun/startup.c
@@ -288,7 +288,7 @@ static int parse_command_line(char **argv)
static void scanmult (char *opt, uintnat *var)
{
char mult = ' ';
- int val;
+ unsigned int val;
sscanf (opt, "=%u%c", &val, &mult);
sscanf (opt, "=0x%x%c", &val, &mult);
switch (mult) {
diff --git a/byterun/sys.c b/byterun/sys.c
index bbc0e605f4..9928910f73 100644
--- a/byterun/sys.c
+++ b/byterun/sys.c
@@ -138,12 +138,14 @@ CAMLprim value caml_sys_open(value path, value vflags, value vperm)
/* open on a named FIFO can block (PR#1533) */
caml_enter_blocking_section();
fd = open(p, flags, perm);
+ /* fcntl on a fd can block (PR#5069)*/
+#if defined(F_SETFD) && defined(FD_CLOEXEC)
+ if (fd != -1)
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
+#endif
caml_leave_blocking_section();
caml_stat_free(p);
if (fd == -1) caml_sys_error(path);
-#if defined(F_SETFD) && defined(FD_CLOEXEC)
- fcntl(fd, F_SETFD, FD_CLOEXEC);
-#endif
CAMLreturn(Val_long(fd));
}
diff --git a/config/auto-aux/expm1.c b/config/auto-aux/expm1.c
new file mode 100644
index 0000000000..ec315871f8
--- /dev/null
+++ b/config/auto-aux/expm1.c
@@ -0,0 +1,26 @@
+/***********************************************************************/
+/* */
+/* Objective Caml */
+/* */
+/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
+/* */
+/* Copyright 2011 Institut National de Recherche en Informatique et */
+/* en Automatique. All rights reserved. This file is distributed */
+/* under the terms of the GNU Library General Public License, with */
+/* the special exception on linking described in file ../../LICENSE. */
+/* */
+/***********************************************************************/
+
+/* $Id: longlong.c 4833 2002-05-25 08:33:26Z xleroy $ */
+
+#include <math.h>
+
+volatile double x;
+
+int main(int argc, char **argv)
+{
+ x = 3.1415;
+ x = expm1(x);
+ x = log1p(x);
+ return 0;
+}
diff --git a/configure b/configure
index 901ebe8581..d12768b838 100755
--- a/configure
+++ b/configure
@@ -468,11 +468,12 @@ esac
# Determine alignment constraints
case "$host" in
- sparc*-*-*|hppa*-*-*|arm*-*-*)
+ sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*)
# On Sparc V9 with certain versions of gcc, determination of double
# alignment is not reliable (PR#1521), hence force it.
# Same goes for hppa.
# PR#5088 suggests same problem on ARM.
+ # PR#5280 reports same problem on MIPS.
# But there's a knack (PR#2572):
# if we're in 64-bit mode (sizeof(long) == 8),
# we must not doubleword-align floats...
@@ -500,8 +501,8 @@ esac
if $int64_native; then
case "$host" in
- # PR#5088: autodetection is unreliable on ARM
- sparc*-*-*|hppa*-*-*|arm*-*-*)
+ # PR#5088: autodetection is unreliable on ARM. PR#5280: also on MIPS.
+ sparc*-*-*|hppa*-*-*|arm*-*-*|mips*-*-*)
if test $2 = 8; then
echo "64-bit integers can be word-aligned."
echo "#undef ARCH_ALIGN_INT64" >> m.h
@@ -1573,6 +1574,10 @@ if test $has_tk = true; then
fi
fi
+case "$host" in
+ *-*-cygwin*) tk_libs="$tk_libs -lws2_32";;
+esac
+
if test $has_tk = true; then
if sh ./hasgot $tk_libs $tk_x11_libs $tkauxlibs Tk_SetGrid; then
echo "Tcl/Tk libraries found."
diff --git a/emacs/Makefile b/emacs/Makefile
index 41863cd457..8418297d71 100644
--- a/emacs/Makefile
+++ b/emacs/Makefile
@@ -72,5 +72,9 @@ ocamltags: ocamltags.in
install-ocamltags: ocamltags
cp ocamltags $(SCRIPTDIR)/ocamltags
+# This is for testing purposes
+compile-only:
+ $(EMACS) --batch --eval '$(COMPILECMD)'
+
clean:
- rm -f ocamltags *~ #*#
+ rm -f ocamltags *~ #*# *.elc
diff --git a/emacs/caml-emacs.el b/emacs/caml-emacs.el
index d034ff304a..d0a2c86ee0 100644
--- a/emacs/caml-emacs.el
+++ b/emacs/caml-emacs.el
@@ -39,5 +39,8 @@
(or (member 'drag modifiers)
(member 'click modifiers)))))
+(if (fboundp 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-int))
(provide 'caml-emacs)
diff --git a/emacs/caml-font.el b/emacs/caml-font.el
index 34ca3dd50f..d3b132d532 100644
--- a/emacs/caml-font.el
+++ b/emacs/caml-font.el
@@ -59,7 +59,7 @@
. font-lock-builtin-face)
;control
(,(concat "[|#&]\\|->\\|"
- (regexp-opt '("do" "done" "dowto" "else" "for" "if" "ignore"
+ (regexp-opt '("do" "done" "downto" "else" "for" "if" "ignore"
"lazy" "match" "new" "reply"
"spawn" "then" "to" "try"
"when" "while" "with")
diff --git a/emacs/caml-types.el b/emacs/caml-types.el
index 05b1a2c0a6..3c7433a813 100644
--- a/emacs/caml-types.el
+++ b/emacs/caml-types.el
@@ -264,13 +264,13 @@ See `caml-types-location-re' for annotation file format.
((string-match def-re kind)
(let ((var-name (match-string 1 kind))
(l-file (file-name-nondirectory (match-string 2 kind)))
- (l-line (string-to-int (match-string 4 kind)))
- (l-bol (string-to-int (match-string 5 kind)))
- (l-cnum (string-to-int (match-string 6 kind)))
+ (l-line (caml-string-to-int (match-string 4 kind)))
+ (l-bol (caml-string-to-int (match-string 5 kind)))
+ (l-cnum (caml-string-to-int (match-string 6 kind)))
(r-file (file-name-nondirectory (match-string 7 kind)))
- (r-line (string-to-int (match-string 9 kind)))
- (r-bol (string-to-int (match-string 10 kind)))
- (r-cnum (string-to-int (match-string 11 kind))))
+ (r-line (caml-string-to-int (match-string 9 kind)))
+ (r-bol (caml-string-to-int (match-string 10 kind)))
+ (r-cnum (caml-string-to-int (match-string 11 kind))))
(let* ((lpos (vector l-file l-line l-bol l-cnum))
(rpos (vector r-file r-line r-bol r-cnum))
(left (caml-types-get-pos target-buf lpos))
@@ -280,9 +280,9 @@ See `caml-types-location-re' for annotation file format.
((string-match def-end-re kind)
(let ((var-name (match-string 1 kind))
(l-file (file-name-nondirectory (match-string 2 kind)))
- (l-line (string-to-int (match-string 4 kind)))
- (l-bol (string-to-int (match-string 5 kind)))
- (l-cnum (string-to-int (match-string 6 kind))))
+ (l-line (caml-string-to-int (match-string 4 kind)))
+ (l-bol (caml-string-to-int (match-string 5 kind)))
+ (l-cnum (caml-string-to-int (match-string 6 kind))))
(let* ((lpos (vector l-file l-line l-bol l-cnum))
(left (caml-types-get-pos target-buf lpos))
(right (buffer-size target-buf)))
@@ -291,13 +291,13 @@ See `caml-types-location-re' for annotation file format.
((string-match internal-re kind)
(let ((var-name (match-string 1 kind))
(l-file (file-name-nondirectory (match-string 2 kind)))
- (l-line (string-to-int (match-string 4 kind)))
- (l-bol (string-to-int (match-string 5 kind)))
- (l-cnum (string-to-int (match-string 6 kind)))
+ (l-line (caml-string-to-int (match-string 4 kind)))
+ (l-bol (caml-string-to-int (match-string 5 kind)))
+ (l-cnum (caml-string-to-int (match-string 6 kind)))
(r-file (file-name-nondirectory (match-string 7 kind)))
- (r-line (string-to-int (match-string 9 kind)))
- (r-bol (string-to-int (match-string 10 kind)))
- (r-cnum (string-to-int (match-string 11 kind))))
+ (r-line (caml-string-to-int (match-string 9 kind)))
+ (r-bol (caml-string-to-int (match-string 10 kind)))
+ (r-cnum (caml-string-to-int (match-string 11 kind))))
(let* ((lpos (vector l-file l-line l-bol l-cnum))
(rpos (vector r-file r-line r-bol r-cnum))
(left (caml-types-get-pos target-buf lpos))
@@ -345,11 +345,12 @@ See `caml-types-location-re' for annotation file format.
(message "done"))
)))
+(defun caml-types-parent-dir (d) (file-name-directory (directory-file-name d)))
+
(defun caml-types-locate-type-file (target-path)
(let ((sibling (concat (file-name-sans-extension target-path) ".annot")))
(if (file-exists-p sibling)
sibling
- (defun parent-dir (d) (file-name-directory (directory-file-name d)))
(let ((project-dir (file-name-directory sibling))
type-path)
(while (not (file-exists-p
@@ -357,10 +358,10 @@ See `caml-types-location-re' for annotation file format.
(expand-file-name
(file-relative-name sibling project-dir)
(expand-file-name "_build" project-dir)))))
- (if (equal project-dir (parent-dir project-dir))
+ (if (equal project-dir (caml-types-parent-dir project-dir))
(error (concat "No annotation file. "
"You should compile with option \"-annot\".")))
- (setq project-dir (parent-dir project-dir)))
+ (setq project-dir (caml-types-parent-dir project-dir)))
type-path))))
(defun caml-types-date< (date1 date2)
@@ -400,13 +401,13 @@ See `caml-types-location-re' for annotation file format.
(annotation ()))
(while (re-search-forward caml-types-location-re () t)
(let ((l-file (file-name-nondirectory (match-string 1)))
- (l-line (string-to-int (match-string 3)))
- (l-bol (string-to-int (match-string 4)))
- (l-cnum (string-to-int (match-string 5)))
+ (l-line (caml-string-to-int (match-string 3)))
+ (l-bol (caml-string-to-int (match-string 4)))
+ (l-cnum (caml-string-to-int (match-string 5)))
(r-file (file-name-nondirectory (match-string 6)))
- (r-line (string-to-int (match-string 8)))
- (r-bol (string-to-int (match-string 9)))
- (r-cnum (string-to-int (match-string 10))))
+ (r-line (caml-string-to-int (match-string 8)))
+ (r-bol (caml-string-to-int (match-string 9)))
+ (r-cnum (caml-string-to-int (match-string 10))))
(unless (caml-types-not-in-file l-file r-file target-file)
(setq annotation ())
(while (next-annotation)
diff --git a/emacs/caml-xemacs.el b/emacs/caml-xemacs.el
index fe141c5ce2..45d670c7ab 100644
--- a/emacs/caml-xemacs.el
+++ b/emacs/caml-xemacs.el
@@ -50,4 +50,8 @@
(and (button-release-event-p event)
(equal (event-button original) (event-button event))))
+(if (fboundp 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-int))
+
(provide 'caml-xemacs)
diff --git a/emacs/caml.el b/emacs/caml.el
index e116898beb..ceb4b1f80a 100644
--- a/emacs/caml.el
+++ b/emacs/caml.el
@@ -815,8 +815,9 @@ from an error message produced by camlc.")
(defvar caml-error-overlay nil)
(defvar caml-next-error-skip-warnings-flag nil)
-(defun caml-string-to-int (x)
- (if (fboundp 'string-to-number) (string-to-number x) (string-to-int x)))
+(if (fboundp 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-number)
+ (defalias 'caml-string-to-int 'string-to-int))
;;itz 04-21-96 somebody didn't get the documentation for next-error
;;right. When the optional argument is a number n, it should move
@@ -1168,7 +1169,7 @@ Used to distinguish it from toplevel let construct.")
(concat
"\\<\\(and"
(if caml-is-jocaml "\\|or" "")
- "\\|do\\(ne\\)?\\|e\\(lse\\|nd\\)\\|in\\|t\\(hen\\|o\\)"
+ "\\<\\(and\\|do\\(ne\\|wnto\\)?\\|e\\(lse\\|nd\\)\\|in\\|t\\(hen\\|o\\)"
"\\|with\\)\\>\\|[^[|]|")
"Regexp used in caml mode for skipping back over nested blocks.")
@@ -1184,6 +1185,7 @@ Used to distinguish it from toplevel let construct.")
("else" . caml-find-else-match)
("then" . caml-find-then-match)
("to" . caml-find-done-match)
+ ("downto" . caml-find-done-match)
("do" . caml-find-done-match)
("and" . caml-find-and-match))))
(if caml-is-jocaml (cons '("or" . caml-find-and-match) aux) aux))
@@ -1611,7 +1613,7 @@ Does not preserve point."
(defconst caml-leading-kwops-regexp
(concat
- "\\<\\(and\\|do\\(ne\\)?\\|e\\(lse\\|nd\\)\\|in"
+ "\\<\\(and\\|do\\(ne\\|wnto\\)?\\|e\\(lse\\|nd\\)\\|in"
(if caml-is-jocaml "\\|or" "")
"\\|t\\(hen\\|o\\)\\|with\\)\\>\\|[]|})]")
@@ -1628,6 +1630,7 @@ Does not preserve point."
("in" caml-in-extra-indent 2)
("then" caml-then-extra-indent 3)
("to" caml-to-extra-indent 0)
+ ("downto" caml-to-extra-indent 0)
("with" caml-with-extra-indent 2)
("|" caml-|-extra-indent 2)
("]" caml-rb-extra-indent 0)
diff --git a/emacs/camldebug.el b/emacs/camldebug.el
index d5ba599cc7..57a98701b5 100644
--- a/emacs/camldebug.el
+++ b/emacs/camldebug.el
@@ -302,8 +302,8 @@ buffer, then try to obtain the time from context around point."
((save-excursion
(beginning-of-line 1)
(looking-at "^Time : \\([0-9]+\\) - pc : [0-9]+ "))
- (string-to-int (match-string 1)))
- ((string-to-int (camldebug-format-command "%e"))))))
+ (caml-string-to-int (match-string 1)))
+ ((caml-string-to-int (camldebug-format-command "%e"))))))
(camldebug-call "goto" nil time)))
(t
(let ((module (camldebug-module-name (buffer-file-name)))
@@ -325,7 +325,7 @@ buffer, then try to obtain the time from context around point."
" - module "
module "$") nil t)
(match-string 1)))))
- (if address (camldebug-call "goto" nil (string-to-int address))
+ (if address (camldebug-call "goto" nil (caml-string-to-int address))
(error "No time at %s at %s" module camldebug-goto-position))))))
@@ -383,12 +383,12 @@ around point."
(arg (cond
((eobp)
(save-excursion (re-search-backward bpline nil t))
- (string-to-int (match-string 1)))
+ (caml-string-to-int (match-string 1)))
((save-excursion
(beginning-of-line 1)
(looking-at bpline))
- (string-to-int (match-string 1)))
- ((string-to-int (camldebug-format-command "%e"))))))
+ (caml-string-to-int (match-string 1)))
+ ((caml-string-to-int (camldebug-format-command "%e"))))))
(camldebug-call "delete" nil arg)))
(t
(let ((camldebug-delete-file
@@ -409,7 +409,7 @@ around point."
camldebug-delete-file
camldebug-delete-position)
(camldebug-call "delete" nil
- (string-to-int camldebug-delete-output)))))))))
+ (caml-string-to-int camldebug-delete-output)))))))))
(defun camldebug-complete-filter (string)
(setq camldebug-filter-accumulator
@@ -529,9 +529,9 @@ the camldebug commands `cd DIR' and `directory'."
(let ((isbefore
(string= "before"
(match-string 5 camldebug-filter-accumulator)))
- (startpos (string-to-int
+ (startpos (caml-string-to-int
(match-string 3 camldebug-filter-accumulator)))
- (endpos (string-to-int
+ (endpos (caml-string-to-int
(match-string 4 camldebug-filter-accumulator))))
(list (match-string 2 camldebug-filter-accumulator)
(if isbefore startpos endpos)
@@ -704,7 +704,7 @@ Obeying it means displaying in another window the specified file and line."
(move-overlay camldebug-overlay-under spos (- epos 1) buffer))
(save-excursion
(set-buffer buffer)
- (goto-char pos)
+ (goto-char spos)
(beginning-of-line)
(move-marker camldebug-event-marker (point))
(setq overlay-arrow-position camldebug-event-marker))))
diff --git a/emacs/inf-caml.el b/emacs/inf-caml.el
index ba2eb0390b..f3e4c48d1b 100644
--- a/emacs/inf-caml.el
+++ b/emacs/inf-caml.el
@@ -163,7 +163,7 @@ Input and output via buffer `*inferior-caml*'."
(setq count (+ count 1)))
(if (equal (buffer-name (current-buffer))
inferior-caml-buffer-name)
- (end-of-buffer))
+ (goto-char (point-max)))
(while
(> count 0)
(previous-multiframe-window)
@@ -201,7 +201,7 @@ Input and output via buffer `*inferior-caml*'."
(re-search-backward
(concat comint-prompt-regexp
"[ \t]*Characters[ \t]+\\([0-9]+\\)-[0-9]+:$"))
- (string-to-int (match-string 1))))))
+ (caml-string-to-int (match-string 1))))))
(goto-char loc)))
@@ -265,8 +265,8 @@ should lies."
(cond ((re-search-forward
" *Characters \\([01-9][01-9]*\\)-\\([1-9][01-9]*\\):\n[^W]"
(point-max) t)
- (setq beg (string-to-int (caml-match-string 1)))
- (setq end (string-to-int (caml-match-string 2)))
+ (setq beg (caml-string-to-int (caml-match-string 1)))
+ (setq end (caml-string-to-int (caml-match-string 2)))
(switch-to-buffer buf)
(goto-char orig)
(forward-byte end)
@@ -330,7 +330,7 @@ should lies."
(beep) (if wait (read-event) (caml-sit-for 60)))
(delete-overlay caml-error-overlay)))))
-;; wait some amount for ouput, that is, until inferior-caml-output is set
+;; wait some amount for output, that is, until inferior-caml-output is set
;; to true. Hence, interleaves sitting for shorts delays and checking the
;; flag. Give up after some time. Typing into the source buffer will cancel
;; waiting, i.e. may report 'No result yet'
diff --git a/lex/output.ml b/lex/output.ml
index 620f67f65a..5ca403b52d 100644
--- a/lex/output.ml
+++ b/lex/output.ml
@@ -74,8 +74,8 @@ let output_tables oc tbl =
let output_entry sourcefile ic oc oci e =
let init_num, init_moves = e.auto_initial_state in
- fprintf oc "%s %alexbuf =\n\
- %a%a __ocaml_lex_%s_rec %alexbuf %d\n"
+ fprintf oc "%s %alexbuf =\
+\n %a%a __ocaml_lex_%s_rec %alexbuf %d\n"
e.auto_name
output_args e.auto_args
(fun oc x ->
diff --git a/lex/outputbis.ml b/lex/outputbis.ml
index 266c0acbd4..6d5e77c30d 100644
--- a/lex/outputbis.ml
+++ b/lex/outputbis.ml
@@ -20,31 +20,31 @@ open Lexgen
open Common
let output_auto_defs oc =
- fprintf oc "let __ocaml_lex_init_lexbuf lexbuf mem_size =\n\
- let pos = lexbuf.Lexing.lex_curr_pos in\n\
- lexbuf.Lexing.lex_mem <- Array.create mem_size (-1) ;\n\
- lexbuf.Lexing.lex_start_pos <- pos ;\n\
- lexbuf.Lexing.lex_last_pos <- pos ;\n\
- lexbuf.Lexing.lex_last_action <- -1\n\
-\n\
+ fprintf oc "let __ocaml_lex_init_lexbuf lexbuf mem_size =\
+\n let pos = lexbuf.Lexing.lex_curr_pos in\
+\n lexbuf.Lexing.lex_mem <- Array.create mem_size (-1) ;\
+\n lexbuf.Lexing.lex_start_pos <- pos ;\
+\n lexbuf.Lexing.lex_last_pos <- pos ;\
+\n lexbuf.Lexing.lex_last_action <- -1\
+\n\n\
" ;
output_string oc
- "let rec __ocaml_lex_next_char lexbuf =\n\
- if lexbuf.Lexing.lex_curr_pos >= lexbuf.Lexing.lex_buffer_len then begin\n\
- if lexbuf.Lexing.lex_eof_reached then\n\
- 256\n\
- else begin\n\
- lexbuf.Lexing.refill_buff lexbuf ;\n\
- __ocaml_lex_next_char lexbuf\n\
- end\n\
- end else begin\n\
- let i = lexbuf.Lexing.lex_curr_pos in\n\
- let c = lexbuf.Lexing.lex_buffer.[i] in\n\
- lexbuf.Lexing.lex_curr_pos <- i+1 ;\n\
- Char.code c\n\
- end\n\
-\n\
+ "let rec __ocaml_lex_next_char lexbuf =\
+\n if lexbuf.Lexing.lex_curr_pos >= lexbuf.Lexing.lex_buffer_len then begin\
+\n if lexbuf.Lexing.lex_eof_reached then\
+\n 256\
+\n else begin\
+\n lexbuf.Lexing.refill_buff lexbuf ;\
+\n __ocaml_lex_next_char lexbuf\
+\n end\
+\n end else begin\
+\n let i = lexbuf.Lexing.lex_curr_pos in\
+\n let c = lexbuf.Lexing.lex_buffer.[i] in\
+\n lexbuf.Lexing.lex_curr_pos <- i+1 ;\
+\n Char.code c\
+\n end\
+\n\n\
"
@@ -155,13 +155,13 @@ let output_automata oc auto =
let output_entry sourcefile ic oc tr e =
let init_num, init_moves = e.auto_initial_state in
- fprintf oc "%s %alexbuf =\n\
- __ocaml_lex_init_lexbuf lexbuf %d; %a\n\
- let __ocaml_lex_result = __ocaml_lex_state%d lexbuf in\n\
- lexbuf.Lexing.lex_start_p <- lexbuf.Lexing.lex_curr_p;\n\
- lexbuf.Lexing.lex_curr_p <- {lexbuf.Lexing.lex_curr_p with\n\
- Lexing.pos_cnum = lexbuf.Lexing.lex_abs_pos + lexbuf.Lexing.lex_curr_pos};\n\
- match __ocaml_lex_result with\n"
+ fprintf oc "%s %alexbuf =\
+\n __ocaml_lex_init_lexbuf lexbuf %d; %a\
+\n let __ocaml_lex_result = __ocaml_lex_state%d lexbuf in\
+\n lexbuf.Lexing.lex_start_p <- lexbuf.Lexing.lex_curr_p;\
+\n lexbuf.Lexing.lex_curr_p <- {lexbuf.Lexing.lex_curr_p with\
+\n Lexing.pos_cnum = lexbuf.Lexing.lex_abs_pos + lexbuf.Lexing.lex_curr_pos};\
+\n match __ocaml_lex_result with\n"
e.auto_name output_args e.auto_args
e.auto_mem_size (output_memory_actions " ") init_moves init_num ;
List.iter
diff --git a/man/ocamldep.m b/man/ocamldep.m
index fc484713d3..521e41bbce 100644
--- a/man/ocamldep.m
+++ b/man/ocamldep.m
@@ -1,18 +1,20 @@
+\" $Id$
+
.TH OCAMLDEP 1
.SH NAME
ocamldep \- Dependency generator for Objective Caml
.SH SYNOPSIS
-.B ocamldep
+.B ocamldep
[
-.BI \-I \ lib-dir
+.I options
]
.I filename ...
.SH DESCRIPTION
-The
+The
.BR ocamldep (1)
command scans a set of Objective Caml source files
(.ml and .mli files) for references to external compilation units,
@@ -24,7 +26,7 @@ file is modified.
The typical usage is:
.P
-ocamldep
+ocamldep
.I options
*.mli *.ml > .depend
.P
@@ -32,30 +34,51 @@ where .depend is the file that should contain the
dependencies.
Dependencies are generated both for compiling with the bytecode
-compiler
+compiler
.BR ocamlc (1)
-and with the native-code compiler
+and with the native-code compiler
.BR ocamlopt (1).
.SH OPTIONS
-The following command-line option is recognized by
+The following command-line options are recognized by
.BR ocamldep (1).
-
.TP
.BI \-I \ directory
Add the given directory to the list of directories searched for
source files. If a source file foo.ml mentions an external
compilation unit Bar, a dependency on that unit's interface
bar.cmi is generated only if the source for bar is found in the
-current directory or in one of the directories specified with
-.BR -I .
-Otherwise, Bar is assumed to be a module form the standard library,
+current directory or in one of the directories specified with
+.BR \-I .
+Otherwise, Bar is assumed to be a module from the standard library,
and no dependencies are generated. For programs that span multiple
-directories, it is recommended to pass
+directories, it is recommended to pass
.BR ocamldep (1)
-the same -I options that are passed to the compiler.
-
+the same
+.B \-I
+options that are passed to the compiler.
+.TP
+.BI \-ml\-synonym \ .ext
+Consider the given extension (with leading dot) to be a synonym for .ml.
+.TP
+.BI \-mli\-synonym \ .ext
+Consider the given extension (with leading dot) to be a synonym for .mli.
+.TP
+.B \-modules
+Output raw dependencies of the form
+.IR filename : \ Module1\ Module2 \ ... \ ModuleN
+where
+.IR Module1 ,\ ..., \ ModuleN
+are the names of the compilation
+units referenced within the file
+.IR filename ,
+but these names are not
+resolved to source file names. Such raw dependencies cannot be used
+by
+.BR make (1),
+but can be post-processed by other tools such as
+.BR Omake (1).
.TP
.BI \-native
Generate dependencies for a pure native-code program (no bytecode
@@ -66,12 +89,10 @@ generates dependencies on the
bytecode compiled file (.cmo file) to reflect interface changes.
This can cause unnecessary bytecode recompilations for programs that
are compiled to native-code only. The flag
-.BR -native
+.B \-native
causes dependencies on native compiled files (.cmx) to be generated instead
of on .cmo files. (This flag makes no difference if all source files
have explicit .mli interface files.)
-<<<<<<< .courant
-=======
.TP
.BI \-pp \ command
Cause
@@ -91,11 +112,10 @@ Print short version number and exit.
.TP
.BR \-help \ or \ \-\-help
Display a short usage summary and exit.
->>>>>>> .fusion-droit.r10497
.SH SEE ALSO
.BR ocamlc (1),
.BR ocamlopt (1).
.br
-.I The Objective Caml user's manual,
+.IR The\ Objective\ Caml\ user's\ manual ,
chapter "Dependency generator".
diff --git a/ocamldoc/Makefile b/ocamldoc/Makefile
index fb16cfbc1f..91fb2a2042 100644
--- a/ocamldoc/Makefile
+++ b/ocamldoc/Makefile
@@ -199,7 +199,7 @@ STDLIB_MLIS=../stdlib/*.mli \
../otherlibs/bigarray/bigarray.mli \
../otherlibs/num/num.mli
-all: exe lib generators
+all: exe lib manpages
$(MAKE) manpages
exe: $(OCAMLDOC)
diff --git a/ocamldoc/odoc_args.ml b/ocamldoc/odoc_args.ml
index eff92760e6..bb96f146fb 100644
--- a/ocamldoc/odoc_args.ml
+++ b/ocamldoc/odoc_args.ml
@@ -39,6 +39,7 @@ let analyse_merge_options s =
(M.merge_version, [Odoc_types.Merge_version]) ;
(M.merge_see, [Odoc_types.Merge_see]) ;
(M.merge_since, [Odoc_types.Merge_since]) ;
+ (M.merge_before, [Odoc_types.Merge_before]) ;
(M.merge_deprecated, [Odoc_types.Merge_deprecated]) ;
(M.merge_param, [Odoc_types.Merge_param]) ;
(M.merge_raised_exception, [Odoc_types.Merge_raised_exception]) ;
@@ -50,6 +51,76 @@ let analyse_merge_options s =
analyse_option_string l s
+let dump = ref (None : string option)
+
+let load = ref ([] : string list)
+
+(** Allow arbitrary recursive types. *)
+let recursive_types = Clflags.recursive_types
+
+let verbose = ref false
+
+(** Optional preprocessor command. *)
+let preprocessor = Clflags.preprocessor
+
+let sort_modules = ref false
+
+let no_custom_tags = ref false
+
+let no_stop = ref false
+
+let remove_stars = ref false
+
+let keep_code = ref false
+
+let inverse_merge_ml_mli = ref false
+
+let filter_with_module_constraints = ref true
+
+let title = ref (None : string option)
+
+let intro_file = ref (None : string option)
+
+let with_parameter_list = ref false
+
+let hidden_modules = ref ([] : string list)
+
+let target_dir = ref Filename.current_dir_name
+
+let css_style = ref None
+
+let index_only = ref false
+
+let colorize_code = ref false
+
+let charset = ref "iso-8859-1"
+
+let with_header = ref true
+
+let with_trailer = ref true
+
+let separate_files = ref false
+
+let latex_titles = ref [
+ 1, "section" ;
+ 2, "subsection" ;
+ 3, "subsubsection" ;
+ 4, "paragraph" ;
+ 5, "subparagraph" ;
+]
+
+let with_toc = ref true
+
+let with_index = ref true
+
+let esc_8bits = ref false
+
+let info_section = ref "Objective Caml"
+
+let info_entry = ref []
+
+let files = ref []
+
let f_latex_title s =
try
let pos = String.index s ',' in
@@ -83,7 +154,7 @@ let add_hidden_modules s =
let set_generator (g : Odoc_gen.generator) = current_generator := Some g
(** The default option list *)
-let options = ref [
+let default_options = [
"-version", Arg.Unit (fun () -> print_string M.message_version ; print_newline () ; exit 0) , M.option_version ;
"-vnum", Arg.Unit (fun () -> print_string M.config_version ;
print_newline () ; exit 0) , M.option_version ;
@@ -150,11 +221,12 @@ let options = ref [
"\n\n *** HTML options ***\n";
(* html only options *)
- "-all-params", Arg.Set Odoc_html.with_parameter_list, M.with_parameter_list ;
- "-css-style", Arg.String (fun s -> Odoc_html.css_style := Some s), M.css_style ;
- "-index-only", Arg.Set Odoc_html.index_only, M.index_only ;
- "-colorize-code", Arg.Set Odoc_html.colorize_code, M.colorize_code ;
- "-short-functors", Arg.Set Odoc_html.html_short_functors, M.html_short_functors ^
+ "-all-params", Arg.Set with_parameter_list, M.with_parameter_list ;
+ "-css-style", Arg.String (fun s -> css_style := Some s), M.css_style ;
+ "-index-only", Arg.Set index_only, M.index_only ;
+ "-colorize-code", Arg.Set colorize_code, M.colorize_code ;
+ "-short-functors", Arg.Set html_short_functors, M.html_short_functors ;
+ "-charset", Arg.Set_string charset, (M.charset !charset)^
"\n\n *** LaTeX options ***\n";
(* latex only options *)
@@ -205,7 +277,34 @@ let options = ref [
]
+let options = ref default_options
+
+let modified_options () =
+ !options != default_options
+
+let append_last_doc suffix =
+ match List.rev !options with
+ | (key, spec, doc) :: tl ->
+ options := List.rev ((key, spec, doc ^ suffix) :: tl)
+ | [] -> ()
+
+(** The help option list, overriding the default ones from the Arg module *)
+let help_options = ref []
+let help_action () =
+ let msg =
+ Arg.usage_string
+ (!options @ !help_options)
+ (M.usage ^ M.options_are) in
+ print_string msg
+let () =
+ help_options := [
+ "-help", Arg.Unit help_action, M.help ;
+ "--help", Arg.Unit help_action, M.help
+]
+
let add_option o =
+ if not (modified_options ()) then
+ append_last_doc "\n *** custom generator options ***\n";
let (s,_,_) = o in
let rec iter = function
[] -> [o]
@@ -233,7 +332,9 @@ let parse () =
in
Odoc_global.files := !Odoc_global.files @ [sf]
in
- let _ = Arg.parse !options
+ if modified_options () then append_last_doc "\n";
+ let options = !options @ !help_options in
+ let _ = Arg.parse options
anonymous
(M.usage^M.options_are)
in
diff --git a/ocamldoc/odoc_args.mli b/ocamldoc/odoc_args.mli
index 2f190ef756..7881c0a395 100644
--- a/ocamldoc/odoc_args.mli
+++ b/ocamldoc/odoc_args.mli
@@ -16,6 +16,161 @@
(** The current module defining the generator to use. *)
val current_generator : Odoc_gen.generator option ref
+(** The include_dirs in the OCaml compiler. *)
+val include_dirs : string list ref
+
+(** The class type of documentation generators. *)
+class type doc_generator =
+ object method generate : Odoc_module.t_module list -> unit end
+
+(** The function to be used to create a generator. *)
+val doc_generator : doc_generator option ref
+
+(** The merge options to be used. *)
+val merge_options : Odoc_types.merge_option list ref
+
+(** Classic mode or not. *)
+val classic : bool ref
+
+(** The file used by the generators outputting only one file. *)
+val out_file : string ref
+
+(** The optional file name to dump the collected information into.*)
+val dump : string option ref
+
+(** The list of information files to load. *)
+val load : string list ref
+
+(** Verbose mode or not. *)
+val verbose : bool ref
+
+(** We must sort the list of top modules or not.*)
+val sort_modules : bool ref
+
+(** We must not stop at the stop special comments. Default is false (we stop).*)
+val no_stop : bool ref
+
+(** We must raise an exception when we find an unknown @-tag. *)
+val no_custom_tags : bool ref
+
+(** We must remove the the first characters of each comment line, until the first asterisk '*'. *)
+val remove_stars : bool ref
+
+(** To keep the code while merging, when we have both .ml and .mli files for a module. *)
+val keep_code : bool ref
+
+(** To inverse implementation and interface files when merging. *)
+val inverse_merge_ml_mli : bool ref
+
+(** To filter module elements according to module type constraints. *)
+val filter_with_module_constraints : bool ref
+
+(** The optional title to use in the generated documentation. *)
+val title : string option ref
+
+(** The optional file whose content can be used as intro text. *)
+val intro_file : string option ref
+
+(** Flag to indicate whether we must display the complete list of parameters
+ for functions and methods. *)
+val with_parameter_list : bool ref
+
+(** The list of module names to hide. *)
+val hidden_modules : string list ref
+
+(** The directory where files have to be generated. *)
+val target_dir : string ref
+
+(** An optional file to use where a CSS style is defined (for HTML). *)
+val css_style : string option ref
+
+(** Generate only index files. (for HTML). *)
+val index_only : bool ref
+
+(** To colorize code in HTML generated documentation pages, not code pages. *)
+val colorize_code : bool ref
+
+(** Encoding used in HTML pages header. *)
+val charset : string ref
+
+(** The flag which indicates if we must generate a header (for LaTeX). *)
+val with_header : bool ref
+
+(** The flag which indicates if we must generate a trailer (for LaTeX). *)
+val with_trailer : bool ref
+
+(** The flag to indicate if we must generate one file per module (for LaTeX). *)
+val separate_files : bool ref
+
+(** The list of pairs (title level, sectionning style). *)
+val latex_titles : (int * string) list ref
+
+(** The prefix to use for value labels in LaTeX. *)
+val latex_value_prefix : string ref
+
+(** The prefix to use for type labels in LaTeX. *)
+val latex_type_prefix : string ref
+
+(** The prefix to use for exception labels in LaTeX. *)
+val latex_exception_prefix : string ref
+
+(** The prefix to use for module labels in LaTeX. *)
+val latex_module_prefix : string ref
+
+(** The prefix to use for module type labels in LaTeX. *)
+val latex_module_type_prefix : string ref
+
+(** The prefix to use for class labels in LaTeX. *)
+val latex_class_prefix : string ref
+
+(** The prefix to use for class type labels in LaTeX. *)
+val latex_class_type_prefix : string ref
+
+(** The prefix to use for attribute labels in LaTeX. *)
+val latex_attribute_prefix : string ref
+
+(** The prefix to use for method labels in LaTeX. *)
+val latex_method_prefix : string ref
+
+(** The flag which indicates if we must generate a table of contents (for LaTeX). *)
+val with_toc : bool ref
+
+(** The flag which indicates if we must generate an index (for TeXinfo). *)
+val with_index : bool ref
+
+(** The flag which indicates if we must escape accentuated characters (for TeXinfo).*)
+val esc_8bits : bool ref
+
+(** The Info directory section *)
+val info_section : string ref
+
+(** The Info directory entries to insert *)
+val info_entry : string list ref
+
+(** Include all modules or only the ones on the command line, for the dot output. *)
+val dot_include_all : bool ref
+
+(** Generate dependency graph for types. *)
+val dot_types : bool ref
+
+(** Perform transitive reduction before dot output. *)
+val dot_reduce : bool ref
+
+(** The colors used in the dot output. *)
+val dot_colors : string list ref
+
+(** The suffix for man pages. *)
+val man_suffix : string ref
+
+(** The section for man pages. *)
+val man_section : string ref
+
+(** The flag to generate all man pages or only for modules and classes.*)
+val man_mini : bool ref
+
+(** The files to be analysed. *)
+val files : source_file list ref
+
(** To set the documentation generator. *)
val set_generator : Odoc_gen.generator -> unit
diff --git a/ocamldoc/odoc_html.ml b/ocamldoc/odoc_html.ml
index 03dc4e64ed..910138fe2d 100644
--- a/ocamldoc/odoc_html.ml
+++ b/ocamldoc/odoc_html.ml
@@ -534,28 +534,34 @@ class virtual info =
match l with
[] -> ()
| _ ->
- bp b "<b>%s:</b> %s<br>\n"
- Odoc_messages.authors
- (String.concat ", " l)
+ bp b "<b>%s:</b> " Odoc_messages.authors;
+ self#html_of_text b [Raw (String.concat ", " l)];
+ bs b "<br>\n"
(** Print html code for the given optional version information.*)
method html_of_version_opt b v_opt =
match v_opt with
None -> ()
| Some v ->
- bp b "<b>%s:</b> %s<br>\n" Odoc_messages.version v
+ bp b "<b>%s:</b> " Odoc_messages.version;
+ self#html_of_text b [Raw v];
+ bs b "<br>\n"
(** Print html code for the given optional since information.*)
method html_of_since_opt b s_opt =
match s_opt with
None -> ()
| Some s ->
- bp b "<b>%s</b> %s<br>\n" Odoc_messages.since s
+ bp b "<b>%s</b> " Odoc_messages.since;
+ self#html_of_text b [Raw s];
+ bs b "<br>\n"
(** Print html code for the given "before" information.*)
method html_of_before b l =
let f (v, text) =
- bp b "<b>%s %s </b> " Odoc_messages.before v;
+ bp b "<b>%s " Odoc_messages.before;
+ self#html_of_text b [Raw v];
+ bs b " </b> ";
self#html_of_text b text;
bs b "<br>\n"
in
@@ -728,6 +734,13 @@ class html =
inherit text
inherit info
+ val mutable doctype =
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"
+ method character_encoding () =
+ Printf.sprintf
+ "<meta content=\"text/html; charset=%s\" http-equiv=\"Content-Type\">\n"
+ !Odoc_info.Args.charset
+
(** The default style options. *)
val mutable default_style_options =
["a:visited {color : #416DFF; text-decoration : none; }" ;
@@ -930,7 +943,8 @@ class html =
bp b "<link title=\"%s\" rel=Appendix href=\"%s\">\n" m url
in
bs b "<head>\n";
- bs b style;
+ bs b style;
+ bs b (self#character_encoding ()) ;
bs b "<link rel=\"Start\" href=\"";
bs b self#index;
bs b "\">\n" ;
diff --git a/ocamldoc/odoc_info.mli b/ocamldoc/odoc_info.mli
index c79b139140..a91ef3f23f 100644
--- a/ocamldoc/odoc_info.mli
+++ b/ocamldoc/odoc_info.mli
@@ -960,6 +960,109 @@ module Global :
val with_trailer : bool ref
end
+ (** The list of module names to hide. *)
+ val hidden_modules : string list ref
+
+ (** The directory where files have to be generated. *)
+ val target_dir : string ref
+
+ (** An optional file to use where a CSS style is defined (for HTML). *)
+ val css_style : string option ref
+
+ (** Generate only index files. (for HTML). *)
+ val index_only : bool ref
+
+ (** To colorize code in HTML generated documentation pages, not code pages. *)
+ val colorize_code : bool ref
+
+ (** Character encoding used in HTML pages header. *)
+ val charset : string ref
+
+ (** The flag which indicates if we must generate a header (for LaTeX). *)
+ val with_header : bool ref
+
+ (** The flag which indicates if we must generate a trailer (for LaTeX). *)
+ val with_trailer : bool ref
+
+ (** The flag to indicate if we must generate one file per module (for LaTeX). *)
+ val separate_files : bool ref
+
+ (** The list of pairs (title level, sectionning style). *)
+ val latex_titles : (int * string) list ref
+
+ (** The prefix to use for value labels in LaTeX. *)
+ val latex_value_prefix : string ref
+
+ (** The prefix to use for type labels in LaTeX. *)
+ val latex_type_prefix : string ref
+
+ (** The prefix to use for exception labels in LaTeX. *)
+ val latex_exception_prefix : string ref
+
+ (** The prefix to use for module labels in LaTeX. *)
+ val latex_module_prefix : string ref
+
+ (** The prefix to use for module type labels in LaTeX. *)
+ val latex_module_type_prefix : string ref
+
+ (** The prefix to use for class labels in LaTeX. *)
+ val latex_class_prefix : string ref
+
+ (** The prefix to use for class type labels in LaTeX. *)
+ val latex_class_type_prefix : string ref
+
+ (** The prefix to use for attribute labels in LaTeX. *)
+ val latex_attribute_prefix : string ref
+
+ (** The prefix to use for method labels in LaTeX. *)
+ val latex_method_prefix : string ref
+
+ (** The flag which indicates if we must generate a table of contents (for LaTeX). *)
+ val with_toc : bool ref
+
+ (** The flag which indicates if we must generate an index (for TeXinfo). *)
+ val with_index : bool ref
+
+ (** The flag which indicates if we must escape accentuated characters (for TeXinfo).*)
+ val esc_8bits : bool ref
+
+ (** The Info directory section *)
+ val info_section : string ref
+
+ (** The Info directory entries to insert *)
+ val info_entry : string list ref
+
+ (** Include all modules or only the ones on the command line, for the dot output. *)
+ val dot_include_all : bool ref
+
+ (** Generate dependency graph for types. *)
+ val dot_types : bool ref
+
+ (** Perform transitive reduction before dot output. *)
+ val dot_reduce : bool ref
+
+ (** The colors used in the dot output. *)
+ val dot_colors : string list ref
+
+ (** The suffix for man pages. *)
+ val man_suffix : string ref
+
+ (** The section for man pages. *)
+ val man_section : string ref
+
+ (** The flag to generate all man pages or only for modules and classes.*)
+ val man_mini : bool ref
+
+ (** The files to be analysed. *)
+ val files : source_file list ref
+
+ (** To set the documentation generator. *)
+ val set_doc_generator : doc_generator option -> unit
+
+ (** Add an option specification. *)
+ val add_option : string * Arg.spec * string -> unit
+ end
+
(** Analysis of the given source files.
@param init is the list of modules already known from a previous analysis.
@return the list of analysed top modules. *)
diff --git a/ocamldoc/odoc_latex_style.ml b/ocamldoc/odoc_latex_style.ml
index a689b26866..db0964a71c 100644
--- a/ocamldoc/odoc_latex_style.ml
+++ b/ocamldoc/odoc_latex_style.ml
@@ -13,79 +13,79 @@
(* $Id$ *)
-let content ="\n\
-%% Support macros for LaTeX documentation generated by ocamldoc.\n\
-%% This file is in the public domain; do what you want with it.\n\
+let content ="\
+\n%% Support macros for LaTeX documentation generated by ocamldoc.\
+\n%% This file is in the public domain; do what you want with it.\
\n\
-\\NeedsTeXFormat{LaTeX2e}\n\
-\\ProvidesPackage{ocamldoc}\n\
- [2001/12/04 v1.0 ocamldoc support]\n\
+\n\\NeedsTeXFormat{LaTeX2e}\
+\n\\ProvidesPackage{ocamldoc}\
+\n [2001/12/04 v1.0 ocamldoc support]\
\n\
-\\newenvironment{ocamldoccode}{%\n\
- \\bgroup\n\
- \\leftskip\\@totalleftmargin\n\
- \\rightskip\\z@skip\n\
- \\parindent\\z@\n\
- \\parfillskip\\@flushglue\n\
- \\parskip\\z@skip\n\
- %\\noindent\n\
- \\@@par\\smallskip\n\
- \\@tempswafalse\n\
- \\def\\par{%\n\
- \\if@tempswa\n\
- \\leavevmode\\null\\@@par\\penalty\\interlinepenalty\n\
- \\else\n\
- \\@tempswatrue\n\
- \\ifhmode\\@@par\\penalty\\interlinepenalty\\fi\n\
- \\fi}\n\
- \\obeylines\n\
- \\verbatim@font\n\
- \\let\\org@prime~%\n\
- \\@noligs\n\
- \\let\\org@dospecials\\dospecials\n\
- \\g@remfrom@specials{\\\\}\n\
- \\g@remfrom@specials{\\{}\n\
- \\g@remfrom@specials{\\}}\n\
- \\let\\do\\@makeother\n\
- \\dospecials\n\
- \\let\\dospecials\\org@dospecials\n\
- \\frenchspacing\\@vobeyspaces\n\
- \\everypar \\expandafter{\\the\\everypar \\unpenalty}}\n\
-{\\egroup\\par}\n\
+\n\\newenvironment{ocamldoccode}{%\
+\n \\bgroup\
+\n \\leftskip\\@totalleftmargin\
+\n \\rightskip\\z@skip\
+\n \\parindent\\z@\
+\n \\parfillskip\\@flushglue\
+\n \\parskip\\z@skip\
+\n %\\noindent\
+\n \\@@par\\smallskip\
+\n \\@tempswafalse\
+\n \\def\\par{%\
+\n \\if@tempswa\
+\n \\leavevmode\\null\\@@par\\penalty\\interlinepenalty\
+\n \\else\
+\n \\@tempswatrue\
+\n \\ifhmode\\@@par\\penalty\\interlinepenalty\\fi\
+\n \\fi}\
+\n \\obeylines\
+\n \\verbatim@font\
+\n \\let\\org@prime~%\
+\n \\@noligs\
+\n \\let\\org@dospecials\\dospecials\
+\n \\g@remfrom@specials{\\\\}\
+\n \\g@remfrom@specials{\\{}\
+\n \\g@remfrom@specials{\\}}\
+\n \\let\\do\\@makeother\
+\n \\dospecials\
+\n \\let\\dospecials\\org@dospecials\
+\n \\frenchspacing\\@vobeyspaces\
+\n \\everypar \\expandafter{\\the\\everypar \\unpenalty}}\
+\n{\\egroup\\par}\
\n\
-\\def\\g@remfrom@specials#1{%\n\
- \\def\\@new@specials{}\n\
- \\def\\@remove##1{%\n\
- \\ifx##1#1\\else\n\
- \\g@addto@macro\\@new@specials{\\do ##1}\\fi}\n\
- \\let\\do\\@remove\\dospecials\n\
- \\let\\dospecials\\@new@specials\n\
- }\n\
+\n\\def\\g@remfrom@specials#1{%\
+\n \\def\\@new@specials{}\
+\n \\def\\@remove##1{%\
+\n \\ifx##1#1\\else\
+\n \\g@addto@macro\\@new@specials{\\do ##1}\\fi}\
+\n \\let\\do\\@remove\\dospecials\
+\n \\let\\dospecials\\@new@specials\
+\n }\
\n\
-\\newenvironment{ocamldocdescription}\n\
-{\\list{}{\\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax\\ignorespaces}\n\
-{\\endlist\\medskip}\n\
+\n\\newenvironment{ocamldocdescription}\
+\n{\\list{}{\\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax\\ignorespaces}\
+\n{\\endlist\\medskip}\
\n\
-\\newenvironment{ocamldoccomment}\n\
-{\\list{}{\\leftmargin 2\\leftmargini \\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax}\n\
-{\\endlist}\n\
+\n\\newenvironment{ocamldoccomment}\
+\n{\\list{}{\\leftmargin 2\\leftmargini \\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax}\
+\n{\\endlist}\
\n\
-\\let \\ocamldocparagraph \\paragraph\n\
-\\def \\paragraph #1{\\ocamldocparagraph {#1}\\noindent}\n\
-\\let \\ocamldocsubparagraph \\subparagraph\n\
-\\def \\subparagraph #1{\\ocamldocsubparagraph {#1}\\noindent}\n\
+\n\\let \\ocamldocparagraph \\paragraph\
+\n\\def \\paragraph #1{\\ocamldocparagraph {#1}\\noindent}\
+\n\\let \\ocamldocsubparagraph \\subparagraph\
+\n\\def \\subparagraph #1{\\ocamldocsubparagraph {#1}\\noindent}\
\n\
-\\let\\ocamldocvspace\\vspace\n\
+\n\\let\\ocamldocvspace\\vspace\
\n\
-\\newenvironment{ocamldocindent}{\\list{}{}\\item\\relax}{\\endlist}\n\
-\\newenvironment{ocamldocsigend}\n\
- {\\noindent\\quad\\texttt{sig}\\ocamldocindent}\n\
- {\\endocamldocindent\\vskip -\\lastskip\n\
- \\noindent\\quad\\texttt{end}\\medskip}\n\
-\\newenvironment{ocamldocobjectend}\n\
- {\\noindent\\quad\\texttt{object}\\ocamldocindent}\n\
- {\\endocamldocindent\\vskip -\\lastskip\n\
- \\noindent\\quad\\texttt{end}\\medskip}\n\
+\n\\newenvironment{ocamldocindent}{\\list{}{}\\item\\relax}{\\endlist}\
+\n\\newenvironment{ocamldocsigend}\
+\n {\\noindent\\quad\\texttt{sig}\\ocamldocindent}\
+\n {\\endocamldocindent\\vskip -\\lastskip\
+\n \\noindent\\quad\\texttt{end}\\medskip}\
+\n\\newenvironment{ocamldocobjectend}\
+\n {\\noindent\\quad\\texttt{object}\\ocamldocindent}\
+\n {\\endocamldocindent\\vskip -\\lastskip\
+\n \\noindent\\quad\\texttt{end}\\medskip}\
\n\
-\\endinput\n\
-"
+\n\\endinput\
+\n"
diff --git a/ocamldoc/odoc_merge.ml b/ocamldoc/odoc_merge.ml
index 38de022923..eb20d15d30 100644
--- a/ocamldoc/odoc_merge.ml
+++ b/ocamldoc/odoc_merge.ml
@@ -43,6 +43,8 @@ let merge_before_tags l =
iter [] l
;;
+let version_separators = Str.regexp "[\\.\\+]";;
+
(** Merge two Odoctypes.info struture, completing the information of
the first one with the information in the second one.
The merge treatment depends on a given merge_option list.
@@ -103,12 +105,20 @@ let merge_info merge_options (m1 : info) (m2 : info) =
else
Some v1
in
-<<<<<<< .courant
- let new_dep =
-=======
- let new_before = merge_before_tags (m1.i_before @ m2.i_before) in
+ let new_before =
+ match m1.i_before, m2.i_before with
+ [], [] -> []
+ | l, []
+ | [], l -> l
+ | l1, l2 ->
+ if List.mem Merge_before merge_options then
+ merge_before_tags (m1.i_before @ m2.i_before)
+ else
+ l1 in
+ let new_before = List.map (fun (v, t) -> (Str.split version_separators v, v, t)) new_before in
+ let new_before = List.sort Pervasives.compare new_before in
+ let new_before = List.map (fun (_, v, t) -> (v, t)) new_before in
let new_dep =
->>>>>>> .fusion-droit.r10497
match m1.i_deprecated, m2.i_deprecated with
None, None -> None
| None, Some t
diff --git a/ocamldoc/odoc_messages.ml b/ocamldoc/odoc_messages.ml
index 9f2c634738..028dae9a6c 100644
--- a/ocamldoc/odoc_messages.ml
+++ b/ocamldoc/odoc_messages.ml
@@ -21,8 +21,8 @@ let message_version = software^" "^config_version
(** Messages for command line *)
-let usage = "Usage : "^(Sys.argv.(0))^" [options] <files>\n"
-let options_are = "Options are :"
+let usage = "Usage: "^(Sys.argv.(0))^" [options] <files>\n"
+let options_are = "Options are:"
let option_version = "\tPrint version and exit"
let latex_only = "(LaTeX only)"
let texi_only = "(TeXinfo only)"
@@ -50,6 +50,9 @@ let load = "<file>\tLoad information from <file> ; may be used several times"
let css_style = "<file>\n\t\tUse content of <file> as CSS style definition "^html_only
let index_only = "\tGenerate index files only "^html_only
let colorize_code = "\n\t\tColorize code even in documentation pages "^html_only
+let charset c = Printf.sprintf
+ "<s>\n\t\tAdd information about character encoding being s\n\t\t(default is %s)"
+ c
let generate_html = "\tGenerate HTML documentation"
let generate_latex = "\tGenerate LaTeX documentation"
let generate_texinfo = "\tGenerate TeXinfo documentation"
@@ -60,7 +63,7 @@ let option_not_in_native_code op = "Option "^op^" not available in native code v
let default_out_file = "ocamldoc.out"
let out_file =
- "<file>\tSet the ouput file name, used by texi, latex and dot generators\n"^
+ "<file>\tSet the output file name, used by texi, latex and dot generators\n"^
"\t\t(default is "^default_out_file^")"
let dot_include_all =
@@ -167,6 +170,7 @@ let merge_author = ('a', "merge @author")
let merge_version = ('v', "merge @version")
let merge_see = ('l', "merge @see")
let merge_since = ('s', "merge @since")
+let merge_before = ('b', "merge @before")
let merge_deprecated = ('o', "merge @deprecated")
let merge_param = ('p', "merge @param")
let merge_raised_exception = ('e', "merge @raise")
@@ -194,6 +198,7 @@ let merge_options =
merge_version ;
merge_see ;
merge_since ;
+ merge_before ;
merge_deprecated ;
merge_param ;
merge_raised_exception ;
@@ -202,6 +207,8 @@ let merge_options =
merge_all ]
)
+let help = "\t\tDisplay this list of options"
+
(** Error and warning messages *)
diff --git a/ocamldoc/odoc_types.ml b/ocamldoc/odoc_types.ml
index 97195c50b1..be8e4a2894 100644
--- a/ocamldoc/odoc_types.ml
+++ b/ocamldoc/odoc_types.ml
@@ -102,6 +102,7 @@ type merge_option =
| Merge_version
| Merge_see
| Merge_since
+ | Merge_before
| Merge_deprecated
| Merge_param
| Merge_raised_exception
@@ -114,6 +115,7 @@ let all_merge_options = [
Merge_version ;
Merge_see ;
Merge_since ;
+ Merge_before ;
Merge_deprecated ;
Merge_param ;
Merge_raised_exception ;
diff --git a/ocamldoc/odoc_types.mli b/ocamldoc/odoc_types.mli
index 8d3d5a99f4..c14c3411af 100644
--- a/ocamldoc/odoc_types.mli
+++ b/ocamldoc/odoc_types.mli
@@ -107,6 +107,7 @@ type merge_option =
| Merge_version (** Versions are concatenated. *)
| Merge_see (** See references are concatenated. *)
| Merge_since (** Since information are concatenated. *)
+ | Merge_before (** Before information are concatenated. *)
| Merge_deprecated (** Deprecated information are concatenated. *)
| Merge_param (** Information on each parameter is concatenated,
and all parameters are kept. *)
diff --git a/otherlibs/bigarray/bigarray_stubs.c b/otherlibs/bigarray/bigarray_stubs.c
index 0dbcd5af0f..de1a1fe6cb 100644
--- a/otherlibs/bigarray/bigarray_stubs.c
+++ b/otherlibs/bigarray/bigarray_stubs.c
@@ -529,8 +529,13 @@ static int caml_ba_compare(value v1, value v2)
struct caml_bigarray * b1 = Bigarray_val(v1);
struct caml_bigarray * b2 = Bigarray_val(v2);
uintnat n, num_elts;
+ intnat flags1, flags2;
int i;
+ /* Compare kind & layout in case the arguments are of different types */
+ flags1 = b1->flags & (CAML_BA_KIND_MASK | CAML_BA_LAYOUT_MASK);
+ flags2 = b2->flags & (CAML_BA_KIND_MASK | CAML_BA_LAYOUT_MASK);
+ if (flags1 != flags2) return flags2 - flags1;
/* Compare number of dimensions */
if (b1->num_dims != b2->num_dims) return b2->num_dims - b1->num_dims;
/* Same number of dimensions: compare dimensions lexicographically */
diff --git a/otherlibs/bigarray/mmap_unix.c b/otherlibs/bigarray/mmap_unix.c
index aa3a447a37..367b2244be 100644
--- a/otherlibs/bigarray/mmap_unix.c
+++ b/otherlibs/bigarray/mmap_unix.c
@@ -21,6 +21,7 @@
#include "io.h"
#include "mlvalues.h"
#include "sys.h"
+#include "signals.h"
extern int caml_ba_element_size[]; /* from bigarray_stubs.c */
@@ -146,7 +147,7 @@ CAMLprim value caml_ba_map_file(value vfd, value vkind, value vlayout,
value caml_ba_map_file(value vfd, value vkind, value vlayout,
value vshared, value vdim, value vpos)
{
- invalid_argument("Bigarray.map_file: not supported");
+ caml_invalid_argument("Bigarray.map_file: not supported");
return Val_unit;
}
diff --git a/otherlibs/bigarray/mmap_win32.c b/otherlibs/bigarray/mmap_win32.c
index 9d33cb89a9..050db5d266 100644
--- a/otherlibs/bigarray/mmap_win32.c
+++ b/otherlibs/bigarray/mmap_win32.c
@@ -108,7 +108,7 @@ CAMLprim value caml_ba_map_file(value vfd, value vkind, value vlayout,
if (fmap == NULL) caml_ba_sys_error();
/* Determine offset so that the mapping starts at the given file pos */
GetSystemInfo(&sysinfo);
- delta = (uintnat) (startpos % sysinfo.dwPageSize);
+ delta = (uintnat) (startpos % sysinfo.dwAllocationGranularity);
/* Map the mapping in memory */
li.QuadPart = startpos - delta;
addr =
@@ -133,7 +133,7 @@ void caml_ba_unmap_file(void * addr, uintnat len)
uintnat delta;
GetSystemInfo(&sysinfo);
- delta = (uintnat) addr % sysinfo.dwPageSize;
+ delta = (uintnat) addr % sysinfo.dwAllocationGranularity;
UnmapViewOfFile((void *)((uintnat)addr - delta));
}
diff --git a/otherlibs/db/.depend b/otherlibs/db/.depend
deleted file mode 100644
index ba0e54e577..0000000000
--- a/otherlibs/db/.depend
+++ /dev/null
@@ -1,2 +0,0 @@
-db.cmo: db.cmi
-db.cmx: db.cmi
diff --git a/otherlibs/join/joinTextProc.ml b/otherlibs/join/joinTextProc.ml
index 2250d83d79..7a105ca4d3 100644
--- a/otherlibs/join/joinTextProc.ml
+++ b/otherlibs/join/joinTextProc.ml
@@ -43,14 +43,17 @@ module Async = struct
{ out : producer ;
err : producer ;
waitpid : Unix.process_status Join.chan Join.chan ;
- kill : int -> unit; }
+ kill : int -> unit;
+ gkill : int -> unit; }
let et =
let ep = JoinCom.P.empty() in
{ out=ep; err=ep;
waitpid=(def k(_) = 0 in k);
- kill=(fun _ -> ()); }
+ kill=(fun _ -> ());
+ gkill=(fun _ -> ());
+ }
def producer_to_chan (prod,chan) = JoinCom.P.to_text_close (prod,chan)
@@ -68,6 +71,7 @@ module Async = struct
spawn waited(safe_wait pid) ;
{ r with
kill=async_kill pid prods chans;
+ gkill=async_kill (-pid) prods chans;
waitpid=waitpid; }
let of_text chan = JoinCom.P.of_text chan
@@ -124,7 +128,8 @@ module Sync = struct
type t =
{ wait : unit -> result;
- kill : int -> unit; }
+ kill : int -> unit;
+ gkill : int -> unit; }
module P = JoinCom.P
@@ -148,7 +153,7 @@ module Sync = struct
def wait_ter() & waitpid(st) =
reply { er with st=st; } to wait_ter in
let () = spawn ext.Async.waitpid(waitpid) in
- { wait=wait_ter; kill=ext.Async.kill; }
+ { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; }
let open_in cmd argv =
let ext = Async.open_in cmd argv in
@@ -158,7 +163,7 @@ module Sync = struct
consume(ext.Async.out,verb "OUT" out) &
ext.Async.waitpid(waitpid)
end in
- { wait=wait_ter; kill=ext.Async.kill; }
+ { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; }
let open_in_out cmd argv =
@@ -169,7 +174,8 @@ module Sync = struct
reply { er with st=st; out=os; } to wait_ter in
consume(ext.Async.out,verb "OUT" out) &
ext.Async.waitpid(waitpid) &
- reply { wait=wait_ter; kill=ext.Async.kill; } to fork in
+ reply { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill;}
+ to fork in
fork
@@ -182,6 +188,7 @@ module Sync = struct
consume(ext.Async.out,verb "OUT" out) &
consume(ext.Async.err,verb "ERR" err) &
ext.Async.waitpid(waitpid) &
- reply { wait=wait_ter; kill=ext.Async.kill; } to fork in
+ reply { wait=wait_ter; kill=ext.Async.kill; gkill=ext.Async.gkill; }
+ to fork in
fork
end
diff --git a/otherlibs/join/joinTextProc.mli b/otherlibs/join/joinTextProc.mli
index c8391e9331..a7fb1b5aea 100644
--- a/otherlibs/join/joinTextProc.mli
+++ b/otherlibs/join/joinTextProc.mli
@@ -32,6 +32,7 @@ module Async : sig
err : producer ; (** Connected to child process standard error *)
waitpid : Unix.process_status Join.chan Join.chan ; (** Invoke continuation argument when child process changes status. *)
kill : int -> unit; (** Send (Unix) signal to child process *)
+ gkill : int -> unit (** Send (Unix) signal to child process group *)
}
(** Notice that [out] or [err] above can be empty producers when
child process channels redirection is not commanded. *)
@@ -84,7 +85,8 @@ module Sync : sig
type t = (** Abstraction of forked command *)
{ wait : unit -> result; (** Get result (will block) *)
- kill : int -> unit; (** Kill child *)
+ kill : int -> unit; (** Kill child *)
+ gkill : int -> unit; (** Kill child group *)
}
val command : string -> string array -> t
(** Analogous of {!JoinProc.command}.
diff --git a/otherlibs/labltk/browser/shell.ml b/otherlibs/labltk/browser/shell.ml
index 18e1f34945..e570e95444 100644
--- a/otherlibs/labltk/browser/shell.ml
+++ b/otherlibs/labltk/browser/shell.ml
@@ -254,7 +254,7 @@ let may_exec =
let path_sep = if is_win32 then ";" else ":"
-let warnings = ref "Al"
+let warnings = ref Warnings.defaults_w
let program_not_found prog =
Jg_message.info ~title:"Error"
diff --git a/otherlibs/num/big_int.ml b/otherlibs/num/big_int.ml
index fd0e5ef502..2121f07ce3 100644
--- a/otherlibs/num/big_int.ml
+++ b/otherlibs/num/big_int.ml
@@ -701,7 +701,9 @@ let shift_right_towards_zero_big_int bi n =
let tmp = create_nat 1 in
shift_right_nat res 0 size_res tmp 0 nbits
end;
- { sign = bi.sign; abs_value = res }
+ if is_zero_nat res 0 size_res
+ then zero_big_int
+ else { sign = bi.sign; abs_value = res }
end
end
diff --git a/otherlibs/systhreads/Makefile b/otherlibs/systhreads/Makefile
index c8ef736625..0f544ab008 100644
--- a/otherlibs/systhreads/Makefile
+++ b/otherlibs/systhreads/Makefile
@@ -21,7 +21,7 @@ JCC=../../ocamlcomp.sh -I ../unix
JCOPT=../../ocamlcompopt.sh -I ../unix
MKLIB=../../boot/ocamlrun ../../tools/ocamlmklib
COMPFLAGS=-warn-error A -g
-OCAMLPP=-pp '../../ocamldoc/remove_DEBUG'
+OCAMLPP=-pp '../../tools/remove_DEBUG'
BYTECODE_JOIN_C_OBJS=join_b.o
diff --git a/otherlibs/systhreads/st_stubs.c b/otherlibs/systhreads/st_stubs.c
index 2e65ecd0b0..fbef6ea051 100644
--- a/otherlibs/systhreads/st_stubs.c
+++ b/otherlibs/systhreads/st_stubs.c
@@ -451,6 +451,11 @@ CAMLprim value caml_thread_cleanup(value unit) /* ML */
static void caml_thread_stop(void)
{
+#ifndef NATIVE_CODE
+ /* PR#5188: update curr_thread->stack_low because the stack may have
+ been reallocated since the last time we entered a blocking section */
+ curr_thread->stack_low = stack_low;
+#endif
/* Signal that the thread has terminated */
caml_threadstatus_terminate(Terminated(curr_thread->descr));
/* Remove th from the doubly-linked list of threads and free its info block */
diff --git a/otherlibs/systhreads/thread.ml b/otherlibs/systhreads/thread.ml
index e7d528f646..18cc819bbf 100644
--- a/otherlibs/systhreads/thread.ml
+++ b/otherlibs/systhreads/thread.ml
@@ -18,6 +18,7 @@
type t
external thread_initialize : unit -> unit = "caml_thread_initialize"
+external thread_cleanup : unit -> unit = "caml_thread_cleanup"
external thread_new : (unit -> unit) -> t = "caml_thread_new"
external thread_uncaught_exception : exn -> unit =
"caml_thread_uncaught_exception"
@@ -57,8 +58,17 @@ let preempt_signal =
| _ -> Sys.sigvtalrm
let _ =
- ignore(Sys.signal preempt_signal (Sys.Signal_handle preempt));
- thread_initialize()
+ Sys.set_signal preempt_signal (Sys.Signal_handle preempt);
+ thread_initialize();
+ at_exit
+ (fun () ->
+ thread_cleanup();
+ (* In case of DLL-embedded Ocaml the preempt_signal handler
+ will point to nowhere after DLL unloading and an accidental
+ preempt_signal will crash the main program. So restore the
+ default handler. *)
+ Sys.set_signal preempt_signal Sys.Signal_default
+ )
(* Wait functions *)
diff --git a/otherlibs/threads/.depend b/otherlibs/threads/.depend
index 677b36df86..95075f3cfc 100644
--- a/otherlibs/threads/.depend
+++ b/otherlibs/threads/.depend
@@ -22,24 +22,21 @@ event.cmi:
join_debug.cmi:
join_extern.cmi: thread.cmi
join_hash.cmi:
-join_link.cmi: unix.cmi
+join_link.cmi: unix.cmo
join_message.cmi: join_types.cmi join_link.cmi
-join_misc.cmi: unix.cmi marshal.cmi
-join_port.cmi: unix.cmi join_link.cmi
+join_misc.cmi: unix.cmo marshal.cmo
+join_port.cmi: unix.cmo join_link.cmi
join_prim.cmi: join_types.cmi
join_queue.cmi:
join_scheduler.cmi: mutex.cmi join_types.cmi
join_set.cmi:
-join_space.cmi: unix.cmi marshal.cmi join_types.cmi
-join_test.cmi: marshal.cmi join_types.cmi
-join_types.cmi: unix.cmi mutex.cmi join_set.cmi join_misc.cmi join_link.cmi \
+join_space.cmi: unix.cmo marshal.cmo join_types.cmi
+join_test.cmi: marshal.cmo join_types.cmi
+join_types.cmi: unix.cmo mutex.cmi join_set.cmi join_misc.cmi join_link.cmi \
join_hash.cmi condition.cmi
-marshal.cmi:
mutex.cmi:
-pervasives.cmi:
-thread.cmi: unix.cmi
-threadUnix.cmi: unix.cmi
-unix.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
@@ -50,15 +47,15 @@ join_extern.cmo: thread.cmi join_extern.cmi
join_extern.cmx: thread.cmx join_extern.cmi
join_hash.cmo: join_misc.cmi join_hash.cmi
join_hash.cmx: join_misc.cmx join_hash.cmi
-join_link.cmo: unix.cmi join_misc.cmi join_debug.cmi join_link.cmi
+join_link.cmo: unix.cmo join_misc.cmi join_debug.cmi join_link.cmi
join_link.cmx: unix.cmx join_misc.cmx join_debug.cmx join_link.cmi
-join_message.cmo: marshal.cmi join_types.cmi join_link.cmi join_hash.cmi \
+join_message.cmo: marshal.cmo join_types.cmi join_link.cmi join_hash.cmi \
join_debug.cmi join_message.cmi
join_message.cmx: marshal.cmx join_types.cmi join_link.cmx join_hash.cmx \
join_debug.cmx join_message.cmi
-join_misc.cmo: unix.cmi mutex.cmi join_debug.cmi condition.cmi join_misc.cmi
+join_misc.cmo: unix.cmo mutex.cmi join_debug.cmi condition.cmi join_misc.cmi
join_misc.cmx: unix.cmx mutex.cmx join_debug.cmx condition.cmx join_misc.cmi
-join_port.cmo: unix.cmi join_scheduler.cmi join_misc.cmi join_link.cmi \
+join_port.cmo: unix.cmo join_scheduler.cmi join_misc.cmi join_link.cmi \
join_debug.cmi join_port.cmi
join_port.cmx: unix.cmx join_scheduler.cmx join_misc.cmx join_link.cmx \
join_debug.cmx join_port.cmi
@@ -74,7 +71,7 @@ join_scheduler.cmx: thread.cmx mutex.cmx join_types.cmi join_misc.cmx \
join_extern.cmx join_debug.cmx condition.cmx join_scheduler.cmi
join_set.cmo: mutex.cmi join_misc.cmi join_set.cmi
join_set.cmx: mutex.cmx join_misc.cmx join_set.cmi
-join_space.cmo: unix.cmi thread.cmi pervasives.cmi mutex.cmi marshal.cmi \
+join_space.cmo: unix.cmo thread.cmi pervasives.cmo mutex.cmi marshal.cmo \
join_types.cmi join_set.cmi join_scheduler.cmi join_port.cmi \
join_misc.cmi join_message.cmi join_link.cmi join_hash.cmi join_debug.cmi \
condition.cmi join_space.cmi
@@ -84,15 +81,15 @@ join_space.cmx: unix.cmx thread.cmx pervasives.cmx mutex.cmx marshal.cmx \
condition.cmx join_space.cmi
join_test.cmo: join_space.cmi join_test.cmi
join_test.cmx: join_space.cmx join_test.cmi
-marshal.cmo: pervasives.cmi marshal.cmi
-marshal.cmx: pervasives.cmx marshal.cmi
+marshal.cmo: pervasives.cmo
+marshal.cmx: pervasives.cmx
mutex.cmo: thread.cmi mutex.cmi
mutex.cmx: thread.cmx mutex.cmi
-pervasives.cmo: unix.cmi pervasives.cmi
-pervasives.cmx: unix.cmx pervasives.cmi
-thread.cmo: unix.cmi thread.cmi
+pervasives.cmo: unix.cmo
+pervasives.cmx: unix.cmx
+thread.cmo: unix.cmo thread.cmi
thread.cmx: unix.cmx thread.cmi
-threadUnix.cmo: unix.cmi thread.cmi threadUnix.cmi
+threadUnix.cmo: unix.cmo thread.cmi threadUnix.cmi
threadUnix.cmx: unix.cmx thread.cmx threadUnix.cmi
-unix.cmo: unix.cmi
-unix.cmx: unix.cmi
+unix.cmo:
+unix.cmx:
diff --git a/otherlibs/threads/Makefile b/otherlibs/threads/Makefile
index 7de6ed1f48..0e1f3c0b07 100644
--- a/otherlibs/threads/Makefile
+++ b/otherlibs/threads/Makefile
@@ -22,7 +22,7 @@ CAMLC=../../ocamlcomp.sh -I ../unix $(NOJOIN)
JCC=../../ocamlcomp.sh -I ../unix
MKLIB=../../boot/ocamlrun ../../tools/ocamlmklib
COMPFLAGS=-warn-error A
-OCAMLPP=-pp '../../ocamldoc/remove_DEBUG'
+OCAMLPP=-pp '../../tools/remove_DEBUG'
JOIN_C_OBJS=join.o
diff --git a/otherlibs/unix/.depend b/otherlibs/unix/.depend
index cf80dc6992..daf5a6ac93 100644
--- a/otherlibs/unix/.depend
+++ b/otherlibs/unix/.depend
@@ -252,7 +252,8 @@ lockf.o: lockf.c ../../byterun/fail.h ../../byterun/compatibility.h \
lseek.o: lseek.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
../../byterun/config.h ../../byterun/../config/m.h \
../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
- ../../byterun/mlvalues.h ../../byterun/io.h unixsupport.h
+ ../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/signals.h \
+ unixsupport.h
mkdir.o: mkdir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
../../byterun/config.h ../../byterun/../config/m.h \
../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
diff --git a/otherlibs/unix/lseek.c b/otherlibs/unix/lseek.c
index cb59bb5517..d8180eaea6 100644
--- a/otherlibs/unix/lseek.c
+++ b/otherlibs/unix/lseek.c
@@ -18,6 +18,7 @@
#include <mlvalues.h>
#include <alloc.h>
#include <io.h>
+#include <signals.h>
#include "unixsupport.h"
#ifdef HAS_UNISTD
diff --git a/otherlibs/win32unix/channels.c b/otherlibs/win32unix/channels.c
index bcc97c88c0..8fdaec73ec 100644
--- a/otherlibs/win32unix/channels.c
+++ b/otherlibs/win32unix/channels.c
@@ -30,6 +30,7 @@ int win_CRT_fd_of_filedescr(value handle)
} else {
int fd = _open_osfhandle((long) Handle_val(handle), O_BINARY);
if (fd == -1) uerror("channel_of_descr", Nothing);
+ CRT_fd_val(handle) = fd;
return fd;
}
}
diff --git a/otherlibs/win32unix/close.c b/otherlibs/win32unix/close.c
index 48cd60e7aa..21254ef1e1 100644
--- a/otherlibs/win32unix/close.c
+++ b/otherlibs/win32unix/close.c
@@ -15,6 +15,9 @@
#include <mlvalues.h>
#include "unixsupport.h"
+#include <io.h>
+
+extern int _close(int);
CAMLprim value unix_close(value fd)
{
@@ -24,9 +27,17 @@ CAMLprim value unix_close(value fd)
uerror("close", Nothing);
}
} else {
- if (! CloseHandle(Handle_val(fd))) {
- win32_maperr(GetLastError());
- uerror("close", Nothing);
+ /* If we have an fd then closing it also closes
+ * the underlying handle. Also, closing only
+ * the handle and not the fd leads to fd leaks. */
+ if (CRT_fd_val(fd) != NO_CRT_FD) {
+ if (_close(CRT_fd_val(fd)) != 0)
+ uerror("close", Nothing);
+ } else {
+ if (! CloseHandle(Handle_val(fd))) {
+ win32_maperr(GetLastError());
+ uerror("close", Nothing);
+ }
}
}
return Val_unit;
diff --git a/parsing/parser.mly b/parsing/parser.mly
index 6905d40ff2..51750c20e3 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -1467,7 +1467,7 @@ simple_core_type2:
package_type:
mty_longident { ($1, []) }
| mty_longident WITH package_type_cstrs { ($1, $3) }
-
+;
package_type_cstr:
TYPE LIDENT EQUAL core_type { ($2, $4) }
;
diff --git a/stdlib/arg.ml b/stdlib/arg.ml
index 009e203753..ac552d38e8 100644
--- a/stdlib/arg.ml
+++ b/stdlib/arg.ml
@@ -90,10 +90,14 @@ let usage_b buf speclist errmsg =
List.iter (print_spec buf) (add_help speclist);
;;
-let usage speclist errmsg =
+let usage_string speclist errmsg =
let b = Buffer.create 200 in
usage_b b speclist errmsg;
- eprintf "%s" (Buffer.contents b);
+ Buffer.contents b;
+;;
+
+let usage speclist errmsg =
+ eprintf "%s" (usage_string speclist errmsg);
;;
let current = ref 0;;
diff --git a/stdlib/arg.mli b/stdlib/arg.mli
index 4e5ed08d1c..8872566152 100644
--- a/stdlib/arg.mli
+++ b/stdlib/arg.mli
@@ -79,7 +79,7 @@ val parse :
as their arguments appear on the command line.
If an error occurs, [Arg.parse] exits the program, after printing
- an error message as follows:
+ to standard error an error message as follows:
- The reason for the error: unknown option, invalid or missing argument, etc.
- [usage_msg]
- The list of options, each followed by the corresponding [doc] string.
@@ -88,9 +88,9 @@ val parse :
[-], include for example [("-", String anon_fun, doc)] in [speclist].
By default, [parse] recognizes two unit options, [-help] and [--help],
- which will display [usage_msg] and the list of options, and exit
- the program. You can override this behaviour by specifying your
- own [-help] and [--help] options in [speclist].
+ which will print to standard output [usage_msg] and the list of
+ options, and exit the program. You can override this behaviour
+ by specifying your own [-help] and [--help] options in [speclist].
*)
val parse_argv : ?current: int ref -> string array ->
@@ -115,11 +115,15 @@ exception Bad of string
[Arg.Bad] is also raised by [Arg.parse_argv] in case of an error. *)
val usage : (key * spec * doc) list -> usage_msg -> unit
-(** [Arg.usage speclist usage_msg] prints an error message including
- the list of valid options. This is the same message that
- {!Arg.parse} prints in case of error.
+(** [Arg.usage speclist usage_msg] prints to standard error
+ an error message that includes the list of valid options. This is
+ the same message that {!Arg.parse} prints in case of error.
[speclist] and [usage_msg] are the same as for [Arg.parse]. *)
+val usage_string : (key * spec * doc) list -> usage_msg -> string
+(** Returns the message that would have been printed by {!Arg.usage},
+ if provided with the same parameters. *)
+
val align: (key * spec * doc) list -> (key * spec * doc) list;;
(** Align the documentation strings by inserting spaces at the first
space, according to the length of the keyword. Use a
diff --git a/stdlib/camlheaderd b/stdlib/camlheaderd
index cb892db1b2..e34073c722 100644
--- a/stdlib/camlheaderd
+++ b/stdlib/camlheaderd
@@ -1 +1 @@
-#!/opt/jocaml-3.13/bin/ocamlrund
+#!/opt/jocamltrunk//bin/ocamlrund
diff --git a/stdlib/filename.mli b/stdlib/filename.mli
index e43f19ccf2..efbdcd98d5 100644
--- a/stdlib/filename.mli
+++ b/stdlib/filename.mli
@@ -82,6 +82,7 @@ val temp_file : ?temp_dir: string -> string -> string -> string
(readable and writable only by the file owner). The file is
guaranteed to be different from any other file that existed when
[temp_file] was called.
+ Raise [Sys_error] if the file could not be created.
@before 3.11.2 no ?temp_dir optional argument
*)
@@ -95,6 +96,7 @@ val open_temp_file :
[mode] is a list of additional flags to control the opening of the file.
It can contain one or several of [Open_append], [Open_binary],
and [Open_text]. The default is [[Open_text]] (open in text mode).
+ Raise [Sys_error] if the file could not be opened.
@before 3.11.2 no ?temp_dir optional argument
*)
diff --git a/stdlib/format.mli b/stdlib/format.mli
index 38123900aa..9b49c53f46 100644
--- a/stdlib/format.mli
+++ b/stdlib/format.mli
@@ -689,11 +689,11 @@ val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;;
(** {6 Deprecated} *)
val bprintf : Buffer.t -> ('a, formatter, unit) format -> 'a;;
-(** Deprecated and error prone function. Do not use it.
+(** A deprecated and error prone function. Do not use it.
If you need to print to some buffer [b], you must first define a
formatter writing to [b], using [let to_b = formatter_of_buffer b]; then
use regular calls to [Format.fprintf] on formatter [to_b]. *)
val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;;
-(** Deprecated name. A synonym for [ksprintf]. *)
+(** A deprecated synonym for [ksprintf]. *)
diff --git a/stdlib/parsing.ml b/stdlib/parsing.ml
index 44c7fb2715..5d53c74132 100644
--- a/stdlib/parsing.ml
+++ b/stdlib/parsing.ml
@@ -151,6 +151,7 @@ let yyparse tables start lexer lexbuf =
and init_stackbase = env.stackbase
and init_state = env.state
and init_curr_char = env.curr_char
+ and init_lval = env.lval
and init_errflag = env.errflag in
env.stackbase <- env.sp + 1;
env.curr_char <- start;
@@ -164,6 +165,7 @@ let yyparse tables start lexer lexbuf =
env.stackbase <- init_stackbase;
env.state <- init_state;
env.curr_char <- init_curr_char;
+ env.lval <- init_lval;
env.errflag <- init_errflag;
match exn with
YYexit v ->
diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli
index 13905ecc3d..70fd033626 100644
--- a/stdlib/pervasives.mli
+++ b/stdlib/pervasives.mli
@@ -310,7 +310,7 @@ external atan : float -> float = "caml_atan_float" "atan" "float"
Result is in radians and is between [-pi/2] and [pi/2]. *)
external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float"
-(** [atan x y] returns the arc tangent of [y /. x]. The signs of [x]
+(** [atan2 y x] returns the arc tangent of [y /. x]. The signs of [x]
and [y] are used to determine the quadrant of the result.
Result is in radians and is between [-pi] and [pi]. *)
@@ -505,7 +505,7 @@ val stdout : out_channel
(** The standard output for the process. *)
val stderr : out_channel
-(** The standard error ouput for the process. *)
+(** The standard error output for the process. *)
(** {7 Output functions on standard output} *)
@@ -858,9 +858,14 @@ external decr : int ref -> unit = "%decr"
included for backward compatibility with earlier releases of Objective
Caml.
['a] is the type of the parameters of the format,
- ['c] is the result type for the "printf"-style function,
- and ['b] is the type of the first argument given to
- [%a] and [%t] printing functions. *)
+ ['b] is the type of the first argument given to
+ [%a] and [%t] printing functions,
+ ['c] is the type of the argument transmitted to the first argument of
+ "kprintf"-style functions,
+ ['d] is the result type for the "scanf"-style functions,
+ ['e] is the type of the receiver function for the "scanf"-style functions,
+ ['f] is the result type for the "printf"-style function.
+ *)
type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6
type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4
diff --git a/stdlib/printf.ml b/stdlib/printf.ml
index a16c9184a1..13f16dd69f 100644
--- a/stdlib/printf.ml
+++ b/stdlib/printf.ml
@@ -106,6 +106,7 @@ let pad_string pad_char p neg s i len =
then String.blit s i res 0 len
else String.blit s i res (p - len) len;
res
+;;
(* Format a string given a %s format, e.g. %40s or %-20s.
To do ?: ignore other flags (#, +, etc). *)
@@ -196,7 +197,8 @@ let sub_format incomplete_format bad_conversion_format conv fmt i =
;;
let sub_format_for_printf conv =
- sub_format incomplete_format bad_conversion_format conv;;
+ sub_format incomplete_format bad_conversion_format conv
+;;
let iter_on_format_args fmt add_conv add_char =
@@ -307,7 +309,7 @@ let ac_of_format fmt =
let count_arguments_of_format fmt =
let ac = ac_of_format fmt in
- (* For printing only regular arguments have to be counted. *)
+ (* For printing, only the regular arguments have to be counted. *)
ac.ac_rglr
;;
@@ -376,7 +378,7 @@ type positional_specification =
Note that this is optimized for the regular case, i.e. no positional
parameter, since in this case we juste ``return'' the constant
[Spec_none]; in case we have a positional parameter, we ``return'' a
- [Spec_index] [positional_specification] which a bit more costly.
+ [Spec_index] [positional_specification] which is a bit more costly.
Note also that we do not support [*$] specifications, since this would
lead to type checking problems: a [*$] positional specification means
@@ -663,9 +665,13 @@ let ksprintf k =
mkprintf true get_buff Buffer.add_char Buffer.add_string ignore (get_cont k)
;;
+let sprintf fmt = ksprintf (fun s -> s) fmt;;
+
+(* Obsolete and deprecated. *)
let kprintf = ksprintf;;
-let sprintf fmt = ksprintf (fun s -> s) fmt;;
+(* For Caml system internal use only: needed to implement modules [Format]
+ and [Scanf]. *)
module CamlinternalPr = struct
diff --git a/stdlib/printf.mli b/stdlib/printf.mli
index 35d390a5f4..e122dececa 100644
--- a/stdlib/printf.mli
+++ b/stdlib/printf.mli
@@ -75,7 +75,7 @@ val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a
- [( fmt %)]: format string substitution. Takes a format string
argument and substitutes it to the internal format string [fmt]
to print following arguments. The argument must have the same
- type as [fmt].
+ type as the internal format string [fmt].
- [!]: take no argument and flush the output.
- [%]: take no argument and output one [%] character.
- [,]: the no-op delimiter for conversion specifications.
@@ -146,12 +146,14 @@ val kbprintf : (Buffer.t -> 'a) -> Buffer.t ->
@since 3.10.0
*)
+(** Deprecated *)
+
val kprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b;;
(** A deprecated synonym for [ksprintf]. *)
(**/**)
-(* For system use only. Don't call directly. *)
+(* For Caml system internal use only. Don't call directly. *)
module CamlinternalPr : sig
diff --git a/stdlib/scanf.mli b/stdlib/scanf.mli
index 373c9ae31e..59d8d9d936 100644
--- a/stdlib/scanf.mli
+++ b/stdlib/scanf.mli
@@ -131,7 +131,7 @@ val open_in : file_name -> in_channel;;
@since 3.12.0
*)
-val open_in_bin : file_name -> in_channel;;
+val open_in_bin : string -> in_channel;;
(** [Scanning.open_in_bin fname] returns a formatted input channel for bufferized
reading in binary mode of file [fname].
@since 3.12.0
diff --git a/stdlib/string.ml b/stdlib/string.ml
index e61e9efe90..72f9494cc0 100644
--- a/stdlib/string.ml
+++ b/stdlib/string.ml
@@ -183,4 +183,4 @@ let rcontains_from s i c =
type t = string
-let compare = Pervasives.compare
+let compare (x: t) (y: t) = Pervasives.compare x y
diff --git a/stdlib/sys.mli b/stdlib/sys.mli
index e1cf99aafa..713038aa7a 100644
--- a/stdlib/sys.mli
+++ b/stdlib/sys.mli
@@ -31,7 +31,7 @@ external is_directory : string -> bool = "caml_sys_is_directory"
(** Returns [true] if the given name refers to a directory,
[false] if it refers to another kind of file.
Raise [Sys_error] if no file exists with the given name.
- @since 3.12.0
+ @since 3.10.0
*)
external remove : string -> unit = "caml_sys_remove"
diff --git a/test/.cvsignore b/test/.cvsignore
deleted file mode 100644
index 66d34d7336..0000000000
--- a/test/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.byt
-*.out
diff --git a/test/.depend b/test/.depend
deleted file mode 100644
index ac5de61e8e..0000000000
--- a/test/.depend
+++ /dev/null
@@ -1,28 +0,0 @@
-KB/equations.cmi: KB/terms.cmi
-KB/kb.cmi: KB/equations.cmi KB/terms.cmi
-KB/orderings.cmi: KB/terms.cmi
-KB/equations.cmo: KB/equations.cmi KB/terms.cmi
-KB/equations.cmx: KB/equations.cmi KB/terms.cmx
-KB/kb.cmo: KB/kb.cmi KB/equations.cmi KB/terms.cmi
-KB/kb.cmx: KB/kb.cmi KB/equations.cmx KB/terms.cmx
-KB/kbmain.cmo: KB/kb.cmi KB/orderings.cmi KB/equations.cmi KB/terms.cmi
-KB/kbmain.cmx: KB/kb.cmx KB/orderings.cmx KB/equations.cmx KB/terms.cmx
-KB/orderings.cmo: KB/orderings.cmi KB/terms.cmi
-KB/orderings.cmx: KB/orderings.cmi KB/terms.cmx
-KB/terms.cmo: KB/terms.cmi
-KB/terms.cmx: KB/terms.cmi
-Lex/grammar.cmi: Lex/syntax.cmo
-Lex/gram_aux.cmo: Lex/syntax.cmo
-Lex/gram_aux.cmx: Lex/syntax.cmx
-Lex/grammar.cmo: Lex/grammar.cmi Lex/gram_aux.cmo Lex/syntax.cmo
-Lex/grammar.cmx: Lex/grammar.cmi Lex/gram_aux.cmx Lex/syntax.cmx
-Lex/lexgen.cmo: Lex/syntax.cmo
-Lex/lexgen.cmx: Lex/syntax.cmx
-Lex/main.cmo: Lex/lexgen.cmo Lex/output.cmo Lex/grammar.cmi \
- Lex/scanner.cmo Lex/syntax.cmo Lex/scan_aux.cmo
-Lex/main.cmx: Lex/lexgen.cmx Lex/output.cmx Lex/grammar.cmx \
- Lex/scanner.cmx Lex/syntax.cmx Lex/scan_aux.cmx
-Lex/output.cmo: Lex/syntax.cmo
-Lex/output.cmx: Lex/syntax.cmx
-Lex/scanner.cmo: Lex/syntax.cmo Lex/scan_aux.cmo Lex/grammar.cmi
-Lex/scanner.cmx: Lex/syntax.cmx Lex/scan_aux.cmx Lex/grammar.cmx
diff --git a/test/test_bng.c b/test/test_bng.c
deleted file mode 100644
index 2d6a6e8088..0000000000
--- a/test/test_bng.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/***********************************************************************/
-/* */
-/* Objective Caml */
-/* */
-/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
-/* */
-/* Copyright 2003 Institut National de Recherche en Informatique et */
-/* en Automatique. All rights reserved. This file is distributed */
-/* under the terms of the GNU Library General Public License, with */
-/* the special exception on linking described in file ../../LICENSE. */
-/* */
-/***********************************************************************/
-
-/* $Id: test_bng.c 5900 2003-11-07 07:59:10Z xleroy $ */
-
-/* Test harness for the BNG primitives. Use BigNum as a reference. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <BigNum.h>
-
-#include "../../../config/m.h"
-#include "bng.h"
-
-#if defined(__GNUC__) && BNG_ASM_LEVEL > 0
-#if defined(BNG_ARCH_ia32)
-#include "bng_ia32.c"
-#elif defined(BNG_ARCH_amd64)
-#include "bng_amd64.c"
-#elif defined(BNG_ARCH_ppc)
-#include "bng_ppc.c"
-#elif defined (BNG_ARCH_alpha)
-#include "bng_alpha.c"
-#elif defined (BNG_ARCH_sparc)
-#include "bng_sparc.c"
-#elif defined (BNG_ARCH_mips)
-#include "bng_mips.c"
-#endif
-#endif
-
-#include "bng_digit.c"
-
-/* Random generator for digits. Can either generate "true" PRN numbers
- or numbers consisting of long sequences of 0 and 1 bits. */
-
-static int rand_skewed = 0;
-static int rand_runlength = 0;
-static int rand_bit = 0;
-static bngdigit rand_seed = 0;
-
-static bngdigit randdigit(void)
-{
- bngdigit res;
- int i;
-
- if (rand_skewed) {
- for (i = 0, res = 0; i < BNG_BITS_PER_DIGIT; i++) {
- if (rand_runlength == 0) {
- rand_runlength = 1 + (rand() % (2 * BNG_BITS_PER_DIGIT));
- rand_bit ^= 1;
- }
- res = (res << 1) | rand_bit;
- rand_runlength--;
- }
- return res;
- } else {
- rand_seed = rand_seed * 69069 + 25173;
- return rand_seed;
- }
-}
-
-/* Test the operations on digits.
- This uses double-width integer arithmetic as reference.
- This is only available on 32-bit platforms that support a 64-bit int type.
-*/
-
-#if defined(ARCH_UINT64_TYPE) && !defined(ARCH_SIXTYFOUR)
-
-typedef ARCH_UINT64_TYPE dbldigit;
-
-static int test_digit_ops(int i)
-{
- bngdigit a1, a2, a3, r1, r2;
- int ci, co, n;
-
- a1 = randdigit();
- a2 = randdigit();
- a3 = randdigit();
- ci = randdigit() & 1;
-
- BngAdd2(r1,co,a1,a2);
- if ((dbldigit) r1 + ((dbldigit) co << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 + (dbldigit) a2) {
- printf("Round %d, BngAdd2(%lx,%x,%lx, %lx)\n", i, r1, co, a1, a2);
- return 1;
- }
-
- BngAdd2Carry(r1,co,a1,a2,ci);
- if ((dbldigit) r1 + ((dbldigit) co << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 + (dbldigit) a2 + (dbldigit) ci) {
- printf("Round %d, BngAdd2Carry(%lx,%x,%lx, %lx, %x)\n", i, r1, co, a1, a2, ci);
- return 1;
- }
-
- r2 = 0;
- BngAdd3(r1,r2,a1,a2,a3);
- if ((dbldigit) r1 + ((dbldigit) r2 << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 + (dbldigit) a2 + (dbldigit) a3) {
- printf("Round %d, BngAdd3(%lx,%x,%lx, %lx, %lx)\n", i, r1, co, a1, a2, a3);
- return 1;
- }
-
- BngSub2(r1,co,a1,a2);
- if ((dbldigit) r1 - ((dbldigit) co << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 - (dbldigit) a2) {
- printf("Round %d, BngSub2(%lx,%x,%lx, %lx)\n", i, r1, co, a1, a2);
- return 1;
- }
-
- BngSub2Carry(r1,co,a1,a2,ci);
- if ((dbldigit) r1 - ((dbldigit) co << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 - (dbldigit) a2 - (dbldigit) ci) {
- printf("Round %d, BngSub2Carry(%lx,%x,%lx, %lx, %x)\n", i, r1, co, a1, a2, ci);
- return 1;
- }
-
- r2 = 0;
- BngSub3(r1,r2,a1,a2,a3);
- if ((dbldigit) r1 - ((dbldigit) r2 << BNG_BITS_PER_DIGIT)
- != (dbldigit) a1 - (dbldigit) a2 - (dbldigit) a3) {
- printf("Round %d, BngSub3(%lx,%x,%lx, %lx, %lx)\n", i, r1, co, a1, a2, a3);
- return 1;
- }
-
- BngMult(r1,r2,a1,a2);
- if ((((dbldigit) r1 << BNG_BITS_PER_DIGIT) | (dbldigit) r2)
- != (dbldigit) a1 * (dbldigit) a2) {
- printf("Round %d, BngMult(%lx,%lx,%lx, %lx)\n", i, r1, r2, a1, a2);
- return 1;
- }
-
- /* Make sure a3 is normalized */
- a3 |= 1L << (BNG_BITS_PER_DIGIT - 1);
- if (a1 < a3) {
- BngDiv(r1,r2,a1,a2,a3);
- if (r1 != (((dbldigit) a1 << BNG_BITS_PER_DIGIT) | (dbldigit) a2) / a3
- ||
- r2 != (((dbldigit) a1 << BNG_BITS_PER_DIGIT) | (dbldigit) a2) % a3)
- {
- printf("Round %d, BngDiv(%lx,%lx,%lx, %lx, %lx)\n", i, r1, r2, a1, a2, a3);
- return 1;
- }
- }
-
- n = bng_leading_zero_bits(a1);
- if (a1 == 0) {
- if (n != BNG_BITS_PER_DIGIT) {
- printf("Round %d, bng_leading_zero(bits(%lx) = %d", i, a1, n);
- return 1;
- }
- } else {
- if ((a1 << n) >> n != a1 ||
- ((a1 << n) & (1L << (BNG_BITS_PER_DIGIT - 1))) == 0) {
- printf("Round %d, bng_leading_zero(bits(%lx) = %d", i, a1, n);
- return 1;
- }
- }
- return 0;
-}
-
-#endif
-
-/* Test the bng operations. Use BigNum as a reference. */
-
-#define MAX_DIGITS 32
-
-void randbng(bng a, bngsize n)
-{
- int i;
- for (i = 0; i < n; i++) a[i] = randdigit();
-}
-
-char * bng2string(bng a, bngsize n)
-{
- char * buffer = malloc((BNG_BITS_PER_DIGIT / 4 + 1) * MAX_DIGITS);
- char temp[BNG_BITS_PER_DIGIT / 4 + 1];
- int i;
-
- buffer[0] = 0;
- for (i = n - 1; i >= 0; i--) {
- sprintf(temp, "%lx", a[i]);
- strcat(buffer, temp);
- if (i > 0) strcat(buffer, "_");
- }
- return buffer;
-}
-
-int bngsame(bng a, bng b, bngsize n)
-{
- int i;
- for (i = 0; i < n; i++)
- if (a[i] != b[i]) return 0;
- return 1;
-}
-
-int test_bng_ops(int i)
-{
- bngsize p, q;
- bngdigit a[MAX_DIGITS], b[MAX_DIGITS], c[MAX_DIGITS], d[MAX_DIGITS];
- bngdigit f[2 * MAX_DIGITS], g[2 * MAX_DIGITS], h[2 * MAX_DIGITS];
- bngcarry ci, co, cp;
- bngdigit dg, do_, dp;
- int amount;
-
- /* Determine random lengths p and q between 1 and MAX_DIGITS.
- Ensure p >= q. */
- p = 1 + (rand() % MAX_DIGITS);
- q = 1 + (rand() % MAX_DIGITS);
- if (q > p) { bngsize t = p; p = q; q = t; }
-
- /* Randomly generate bignums a of size p, b of size q */
- randbng(a, p);
- randbng(b, q);
- ci = rand() & 1;
-
- /* comparison */
- co = bng_compare(a, p, b, q);
- cp = BnnCompare(a, p, b, q);
- if (co != cp) {
- printf("Round %d, bng_compare(%s, %ld, %s, %ld) = %d\n",
- i, bng2string(a, p), p, bng2string(b, q), q, co);
- return 1;
- }
- co = bng_compare(b, q, a, p);
- cp = BnnCompare(b, q, a, p);
- if (co != cp) {
- printf("Round %d, bng_compare(%s, %ld, %s, %ld) = %d\n",
- i, bng2string(b, q), q, bng2string(a, p), p, co);
- return 1;
- }
- /* add carry */
- bng_assign(c, a, p);
- co = bng_add_carry(c, p, ci);
- BnnAssign(d, a, p);
- cp = BnnAddCarry(d, p, ci);
- if (co != cp || !bngsame(c, d, p)) {
- printf("Round %d, bng_add_carry(%s, %ld, %d) -> %s, %d\n",
- i, bng2string(a, p), p, ci, bng2string(c, p), co);
- return 1;
- }
- /* add */
- bng_assign(c, a, p);
- co = bng_add(c, p, b, q, ci);
- BnnAssign(d, a, p);
- cp = BnnAdd(d, p, b, q, ci);
- if (co != cp || !bngsame(c, d, p)) {
- printf("Round %d, bng_add(%s, %ld, %s, %ld, %d) -> %s, %d\n",
- i, bng2string(a, p), p, bng2string(b, q), q, ci,
- bng2string(c, p), co);
- return 1;
- }
- /* sub carry */
- bng_assign(c, a, p);
- co = bng_sub_carry(c, p, ci);
- BnnAssign(d, a, p);
- cp = BnnSubtractBorrow(d, p, ci ^ 1) ^ 1;
- if (co != cp || !bngsame(c, d, p)) {
- printf("Round %d, bng_sub_carry(%s, %ld, %d) -> %s, %d\n",
- i, bng2string(a, p), p, ci, bng2string(c, p), co);
- return 1;
- }
- /* sub */
- bng_assign(c, a, p);
- co = bng_sub(c, p, b, q, ci);
- BnnAssign(d, a, p);
- cp = BnnSubtract(d, p, b, q, ci ^ 1) ^ 1;
- if (co != cp || !bngsame(c, d, p)) {
- printf("Round %d, bng_sub(%s, %ld, %s, %ld, %d) -> %s, %d\n",
- i, bng2string(a, p), p, bng2string(b, q), q, ci,
- bng2string(c, p), co);
- return 1;
- }
- /* shift left */
- amount = rand() % BNG_BITS_PER_DIGIT;
- bng_assign(c, a, p);
- do_ = bng_shift_left(c, p, amount);
- BnnAssign(d, a, p);
- dp = BnnShiftLeft(d, p, amount);
- if (do_ != dp || !bngsame(c, d, p)) {
- printf("Round %d, bng_shift_left(%s, %ld, %d) -> %s, %ld\n",
- i, bng2string(a, p), p, amount, bng2string(c, p), do_);
- return 1;
- }
- /* shift right */
- amount = rand() % BNG_BITS_PER_DIGIT;
- bng_assign(c, a, p);
- do_ = bng_shift_right(c, p, amount);
- BnnAssign(d, a, p);
- dp = BnnShiftRight(d, p, amount);
- if (do_ != dp || !bngsame(c, d, p)) {
- printf("Round %d, bng_shift_right(%s, %ld, %d) -> %s, %ld\n",
- i, bng2string(a, p), p, amount, bng2string(c, p), do_);
- return 1;
- }
- /* mult_add_digit */
- dg = randdigit();
- if (p >= q + 1) {
- bng_assign(c, a, p);
- co = bng_mult_add_digit(c, p, b, q, dg);
- BnnAssign(d, a, p);
- cp = BnnMultiplyDigit(d, p, b, q, dg);
- if (co != cp || !bngsame(c, d, p)) {
- printf("Round %d, bng_mult_add_digit(%s, %ld, %s, %ld, %ld) -> %s, %d\n",
- i, bng2string(a, p), p, bng2string(b, q), q, dg,
- bng2string(c, p), co);
- return 1;
- }
- }
- /* mult_sub_digit */
- dg = randdigit();
- bng_assign(c, a, p);
- do_ = bng_mult_add_digit(c, p, b, q, dg);
- bng_assign(d, c, p);
- dp = bng_mult_sub_digit(d, p, b, q, dg);
- if (do_ != dp || !bngsame(a, d, p)) {
- printf("Round %d, bng_mult_sub_digit(%s, %ld, %s, %ld, %ld) -> %s, %ld\n",
- i, bng2string(c, p), p, bng2string(b, q), q, dg,
- bng2string(d, p), dp);
- return 1;
- }
- /* mult_add */
- randbng(f, 2*p);
- bng_assign(g, f, 2*p);
- co = bng_mult_add(g, 2*p, a, p, b, q);
- BnnAssign(h, f, 2*p);
- cp = BnnMultiply(h, 2*p, a, p, b, q);
- if (co != cp || !bngsame(g, h, 2*p)) {
- printf("Round %d, bng_mult_add(%s, %ld, %s, %ld, %s, %ld) -> %s, %d\n",
- i, bng2string(f, 2*p), 2*p,
- bng2string(a, p), p,
- bng2string(b, q), q,
- bng2string(g, 2*p), co);
- return 1;
- }
- /* square_add */
- randbng(f, 2*p);
- bng_assign(g, f, 2*p);
- co = bng_square_add(g, 2*p, b, q);
- BnnAssign(h, f, 2*p);
- cp = BnnAdd(h, 2*p, h, 2*p);
- cp += BnnMultiply(h, 2*p, b, q, b, q);
- if (co != cp || !bngsame(g, h, 2*p)) {
- printf("Round %d, bng_square_add(%s, %ld, %s, %ld) -> %s, %d\n",
- i, bng2string(f, 2*p), 2*p,
- bng2string(b, q), q,
- bng2string(g, 2*p), co);
- return 1;
- }
- /* div_rem_digit */
- if (a[p - 1] < dg) {
- do_ = bng_div_rem_digit(c, a, p, dg);
- dp = BnnDivideDigit(d, a, p, dg);
- if (do_ != dp || !bngsame(c, d, p-1)) {
- printf("Round %d, bng_div_rem_digit(%s, %s, %ld, %lx) -> %lx\n",
- i, bng2string(d, p-1), bng2string(a, p), p, dg, do_);
- return 1;
- }
- }
- /* div_rem */
- if (p > q && a[p - 1] < b[q - 1]) {
- bng_assign(c, a, p);
- bng_div_rem(c, p, b, q);
- BnnAssign(d, a, p);
- BnnDivide(d, p, b, q);
- if (!bngsame(c, d, p)) {
- printf("Round %d, bng_div_rem(%s, %ld, %s, %ld) -> %s, %s\n",
- i, bng2string(a, p), p, bng2string(b, q), q,
- bng2string(c + q, p - q),
- bng2string(c, q));
- return 1;
- }
- }
- return 0;
-}
-
-int main(int argc, char ** argv)
-{
- int niter = 100000;
- int i, err;
-
- bng_init();
- if (argc >= 2) niter = atoi(argv[1]);
-#if defined(ARCH_UINT64_TYPE) && !defined(ARCH_SIXTYFOUR)
- printf("Testing single-digit operations\n");
- for (err = 0, i = 1; i < niter; i++) err += test_digit_ops(i);
- printf("%d rounds performed, %d errors found\n", niter, err);
-#endif
- printf("Testing bignum operations\n");
- for (err = 0, i = 1; i < niter; i++) err += test_bng_ops(i);
- printf("%d rounds performed, %d errors found\n", niter, err);
- printf("Testing bignum operations with skewed PRNG\n");
- rand_skewed = 1;
- for (err = 0, i = 1; i < niter; i++) err += test_bng_ops(i);
- printf("%d rounds performed, %d errors found\n", niter, err);
- return 0;
-}
diff --git a/testsuite/interactive/lib-gc/alloc.ml b/testsuite/interactive/lib-gc/alloc.ml
index 4f607fb23f..ea103e42af 100644
--- a/testsuite/interactive/lib-gc/alloc.ml
+++ b/testsuite/interactive/lib-gc/alloc.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: alloc.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(* Random allocation test *)
diff --git a/testsuite/lib/testing.ml b/testsuite/lib/testing.ml
index 55da6f6d9c..2015aa1472 100644
--- a/testsuite/lib/testing.ml
+++ b/testsuite/lib/testing.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: testing.ml,v 1.1 2006/01/12 12:52:14 weis Exp $ *)
+(* $Id$ *)
(* Testing auxilliaries. *)
diff --git a/testsuite/lib/testing.mli b/testsuite/lib/testing.mli
index c3880f08c9..6f47d2a3e0 100644
--- a/testsuite/lib/testing.mli
+++ b/testsuite/lib/testing.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: testing.mli,v 1.1 2006/01/12 12:52:14 weis Exp $ *)
+(* $Id$ *)
(* Testing auxilliaries. *)
diff --git a/testsuite/tests/asmcomp/alpha.S b/testsuite/tests/asmcomp/alpha.S
index 66bf73f288..d8851065c3 100644
--- a/testsuite/tests/asmcomp/alpha.S
+++ b/testsuite/tests/asmcomp/alpha.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: alpha.S 2638 1999-11-29 19:04:56Z doligez $ */
+/* $Id$ */
.globl call_gen_code
.ent call_gen_code
diff --git a/testsuite/tests/asmcomp/amd64.S b/testsuite/tests/asmcomp/amd64.S
index bb2dc2b0b6..8df6e2d20d 100644
--- a/testsuite/tests/asmcomp/amd64.S
+++ b/testsuite/tests/asmcomp/amd64.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: amd64.S 5634 2003-06-30 08:28:48Z xleroy $ */
+/* $Id$ */
#ifdef SYS_macosx
#define ALIGN 4
diff --git a/testsuite/tests/asmcomp/arith.cmm b/testsuite/tests/asmcomp/arith.cmm
index 77257c3cc2..f4efefdbef 100644
--- a/testsuite/tests/asmcomp/arith.cmm
+++ b/testsuite/tests/asmcomp/arith.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: arith.cmm 3218 2000-06-29 11:45:24Z xleroy $ *)
+(* $Id$ *)
(* Regression test for arithmetic instructions *)
diff --git a/testsuite/tests/asmcomp/arm.S b/testsuite/tests/asmcomp/arm.S
index 0697095189..186d706146 100644
--- a/testsuite/tests/asmcomp/arm.S
+++ b/testsuite/tests/asmcomp/arm.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: arm.S 9212 2009-03-31 09:46:08Z xleroy $ */
+/* $Id$ */
.text
diff --git a/testsuite/tests/asmcomp/checkbound.cmm b/testsuite/tests/asmcomp/checkbound.cmm
index a1277c95a2..995b74f8a3 100644
--- a/testsuite/tests/asmcomp/checkbound.cmm
+++ b/testsuite/tests/asmcomp/checkbound.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: checkbound.cmm 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(function "checkbound2" (x: int y: int)
(checkbound x y))
diff --git a/testsuite/tests/asmcomp/fib.cmm b/testsuite/tests/asmcomp/fib.cmm
index e71a90273e..b7e64d3025 100644
--- a/testsuite/tests/asmcomp/fib.cmm
+++ b/testsuite/tests/asmcomp/fib.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: fib.cmm 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(function "fib" (n: int)
(if (< n 2)
diff --git a/testsuite/tests/asmcomp/hppa.S b/testsuite/tests/asmcomp/hppa.S
index 31fff9dfa6..2b1ab21c66 100644
--- a/testsuite/tests/asmcomp/hppa.S
+++ b/testsuite/tests/asmcomp/hppa.S
@@ -10,7 +10,7 @@
;* *
;*********************************************************************
-; $Id: hppa.S 2553 1999-11-17 18:59:06Z xleroy $
+; $Id$
; Must be preprocessed by cpp
#ifdef SYS_hpux
diff --git a/testsuite/tests/asmcomp/i386.S b/testsuite/tests/asmcomp/i386.S
index 079eca1793..f4b65e57ac 100644
--- a/testsuite/tests/asmcomp/i386.S
+++ b/testsuite/tests/asmcomp/i386.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: i386.S 2553 1999-11-17 18:59:06Z xleroy $ */
+/* $Id$ */
/* Linux with ELF binaries does not prefix identifiers with _.
Linux with a.out binaries, FreeBSD, and NextStep do. */
diff --git a/testsuite/tests/asmcomp/i386nt.asm b/testsuite/tests/asmcomp/i386nt.asm
index 0ad5247565..66550eb8b2 100644
--- a/testsuite/tests/asmcomp/i386nt.asm
+++ b/testsuite/tests/asmcomp/i386nt.asm
@@ -10,7 +10,7 @@
;
;*********************************************************************
-; $Id: i386nt.asm 2553 1999-11-17 18:59:06Z xleroy $
+; $Id$
.386
.MODEL FLAT
diff --git a/testsuite/tests/asmcomp/ia64.S b/testsuite/tests/asmcomp/ia64.S
index 49de1b1947..51361690b8 100644
--- a/testsuite/tests/asmcomp/ia64.S
+++ b/testsuite/tests/asmcomp/ia64.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: ia64.S 3573 2001-07-12 12:54:24Z doligez $ */
+/* $Id$ */
#define ST8OFF(a,b,d) st8 [a] = b, d
#define LD8OFF(a,b,d) ld8 a = [b], d
diff --git a/testsuite/tests/asmcomp/integr.cmm b/testsuite/tests/asmcomp/integr.cmm
index 84a01d465f..481dd7587d 100644
--- a/testsuite/tests/asmcomp/integr.cmm
+++ b/testsuite/tests/asmcomp/integr.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: integr.cmm 3218 2000-06-29 11:45:24Z xleroy $ *)
+(* $Id$ *)
(function "square" (x: float)
( *f x x))
diff --git a/testsuite/tests/asmcomp/lexcmm.mli b/testsuite/tests/asmcomp/lexcmm.mli
index 9ebc36b56d..a28a57c520 100644
--- a/testsuite/tests/asmcomp/lexcmm.mli
+++ b/testsuite/tests/asmcomp/lexcmm.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: lexcmm.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
val token: Lexing.lexbuf -> Parsecmm.token
diff --git a/testsuite/tests/asmcomp/lexcmm.mll b/testsuite/tests/asmcomp/lexcmm.mll
index a9d17dd3d5..0e8432e1c8 100644
--- a/testsuite/tests/asmcomp/lexcmm.mll
+++ b/testsuite/tests/asmcomp/lexcmm.mll
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: lexcmm.mll 3211 2000-06-25 19:54:50Z xleroy $ *)
+(* $Id$ *)
{
open Parsecmm
diff --git a/testsuite/tests/asmcomp/m68k.S b/testsuite/tests/asmcomp/m68k.S
index 8905da1bb6..436e65e695 100644
--- a/testsuite/tests/asmcomp/m68k.S
+++ b/testsuite/tests/asmcomp/m68k.S
@@ -10,7 +10,7 @@
|* *
|***********************************************************************
-| $Id: m68k.S 2553 1999-11-17 18:59:06Z xleroy $
+| $Id$
| call_gen_code is used with the following types:
| unit -> int
diff --git a/testsuite/tests/asmcomp/main.c b/testsuite/tests/asmcomp/main.c
index 7f0e7174fd..e45c8c27c3 100644
--- a/testsuite/tests/asmcomp/main.c
+++ b/testsuite/tests/asmcomp/main.c
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: main.c 9212 2009-03-31 09:46:08Z xleroy $ */
+/* $Id$ */
#include <stddef.h>
#include <stdio.h>
diff --git a/testsuite/tests/asmcomp/main.ml b/testsuite/tests/asmcomp/main.ml
index 7017c35dce..d6207102ac 100644
--- a/testsuite/tests/asmcomp/main.ml
+++ b/testsuite/tests/asmcomp/main.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: main.ml 3229 2000-07-07 14:09:23Z xleroy $ *)
+(* $Id$ *)
open Clflags
diff --git a/testsuite/tests/asmcomp/mainarith.c b/testsuite/tests/asmcomp/mainarith.c
index efa48ba0e4..95a923d8b9 100644
--- a/testsuite/tests/asmcomp/mainarith.c
+++ b/testsuite/tests/asmcomp/mainarith.c
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: mainarith.c 9212 2009-03-31 09:46:08Z xleroy $ */
+/* $Id$ */
#include <stdio.h>
#include <math.h>
diff --git a/testsuite/tests/asmcomp/mips.s b/testsuite/tests/asmcomp/mips.s
index d8e93565a3..9fe9f94b60 100644
--- a/testsuite/tests/asmcomp/mips.s
+++ b/testsuite/tests/asmcomp/mips.s
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: mips.s 2638 1999-11-29 19:04:56Z doligez $ */
+/* $Id$ */
.globl call_gen_code
.ent call_gen_code
diff --git a/testsuite/tests/asmcomp/parsecmm.mly b/testsuite/tests/asmcomp/parsecmm.mly
index 6ed2f8ff5e..79b278b052 100644
--- a/testsuite/tests/asmcomp/parsecmm.mly
+++ b/testsuite/tests/asmcomp/parsecmm.mly
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: parsecmm.mly 9212 2009-03-31 09:46:08Z xleroy $ */
+/* $Id$ */
/* A simple parser for C-- */
diff --git a/testsuite/tests/asmcomp/parsecmmaux.ml b/testsuite/tests/asmcomp/parsecmmaux.ml
index a87432e4e7..8c46888c6b 100644
--- a/testsuite/tests/asmcomp/parsecmmaux.ml
+++ b/testsuite/tests/asmcomp/parsecmmaux.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: parsecmmaux.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(* Auxiliary functions for parsing *)
diff --git a/testsuite/tests/asmcomp/parsecmmaux.mli b/testsuite/tests/asmcomp/parsecmmaux.mli
index 941ebcb48f..558996552c 100644
--- a/testsuite/tests/asmcomp/parsecmmaux.mli
+++ b/testsuite/tests/asmcomp/parsecmmaux.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: parsecmmaux.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(* Auxiliary functions for parsing *)
diff --git a/testsuite/tests/asmcomp/power-aix.S b/testsuite/tests/asmcomp/power-aix.S
index ea15308306..96ed2b92d1 100644
--- a/testsuite/tests/asmcomp/power-aix.S
+++ b/testsuite/tests/asmcomp/power-aix.S
@@ -10,7 +10,7 @@
#* *
#*********************************************************************
-# $Id: power-aix.S 3042 2000-04-05 18:30:22Z doligez $
+# $Id$
.csect .text[PR]
diff --git a/testsuite/tests/asmcomp/power-elf.S b/testsuite/tests/asmcomp/power-elf.S
index c7ddeef768..994a9fa7be 100644
--- a/testsuite/tests/asmcomp/power-elf.S
+++ b/testsuite/tests/asmcomp/power-elf.S
@@ -10,7 +10,7 @@
/* */
/*********************************************************************/
-/* $Id: power-elf.S 2553 1999-11-17 18:59:06Z xleroy $ */
+/* $Id$ */
/* Save and restore all callee-save registers */
/* GPR 14 at sp+16 ... GPR 31 at sp+84
diff --git a/testsuite/tests/asmcomp/power-rhapsody.S b/testsuite/tests/asmcomp/power-rhapsody.S
index a9b8044b8d..b456105862 100644
--- a/testsuite/tests/asmcomp/power-rhapsody.S
+++ b/testsuite/tests/asmcomp/power-rhapsody.S
@@ -10,7 +10,7 @@
/* */
/*********************************************************************/
-/* $Id: power-rhapsody.S 2553 1999-11-17 18:59:06Z xleroy $ */
+/* $Id$ */
/* Save and restore all callee-save registers */
/* GPR 14 at sp+16 ... GPR 31 at sp+84
diff --git a/testsuite/tests/asmcomp/quicksort.cmm b/testsuite/tests/asmcomp/quicksort.cmm
index 043e607f80..4029da8d15 100644
--- a/testsuite/tests/asmcomp/quicksort.cmm
+++ b/testsuite/tests/asmcomp/quicksort.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: quicksort.cmm 3211 2000-06-25 19:54:50Z xleroy $ *)
+(* $Id$ *)
(function "quicksort" (lo: int hi: int a: addr)
(if (< lo hi)
diff --git a/testsuite/tests/asmcomp/quicksort2.cmm b/testsuite/tests/asmcomp/quicksort2.cmm
index 4d80cd58a7..eae9809a79 100644
--- a/testsuite/tests/asmcomp/quicksort2.cmm
+++ b/testsuite/tests/asmcomp/quicksort2.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: quicksort2.cmm 3218 2000-06-29 11:45:24Z xleroy $ *)
+(* $Id$ *)
(function "cmp" (i: int j: int)
(- i j))
diff --git a/testsuite/tests/asmcomp/soli.cmm b/testsuite/tests/asmcomp/soli.cmm
index 4716e4f215..47ce64c0b5 100644
--- a/testsuite/tests/asmcomp/soli.cmm
+++ b/testsuite/tests/asmcomp/soli.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: soli.cmm 5634 2003-06-30 08:28:48Z xleroy $ *)
+(* $Id$ *)
("d1": int 0 int 1
"d2": int 1 int 0
diff --git a/testsuite/tests/asmcomp/sparc.S b/testsuite/tests/asmcomp/sparc.S
index 54d81c1cc3..9a829e1732 100644
--- a/testsuite/tests/asmcomp/sparc.S
+++ b/testsuite/tests/asmcomp/sparc.S
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: sparc.S 2553 1999-11-17 18:59:06Z xleroy $ */
+/* $Id$ */
#ifndef SYS_solaris
#define Call_gen_code _call_gen_code
diff --git a/testsuite/tests/asmcomp/tagged-fib.cmm b/testsuite/tests/asmcomp/tagged-fib.cmm
index 04869792c6..e5e45b0fbf 100644
--- a/testsuite/tests/asmcomp/tagged-fib.cmm
+++ b/testsuite/tests/asmcomp/tagged-fib.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: tagged-fib.cmm 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(function "fib" (n: int)
(if (< n 5)
diff --git a/testsuite/tests/asmcomp/tagged-integr.cmm b/testsuite/tests/asmcomp/tagged-integr.cmm
index 054c78d7f5..df46813eb9 100644
--- a/testsuite/tests/asmcomp/tagged-integr.cmm
+++ b/testsuite/tests/asmcomp/tagged-integr.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: tagged-integr.cmm 3229 2000-07-07 14:09:23Z xleroy $ *)
+(* $Id$ *)
("res_square": skip 8)
("h": skip 8)
diff --git a/testsuite/tests/asmcomp/tagged-quicksort.cmm b/testsuite/tests/asmcomp/tagged-quicksort.cmm
index 6b74753e8e..b519e5cef9 100644
--- a/testsuite/tests/asmcomp/tagged-quicksort.cmm
+++ b/testsuite/tests/asmcomp/tagged-quicksort.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: tagged-quicksort.cmm 3218 2000-06-29 11:45:24Z xleroy $ *)
+(* $Id$ *)
(function "quick" (lo: int hi: int a: addr)
(if (< lo hi)
diff --git a/testsuite/tests/asmcomp/tagged-tak.cmm b/testsuite/tests/asmcomp/tagged-tak.cmm
index 5e04b73943..fe9e6eb026 100644
--- a/testsuite/tests/asmcomp/tagged-tak.cmm
+++ b/testsuite/tests/asmcomp/tagged-tak.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: tagged-tak.cmm 3229 2000-07-07 14:09:23Z xleroy $ *)
+(* $Id$ *)
(function "tak" (x:int y:int z:int)
(if (> x y)
diff --git a/testsuite/tests/asmcomp/tak.cmm b/testsuite/tests/asmcomp/tak.cmm
index de236fc8b8..cd61ec89be 100644
--- a/testsuite/tests/asmcomp/tak.cmm
+++ b/testsuite/tests/asmcomp/tak.cmm
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: tak.cmm 3211 2000-06-25 19:54:50Z xleroy $ *)
+(* $Id$ *)
(function "tak" (x:int y:int z:int)
(if (> x y)
diff --git a/testsuite/tests/basic-more/tformat.ml b/testsuite/tests/basic-more/tformat.ml
index afad529708..d02cb2907a 100644
--- a/testsuite/tests/basic-more/tformat.ml
+++ b/testsuite/tests/basic-more/tformat.ml
@@ -10,7 +10,7 @@
(* *)
(*************************************************************************)
-(* $Id: tformat.ml 9270 2009-05-20 11:52:42Z doligez $
+(* $Id$
A testbed file for the module Format.
diff --git a/testsuite/tests/basic-private/length.ml b/testsuite/tests/basic-private/length.ml
index 945d05d144..318e98cb11 100644
--- a/testsuite/tests/basic-private/length.ml
+++ b/testsuite/tests/basic-private/length.ml
@@ -1,4 +1,4 @@
-(* $Id: length.ml 8482 2007-11-06 21:06:18Z weis $
+(* $Id$
A testbed file for private type abbreviation definitions.
diff --git a/testsuite/tests/basic-private/length.mli b/testsuite/tests/basic-private/length.mli
index 2215ec8f77..6cd7e12142 100644
--- a/testsuite/tests/basic-private/length.mli
+++ b/testsuite/tests/basic-private/length.mli
@@ -1,4 +1,4 @@
-(* $Id: length.mli 8482 2007-11-06 21:06:18Z weis $
+(* $Id$
A testbed file for private type abbreviation definitions.
diff --git a/testsuite/tests/basic-private/tlength.ml b/testsuite/tests/basic-private/tlength.ml
index a428e20757..f1fd91af94 100644
--- a/testsuite/tests/basic-private/tlength.ml
+++ b/testsuite/tests/basic-private/tlength.ml
@@ -1,4 +1,4 @@
-(* $Id: tlength.ml 8482 2007-11-06 21:06:18Z weis $
+(* $Id$
A testbed file for private type abbreviation definitions.
diff --git a/testsuite/tests/basic/maps.ml b/testsuite/tests/basic/maps.ml
index cb0e989b11..c23f2d8c1e 100644
--- a/testsuite/tests/basic/maps.ml
+++ b/testsuite/tests/basic/maps.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: sets.ml 5183 2002-10-16 09:06:39Z weis $ *)
+(* $Id$ *)
module IntMap = Map.Make(struct type t = int let compare x y = x-y end)
diff --git a/testsuite/tests/basic/sets.ml b/testsuite/tests/basic/sets.ml
index 379b9e82c2..983145ee48 100644
--- a/testsuite/tests/basic/sets.ml
+++ b/testsuite/tests/basic/sets.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: sets.ml 5183 2002-10-16 09:06:39Z weis $ *)
+(* $Id$ *)
module IntSet = Set.Make(struct type t = int let compare x y = x-y end)
diff --git a/testsuite/tests/embedded/.svnignore b/testsuite/tests/embedded/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/embedded/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/gc-roots/.svnignore b/testsuite/tests/gc-roots/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/gc-roots/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/lib-bigarray/fftba.ml b/testsuite/tests/lib-bigarray/fftba.ml
index a772876ec0..17465df5c6 100644
--- a/testsuite/tests/lib-bigarray/fftba.ml
+++ b/testsuite/tests/lib-bigarray/fftba.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: fftba.ml 2938 2000-03-10 14:54:41Z xleroy $ *)
+(* $Id$ *)
open Bigarray
diff --git a/testsuite/tests/lib-bigarray/pr5115.ml b/testsuite/tests/lib-bigarray/pr5115.ml
new file mode 100644
index 0000000000..69cdca64d9
--- /dev/null
+++ b/testsuite/tests/lib-bigarray/pr5115.ml
@@ -0,0 +1,13 @@
+(* PR#5115 - multiple evaluation of bigarray expr *)
+
+open Bigarray
+
+let f y0 =
+ Printf.printf "***EXEC***\n%!";
+ y0
+
+let _ =
+ let y = Array1.of_array float64 fortran_layout [| 1. |] in
+ (f y).{1};
+ (f y).{1} <- 3.14
+
diff --git a/testsuite/tests/lib-bigarray/pr5115.reference b/testsuite/tests/lib-bigarray/pr5115.reference
new file mode 100644
index 0000000000..63f719ac56
--- /dev/null
+++ b/testsuite/tests/lib-bigarray/pr5115.reference
@@ -0,0 +1,2 @@
+***EXEC***
+***EXEC***
diff --git a/testsuite/tests/lib-digest/.svnignore b/testsuite/tests/lib-digest/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/lib-digest/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/lib-dynlink-bytecode/.svnignore b/testsuite/tests/lib-dynlink-bytecode/.svnignore
index 035b305b27..bb9294343e 100644
--- a/testsuite/tests/lib-dynlink-bytecode/.svnignore
+++ b/testsuite/tests/lib-dynlink-bytecode/.svnignore
@@ -1,8 +1,15 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
main
static
custom
*.a
*.so
-*.result
-*.cm*
-*.o
+
+EOF
diff --git a/testsuite/tests/lib-dynlink-native/.svnignore b/testsuite/tests/lib-dynlink-native/.svnignore
index 1668ef6ad1..44c6a0689d 100644
--- a/testsuite/tests/lib-dynlink-native/.svnignore
+++ b/testsuite/tests/lib-dynlink-native/.svnignore
@@ -1,7 +1,15 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
mypack.pack.s
result
main
*.so
*.a
-*.cm*
-*.o
+
+EOF
diff --git a/testsuite/tests/lib-scanf/tscanf.ml b/testsuite/tests/lib-scanf/tscanf.ml
index cab4d7be4d..89b188b461 100644
--- a/testsuite/tests/lib-scanf/tscanf.ml
+++ b/testsuite/tests/lib-scanf/tscanf.ml
@@ -10,7 +10,7 @@
(* *)
(*************************************************************************)
-(* $Id: tscanf.ml 9306 2009-07-03 08:36:54Z weis $
+(* $Id$
A testbed file for the module Scanf.
diff --git a/testsuite/tests/misc-kb/equations.ml b/testsuite/tests/misc-kb/equations.ml
index 3feeada7c7..a7ea9a03b6 100644
--- a/testsuite/tests/misc-kb/equations.ml
+++ b/testsuite/tests/misc-kb/equations.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: equations.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(****************** Equation manipulations *************)
diff --git a/testsuite/tests/misc-kb/equations.mli b/testsuite/tests/misc-kb/equations.mli
index 665b739ed4..45d790260f 100644
--- a/testsuite/tests/misc-kb/equations.mli
+++ b/testsuite/tests/misc-kb/equations.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: equations.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
open Terms
diff --git a/testsuite/tests/misc-kb/kb.ml b/testsuite/tests/misc-kb/kb.ml
index 1e369bd1b5..590f4cd5d0 100644
--- a/testsuite/tests/misc-kb/kb.ml
+++ b/testsuite/tests/misc-kb/kb.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: kb.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
open Terms
open Equations
diff --git a/testsuite/tests/misc-kb/kb.mli b/testsuite/tests/misc-kb/kb.mli
index bd02de4baa..59b60e4ea2 100644
--- a/testsuite/tests/misc-kb/kb.mli
+++ b/testsuite/tests/misc-kb/kb.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: kb.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
open Terms
open Equations
diff --git a/testsuite/tests/misc-kb/kbmain.ml b/testsuite/tests/misc-kb/kbmain.ml
index 7d9e5baf19..0a5da2fb63 100644
--- a/testsuite/tests/misc-kb/kbmain.ml
+++ b/testsuite/tests/misc-kb/kbmain.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: kbmain.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
open Terms
open Equations
diff --git a/testsuite/tests/misc-kb/orderings.ml b/testsuite/tests/misc-kb/orderings.ml
index 2f3ee97352..11a776ba7c 100644
--- a/testsuite/tests/misc-kb/orderings.ml
+++ b/testsuite/tests/misc-kb/orderings.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: orderings.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(*********************** Recursive Path Ordering ****************************)
diff --git a/testsuite/tests/misc-kb/orderings.mli b/testsuite/tests/misc-kb/orderings.mli
index b68ceda3d0..d7abfd5645 100644
--- a/testsuite/tests/misc-kb/orderings.mli
+++ b/testsuite/tests/misc-kb/orderings.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: orderings.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
open Terms
diff --git a/testsuite/tests/misc-kb/terms.ml b/testsuite/tests/misc-kb/terms.ml
index 1b182f7561..dba7000646 100644
--- a/testsuite/tests/misc-kb/terms.ml
+++ b/testsuite/tests/misc-kb/terms.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: terms.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
(****************** Term manipulations *****************)
diff --git a/testsuite/tests/misc-kb/terms.mli b/testsuite/tests/misc-kb/terms.mli
index a71e139c63..7d22e9cb00 100644
--- a/testsuite/tests/misc-kb/terms.mli
+++ b/testsuite/tests/misc-kb/terms.mli
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: terms.mli 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
type term =
Var of int
diff --git a/testsuite/tests/misc-unsafe/fft.ml b/testsuite/tests/misc-unsafe/fft.ml
index 6a5f4dffb9..0907cdee3c 100644
--- a/testsuite/tests/misc-unsafe/fft.ml
+++ b/testsuite/tests/misc-unsafe/fft.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: fft.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
let pi = 3.14159265358979323846
diff --git a/testsuite/tests/misc-unsafe/quicksort.ml b/testsuite/tests/misc-unsafe/quicksort.ml
index cfc68068e8..7449488d2d 100644
--- a/testsuite/tests/misc-unsafe/quicksort.ml
+++ b/testsuite/tests/misc-unsafe/quicksort.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: quicksort.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
(* Good test for loops. Best compiled with -unsafe. *)
diff --git a/testsuite/tests/misc-unsafe/soli.ml b/testsuite/tests/misc-unsafe/soli.ml
index 45dfd9d1f8..aba79b15b8 100644
--- a/testsuite/tests/misc-unsafe/soli.ml
+++ b/testsuite/tests/misc-unsafe/soli.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: soli.ml 2553 1999-11-17 18:59:06Z xleroy $ *)
+(* $Id$ *)
type peg = Out | Empty | Peg
diff --git a/testsuite/tests/misc/bdd.ml b/testsuite/tests/misc/bdd.ml
index 2926e947db..8452b8c645 100644
--- a/testsuite/tests/misc/bdd.ml
+++ b/testsuite/tests/misc/bdd.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: bdd.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
(* Translated to Caml by Xavier Leroy *)
(* Original code written in SML by ... *)
diff --git a/testsuite/tests/misc/boyer.ml b/testsuite/tests/misc/boyer.ml
index c2c7689618..c5e829ff2c 100644
--- a/testsuite/tests/misc/boyer.ml
+++ b/testsuite/tests/misc/boyer.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: boyer.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
(* Manipulations over terms *)
diff --git a/testsuite/tests/misc/fib.ml b/testsuite/tests/misc/fib.ml
index c7e7505850..7fad4bfdbc 100644
--- a/testsuite/tests/misc/fib.ml
+++ b/testsuite/tests/misc/fib.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: fib.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
let rec fib n =
if n < 2 then 1 else fib(n-1) + fib(n-2)
diff --git a/testsuite/tests/misc/hamming.ml b/testsuite/tests/misc/hamming.ml
index 2b85bdde73..7216ddb0d9 100644
--- a/testsuite/tests/misc/hamming.ml
+++ b/testsuite/tests/misc/hamming.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: hamming.ml 4303 2002-01-23 17:50:20Z doligez $ *)
+(* $Id$ *)
(* We cannot use bignums because we don't do custom runtimes, but
int64 is a bit short, so we roll our own 37-digit numbers...
diff --git a/testsuite/tests/misc/nucleic.ml b/testsuite/tests/misc/nucleic.ml
index 665e3ceb5f..e3adfd6228 100644
--- a/testsuite/tests/misc/nucleic.ml
+++ b/testsuite/tests/misc/nucleic.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: nucleic.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
(* Use floating-point arithmetic *)
diff --git a/testsuite/tests/misc/sieve.ml b/testsuite/tests/misc/sieve.ml
index 450c84f4ce..994a4087d3 100644
--- a/testsuite/tests/misc/sieve.ml
+++ b/testsuite/tests/misc/sieve.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: sieve.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
(* Eratosthene's sieve *)
diff --git a/testsuite/tests/misc/sorts.ml b/testsuite/tests/misc/sorts.ml
index 9aea623970..7ae00beff9 100644
--- a/testsuite/tests/misc/sorts.ml
+++ b/testsuite/tests/misc/sorts.ml
@@ -4476,4 +4476,4 @@ let main () =
if not !Sys.interactive then Printexc.catch main ();;
-(* $Id: sorts.ml 4955 2002-06-26 14:55:37Z doligez $ *)
+(* $Id$ *)
diff --git a/testsuite/tests/misc/takc.ml b/testsuite/tests/misc/takc.ml
index 99aa6cde1c..8e49f24849 100644
--- a/testsuite/tests/misc/takc.ml
+++ b/testsuite/tests/misc/takc.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: takc.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
let rec tak x y z =
if x > y then tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y)
diff --git a/testsuite/tests/misc/taku.ml b/testsuite/tests/misc/taku.ml
index c3eae9f9ef..555fb01c86 100644
--- a/testsuite/tests/misc/taku.ml
+++ b/testsuite/tests/misc/taku.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: taku.ml 7017 2005-08-12 09:22:04Z xleroy $ *)
+(* $Id$ *)
let rec tak (x, y, z) =
if x > y then tak(tak (x-1, y, z), tak (y-1, z, x), tak (z-1, x, y))
diff --git a/testsuite/tests/misc/weaktest.ml b/testsuite/tests/misc/weaktest.ml
index 5dd4e19d41..92ab5576d3 100644
--- a/testsuite/tests/misc/weaktest.ml
+++ b/testsuite/tests/misc/weaktest.ml
@@ -1,4 +1,4 @@
-(* $Id: weaktest.ml 8766 2008-01-11 11:55:36Z doligez $ *)
+(* $Id$ *)
let debug = false;;
diff --git a/testsuite/tests/regression-camlp4-class-type-plus/Makefile b/testsuite/tests/regression-camlp4-class-type-plus/Makefile
new file mode 100644
index 0000000000..95106ce622
--- /dev/null
+++ b/testsuite/tests/regression-camlp4-class-type-plus/Makefile
@@ -0,0 +1,5 @@
+ADD_COMPFLAGS = -pp 'camlp4o'
+MAIN_MODULE = camlp4_class_type_plus_ok
+
+include ../../makefiles/Makefile.okbad
+include ../../makefiles/Makefile.common
diff --git a/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml b/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml
new file mode 100644
index 0000000000..79ba26d82e
--- /dev/null
+++ b/testsuite/tests/regression-camlp4-class-type-plus/camlp4_class_type_plus_ok.ml
@@ -0,0 +1,9 @@
+type t;;
+type xdr_value;;
+
+class type [ 't ] engine = object
+end;;
+
+module type T = sig
+class unbound_async_call : t -> [xdr_value] engine;;
+end;;
diff --git a/testsuite/tests/regression-pr5080-notes/Makefile b/testsuite/tests/regression-pr5080-notes/Makefile
new file mode 100644
index 0000000000..149c289be3
--- /dev/null
+++ b/testsuite/tests/regression-pr5080-notes/Makefile
@@ -0,0 +1,5 @@
+ADD_COMPFLAGS = -pp 'camlp4o pa_macro.cmo'
+MAIN_MODULE = pr5080_notes_ok
+
+include ../../makefiles/Makefile.okbad
+include ../../makefiles/Makefile.common
diff --git a/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml b/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml
new file mode 100644
index 0000000000..175bc8b743
--- /dev/null
+++ b/testsuite/tests/regression-pr5080-notes/pr5080_notes_ok.ml
@@ -0,0 +1,4 @@
+let marshal_int f =
+ match [] with
+ | _ :: `INT n :: _ -> f n
+ | _ -> failwith "marshal_int"
diff --git a/testsuite/tests/tool-lexyacc/.svnignore b/testsuite/tests/tool-lexyacc/.svnignore
index 9cc5affaee..3670600626 100644
--- a/testsuite/tests/tool-lexyacc/.svnignore
+++ b/testsuite/tests/tool-lexyacc/.svnignore
@@ -1,8 +1,13 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
scanner.ml
grammar.mli
grammar.ml
-*.byte
-*.native
-*.result
-*.cm*
-*.o
+
+EOF
diff --git a/testsuite/tests/tool-lexyacc/gram_aux.ml b/testsuite/tests/tool-lexyacc/gram_aux.ml
index 6b23b5ece8..b84d8588a6 100644
--- a/testsuite/tests/tool-lexyacc/gram_aux.ml
+++ b/testsuite/tests/tool-lexyacc/gram_aux.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: gram_aux.ml,v 1.4 1999/11/17 18:58:38 xleroy Exp $ *)
+(* $Id$ *)
(* Auxiliaries for the parser. *)
diff --git a/testsuite/tests/tool-lexyacc/grammar.mly b/testsuite/tests/tool-lexyacc/grammar.mly
index ee5a8d240f..8c1e4db943 100644
--- a/testsuite/tests/tool-lexyacc/grammar.mly
+++ b/testsuite/tests/tool-lexyacc/grammar.mly
@@ -10,7 +10,7 @@
/* */
/***********************************************************************/
-/* $Id: grammar.mly,v 1.4 1999/11/17 18:58:38 xleroy Exp $ */
+/* $Id$ */
/* The grammar for lexer definitions */
diff --git a/testsuite/tests/tool-lexyacc/input b/testsuite/tests/tool-lexyacc/input
index 86114203ff..6793cb8745 100644
--- a/testsuite/tests/tool-lexyacc/input
+++ b/testsuite/tests/tool-lexyacc/input
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: scanner.mll,v 1.5 1999/11/17 18:58:39 xleroy Exp $ *)
+(* $Id$ *)
(* The lexical analyzer for lexer definitions. *)
diff --git a/testsuite/tests/tool-lexyacc/lexgen.ml b/testsuite/tests/tool-lexyacc/lexgen.ml
index 05cb3c0333..bbd729b0f1 100644
--- a/testsuite/tests/tool-lexyacc/lexgen.ml
+++ b/testsuite/tests/tool-lexyacc/lexgen.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: lexgen.ml,v 1.5 2000/12/28 13:06:39 weis Exp $ *)
+(* $Id$ *)
(* Compiling a lexer definition *)
diff --git a/testsuite/tests/tool-lexyacc/main.ml b/testsuite/tests/tool-lexyacc/main.ml
index 1dd130b932..d18a4886d2 100644
--- a/testsuite/tests/tool-lexyacc/main.ml
+++ b/testsuite/tests/tool-lexyacc/main.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: main.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *)
+(* $Id$ *)
(* The lexer generator. Command-line parsing. *)
diff --git a/testsuite/tests/tool-lexyacc/output.ml b/testsuite/tests/tool-lexyacc/output.ml
index 6c56140895..09c66b6873 100644
--- a/testsuite/tests/tool-lexyacc/output.ml
+++ b/testsuite/tests/tool-lexyacc/output.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: output.ml,v 1.5 2000/12/28 13:06:41 weis Exp $ *)
+(* $Id$ *)
(* Generating a DFA as a set of mutually recursive functions *)
diff --git a/testsuite/tests/tool-lexyacc/scan_aux.ml b/testsuite/tests/tool-lexyacc/scan_aux.ml
index 172d6f41ef..c449b13a59 100644
--- a/testsuite/tests/tool-lexyacc/scan_aux.ml
+++ b/testsuite/tests/tool-lexyacc/scan_aux.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: scan_aux.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *)
+(* $Id$ *)
(* Auxiliaries for the lexical analyzer *)
diff --git a/testsuite/tests/tool-lexyacc/scanner.mll b/testsuite/tests/tool-lexyacc/scanner.mll
index c7d74b0185..131272fdd4 100644
--- a/testsuite/tests/tool-lexyacc/scanner.mll
+++ b/testsuite/tests/tool-lexyacc/scanner.mll
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: scanner.mll,v 1.5 1999/11/17 18:58:39 xleroy Exp $ *)
+(* $Id$ *)
(* The lexical analyzer for lexer definitions. *)
diff --git a/testsuite/tests/tool-lexyacc/syntax.ml b/testsuite/tests/tool-lexyacc/syntax.ml
index 14d2987a18..ff704cd2f0 100644
--- a/testsuite/tests/tool-lexyacc/syntax.ml
+++ b/testsuite/tests/tool-lexyacc/syntax.ml
@@ -10,7 +10,7 @@
(* *)
(***********************************************************************)
-(* $Id: syntax.ml,v 1.4 1999/11/17 18:58:39 xleroy Exp $ *)
+(* $Id$ *)
(* The shallow abstract syntax *)
diff --git a/testsuite/tests/tool-ocaml/lib.ml b/testsuite/tests/tool-ocaml/lib.ml
index bf08b66ce4..557fc04ad2 100644
--- a/testsuite/tests/tool-ocaml/lib.ml
+++ b/testsuite/tests/tool-ocaml/lib.ml
@@ -1,4 +1,4 @@
-(* file $Id: lib.ml 6190 2004-04-06 09:11:45Z starynke $ *)
+(* file $Id$ *)
external raise : exn -> 'a = "%raise"
@@ -43,4 +43,4 @@ external weak_get: 'a weak_t -> int -> 'a option = "caml_weak_get";;
let x = 42;;
-(* eof $Id: lib.ml 6190 2004-04-06 09:11:45Z starynke $ *)
+(* eof $Id$ *)
diff --git a/testsuite/tests/tool-ocaml/t301-object.ml b/testsuite/tests/tool-ocaml/t301-object.ml
index 6cef9bedc5..5b053c0064 100644
--- a/testsuite/tests/tool-ocaml/t301-object.ml
+++ b/testsuite/tests/tool-ocaml/t301-object.ml
@@ -7,7 +7,7 @@ ocamlc -nostdlib -I ../../stdlib \
t301-object.ml -o t301-object.byte
***)
-(* $Id: t301-object.ml 6363 2004-06-02 09:42:01Z basile $ *)
+(* $Id$ *)
class c = object (self)
@@ -26,4 +26,4 @@ let (x,y,z) = f () in
if y <> 2 then raise Not_found;
if z <> 4 then raise Not_found;;
-(**** eof $Id: t301-object.ml 6363 2004-06-02 09:42:01Z basile $ *)
+(**** eof $Id$ *)
diff --git a/testsuite/tests/tool-ocamldoc/odoc_test.ml b/testsuite/tests/tool-ocamldoc/odoc_test.ml
index 8bd1127011..ba73fe52ed 100644
--- a/testsuite/tests/tool-ocamldoc/odoc_test.ml
+++ b/testsuite/tests/tool-ocamldoc/odoc_test.ml
@@ -9,7 +9,7 @@
(* *)
(***********************************************************************)
-(* $Id: odoc_test.ml 6127 2004-02-20 16:28:27Z guesdon $ *)
+(* $Id$ *)
(** Custom generator to perform test on ocamldoc. *)
diff --git a/testsuite/tests/typing-fstclassmod/.svnignore b/testsuite/tests/typing-fstclassmod/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-fstclassmod/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/typing-labels/.svnignore b/testsuite/tests/typing-labels/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-labels/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/typing-labels/mixin.ml b/testsuite/tests/typing-labels/mixin.ml
index 742bd59de0..83e7571f82 100644
--- a/testsuite/tests/typing-labels/mixin.ml
+++ b/testsuite/tests/typing-labels/mixin.ml
@@ -1,4 +1,4 @@
-(* $Id: mixin.ml 5929 2003-11-19 02:36:58Z garrigue $ *)
+(* $Id$ *)
open StdLabels
open MoreLabels
diff --git a/testsuite/tests/typing-labels/mixin2.ml b/testsuite/tests/typing-labels/mixin2.ml
index edf20b6dd6..34d6bf50a9 100644
--- a/testsuite/tests/typing-labels/mixin2.ml
+++ b/testsuite/tests/typing-labels/mixin2.ml
@@ -1,4 +1,4 @@
-(* $Id: mixin2.ml 5929 2003-11-19 02:36:58Z garrigue $ *)
+(* $Id$ *)
(* Full fledge version, using objects to structure code *)
diff --git a/testsuite/tests/typing-labels/mixin3.ml b/testsuite/tests/typing-labels/mixin3.ml
index 5113eeb6f8..d8b037b7aa 100644
--- a/testsuite/tests/typing-labels/mixin3.ml
+++ b/testsuite/tests/typing-labels/mixin3.ml
@@ -1,4 +1,4 @@
-(* $Id: mixin3.ml 5929 2003-11-19 02:36:58Z garrigue $ *)
+(* $Id$ *)
(* Full fledge version, using objects to structure code *)
diff --git a/testsuite/tests/typing-modules-bugs/Makefile b/testsuite/tests/typing-modules-bugs/Makefile
new file mode 100644
index 0000000000..9375ddba6f
--- /dev/null
+++ b/testsuite/tests/typing-modules-bugs/Makefile
@@ -0,0 +1,2 @@
+include ../../makefiles/Makefile.okbad
+include ../../makefiles/Makefile.common
diff --git a/testsuite/tests/typing-modules-bugs/pr5164_ok.ml b/testsuite/tests/typing-modules-bugs/pr5164_ok.ml
new file mode 100644
index 0000000000..7de770ed6a
--- /dev/null
+++ b/testsuite/tests/typing-modules-bugs/pr5164_ok.ml
@@ -0,0 +1,9 @@
+module type INCLUDING = sig
+ include module type of List
+ include module type of ListLabels
+end
+
+module Including_typed: INCLUDING = struct
+ include List
+ include ListLabels
+end
diff --git a/testsuite/tests/typing-modules/Makefile b/testsuite/tests/typing-modules/Makefile
new file mode 100644
index 0000000000..9add15574f
--- /dev/null
+++ b/testsuite/tests/typing-modules/Makefile
@@ -0,0 +1,3 @@
+include ../../makefiles/Makefile.toplevel
+include ../../makefiles/Makefile.common
+
diff --git a/testsuite/tests/typing-modules/Test.ml b/testsuite/tests/typing-modules/Test.ml
new file mode 100644
index 0000000000..82ea468f9c
--- /dev/null
+++ b/testsuite/tests/typing-modules/Test.ml
@@ -0,0 +1,5 @@
+module type S = sig type t and s = t end;;
+module type S' = S with type t := int;;
+
+module type S = sig module rec M : sig end and N : sig end end;;
+module type S' = S with module M := String;;
diff --git a/testsuite/tests/typing-modules/Test.ml.reference b/testsuite/tests/typing-modules/Test.ml.reference
new file mode 100644
index 0000000000..823cc1a840
--- /dev/null
+++ b/testsuite/tests/typing-modules/Test.ml.reference
@@ -0,0 +1,6 @@
+
+# module type S = sig type t and s = t end
+# module type S' = sig type s = int end
+# module type S = sig module rec M : sig end and N : sig end end
+# module type S' = sig module rec N : sig end end
+#
diff --git a/testsuite/tests/typing-objects-bugs/pr5156_ok.ml b/testsuite/tests/typing-objects-bugs/pr5156_ok.ml
new file mode 100644
index 0000000000..ba8288da0a
--- /dev/null
+++ b/testsuite/tests/typing-objects-bugs/pr5156_ok.ml
@@ -0,0 +1,10 @@
+class type t = object end;;
+class ['a] o1 = object (self : #t as 'a) end;;
+type 'a obj = ( < .. > as 'a);;
+class type ['a] o2 = object ('a obj) end;;
+class ['a] o3 = object (self : 'a obj) end;;
+class ['a] o4 = object (self) method m = (self : 'a obj) end;;
+(*
+let o = object (self : 'a obj) end;;
+let o = object (self) method m = (self : 'a obj) end;;
+*)
diff --git a/testsuite/tests/typing-objects/.svnignore b/testsuite/tests/typing-objects/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-objects/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/typing-poly/.svnignore b/testsuite/tests/typing-poly/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-poly/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/typing-poly/poly.ml b/testsuite/tests/typing-poly/poly.ml
index 13c5363697..b5835b3daa 100644
--- a/testsuite/tests/typing-poly/poly.ml
+++ b/testsuite/tests/typing-poly/poly.ml
@@ -1,4 +1,4 @@
-(* $Id: poly.ml 9396 2009-10-26 07:11:36Z garrigue $ *)
+(* $Id$ *)
(*
Polymorphic methods are now available in the main branch.
Enjoy.
diff --git a/testsuite/tests/typing-private/.svnignore b/testsuite/tests/typing-private/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-private/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/testsuite/tests/typing-typeparam/.svnignore b/testsuite/tests/typing-typeparam/.svnignore
new file mode 100755
index 0000000000..4394099ffb
--- /dev/null
+++ b/testsuite/tests/typing-typeparam/.svnignore
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+svn propset svn:ignore -F - . <<EOF
+
+*.result
+*.byte
+*.native
+program
+
+EOF
diff --git a/tools/Makefile.shared b/tools/Makefile.shared
index 4e04cd88d4..7b93f863b0 100644
--- a/tools/Makefile.shared
+++ b/tools/Makefile.shared
@@ -76,12 +76,6 @@ install::
clean::
rm -f ocamlprof ocamlcp
-install::
- cp ocamlmktop $(BINDIR)/jocamlmktop$(EXE)
-
-clean::
- rm -f ocamlmktop
-
# To help building mixed-mode libraries (Caml + C)
ocamlmklib: myocamlbuild_config.cmo ocamlmklib.cmo
@@ -121,7 +115,7 @@ clean::
# To make custom toplevels (see Makefile/Makefile.nt)
install::
- cp ocamlmktop $(BINDIR)/jocamlmktop$(EXE)
+ cp ocamlmktop $(BINDIR)/jocamlmktop # no $(EXE) here, ocamlmktop is a script
clean::
rm -f ocamlmktop
diff --git a/tools/ocamldep.ml b/tools/ocamldep.ml
index 828d77308c..77b9aae5c9 100644
--- a/tools/ocamldep.ml
+++ b/tools/ocamldep.ml
@@ -21,6 +21,8 @@ open Parsetree
(* Print the dependencies *)
let load_path = ref ([] : (string * string array) list)
+let ml_synonyms = ref [".ml"]
+let mli_synonyms = ref [".mli"]
let native_only = ref false
let force_slash = ref false
let error_occurred = ref false
@@ -49,6 +51,14 @@ let add_to_load_path dir =
fprintf Format.err_formatter "@[Bad -I option: %s@]@." msg;
error_occurred := true
+let add_to_synonym_list synonyms suffix =
+ if (String.length suffix) > 1 && suffix.[0] = '.' then
+ synonyms := suffix :: !synonyms
+ else begin
+ fprintf Format.err_formatter "@[Bad suffix: '%s'@]@." suffix;
+ error_occurred := true
+ end
+
let find_file name =
let uname = String.uncapitalize name in
let rec find_in_array a pos =
@@ -65,19 +75,25 @@ let find_file name =
| None -> find_in_path rem in
find_in_path !load_path
+let rec find_file_in_list = function
+ [] -> raise Not_found
+| x :: rem -> try find_file x with Not_found -> find_file_in_list rem
+
let find_dependency modname (byt_deps, opt_deps) =
try
- let filename = find_file (modname ^ ".mli") in
- let basename = Filename.chop_suffix filename ".mli" in
+ let candidates = List.map ((^) modname) !mli_synonyms in
+ let filename = find_file_in_list candidates in
+ let basename = Filename.chop_extension filename in
let optname =
- if Sys.file_exists (basename ^ ".ml")
+ if List.exists (fun ext -> Sys.file_exists (basename ^ ext)) !ml_synonyms
then basename ^ ".cmx"
else basename ^ ".cmi" in
((basename ^ ".cmi") :: byt_deps, optname :: opt_deps)
with Not_found ->
try
- let filename = find_file (modname ^ ".ml") in
- let basename = Filename.chop_suffix filename ".ml" in
+ let candidates = List.map ((^) modname) !ml_synonyms in
+ let filename = find_file_in_list candidates in
+ let basename = Filename.chop_extension filename in
let bytename =
basename ^ (if !native_only then ".cmx" else ".cmo") in
(bytename :: byt_deps, (basename ^ ".cmx") :: opt_deps)
@@ -131,7 +147,12 @@ let print_dependencies target_file deps =
let print_raw_dependencies source_file deps =
print_filename source_file; print_string ":";
Depend.StringSet.iter
- (fun dep -> print_char ' '; print_string dep)
+ (fun dep ->
+ if (String.length dep > 0)
+ && (match dep.[0] with 'A'..'Z' -> true | _ -> false) then begin
+ print_char ' ';
+ print_string dep
+ end)
deps;
print_char '\n'
@@ -205,7 +226,7 @@ let ml_file_dependencies source_file =
end else begin
let basename = Filename.chop_extension source_file in
let init_deps =
- if Sys.file_exists (basename ^ ".mli")
+ if List.exists (fun ext -> Sys.file_exists (basename ^ ext)) !mli_synonyms
then let cmi_name = basename ^ ".cmi" in ([cmi_name], [cmi_name])
else ([], []) in
let (byt_deps, opt_deps) =
@@ -266,9 +287,9 @@ let file_dependencies_as kind source_file =
report_err x
let file_dependencies source_file =
- if Filename.check_suffix source_file ".ml" then
+ if List.exists (Filename.check_suffix source_file) !ml_synonyms then
file_dependencies_as ML source_file
- else if Filename.check_suffix source_file ".mli" then
+ else if List.exists (Filename.check_suffix source_file) !mli_synonyms then
file_dependencies_as MLI source_file
else ()
@@ -298,6 +319,10 @@ let _ =
"<f> Process <f> as a .ml file";
"-intf", Arg.String (file_dependencies_as MLI),
"<f> Process <f> as a .mli file";
+ "-ml-synonym", Arg.String(add_to_synonym_list ml_synonyms),
+ "<e> Consider <e> as a synonym of the .ml extension";
+ "-mli-synonym", Arg.String(add_to_synonym_list mli_synonyms),
+ "<e> Consider <e> as a synonym of the .mli extension";
"-modules", Arg.Set raw_dependencies,
" Print module dependencies in raw form (not suitable for make)";
"-native", Arg.Set native_only,
diff --git a/tools/ocamlmklib.mlp b/tools/ocamlmklib.mlp
index c94f5cb334..5a600befaf 100644
--- a/tools/ocamlmklib.mlp
+++ b/tools/ocamlmklib.mlp
@@ -20,12 +20,11 @@ open Myocamlbuild_config
let compiler_path name =
if Sys.os_type = "Win32" then name else Filename.concat bindir name
-let bytecode_objs = ref [] (* .cmo,.cma,.ml,.mli files to pass to ocamlc *)
-and native_objs = ref [] (* .cmx,.cmxa,.ml,.mli files to pass to ocamlopt *)
+let bytecode_objs = ref [] (* .cmo,.cma,.ml,.mli files to pass to jocamlc *)
+and native_objs = ref [] (* .cmx,.cmxa,.ml,.mli files to pass to jocamlopt *)
and c_objs = ref [] (* .o, .a, .obj, .lib, .dll files to pass to mksharedlib and ar *)
-and caml_libs = ref [] (* -cclib to pass to ocamlc, ocamlopt *)
-and caml_opts = ref [] (* -ccopt to pass to ocamlc, ocamlopt *)
-
+and caml_libs = ref [] (* -cclib to pass to jocamlc, jocamlopt *)
+and caml_opts = ref [] (* -ccopt to pass to jocamlc, jocamlopt *)
and dynlink = ref supports_shared_libraries
and failsafe = ref false (* whether to fall back on static build only *)
and c_libs = ref [] (* libs to pass to mksharedlib and jocamlc -cclib *)
@@ -33,7 +32,6 @@ and c_opts = ref [] (* options to pass to mksharedlib and jocamlc -ccopt *)
and ld_opts = ref [] (* options to pass only to the linker *)
and jocamlc = ref (compiler_path "jocamlc")
and jocamlopt = ref (compiler_path "jocamlopt")
-
and output = ref "a" (* Output name for Caml part of library *)
and output_c = ref "" (* Output name for C part of library *)
and rpath = ref [] (* rpath options *)
@@ -98,9 +96,9 @@ let parse_arguments argv =
(c_opts := s :: !c_opts;
let l = chop_prefix s "-L" in
if not (Filename.is_relative l) then rpath := l :: !rpath)
- else if s = "-ocamlc" || s = "-jocamlc" then
+ else if s = "-jocamlc" || s = "-ocamlc" then
jocamlc := next_arg ()
- else if s = "-ocamlopt" || s = "-jocamlopt" then
+ else if s = "-jocamlopt" || s = "-ocamlopt" then
jocamlopt := next_arg ()
else if s = "-o" then
output := next_arg()
@@ -143,72 +141,37 @@ let parse_arguments argv =
if !output_c = "" then output_c := !output
let usage = "\
-<<<<<<< .courant
-Usage: jocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files>
-
-Options are:
- -cclib <lib> C library passed to jocamlc -a or jocamlopt -a only
- -ccopt <opt> C option passed to jocamlc -a or jocamlopt -a only
- -custom disable dynamic loading
- -dllpath <dir> Add <dir> to the run-time search path for DLLs
- -F<dir> Specify a framework directory (MacOSX)
- -framework <name> Use framework <name> (MacOSX)
- -help Print this help message and exit
- --help Same as -help
- -h Same as -help
- -I <dir> Add <dir> to the path searched for Caml object files
- -jocamlc <cmd> Use <cmd> in place of \"jocamlc\"
- -jocamlopt <cmd> Use <cmd> in place of \"jocamlopt\"
- -failsafe fall back to static linking if DLL construction failed
- -ldopt <opt> C option passed to the shared linker only
- -linkall Build Caml archive with link-all behavior
- -l<lib> Specify a dependent C library
- -L<dir> Add <dir> to the path searched for C libraries
- -ocamlc <cmd> Same as -jocamlc
- -ocamlopt <cmd> Same as -jocamlopt
- -o <name> Generated Caml library is named <name>.cma or <name>.cmxa
- -oc <name> Generated C library is named dll<name>.so or lib<name>.a
- -rpath <dir> Same as -dllpath <dir>
- -R<dir> Same as -rpath
- -verbose Print commands before executing them
- -v same as -verbose
- -version Print version and exit
- -Wl,-rpath,<dir> Same as -dllpath <dir>
- -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>
- -Wl,-R<dir> Same as -dllpath <dir>
-=======
-Usage: ocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files>\n\
-Options are:\n\
- -cclib <lib> C library passed to ocamlc -a or ocamlopt -a only\n\
- -ccopt <opt> C option passed to ocamlc -a or ocamlopt -a only\n\
- -custom disable dynamic loading\n\
- -dllpath <dir> Add <dir> to the run-time search path for DLLs\n\
- -F<dir> Specify a framework directory (MacOSX)\n\
- -framework <name> Use framework <name> (MacOSX)\n\
- -help Print this help message and exit\n\
- --help Same as -help\n\
- -h Same as -help\n\
- -I <dir> Add <dir> to the path searched for Caml object files\n\
- -failsafe fall back to static linking if DLL construction failed\n\
- -ldopt <opt> C option passed to the shared linker only\n\
- -linkall Build Caml archive with link-all behavior\n\
- -l<lib> Specify a dependent C library\n\
- -L<dir> Add <dir> to the path searched for C libraries\n\
- -ocamlc <cmd> Use <cmd> in place of \"ocamlc\"\n\
- -ocamlopt <cmd> Use <cmd> in place of \"ocamlopt\"\n\
- -o <name> Generated Caml library is named <name>.cma or <name>.cmxa\n\
- -oc <name> Generated C library is named dll<name>.so or lib<name>.a\n\
- -rpath <dir> Same as -dllpath <dir>\n\
- -R<dir> Same as -rpath\n\
- -verbose Print commands before executing them\n\
- -v same as -verbose\n\
- -version Print version and exit\n\
- -vnum Print version number and exit\n\
- -Wl,-rpath,<dir> Same as -dllpath <dir>\n\
- -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>\n\
- -Wl,-R<dir> Same as -dllpath <dir>\n\
->>>>>>> .fusion-droit.r10497
-"
+Usage: jocamlmklib [options] <.cmo|.cma|.cmx|.cmxa|.ml|.mli|.o|.a|.obj|.lib|.dll files>\
+\nOptions are:\
+\n -cclib <lib> C library passed to jocamlc -a or jocamlopt -a only\
+\n -ccopt <opt> C option passed to jocamlc -a or jocamlopt -a only\
+\n -custom disable dynamic loading\
+\n -dllpath <dir> Add <dir> to the run-time search path for DLLs\
+\n -F<dir> Specify a framework directory (MacOSX)\
+\n -framework <name> Use framework <name> (MacOSX)\
+\n -help Print this help message and exit\
+\n --help Same as -help\
+\n -h Same as -help\
+\n -I <dir> Add <dir> to the path searched for Caml object files\
+\n -failsafe fall back to static linking if DLL construction failed\
+\n -ldopt <opt> C option passed to the shared linker only\
+\n -linkall Build Caml archive with link-all behavior\
+\n -l<lib> Specify a dependent C library\
+\n -L<dir> Add <dir> to the path searched for C libraries\
+\n -[j]ocamlc <cmd> Use <cmd> in place of \"jocamlc\"\
+\n -[j]ocamlopt <cmd> Use <cmd> in place of \"jocamlopt\"\
+\n -o <name> Generated Caml library is named <name>.cma or <name>.cmxa\
+\n -oc <name> Generated C library is named dll<name>.so or lib<name>.a\
+\n -rpath <dir> Same as -dllpath <dir>\
+\n -R<dir> Same as -rpath\
+\n -verbose Print commands before executing them\
+\n -v same as -verbose\
+\n -version Print version and exit\
+\n -vnum Print version number and exit\
+\n -Wl,-rpath,<dir> Same as -dllpath <dir>\
+\n -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>\
+\n -Wl,-R<dir> Same as -dllpath <dir>\
+\n"
let command cmd =
if !verbose then (print_string "+ "; print_string cmd; print_newline());
diff --git a/tools/remove_DEBUG b/tools/remove_DEBUG
new file mode 100755
index 0000000000..78b11e6128
--- /dev/null
+++ b/tools/remove_DEBUG
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#(***********************************************************************)
+#(* OCamldoc *)
+#(* *)
+#(* Damien Doligez, projet Moscova, INRIA Rocquencourt *)
+#(* *)
+#(* Copyright 2003 Institut National de Recherche en Informatique et *)
+#(* en Automatique. All rights reserved. This file is distributed *)
+#(* under the terms of the Q Public License version 1.0. *)
+#(* *)
+#(***********************************************************************)
+
+# $Id$
+
+# usage: remove_DEBUG <file>
+# remove from <file> every line that contains the string "DEBUG",
+# respecting the cpp # line annotation conventions
+
+echo "# 1 \"$1\""
+LC_ALL=C sed -e '/DEBUG/c\
+(* DEBUG statement removed *)' "$1"
diff --git a/typing/ctype.ml b/typing/ctype.ml
index 9281b2da9a..9b4fe18904 100644
--- a/typing/ctype.ml
+++ b/typing/ctype.ml
@@ -177,6 +177,11 @@ module TypePairs =
(* Miscellaneous operations on object types *)
(**********************************************)
+(* Note:
+ We need to maintain some invariants:
+ * cty_self must be a Tobject
+ * ...
+*)
(**** Object field manipulation. ****)
@@ -879,6 +884,20 @@ let instance_parameterized_type_2 sch_args sch_lst sch =
cleanup_types ();
(ty_args, ty_lst, ty)
+let instance_declaration decl =
+ let decl =
+ {decl with type_params = List.map copy decl.type_params;
+ type_manifest = may_map copy decl.type_manifest;
+ type_kind = match decl.type_kind with
+ | Type_abstract -> Type_abstract
+ | Type_variant cl ->
+ Type_variant (List.map (fun (s,tl) -> (s, List.map copy tl)) cl)
+ | Type_record (fl, rr) ->
+ Type_record (List.map (fun (s,m,ty) -> (s, m, copy ty)) fl, rr)}
+ in
+ cleanup_types ();
+ decl
+
let instance_class params cty =
let rec copy_class_type =
function
diff --git a/typing/ctype.mli b/typing/ctype.mli
index 5e5bd83824..84c7175f07 100644
--- a/typing/ctype.mli
+++ b/typing/ctype.mli
@@ -118,6 +118,7 @@ val instance_parameterized_type:
val instance_parameterized_type_2:
type_expr list -> type_expr list -> type_expr ->
type_expr list * type_expr list * type_expr
+val instance_declaration: type_declaration -> type_declaration
val instance_class:
type_expr list -> class_type -> type_expr list * class_type
val instance_poly:
diff --git a/typing/env.ml b/typing/env.ml
index 5ee71f92a7..96fa499276 100644
--- a/typing/env.ml
+++ b/typing/env.ml
@@ -896,4 +896,4 @@ let report_error ppf = function
| Need_recursive_types(import, export) ->
fprintf ppf
"@[<hov>Unit %s imports from %s, which uses recursive types.@ %s@]"
- import export "The compilation flag -rectypes is required"
+ export import "The compilation flag -rectypes is required"
diff --git a/typing/oprint.ml b/typing/oprint.ml
index a57f1c7972..730c6d6f30 100644
--- a/typing/oprint.ml
+++ b/typing/oprint.ml
@@ -32,7 +32,7 @@ let parenthesized_ident name =
(List.mem name ["or"; "mod"; "land"; "lor"; "lxor"; "lsl"; "lsr"; "asr"])
||
(match name.[0] with
- 'a'..'z' | '\223'..'\246' | '\248'..'\255' | '_' ->
+ 'a'..'z' | 'A'..'Z' | '\223'..'\246' | '\248'..'\255' | '_' ->
false
| _ -> true)
diff --git a/typing/printtyp.ml b/typing/printtyp.ml
index 29f2db6039..7a1a9c7215 100644
--- a/typing/printtyp.ml
+++ b/typing/printtyp.ml
@@ -746,7 +746,7 @@ let tree_of_class_declaration id cl rs =
reset ();
List.iter add_alias params;
prepare_class_type params cl.cty_type;
- let sty = self_type cl.cty_type in
+ let sty = Ctype.self_type cl.cty_type in
List.iter mark_loops params;
List.iter check_name_of_type (List.map proxy params);
@@ -768,7 +768,7 @@ let tree_of_cltype_declaration id cl rs =
reset ();
List.iter add_alias params;
prepare_class_type params cl.clty_type;
- let sty = self_type cl.clty_type in
+ let sty = Ctype.self_type cl.clty_type in
List.iter mark_loops params;
List.iter check_name_of_type (List.map proxy params);
diff --git a/typing/typeclass.ml b/typing/typeclass.ml
index de093cfc53..c81e8fe8d5 100644
--- a/typing/typeclass.ml
+++ b/typing/typeclass.ml
@@ -360,7 +360,7 @@ let rec class_type_field env self_type meths (val_sig, concr_meths, inher) =
and class_signature env sty sign =
let meths = ref Meths.empty in
- let self_type = transl_simple_type env false sty in
+ let self_type = Ctype.expand_head env (transl_simple_type env false sty) in
(* Check that the binder is a correct type, and introduce a dummy
method preventing self type from being closed. *)
@@ -719,7 +719,9 @@ and class_structure cl_num final val_env met_env loc (spat, str) =
let added = List.filter (fun x -> List.mem x l1) l2 in
if added <> [] then
Location.prerr_warning loc (Warnings.Implicit_public_methods added);
- {cl_field = fields; cl_meths = meths}, sign
+ {cl_field = fields; cl_meths = meths},
+ if final then sign else
+ {sign with cty_self = Ctype.expand_head val_env public_self}
and class_expr cl_num val_env met_env scl =
match scl.pcl_desc with
diff --git a/typing/typedecl.ml b/typing/typedecl.ml
index 65e025bb96..60672d956d 100644
--- a/typing/typedecl.ml
+++ b/typing/typedecl.ml
@@ -783,7 +783,7 @@ let transl_value_decl env valdecl =
(* Translate a "with" constraint -- much simplified version of
transl_type_decl. *)
-let transl_with_constraint env id row_path sdecl =
+let transl_with_constraint env id row_path orig_decl sdecl =
reset_type_variables();
Ctype.begin_def();
let params =
@@ -791,6 +791,10 @@ let transl_with_constraint env id row_path sdecl =
List.map (enter_type_variable true sdecl.ptype_loc) sdecl.ptype_params
with Already_bound ->
raise(Error(sdecl.ptype_loc, Repeated_parameter)) in
+ let orig_decl = Ctype.instance_declaration orig_decl in
+ let arity_ok = List.length params = orig_decl.type_arity in
+ if arity_ok then
+ List.iter2 (Ctype.unify_var env) params orig_decl.type_params;
List.iter
(function (ty, ty', loc) ->
try
@@ -803,7 +807,7 @@ let transl_with_constraint env id row_path sdecl =
let decl =
{ type_params = params;
type_arity = List.length params;
- type_kind = Type_abstract;
+ type_kind = if arity_ok then orig_decl.type_kind else Type_abstract;
type_private = sdecl.ptype_private;
type_manifest =
begin match sdecl.ptype_manifest with
diff --git a/typing/typedecl.mli b/typing/typedecl.mli
index deb40eb5b3..03d87f8717 100644
--- a/typing/typedecl.mli
+++ b/typing/typedecl.mli
@@ -35,7 +35,7 @@ val transl_value_decl:
Env.t -> Parsetree.value_description -> value_description
val transl_with_constraint:
- Env.t -> Ident.t -> Path.t option ->
+ Env.t -> Ident.t -> Path.t option -> type_declaration ->
Parsetree.type_declaration -> type_declaration
val abstract_type_decl: int -> type_declaration
diff --git a/typing/typemod.ml b/typing/typemod.ml
index 93fce14e8a..7467a1ebb2 100644
--- a/typing/typemod.ml
+++ b/typing/typemod.ml
@@ -93,6 +93,16 @@ let rec make_params n = function
let wrap_param s = {ptyp_desc=Ptyp_var s; ptyp_loc=Location.none}
+let make_next_first rs rem =
+ if rs = Trec_first then
+ match rem with
+ Tsig_type (id, decl, Trec_next) :: rem ->
+ Tsig_type (id, decl, Trec_first) :: rem
+ | Tsig_module (id, mty, Trec_next) :: rem ->
+ Tsig_module (id, mty, Trec_first) :: rem
+ | _ -> rem
+ else rem
+
let merge_constraint initial_env loc sg lid constr =
let real_id = ref None in
let rec merge env sg namelist row_id =
@@ -115,7 +125,7 @@ let merge_constraint initial_env loc sg lid constr =
and id_row = Ident.create (s^"#row") in
let initial_env = Env.add_type id_row decl_row initial_env in
let newdecl = Typedecl.transl_with_constraint
- initial_env id (Some(Pident id_row)) sdecl in
+ initial_env id (Some(Pident id_row)) decl sdecl in
check_type_decl env id row_id newdecl decl rs rem;
let decl_row = {decl_row with type_params = newdecl.type_params} in
let rs' = if rs = Trec_first then Trec_not else rs in
@@ -123,7 +133,7 @@ let merge_constraint initial_env loc sg lid constr =
| (Tsig_type(id, decl, rs) :: rem, [s], Pwith_type sdecl)
when Ident.name id = s ->
let newdecl =
- Typedecl.transl_with_constraint initial_env id None sdecl in
+ Typedecl.transl_with_constraint initial_env id None decl sdecl in
check_type_decl env id row_id newdecl decl rs rem;
Tsig_type(id, newdecl, rs) :: rem
| (Tsig_type(id, decl, rs) :: rem, [s], (Pwith_type _ | Pwith_typesubst _))
@@ -133,10 +143,10 @@ let merge_constraint initial_env loc sg lid constr =
when Ident.name id = s ->
(* Check as for a normal with constraint, but discard definition *)
let newdecl =
- Typedecl.transl_with_constraint initial_env id None sdecl in
+ Typedecl.transl_with_constraint initial_env id None decl sdecl in
check_type_decl env id row_id newdecl decl rs rem;
real_id := Some id;
- rem
+ make_next_first rs rem
| (Tsig_module(id, mty, rs) :: rem, [s], Pwith_module lid)
when Ident.name id = s ->
let (path, mty') = Typetexp.find_module initial_env loc lid in
@@ -149,7 +159,7 @@ let merge_constraint initial_env loc sg lid constr =
let newmty = Mtype.strengthen env mty' path in
ignore(Includemod.modtypes env newmty mty);
real_id := Some id;
- rem
+ make_next_first rs rem
| (Tsig_module(id, mty, rs) :: rem, s :: namelist, _)
when Ident.name id = s ->
let newsg = merge env (extract_sig env loc mty) namelist None in
@@ -318,7 +328,8 @@ let check_sig_item type_names module_names modtype_names loc = function
let rec remove_values ids = function
[] -> []
- | Tsig_value (id, _) :: rem when List.exists (Ident.equal id) ids -> rem
+ | Tsig_value (id, _) :: rem
+ when List.exists (Ident.equal id) ids -> remove_values ids rem
| f :: rem -> f :: remove_values ids rem
let rec get_values = function
diff --git a/typing/unused_var.ml b/typing/unused_var.ml
index fc8f8e4fae..897f430c98 100644
--- a/typing/unused_var.ml
+++ b/typing/unused_var.ml
@@ -133,7 +133,7 @@ and structure_item ppf tbl s =
| Pstr_open _ -> ()
| Pstr_class cdl -> List.iter (class_declaration ppf tbl) cdl;
| Pstr_class_type _ -> ()
- | Pstr_include _ -> ()
+ | Pstr_include me -> module_expr ppf tbl me;
(*>JOCAML*)
| Pstr_exn_global _ -> ()
| Pstr_def d -> join_defs ppf tbl d None