summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpierreweis <Pierre.Weis@inria.fr>2015-11-12 14:38:00 +0100
committerpierreweis <Pierre.Weis@inria.fr>2015-11-12 14:38:00 +0100
commit97cfe7d88231029464596fb4c38cc2c677c029ed (patch)
treee8695a8879385f1234fa10db9eb6040025ffeff5
parent468a014650f448b3f68649472e7196fc977f4fa2 (diff)
parent9dfa69e54698842ece80ee0ac11aa6ede1f2a1b4 (diff)
downloadocaml-97cfe7d88231029464596fb4c38cc2c677c029ed.tar.gz
Merge branch 'trunk' of ssh://github.com/ocaml/ocaml into trunk
-rw-r--r--.gitattributes33
-rw-r--r--.gitignore2690
-rw-r--r--.ignore11
-rw-r--r--Changes53
-rw-r--r--asmcomp/.ignore7
-rw-r--r--asmrun/.ignore42
-rw-r--r--asmrun/roots.c7
-rw-r--r--boot/.ignore6
-rwxr-xr-xboot/ocamlcbin1826168 -> 1828690 bytes
-rwxr-xr-xboot/ocamldepbin574006 -> 573791 bytes
-rwxr-xr-xboot/ocamllexbin259310 -> 259367 bytes
-rw-r--r--bytecomp/.ignore2
-rw-r--r--bytecomp/translcore.ml22
-rw-r--r--bytecomp/translmod.ml11
-rw-r--r--byterun/.ignore13
-rw-r--r--byterun/caml/.ignore3
-rw-r--r--byterun/caml/fix_code.h2
-rw-r--r--byterun/caml/mlvalues.h2
-rw-r--r--byterun/fix_code.c4
-rw-r--r--byterun/floats.c35
-rw-r--r--byterun/ints.c92
-rw-r--r--byterun/obj.c6
-rw-r--r--byterun/str.c5
-rw-r--r--byterun/sys.c34
-rw-r--r--config/.ignore3
-rw-r--r--config/auto-aux/.ignore1
-rw-r--r--debugger/.ignore7
-rw-r--r--emacs/.ignore2
-rw-r--r--lex/.ignore6
-rw-r--r--ocamldoc/.ignore16
-rw-r--r--otherlibs/dynlink/.ignore1
-rw-r--r--otherlibs/systhreads/.ignore1
-rw-r--r--otherlibs/threads/.ignore3
-rw-r--r--otherlibs/threads/pervasives.ml6
-rw-r--r--otherlibs/unix/access.c1
-rw-r--r--otherlibs/unix/chdir.c1
-rw-r--r--otherlibs/unix/chmod.c1
-rw-r--r--otherlibs/unix/chown.c1
-rw-r--r--otherlibs/unix/chroot.c1
-rw-r--r--otherlibs/unix/execv.c3
-rw-r--r--otherlibs/unix/execve.c3
-rw-r--r--otherlibs/unix/execvp.c3
-rw-r--r--otherlibs/unix/getaddrinfo.c3
-rw-r--r--otherlibs/unix/gethost.c8
-rw-r--r--otherlibs/unix/getproto.c1
-rw-r--r--otherlibs/unix/getserv.c3
-rw-r--r--otherlibs/unix/link.c2
-rw-r--r--otherlibs/unix/mkdir.c1
-rw-r--r--otherlibs/unix/mkfifo.c2
-rw-r--r--otherlibs/unix/open.c1
-rw-r--r--otherlibs/unix/opendir.c1
-rw-r--r--otherlibs/unix/putenv.c6
-rw-r--r--otherlibs/unix/rename.c2
-rw-r--r--otherlibs/unix/rmdir.c1
-rw-r--r--otherlibs/unix/socketaddr.c13
-rw-r--r--otherlibs/unix/stat.c4
-rw-r--r--otherlibs/unix/symlink.c2
-rw-r--r--otherlibs/unix/truncate.c2
-rw-r--r--otherlibs/unix/unixsupport.c6
-rw-r--r--otherlibs/unix/unixsupport.h4
-rw-r--r--otherlibs/unix/unlink.c1
-rw-r--r--otherlibs/win32graph/.ignore2
-rw-r--r--otherlibs/win32unix/.ignore29
-rw-r--r--otherlibs/win32unix/createprocess.c1
-rw-r--r--otherlibs/win32unix/link.c2
-rw-r--r--otherlibs/win32unix/mkdir.c1
-rw-r--r--otherlibs/win32unix/open.c1
-rw-r--r--otherlibs/win32unix/rename.c2
-rw-r--r--otherlibs/win32unix/stat.c3
-rw-r--r--otherlibs/win32unix/system.c1
-rw-r--r--otherlibs/win32unix/unixsupport.c9
-rw-r--r--otherlibs/win32unix/unixsupport.h2
-rw-r--r--otherlibs/win32unix/windir.c10
-rw-r--r--parsing/.ignore9
-rw-r--r--parsing/lexer.mll4
-rw-r--r--parsing/parser.mly35
-rw-r--r--stdlib/.depend114
-rw-r--r--stdlib/.ignore8
-rwxr-xr-xstdlib/Makefile.shared5
-rw-r--r--stdlib/int32.ml16
-rw-r--r--stdlib/int32.mli16
-rw-r--r--stdlib/int64.ml16
-rw-r--r--stdlib/int64.mli16
-rw-r--r--stdlib/nativeint.ml8
-rw-r--r--stdlib/nativeint.mli8
-rw-r--r--stdlib/pervasives.ml6
-rw-r--r--stdlib/pervasives.mli7
-rw-r--r--stdlib/sys.mli3
-rw-r--r--stdlib/sys.mlp3
-rw-r--r--testsuite/.ignore1
-rw-r--r--testsuite/makefiles/Makefile.common3
-rw-r--r--testsuite/tests/asmcomp/.ignore7
-rw-r--r--testsuite/tests/asmcomp/main.c27
-rw-r--r--testsuite/tests/asmcomp/mainarith.c4
-rw-r--r--testsuite/tests/embedded/.ignore1
-rw-r--r--testsuite/tests/exotic-syntax/exotic.ml7
-rw-r--r--testsuite/tests/float-unboxing/float_subst_boxed_number.ml50
-rw-r--r--testsuite/tests/lib-dynlink-bytecode/.ignore6
-rw-r--r--testsuite/tests/lib-dynlink-bytecode/stub1.c2
-rw-r--r--testsuite/tests/lib-dynlink-bytecode/stub2.c4
-rw-r--r--testsuite/tests/lib-dynlink-native/.ignore7
-rw-r--r--testsuite/tests/lib-scanf/.ignore1
-rw-r--r--testsuite/tests/lib-threads/.ignore1
-rw-r--r--testsuite/tests/no-alias-deps/Makefile34
-rw-r--r--testsuite/tests/no-alias-deps/aliases.cmo.reference12
-rw-r--r--testsuite/tests/no-alias-deps/aliases.ml5
-rw-r--r--testsuite/tests/no-alias-deps/aliases.ml.reference5
-rw-r--r--testsuite/tests/no-alias-deps/b.cmi.pre1
-rw-r--r--testsuite/tests/no-alias-deps/c.mli1
-rw-r--r--testsuite/tests/no-alias-deps/d.mli1
-rw-r--r--testsuite/tests/runtime-errors/.ignore1
-rw-r--r--testsuite/tests/tool-debugger/basic/.ignore1
-rw-r--r--testsuite/tests/tool-debugger/find-artifacts/.ignore2
-rw-r--r--testsuite/tests/tool-debugger/no_debug_event/.ignore4
-rw-r--r--testsuite/tests/tool-lexyacc/.ignore3
-rw-r--r--testsuite/tests/tool-ocamldoc/.ignore4
-rw-r--r--testsuite/tests/typing-modules-bugs/pr7036_ok.ml21
-rw-r--r--testsuite/tests/typing-warnings/coercions.ml2
-rw-r--r--testsuite/tests/unboxed-primitive-args/.ignore2
-rw-r--r--testsuite/tests/unboxed-primitive-args/common.ml2
-rw-r--r--testsuite/tests/unboxed-primitive-args/test_common.c4
-rw-r--r--tools/.ignore27
-rwxr-xr-xtools/check-typo37
-rwxr-xr-xtools/setignore44
-rw-r--r--typing/ctype.ml9
-rw-r--r--typing/env.ml103
-rw-r--r--typing/primitive.ml8
-rw-r--r--typing/primitive.mli10
-rw-r--r--utils/.ignore1
-rw-r--r--utils/warnings.ml10
-rw-r--r--utils/warnings.mli2
-rw-r--r--yacc/.ignore4
-rw-r--r--yacc/closure.c6
-rw-r--r--yacc/lr0.c2
134 files changed, 832 insertions, 3197 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..cd99925e2b
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,33 @@
+boot/ocamlc binary
+boot/ocamllex binary
+boot/ocamldep binary
+
+.gitattributes ocaml-typo=missing-header
+.gitignore ocaml-typo=missing-header
+.merlin ocaml-typo=missing-header
+.ocp-indent ocaml-typo=missing-header
+Changes ocaml-typo=non-ascii,missing-header
+CONTRIBUTING.md ocaml-typo=missing-header
+INSTALL ocaml-typo=missing-header
+LICENSE ocaml-typo=non-printing,missing-header
+
+asmcomp/*/emit.mlp ocaml-typo=tab,long-line,unused-prop
+
+asmrun/i386.S ocaml-typo=long-line
+
+config/gnu ocaml-typo=prune
+
+emacs/*.el ocaml-typo=long-line,unused-prop
+emacs/COPYING ocaml-typo=tab,non-printing,missing-header
+emacs/ocamltags.in ocaml-typo=non-printing
+emacs/README* ocaml-typo=missing-header
+
+experimental ocaml-typo=prune
+
+ocamlbuild/* ocaml-typo=long-line
+ocamlbuild/AUTHORS ocaml-typo=missing-header
+ocamlbuild/ChangeLog ocaml-typo=tab,missing-header
+ocamlbuild/TODO ocaml-typo=missing-header
+
+ocamldoc/Changes.txt ocaml-typo=missing-header
+ocamldoc/ocamldoc.sty ocaml-typo=missing-header
diff --git a/.gitignore b/.gitignore
index 9cb92d25a7..14ef736207 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,56 +1,36 @@
+# general patterns
+
+*.o
+*.a
+*.so
+*.obj
+*.lib
+*.dll
+*.cm[ioxat]
+*.cmx[as]
+*.cmti
+*.annot
+*.exe
+*.exe.manifest
+.depend
+.depend.nt
+.DS_Store
+*.out
+*.out.dSYM
+
+# local to root directory
-# /
-/*.o
-/*.a
-/*.so
-/*.obj
-/*.lib
-/*.dll
-/*.cm[ioxat]
-/*.cmx[as]
-/*.cmti
-/*.annot
-/*.result
-/*.byte
-/*.native
-/program
-/*.exe
-/*.exe.manifest
-/.depend
-/.depend.nt
-/.DS_Store
-/configure
/ocamlc
/ocamlc.opt
/expunge
/ocaml
/ocamlopt
/ocamlopt.opt
-/ocamlcomp.sh
-/ocamlcompopt.sh
/package-macosx
/ocamlnat
-# /asmcomp/
-/asmcomp/*.o
-/asmcomp/*.a
-/asmcomp/*.so
-/asmcomp/*.obj
-/asmcomp/*.lib
-/asmcomp/*.dll
-/asmcomp/*.cm[ioxat]
-/asmcomp/*.cmx[as]
-/asmcomp/*.cmti
-/asmcomp/*.annot
-/asmcomp/*.result
-/asmcomp/*.byte
-/asmcomp/*.native
-/asmcomp/program
-/asmcomp/*.exe
-/asmcomp/*.exe.manifest
-/asmcomp/.depend
-/asmcomp/.depend.nt
-/asmcomp/.DS_Store
+# specific files and patterns in sub-directories
+
/asmcomp/emit.ml
/asmcomp/arch.ml
/asmcomp/proc.ml
@@ -59,307 +39,87 @@
/asmcomp/scheduling.ml
/asmcomp/CSE.ml
-# /asmcomp/amd64/
-/asmcomp/amd64/*.o
-/asmcomp/amd64/*.a
-/asmcomp/amd64/*.so
-/asmcomp/amd64/*.obj
-/asmcomp/amd64/*.cm[ioxat]
-/asmcomp/amd64/*.cmx[as]
-/asmcomp/amd64/*.cmti
-/asmcomp/amd64/*.annot
-/asmcomp/amd64/*.result
-/asmcomp/amd64/*.byte
-/asmcomp/amd64/*.native
-/asmcomp/amd64/program
-/asmcomp/amd64/program.exe
-/asmcomp/amd64/.depend
-/asmcomp/amd64/.depend.nt
-/asmcomp/amd64/.DS_Store
-
-# /asmrun/
-/asmrun/*.o
-/asmrun/*.a
-/asmrun/*.so
-/asmrun/*.obj
-/asmrun/*.lib
-/asmrun/*.dll
-/asmrun/*.cm[ioxat]
-/asmrun/*.cmx[as]
-/asmrun/*.cmti
-/asmrun/*.annot
-/asmrun/*.result
-/asmrun/*.byte
-/asmrun/*.native
-/asmrun/program
-/asmrun/*.exe
-/asmrun/.depend
-/asmrun/.depend.nt
-/asmrun/.DS_Store
/asmrun/*.p.c
/asmrun/*.d.c
-/asmrun/libasmrun.a
-/asmrun/libasmrunp.a
-/asmrun/main.c
-/asmrun/misc.c
-/asmrun/freelist.c
-/asmrun/major_gc.c
-/asmrun/minor_gc.c
-/asmrun/memory.c
/asmrun/alloc.c
/asmrun/array.c
-/asmrun/compare.c
/asmrun/backtrace.c
-/asmrun/ints.c
-/asmrun/floats.c
-/asmrun/str.c
-/asmrun/io.c
+/asmrun/callback.c
+/asmrun/compact.c
+/asmrun/compare.c
+/asmrun/custom.c
+/asmrun/debugger.c
+/asmrun/dynlink.c
/asmrun/extern.c
-/asmrun/intern.c
-/asmrun/hash.c
-/asmrun/sys.c
-/asmrun/parsing.c
+/asmrun/finalise.c
+/asmrun/floats.c
+/asmrun/freelist.c
/asmrun/gc_ctrl.c
-/asmrun/terminfo.c
+/asmrun/globroots.c
+/asmrun/hash.c
+/asmrun/intern.c
+/asmrun/ints.c
+/asmrun/io.c
+/asmrun/lexing.c
+/asmrun/main.c
+/asmrun/major_gc.c
/asmrun/md5.c
+/asmrun/memory.c
+/asmrun/meta.c
+/asmrun/minor_gc.c
+/asmrun/misc.c
/asmrun/obj.c
-/asmrun/lexing.c
+/asmrun/parsing.c
/asmrun/printexc.c
-/asmrun/callback.c
-/asmrun/weak.c
-/asmrun/compact.c
-/asmrun/finalise.c
-/asmrun/custom.c
-/asmrun/meta.c
-/asmrun/globroots.c
-/asmrun/unix.c
-/asmrun/dynlink.c
/asmrun/signals.c
-/asmrun/debugger.c
-/asmrun/.depend.nt
+/asmrun/startup_aux.c
+/asmrun/str.c
+/asmrun/sys.c
+/asmrun/terminfo.c
+/asmrun/unix.c
+/asmrun/weak.c
-# /boot/
-/boot/*.o
-/boot/*.a
-/boot/*.so
-/boot/*.obj
-/boot/*.lib
-/boot/*.dll
-/boot/*.cm[ioxat]
-/boot/*.cmx[as]
-/boot/*.cmti
-/boot/*.annot
-/boot/*.result
-/boot/*.byte
-/boot/*.native
-/boot/program
-/boot/*.exe
-/boot/*.exe.manifest
-/boot/.depend
-/boot/.depend.nt
-/boot/.DS_Store
/boot/Saved
/boot/ocamlrun
-/boot/ocamlrun.exe
/boot/ocamlyacc
-/boot/ocamlyacc.exe
/boot/camlheader
-# /bytecomp/
-/bytecomp/*.o
-/bytecomp/*.a
-/bytecomp/*.so
-/bytecomp/*.obj
-/bytecomp/*.lib
-/bytecomp/*.dll
-/bytecomp/*.cm[ioxat]
-/bytecomp/*.cmx[as]
-/bytecomp/*.cmti
-/bytecomp/*.annot
-/bytecomp/*.result
-/bytecomp/*.byte
-/bytecomp/*.native
-/bytecomp/program
-/bytecomp/*.exe
-/bytecomp/.depend
-/bytecomp/.depend.nt
-/bytecomp/.DS_Store
/bytecomp/runtimedef.ml
/bytecomp/opcodes.ml
-# /byterun/
-/byterun/*.o
-/byterun/*.a
-/byterun/*.so
-/byterun/*.obj
-/byterun/*.cm[ioxa]
-/byterun/*.cmx[as]
-/byterun/*.annot
-/byterun/*.result
-/byterun/*.byte
-/byterun/*.native
-/byterun/program
-/byterun/program.exe
-/byterun/.depend
-/byterun/.depend.nt
-/byterun/.DS_Store
/byterun/caml/jumptbl.h
/byterun/primitives
/byterun/prims.c
/byterun/caml/opnames.h
/byterun/caml/version.h
/byterun/ocamlrun
-/byterun/ocamlrun.exe
/byterun/ocamlrund
-/byterun/ocamlrund.exe
/byterun/ld.conf
/byterun/interp.a.lst
/byterun/*.[sd]obj
-/byterun/*.lib
/byterun/.gdb_history
/byterun/*.d.c
/byterun/*.pic.c
-# /compilerlibs/
-/compilerlibs/*
+/compilerlibs
-# /config/
-/config/*.o
-/config/*.a
-/config/*.so
-/config/*.obj
-/config/*.lib
-/config/*.dll
-/config/*.cm[ioxat]
-/config/*.cmx[as]
-/config/*.cmti
-/config/*.annot
-/config/*.result
-/config/*.byte
-/config/*.native
-/config/program
-/config/*.exe
-/config/*.exe.manifest
-/config/.depend
-/config/.depend.nt
-/config/.DS_Store
/config/m.h
/config/s.h
/config/Makefile
-# /config/auto-aux/
-/config/auto-aux/*.o
-/config/auto-aux/*.a
-/config/auto-aux/*.so
-/config/auto-aux/*.obj
-/config/auto-aux/*.cm[ioxa]
-/config/auto-aux/*.cmx[as]
-/config/auto-aux/*.annot
-/config/auto-aux/*.result
-/config/auto-aux/*.byte
-/config/auto-aux/*.native
-/config/auto-aux/program
-/config/auto-aux/.depend
-/config/auto-aux/.depend.nt
-/config/auto-aux/.DS_Store
-/config/auto-aux/camlp4_config.ml
-
-# /config/gnu/
-
-# /debugger/
-/debugger/*.o
-/debugger/*.a
-/debugger/*.so
-/debugger/*.obj
-/debugger/*.cm[ioxa]
-/debugger/*.cmx[as]
-/debugger/*.annot
-/debugger/*.result
-/debugger/*.byte
-/debugger/*.native
-/debugger/program
-/debugger/program.exe
-/debugger/.depend
-/debugger/.depend.nt
-/debugger/.DS_Store
/debugger/lexer.ml
/debugger/parser.ml
/debugger/parser.mli
/debugger/ocamldebug
-/debugger/ocamldebug.exe
/debugger/dynlink.ml
/debugger/dynlink.mli
-# /driver/
-/driver/*.o
-/driver/*.a
-/driver/*.so
-/driver/*.obj
-/driver/*.lib
-/driver/*.dll
-/driver/*.cm[ioxat]
-/driver/*.cmx[as]
-/driver/*.cmti
-/driver/*.annot
-/driver/*.result
-/driver/*.byte
-/driver/*.native
-/driver/program
-/driver/*.exe
-/driver/*.exe.manifest
-/driver/.depend
-/driver/.depend.nt
-/driver/.DS_Store
-
-# /emacs/
-/emacs/*.o
-/emacs/*.a
-/emacs/*.so
-/emacs/*.obj
-/emacs/*.lib
-/emacs/*.dll
-/emacs/*.cm[ioxat]
-/emacs/*.cmx[as]
-/emacs/*.cmti
-/emacs/*.annot
-/emacs/*.result
-/emacs/*.byte
-/emacs/*.native
-/emacs/program
-/emacs/*.exe
-/emacs/*.exe.manifest
-/emacs/.depend
-/emacs/.depend.nt
-/emacs/.DS_Store
/emacs/ocamltags
/emacs/*.elc
-# /experimental/
-
-# /experimental/garrigue/
/experimental/garrigue/*.out
/experimental/garrigue/*.out2
-# /lex/
-/lex/*.o
-/lex/*.a
-/lex/*.so
-/lex/*.obj
-/lex/*.lib
-/lex/*.dll
-/lex/*.cm[ioxat]
-/lex/*.cmx[as]
-/lex/*.cmti
-/lex/*.annot
-/lex/*.result
-/lex/*.byte
-/lex/*.native
-/lex/program
-/lex/*.exe
-/lex/*.exe.manifest
-/lex/.depend
-/lex/.depend.nt
-/lex/.DS_Store
/lex/parser.ml
/lex/parser.mli
/lex/lexer.ml
@@ -367,42 +127,10 @@
/lex/ocamllex.opt
/lex/parser.output
-# /ocamlbuild/
-/ocamlbuild/*.o
-/ocamlbuild/*.a
-/ocamlbuild/*.so
-/ocamlbuild/*.obj
-/ocamlbuild/*.lib
-/ocamlbuild/*.dll
-/ocamlbuild/*.cm[ioxat]
-/ocamlbuild/*.cmx[as]
-/ocamlbuild/*.cmti
-/ocamlbuild/*.annot
-/ocamlbuild/*.byte
-/ocamlbuild/*.native
/ocamlbuild/ocamlbuild_config.ml
/ocamlbuild/lexers.ml
/ocamlbuild/glob_lexer.ml
-# /ocamldoc/
-/ocamldoc/*.o
-/ocamldoc/*.a
-/ocamldoc/*.so
-/ocamldoc/*.obj
-/ocamldoc/*.lib
-/ocamldoc/*.dll
-/ocamldoc/*.cm[ioxat]
-/ocamldoc/*.cmx[as]
-/ocamldoc/*.cmti
-/ocamldoc/*.annot
-/ocamldoc/*.result
-/ocamldoc/*.byte
-/ocamldoc/*.native
-/ocamldoc/program
-/ocamldoc/*.exe
-/ocamldoc/.depend
-/ocamldoc/.depend.nt
-/ocamldoc/.DS_Store
/ocamldoc/ocamldoc
/ocamldoc/ocamldoc.opt
/ocamldoc/odoc_crc.ml
@@ -421,262 +149,15 @@
/ocamldoc/test_latex
/ocamldoc/test
-# /ocamldoc/generators/
-/ocamldoc/generators/*.o
-/ocamldoc/generators/*.a
-/ocamldoc/generators/*.so
-/ocamldoc/generators/*.obj
-/ocamldoc/generators/*.lib
-/ocamldoc/generators/*.dll
-/ocamldoc/generators/*.cm[ioxat]
-/ocamldoc/generators/*.cmx[as]
-/ocamldoc/generators/*.cmti
-/ocamldoc/generators/*.annot
-/ocamldoc/generators/*.result
-/ocamldoc/generators/*.byte
-/ocamldoc/generators/*.native
-/ocamldoc/generators/program
-/ocamldoc/generators/*.exe
-/ocamldoc/generators/*.exe.manifest
-/ocamldoc/generators/.depend
-/ocamldoc/generators/.depend.nt
-/ocamldoc/generators/.DS_Store
-
-# /otherlibs/
-/otherlibs/.depend
-/otherlibs/configure
-/otherlibs/ocamlc
-/otherlibs/ocamlc.opt
-/otherlibs/expunge
-/otherlibs/ocaml
-/otherlibs/ocamlopt
-/otherlibs/ocamlopt.opt
-/otherlibs/ocamlcomp.sh
-/otherlibs/ocamlcompopt.sh
-/otherlibs/package-macosx
-/otherlibs/.DS_Store
-/otherlibs/*.annot
-/otherlibs/_boot_log1
-/otherlibs/_boot_log2
-/otherlibs/_build
-/otherlibs/_log
-/otherlibs/myocamlbuild_config.ml
-/otherlibs/ocamlnat
-/otherlibs/*.cm*
-/otherlibs/*.o
-
-# /otherlibs/bigarray/
-/otherlibs/bigarray/*.o
-/otherlibs/bigarray/*.a
-/otherlibs/bigarray/*.so
-/otherlibs/bigarray/*.obj
-/otherlibs/bigarray/*.lib
-/otherlibs/bigarray/*.dll
-/otherlibs/bigarray/*.cm[ioxat]
-/otherlibs/bigarray/*.cmx[as]
-/otherlibs/bigarray/*.cmti
-/otherlibs/bigarray/*.annot
-/otherlibs/bigarray/*.result
-/otherlibs/bigarray/*.byte
-/otherlibs/bigarray/*.native
-/otherlibs/bigarray/program
-/otherlibs/bigarray/*.exe
-/otherlibs/bigarray/.depend
-/otherlibs/bigarray/.depend.nt
-/otherlibs/bigarray/.DS_Store
-
-# /otherlibs/dynlink/
-/otherlibs/dynlink/*.o
-/otherlibs/dynlink/*.a
-/otherlibs/dynlink/*.so
-/otherlibs/dynlink/*.obj
-/otherlibs/dynlink/*.lib
-/otherlibs/dynlink/*.dll
-/otherlibs/dynlink/*.cm[ioxat]
-/otherlibs/dynlink/*.cmx[as]
-/otherlibs/dynlink/*.cmti
-/otherlibs/dynlink/*.annot
-/otherlibs/dynlink/*.result
-/otherlibs/dynlink/*.byte
-/otherlibs/dynlink/*.native
-/otherlibs/dynlink/program
-/otherlibs/dynlink/*.exe
-/otherlibs/dynlink/.depend
-/otherlibs/dynlink/.depend.nt
-/otherlibs/dynlink/.DS_Store
/otherlibs/dynlink/extract_crc
-
-# /otherlibs/graph/
-/otherlibs/graph/*.o
-/otherlibs/graph/*.a
-/otherlibs/graph/*.so
-/otherlibs/graph/*.obj
-/otherlibs/graph/*.lib
-/otherlibs/graph/*.dll
-/otherlibs/graph/*.cm[ioxat]
-/otherlibs/graph/*.cmx[as]
-/otherlibs/graph/*.cmti
-/otherlibs/graph/*.annot
-/otherlibs/graph/*.result
-/otherlibs/graph/*.byte
-/otherlibs/graph/*.native
-/otherlibs/graph/program
-/otherlibs/graph/*.exe
-/otherlibs/graph/*.exe.manifest
-/otherlibs/graph/.depend
-/otherlibs/graph/.depend.nt
-/otherlibs/graph/.DS_Store
-
-# /otherlibs/num/
-/otherlibs/num/*.o
-/otherlibs/num/*.a
-/otherlibs/num/*.so
-/otherlibs/num/*.obj
-/otherlibs/num/*.lib
-/otherlibs/num/*.dll
-/otherlibs/num/*.cm[ioxat]
-/otherlibs/num/*.cmx[as]
-/otherlibs/num/*.cmti
-/otherlibs/num/*.annot
-/otherlibs/num/*.result
-/otherlibs/num/*.byte
-/otherlibs/num/*.native
-/otherlibs/num/program
-/otherlibs/num/*.exe
-/otherlibs/num/.depend
-/otherlibs/num/.depend.nt
-/otherlibs/num/.DS_Store
-
-# /otherlibs/str/
-/otherlibs/str/*.o
-/otherlibs/str/*.a
-/otherlibs/str/*.so
-/otherlibs/str/*.obj
-/otherlibs/str/*.lib
-/otherlibs/str/*.dll
-/otherlibs/str/*.cm[ioxat]
-/otherlibs/str/*.cmx[as]
-/otherlibs/str/*.cmti
-/otherlibs/str/*.annot
-/otherlibs/str/*.result
-/otherlibs/str/*.byte
-/otherlibs/str/*.native
-/otherlibs/str/program
-/otherlibs/str/*.exe
-/otherlibs/str/.depend
-/otherlibs/str/.depend.nt
-/otherlibs/str/.DS_Store
-
-# /otherlibs/systhreads/
-/otherlibs/systhreads/*.o
-/otherlibs/systhreads/*.a
-/otherlibs/systhreads/*.so
-/otherlibs/systhreads/*.obj
-/otherlibs/systhreads/*.lib
-/otherlibs/systhreads/*.dll
-/otherlibs/systhreads/*.cm[ioxat]
-/otherlibs/systhreads/*.cmx[as]
-/otherlibs/systhreads/*.cmti
-/otherlibs/systhreads/*.annot
-/otherlibs/systhreads/*.result
-/otherlibs/systhreads/*.byte
-/otherlibs/systhreads/*.native
-/otherlibs/systhreads/program
-/otherlibs/systhreads/*.exe
-/otherlibs/systhreads/.depend
-/otherlibs/systhreads/.depend.nt
-/otherlibs/systhreads/.DS_Store
/otherlibs/systhreads/thread.ml
-
-# /otherlibs/threads/
-/otherlibs/threads/*.o
-/otherlibs/threads/*.a
-/otherlibs/threads/*.so
-/otherlibs/threads/*.obj
-/otherlibs/threads/*.lib
-/otherlibs/threads/*.dll
-/otherlibs/threads/*.cm[ioxat]
-/otherlibs/threads/*.cmx[as]
-/otherlibs/threads/*.cmti
-/otherlibs/threads/*.annot
-/otherlibs/threads/*.result
-/otherlibs/threads/*.byte
-/otherlibs/threads/*.native
-/otherlibs/threads/program
-/otherlibs/threads/*.exe
-/otherlibs/threads/*.exe.manifest
-/otherlibs/threads/.depend
-/otherlibs/threads/.depend.nt
-/otherlibs/threads/.DS_Store
/otherlibs/threads/marshal.mli
/otherlibs/threads/pervasives.mli
/otherlibs/threads/unix.mli
-
-# /otherlibs/unix/
-/otherlibs/unix/*.o
-/otherlibs/unix/*.a
-/otherlibs/unix/*.so
-/otherlibs/unix/*.obj
-/otherlibs/unix/*.lib
-/otherlibs/unix/*.dll
-/otherlibs/unix/*.cm[ioxat]
-/otherlibs/unix/*.cmx[as]
-/otherlibs/unix/*.cmti
-/otherlibs/unix/*.annot
-/otherlibs/unix/*.result
-/otherlibs/unix/*.byte
-/otherlibs/unix/*.native
-/otherlibs/unix/program
-/otherlibs/unix/*.exe
-/otherlibs/unix/*.exe.manifest
-/otherlibs/unix/.depend
-/otherlibs/unix/.depend.nt
-/otherlibs/unix/.DS_Store
-
-# /otherlibs/win32graph/
-/otherlibs/win32graph/*.o
-/otherlibs/win32graph/*.a
-/otherlibs/win32graph/*.so
-/otherlibs/win32graph/*.obj
-/otherlibs/win32graph/*.lib
-/otherlibs/win32graph/*.dll
-/otherlibs/win32graph/*.cm[ioxat]
-/otherlibs/win32graph/*.cmx[as]
-/otherlibs/win32graph/*.cmti
-/otherlibs/win32graph/*.annot
-/otherlibs/win32graph/*.result
-/otherlibs/win32graph/*.byte
-/otherlibs/win32graph/*.native
-/otherlibs/win32graph/program
-/otherlibs/win32graph/*.exe
-/otherlibs/win32graph/.depend
-/otherlibs/win32graph/.depend.nt
-/otherlibs/win32graph/.DS_Store
/otherlibs/win32graph/graphics.ml
/otherlibs/win32graph/graphics.mli
-
-# /otherlibs/win32unix/
-/otherlibs/win32unix/*.o
-/otherlibs/win32unix/*.a
-/otherlibs/win32unix/*.so
-/otherlibs/win32unix/*.obj
-/otherlibs/win32unix/*.lib
-/otherlibs/win32unix/*.dll
-/otherlibs/win32unix/*.cm[ioxat]
-/otherlibs/win32unix/*.cmx[as]
-/otherlibs/win32unix/*.cmti
-/otherlibs/win32unix/*.annot
-/otherlibs/win32unix/*.result
-/otherlibs/win32unix/*.byte
-/otherlibs/win32unix/*.native
-/otherlibs/win32unix/program
-/otherlibs/win32unix/*.exe
-/otherlibs/win32unix/.depend
-/otherlibs/win32unix/.depend.nt
-/otherlibs/win32unix/.DS_Store
/otherlibs/win32unix/unixLabels.ml*
/otherlibs/win32unix/unix.mli
-/otherlibs/win32unix/unix.lib
/otherlibs/win32unix/access.c
/otherlibs/win32unix/addrofstr.c
/otherlibs/win32unix/chdir.c
@@ -704,26 +185,6 @@
/otherlibs/win32unix/unlink.c
/otherlibs/win32unix/utimes.c
-# /parsing/
-/parsing/*.o
-/parsing/*.a
-/parsing/*.so
-/parsing/*.obj
-/parsing/*.lib
-/parsing/*.dll
-/parsing/*.cm[ioxat]
-/parsing/*.cmx[as]
-/parsing/*.cmti
-/parsing/*.annot
-/parsing/*.result
-/parsing/*.byte
-/parsing/*.native
-/parsing/program
-/parsing/*.exe
-/parsing/*.exe.manifest
-/parsing/.depend
-/parsing/.depend.nt
-/parsing/.DS_Store
/parsing/parser.ml
/parsing/parser.mli
/parsing/lexer.ml
@@ -734,2008 +195,66 @@
/parsing/parser.automaton
/parsing/parser.conflicts
-# /stdlib/
-/stdlib/*.o
-/stdlib/*.a
-/stdlib/*.so
-/stdlib/*.obj
-/stdlib/*.lib
-/stdlib/*.dll
-/stdlib/*.cm[ioxat]
-/stdlib/*.cmx[as]
-/stdlib/*.cmti
-/stdlib/*.annot
-/stdlib/*.result
-/stdlib/*.byte
-/stdlib/*.native
-/stdlib/program
-/stdlib/*.exe
-/stdlib/.depend
-/stdlib/.depend.nt
-/stdlib/.DS_Store
/stdlib/camlheader
+/stdlib/target_camlheader
/stdlib/camlheaderd
+/stdlib/target_camlheaderd
/stdlib/camlheader_ur
/stdlib/labelled-*
/stdlib/caml
/stdlib/sys.ml
-# /testsuite/
-/testsuite/*.o
-/testsuite/*.a
-/testsuite/*.so
-/testsuite/*.obj
-/testsuite/*.cm[ioxa]
-/testsuite/*.cmx[as]
-/testsuite/*.annot
-/testsuite/*.result
-/testsuite/*.byte
-/testsuite/*.native
-/testsuite/program
-/testsuite/.depend
-/testsuite/.depend.nt
-/testsuite/.DS_Store
-/testsuite/_log
-
-# /testsuite/external/
-/testsuite/external/*.o
-/testsuite/external/*.a
-/testsuite/external/*.so
-/testsuite/external/*.obj
-/testsuite/external/*.lib
-/testsuite/external/*.dll
-/testsuite/external/*.cm[ioxat]
-/testsuite/external/*.cmx[as]
-/testsuite/external/*.cmti
-/testsuite/external/*.annot
-/testsuite/external/*.result
-/testsuite/external/*.byte
-/testsuite/external/*.native
-/testsuite/external/program
-/testsuite/external/*.exe
-/testsuite/external/*.exe.manifest
-/testsuite/external/.depend
-/testsuite/external/.depend.nt
-/testsuite/external/.DS_Store
-/testsuite/external/*.tar.gz
-/testsuite/external/*.tar.bz2
-/testsuite/external/*.tgz
-/testsuite/external/*.tbz
-/testsuite/external/*.zip
-/testsuite/external/log-*
-/testsuite/external/log_*
-/testsuite/external/advi
-/testsuite/external/advi-1.10.2
-/testsuite/external/altergo
-/testsuite/external/alt-ergo-0.95.2
-/testsuite/external/binprot
-/testsuite/external/bin_prot-109.30.00
-/testsuite/external/bitstring
-/testsuite/external/ocaml-bitstring-2.0.3
-/testsuite/external/boomerang
-/testsuite/external/boomerang-0.2
-/testsuite/external/calendar
-/testsuite/external/calendar-2.03.2
-/testsuite/external/camlimages
-/testsuite/external/camlimages-4.0.1
-/testsuite/external/camlpdf
-/testsuite/external/camlpdf-0.5
-/testsuite/external/camlp4
-/testsuite/external/camlp4-trunk
-/testsuite/external/camlp5
-/testsuite/external/camlp5-git
-/testsuite/external/camlzip
-/testsuite/external/camlzip-1.04
-/testsuite/external/camomile
-/testsuite/external/camomile-0.8.4
-/testsuite/external/comparelib
-/testsuite/external/comparelib-109.15.00
-/testsuite/external/compcert
-/testsuite/external/compcert-1.13
-/testsuite/external/configfile
-/testsuite/external/config-file-1.1
-/testsuite/external/coq
-/testsuite/external/coq-8.4pl2
-/testsuite/external/core
-/testsuite/external/core-109.37.00
-/testsuite/external/coreextended
-/testsuite/external/core_extended-109.36.00
-/testsuite/external/corekernel
-/testsuite/external/core_kernel-109.37.00
-/testsuite/external/cryptokit
-/testsuite/external/cryptokit-1.6
-/testsuite/external/csv
-/testsuite/external/csv-1.3.1
-/testsuite/external/customprintf
-/testsuite/external/custom_printf-109.27.00
-/testsuite/external/dbm
-/testsuite/external/camldbm-1.0
-/testsuite/external/expect
-/testsuite/external/ocaml-expect-0.0.3
-/testsuite/external/extlib
-/testsuite/external/extlib-1.5.2
-/testsuite/external/fieldslib
-/testsuite/external/fieldslib-109.15.00
-/testsuite/external/fileutils
-/testsuite/external/ocaml-fileutils-0.4.4
-/testsuite/external/findlib
-/testsuite/external/findlib-1.4.1
-/testsuite/external/framac
-/testsuite/external/frama-c-Oxygen-20120901
-/testsuite/external/geneweb
-/testsuite/external/gw-6.05-src
-/testsuite/external/herelib
-/testsuite/external/herelib-109.35.00
-/testsuite/external/hevea
-/testsuite/external/hevea-2.09
-/testsuite/external/kaputt
-/testsuite/external/kaputt-1.2
-/testsuite/external/lablgtk
-/testsuite/external/lablgtk-2.18.0
-/testsuite/external/lablgtkextras
-/testsuite/external/lablgtkextras-1.3
-/testsuite/external/lwt
-/testsuite/external/lwt-2.4.0
-/testsuite/external/menhir
-/testsuite/external/menhir-20120123
-/testsuite/external/mldonkey
-/testsuite/external/mldonkey-3.1.2
-/testsuite/external/mysql
-/testsuite/external/ocaml-mysql-1.0.4
-/testsuite/external/oasis
-/testsuite/external/oasis-0.3.0
-/testsuite/external/obrowser
-/testsuite/external/obrowser-1.1.1
-/testsuite/external/ocamlgraph
-/testsuite/external/ocamlgraph-1.8.2
-/testsuite/external/ocamlify
-/testsuite/external/ocamlify-0.0.1
-/testsuite/external/ocamlmod
-/testsuite/external/ocamlmod-0.0.3
-/testsuite/external/ocamlnet
-/testsuite/external/ocamlnet-3.5.1
-/testsuite/external/ocamlscript
-/testsuite/external/ocamlscript-2.0.3
-/testsuite/external/ocamlssl
-/testsuite/external/ocaml-ssl-0.4.6
-/testsuite/external/ocamltext
-/testsuite/external/ocaml-text-0.5
-/testsuite/external/ocgi
-/testsuite/external/ocgi-0.5
-/testsuite/external/ocsigen
-/testsuite/external/ocsigen-bundle-2.2.2
-/testsuite/external/odn
-/testsuite/external/ocaml-data-notation-0.0.10
-/testsuite/external/omake
-/testsuite/external/omake-0.9.8.6
-/testsuite/external/ounit
-/testsuite/external/ounit-1.1.2
-/testsuite/external/paounit
-/testsuite/external/pa_ounit-109.36.00
-/testsuite/external/pcre
-/testsuite/external/pcre-ocaml-6.2.5
-/testsuite/external/pipebang
-/testsuite/external/pipebang-109.28.00
-/testsuite/external/react
-/testsuite/external/react-0.9.3
-/testsuite/external/res
-/testsuite/external/res-3.2.0
-/testsuite/external/rss
-/testsuite/external/ocamlrss-2.2.2
-/testsuite/external/sexplib
-/testsuite/external/sexplib-109.15.00
-/testsuite/external/sks
-/testsuite/external/sks-1.1.3
-/testsuite/external/sqlite
-/testsuite/external/sqlite3-ocaml-2.0.1
-/testsuite/external/textutils
-/testsuite/external/textutils-109.36.00
-/testsuite/external/typeconv
-/testsuite/external/type_conv-109.28.00
-/testsuite/external/unison
-/testsuite/external/unison-2.45.4
-/testsuite/external/variantslib
-/testsuite/external/variantslib-109.15.00
-/testsuite/external/vsyml
-/testsuite/external/vsyml-2010-04-06
-/testsuite/external/xmllight
-/testsuite/external/xml-light.2.3
-/testsuite/external/xmlm
-/testsuite/external/xmlm-1.1.0
-/testsuite/external/zarith
-/testsuite/external/zarith-1.2.1
-/testsuite/external/zen
-/testsuite/external/zen_2.3.2
-/testsuite/external/._ZEN_2.3.2
+/testsuite/**/*.result
+/testsuite/**/*.byte
+/testsuite/**/*.native
+/testsuite/**/program
+/testsuite/**/_log
-# /testsuite/interactive/
-/testsuite/interactive/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/_log
-/testsuite/interactive/*.so
-/testsuite/interactive/*.a
-/testsuite/interactive/*.result
-/testsuite/interactive/*.byte
-/testsuite/interactive/*.native
-/testsuite/interactive/program
-/testsuite/interactive/*.cm*
-/testsuite/interactive/*.o
-
-# /testsuite/interactive/lib-gc/
-/testsuite/interactive/lib-gc/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/lib-gc/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/lib-gc/_log
-/testsuite/interactive/lib-gc/*.so
-/testsuite/interactive/lib-gc/*.a
-/testsuite/interactive/lib-gc/*.result
-/testsuite/interactive/lib-gc/*.byte
-/testsuite/interactive/lib-gc/*.native
-/testsuite/interactive/lib-gc/program
-/testsuite/interactive/lib-gc/*.cm*
-/testsuite/interactive/lib-gc/*.o
-
-# /testsuite/interactive/lib-graph/
-/testsuite/interactive/lib-graph/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/lib-graph/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/lib-graph/_log
-/testsuite/interactive/lib-graph/*.so
-/testsuite/interactive/lib-graph/*.a
-/testsuite/interactive/lib-graph/*.result
-/testsuite/interactive/lib-graph/*.byte
-/testsuite/interactive/lib-graph/*.native
-/testsuite/interactive/lib-graph/program
-/testsuite/interactive/lib-graph/*.cm*
-/testsuite/interactive/lib-graph/*.o
-
-# /testsuite/interactive/lib-graph-2/
-/testsuite/interactive/lib-graph-2/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/lib-graph-2/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/lib-graph-2/_log
-/testsuite/interactive/lib-graph-2/*.so
-/testsuite/interactive/lib-graph-2/*.a
-/testsuite/interactive/lib-graph-2/*.result
-/testsuite/interactive/lib-graph-2/*.byte
-/testsuite/interactive/lib-graph-2/*.native
-/testsuite/interactive/lib-graph-2/program
-/testsuite/interactive/lib-graph-2/*.cm*
-/testsuite/interactive/lib-graph-2/*.o
-
-# /testsuite/interactive/lib-graph-3/
-/testsuite/interactive/lib-graph-3/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/lib-graph-3/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/lib-graph-3/_log
-/testsuite/interactive/lib-graph-3/*.so
-/testsuite/interactive/lib-graph-3/*.a
-/testsuite/interactive/lib-graph-3/*.result
-/testsuite/interactive/lib-graph-3/*.byte
-/testsuite/interactive/lib-graph-3/*.native
-/testsuite/interactive/lib-graph-3/program
-/testsuite/interactive/lib-graph-3/*.cm*
-/testsuite/interactive/lib-graph-3/*.o
-
-# /testsuite/interactive/lib-signals/
-/testsuite/interactive/lib-signals/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/interactive/lib-signals/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/interactive/lib-signals/_log
-/testsuite/interactive/lib-signals/*.so
-/testsuite/interactive/lib-signals/*.a
-/testsuite/interactive/lib-signals/*.result
-/testsuite/interactive/lib-signals/*.byte
-/testsuite/interactive/lib-signals/*.native
-/testsuite/interactive/lib-signals/program
-/testsuite/interactive/lib-signals/*.cm*
-/testsuite/interactive/lib-signals/*.o
-
-# /testsuite/lib/
-/testsuite/lib/*.o
-/testsuite/lib/*.a
-/testsuite/lib/*.so
-/testsuite/lib/*.obj
-/testsuite/lib/*.dll
-/testsuite/lib/*.cm[ioxat]
-/testsuite/lib/*.cmx[as]
-/testsuite/lib/*.cmti
-/testsuite/lib/*.annot
-/testsuite/lib/*.result
-/testsuite/lib/*.byte
-/testsuite/lib/*.native
-/testsuite/lib/program
-/testsuite/lib/*.exe
-/testsuite/lib/.depend
-/testsuite/lib/.depend.nt
-/testsuite/lib/.DS_Store
-
-# /testsuite/makefiles/
-/testsuite/makefiles/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/makefiles/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/makefiles/_log
-/testsuite/makefiles/*.so
-/testsuite/makefiles/*.a
-/testsuite/makefiles/*.result
-/testsuite/makefiles/*.byte
-/testsuite/makefiles/*.native
-/testsuite/makefiles/program
-/testsuite/makefiles/*.cm*
-/testsuite/makefiles/*.o
-
-# /testsuite/tests/
-/testsuite/tests/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/_log
-/testsuite/tests/*.so
-/testsuite/tests/*.a
-/testsuite/tests/*.result
-/testsuite/tests/*.byte
-/testsuite/tests/*.native
-/testsuite/tests/program
-/testsuite/tests/*.cm*
-/testsuite/tests/*.o
-
-# /testsuite/tests/asmcomp/
-/testsuite/tests/asmcomp/*.o
-/testsuite/tests/asmcomp/*.a
-/testsuite/tests/asmcomp/*.so
-/testsuite/tests/asmcomp/*.obj
-/testsuite/tests/asmcomp/*.lib
-/testsuite/tests/asmcomp/*.dll
-/testsuite/tests/asmcomp/*.cm[ioxat]
-/testsuite/tests/asmcomp/*.cmx[as]
-/testsuite/tests/asmcomp/*.cmti
-/testsuite/tests/asmcomp/*.annot
-/testsuite/tests/asmcomp/*.result
-/testsuite/tests/asmcomp/*.byte
-/testsuite/tests/asmcomp/*.native
-/testsuite/tests/asmcomp/program
-/testsuite/tests/asmcomp/*.exe
-/testsuite/tests/asmcomp/*.exe.manifest
-/testsuite/tests/asmcomp/.depend
-/testsuite/tests/asmcomp/.depend.nt
-/testsuite/tests/asmcomp/.DS_Store
/testsuite/tests/asmcomp/codegen
/testsuite/tests/asmcomp/parsecmm.ml
/testsuite/tests/asmcomp/parsecmm.mli
/testsuite/tests/asmcomp/lexcmm.ml
/testsuite/tests/asmcomp/*.s
-/testsuite/tests/asmcomp/*.out
-/testsuite/tests/asmcomp/*.out.dSYM
-
-# /testsuite/tests/backtrace/
-/testsuite/tests/backtrace/*.o
-/testsuite/tests/backtrace/*.a
-/testsuite/tests/backtrace/*.so
-/testsuite/tests/backtrace/*.obj
-/testsuite/tests/backtrace/*.lib
-/testsuite/tests/backtrace/*.dll
-/testsuite/tests/backtrace/*.cm[ioxat]
-/testsuite/tests/backtrace/*.cmx[as]
-/testsuite/tests/backtrace/*.cmti
-/testsuite/tests/backtrace/*.annot
-/testsuite/tests/backtrace/*.result
-/testsuite/tests/backtrace/*.byte
-/testsuite/tests/backtrace/*.native
-/testsuite/tests/backtrace/program
-/testsuite/tests/backtrace/*.exe
-/testsuite/tests/backtrace/*.exe.manifest
-/testsuite/tests/backtrace/.depend
-/testsuite/tests/backtrace/.depend.nt
-/testsuite/tests/backtrace/.DS_Store
-# /testsuite/tests/basic/
-/testsuite/tests/basic/*.o
-/testsuite/tests/basic/*.a
-/testsuite/tests/basic/*.so
-/testsuite/tests/basic/*.obj
-/testsuite/tests/basic/*.cm[ioxa]
-/testsuite/tests/basic/*.cmx[as]
-/testsuite/tests/basic/*.annot
-/testsuite/tests/basic/*.result
-/testsuite/tests/basic/*.byte
-/testsuite/tests/basic/*.native
-/testsuite/tests/basic/program
-/testsuite/tests/basic/program.exe
-/testsuite/tests/basic/.depend
-/testsuite/tests/basic/.depend.nt
-/testsuite/tests/basic/.DS_Store
-
-# /testsuite/tests/basic-float/
-/testsuite/tests/basic-float/*.o
-/testsuite/tests/basic-float/*.a
-/testsuite/tests/basic-float/*.so
-/testsuite/tests/basic-float/*.obj
-/testsuite/tests/basic-float/*.lib
-/testsuite/tests/basic-float/*.dll
-/testsuite/tests/basic-float/*.cm[ioxat]
-/testsuite/tests/basic-float/*.cmx[as]
-/testsuite/tests/basic-float/*.cmti
-/testsuite/tests/basic-float/*.annot
-/testsuite/tests/basic-float/*.result
-/testsuite/tests/basic-float/*.byte
-/testsuite/tests/basic-float/*.native
-/testsuite/tests/basic-float/program
-/testsuite/tests/basic-float/*.exe
-/testsuite/tests/basic-float/*.exe.manifest
-/testsuite/tests/basic-float/.depend
-/testsuite/tests/basic-float/.depend.nt
-/testsuite/tests/basic-float/.DS_Store
-
-# /testsuite/tests/basic-io/
-/testsuite/tests/basic-io/*.o
-/testsuite/tests/basic-io/*.a
-/testsuite/tests/basic-io/*.so
-/testsuite/tests/basic-io/*.obj
-/testsuite/tests/basic-io/*.lib
-/testsuite/tests/basic-io/*.dll
-/testsuite/tests/basic-io/*.cm[ioxat]
-/testsuite/tests/basic-io/*.cmx[as]
-/testsuite/tests/basic-io/*.cmti
-/testsuite/tests/basic-io/*.annot
-/testsuite/tests/basic-io/*.result
-/testsuite/tests/basic-io/*.byte
-/testsuite/tests/basic-io/*.native
-/testsuite/tests/basic-io/program
-/testsuite/tests/basic-io/*.exe
-/testsuite/tests/basic-io/*.exe.manifest
-/testsuite/tests/basic-io/.depend
-/testsuite/tests/basic-io/.depend.nt
-/testsuite/tests/basic-io/.DS_Store
-
-# /testsuite/tests/basic-io-2/
-/testsuite/tests/basic-io-2/*.o
-/testsuite/tests/basic-io-2/*.a
-/testsuite/tests/basic-io-2/*.so
-/testsuite/tests/basic-io-2/*.obj
-/testsuite/tests/basic-io-2/*.lib
-/testsuite/tests/basic-io-2/*.dll
-/testsuite/tests/basic-io-2/*.cm[ioxat]
-/testsuite/tests/basic-io-2/*.cmx[as]
-/testsuite/tests/basic-io-2/*.cmti
-/testsuite/tests/basic-io-2/*.annot
-/testsuite/tests/basic-io-2/*.result
-/testsuite/tests/basic-io-2/*.byte
-/testsuite/tests/basic-io-2/*.native
-/testsuite/tests/basic-io-2/program
-/testsuite/tests/basic-io-2/*.exe
-/testsuite/tests/basic-io-2/*.exe.manifest
-/testsuite/tests/basic-io-2/.depend
-/testsuite/tests/basic-io-2/.depend.nt
-/testsuite/tests/basic-io-2/.DS_Store
-
-# /testsuite/tests/basic-manyargs/
-/testsuite/tests/basic-manyargs/*.o
-/testsuite/tests/basic-manyargs/*.a
-/testsuite/tests/basic-manyargs/*.so
-/testsuite/tests/basic-manyargs/*.obj
-/testsuite/tests/basic-manyargs/*.lib
-/testsuite/tests/basic-manyargs/*.dll
-/testsuite/tests/basic-manyargs/*.cm[ioxat]
-/testsuite/tests/basic-manyargs/*.cmx[as]
-/testsuite/tests/basic-manyargs/*.cmti
-/testsuite/tests/basic-manyargs/*.annot
-/testsuite/tests/basic-manyargs/*.result
-/testsuite/tests/basic-manyargs/*.byte
-/testsuite/tests/basic-manyargs/*.native
-/testsuite/tests/basic-manyargs/program
-/testsuite/tests/basic-manyargs/*.exe
-/testsuite/tests/basic-manyargs/*.exe.manifest
-/testsuite/tests/basic-manyargs/.depend
-/testsuite/tests/basic-manyargs/.depend.nt
-/testsuite/tests/basic-manyargs/.DS_Store
-
-# /testsuite/tests/basic-modules/
-/testsuite/tests/basic-modules/*.o
-/testsuite/tests/basic-modules/*.a
-/testsuite/tests/basic-modules/*.so
-/testsuite/tests/basic-modules/*.obj
-/testsuite/tests/basic-modules/*.lib
-/testsuite/tests/basic-modules/*.dll
-/testsuite/tests/basic-modules/*.cm[ioxat]
-/testsuite/tests/basic-modules/*.cmx[as]
-/testsuite/tests/basic-modules/*.cmti
-/testsuite/tests/basic-modules/*.annot
-/testsuite/tests/basic-modules/*.result
-/testsuite/tests/basic-modules/*.byte
-/testsuite/tests/basic-modules/*.native
-/testsuite/tests/basic-modules/program
-/testsuite/tests/basic-modules/*.exe
-/testsuite/tests/basic-modules/*.exe.manifest
-/testsuite/tests/basic-modules/.depend
-/testsuite/tests/basic-modules/.depend.nt
-/testsuite/tests/basic-modules/.DS_Store
-
-# /testsuite/tests/basic-more/
-/testsuite/tests/basic-more/*.o
-/testsuite/tests/basic-more/*.a
-/testsuite/tests/basic-more/*.so
-/testsuite/tests/basic-more/*.obj
-/testsuite/tests/basic-more/*.cm[ioxa]
-/testsuite/tests/basic-more/*.cmx[as]
-/testsuite/tests/basic-more/*.annot
-/testsuite/tests/basic-more/*.result
-/testsuite/tests/basic-more/*.byte
-/testsuite/tests/basic-more/*.native
-/testsuite/tests/basic-more/program
-/testsuite/tests/basic-more/program.exe
-/testsuite/tests/basic-more/.depend
-/testsuite/tests/basic-more/.depend.nt
-/testsuite/tests/basic-more/.DS_Store
-
-# /testsuite/tests/basic-multdef/
-/testsuite/tests/basic-multdef/*.o
-/testsuite/tests/basic-multdef/*.a
-/testsuite/tests/basic-multdef/*.so
-/testsuite/tests/basic-multdef/*.obj
-/testsuite/tests/basic-multdef/*.lib
-/testsuite/tests/basic-multdef/*.dll
-/testsuite/tests/basic-multdef/*.cm[ioxat]
-/testsuite/tests/basic-multdef/*.cmx[as]
-/testsuite/tests/basic-multdef/*.cmti
-/testsuite/tests/basic-multdef/*.annot
-/testsuite/tests/basic-multdef/*.result
-/testsuite/tests/basic-multdef/*.byte
-/testsuite/tests/basic-multdef/*.native
-/testsuite/tests/basic-multdef/program
-/testsuite/tests/basic-multdef/*.exe
-/testsuite/tests/basic-multdef/*.exe.manifest
-/testsuite/tests/basic-multdef/.depend
-/testsuite/tests/basic-multdef/.depend.nt
-/testsuite/tests/basic-multdef/.DS_Store
-
-# /testsuite/tests/basic-private/
-/testsuite/tests/basic-private/*.o
-/testsuite/tests/basic-private/*.a
-/testsuite/tests/basic-private/*.so
-/testsuite/tests/basic-private/*.obj
-/testsuite/tests/basic-private/*.lib
-/testsuite/tests/basic-private/*.dll
-/testsuite/tests/basic-private/*.cm[ioxat]
-/testsuite/tests/basic-private/*.cmx[as]
-/testsuite/tests/basic-private/*.cmti
-/testsuite/tests/basic-private/*.annot
-/testsuite/tests/basic-private/*.result
-/testsuite/tests/basic-private/*.byte
-/testsuite/tests/basic-private/*.native
-/testsuite/tests/basic-private/program
-/testsuite/tests/basic-private/*.exe
-/testsuite/tests/basic-private/*.exe.manifest
-/testsuite/tests/basic-private/.depend
-/testsuite/tests/basic-private/.depend.nt
-/testsuite/tests/basic-private/.DS_Store
-
-# /testsuite/tests/callback/
-/testsuite/tests/callback/*.o
-/testsuite/tests/callback/*.a
-/testsuite/tests/callback/*.so
-/testsuite/tests/callback/*.obj
-/testsuite/tests/callback/*.cm[ioxa]
-/testsuite/tests/callback/*.cmx[as]
-/testsuite/tests/callback/*.annot
-/testsuite/tests/callback/*.result
-/testsuite/tests/callback/*.byte
-/testsuite/tests/callback/*.native
-/testsuite/tests/callback/program
-/testsuite/tests/callback/program.exe
-/testsuite/tests/callback/.depend
-/testsuite/tests/callback/.depend.nt
-/testsuite/tests/callback/.DS_Store
-
-# /testsuite/tests/embedded/
-/testsuite/tests/embedded/*.o
-/testsuite/tests/embedded/*.a
-/testsuite/tests/embedded/*.so
-/testsuite/tests/embedded/*.obj
-/testsuite/tests/embedded/*.lib
-/testsuite/tests/embedded/*.dll
-/testsuite/tests/embedded/*.cm[ioxat]
-/testsuite/tests/embedded/*.cmx[as]
-/testsuite/tests/embedded/*.cmti
-/testsuite/tests/embedded/*.annot
-/testsuite/tests/embedded/*.result
-/testsuite/tests/embedded/*.byte
-/testsuite/tests/embedded/*.native
-/testsuite/tests/embedded/program
-/testsuite/tests/embedded/*.exe
-/testsuite/tests/embedded/*.exe.manifest
-/testsuite/tests/embedded/.depend
-/testsuite/tests/embedded/.depend.nt
-/testsuite/tests/embedded/.DS_Store
/testsuite/tests/embedded/caml
-# /testsuite/tests/exotic-syntax/
-/testsuite/tests/exotic-syntax/*.o
-/testsuite/tests/exotic-syntax/*.a
-/testsuite/tests/exotic-syntax/*.so
-/testsuite/tests/exotic-syntax/*.obj
-/testsuite/tests/exotic-syntax/*.lib
-/testsuite/tests/exotic-syntax/*.dll
-/testsuite/tests/exotic-syntax/*.cm[ioxat]
-/testsuite/tests/exotic-syntax/*.cmx[as]
-/testsuite/tests/exotic-syntax/*.cmti
-/testsuite/tests/exotic-syntax/*.annot
-/testsuite/tests/exotic-syntax/*.result
-/testsuite/tests/exotic-syntax/*.byte
-/testsuite/tests/exotic-syntax/*.native
-/testsuite/tests/exotic-syntax/program
-/testsuite/tests/exotic-syntax/*.exe
-/testsuite/tests/exotic-syntax/*.exe.manifest
-/testsuite/tests/exotic-syntax/.depend
-/testsuite/tests/exotic-syntax/.depend.nt
-/testsuite/tests/exotic-syntax/.DS_Store
-
-# /testsuite/tests/formats-transition/
-/testsuite/tests/formats-transition/*.o
-/testsuite/tests/formats-transition/*.a
-/testsuite/tests/formats-transition/*.so
-/testsuite/tests/formats-transition/*.obj
-/testsuite/tests/formats-transition/*.lib
-/testsuite/tests/formats-transition/*.dll
-/testsuite/tests/formats-transition/*.cm[ioxat]
-/testsuite/tests/formats-transition/*.cmx[as]
-/testsuite/tests/formats-transition/*.cmti
-/testsuite/tests/formats-transition/*.annot
-/testsuite/tests/formats-transition/*.result
-/testsuite/tests/formats-transition/*.byte
-/testsuite/tests/formats-transition/*.native
-/testsuite/tests/formats-transition/program
-/testsuite/tests/formats-transition/*.exe
-/testsuite/tests/formats-transition/*.exe.manifest
-/testsuite/tests/formats-transition/.depend
-/testsuite/tests/formats-transition/.depend.nt
-/testsuite/tests/formats-transition/.DS_Store
-
-# /testsuite/tests/gc-roots/
-/testsuite/tests/gc-roots/*.o
-/testsuite/tests/gc-roots/*.a
-/testsuite/tests/gc-roots/*.so
-/testsuite/tests/gc-roots/*.obj
-/testsuite/tests/gc-roots/*.lib
-/testsuite/tests/gc-roots/*.dll
-/testsuite/tests/gc-roots/*.cm[ioxat]
-/testsuite/tests/gc-roots/*.cmx[as]
-/testsuite/tests/gc-roots/*.cmti
-/testsuite/tests/gc-roots/*.annot
-/testsuite/tests/gc-roots/*.result
-/testsuite/tests/gc-roots/*.byte
-/testsuite/tests/gc-roots/*.native
-/testsuite/tests/gc-roots/program
-/testsuite/tests/gc-roots/*.exe
-/testsuite/tests/gc-roots/*.exe.manifest
-/testsuite/tests/gc-roots/.depend
-/testsuite/tests/gc-roots/.depend.nt
-/testsuite/tests/gc-roots/.DS_Store
-
-# /testsuite/tests/letrec/
-/testsuite/tests/letrec/*.o
-/testsuite/tests/letrec/*.a
-/testsuite/tests/letrec/*.so
-/testsuite/tests/letrec/*.obj
-/testsuite/tests/letrec/*.cm[ioxa]
-/testsuite/tests/letrec/*.cmx[as]
-/testsuite/tests/letrec/*.annot
-/testsuite/tests/letrec/*.result
-/testsuite/tests/letrec/*.byte
-/testsuite/tests/letrec/*.native
-/testsuite/tests/letrec/program
-/testsuite/tests/letrec/program.exe
-/testsuite/tests/letrec/.depend
-/testsuite/tests/letrec/.depend.nt
-/testsuite/tests/letrec/.DS_Store
-
-# /testsuite/tests/lib-bigarray/
-/testsuite/tests/lib-bigarray/*.o
-/testsuite/tests/lib-bigarray/*.a
-/testsuite/tests/lib-bigarray/*.so
-/testsuite/tests/lib-bigarray/*.obj
-/testsuite/tests/lib-bigarray/*.lib
-/testsuite/tests/lib-bigarray/*.dll
-/testsuite/tests/lib-bigarray/*.cm[ioxat]
-/testsuite/tests/lib-bigarray/*.cmx[as]
-/testsuite/tests/lib-bigarray/*.cmti
-/testsuite/tests/lib-bigarray/*.annot
-/testsuite/tests/lib-bigarray/*.result
-/testsuite/tests/lib-bigarray/*.byte
-/testsuite/tests/lib-bigarray/*.native
-/testsuite/tests/lib-bigarray/program
-/testsuite/tests/lib-bigarray/*.exe
-/testsuite/tests/lib-bigarray/*.exe.manifest
-/testsuite/tests/lib-bigarray/.depend
-/testsuite/tests/lib-bigarray/.depend.nt
-/testsuite/tests/lib-bigarray/.DS_Store
-
-# /testsuite/tests/lib-bigarray-2/
-/testsuite/tests/lib-bigarray-2/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/lib-bigarray-2/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/lib-bigarray-2/_log
-/testsuite/tests/lib-bigarray-2/*.so
-/testsuite/tests/lib-bigarray-2/*.a
-/testsuite/tests/lib-bigarray-2/*.result
-/testsuite/tests/lib-bigarray-2/*.byte
-/testsuite/tests/lib-bigarray-2/*.native
-/testsuite/tests/lib-bigarray-2/program
-/testsuite/tests/lib-bigarray-2/*.cm*
-/testsuite/tests/lib-bigarray-2/*.o
-
-# /testsuite/tests/lib-digest/
-/testsuite/tests/lib-digest/*.o
-/testsuite/tests/lib-digest/*.a
-/testsuite/tests/lib-digest/*.so
-/testsuite/tests/lib-digest/*.obj
-/testsuite/tests/lib-digest/*.lib
-/testsuite/tests/lib-digest/*.dll
-/testsuite/tests/lib-digest/*.cm[ioxat]
-/testsuite/tests/lib-digest/*.cmx[as]
-/testsuite/tests/lib-digest/*.cmti
-/testsuite/tests/lib-digest/*.annot
-/testsuite/tests/lib-digest/*.result
-/testsuite/tests/lib-digest/*.byte
-/testsuite/tests/lib-digest/*.native
-/testsuite/tests/lib-digest/program
-/testsuite/tests/lib-digest/*.exe
-/testsuite/tests/lib-digest/*.exe.manifest
-/testsuite/tests/lib-digest/.depend
-/testsuite/tests/lib-digest/.depend.nt
-/testsuite/tests/lib-digest/.DS_Store
-
-# /testsuite/tests/lib-dynlink-bytecode/
-/testsuite/tests/lib-dynlink-bytecode/*.o
-/testsuite/tests/lib-dynlink-bytecode/*.a
-/testsuite/tests/lib-dynlink-bytecode/*.so
-/testsuite/tests/lib-dynlink-bytecode/*.obj
-/testsuite/tests/lib-dynlink-bytecode/*.lib
-/testsuite/tests/lib-dynlink-bytecode/*.dll
-/testsuite/tests/lib-dynlink-bytecode/*.cm[ioxat]
-/testsuite/tests/lib-dynlink-bytecode/*.cmx[as]
-/testsuite/tests/lib-dynlink-bytecode/*.cmti
-/testsuite/tests/lib-dynlink-bytecode/*.annot
-/testsuite/tests/lib-dynlink-bytecode/*.result
-/testsuite/tests/lib-dynlink-bytecode/*.byte
-/testsuite/tests/lib-dynlink-bytecode/*.native
-/testsuite/tests/lib-dynlink-bytecode/program
-/testsuite/tests/lib-dynlink-bytecode/*.exe
-/testsuite/tests/lib-dynlink-bytecode/*.exe.manifest
-/testsuite/tests/lib-dynlink-bytecode/.depend
-/testsuite/tests/lib-dynlink-bytecode/.depend.nt
-/testsuite/tests/lib-dynlink-bytecode/.DS_Store
/testsuite/tests/lib-dynlink-bytecode/main
/testsuite/tests/lib-dynlink-bytecode/static
/testsuite/tests/lib-dynlink-bytecode/custom
-/testsuite/tests/lib-dynlink-bytecode/custom.exe
/testsuite/tests/lib-dynlink-bytecode/marshal.data
/testsuite/tests/lib-dynlink-bytecode/caml
-# /testsuite/tests/lib-dynlink-csharp/
-/testsuite/tests/lib-dynlink-csharp/*.o
-/testsuite/tests/lib-dynlink-csharp/*.a
-/testsuite/tests/lib-dynlink-csharp/*.so
-/testsuite/tests/lib-dynlink-csharp/*.obj
-/testsuite/tests/lib-dynlink-csharp/*.lib
-/testsuite/tests/lib-dynlink-csharp/*.dll
-/testsuite/tests/lib-dynlink-csharp/*.cm[ioxat]
-/testsuite/tests/lib-dynlink-csharp/*.cmx[as]
-/testsuite/tests/lib-dynlink-csharp/*.cmti
-/testsuite/tests/lib-dynlink-csharp/*.annot
-/testsuite/tests/lib-dynlink-csharp/*.result
-/testsuite/tests/lib-dynlink-csharp/*.byte
-/testsuite/tests/lib-dynlink-csharp/*.native
-/testsuite/tests/lib-dynlink-csharp/program
-/testsuite/tests/lib-dynlink-csharp/*.exe
-/testsuite/tests/lib-dynlink-csharp/*.exe.manifest
-/testsuite/tests/lib-dynlink-csharp/.depend
-/testsuite/tests/lib-dynlink-csharp/.depend.nt
-/testsuite/tests/lib-dynlink-csharp/.DS_Store
-
-# /testsuite/tests/lib-dynlink-native/
-/testsuite/tests/lib-dynlink-native/*.o
-/testsuite/tests/lib-dynlink-native/*.a
-/testsuite/tests/lib-dynlink-native/*.so
-/testsuite/tests/lib-dynlink-native/*.obj
-/testsuite/tests/lib-dynlink-native/*.lib
-/testsuite/tests/lib-dynlink-native/*.dll
-/testsuite/tests/lib-dynlink-native/*.cm[ioxat]
-/testsuite/tests/lib-dynlink-native/*.cmx[as]
-/testsuite/tests/lib-dynlink-native/*.cmti
-/testsuite/tests/lib-dynlink-native/*.annot
-/testsuite/tests/lib-dynlink-native/*.result
-/testsuite/tests/lib-dynlink-native/*.byte
-/testsuite/tests/lib-dynlink-native/*.native
-/testsuite/tests/lib-dynlink-native/program
-/testsuite/tests/lib-dynlink-native/*.exe
-/testsuite/tests/lib-dynlink-native/*.exe.manifest
-/testsuite/tests/lib-dynlink-native/.depend
-/testsuite/tests/lib-dynlink-native/.depend.nt
-/testsuite/tests/lib-dynlink-native/.DS_Store
/testsuite/tests/lib-dynlink-native/mypack.pack.s
/testsuite/tests/lib-dynlink-native/mypack.pack.asm
/testsuite/tests/lib-dynlink-native/result
/testsuite/tests/lib-dynlink-native/main
-/testsuite/tests/lib-dynlink-native/main.exe
/testsuite/tests/lib-dynlink-native/marshal.data
/testsuite/tests/lib-dynlink-native/caml
-# /testsuite/tests/lib-dynlink-native/sub/
-/testsuite/tests/lib-dynlink-native/sub/*.o
-/testsuite/tests/lib-dynlink-native/sub/*.a
-/testsuite/tests/lib-dynlink-native/sub/*.so
-/testsuite/tests/lib-dynlink-native/sub/*.obj
-/testsuite/tests/lib-dynlink-native/sub/*.lib
-/testsuite/tests/lib-dynlink-native/sub/*.dll
-/testsuite/tests/lib-dynlink-native/sub/*.cm[ioxat]
-/testsuite/tests/lib-dynlink-native/sub/*.cmx[as]
-/testsuite/tests/lib-dynlink-native/sub/*.cmti
-/testsuite/tests/lib-dynlink-native/sub/*.annot
-/testsuite/tests/lib-dynlink-native/sub/*.result
-/testsuite/tests/lib-dynlink-native/sub/*.byte
-/testsuite/tests/lib-dynlink-native/sub/*.native
-/testsuite/tests/lib-dynlink-native/sub/program
-/testsuite/tests/lib-dynlink-native/sub/*.exe
-/testsuite/tests/lib-dynlink-native/sub/*.exe.manifest
-/testsuite/tests/lib-dynlink-native/sub/.depend
-/testsuite/tests/lib-dynlink-native/sub/.depend.nt
-/testsuite/tests/lib-dynlink-native/sub/.DS_Store
-
-# /testsuite/tests/lib-format/
-/testsuite/tests/lib-format/*.o
-/testsuite/tests/lib-format/*.a
-/testsuite/tests/lib-format/*.so
-/testsuite/tests/lib-format/*.obj
-/testsuite/tests/lib-format/*.lib
-/testsuite/tests/lib-format/*.dll
-/testsuite/tests/lib-format/*.cm[ioxat]
-/testsuite/tests/lib-format/*.cmx[as]
-/testsuite/tests/lib-format/*.cmti
-/testsuite/tests/lib-format/*.annot
-/testsuite/tests/lib-format/*.result
-/testsuite/tests/lib-format/*.byte
-/testsuite/tests/lib-format/*.native
-/testsuite/tests/lib-format/program
-/testsuite/tests/lib-format/*.exe
-/testsuite/tests/lib-format/*.exe.manifest
-/testsuite/tests/lib-format/.depend
-/testsuite/tests/lib-format/.depend.nt
-/testsuite/tests/lib-format/.DS_Store
-
-# /testsuite/tests/lib-hashtbl/
-/testsuite/tests/lib-hashtbl/*.o
-/testsuite/tests/lib-hashtbl/*.a
-/testsuite/tests/lib-hashtbl/*.so
-/testsuite/tests/lib-hashtbl/*.obj
-/testsuite/tests/lib-hashtbl/*.cm[ioxa]
-/testsuite/tests/lib-hashtbl/*.cmx[as]
-/testsuite/tests/lib-hashtbl/*.annot
-/testsuite/tests/lib-hashtbl/*.result
-/testsuite/tests/lib-hashtbl/*.byte
-/testsuite/tests/lib-hashtbl/*.native
-/testsuite/tests/lib-hashtbl/program
-/testsuite/tests/lib-hashtbl/program.exe
-/testsuite/tests/lib-hashtbl/.depend
-/testsuite/tests/lib-hashtbl/.depend.nt
-/testsuite/tests/lib-hashtbl/.DS_Store
-
-# /testsuite/tests/lib-marshal/
-/testsuite/tests/lib-marshal/*.o
-/testsuite/tests/lib-marshal/*.a
-/testsuite/tests/lib-marshal/*.so
-/testsuite/tests/lib-marshal/*.obj
-/testsuite/tests/lib-marshal/*.lib
-/testsuite/tests/lib-marshal/*.dll
-/testsuite/tests/lib-marshal/*.cm[ioxat]
-/testsuite/tests/lib-marshal/*.cmx[as]
-/testsuite/tests/lib-marshal/*.cmti
-/testsuite/tests/lib-marshal/*.annot
-/testsuite/tests/lib-marshal/*.result
-/testsuite/tests/lib-marshal/*.byte
-/testsuite/tests/lib-marshal/*.native
-/testsuite/tests/lib-marshal/program
-/testsuite/tests/lib-marshal/*.exe
-/testsuite/tests/lib-marshal/*.exe.manifest
-/testsuite/tests/lib-marshal/.depend
-/testsuite/tests/lib-marshal/.depend.nt
-/testsuite/tests/lib-marshal/.DS_Store
-
-# /testsuite/tests/lib-num/
-/testsuite/tests/lib-num/*.o
-/testsuite/tests/lib-num/*.a
-/testsuite/tests/lib-num/*.so
-/testsuite/tests/lib-num/*.obj
-/testsuite/tests/lib-num/*.lib
-/testsuite/tests/lib-num/*.dll
-/testsuite/tests/lib-num/*.cm[ioxat]
-/testsuite/tests/lib-num/*.cmx[as]
-/testsuite/tests/lib-num/*.cmti
-/testsuite/tests/lib-num/*.annot
-/testsuite/tests/lib-num/*.result
-/testsuite/tests/lib-num/*.byte
-/testsuite/tests/lib-num/*.native
-/testsuite/tests/lib-num/program
-/testsuite/tests/lib-num/*.exe
-/testsuite/tests/lib-num/*.exe.manifest
-/testsuite/tests/lib-num/.depend
-/testsuite/tests/lib-num/.depend.nt
-/testsuite/tests/lib-num/.DS_Store
-
-# /testsuite/tests/lib-num-2/
-/testsuite/tests/lib-num-2/*.o
-/testsuite/tests/lib-num-2/*.a
-/testsuite/tests/lib-num-2/*.so
-/testsuite/tests/lib-num-2/*.obj
-/testsuite/tests/lib-num-2/*.cm[ioxa]
-/testsuite/tests/lib-num-2/*.cmx[as]
-/testsuite/tests/lib-num-2/*.annot
-/testsuite/tests/lib-num-2/*.result
-/testsuite/tests/lib-num-2/*.byte
-/testsuite/tests/lib-num-2/*.native
-/testsuite/tests/lib-num-2/program
-/testsuite/tests/lib-num-2/program.exe
-/testsuite/tests/lib-num-2/.depend
-/testsuite/tests/lib-num-2/.depend.nt
-/testsuite/tests/lib-num-2/.DS_Store
-
-# /testsuite/tests/lib-printf/
-/testsuite/tests/lib-printf/*.o
-/testsuite/tests/lib-printf/*.a
-/testsuite/tests/lib-printf/*.so
-/testsuite/tests/lib-printf/*.obj
-/testsuite/tests/lib-printf/*.lib
-/testsuite/tests/lib-printf/*.dll
-/testsuite/tests/lib-printf/*.cm[ioxat]
-/testsuite/tests/lib-printf/*.cmx[as]
-/testsuite/tests/lib-printf/*.cmti
-/testsuite/tests/lib-printf/*.annot
-/testsuite/tests/lib-printf/*.result
-/testsuite/tests/lib-printf/*.byte
-/testsuite/tests/lib-printf/*.native
-/testsuite/tests/lib-printf/program
-/testsuite/tests/lib-printf/*.exe
-/testsuite/tests/lib-printf/*.exe.manifest
-/testsuite/tests/lib-printf/.depend
-/testsuite/tests/lib-printf/.depend.nt
-/testsuite/tests/lib-printf/.DS_Store
-
-# /testsuite/tests/lib-random/
-/testsuite/tests/lib-random/*.o
-/testsuite/tests/lib-random/*.a
-/testsuite/tests/lib-random/*.so
-/testsuite/tests/lib-random/*.obj
-/testsuite/tests/lib-random/*.lib
-/testsuite/tests/lib-random/*.dll
-/testsuite/tests/lib-random/*.cm[ioxat]
-/testsuite/tests/lib-random/*.cmx[as]
-/testsuite/tests/lib-random/*.cmti
-/testsuite/tests/lib-random/*.annot
-/testsuite/tests/lib-random/*.result
-/testsuite/tests/lib-random/*.byte
-/testsuite/tests/lib-random/*.native
-/testsuite/tests/lib-random/program
-/testsuite/tests/lib-random/*.exe
-/testsuite/tests/lib-random/*.exe.manifest
-/testsuite/tests/lib-random/.depend
-/testsuite/tests/lib-random/.depend.nt
-/testsuite/tests/lib-random/.DS_Store
-
-# /testsuite/tests/lib-scanf/
-/testsuite/tests/lib-scanf/*.o
-/testsuite/tests/lib-scanf/*.a
-/testsuite/tests/lib-scanf/*.so
-/testsuite/tests/lib-scanf/*.obj
-/testsuite/tests/lib-scanf/*.lib
-/testsuite/tests/lib-scanf/*.dll
-/testsuite/tests/lib-scanf/*.cm[ioxat]
-/testsuite/tests/lib-scanf/*.cmx[as]
-/testsuite/tests/lib-scanf/*.cmti
-/testsuite/tests/lib-scanf/*.annot
-/testsuite/tests/lib-scanf/*.result
-/testsuite/tests/lib-scanf/*.byte
-/testsuite/tests/lib-scanf/*.native
-/testsuite/tests/lib-scanf/program
-/testsuite/tests/lib-scanf/*.exe
-/testsuite/tests/lib-scanf/*.exe.manifest
-/testsuite/tests/lib-scanf/.depend
-/testsuite/tests/lib-scanf/.depend.nt
-/testsuite/tests/lib-scanf/.DS_Store
/testsuite/tests/lib-scanf/tscanf_data
-# /testsuite/tests/lib-scanf-2/
-/testsuite/tests/lib-scanf-2/*.o
-/testsuite/tests/lib-scanf-2/*.a
-/testsuite/tests/lib-scanf-2/*.so
-/testsuite/tests/lib-scanf-2/*.obj
-/testsuite/tests/lib-scanf-2/*.lib
-/testsuite/tests/lib-scanf-2/*.dll
-/testsuite/tests/lib-scanf-2/*.cm[ioxat]
-/testsuite/tests/lib-scanf-2/*.cmx[as]
-/testsuite/tests/lib-scanf-2/*.cmti
-/testsuite/tests/lib-scanf-2/*.annot
-/testsuite/tests/lib-scanf-2/*.result
-/testsuite/tests/lib-scanf-2/*.byte
-/testsuite/tests/lib-scanf-2/*.native
-/testsuite/tests/lib-scanf-2/program
-/testsuite/tests/lib-scanf-2/*.exe
-/testsuite/tests/lib-scanf-2/*.exe.manifest
-/testsuite/tests/lib-scanf-2/.depend
-/testsuite/tests/lib-scanf-2/.depend.nt
-/testsuite/tests/lib-scanf-2/.DS_Store
-
-# /testsuite/tests/lib-set/
-/testsuite/tests/lib-set/*.o
-/testsuite/tests/lib-set/*.a
-/testsuite/tests/lib-set/*.so
-/testsuite/tests/lib-set/*.obj
-/testsuite/tests/lib-set/*.cm[ioxa]
-/testsuite/tests/lib-set/*.cmx[as]
-/testsuite/tests/lib-set/*.annot
-/testsuite/tests/lib-set/*.result
-/testsuite/tests/lib-set/*.byte
-/testsuite/tests/lib-set/*.native
-/testsuite/tests/lib-set/program
-/testsuite/tests/lib-set/program.exe
-/testsuite/tests/lib-set/.depend
-/testsuite/tests/lib-set/.depend.nt
-/testsuite/tests/lib-set/.DS_Store
-
-# /testsuite/tests/lib-str/
-/testsuite/tests/lib-str/*.o
-/testsuite/tests/lib-str/*.a
-/testsuite/tests/lib-str/*.so
-/testsuite/tests/lib-str/*.obj
-/testsuite/tests/lib-str/*.cm[ioxa]
-/testsuite/tests/lib-str/*.cmx[as]
-/testsuite/tests/lib-str/*.annot
-/testsuite/tests/lib-str/*.result
-/testsuite/tests/lib-str/*.byte
-/testsuite/tests/lib-str/*.native
-/testsuite/tests/lib-str/program
-/testsuite/tests/lib-str/program.exe
-/testsuite/tests/lib-str/.depend
-/testsuite/tests/lib-str/.depend.nt
-/testsuite/tests/lib-str/.DS_Store
-
-# /testsuite/tests/lib-stream/
-/testsuite/tests/lib-stream/*.o
-/testsuite/tests/lib-stream/*.a
-/testsuite/tests/lib-stream/*.so
-/testsuite/tests/lib-stream/*.obj
-/testsuite/tests/lib-stream/*.cm[ioxa]
-/testsuite/tests/lib-stream/*.cmx[as]
-/testsuite/tests/lib-stream/*.annot
-/testsuite/tests/lib-stream/*.result
-/testsuite/tests/lib-stream/*.byte
-/testsuite/tests/lib-stream/*.native
-/testsuite/tests/lib-stream/program
-/testsuite/tests/lib-stream/program.exe
-/testsuite/tests/lib-stream/.depend
-/testsuite/tests/lib-stream/.depend.nt
-/testsuite/tests/lib-stream/.DS_Store
-
-# /testsuite/tests/lib-systhreads/
-/testsuite/tests/lib-systhreads/*.o
-/testsuite/tests/lib-systhreads/*.a
-/testsuite/tests/lib-systhreads/*.so
-/testsuite/tests/lib-systhreads/*.obj
-/testsuite/tests/lib-systhreads/*.cm[ioxa]
-/testsuite/tests/lib-systhreads/*.cmx[as]
-/testsuite/tests/lib-systhreads/*.annot
-/testsuite/tests/lib-systhreads/*.result
-/testsuite/tests/lib-systhreads/*.byte
-/testsuite/tests/lib-systhreads/*.native
-/testsuite/tests/lib-systhreads/program
-/testsuite/tests/lib-systhreads/program.exe
-/testsuite/tests/lib-systhreads/.depend
-/testsuite/tests/lib-systhreads/.depend.nt
-/testsuite/tests/lib-systhreads/.DS_Store
-
-# /testsuite/tests/lib-threads/
-/testsuite/tests/lib-threads/*.o
-/testsuite/tests/lib-threads/*.a
-/testsuite/tests/lib-threads/*.so
-/testsuite/tests/lib-threads/*.obj
-/testsuite/tests/lib-threads/*.cm[ioxa]
-/testsuite/tests/lib-threads/*.cmx[as]
-/testsuite/tests/lib-threads/*.annot
-/testsuite/tests/lib-threads/*.result
-/testsuite/tests/lib-threads/*.byte
-/testsuite/tests/lib-threads/*.native
-/testsuite/tests/lib-threads/program
-/testsuite/tests/lib-threads/program.exe
-/testsuite/tests/lib-threads/.depend
-/testsuite/tests/lib-threads/.depend.nt
-/testsuite/tests/lib-threads/.DS_Store
/testsuite/tests/lib-threads/*.byt
-# /testsuite/tests/match-exception/
-/testsuite/tests/match-exception/*.o
-/testsuite/tests/match-exception/*.a
-/testsuite/tests/match-exception/*.so
-/testsuite/tests/match-exception/*.obj
-/testsuite/tests/match-exception/*.lib
-/testsuite/tests/match-exception/*.dll
-/testsuite/tests/match-exception/*.cm[ioxat]
-/testsuite/tests/match-exception/*.cmx[as]
-/testsuite/tests/match-exception/*.cmti
-/testsuite/tests/match-exception/*.annot
-/testsuite/tests/match-exception/*.result
-/testsuite/tests/match-exception/*.byte
-/testsuite/tests/match-exception/*.native
-/testsuite/tests/match-exception/program
-/testsuite/tests/match-exception/*.exe
-/testsuite/tests/match-exception/*.exe.manifest
-/testsuite/tests/match-exception/.depend
-/testsuite/tests/match-exception/.depend.nt
-/testsuite/tests/match-exception/.DS_Store
-
-# /testsuite/tests/match-exception-warnings/
-/testsuite/tests/match-exception-warnings/*.o
-/testsuite/tests/match-exception-warnings/*.a
-/testsuite/tests/match-exception-warnings/*.so
-/testsuite/tests/match-exception-warnings/*.obj
-/testsuite/tests/match-exception-warnings/*.lib
-/testsuite/tests/match-exception-warnings/*.dll
-/testsuite/tests/match-exception-warnings/*.cm[ioxat]
-/testsuite/tests/match-exception-warnings/*.cmx[as]
-/testsuite/tests/match-exception-warnings/*.cmti
-/testsuite/tests/match-exception-warnings/*.annot
-/testsuite/tests/match-exception-warnings/*.result
-/testsuite/tests/match-exception-warnings/*.byte
-/testsuite/tests/match-exception-warnings/*.native
-/testsuite/tests/match-exception-warnings/program
-/testsuite/tests/match-exception-warnings/*.exe
-/testsuite/tests/match-exception-warnings/*.exe.manifest
-/testsuite/tests/match-exception-warnings/.depend
-/testsuite/tests/match-exception-warnings/.depend.nt
-/testsuite/tests/match-exception-warnings/.DS_Store
-
-# /testsuite/tests/misc/
-/testsuite/tests/misc/*.o
-/testsuite/tests/misc/*.a
-/testsuite/tests/misc/*.so
-/testsuite/tests/misc/*.obj
-/testsuite/tests/misc/*.cm[ioxa]
-/testsuite/tests/misc/*.cmx[as]
-/testsuite/tests/misc/*.annot
-/testsuite/tests/misc/*.result
-/testsuite/tests/misc/*.byte
-/testsuite/tests/misc/*.native
-/testsuite/tests/misc/program
-/testsuite/tests/misc/program.exe
-/testsuite/tests/misc/.depend
-/testsuite/tests/misc/.depend.nt
-/testsuite/tests/misc/.DS_Store
-
-# /testsuite/tests/misc-kb/
-/testsuite/tests/misc-kb/*.o
-/testsuite/tests/misc-kb/*.a
-/testsuite/tests/misc-kb/*.so
-/testsuite/tests/misc-kb/*.obj
-/testsuite/tests/misc-kb/*.lib
-/testsuite/tests/misc-kb/*.dll
-/testsuite/tests/misc-kb/*.cm[ioxat]
-/testsuite/tests/misc-kb/*.cmx[as]
-/testsuite/tests/misc-kb/*.cmti
-/testsuite/tests/misc-kb/*.annot
-/testsuite/tests/misc-kb/*.result
-/testsuite/tests/misc-kb/*.byte
-/testsuite/tests/misc-kb/*.native
-/testsuite/tests/misc-kb/program
-/testsuite/tests/misc-kb/*.exe
-/testsuite/tests/misc-kb/*.exe.manifest
-/testsuite/tests/misc-kb/.depend
-/testsuite/tests/misc-kb/.depend.nt
-/testsuite/tests/misc-kb/.DS_Store
-
-# /testsuite/tests/misc-unsafe/
-/testsuite/tests/misc-unsafe/*.o
-/testsuite/tests/misc-unsafe/*.a
-/testsuite/tests/misc-unsafe/*.so
-/testsuite/tests/misc-unsafe/*.obj
-/testsuite/tests/misc-unsafe/*.cm[ioxa]
-/testsuite/tests/misc-unsafe/*.cmx[as]
-/testsuite/tests/misc-unsafe/*.annot
-/testsuite/tests/misc-unsafe/*.result
-/testsuite/tests/misc-unsafe/*.byte
-/testsuite/tests/misc-unsafe/*.native
-/testsuite/tests/misc-unsafe/program
-/testsuite/tests/misc-unsafe/program.exe
-/testsuite/tests/misc-unsafe/.depend
-/testsuite/tests/misc-unsafe/.depend.nt
-/testsuite/tests/misc-unsafe/.DS_Store
-
-# /testsuite/tests/ppx-attributes/
-/testsuite/tests/ppx-attributes/*.o
-/testsuite/tests/ppx-attributes/*.a
-/testsuite/tests/ppx-attributes/*.so
-/testsuite/tests/ppx-attributes/*.obj
-/testsuite/tests/ppx-attributes/*.lib
-/testsuite/tests/ppx-attributes/*.dll
-/testsuite/tests/ppx-attributes/*.cm[ioxat]
-/testsuite/tests/ppx-attributes/*.cmx[as]
-/testsuite/tests/ppx-attributes/*.cmti
-/testsuite/tests/ppx-attributes/*.annot
-/testsuite/tests/ppx-attributes/*.result
-/testsuite/tests/ppx-attributes/*.byte
-/testsuite/tests/ppx-attributes/*.native
-/testsuite/tests/ppx-attributes/program
-/testsuite/tests/ppx-attributes/*.exe
-/testsuite/tests/ppx-attributes/*.exe.manifest
-/testsuite/tests/ppx-attributes/.depend
-/testsuite/tests/ppx-attributes/.depend.nt
-/testsuite/tests/ppx-attributes/.DS_Store
-
-# /testsuite/tests/prim-bigstring/
-/testsuite/tests/prim-bigstring/*.o
-/testsuite/tests/prim-bigstring/*.a
-/testsuite/tests/prim-bigstring/*.so
-/testsuite/tests/prim-bigstring/*.obj
-/testsuite/tests/prim-bigstring/*.lib
-/testsuite/tests/prim-bigstring/*.dll
-/testsuite/tests/prim-bigstring/*.cm[ioxat]
-/testsuite/tests/prim-bigstring/*.cmx[as]
-/testsuite/tests/prim-bigstring/*.cmti
-/testsuite/tests/prim-bigstring/*.annot
-/testsuite/tests/prim-bigstring/*.result
-/testsuite/tests/prim-bigstring/*.byte
-/testsuite/tests/prim-bigstring/*.native
-/testsuite/tests/prim-bigstring/program
-/testsuite/tests/prim-bigstring/*.exe
-/testsuite/tests/prim-bigstring/*.exe.manifest
-/testsuite/tests/prim-bigstring/.depend
-/testsuite/tests/prim-bigstring/.depend.nt
-/testsuite/tests/prim-bigstring/.DS_Store
-
-# /testsuite/tests/prim-bswap/
-/testsuite/tests/prim-bswap/*.o
-/testsuite/tests/prim-bswap/*.a
-/testsuite/tests/prim-bswap/*.so
-/testsuite/tests/prim-bswap/*.obj
-/testsuite/tests/prim-bswap/*.cm[ioxat]
-/testsuite/tests/prim-bswap/*.cmx[as]
-/testsuite/tests/prim-bswap/*.cmti
-/testsuite/tests/prim-bswap/*.annot
-/testsuite/tests/prim-bswap/*.result
-/testsuite/tests/prim-bswap/*.byte
-/testsuite/tests/prim-bswap/*.native
-/testsuite/tests/prim-bswap/program
-/testsuite/tests/prim-bswap/program.exe
-/testsuite/tests/prim-bswap/.depend
-/testsuite/tests/prim-bswap/.depend.nt
-/testsuite/tests/prim-bswap/.DS_Store
-
-# /testsuite/tests/prim-revapply/
-/testsuite/tests/prim-revapply/*.o
-/testsuite/tests/prim-revapply/*.a
-/testsuite/tests/prim-revapply/*.so
-/testsuite/tests/prim-revapply/*.obj
-/testsuite/tests/prim-revapply/*.cm[ioxa]
-/testsuite/tests/prim-revapply/*.cmx[as]
-/testsuite/tests/prim-revapply/*.annot
-/testsuite/tests/prim-revapply/*.result
-/testsuite/tests/prim-revapply/*.byte
-/testsuite/tests/prim-revapply/*.native
-/testsuite/tests/prim-revapply/program
-/testsuite/tests/prim-revapply/program.exe
-/testsuite/tests/prim-revapply/.depend
-/testsuite/tests/prim-revapply/.depend.nt
-/testsuite/tests/prim-revapply/.DS_Store
-
-# /testsuite/tests/regression/pr5080-notes/
-/testsuite/tests/regression/pr5080-notes/*.o
-/testsuite/tests/regression/pr5080-notes/*.a
-/testsuite/tests/regression/pr5080-notes/*.so
-/testsuite/tests/regression/pr5080-notes/*.obj
-/testsuite/tests/regression/pr5080-notes/*.cm[ioxa]
-/testsuite/tests/regression/pr5080-notes/*.cmx[as]
-/testsuite/tests/regression/pr5080-notes/*.annot
-/testsuite/tests/regression/pr5080-notes/*.result
-/testsuite/tests/regression/pr5080-notes/*.byte
-/testsuite/tests/regression/pr5080-notes/*.native
-/testsuite/tests/regression/pr5080-notes/program
-/testsuite/tests/regression/pr5080-notes/program.exe
-/testsuite/tests/regression/pr5080-notes/.depend
-/testsuite/tests/regression/pr5080-notes/.depend.nt
-/testsuite/tests/regression/pr5080-notes/.DS_Store
-
-# /testsuite/tests/regression/pr5233/
-/testsuite/tests/regression/pr5233/*.o
-/testsuite/tests/regression/pr5233/*.a
-/testsuite/tests/regression/pr5233/*.so
-/testsuite/tests/regression/pr5233/*.obj
-/testsuite/tests/regression/pr5233/*.lib
-/testsuite/tests/regression/pr5233/*.dll
-/testsuite/tests/regression/pr5233/*.cm[ioxat]
-/testsuite/tests/regression/pr5233/*.cmx[as]
-/testsuite/tests/regression/pr5233/*.cmti
-/testsuite/tests/regression/pr5233/*.annot
-/testsuite/tests/regression/pr5233/*.result
-/testsuite/tests/regression/pr5233/*.byte
-/testsuite/tests/regression/pr5233/*.native
-/testsuite/tests/regression/pr5233/program
-/testsuite/tests/regression/pr5233/*.exe
-/testsuite/tests/regression/pr5233/*.exe.manifest
-/testsuite/tests/regression/pr5233/.depend
-/testsuite/tests/regression/pr5233/.depend.nt
-/testsuite/tests/regression/pr5233/.DS_Store
-
-# /testsuite/tests/regression/pr5757/
-/testsuite/tests/regression/pr5757/*.o
-/testsuite/tests/regression/pr5757/*.a
-/testsuite/tests/regression/pr5757/*.so
-/testsuite/tests/regression/pr5757/*.obj
-/testsuite/tests/regression/pr5757/*.lib
-/testsuite/tests/regression/pr5757/*.dll
-/testsuite/tests/regression/pr5757/*.cm[ioxat]
-/testsuite/tests/regression/pr5757/*.cmx[as]
-/testsuite/tests/regression/pr5757/*.cmti
-/testsuite/tests/regression/pr5757/*.annot
-/testsuite/tests/regression/pr5757/*.result
-/testsuite/tests/regression/pr5757/*.byte
-/testsuite/tests/regression/pr5757/*.native
-/testsuite/tests/regression/pr5757/program
-/testsuite/tests/regression/pr5757/*.exe
-/testsuite/tests/regression/pr5757/*.exe.manifest
-/testsuite/tests/regression/pr5757/.depend
-/testsuite/tests/regression/pr5757/.depend.nt
-/testsuite/tests/regression/pr5757/.DS_Store
-
-# /testsuite/tests/regression/pr6024/
-/testsuite/tests/regression/pr6024/*.o
-/testsuite/tests/regression/pr6024/*.a
-/testsuite/tests/regression/pr6024/*.so
-/testsuite/tests/regression/pr6024/*.obj
-/testsuite/tests/regression/pr6024/*.lib
-/testsuite/tests/regression/pr6024/*.dll
-/testsuite/tests/regression/pr6024/*.cm[ioxat]
-/testsuite/tests/regression/pr6024/*.cmx[as]
-/testsuite/tests/regression/pr6024/*.cmti
-/testsuite/tests/regression/pr6024/*.annot
-/testsuite/tests/regression/pr6024/*.result
-/testsuite/tests/regression/pr6024/*.byte
-/testsuite/tests/regression/pr6024/*.native
-/testsuite/tests/regression/pr6024/program
-/testsuite/tests/regression/pr6024/*.exe
-/testsuite/tests/regression/pr6024/*.exe.manifest
-/testsuite/tests/regression/pr6024/.depend
-/testsuite/tests/regression/pr6024/.depend.nt
-/testsuite/tests/regression/pr6024/.DS_Store
-
-# /testsuite/tests/runtime-errors/
-/testsuite/tests/runtime-errors/*.o
-/testsuite/tests/runtime-errors/*.a
-/testsuite/tests/runtime-errors/*.so
-/testsuite/tests/runtime-errors/*.obj
-/testsuite/tests/runtime-errors/*.lib
-/testsuite/tests/runtime-errors/*.dll
-/testsuite/tests/runtime-errors/*.cm[ioxat]
-/testsuite/tests/runtime-errors/*.cmx[as]
-/testsuite/tests/runtime-errors/*.cmti
-/testsuite/tests/runtime-errors/*.annot
-/testsuite/tests/runtime-errors/*.result
-/testsuite/tests/runtime-errors/*.byte
-/testsuite/tests/runtime-errors/*.native
-/testsuite/tests/runtime-errors/program
-/testsuite/tests/runtime-errors/*.exe
-/testsuite/tests/runtime-errors/*.exe.manifest
-/testsuite/tests/runtime-errors/.depend
-/testsuite/tests/runtime-errors/.depend.nt
-/testsuite/tests/runtime-errors/.DS_Store
/testsuite/tests/runtime-errors/*.bytecode
-# /testsuite/tests/tool-debugger/
-/testsuite/tests/tool-debugger/*.o
-/testsuite/tests/tool-debugger/*.a
-/testsuite/tests/tool-debugger/*.so
-/testsuite/tests/tool-debugger/*.obj
-/testsuite/tests/tool-debugger/*.lib
-/testsuite/tests/tool-debugger/*.dll
-/testsuite/tests/tool-debugger/*.cm[ioxat]
-/testsuite/tests/tool-debugger/*.cmx[as]
-/testsuite/tests/tool-debugger/*.cmti
-/testsuite/tests/tool-debugger/*.annot
-/testsuite/tests/tool-debugger/*.result
-/testsuite/tests/tool-debugger/*.byte
-/testsuite/tests/tool-debugger/*.native
-/testsuite/tests/tool-debugger/program
-/testsuite/tests/tool-debugger/*.exe
-/testsuite/tests/tool-debugger/*.exe.manifest
-/testsuite/tests/tool-debugger/.depend
-/testsuite/tests/tool-debugger/.depend.nt
-/testsuite/tests/tool-debugger/.DS_Store
-/testsuite/tests/tool-debugger/compiler-libs
-
-# /testsuite/tests/tool-debugger/basic/
-/testsuite/tests/tool-debugger/basic/*.o
-/testsuite/tests/tool-debugger/basic/*.a
-/testsuite/tests/tool-debugger/basic/*.so
-/testsuite/tests/tool-debugger/basic/*.obj
-/testsuite/tests/tool-debugger/basic/*.lib
-/testsuite/tests/tool-debugger/basic/*.dll
-/testsuite/tests/tool-debugger/basic/*.cm[ioxat]
-/testsuite/tests/tool-debugger/basic/*.cmx[as]
-/testsuite/tests/tool-debugger/basic/*.cmti
-/testsuite/tests/tool-debugger/basic/*.annot
-/testsuite/tests/tool-debugger/basic/*.result
-/testsuite/tests/tool-debugger/basic/*.byte
-/testsuite/tests/tool-debugger/basic/*.native
-/testsuite/tests/tool-debugger/basic/program
-/testsuite/tests/tool-debugger/basic/*.exe
-/testsuite/tests/tool-debugger/basic/*.exe.manifest
-/testsuite/tests/tool-debugger/basic/.depend
-/testsuite/tests/tool-debugger/basic/.depend.nt
-/testsuite/tests/tool-debugger/basic/.DS_Store
-/testsuite/tests/tool-debugger/basic/compiler-libs
-
-# /testsuite/tests/tool-debugger/find-artifacts/
-/testsuite/tests/tool-debugger/find-artifacts/*.o
-/testsuite/tests/tool-debugger/find-artifacts/*.a
-/testsuite/tests/tool-debugger/find-artifacts/*.so
-/testsuite/tests/tool-debugger/find-artifacts/*.obj
-/testsuite/tests/tool-debugger/find-artifacts/*.lib
-/testsuite/tests/tool-debugger/find-artifacts/*.dll
-/testsuite/tests/tool-debugger/find-artifacts/*.cm[ioxat]
-/testsuite/tests/tool-debugger/find-artifacts/*.cmx[as]
-/testsuite/tests/tool-debugger/find-artifacts/*.cmti
-/testsuite/tests/tool-debugger/find-artifacts/*.annot
-/testsuite/tests/tool-debugger/find-artifacts/*.result
-/testsuite/tests/tool-debugger/find-artifacts/*.byte
-/testsuite/tests/tool-debugger/find-artifacts/*.native
-/testsuite/tests/tool-debugger/find-artifacts/program
-/testsuite/tests/tool-debugger/find-artifacts/*.exe
-/testsuite/tests/tool-debugger/find-artifacts/*.exe.manifest
-/testsuite/tests/tool-debugger/find-artifacts/.depend
-/testsuite/tests/tool-debugger/find-artifacts/.depend.nt
-/testsuite/tests/tool-debugger/find-artifacts/.DS_Store
-/testsuite/tests/tool-debugger/find-artifacts/compiler-libs
+/testsuite/tests/tool-debugger/**/compiler-libs
/testsuite/tests/tool-debugger/find-artifacts/out
-
-# /testsuite/tests/tool-debugger/no_debug_event/
-/testsuite/tests/tool-debugger/no_debug_event/*.o
-/testsuite/tests/tool-debugger/no_debug_event/*.a
-/testsuite/tests/tool-debugger/no_debug_event/*.so
-/testsuite/tests/tool-debugger/no_debug_event/*.obj
-/testsuite/tests/tool-debugger/no_debug_event/*.lib
-/testsuite/tests/tool-debugger/no_debug_event/*.dll
-/testsuite/tests/tool-debugger/no_debug_event/*.cm[ioxat]
-/testsuite/tests/tool-debugger/no_debug_event/*.cmx[as]
-/testsuite/tests/tool-debugger/no_debug_event/*.cmti
-/testsuite/tests/tool-debugger/no_debug_event/*.annot
-/testsuite/tests/tool-debugger/no_debug_event/*.result
-/testsuite/tests/tool-debugger/no_debug_event/*.byte
-/testsuite/tests/tool-debugger/no_debug_event/*.native
-/testsuite/tests/tool-debugger/no_debug_event/program
-/testsuite/tests/tool-debugger/no_debug_event/*.exe
-/testsuite/tests/tool-debugger/no_debug_event/*.exe.manifest
-/testsuite/tests/tool-debugger/no_debug_event/.depend
-/testsuite/tests/tool-debugger/no_debug_event/.depend.nt
-/testsuite/tests/tool-debugger/no_debug_event/.DS_Store
-/testsuite/tests/tool-debugger/no_debug_event/compiler-libs
/testsuite/tests/tool-debugger/no_debug_event/out
/testsuite/tests/tool-debugger/no_debug_event/c
-/testsuite/tests/tool-debugger/no_debug_event/c.exe
-
-# /testsuite/tests/tool-lexyacc/
-/testsuite/tests/tool-lexyacc/*.o
-/testsuite/tests/tool-lexyacc/*.a
-/testsuite/tests/tool-lexyacc/*.so
-/testsuite/tests/tool-lexyacc/*.obj
-/testsuite/tests/tool-lexyacc/*.lib
-/testsuite/tests/tool-lexyacc/*.dll
-/testsuite/tests/tool-lexyacc/*.cm[ioxat]
-/testsuite/tests/tool-lexyacc/*.cmx[as]
-/testsuite/tests/tool-lexyacc/*.cmti
-/testsuite/tests/tool-lexyacc/*.annot
-/testsuite/tests/tool-lexyacc/*.result
-/testsuite/tests/tool-lexyacc/*.byte
-/testsuite/tests/tool-lexyacc/*.native
-/testsuite/tests/tool-lexyacc/program
-/testsuite/tests/tool-lexyacc/*.exe
-/testsuite/tests/tool-lexyacc/*.exe.manifest
-/testsuite/tests/tool-lexyacc/.depend
-/testsuite/tests/tool-lexyacc/.depend.nt
-/testsuite/tests/tool-lexyacc/.DS_Store
-/testsuite/tests/tool-lexyacc/scanner.ml
-/testsuite/tests/tool-lexyacc/grammar.mli
-/testsuite/tests/tool-lexyacc/grammar.ml
-# /testsuite/tests/tool-ocaml/
-/testsuite/tests/tool-ocaml/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/tool-ocaml/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/tool-ocaml/_log
-/testsuite/tests/tool-ocaml/*.so
-/testsuite/tests/tool-ocaml/*.a
-/testsuite/tests/tool-ocaml/*.result
-/testsuite/tests/tool-ocaml/*.byte
-/testsuite/tests/tool-ocaml/*.native
-/testsuite/tests/tool-ocaml/program
-/testsuite/tests/tool-ocaml/*.cm*
-/testsuite/tests/tool-ocaml/*.o
-
-# /testsuite/tests/tool-ocamldoc/
-/testsuite/tests/tool-ocamldoc/*.o
-/testsuite/tests/tool-ocamldoc/*.a
-/testsuite/tests/tool-ocamldoc/*.so
-/testsuite/tests/tool-ocamldoc/*.obj
-/testsuite/tests/tool-ocamldoc/*.cm[ioxa]
-/testsuite/tests/tool-ocamldoc/*.cmx[as]
-/testsuite/tests/tool-ocamldoc/*.annot
-/testsuite/tests/tool-ocamldoc/*.result
-/testsuite/tests/tool-ocamldoc/*.byte
-/testsuite/tests/tool-ocamldoc/*.native
-/testsuite/tests/tool-ocamldoc/program
-/testsuite/tests/tool-ocamldoc/.depend
-/testsuite/tests/tool-ocamldoc/.depend.nt
-/testsuite/tests/tool-ocamldoc/.DS_Store
/testsuite/tests/tool-ocamldoc/*.html
/testsuite/tests/tool-ocamldoc/*.sty
/testsuite/tests/tool-ocamldoc/*.css
-/testsuite/tests/tool-ocamldoc/ocamldoc.out
-
-# /testsuite/tests/tool-toplevel/
-/testsuite/tests/tool-toplevel/*.o
-/testsuite/tests/tool-toplevel/*.a
-/testsuite/tests/tool-toplevel/*.so
-/testsuite/tests/tool-toplevel/*.obj
-/testsuite/tests/tool-toplevel/*.lib
-/testsuite/tests/tool-toplevel/*.dll
-/testsuite/tests/tool-toplevel/*.cm[ioxat]
-/testsuite/tests/tool-toplevel/*.cmx[as]
-/testsuite/tests/tool-toplevel/*.cmti
-/testsuite/tests/tool-toplevel/*.annot
-/testsuite/tests/tool-toplevel/*.result
-/testsuite/tests/tool-toplevel/*.byte
-/testsuite/tests/tool-toplevel/*.native
-/testsuite/tests/tool-toplevel/program
-/testsuite/tests/tool-toplevel/*.exe
-/testsuite/tests/tool-toplevel/*.exe.manifest
-/testsuite/tests/tool-toplevel/.depend
-/testsuite/tests/tool-toplevel/.depend.nt
-/testsuite/tests/tool-toplevel/.DS_Store
-
-# /testsuite/tests/translprim/
-/testsuite/tests/translprim/*.o
-/testsuite/tests/translprim/*.a
-/testsuite/tests/translprim/*.so
-/testsuite/tests/translprim/*.obj
-/testsuite/tests/translprim/*.lib
-/testsuite/tests/translprim/*.dll
-/testsuite/tests/translprim/*.cm[ioxat]
-/testsuite/tests/translprim/*.cmx[as]
-/testsuite/tests/translprim/*.cmti
-/testsuite/tests/translprim/*.annot
-/testsuite/tests/translprim/*.result
-/testsuite/tests/translprim/*.byte
-/testsuite/tests/translprim/*.native
-/testsuite/tests/translprim/program
-/testsuite/tests/translprim/*.exe
-/testsuite/tests/translprim/*.exe.manifest
-/testsuite/tests/translprim/.depend
-/testsuite/tests/translprim/.depend.nt
-/testsuite/tests/translprim/.DS_Store
-
-# /testsuite/tests/typing-extensions/
-/testsuite/tests/typing-extensions/*.o
-/testsuite/tests/typing-extensions/*.a
-/testsuite/tests/typing-extensions/*.so
-/testsuite/tests/typing-extensions/*.obj
-/testsuite/tests/typing-extensions/*.lib
-/testsuite/tests/typing-extensions/*.dll
-/testsuite/tests/typing-extensions/*.cm[ioxat]
-/testsuite/tests/typing-extensions/*.cmx[as]
-/testsuite/tests/typing-extensions/*.cmti
-/testsuite/tests/typing-extensions/*.annot
-/testsuite/tests/typing-extensions/*.result
-/testsuite/tests/typing-extensions/*.byte
-/testsuite/tests/typing-extensions/*.native
-/testsuite/tests/typing-extensions/program
-/testsuite/tests/typing-extensions/*.exe
-/testsuite/tests/typing-extensions/*.exe.manifest
-/testsuite/tests/typing-extensions/.depend
-/testsuite/tests/typing-extensions/.depend.nt
-/testsuite/tests/typing-extensions/.DS_Store
-
-# /testsuite/tests/typing-fstclassmod/
-/testsuite/tests/typing-fstclassmod/*.o
-/testsuite/tests/typing-fstclassmod/*.a
-/testsuite/tests/typing-fstclassmod/*.so
-/testsuite/tests/typing-fstclassmod/*.obj
-/testsuite/tests/typing-fstclassmod/*.lib
-/testsuite/tests/typing-fstclassmod/*.dll
-/testsuite/tests/typing-fstclassmod/*.cm[ioxat]
-/testsuite/tests/typing-fstclassmod/*.cmx[as]
-/testsuite/tests/typing-fstclassmod/*.cmti
-/testsuite/tests/typing-fstclassmod/*.annot
-/testsuite/tests/typing-fstclassmod/*.result
-/testsuite/tests/typing-fstclassmod/*.byte
-/testsuite/tests/typing-fstclassmod/*.native
-/testsuite/tests/typing-fstclassmod/program
-/testsuite/tests/typing-fstclassmod/*.exe
-/testsuite/tests/typing-fstclassmod/*.exe.manifest
-/testsuite/tests/typing-fstclassmod/.depend
-/testsuite/tests/typing-fstclassmod/.depend.nt
-/testsuite/tests/typing-fstclassmod/.DS_Store
-
-# /testsuite/tests/typing-gadts/
-/testsuite/tests/typing-gadts/*.o
-/testsuite/tests/typing-gadts/*.a
-/testsuite/tests/typing-gadts/*.so
-/testsuite/tests/typing-gadts/*.obj
-/testsuite/tests/typing-gadts/*.cm[ioxa]
-/testsuite/tests/typing-gadts/*.cmx[as]
-/testsuite/tests/typing-gadts/*.annot
-/testsuite/tests/typing-gadts/*.result
-/testsuite/tests/typing-gadts/*.byte
-/testsuite/tests/typing-gadts/*.native
-/testsuite/tests/typing-gadts/program
-/testsuite/tests/typing-gadts/.depend
-/testsuite/tests/typing-gadts/.depend.nt
-/testsuite/tests/typing-gadts/.DS_Store
-
-# /testsuite/tests/typing-implicit_unpack/
-/testsuite/tests/typing-implicit_unpack/*.o
-/testsuite/tests/typing-implicit_unpack/*.a
-/testsuite/tests/typing-implicit_unpack/*.so
-/testsuite/tests/typing-implicit_unpack/*.obj
-/testsuite/tests/typing-implicit_unpack/*.cm[ioxa]
-/testsuite/tests/typing-implicit_unpack/*.cmx[as]
-/testsuite/tests/typing-implicit_unpack/*.annot
-/testsuite/tests/typing-implicit_unpack/*.result
-/testsuite/tests/typing-implicit_unpack/*.byte
-/testsuite/tests/typing-implicit_unpack/*.native
-/testsuite/tests/typing-implicit_unpack/program
-/testsuite/tests/typing-implicit_unpack/.depend
-/testsuite/tests/typing-implicit_unpack/.depend.nt
-/testsuite/tests/typing-implicit_unpack/.DS_Store
-
-# /testsuite/tests/typing-labels/
-/testsuite/tests/typing-labels/*.o
-/testsuite/tests/typing-labels/*.a
-/testsuite/tests/typing-labels/*.so
-/testsuite/tests/typing-labels/*.obj
-/testsuite/tests/typing-labels/*.cm[ioxa]
-/testsuite/tests/typing-labels/*.cmx[as]
-/testsuite/tests/typing-labels/*.annot
-/testsuite/tests/typing-labels/*.result
-/testsuite/tests/typing-labels/*.byte
-/testsuite/tests/typing-labels/*.native
-/testsuite/tests/typing-labels/program
-/testsuite/tests/typing-labels/program.exe
-/testsuite/tests/typing-labels/.depend
-/testsuite/tests/typing-labels/.depend.nt
-/testsuite/tests/typing-labels/.DS_Store
-
-# /testsuite/tests/typing-misc/
-/testsuite/tests/typing-misc/*.o
-/testsuite/tests/typing-misc/*.a
-/testsuite/tests/typing-misc/*.so
-/testsuite/tests/typing-misc/*.obj
-/testsuite/tests/typing-misc/*.cm[ioxa]
-/testsuite/tests/typing-misc/*.cmx[as]
-/testsuite/tests/typing-misc/*.annot
-/testsuite/tests/typing-misc/*.result
-/testsuite/tests/typing-misc/*.byte
-/testsuite/tests/typing-misc/*.native
-/testsuite/tests/typing-misc/program
-/testsuite/tests/typing-misc/.depend
-/testsuite/tests/typing-misc/.depend.nt
-/testsuite/tests/typing-misc/.DS_Store
-
-# /testsuite/tests/typing-modules/
-/testsuite/tests/typing-modules/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-modules/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-modules/_log
-/testsuite/tests/typing-modules/*.so
-/testsuite/tests/typing-modules/*.a
-/testsuite/tests/typing-modules/*.result
-/testsuite/tests/typing-modules/*.byte
-/testsuite/tests/typing-modules/*.native
-/testsuite/tests/typing-modules/program
-# /testsuite/tests/typing-modules-bugs/
-/testsuite/tests/typing-modules-bugs/*.o
-/testsuite/tests/typing-modules-bugs/*.a
-/testsuite/tests/typing-modules-bugs/*.so
-/testsuite/tests/typing-modules-bugs/*.obj
-/testsuite/tests/typing-modules-bugs/*.cm[ioxa]
-/testsuite/tests/typing-modules-bugs/*.cmx[as]
-/testsuite/tests/typing-modules-bugs/*.annot
-/testsuite/tests/typing-modules-bugs/*.result
-/testsuite/tests/typing-modules-bugs/*.byte
-/testsuite/tests/typing-modules-bugs/*.native
-/testsuite/tests/typing-modules-bugs/program
-/testsuite/tests/typing-modules-bugs/program.exe
-/testsuite/tests/typing-modules-bugs/.depend
-/testsuite/tests/typing-modules-bugs/.depend.nt
-/testsuite/tests/typing-modules-bugs/.DS_Store
-
-# /testsuite/tests/typing-objects/
-/testsuite/tests/typing-objects/*.o
-/testsuite/tests/typing-objects/*.a
-/testsuite/tests/typing-objects/*.so
-/testsuite/tests/typing-objects/*.obj
-/testsuite/tests/typing-objects/*.cm[ioxa]
-/testsuite/tests/typing-objects/*.cmx[as]
-/testsuite/tests/typing-objects/*.annot
-/testsuite/tests/typing-objects/*.result
-/testsuite/tests/typing-objects/*.byte
-/testsuite/tests/typing-objects/*.native
-/testsuite/tests/typing-objects/program
-/testsuite/tests/typing-objects/.depend
-/testsuite/tests/typing-objects/.depend.nt
-/testsuite/tests/typing-objects/.DS_Store
-
-# /testsuite/tests/typing-objects-bugs/
-/testsuite/tests/typing-objects-bugs/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-objects-bugs/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-objects-bugs/_log
-/testsuite/tests/typing-objects-bugs/*.so
-/testsuite/tests/typing-objects-bugs/*.a
-/testsuite/tests/typing-objects-bugs/*.result
-/testsuite/tests/typing-objects-bugs/*.byte
-/testsuite/tests/typing-objects-bugs/*.native
-/testsuite/tests/typing-objects-bugs/program
-/testsuite/tests/typing-objects-bugs/*.cm*
-/testsuite/tests/typing-objects-bugs/*.o
-
-# /testsuite/tests/typing-poly/
-/testsuite/tests/typing-poly/*.o
-/testsuite/tests/typing-poly/*.a
-/testsuite/tests/typing-poly/*.so
-/testsuite/tests/typing-poly/*.obj
-/testsuite/tests/typing-poly/*.cm[ioxa]
-/testsuite/tests/typing-poly/*.cmx[as]
-/testsuite/tests/typing-poly/*.annot
-/testsuite/tests/typing-poly/*.result
-/testsuite/tests/typing-poly/*.byte
-/testsuite/tests/typing-poly/*.native
-/testsuite/tests/typing-poly/program
-/testsuite/tests/typing-poly/.depend
-/testsuite/tests/typing-poly/.depend.nt
-/testsuite/tests/typing-poly/.DS_Store
-
-# /testsuite/tests/typing-poly-bugs/
-/testsuite/tests/typing-poly-bugs/*.o
-/testsuite/tests/typing-poly-bugs/*.a
-/testsuite/tests/typing-poly-bugs/*.so
-/testsuite/tests/typing-poly-bugs/*.obj
-/testsuite/tests/typing-poly-bugs/*.cm[ioxa]
-/testsuite/tests/typing-poly-bugs/*.cmx[as]
-/testsuite/tests/typing-poly-bugs/*.annot
-/testsuite/tests/typing-poly-bugs/*.result
-/testsuite/tests/typing-poly-bugs/*.byte
-/testsuite/tests/typing-poly-bugs/*.native
-/testsuite/tests/typing-poly-bugs/program
-/testsuite/tests/typing-poly-bugs/program.exe
-/testsuite/tests/typing-poly-bugs/.depend
-/testsuite/tests/typing-poly-bugs/.depend.nt
-/testsuite/tests/typing-poly-bugs/.DS_Store
-
-# /testsuite/tests/typing-polyvariants-bugs/
-/testsuite/tests/typing-polyvariants-bugs/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-polyvariants-bugs/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-polyvariants-bugs/_log
-/testsuite/tests/typing-polyvariants-bugs/*.so
-/testsuite/tests/typing-polyvariants-bugs/*.a
-/testsuite/tests/typing-polyvariants-bugs/*.result
-/testsuite/tests/typing-polyvariants-bugs/*.byte
-/testsuite/tests/typing-polyvariants-bugs/*.native
-/testsuite/tests/typing-polyvariants-bugs/program
-/testsuite/tests/typing-polyvariants-bugs/*.cm*
-/testsuite/tests/typing-polyvariants-bugs/*.o
-
-# /testsuite/tests/typing-polyvariants-bugs-2/
-/testsuite/tests/typing-polyvariants-bugs-2/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-polyvariants-bugs-2/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-polyvariants-bugs-2/_log
-/testsuite/tests/typing-polyvariants-bugs-2/*.so
-/testsuite/tests/typing-polyvariants-bugs-2/*.a
-/testsuite/tests/typing-polyvariants-bugs-2/*.result
-/testsuite/tests/typing-polyvariants-bugs-2/*.byte
-/testsuite/tests/typing-polyvariants-bugs-2/*.native
-/testsuite/tests/typing-polyvariants-bugs-2/program
-/testsuite/tests/typing-polyvariants-bugs-2/*.cm*
-/testsuite/tests/typing-polyvariants-bugs-2/*.o
-
-# /testsuite/tests/typing-private/
-/testsuite/tests/typing-private/*.o
-/testsuite/tests/typing-private/*.a
-/testsuite/tests/typing-private/*.so
-/testsuite/tests/typing-private/*.obj
-/testsuite/tests/typing-private/*.cm[ioxa]
-/testsuite/tests/typing-private/*.cmx[as]
-/testsuite/tests/typing-private/*.annot
-/testsuite/tests/typing-private/*.result
-/testsuite/tests/typing-private/*.byte
-/testsuite/tests/typing-private/*.native
-/testsuite/tests/typing-private/program
-/testsuite/tests/typing-private/.depend
-/testsuite/tests/typing-private/.depend.nt
-/testsuite/tests/typing-private/.DS_Store
-
-# /testsuite/tests/typing-private-bugs/
-/testsuite/tests/typing-private-bugs/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-private-bugs/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-private-bugs/_log
-/testsuite/tests/typing-private-bugs/*.so
-/testsuite/tests/typing-private-bugs/*.a
-/testsuite/tests/typing-private-bugs/*.result
-/testsuite/tests/typing-private-bugs/*.byte
-/testsuite/tests/typing-private-bugs/*.native
-/testsuite/tests/typing-private-bugs/program
-/testsuite/tests/typing-private-bugs/*.cm*
-/testsuite/tests/typing-private-bugs/*.o
-
-# /testsuite/tests/typing-recmod/
-/testsuite/tests/typing-recmod/# svn propset -R svn:ignore -F .svnignore .
-/testsuite/tests/typing-recmod/# find . -name .svnignore -print | while read f; do svn propset svn:ignore -F $f `dirname $f`; done
-/testsuite/tests/typing-recmod/_log
-/testsuite/tests/typing-recmod/*.so
-/testsuite/tests/typing-recmod/*.a
-/testsuite/tests/typing-recmod/*.result
-/testsuite/tests/typing-recmod/*.byte
-/testsuite/tests/typing-recmod/*.native
-/testsuite/tests/typing-recmod/program
-/testsuite/tests/typing-recmod/*.cm*
-/testsuite/tests/typing-recmod/*.o
-
-# /testsuite/tests/typing-recordarg/
-/testsuite/tests/typing-recordarg/*.o
-/testsuite/tests/typing-recordarg/*.a
-/testsuite/tests/typing-recordarg/*.so
-/testsuite/tests/typing-recordarg/*.obj
-/testsuite/tests/typing-recordarg/*.lib
-/testsuite/tests/typing-recordarg/*.dll
-/testsuite/tests/typing-recordarg/*.cm[ioxat]
-/testsuite/tests/typing-recordarg/*.cmx[as]
-/testsuite/tests/typing-recordarg/*.cmti
-/testsuite/tests/typing-recordarg/*.annot
-/testsuite/tests/typing-recordarg/*.result
-/testsuite/tests/typing-recordarg/*.byte
-/testsuite/tests/typing-recordarg/*.native
-/testsuite/tests/typing-recordarg/program
-/testsuite/tests/typing-recordarg/*.exe
-/testsuite/tests/typing-recordarg/*.exe.manifest
-/testsuite/tests/typing-recordarg/.depend
-/testsuite/tests/typing-recordarg/.depend.nt
-/testsuite/tests/typing-recordarg/.DS_Store
-
-# /testsuite/tests/typing-short-paths/
-/testsuite/tests/typing-short-paths/*.o
-/testsuite/tests/typing-short-paths/*.a
-/testsuite/tests/typing-short-paths/*.so
-/testsuite/tests/typing-short-paths/*.obj
-/testsuite/tests/typing-short-paths/*.cm[ioxat]
-/testsuite/tests/typing-short-paths/*.cmx[as]
-/testsuite/tests/typing-short-paths/*.cmti
-/testsuite/tests/typing-short-paths/*.annot
-/testsuite/tests/typing-short-paths/*.result
-/testsuite/tests/typing-short-paths/*.byte
-/testsuite/tests/typing-short-paths/*.native
-/testsuite/tests/typing-short-paths/program
-/testsuite/tests/typing-short-paths/program.exe
-/testsuite/tests/typing-short-paths/.depend
-/testsuite/tests/typing-short-paths/.depend.nt
-/testsuite/tests/typing-short-paths/.DS_Store
-
-# /testsuite/tests/typing-signatures/
-/testsuite/tests/typing-signatures/*.o
-/testsuite/tests/typing-signatures/*.a
-/testsuite/tests/typing-signatures/*.so
-/testsuite/tests/typing-signatures/*.obj
-/testsuite/tests/typing-signatures/*.cm[ioxa]
-/testsuite/tests/typing-signatures/*.cmx[as]
-/testsuite/tests/typing-signatures/*.annot
-/testsuite/tests/typing-signatures/*.result
-/testsuite/tests/typing-signatures/*.byte
-/testsuite/tests/typing-signatures/*.native
-/testsuite/tests/typing-signatures/program
-/testsuite/tests/typing-signatures/.depend
-/testsuite/tests/typing-signatures/.depend.nt
-/testsuite/tests/typing-signatures/.DS_Store
-
-# /testsuite/tests/typing-sigsubst/
-/testsuite/tests/typing-sigsubst/*.o
-/testsuite/tests/typing-sigsubst/*.a
-/testsuite/tests/typing-sigsubst/*.so
-/testsuite/tests/typing-sigsubst/*.obj
-/testsuite/tests/typing-sigsubst/*.cm[ioxa]
-/testsuite/tests/typing-sigsubst/*.cmx[as]
-/testsuite/tests/typing-sigsubst/*.annot
-/testsuite/tests/typing-sigsubst/*.result
-/testsuite/tests/typing-sigsubst/*.byte
-/testsuite/tests/typing-sigsubst/*.native
-/testsuite/tests/typing-sigsubst/program
-/testsuite/tests/typing-sigsubst/.depend
-/testsuite/tests/typing-sigsubst/.depend.nt
-/testsuite/tests/typing-sigsubst/.DS_Store
-
-# /testsuite/tests/typing-typeparam/
-/testsuite/tests/typing-typeparam/*.o
-/testsuite/tests/typing-typeparam/*.a
-/testsuite/tests/typing-typeparam/*.so
-/testsuite/tests/typing-typeparam/*.obj
-/testsuite/tests/typing-typeparam/*.cm[ioxa]
-/testsuite/tests/typing-typeparam/*.cmx[as]
-/testsuite/tests/typing-typeparam/*.annot
-/testsuite/tests/typing-typeparam/*.result
-/testsuite/tests/typing-typeparam/*.byte
-/testsuite/tests/typing-typeparam/*.native
-/testsuite/tests/typing-typeparam/program
-/testsuite/tests/typing-typeparam/.depend
-/testsuite/tests/typing-typeparam/.depend.nt
-/testsuite/tests/typing-typeparam/.DS_Store
-
-# /testsuite/tests/typing-warnings/
-/testsuite/tests/typing-warnings/*.o
-/testsuite/tests/typing-warnings/*.a
-/testsuite/tests/typing-warnings/*.so
-/testsuite/tests/typing-warnings/*.obj
-/testsuite/tests/typing-warnings/*.cm[ioxat]
-/testsuite/tests/typing-warnings/*.cmx[as]
-/testsuite/tests/typing-warnings/*.cmti
-/testsuite/tests/typing-warnings/*.annot
-/testsuite/tests/typing-warnings/*.result
-/testsuite/tests/typing-warnings/*.byte
-/testsuite/tests/typing-warnings/*.native
-/testsuite/tests/typing-warnings/program
-/testsuite/tests/typing-warnings/program.exe
-/testsuite/tests/typing-warnings/.depend
-/testsuite/tests/typing-warnings/.depend.nt
-/testsuite/tests/typing-warnings/.DS_Store
+/testsuite/tests/tool-lexyacc/scanner.ml
+/testsuite/tests/tool-lexyacc/grammar.mli
+/testsuite/tests/tool-lexyacc/grammar.ml
-# /testsuite/tests/utils/
-/testsuite/tests/utils/*.o
-/testsuite/tests/utils/*.a
-/testsuite/tests/utils/*.so
-/testsuite/tests/utils/*.obj
-/testsuite/tests/utils/*.cm[ioxat]
-/testsuite/tests/utils/*.cmx[as]
-/testsuite/tests/utils/*.cmti
-/testsuite/tests/utils/*.annot
-/testsuite/tests/utils/*.result
-/testsuite/tests/utils/*.byte
-/testsuite/tests/utils/*.native
-/testsuite/tests/utils/program
-/testsuite/tests/utils/program.exe
-/testsuite/tests/utils/.depend
-/testsuite/tests/utils/.depend.nt
-/testsuite/tests/utils/.DS_Store
+/testsuite/tests/unboxed-primitive-args/main.ml
+/testsuite/tests/unboxed-primitive-args/stubs.c
-# /testsuite/tests/warnings/
-/testsuite/tests/warnings/*.o
-/testsuite/tests/warnings/*.a
-/testsuite/tests/warnings/*.so
-/testsuite/tests/warnings/*.obj
-/testsuite/tests/warnings/*.lib
-/testsuite/tests/warnings/*.dll
-/testsuite/tests/warnings/*.cm[ioxat]
-/testsuite/tests/warnings/*.cmx[as]
-/testsuite/tests/warnings/*.cmti
-/testsuite/tests/warnings/*.annot
-/testsuite/tests/warnings/*.result
-/testsuite/tests/warnings/*.byte
-/testsuite/tests/warnings/*.native
-/testsuite/tests/warnings/program
-/testsuite/tests/warnings/*.exe
-/testsuite/tests/warnings/*.exe.manifest
-/testsuite/tests/warnings/.depend
-/testsuite/tests/warnings/.depend.nt
-/testsuite/tests/warnings/.DS_Store
+/testsuite/tests/warnings/w55.opt.opt_result
-# /tools/
-/tools/*.o
-/tools/*.a
-/tools/*.so
-/tools/*.obj
-/tools/*.lib
-/tools/*.dll
-/tools/*.cm[ioxat]
-/tools/*.cmx[as]
-/tools/*.cmti
-/tools/*.annot
-/tools/*.result
-/tools/*.byte
-/tools/*.native
-/tools/program
-/tools/*.exe
-/tools/*.exe.manifest
-/tools/.depend
-/tools/.depend.nt
-/tools/.DS_Store
/tools/ocamldep
/tools/ocamldep.opt
/tools/ocamldep.bak
@@ -2764,85 +283,8 @@
/tools/read_cmt
/tools/read_cmt.opt
-# /toplevel/
-/toplevel/.depend
-/toplevel/configure
-/toplevel/ocamlc
-/toplevel/ocamlc.opt
-/toplevel/expunge
-/toplevel/ocaml
-/toplevel/ocamlopt
-/toplevel/ocamlopt.opt
-/toplevel/ocamlcomp.sh
-/toplevel/ocamlcompopt.sh
-/toplevel/package-macosx
-/toplevel/.DS_Store
-/toplevel/*.annot
-/toplevel/_boot_log1
-/toplevel/_boot_log2
-/toplevel/_build
-/toplevel/_log
-/toplevel/myocamlbuild_config.ml
-/toplevel/ocamlnat
-/toplevel/*.cm*
-/toplevel/*.o
-
-# /typing/
-/typing/*.o
-/typing/*.a
-/typing/*.so
-/typing/*.obj
-/typing/*.dll
-/typing/*.cm[ioxat]
-/typing/*.cmx[as]
-/typing/*.cmti
-/typing/*.annot
-/typing/*.result
-/typing/*.byte
-/typing/*.native
-/typing/program
-/typing/*.exe
-/typing/.depend
-/typing/.depend.nt
-/typing/.DS_Store
-
-# /utils/
-/utils/*.o
-/utils/*.a
-/utils/*.so
-/utils/*.obj
-/utils/*.dll
-/utils/*.cm[ioxat]
-/utils/*.cmx[as]
-/utils/*.cmti
-/utils/*.annot
-/utils/*.result
-/utils/*.byte
-/utils/*.native
-/utils/program
-/utils/*.exe
-/utils/.depend
-/utils/.depend.nt
-/utils/.DS_Store
/utils/config.ml
-# /yacc/
-/yacc/*.o
-/yacc/*.a
-/yacc/*.so
-/yacc/*.obj
-/yacc/*.cm[ioxa]
-/yacc/*.cmx[as]
-/yacc/*.annot
-/yacc/*.result
-/yacc/*.byte
-/yacc/*.native
-/yacc/program
-/yacc/program.exe
-/yacc/.depend
-/yacc/.depend.nt
-/yacc/.DS_Store
/yacc/ocamlyacc
-/yacc/ocamlyacc.exe
/yacc/version.h
/yacc/.gdb_history
diff --git a/.ignore b/.ignore
deleted file mode 100644
index 6dce10ee3e..0000000000
--- a/.ignore
+++ /dev/null
@@ -1,11 +0,0 @@
-configure
-ocamlc
-ocamlc.opt
-expunge
-ocaml
-ocamlopt
-ocamlopt.opt
-ocamlcomp.sh
-ocamlcompopt.sh
-package-macosx
-ocamlnat
diff --git a/Changes b/Changes
index d86fe15605..d7069b6e8f 100644
--- a/Changes
+++ b/Changes
@@ -49,6 +49,10 @@ Language features:
- GPR#173: [@inline] and [@inlined] attributes (for function declarations
and call sites respectively) to control inlining
(Pierre Chambart, Mark Shinwell)
+- PR#6806: Syntax shortcut for putting a type annotation on a record field
+ (Valentin Gatien-Baron, review by Jérémie Dimino)
+- PR#6806: Allow type annotations before the "->" in "fun <args> -> <expr>"
+ (Valentin Gatien-Baron, review by Jérémie Dimino)
Compilers:
- PR#4800: better compilation of tuple assignment (Gabriel Scherer and
@@ -86,6 +90,10 @@ Compilers:
(Alain Frisch)
- GPR#263: improve code generation for if-equivalents of (&&) and (||)
(Pierre Chambart)
+- GPR#271: Fix incorrect mutability flag when records are built using "with"
+ (Mark Shinwell)
+- GPR#270: Make [transl_exception_constructor] generate [Immutable] blocks
+ (Mark Shinwell)
Runtime system:
- PR#3612: allow allocating custom block with finalizers in the minor heap
@@ -140,6 +148,17 @@ Standard library:
(report and fix by Jeremy Yallop)
- GPR#265: new implementation of Queue avoiding Obj.magic
(Jérémie Dimino)
+- GPR#272: Switch classify_float to [@@unboxed] (Alain Frisch)
+- GPR#277: Switch the following externals to [@@unboxed]:
+ * {Nativeint,Int32,Int64}.{of,to}_float
+ * Int{32,64}.float_of_bits
+ * Int{32,64}.bits_of_float
+ (Jérémie Dimino)
+- GPR#281: Switch the following externals to [@@unboxed]:
+ * Sys.time (and [@@noalloc])
+ * Pervasives.ldexp (and [@@noalloc])
+ * Pervasives.compare for float, nativeint, int32, int64.
+ (Bobot François)
Type system:
- PR#5545: Type annotations on methods cannot control the choice of abbreviation
@@ -220,12 +239,19 @@ Bug fixes:
(Benoît Vaugon, report by Arduino Cascella)
- PR#6944: let module X = Path in … is not typed as a module alias
(Jacques Garrigue, report by def)
+- PR#6945 and GPR#227: protect Sys and Unix functions against string
+ arguments containing the null character '\000'
+ (c-cube and Xavier Leroy, report by Daniel Bünzli)
- PR#6954: Infinite loop in type checker with module aliases
+- PR#6972, GPR#276: 4.02.3 regression on documentation comments in .cmt files
+ (Leo White, report by Olivier Andrieu)
- PR#6982: unexpected type error when packing a module alias
- PR#6985: `module type of struct include Bar end exposes
%s#row when Bar contains private row types
- PR#6992: Segfault from bug in GADT/module typing
- PR#6993: Segfault from recursive modules violating exhaustiveness assumptions
+- PR#6998: Typer fails reading unnecessary cmis with -no-alias-deps and -w -49
+ (Leo White, report by Valentin Gatien-Baron)
- PR#7003: String.sub causes segmentation fault
(Damien Doligez, report by Radek Micek)
- PR#7008: Fatal error in ocamlc with empty compilation unit name
@@ -236,6 +262,10 @@ Bug fixes:
- PR#7016: Stack overflow in GADT typing
- PR#7030: libasmrun_shared.so fails to build on SPARC Solaris
(report and fix by Patrick Star)
+- PR#7036: Module alias is not taken into account when checking module
+ type compatibility (in a class type) (Jacques Garrigue)
+- PR#7039: Unix.getsockname returns garbage for unnamed PF_UNIX sockets
+ (Xavier Leroy)
- GPR#205: Clear caml_backtrace_last_exn before registering as root
(report and fix by Frederic Bour)
- GPR#220: minor -dsource error on recursive modules
@@ -248,6 +278,8 @@ Bug fixes:
(Daniel Bünzli)
- GPR#251: fix cross-compilation with ocamldoc enabled
(whitequark)
+- GPR#280: Fix stdlib dependencies for .p.cmx (Pierre Chambart,
+ Mark Shinwell)
Features wishes:
- PR#4714: List.cons
@@ -284,8 +316,9 @@ Features wishes:
(Vladimir Brankov, review by Gabriel Scherer)
- GPR#147: [type 'a result = Ok of 'a | Error of 'b] in Pervasives
(Yaron Minsky)
-- GPR#156: Optimize reallocation of caml_frame_descriptors (dynlink speedup)
- (Pierre Chambart, review by François Bobot, Xavier Leroy and Damien Doligez)
+- GPR#156, GPR#279: optimize caml_frame_descriptors realloc (dynlink speedup)
+ (Pierre Chambart, Alain Frisch,
+ review by François Bobot, Xavier Leroy and Damien Doligez)
- GPR#171: allow custom warning printers / catchers
(Benjamin Canou, review by Damien Doligez)
- GPR#191: Making gc.h and some part of memory.h public
@@ -999,7 +1032,7 @@ Other libraries:
Type system:
- PR#5759: use well-disciplined type information propagation to
disambiguate label and constructor names
- (Jacques Garrigue, Alain Frisch and Leo P. White)
+ (Jacques Garrigue, Alain Frisch and Leo White)
* Propagate type information towards pattern-matching, even in the presence of
polymorphic variants (discarding only information about possibly-present
constructors). As a result, matching against absent constructors is no longer
@@ -1048,7 +1081,7 @@ Compilers:
- PR#5571: incorrect ordinal number in error message
(Alain Frisch, report by John Carr)
- PR#6073: add signature to Tstr_include
- (patch by Leo P. White)
+ (patch by Leo White)
Standard library:
- PR#5899: expose a way to inspect the current call stack,
@@ -1222,7 +1255,7 @@ Bug fixes:
- PR#5814: read_cmt -annot does not report internal references
(Alain Frisch)
- PR#5815: Multiple exceptions in signatures gives an error
- (Leo P. White)
+ (Leo White)
- PR#5816: read_cmt -annot does not work for partial .cmt files
(Alain Frisch)
- PR#5819: segfault when using [with] on large recursive record (ocamlopt)
@@ -1260,7 +1293,7 @@ Bug fixes:
- PR#5891: ocamlbuild: support rectypes tag for mlpack
(Khoo Yit Phang)
- PR#5892: GADT exhaustiveness check is broken
- (Jacques Garrigue and Leo P. White)
+ (Jacques Garrigue and Leo White)
- PR#5906: GADT exhaustiveness check is still broken
(Jacques Garrigue, report by Sébastien Briais)
- PR#5907: Undetected cycle during typecheck causes exceptions
@@ -1288,7 +1321,7 @@ Bug fixes:
- PR#5945: Mix-up of Minor_heap_min and Minor_heap_max units
(Benoît Vaugon)
- PR#5948: GADT with polymorphic variants bug
- (Jacques Garrigue, report by Leo P. White)
+ (Jacques Garrigue, report by Leo White)
- PR#5953: Unix.system does not handle EINTR
(Jérémie Dimino)
- PR#5965: disallow auto-reference to a recursive module in its definition
@@ -1306,13 +1339,13 @@ Bug fixes:
- PR#5982: caml_leave_blocking section and errno corruption
(Jérémie Dimino)
- PR#5985: Unexpected interaction between variance and GADTs
- (Jacques Garrigue, Jeremy Yallop and Leo P. White and Gabriel Scherer)
+ (Jacques Garrigue, Jeremy Yallop and Leo White and Gabriel Scherer)
- PR#5988: missing from the documentation: -impl is a valid flag for ocamlopt
(Damien Doligez, report by Vincent Bernardoff)
- PR#5989: Assumed inequalities involving private rows
(Jacques Garrigue, report by Jeremy Yallop)
- PR#5992: Crash when pattern-matching lazy values modifies the scrutinee
- (Luc Maranget, Leo P. White)
+ (Luc Maranget, Leo White)
- PR#5993: Variance of private type abbreviations not checked for modules
(Jacques Garrigue)
- PR#5997: Non-compatibility assumed for concrete types with same constructor
@@ -1358,7 +1391,7 @@ Bug fixes:
- PR#6158: Fatal error using GADTs
(Jacques Garrigue, report by Jeremy Yallop)
- PR#6163: Assert_failure using polymorphic variants in GADTs
- (Jacques Garrigue, report by Leo P. White)
+ (Jacques Garrigue, report by Leo White)
- PR#6164: segmentation fault on Num.power_num of 0/1
(Fabrice Le Fessant, report by Johannes Kanig)
- PR#6210: Camlp4 location error
diff --git a/asmcomp/.ignore b/asmcomp/.ignore
deleted file mode 100644
index 8c24e74ad1..0000000000
--- a/asmcomp/.ignore
+++ /dev/null
@@ -1,7 +0,0 @@
-emit.ml
-arch.ml
-proc.ml
-selection.ml
-reload.ml
-scheduling.ml
-CSE.ml
diff --git a/asmrun/.ignore b/asmrun/.ignore
deleted file mode 100644
index 89a56901cc..0000000000
--- a/asmrun/.ignore
+++ /dev/null
@@ -1,42 +0,0 @@
-*.p.c
-*.d.c
-libasmrun.a
-libasmrunp.a
-.depend.nt
-alloc.c
-array.c
-backtrace.c
-callback.c
-compact.c
-compare.c
-custom.c
-debugger.c
-dynlink.c
-extern.c
-finalise.c
-floats.c
-freelist.c
-gc_ctrl.c
-globroots.c
-hash.c
-intern.c
-ints.c
-io.c
-lexing.c
-main.c
-major_gc.c
-md5.c
-memory.c
-meta.c
-minor_gc.c
-misc.c
-obj.c
-parsing.c
-printexc.c
-signals.c
-startup_aux.c
-str.c
-sys.c
-terminfo.c
-unix.c
-weak.c
diff --git a/asmrun/roots.c b/asmrun/roots.c
index 63fae76539..d6de223738 100644
--- a/asmrun/roots.c
+++ b/asmrun/roots.c
@@ -137,12 +137,15 @@ static void init_frame_descriptors(link *new_frametables)
caml_frame_descriptors =
(frame_descr **) caml_stat_alloc(tblsize * sizeof(frame_descr *));
for (i = 0; i < tblsize; i++) caml_frame_descriptors[i] = NULL;
+
+ fill_hashtable(new_frametables);
} else {
num_descr += increase;
+ fill_hashtable(new_frametables);
+ tail->next = frametables;
}
- fill_hashtable(new_frametables);
- tail->next = frametables;
+ frametables = new_frametables;
}
void caml_init_frame_descriptors(void) {
diff --git a/boot/.ignore b/boot/.ignore
deleted file mode 100644
index 30c5866b7c..0000000000
--- a/boot/.ignore
+++ /dev/null
@@ -1,6 +0,0 @@
-Saved
-ocamlrun
-ocamlrun.exe
-ocamlyacc
-ocamlyacc.exe
-camlheader
diff --git a/boot/ocamlc b/boot/ocamlc
index 33d3b3a828..ba32993f0b 100755
--- a/boot/ocamlc
+++ b/boot/ocamlc
Binary files differ
diff --git a/boot/ocamldep b/boot/ocamldep
index 844584aaf9..4a47869bcc 100755
--- a/boot/ocamldep
+++ b/boot/ocamldep
Binary files differ
diff --git a/boot/ocamllex b/boot/ocamllex
index bae5a2a708..911786114f 100755
--- a/boot/ocamllex
+++ b/boot/ocamllex
Binary files differ
diff --git a/bytecomp/.ignore b/bytecomp/.ignore
deleted file mode 100644
index d2f18a85a9..0000000000
--- a/bytecomp/.ignore
+++ /dev/null
@@ -1,2 +0,0 @@
-runtimedef.ml
-opcodes.ml
diff --git a/bytecomp/translcore.ml b/bytecomp/translcore.ml
index 0d2721d2ca..4c67e684a7 100644
--- a/bytecomp/translcore.ml
+++ b/bytecomp/translcore.ml
@@ -103,18 +103,21 @@ let comparisons_table = create_hashtable 11 [
Pbintcomp(Pint64, Cge),
false);
"%compare",
+ let unboxed_compare name native_repr =
+ Pccall( Primitive.make ~name ~alloc:false
+ ~native_name:(name^"_unboxed")
+ ~native_repr_args:[native_repr;native_repr]
+ ~native_repr_res:Untagged_int
+ ) in
(Pccall(Primitive.simple ~name:"caml_compare" ~arity:2 ~alloc:true),
+ (* Not unboxed since the comparison is done directly on tagged int *)
Pccall(Primitive.simple ~name:"caml_int_compare" ~arity:2 ~alloc:false),
- Pccall(Primitive.simple ~name:"caml_float_compare" ~arity:2
- ~alloc:false),
+ unboxed_compare "caml_float_compare" Unboxed_float,
Pccall(Primitive.simple ~name:"caml_string_compare" ~arity:2
~alloc:false),
- Pccall(Primitive.simple ~name:"caml_nativeint_compare" ~arity:2
- ~alloc:false),
- Pccall(Primitive.simple ~name:"caml_int32_compare" ~arity:2
- ~alloc:false),
- Pccall(Primitive.simple ~name:"caml_int64_compare" ~arity:2
- ~alloc:false),
+ unboxed_compare "caml_nativeint_compare" (Unboxed_integer Pnativeint),
+ unboxed_compare "caml_int32_compare" (Unboxed_integer Pint32),
+ unboxed_compare "caml_int64_compare" (Unboxed_integer Pint64),
false)
]
@@ -1170,7 +1173,8 @@ and transl_record env all_labels repres lbl_expr_list opt_init_expr =
lbl_expr_list;
let ll = Array.to_list lv in
let mut =
- if List.exists (fun (_, lbl, expr) -> lbl.lbl_mut = Mutable) lbl_expr_list
+ if List.exists (fun lbl -> lbl.lbl_mut = Mutable)
+ (Array.to_list all_labels)
then Mutable
else Immutable in
let lam =
diff --git a/bytecomp/translmod.ml b/bytecomp/translmod.ml
index 7d0887464e..de0392b399 100644
--- a/bytecomp/translmod.ml
+++ b/bytecomp/translmod.ml
@@ -45,8 +45,8 @@ let field_path path field =
(* Compile type extensions *)
-let prim_set_oo_id =
- Pccall (Primitive.simple ~name:"caml_set_oo_id" ~arity:1 ~alloc:false)
+let prim_fresh_oo_id =
+ Pccall (Primitive.simple ~name:"caml_fresh_oo_id" ~arity:1 ~alloc:false)
let transl_extension_constructor env path ext =
let name =
@@ -56,10 +56,9 @@ let transl_extension_constructor env path ext =
in
match ext.ext_kind with
Text_decl(args, ret) ->
- Lprim(prim_set_oo_id,
- [Lprim(Pmakeblock(Obj.object_tag, Mutable),
- [Lconst(Const_base(Const_string (name,None)));
- Lconst(Const_base(Const_int 0))])])
+ Lprim (Pmakeblock (Obj.object_tag, Immutable),
+ [Lconst (Const_base (Const_string (name, None)));
+ Lprim (prim_fresh_oo_id, [Lconst (Const_base (Const_int 0))])])
| Text_rebind(path, lid) ->
transl_path ~loc:ext.ext_loc env path
diff --git a/byterun/.ignore b/byterun/.ignore
deleted file mode 100644
index be5833e52d..0000000000
--- a/byterun/.ignore
+++ /dev/null
@@ -1,13 +0,0 @@
-primitives
-prims.c
-ocamlrun
-ocamlrun.exe
-ocamlrund
-ocamlrund.exe
-ld.conf
-interp.a.lst
-*.[sd]obj
-*.lib
-.gdb_history
-*.d.c
-*.pic.c
diff --git a/byterun/caml/.ignore b/byterun/caml/.ignore
deleted file mode 100644
index a4d2753904..0000000000
--- a/byterun/caml/.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-jumptbl.h
-opnames.h
-version.h
diff --git a/byterun/caml/fix_code.h b/byterun/caml/fix_code.h
index 419ad327a5..c639894523 100644
--- a/byterun/caml/fix_code.h
+++ b/byterun/caml/fix_code.h
@@ -25,7 +25,7 @@ extern code_t caml_start_code;
extern asize_t caml_code_size;
extern unsigned char * caml_saved_code;
-void caml_init_code_fragments();
+void caml_init_code_fragments(void);
void caml_load_code (int fd, asize_t len);
void caml_fixup_endianness (code_t code, asize_t len);
void caml_set_instruction (code_t pos, opcode_t instr);
diff --git a/byterun/caml/mlvalues.h b/byterun/caml/mlvalues.h
index 0198f67ab4..e578009c8d 100644
--- a/byterun/caml/mlvalues.h
+++ b/byterun/caml/mlvalues.h
@@ -225,6 +225,8 @@ CAMLextern value caml_hash_variant(char const * tag);
#define String_tag 252
#define String_val(x) ((char *) Bp_val(x))
CAMLextern mlsize_t caml_string_length (value); /* size in bytes */
+CAMLextern int caml_string_is_c_safe (value);
+ /* true if string contains no '\0' null characters */
/* Floating-point numbers. */
#define Double_tag 253
diff --git a/byterun/fix_code.c b/byterun/fix_code.c
index 99a400cb83..0d7c8cbaf9 100644
--- a/byterun/fix_code.c
+++ b/byterun/fix_code.c
@@ -35,7 +35,7 @@ unsigned char * caml_saved_code;
/* Read the main bytecode block from a file */
-void caml_init_code_fragments() {
+void caml_init_code_fragments(void) {
struct code_fragment * cf;
/* Register the code in the table of code fragments */
cf = caml_stat_alloc(sizeof(struct code_fragment));
@@ -96,7 +96,7 @@ char ** caml_instr_table;
char * caml_instr_base;
static int* opcode_nargs = NULL;
-int* caml_init_opcode_nargs()
+int* caml_init_opcode_nargs(void)
{
if( opcode_nargs == NULL ){
int* l = (int*)caml_stat_alloc(sizeof(int) * FIRST_UNIMPLEMENTED_OP);
diff --git a/byterun/floats.c b/byterun/floats.c
index 983833659d..4fa575ef3b 100644
--- a/byterun/floats.c
+++ b/byterun/floats.c
@@ -225,6 +225,13 @@ CAMLprim value caml_frexp_float(value f)
CAMLreturn (res);
}
+// Seems dumb but intnat could not correspond to int type.
+double caml_ldexp_float_unboxed(double f, intnat i)
+{
+ return ldexp(f, i);
+}
+
+
CAMLprim value caml_ldexp_float(value f, value i)
{
return caml_copy_double(ldexp(Double_val(f), Int_val(i)));
@@ -438,25 +445,34 @@ CAMLprim value caml_gt_float(value f, value g)
return Val_bool(Double_val(f) > Double_val(g));
}
-CAMLprim value caml_float_compare(value vf, value vg)
+intnat caml_float_compare_unboxed(double f, double g)
{
- double f = Double_val(vf);
- double g = Double_val(vg);
/* If one or both of f and g is NaN, order according to the convention
NaN = NaN and NaN < x for all other floats x. */
/* This branchless implementation is from GPR#164.
Note that [f == f] if and only if f is not NaN. */
- return Val_int((f > g) - (f < g) + (f == f) - (g == g));
+ return (f > g) - (f < g) + (f == f) - (g == g);
+}
+
+CAMLprim value caml_float_compare(value vf, value vg)
+{
+ return Val_int(caml_float_compare_unboxed(Double_val(vf),Double_val(vg)));
}
enum { FP_normal, FP_subnormal, FP_zero, FP_infinite, FP_nan };
-CAMLprim value caml_classify_float(value vd)
+value caml_classify_float_unboxed(double vd)
{
/* Cygwin 1.3 has problems with fpclassify (PR#1293), so don't use it */
/* FIXME Cygwin 1.3 is ancient! Revisit this decision. */
+
+ /* Informal benchmarking (see GPR#272) suggests that the emulation
+ version is faster than calling the libc. We could switch to it,
+ and also provide an even faster version for 64-bit systems as
+ suggested by XL. -- AF */
+
#if defined(fpclassify) && !defined(__CYGWIN__) && !defined(__MINGW32__)
- switch (fpclassify(Double_val(vd))) {
+ switch (fpclassify(vd)) {
case FP_NAN:
return Val_int(FP_nan);
case FP_INFINITE:
@@ -472,7 +488,7 @@ CAMLprim value caml_classify_float(value vd)
union double_as_two_int32 u;
uint32_t h, l;
- u.d = Double_val(vd);
+ u.d = vd;
h = u.i.h; l = u.i.l;
l = l | (h & 0xFFFFF);
h = h & 0x7FF00000;
@@ -490,6 +506,11 @@ CAMLprim value caml_classify_float(value vd)
#endif
}
+CAMLprim value caml_classify_float(value vd)
+{
+ return caml_classify_float_unboxed(Double_val(vd));
+}
+
/* The [caml_init_ieee_float] function should initialize floating-point hardware
so that it behaves as much as possible like the IEEE standard.
In particular, return special numbers like Infinity and NaN instead
diff --git a/byterun/ints.c b/byterun/ints.c
index bfc622fcf5..8f96e55248 100644
--- a/byterun/ints.c
+++ b/byterun/ints.c
@@ -293,18 +293,26 @@ CAMLprim value caml_int32_of_int(value v)
CAMLprim value caml_int32_to_int(value v)
{ return Val_long(Int32_val(v)); }
+int32_t caml_int32_of_float_unboxed(double x)
+{ return x; }
+
CAMLprim value caml_int32_of_float(value v)
{ return caml_copy_int32((int32_t)(Double_val(v))); }
+double caml_int32_to_float_unboxed(int32_t x)
+{ return x; }
+
CAMLprim value caml_int32_to_float(value v)
{ return caml_copy_double((double)(Int32_val(v))); }
+intnat caml_int32_compare_unboxed(int32_t i1, int32_t i2)
+{
+ return (i1 > i2) - (i1 < i2);
+}
+
CAMLprim value caml_int32_compare(value v1, value v2)
{
- int32_t i1 = Int32_val(v1);
- int32_t i2 = Int32_val(v2);
- int res = (i1 > i2) - (i1 < i2);
- return Val_int(res);
+ return Val_int(caml_int32_compare_unboxed(Int32_val(v1),Int32_val(v2)));
}
CAMLprim value caml_int32_format(value fmt, value arg)
@@ -320,18 +328,28 @@ CAMLprim value caml_int32_of_string(value s)
return caml_copy_int32(parse_intnat(s, 32, INT32_ERRMSG));
}
-CAMLprim value caml_int32_bits_of_float(value vd)
+int32_t caml_int32_bits_of_float_unboxed(double d)
{
union { float d; int32_t i; } u;
- u.d = Double_val(vd);
- return caml_copy_int32(u.i);
+ u.d = d;
+ return u.i;
}
-CAMLprim value caml_int32_float_of_bits(value vi)
+double caml_int32_float_of_bits_unboxed(int32_t i)
{
union { float d; int32_t i; } u;
- u.i = Int32_val(vi);
- return caml_copy_double(u.d);
+ u.i = i;
+ return u.d;
+}
+
+CAMLprim value caml_int32_bits_of_float(value vd)
+{
+ return caml_copy_int32(caml_int32_bits_of_float_unboxed(Double_val(vd)));
+}
+
+CAMLprim value caml_int32_float_of_bits(value vi)
+{
+ return caml_copy_double(caml_int32_float_of_bits_unboxed(Int32_val(vi)));
}
/* 64-bit integers */
@@ -499,9 +517,15 @@ CAMLprim value caml_int64_of_int(value v)
CAMLprim value caml_int64_to_int(value v)
{ return Val_long((intnat) (Int64_val(v))); }
+int64_t caml_int64_of_float_unboxed(double x)
+{ return x; }
+
CAMLprim value caml_int64_of_float(value v)
{ return caml_copy_int64((int64_t) (Double_val(v))); }
+double caml_int64_to_float_unboxed(int64_t x)
+{ return x; }
+
CAMLprim value caml_int64_to_float(value v)
{ return caml_copy_double((double) (Int64_val(v))); }
@@ -517,11 +541,14 @@ CAMLprim value caml_int64_of_nativeint(value v)
CAMLprim value caml_int64_to_nativeint(value v)
{ return caml_copy_nativeint((intnat) (Int64_val(v))); }
+intnat caml_int64_compare_unboxed(int64_t i1, int64_t i2)
+{
+ return (i1 > i2) - (i1 < i2);
+}
+
CAMLprim value caml_int64_compare(value v1, value v2)
{
- int64_t i1 = Int64_val(v1);
- int64_t i2 = Int64_val(v2);
- return Val_int((i1 > i2) - (i1 < i2));
+ return Val_int(caml_int64_compare_unboxed(Int64_val(v1),Int64_val(v2)));
}
CAMLprim value caml_int64_format(value fmt, value arg)
@@ -569,24 +596,34 @@ CAMLprim value caml_int64_of_string(value s)
return caml_copy_int64(res);
}
-CAMLprim value caml_int64_bits_of_float(value vd)
+int64_t caml_int64_bits_of_float_unboxed(double d)
{
union { double d; int64_t i; int32_t h[2]; } u;
- u.d = Double_val(vd);
+ u.d = d;
#if defined(__arm__) && !defined(__ARM_EABI__)
{ int32_t t = u.h[0]; u.h[0] = u.h[1]; u.h[1] = t; }
#endif
- return caml_copy_int64(u.i);
+ return u.i;
}
-CAMLprim value caml_int64_float_of_bits(value vi)
+double caml_int64_float_of_bits_unboxed(int64_t i)
{
union { double d; int64_t i; int32_t h[2]; } u;
- u.i = Int64_val(vi);
+ u.i = i;
#if defined(__arm__) && !defined(__ARM_EABI__)
{ int32_t t = u.h[0]; u.h[0] = u.h[1]; u.h[1] = t; }
#endif
- return caml_copy_double(u.d);
+ return u.d;
+}
+
+CAMLprim value caml_int64_bits_of_float(value vd)
+{
+ return caml_copy_int64(caml_int64_bits_of_float_unboxed(Double_val(vd)));
+}
+
+CAMLprim value caml_int64_float_of_bits(value vi)
+{
+ return caml_copy_double(caml_int64_float_of_bits_unboxed(Int64_val(vi)));
}
/* Native integers */
@@ -746,9 +783,15 @@ CAMLprim value caml_nativeint_of_int(value v)
CAMLprim value caml_nativeint_to_int(value v)
{ return Val_long(Nativeint_val(v)); }
+intnat caml_nativeint_of_float_unboxed(double x)
+{ return x; }
+
CAMLprim value caml_nativeint_of_float(value v)
{ return caml_copy_nativeint((intnat)(Double_val(v))); }
+double caml_nativeint_to_float_unboxed(intnat x)
+{ return x; }
+
CAMLprim value caml_nativeint_to_float(value v)
{ return caml_copy_double((double)(Nativeint_val(v))); }
@@ -758,12 +801,15 @@ CAMLprim value caml_nativeint_of_int32(value v)
CAMLprim value caml_nativeint_to_int32(value v)
{ return caml_copy_int32(Nativeint_val(v)); }
+intnat caml_nativeint_compare_unboxed(intnat i1, intnat i2)
+{
+ return (i1 > i2) - (i1 < i2);
+}
+
CAMLprim value caml_nativeint_compare(value v1, value v2)
{
- intnat i1 = Nativeint_val(v1);
- intnat i2 = Nativeint_val(v2);
- int res = (i1 > i2) - (i1 < i2);
- return Val_int(res);
+ return Val_int(caml_nativeint_compare_unboxed(Nativeint_val(v1),
+ Nativeint_val(v2)));
}
CAMLprim value caml_nativeint_format(value fmt, value arg)
diff --git a/byterun/obj.c b/byterun/obj.c
index 27b50d9a3d..ab5b599705 100644
--- a/byterun/obj.c
+++ b/byterun/obj.c
@@ -245,6 +245,12 @@ CAMLprim value caml_set_oo_id (value obj) {
return obj;
}
+CAMLprim value caml_fresh_oo_id (value v) {
+ v = oo_last_id;
+ oo_last_id += 2;
+ return v;
+}
+
CAMLprim value caml_int_as_pointer (value n) {
return n - 1;
}
diff --git a/byterun/str.c b/byterun/str.c
index 885772f748..2ec18297c6 100644
--- a/byterun/str.c
+++ b/byterun/str.c
@@ -40,6 +40,11 @@ CAMLprim value caml_ml_string_length(value s)
return Val_long(temp - Byte (s, temp));
}
+CAMLexport int caml_string_is_c_safe (value s)
+{
+ return strlen(String_val(s)) == caml_string_length(s);
+}
+
/* [len] is a value that represents a number of bytes (chars) */
CAMLprim value caml_create_string(value len)
{
diff --git a/byterun/sys.c b/byterun/sys.c
index 250d9683e0..304e91661d 100644
--- a/byterun/sys.c
+++ b/byterun/sys.c
@@ -95,6 +95,16 @@ CAMLexport void caml_sys_io_error(value arg)
}
}
+/* Check that [name] can safely be used as a file path */
+
+static void caml_sys_check_path(value name)
+{
+ if (! caml_string_is_c_safe(name)) {
+ errno = ENOENT;
+ caml_sys_error(name);
+ }
+}
+
CAMLprim value caml_sys_exit(value retcode)
{
if ((caml_verb_gc & 0x400) != 0) {
@@ -141,6 +151,7 @@ CAMLprim value caml_sys_open(value path, value vflags, value vperm)
int fd, flags, perm;
char * p;
+ caml_sys_check_path(path);
p = caml_strdup(String_val(path));
flags = caml_convert_flag_list(vflags, sys_open_flags);
perm = Int_val(vperm);
@@ -176,6 +187,7 @@ CAMLprim value caml_sys_file_exists(value name)
char * p;
int ret;
+ if (! caml_string_is_c_safe(name)) return Val_false;
p = caml_strdup(String_val(name));
caml_enter_blocking_section();
#ifdef _WIN32
@@ -200,6 +212,7 @@ CAMLprim value caml_sys_is_directory(value name)
char * p;
int ret;
+ caml_sys_check_path(name);
p = caml_strdup(String_val(name));
caml_enter_blocking_section();
#ifdef _WIN32
@@ -223,6 +236,7 @@ CAMLprim value caml_sys_remove(value name)
CAMLparam1(name);
char * p;
int ret;
+ caml_sys_check_path(name);
p = caml_strdup(String_val(name));
caml_enter_blocking_section();
ret = unlink(p);
@@ -237,6 +251,8 @@ CAMLprim value caml_sys_rename(value oldname, value newname)
char * p_old;
char * p_new;
int ret;
+ caml_sys_check_path(oldname);
+ caml_sys_check_path(newname);
p_old = caml_strdup(String_val(oldname));
p_new = caml_strdup(String_val(newname));
caml_enter_blocking_section();
@@ -254,6 +270,7 @@ CAMLprim value caml_sys_chdir(value dirname)
CAMLparam1(dirname);
char * p;
int ret;
+ caml_sys_check_path(dirname);
p = caml_strdup(String_val(dirname));
caml_enter_blocking_section();
ret = chdir(p);
@@ -278,6 +295,7 @@ CAMLprim value caml_sys_getenv(value var)
{
char * res;
+ if (! caml_string_is_c_safe(var)) caml_raise_not_found();
res = getenv(String_val(var));
if (res == 0) caml_raise_not_found();
return caml_copy_string(res);
@@ -334,14 +352,14 @@ CAMLprim value caml_sys_system_command(value command)
CAMLreturn (Val_int(retcode));
}
-CAMLprim value caml_sys_time(value unit)
+double caml_sys_time_unboxed(value unit)
{
#ifdef HAS_GETRUSAGE
struct rusage ru;
getrusage (RUSAGE_SELF, &ru);
- return caml_copy_double (ru.ru_utime.tv_sec + ru.ru_utime.tv_usec / 1e6
- + ru.ru_stime.tv_sec + ru.ru_stime.tv_usec / 1e6);
+ return ru.ru_utime.tv_sec + ru.ru_utime.tv_usec / 1e6
+ + ru.ru_stime.tv_sec + ru.ru_stime.tv_usec / 1e6;
#else
#ifdef HAS_TIMES
#ifndef CLK_TCK
@@ -353,14 +371,19 @@ CAMLprim value caml_sys_time(value unit)
#endif
struct tms t;
times(&t);
- return caml_copy_double((double)(t.tms_utime + t.tms_stime) / CLK_TCK);
+ return (double)(t.tms_utime + t.tms_stime) / CLK_TCK;
#else
/* clock() is standard ANSI C */
- return caml_copy_double((double)clock() / CLOCKS_PER_SEC);
+ return (double)clock() / CLOCKS_PER_SEC;
#endif
#endif
}
+CAMLprim value caml_sys_time(value unit)
+{
+ return caml_copy_double(caml_sys_time_unboxed(unit));
+}
+
#ifdef _WIN32
extern int caml_win32_random_seed (intnat data[16]);
#endif
@@ -474,6 +497,7 @@ CAMLprim value caml_sys_read_directory(value path)
char * p;
int ret;
+ caml_sys_check_path(path);
caml_ext_table_init(&tbl, 50);
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
diff --git a/config/.ignore b/config/.ignore
deleted file mode 100644
index 259ce3f6e3..0000000000
--- a/config/.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-m.h
-s.h
-Makefile
diff --git a/config/auto-aux/.ignore b/config/auto-aux/.ignore
deleted file mode 100644
index cb1ca8a9f0..0000000000
--- a/config/auto-aux/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-camlp4_config.ml
diff --git a/debugger/.ignore b/debugger/.ignore
deleted file mode 100644
index 45eec7cceb..0000000000
--- a/debugger/.ignore
+++ /dev/null
@@ -1,7 +0,0 @@
-lexer.ml
-parser.ml
-parser.mli
-ocamldebug
-ocamldebug.exe
-dynlink.ml
-dynlink.mli
diff --git a/emacs/.ignore b/emacs/.ignore
deleted file mode 100644
index ba5f96cd34..0000000000
--- a/emacs/.ignore
+++ /dev/null
@@ -1,2 +0,0 @@
-ocamltags
-*.elc
diff --git a/lex/.ignore b/lex/.ignore
deleted file mode 100644
index 9f4f308da4..0000000000
--- a/lex/.ignore
+++ /dev/null
@@ -1,6 +0,0 @@
-parser.ml
-parser.mli
-lexer.ml
-ocamllex
-ocamllex.opt
-parser.output
diff --git a/ocamldoc/.ignore b/ocamldoc/.ignore
deleted file mode 100644
index 720ee641a5..0000000000
--- a/ocamldoc/.ignore
+++ /dev/null
@@ -1,16 +0,0 @@
-ocamldoc
-ocamldoc.opt
-odoc_crc.ml
-odoc_lexer.ml
-odoc_ocamlhtml.ml
-odoc_parser.ml
-odoc_parser.mli
-odoc_see_lexer.ml
-odoc_text_lexer.ml
-odoc_text_parser.ml
-odoc_text_parser.mli
-stdlib_man
-*.output
-test_stdlib
-test_latex
-test
diff --git a/otherlibs/dynlink/.ignore b/otherlibs/dynlink/.ignore
deleted file mode 100644
index 5ea9775e1d..0000000000
--- a/otherlibs/dynlink/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-extract_crc
diff --git a/otherlibs/systhreads/.ignore b/otherlibs/systhreads/.ignore
deleted file mode 100644
index 71702b88e7..0000000000
--- a/otherlibs/systhreads/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-thread.ml
diff --git a/otherlibs/threads/.ignore b/otherlibs/threads/.ignore
deleted file mode 100644
index fb2df562de..0000000000
--- a/otherlibs/threads/.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-marshal.mli
-pervasives.mli
-unix.mli
diff --git a/otherlibs/threads/pervasives.ml b/otherlibs/threads/pervasives.ml
index 8f70e310a7..f5fc1a7f3f 100644
--- a/otherlibs/threads/pervasives.ml
+++ b/otherlibs/threads/pervasives.ml
@@ -154,7 +154,8 @@ external copysign : float -> float -> float
external mod_float : float -> float -> float = "caml_fmod_float" "fmod"
[@@unboxed] [@@noalloc]
external frexp : float -> float * int = "caml_frexp_float"
-external ldexp : float -> int -> float = "caml_ldexp_float"
+external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
+ "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
external modf : float -> float * float = "caml_modf_float"
external float : int -> float = "%floatofint"
external float_of_int : int -> float = "%floatofint"
@@ -180,7 +181,8 @@ type fpclass =
| FP_zero
| FP_infinite
| FP_nan
-external classify_float : float -> fpclass = "caml_classify_float"
+external classify_float : (float [@unboxed]) -> fpclass =
+ "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc]
(* String and byte sequence operations -- more in modules String and Bytes *)
diff --git a/otherlibs/unix/access.c b/otherlibs/unix/access.c
index 28c26b820d..e5e8069e75 100644
--- a/otherlibs/unix/access.c
+++ b/otherlibs/unix/access.c
@@ -46,6 +46,7 @@ CAMLprim value unix_access(value path, value perms)
char * p;
int ret, cv_flags;
+ caml_unix_check_path(path, "access");
cv_flags = convert_flag_list(perms, access_permission_table);
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
diff --git a/otherlibs/unix/chdir.c b/otherlibs/unix/chdir.c
index 247321119f..3ea9f57445 100644
--- a/otherlibs/unix/chdir.c
+++ b/otherlibs/unix/chdir.c
@@ -21,6 +21,7 @@ CAMLprim value unix_chdir(value path)
CAMLparam1(path);
char * p;
int ret;
+ caml_unix_check_path(path, "chdir");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = chdir(p);
diff --git a/otherlibs/unix/chmod.c b/otherlibs/unix/chmod.c
index 2d3f30fe60..191047c0f9 100644
--- a/otherlibs/unix/chmod.c
+++ b/otherlibs/unix/chmod.c
@@ -23,6 +23,7 @@ CAMLprim value unix_chmod(value path, value perm)
CAMLparam2(path, perm);
char * p;
int ret;
+ caml_unix_check_path(path, "chmod");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = chmod(p, Int_val(perm));
diff --git a/otherlibs/unix/chown.c b/otherlibs/unix/chown.c
index 6c9e896a4e..4997dd4994 100644
--- a/otherlibs/unix/chown.c
+++ b/otherlibs/unix/chown.c
@@ -21,6 +21,7 @@ CAMLprim value unix_chown(value path, value uid, value gid)
CAMLparam1(path);
char * p;
int ret;
+ caml_unix_check_path(path, "chown");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = chown(p, Int_val(uid), Int_val(gid));
diff --git a/otherlibs/unix/chroot.c b/otherlibs/unix/chroot.c
index c30a0da9cd..55f00817f7 100644
--- a/otherlibs/unix/chroot.c
+++ b/otherlibs/unix/chroot.c
@@ -21,6 +21,7 @@ CAMLprim value unix_chroot(value path)
CAMLparam1(path);
char * p;
int ret;
+ caml_unix_check_path(path, "chroot");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = chroot(p);
diff --git a/otherlibs/unix/execv.c b/otherlibs/unix/execv.c
index 9a77548917..026c11bc02 100644
--- a/otherlibs/unix/execv.c
+++ b/otherlibs/unix/execv.c
@@ -15,11 +15,10 @@
#include <caml/memory.h>
#include "unixsupport.h"
-extern char ** cstringvect();
-
CAMLprim value unix_execv(value path, value args)
{
char ** argv;
+ caml_unix_check_path(path, "execv");
argv = cstringvect(args);
(void) execv(String_val(path), argv);
stat_free((char *) argv);
diff --git a/otherlibs/unix/execve.c b/otherlibs/unix/execve.c
index 92171c2d37..539e8086aa 100644
--- a/otherlibs/unix/execve.c
+++ b/otherlibs/unix/execve.c
@@ -15,12 +15,11 @@
#include <caml/memory.h>
#include "unixsupport.h"
-extern char ** cstringvect();
-
CAMLprim value unix_execve(value path, value args, value env)
{
char ** argv;
char ** envp;
+ caml_unix_check_path(path, "execve");
argv = cstringvect(args);
envp = cstringvect(env);
(void) execve(String_val(path), argv, envp);
diff --git a/otherlibs/unix/execvp.c b/otherlibs/unix/execvp.c
index ce6900abf1..4a068eb735 100644
--- a/otherlibs/unix/execvp.c
+++ b/otherlibs/unix/execvp.c
@@ -15,7 +15,6 @@
#include <caml/memory.h>
#include "unixsupport.h"
-extern char ** cstringvect();
#ifndef _WIN32
extern char ** environ;
#endif
@@ -23,6 +22,7 @@ extern char ** environ;
CAMLprim value unix_execvp(value path, value args)
{
char ** argv;
+ caml_unix_check_path(path, "execvp");
argv = cstringvect(args);
(void) execvp(String_val(path), argv);
stat_free((char *) argv);
@@ -35,6 +35,7 @@ CAMLprim value unix_execvpe(value path, value args, value env)
{
char ** argv;
char ** saved_environ;
+ caml_unix_check_path(path, "execvpe");
argv = cstringvect(args);
saved_environ = environ;
environ = cstringvect(env);
diff --git a/otherlibs/unix/getaddrinfo.c b/otherlibs/unix/getaddrinfo.c
index 2817934331..a661682c25 100644
--- a/otherlibs/unix/getaddrinfo.c
+++ b/otherlibs/unix/getaddrinfo.c
@@ -62,6 +62,9 @@ CAMLprim value unix_getaddrinfo(value vnode, value vserv, value vopts)
struct addrinfo * res, * r;
int retcode;
+ if (! (caml_string_is_c_safe(vnode) && caml_string_is_c_safe(vserv)))
+ return Val_int(0);
+
/* Extract "node" parameter */
if (caml_string_length(vnode) == 0) {
node = NULL;
diff --git a/otherlibs/unix/gethost.c b/otherlibs/unix/gethost.c
index 0f04fb907a..a640e98352 100644
--- a/otherlibs/unix/gethost.c
+++ b/otherlibs/unix/gethost.c
@@ -128,9 +128,11 @@ CAMLprim value unix_gethostbyname(value name)
#if HAS_GETHOSTBYNAME_R
struct hostent h;
char buffer[NETDB_BUFFER_SIZE];
- int h_errno;
+ int err;
#endif
+ if (! caml_string_is_c_safe(name)) raise_not_found();
+
#if HAS_GETHOSTBYNAME_R || GETHOSTBYNAME_IS_REENTRANT
hostname = caml_strdup(String_val(name));
#else
@@ -140,14 +142,14 @@ CAMLprim value unix_gethostbyname(value name)
#if HAS_GETHOSTBYNAME_R == 5
{
enter_blocking_section();
- hp = gethostbyname_r(hostname, &h, buffer, sizeof(buffer), &h_errno);
+ hp = gethostbyname_r(hostname, &h, buffer, sizeof(buffer), &err);
leave_blocking_section();
}
#elif HAS_GETHOSTBYNAME_R == 6
{
int rc;
enter_blocking_section();
- rc = gethostbyname_r(hostname, &h, buffer, sizeof(buffer), &hp, &h_errno);
+ rc = gethostbyname_r(hostname, &h, buffer, sizeof(buffer), &hp, &err);
leave_blocking_section();
if (rc != 0) hp = NULL;
}
diff --git a/otherlibs/unix/getproto.c b/otherlibs/unix/getproto.c
index b89cbba411..cc959d46c1 100644
--- a/otherlibs/unix/getproto.c
+++ b/otherlibs/unix/getproto.c
@@ -42,6 +42,7 @@ static value alloc_proto_entry(struct protoent *entry)
CAMLprim value unix_getprotobyname(value name)
{
struct protoent * entry;
+ if (! caml_string_is_c_safe(name)) raise_not_found();
entry = getprotobyname(String_val(name));
if (entry == (struct protoent *) NULL) raise_not_found();
return alloc_proto_entry(entry);
diff --git a/otherlibs/unix/getserv.c b/otherlibs/unix/getserv.c
index deb5f14729..8c353a1f0c 100644
--- a/otherlibs/unix/getserv.c
+++ b/otherlibs/unix/getserv.c
@@ -48,6 +48,8 @@ static value alloc_service_entry(struct servent *entry)
CAMLprim value unix_getservbyname(value name, value proto)
{
struct servent * entry;
+ if (! (caml_string_is_c_safe(name) && caml_string_is_c_safe(proto)))
+ raise_not_found();
entry = getservbyname(String_val(name), String_val(proto));
if (entry == (struct servent *) NULL) raise_not_found();
return alloc_service_entry(entry);
@@ -56,6 +58,7 @@ CAMLprim value unix_getservbyname(value name, value proto)
CAMLprim value unix_getservbyport(value port, value proto)
{
struct servent * entry;
+ if (! caml_string_is_c_safe(proto)) raise_not_found();
entry = getservbyport(htons(Int_val(port)), String_val(proto));
if (entry == (struct servent *) NULL) raise_not_found();
return alloc_service_entry(entry);
diff --git a/otherlibs/unix/link.c b/otherlibs/unix/link.c
index 0ec42f5fe9..e0819ced77 100644
--- a/otherlibs/unix/link.c
+++ b/otherlibs/unix/link.c
@@ -22,6 +22,8 @@ CAMLprim value unix_link(value path1, value path2)
char * p1;
char * p2;
int ret;
+ caml_unix_check_path(path1, "link");
+ caml_unix_check_path(path2, "link");
p1 = caml_strdup(String_val(path1));
p2 = caml_strdup(String_val(path2));
caml_enter_blocking_section();
diff --git a/otherlibs/unix/mkdir.c b/otherlibs/unix/mkdir.c
index 6b9c76e6f0..5b6599b766 100644
--- a/otherlibs/unix/mkdir.c
+++ b/otherlibs/unix/mkdir.c
@@ -23,6 +23,7 @@ CAMLprim value unix_mkdir(value path, value perm)
CAMLparam2(path, perm);
char * p;
int ret;
+ caml_unix_check_path(path, "mkdir");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = mkdir(p, Int_val(perm));
diff --git a/otherlibs/unix/mkfifo.c b/otherlibs/unix/mkfifo.c
index 074813856d..1d025325fc 100644
--- a/otherlibs/unix/mkfifo.c
+++ b/otherlibs/unix/mkfifo.c
@@ -26,6 +26,7 @@ CAMLprim value unix_mkfifo(value path, value mode)
CAMLparam2(path, mode);
char * p;
int ret;
+ caml_unix_check_path(path, "mkfifo");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = mkfifo(p, Int_val(mode));
@@ -48,6 +49,7 @@ CAMLprim value unix_mkfifo(value path, value mode)
CAMLparam2(path, mode);
char * p;
int ret;
+ caml_unix_check_path(path, "mkfifo");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = mknod(p, (Int_val(mode) & 07777) | S_IFIFO, 0);
diff --git a/otherlibs/unix/open.c b/otherlibs/unix/open.c
index 1bad2c5b91..87a0c72436 100644
--- a/otherlibs/unix/open.c
+++ b/otherlibs/unix/open.c
@@ -62,6 +62,7 @@ CAMLprim value unix_open(value path, value flags, value perm)
int fd, cv_flags;
char * p;
+ caml_unix_check_path(path, "open");
cv_flags = convert_flag_list(flags, open_flag_table);
p = caml_strdup(String_val(path));
/* open on a named FIFO can block (PR#1533) */
diff --git a/otherlibs/unix/opendir.c b/otherlibs/unix/opendir.c
index bdf031b35f..1279becfac 100644
--- a/otherlibs/unix/opendir.c
+++ b/otherlibs/unix/opendir.c
@@ -30,6 +30,7 @@ CAMLprim value unix_opendir(value path)
value res;
char * p;
+ caml_unix_check_path(path, "opendir");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
d = opendir(p);
diff --git a/otherlibs/unix/putenv.c b/otherlibs/unix/putenv.c
index ccb8f1abef..00647cb84f 100644
--- a/otherlibs/unix/putenv.c
+++ b/otherlibs/unix/putenv.c
@@ -13,6 +13,7 @@
#include <stdlib.h>
#include <string.h>
+#include <errno.h>
#include <caml/fail.h>
#include <caml/memory.h>
@@ -26,8 +27,11 @@ CAMLprim value unix_putenv(value name, value val)
{
mlsize_t namelen = string_length(name);
mlsize_t vallen = string_length(val);
- char * s = (char *) caml_stat_alloc(namelen + 1 + vallen + 1);
+ char * s;
+ if (! (caml_string_is_c_safe(name) && caml_string_is_c_safe(val)))
+ unix_error(EINVAL, "putenv", name);
+ s = (char *) caml_stat_alloc(namelen + 1 + vallen + 1);
memmove (s, String_val(name), namelen);
s[namelen] = '=';
memmove (s + namelen + 1, String_val(val), vallen);
diff --git a/otherlibs/unix/rename.c b/otherlibs/unix/rename.c
index 78e0846cd2..e3117d059c 100644
--- a/otherlibs/unix/rename.c
+++ b/otherlibs/unix/rename.c
@@ -23,6 +23,8 @@ CAMLprim value unix_rename(value path1, value path2)
char * p1;
char * p2;
int ret;
+ caml_unix_check_path(path1, "rename");
+ caml_unix_check_path(path2, "rename");
p1 = caml_strdup(String_val(path1));
p2 = caml_strdup(String_val(path2));
caml_enter_blocking_section();
diff --git a/otherlibs/unix/rmdir.c b/otherlibs/unix/rmdir.c
index 20359ce6cb..a1d3a6145f 100644
--- a/otherlibs/unix/rmdir.c
+++ b/otherlibs/unix/rmdir.c
@@ -21,6 +21,7 @@ CAMLprim value unix_rmdir(value path)
CAMLparam1(path);
char * p;
int ret;
+ caml_unix_check_path(path, "rmdir");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = rmdir(p);
diff --git a/otherlibs/unix/socketaddr.c b/otherlibs/unix/socketaddr.c
index 2eca8fc5b8..7b348a3027 100644
--- a/otherlibs/unix/socketaddr.c
+++ b/otherlibs/unix/socketaddr.c
@@ -65,6 +65,10 @@ void get_sockaddr(value mladr,
if (len >= sizeof(adr->s_unix.sun_path)) {
unix_error(ENAMETOOLONG, "", path);
}
+ /* "Abstract" sockets in Linux have names starting with '\0' */
+ if (Byte(path, 0) != 0 && ! caml_string_is_c_safe(path)) {
+ unix_error(ENOENT, "", path);
+ }
memmove (adr->s_unix.sun_path, String_val(path), len + 1);
*adr_len =
((char *)&(adr->s_unix.sun_path) - (char *)&(adr->s_unix))
@@ -105,7 +109,14 @@ value alloc_sockaddr(union sock_addr_union * adr /*in*/,
switch(adr->s_gen.sa_family) {
#ifndef _WIN32
case AF_UNIX:
- { value n = copy_string(adr->s_unix.sun_path);
+ { char * path;
+ value n;
+ /* PR#7039: harden against unnamed sockets */
+ if (adr_len > (char *)&(adr->s_unix.sun_path) - (char *)&(adr->s_unix))
+ path = adr->s_unix.sun_path;
+ else
+ path = "";
+ n = copy_string(path);
Begin_root (n);
res = alloc_small(1, 0);
Field(res,0) = n;
diff --git a/otherlibs/unix/stat.c b/otherlibs/unix/stat.c
index 52a00005c8..46f792014b 100644
--- a/otherlibs/unix/stat.c
+++ b/otherlibs/unix/stat.c
@@ -80,6 +80,7 @@ CAMLprim value unix_stat(value path)
int ret;
struct stat buf;
char * p;
+ caml_unix_check_path(path, "stat");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = stat(p, &buf);
@@ -97,6 +98,7 @@ CAMLprim value unix_lstat(value path)
int ret;
struct stat buf;
char * p;
+ caml_unix_check_path(path, "lstat");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
#ifdef HAS_SYMLINK
@@ -131,6 +133,7 @@ CAMLprim value unix_stat_64(value path)
int ret;
struct stat buf;
char * p;
+ caml_unix_check_path(path, "stat");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = stat(p, &buf);
@@ -146,6 +149,7 @@ CAMLprim value unix_lstat_64(value path)
int ret;
struct stat buf;
char * p;
+ caml_unix_check_path(path, "lstat");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
#ifdef HAS_SYMLINK
diff --git a/otherlibs/unix/symlink.c b/otherlibs/unix/symlink.c
index dbbd26655e..2fc403e74e 100644
--- a/otherlibs/unix/symlink.c
+++ b/otherlibs/unix/symlink.c
@@ -25,6 +25,8 @@ CAMLprim value unix_symlink(value path1, value path2)
char * p1;
char * p2;
int ret;
+ caml_unix_check_path(path1, "symlink");
+ caml_unix_check_path(path2, "symlink");
p1 = caml_strdup(String_val(path1));
p2 = caml_strdup(String_val(path2));
caml_enter_blocking_section();
diff --git a/otherlibs/unix/truncate.c b/otherlibs/unix/truncate.c
index 62683fcf88..cedb465ea7 100644
--- a/otherlibs/unix/truncate.c
+++ b/otherlibs/unix/truncate.c
@@ -29,6 +29,7 @@ CAMLprim value unix_truncate(value path, value len)
CAMLparam2(path, len);
char * p;
int ret;
+ caml_unix_check_path(path, "truncate");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = truncate(p, Long_val(len));
@@ -45,6 +46,7 @@ CAMLprim value unix_truncate_64(value path, value vlen)
char * p;
int ret;
file_offset len = File_offset_val(vlen);
+ caml_unix_check_path(path, "truncate");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = truncate(p, len);
diff --git a/otherlibs/unix/unixsupport.c b/otherlibs/unix/unixsupport.c
index 6c7171fdd6..d0d2282bfb 100644
--- a/otherlibs/unix/unixsupport.c
+++ b/otherlibs/unix/unixsupport.c
@@ -307,3 +307,9 @@ void uerror(char *cmdname, value cmdarg)
{
unix_error(errno, cmdname, cmdarg);
}
+
+void caml_unix_check_path(value path, char * cmdname)
+{
+ if (! caml_string_is_c_safe(path)) unix_error(ENOENT, cmdname, path);
+}
+
diff --git a/otherlibs/unix/unixsupport.h b/otherlibs/unix/unixsupport.h
index a6a690b834..99ac539537 100644
--- a/otherlibs/unix/unixsupport.h
+++ b/otherlibs/unix/unixsupport.h
@@ -35,10 +35,14 @@ CAMLnoreturn_start
extern void uerror (char * cmdname, value arg)
CAMLnoreturn_end;
+extern void caml_unix_check_path(value path, char * cmdname);
+
#define UNIX_BUFFER_SIZE 65536
#define DIR_Val(v) *((DIR **) &Field(v, 0))
+extern char ** cstringvect(value arg);
+
#ifdef __cplusplus
}
#endif
diff --git a/otherlibs/unix/unlink.c b/otherlibs/unix/unlink.c
index 687c69c26a..913497d320 100644
--- a/otherlibs/unix/unlink.c
+++ b/otherlibs/unix/unlink.c
@@ -21,6 +21,7 @@ CAMLprim value unix_unlink(value path)
CAMLparam1(path);
char * p;
int ret;
+ caml_unix_check_path(path, "unlink");
p = caml_strdup(String_val(path));
caml_enter_blocking_section();
ret = unlink(p);
diff --git a/otherlibs/win32graph/.ignore b/otherlibs/win32graph/.ignore
deleted file mode 100644
index 090a9a2537..0000000000
--- a/otherlibs/win32graph/.ignore
+++ /dev/null
@@ -1,2 +0,0 @@
-graphics.ml
-graphics.mli
diff --git a/otherlibs/win32unix/.ignore b/otherlibs/win32unix/.ignore
deleted file mode 100644
index 1eac7a1fe3..0000000000
--- a/otherlibs/win32unix/.ignore
+++ /dev/null
@@ -1,29 +0,0 @@
-unixLabels.ml*
-unix.mli
-unix.lib
-access.c
-addrofstr.c
-chdir.c
-chmod.c
-cst2constr.c
-cstringv.c
-envir.c
-execv.c
-execve.c
-execvp.c
-exit.c
-getaddrinfo.c
-getcwd.c
-gethost.c
-gethostname.c
-getnameinfo.c
-getproto.c
-getserv.c
-gmtime.c
-putenv.c
-rmdir.c
-socketaddr.c
-strofaddr.c
-time.c
-unlink.c
-utimes.c
diff --git a/otherlibs/win32unix/createprocess.c b/otherlibs/win32unix/createprocess.c
index 791acbb50d..f7e3b6bbba 100644
--- a/otherlibs/win32unix/createprocess.c
+++ b/otherlibs/win32unix/createprocess.c
@@ -26,6 +26,7 @@ value win_create_process_native(value cmd, value cmdline, value env,
char * exefile, * envp;
int flags;
+ caml_unix_check_path(cmd, "create_process");
exefile = search_exe_in_path(String_val(cmd));
if (env != Val_int(0)) {
envp = String_val(Field(env, 0));
diff --git a/otherlibs/win32unix/link.c b/otherlibs/win32unix/link.c
index 93d21508a2..f097835fb9 100644
--- a/otherlibs/win32unix/link.c
+++ b/otherlibs/win32unix/link.c
@@ -32,6 +32,8 @@ CAMLprim value unix_link(value path1, value path2)
(tCreateHardLink) GetProcAddress(hModKernel32, "CreateHardLinkA");
if (pCreateHardLink == NULL)
invalid_argument("Unix.link not implemented");
+ caml_unix_check_path(path1, "link");
+ caml_unix_check_path(path2, "link");
if (! pCreateHardLink(String_val(path2), String_val(path1), NULL)) {
win32_maperr(GetLastError());
uerror("link", path2);
diff --git a/otherlibs/win32unix/mkdir.c b/otherlibs/win32unix/mkdir.c
index 21bca10ce4..f61a56e826 100644
--- a/otherlibs/win32unix/mkdir.c
+++ b/otherlibs/win32unix/mkdir.c
@@ -17,6 +17,7 @@
CAMLprim value unix_mkdir(path, perm)
value path, perm;
{
+ caml_unix_check_path(path, "mkdir");
if (_mkdir(String_val(path)) == -1) uerror("mkdir", path);
return Val_unit;
}
diff --git a/otherlibs/win32unix/open.c b/otherlibs/win32unix/open.c
index f9e9df21ad..1ccc485007 100644
--- a/otherlibs/win32unix/open.c
+++ b/otherlibs/win32unix/open.c
@@ -39,6 +39,7 @@ CAMLprim value unix_open(value path, value flags, value perm)
SECURITY_ATTRIBUTES attr;
HANDLE h;
+ caml_unix_check_path(path, "open");
fileaccess = convert_flag_list(flags, open_access_flags);
sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE
| convert_flag_list(flags, open_share_flags);
diff --git a/otherlibs/win32unix/rename.c b/otherlibs/win32unix/rename.c
index ad46ead246..002197e7a7 100644
--- a/otherlibs/win32unix/rename.c
+++ b/otherlibs/win32unix/rename.c
@@ -20,6 +20,8 @@ CAMLprim value unix_rename(value path1, value path2)
static int supports_MoveFileEx = -1; /* don't know yet */
BOOL ok;
+ caml_unix_check_path(path1, "rename");
+ caml_unix_check_path(path2, "rename");
if (supports_MoveFileEx < 0) {
OSVERSIONINFO VersionInfo;
VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
diff --git a/otherlibs/win32unix/stat.c b/otherlibs/win32unix/stat.c
index 46fc9841b1..02edd3dd3e 100644
--- a/otherlibs/win32unix/stat.c
+++ b/otherlibs/win32unix/stat.c
@@ -66,6 +66,7 @@ CAMLprim value unix_stat(value path)
int ret;
struct _stati64 buf;
+ caml_unix_check_path(path, "stat");
ret = _stati64(String_val(path), &buf);
if (ret == -1) uerror("stat", path);
if (buf.st_size > Max_long) {
@@ -79,6 +80,8 @@ CAMLprim value unix_stat_64(value path)
{
int ret;
struct _stati64 buf;
+
+ caml_unix_check_path(path, "stat");
ret = _stati64(String_val(path), &buf);
if (ret == -1) uerror("stat", path);
return stat_aux(1, &buf);
diff --git a/otherlibs/win32unix/system.c b/otherlibs/win32unix/system.c
index 202dcd0813..5a16f9e14e 100644
--- a/otherlibs/win32unix/system.c
+++ b/otherlibs/win32unix/system.c
@@ -27,6 +27,7 @@ CAMLprim value win_system(cmd)
char *buf;
intnat len;
+ caml_unix_check_path(cmd, "system");
len = caml_string_length (cmd);
buf = caml_stat_alloc (len + 1);
memmove (buf, String_val (cmd), len + 1);
diff --git a/otherlibs/win32unix/unixsupport.c b/otherlibs/win32unix/unixsupport.c
index 85f220c329..ac9c394831 100644
--- a/otherlibs/win32unix/unixsupport.c
+++ b/otherlibs/win32unix/unixsupport.c
@@ -303,9 +303,12 @@ void unix_error(int errcode, char *cmdname, value cmdarg)
mlraise(res);
}
-void uerror(cmdname, cmdarg)
- char * cmdname;
- value cmdarg;
+void uerror(char * cmdname, value cmdarg)
{
unix_error(errno, cmdname, cmdarg);
}
+
+void caml_unix_check_path(value path, char * cmdname)
+{
+ if (! caml_string_is_c_safe(path)) unix_error(ENOENT, cmdname, path);
+}
diff --git a/otherlibs/win32unix/unixsupport.h b/otherlibs/win32unix/unixsupport.h
index b8efb27806..9ce0fc997b 100644
--- a/otherlibs/win32unix/unixsupport.h
+++ b/otherlibs/win32unix/unixsupport.h
@@ -59,7 +59,9 @@ extern void win32_maperr(DWORD errcode);
extern value unix_error_of_code (int errcode);
extern void unix_error (int errcode, char * cmdname, value arg);
extern void uerror (char * cmdname, value arg);
+extern void caml_unix_check_path(value path, char * cmdname);
extern value unix_freeze_buffer (value);
+extern char ** cstringvect(value arg);
/* Information stored in flags_fd, describing more precisely the socket
* and its status. The whole flags_fd is initialized to 0.
diff --git a/otherlibs/win32unix/windir.c b/otherlibs/win32unix/windir.c
index ef952aa902..35228c5d9f 100644
--- a/otherlibs/win32unix/windir.c
+++ b/otherlibs/win32unix/windir.c
@@ -18,8 +18,7 @@
#include <caml/fail.h>
#include "unixsupport.h"
-CAMLprim value win_findfirst(name)
- value name;
+CAMLprim value win_findfirst(value name)
{
HANDLE h;
value v;
@@ -27,6 +26,7 @@ CAMLprim value win_findfirst(name)
value valname = Val_unit;
value valh = Val_unit;
+ caml_unix_check_path(name, "opendir");
Begin_roots2 (valname,valh);
h = FindFirstFile(String_val(name),&fileinfo);
if (h == INVALID_HANDLE_VALUE) {
@@ -47,8 +47,7 @@ CAMLprim value win_findfirst(name)
return v;
}
-CAMLprim value win_findnext(valh)
- value valh;
+CAMLprim value win_findnext(value valh)
{
WIN32_FIND_DATA fileinfo;
BOOL retcode;
@@ -66,8 +65,7 @@ CAMLprim value win_findnext(valh)
return copy_string(fileinfo.cFileName);
}
-CAMLprim value win_findclose(valh)
- value valh;
+CAMLprim value win_findclose(value valh)
{
if (! FindClose(Handle_val(valh))) {
win32_maperr(GetLastError());
diff --git a/parsing/.ignore b/parsing/.ignore
deleted file mode 100644
index 5602bf8a2d..0000000000
--- a/parsing/.ignore
+++ /dev/null
@@ -1,9 +0,0 @@
-parser.ml
-parser.mli
-lexer.ml
-lexer_tmp.mll
-lexer_tmp.ml
-linenum.ml
-parser.output
-parser.automaton
-parser.conflicts
diff --git a/parsing/lexer.mll b/parsing/lexer.mll
index ef5c5d0e38..7957a3b2a4 100644
--- a/parsing/lexer.mll
+++ b/parsing/lexer.mll
@@ -245,7 +245,9 @@ let add_comment com =
comment_list := com :: !comment_list
let add_docstring_comment ds =
- let com = (Docstrings.docstring_body ds, Docstrings.docstring_loc ds) in
+ let com =
+ ("*" ^ Docstrings.docstring_body ds, Docstrings.docstring_loc ds)
+ in
add_comment com
let comments () = List.rev !comment_list
diff --git a/parsing/parser.mly b/parsing/parser.mly
index a41c7679a5..6210cc5d3d 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -146,6 +146,14 @@ let mkexp_constraint e (t1, t2) =
| _, Some t -> ghexp(Pexp_coerce(e, t1, t))
| None, None -> assert false
+let mkexp_opt_constraint e = function
+ | None -> e
+ | Some constraint_ -> mkexp_constraint e constraint_
+
+let mkpat_opt_constraint p = function
+ | None -> p
+ | Some typ -> mkpat (Ppat_constraint(p, typ))
+
let array_function par assign=
let op = if assign then par^"<-" else par in
ghloc ( Lident op )
@@ -1549,7 +1557,8 @@ match_case:
{ Exp.case $1 (Exp.unreachable ~loc:(rhs_loc 3) ())}
;
fun_def:
- MINUSGREATER seq_expr { $2 }
+ MINUSGREATER seq_expr { $2 }
+ | COLON simple_core_type MINUSGREATER seq_expr { mkexp (Pexp_constraint ($4, $2)) }
/* Cf #5939: we used to accept (fun p when e0 -> e) */
| labeled_simple_pattern fun_def
{
@@ -1573,10 +1582,10 @@ lbl_expr_list:
| lbl_expr SEMI { [$1] }
;
lbl_expr:
- label_longident EQUAL expr
- { (mkrhs $1 1,$3) }
- | label_longident
- { (mkrhs $1 1, exp_of_label $1 1) }
+ label_longident opt_type_constraint EQUAL expr
+ { (mkrhs $1 1, mkexp_opt_constraint $4 $2) }
+ | label_longident opt_type_constraint
+ { (mkrhs $1 1, mkexp_opt_constraint (exp_of_label $1 1) $2) }
;
field_expr_list:
field_expr opt_semi { [$1] }
@@ -1599,6 +1608,10 @@ type_constraint:
| COLON error { syntax_error() }
| COLONGREATER error { syntax_error() }
;
+opt_type_constraint:
+ type_constraint { Some $1 }
+ | /* empty */ { None }
+;
/* Patterns */
@@ -1704,10 +1717,14 @@ lbl_pattern_list:
{ let (fields, closed) = $3 in $1 :: fields, closed }
;
lbl_pattern:
- label_longident EQUAL pattern
- { (mkrhs $1 1,$3) }
- | label_longident
- { (mkrhs $1 1, pat_of_label $1 1) }
+ label_longident opt_pattern_type_constraint EQUAL pattern
+ { (mkrhs $1 1, mkpat_opt_constraint $4 $2) }
+ | label_longident opt_pattern_type_constraint
+ { (mkrhs $1 1, mkpat_opt_constraint (pat_of_label $1 1) $2) }
+;
+opt_pattern_type_constraint:
+ COLON core_type { Some $2 }
+ | /* empty */ { None }
;
/* Value descriptions */
diff --git a/stdlib/.depend b/stdlib/.depend
index a3bbd65b3b..dd73d7f589 100644
--- a/stdlib/.depend
+++ b/stdlib/.depend
@@ -139,16 +139,16 @@ printf.cmo : camlinternalFormatBasics.cmi camlinternalFormat.cmi buffer.cmi \
printf.cmi
printf.cmx : camlinternalFormatBasics.cmx camlinternalFormat.cmx buffer.cmx \
printf.cmi
-queue.cmo : obj.cmi queue.cmi
-queue.cmx : obj.cmx queue.cmi
+queue.cmo : queue.cmi
+queue.cmx : queue.cmi
random.cmo : pervasives.cmi nativeint.cmi int64.cmi int32.cmi digest.cmi \
char.cmi array.cmi random.cmi
random.cmx : pervasives.cmx nativeint.cmx int64.cmx int32.cmx digest.cmx \
char.cmx array.cmx random.cmi
-scanf.cmo : string.cmi printf.cmi pervasives.cmi list.cmi \
+scanf.cmo : weak.cmi string.cmi printf.cmi pervasives.cmi hashtbl.cmi \
camlinternalFormatBasics.cmi camlinternalFormat.cmi bytes.cmi buffer.cmi \
scanf.cmi
-scanf.cmx : string.cmx printf.cmx pervasives.cmx list.cmx \
+scanf.cmx : weak.cmx string.cmx printf.cmx pervasives.cmx hashtbl.cmx \
camlinternalFormatBasics.cmx camlinternalFormat.cmx bytes.cmx buffer.cmx \
scanf.cmi
set.cmo : list.cmi set.cmi
@@ -163,8 +163,8 @@ stdLabels.cmo : stringLabels.cmi listLabels.cmi bytesLabels.cmi \
arrayLabels.cmi stdLabels.cmi
stdLabels.cmx : stringLabels.cmx listLabels.cmx bytesLabels.cmx \
arrayLabels.cmx stdLabels.cmi
-stream.cmo : string.cmi obj.cmi list.cmi lazy.cmi bytes.cmi stream.cmi
-stream.cmx : string.cmx obj.cmx list.cmx lazy.cmx bytes.cmx stream.cmi
+stream.cmo : string.cmi list.cmi lazy.cmi bytes.cmi stream.cmi
+stream.cmx : string.cmx list.cmx lazy.cmx bytes.cmx stream.cmi
stringLabels.cmo : string.cmi stringLabels.cmi
stringLabels.cmx : string.cmx stringLabels.cmi
string.cmo : pervasives.cmi list.cmi bytes.cmi string.cmi
@@ -175,127 +175,127 @@ weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi
weak.cmx : sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi
arg.cmo : sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi \
arg.cmi
-arg.p.cmx : sys.p.cmx string.p.cmx printf.p.cmx list.p.cmx buffer.p.cmx array.p.cmx \
+arg.p.cmx : sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx \
arg.cmi
arrayLabels.cmo : array.cmi arrayLabels.cmi
-arrayLabels.p.cmx : array.p.cmx arrayLabels.cmi
+arrayLabels.p.cmx : array.cmx arrayLabels.cmi
array.cmo : array.cmi
array.p.cmx : array.cmi
buffer.cmo : sys.cmi string.cmi bytes.cmi buffer.cmi
-buffer.p.cmx : sys.p.cmx string.p.cmx bytes.p.cmx buffer.cmi
+buffer.p.cmx : sys.cmx string.cmx bytes.cmx buffer.cmi
bytesLabels.cmo : bytes.cmi bytesLabels.cmi
-bytesLabels.p.cmx : bytes.p.cmx bytesLabels.cmi
+bytesLabels.p.cmx : bytes.cmx bytesLabels.cmi
bytes.cmo : pervasives.cmi list.cmi char.cmi bytes.cmi
-bytes.p.cmx : pervasives.p.cmx list.p.cmx char.p.cmx bytes.cmi
+bytes.p.cmx : pervasives.cmx list.cmx char.cmx bytes.cmi
callback.cmo : obj.cmi callback.cmi
-callback.p.cmx : obj.p.cmx callback.cmi
+callback.p.cmx : obj.cmx callback.cmi
camlinternalFormatBasics.cmo : camlinternalFormatBasics.cmi
camlinternalFormatBasics.p.cmx : camlinternalFormatBasics.cmi
camlinternalFormat.cmo : sys.cmi string.cmi char.cmi \
camlinternalFormatBasics.cmi bytes.cmi buffer.cmi camlinternalFormat.cmi
-camlinternalFormat.p.cmx : sys.p.cmx string.p.cmx char.p.cmx \
- camlinternalFormatBasics.p.cmx bytes.p.cmx buffer.p.cmx camlinternalFormat.cmi
+camlinternalFormat.p.cmx : sys.cmx string.cmx char.cmx \
+ camlinternalFormatBasics.cmx bytes.cmx buffer.cmx camlinternalFormat.cmi
camlinternalLazy.cmo : obj.cmi camlinternalLazy.cmi
-camlinternalLazy.p.cmx : obj.p.cmx camlinternalLazy.cmi
+camlinternalLazy.p.cmx : obj.cmx camlinternalLazy.cmi
camlinternalMod.cmo : obj.cmi camlinternalOO.cmi array.cmi \
camlinternalMod.cmi
-camlinternalMod.p.cmx : obj.p.cmx camlinternalOO.p.cmx array.p.cmx \
+camlinternalMod.p.cmx : obj.cmx camlinternalOO.cmx array.cmx \
camlinternalMod.cmi
camlinternalOO.cmo : sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \
array.cmi camlinternalOO.cmi
-camlinternalOO.p.cmx : sys.p.cmx string.p.cmx obj.p.cmx map.p.cmx list.p.cmx char.p.cmx \
- array.p.cmx camlinternalOO.cmi
+camlinternalOO.p.cmx : sys.cmx string.cmx obj.cmx map.cmx list.cmx char.cmx \
+ array.cmx camlinternalOO.cmi
char.cmo : char.cmi
char.p.cmx : char.cmi
complex.cmo : complex.cmi
complex.p.cmx : complex.cmi
digest.cmo : string.cmi char.cmi bytes.cmi digest.cmi
-digest.p.cmx : string.p.cmx char.p.cmx bytes.p.cmx digest.cmi
+digest.p.cmx : string.cmx char.cmx bytes.cmx digest.cmi
filename.cmo : sys.cmi string.cmi random.cmi printf.cmi lazy.cmi buffer.cmi \
filename.cmi
-filename.p.cmx : sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx lazy.p.cmx buffer.p.cmx \
+filename.p.cmx : sys.cmx string.cmx random.cmx printf.cmx lazy.cmx buffer.cmx \
filename.cmi
format.cmo : string.cmi pervasives.cmi camlinternalFormatBasics.cmi \
camlinternalFormat.cmi buffer.cmi format.cmi
-format.p.cmx : string.p.cmx pervasives.p.cmx camlinternalFormatBasics.p.cmx \
- camlinternalFormat.p.cmx buffer.p.cmx format.cmi
+format.p.cmx : string.cmx pervasives.cmx camlinternalFormatBasics.cmx \
+ camlinternalFormat.cmx buffer.cmx format.cmi
gc.cmo : sys.cmi printf.cmi gc.cmi
-gc.p.cmx : sys.p.cmx printf.p.cmx gc.cmi
+gc.p.cmx : sys.cmx printf.cmx gc.cmi
genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi bytes.cmi \
genlex.cmi
-genlex.p.cmx : string.p.cmx stream.p.cmx list.p.cmx hashtbl.p.cmx char.p.cmx bytes.p.cmx \
+genlex.p.cmx : string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx bytes.cmx \
genlex.cmi
hashtbl.cmo : sys.cmi string.cmi random.cmi obj.cmi lazy.cmi array.cmi \
hashtbl.cmi
-hashtbl.p.cmx : sys.p.cmx string.p.cmx random.p.cmx obj.p.cmx lazy.p.cmx array.p.cmx \
+hashtbl.p.cmx : sys.cmx string.cmx random.cmx obj.cmx lazy.cmx array.cmx \
hashtbl.cmi
int32.cmo : pervasives.cmi int32.cmi
-int32.p.cmx : pervasives.p.cmx int32.cmi
+int32.p.cmx : pervasives.cmx int32.cmi
int64.cmo : pervasives.cmi int64.cmi
-int64.p.cmx : pervasives.p.cmx int64.cmi
+int64.p.cmx : pervasives.cmx int64.cmi
lazy.cmo : obj.cmi camlinternalLazy.cmi lazy.cmi
-lazy.p.cmx : obj.p.cmx camlinternalLazy.p.cmx lazy.cmi
+lazy.p.cmx : obj.cmx camlinternalLazy.cmx lazy.cmi
lexing.cmo : sys.cmi string.cmi bytes.cmi array.cmi lexing.cmi
-lexing.p.cmx : sys.p.cmx string.p.cmx bytes.p.cmx array.p.cmx lexing.cmi
+lexing.p.cmx : sys.cmx string.cmx bytes.cmx array.cmx lexing.cmi
listLabels.cmo : list.cmi listLabels.cmi
-listLabels.p.cmx : list.p.cmx listLabels.cmi
+listLabels.p.cmx : list.cmx listLabels.cmi
list.cmo : list.cmi
list.p.cmx : list.cmi
map.cmo : map.cmi
map.p.cmx : map.cmi
marshal.cmo : bytes.cmi marshal.cmi
-marshal.p.cmx : bytes.p.cmx marshal.cmi
+marshal.p.cmx : bytes.cmx marshal.cmi
moreLabels.cmo : set.cmi map.cmi hashtbl.cmi moreLabels.cmi
-moreLabels.p.cmx : set.p.cmx map.p.cmx hashtbl.p.cmx moreLabels.cmi
+moreLabels.p.cmx : set.cmx map.cmx hashtbl.cmx moreLabels.cmi
nativeint.cmo : sys.cmi pervasives.cmi nativeint.cmi
-nativeint.p.cmx : sys.p.cmx pervasives.p.cmx nativeint.cmi
+nativeint.p.cmx : sys.cmx pervasives.cmx nativeint.cmi
obj.cmo : marshal.cmi int32.cmi array.cmi obj.cmi
-obj.p.cmx : marshal.p.cmx int32.p.cmx array.p.cmx obj.cmi
+obj.p.cmx : marshal.cmx int32.cmx array.cmx obj.cmi
oo.cmo : camlinternalOO.cmi oo.cmi
-oo.p.cmx : camlinternalOO.p.cmx oo.cmi
+oo.p.cmx : camlinternalOO.cmx oo.cmi
parsing.cmo : obj.cmi lexing.cmi array.cmi parsing.cmi
-parsing.p.cmx : obj.p.cmx lexing.p.cmx array.p.cmx parsing.cmi
+parsing.p.cmx : obj.cmx lexing.cmx array.cmx parsing.cmi
pervasives.cmo : camlinternalFormatBasics.cmi pervasives.cmi
-pervasives.p.cmx : camlinternalFormatBasics.p.cmx pervasives.cmi
+pervasives.p.cmx : camlinternalFormatBasics.cmx pervasives.cmi
printexc.cmo : printf.cmi pervasives.cmi obj.cmi buffer.cmi array.cmi \
printexc.cmi
-printexc.p.cmx : printf.p.cmx pervasives.p.cmx obj.p.cmx buffer.p.cmx array.p.cmx \
+printexc.p.cmx : printf.cmx pervasives.cmx obj.cmx buffer.cmx array.cmx \
printexc.cmi
printf.cmo : camlinternalFormatBasics.cmi camlinternalFormat.cmi buffer.cmi \
printf.cmi
-printf.p.cmx : camlinternalFormatBasics.p.cmx camlinternalFormat.p.cmx buffer.p.cmx \
+printf.p.cmx : camlinternalFormatBasics.cmx camlinternalFormat.cmx buffer.cmx \
printf.cmi
-queue.cmo : obj.cmi queue.cmi
-queue.p.cmx : obj.p.cmx queue.cmi
+queue.cmo : queue.cmi
+queue.p.cmx : queue.cmi
random.cmo : pervasives.cmi nativeint.cmi int64.cmi int32.cmi digest.cmi \
char.cmi array.cmi random.cmi
-random.p.cmx : pervasives.p.cmx nativeint.p.cmx int64.p.cmx int32.p.cmx digest.p.cmx \
- char.p.cmx array.p.cmx random.cmi
-scanf.cmo : string.cmi printf.cmi pervasives.cmi list.cmi \
+random.p.cmx : pervasives.cmx nativeint.cmx int64.cmx int32.cmx digest.cmx \
+ char.cmx array.cmx random.cmi
+scanf.cmo : weak.cmi string.cmi printf.cmi pervasives.cmi hashtbl.cmi \
camlinternalFormatBasics.cmi camlinternalFormat.cmi bytes.cmi buffer.cmi \
scanf.cmi
-scanf.p.cmx : string.p.cmx printf.p.cmx pervasives.p.cmx list.p.cmx \
- camlinternalFormatBasics.p.cmx camlinternalFormat.p.cmx bytes.p.cmx buffer.p.cmx \
+scanf.p.cmx : weak.cmx string.cmx printf.cmx pervasives.cmx hashtbl.cmx \
+ camlinternalFormatBasics.cmx camlinternalFormat.cmx bytes.cmx buffer.cmx \
scanf.cmi
set.cmo : list.cmi set.cmi
-set.p.cmx : list.p.cmx set.cmi
+set.p.cmx : list.cmx set.cmi
sort.cmo : array.cmi sort.cmi
-sort.p.cmx : array.p.cmx sort.cmi
+sort.p.cmx : array.cmx sort.cmi
stack.cmo : list.cmi stack.cmi
-stack.p.cmx : list.p.cmx stack.cmi
+stack.p.cmx : list.cmx stack.cmi
std_exit.cmo :
-std_exit.p.cmx :
+std_exit.cmx :
stdLabels.cmo : stringLabels.cmi listLabels.cmi bytesLabels.cmi \
arrayLabels.cmi stdLabels.cmi
-stdLabels.p.cmx : stringLabels.p.cmx listLabels.p.cmx bytesLabels.p.cmx \
- arrayLabels.p.cmx stdLabels.cmi
-stream.cmo : string.cmi obj.cmi list.cmi lazy.cmi bytes.cmi stream.cmi
-stream.p.cmx : string.p.cmx obj.p.cmx list.p.cmx lazy.p.cmx bytes.p.cmx stream.cmi
+stdLabels.p.cmx : stringLabels.cmx listLabels.cmx bytesLabels.cmx \
+ arrayLabels.cmx stdLabels.cmi
+stream.cmo : string.cmi list.cmi lazy.cmi bytes.cmi stream.cmi
+stream.p.cmx : string.cmx list.cmx lazy.cmx bytes.cmx stream.cmi
stringLabels.cmo : string.cmi stringLabels.cmi
-stringLabels.p.cmx : string.p.cmx stringLabels.cmi
+stringLabels.p.cmx : string.cmx stringLabels.cmi
string.cmo : pervasives.cmi list.cmi bytes.cmi string.cmi
-string.p.cmx : pervasives.p.cmx list.p.cmx bytes.p.cmx string.cmi
+string.p.cmx : pervasives.cmx list.cmx bytes.cmx string.cmi
sys.cmo : sys.cmi
sys.p.cmx : sys.cmi
weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi
-weak.p.cmx : sys.p.cmx obj.p.cmx hashtbl.p.cmx array.p.cmx weak.cmi
+weak.p.cmx : sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi
diff --git a/stdlib/.ignore b/stdlib/.ignore
deleted file mode 100644
index 20d8653fe9..0000000000
--- a/stdlib/.ignore
+++ /dev/null
@@ -1,8 +0,0 @@
-camlheader
-target_camlheader
-camlheaderd
-target_camlheaderd
-camlheader_ur
-labelled-*
-caml
-sys.ml
diff --git a/stdlib/Makefile.shared b/stdlib/Makefile.shared
index 9ba5d5d302..e6b81c9420 100755
--- a/stdlib/Makefile.shared
+++ b/stdlib/Makefile.shared
@@ -107,6 +107,9 @@ clean::
include .depend
+# Note that .p.cmx targets do not depend (for compilation) upon other
+# .p.cmx files. When the compiler imports another compilation unit,
+# it looks for the .cmx file (not .p.cmx).
depend:
$(CAMLDEP) *.mli *.ml > .depend
- $(CAMLDEP) *.ml | sed -e 's/\.cmx/.p.cmx/g' >>.depend
+ $(CAMLDEP) *.ml | sed -e 's/\.cmx : /.p.cmx : /g' >>.depend
diff --git a/stdlib/int32.ml b/stdlib/int32.ml
index 63c99e3d42..a1cf001a27 100644
--- a/stdlib/int32.ml
+++ b/stdlib/int32.ml
@@ -27,10 +27,18 @@ external shift_right : int32 -> int -> int32 = "%int32_asr"
external shift_right_logical : int32 -> int -> int32 = "%int32_lsr"
external of_int : int -> int32 = "%int32_of_int"
external to_int : int32 -> int = "%int32_to_int"
-external of_float : float -> int32 = "caml_int32_of_float"
-external to_float : int32 -> float = "caml_int32_to_float"
-external bits_of_float : float -> int32 = "caml_int32_bits_of_float"
-external float_of_bits : int32 -> float = "caml_int32_float_of_bits"
+external of_float : float -> int32
+ = "caml_int32_of_float" "caml_int32_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external to_float : int32 -> float
+ = "caml_int32_to_float" "caml_int32_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external bits_of_float : float -> int32
+ = "caml_int32_bits_of_float" "caml_int32_bits_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external float_of_bits : int32 -> float
+ = "caml_int32_float_of_bits" "caml_int32_float_of_bits_unboxed"
+ [@@unboxed] [@@noalloc]
let zero = 0l
let one = 1l
diff --git a/stdlib/int32.mli b/stdlib/int32.mli
index 4a29e6c0f2..5b0e910a6f 100644
--- a/stdlib/int32.mli
+++ b/stdlib/int32.mli
@@ -111,13 +111,17 @@ external to_int : int32 -> int = "%int32_to_int"
during the conversion. On 64-bit platforms, the conversion
is exact. *)
-external of_float : float -> int32 = "caml_int32_of_float"
+external of_float : float -> int32
+ = "caml_int32_of_float" "caml_int32_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given floating-point number to a 32-bit integer,
discarding the fractional part (truncate towards 0).
The result of the conversion is undefined if, after truncation,
the number is outside the range \[{!Int32.min_int}, {!Int32.max_int}\]. *)
-external to_float : int32 -> float = "caml_int32_to_float"
+external to_float : int32 -> float
+ = "caml_int32_to_float" "caml_int32_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given 32-bit integer to a floating-point number. *)
external of_string : string -> int32 = "caml_int32_of_string"
@@ -132,14 +136,18 @@ external of_string : string -> int32 = "caml_int32_of_string"
val to_string : int32 -> string
(** Return the string representation of its argument, in signed decimal. *)
-external bits_of_float : float -> int32 = "caml_int32_bits_of_float"
+external bits_of_float : float -> int32
+ = "caml_int32_bits_of_float" "caml_int32_bits_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Return the internal representation of the given float according
to the IEEE 754 floating-point 'single format' bit layout.
Bit 31 of the result represents the sign of the float;
bits 30 to 23 represent the (biased) exponent; bits 22 to 0
represent the mantissa. *)
-external float_of_bits : int32 -> float = "caml_int32_float_of_bits"
+external float_of_bits : int32 -> float
+ = "caml_int32_float_of_bits" "caml_int32_float_of_bits_unboxed"
+ [@@unboxed] [@@noalloc]
(** Return the floating-point number whose internal representation,
according to the IEEE 754 floating-point 'single format' bit layout,
is the given [int32]. *)
diff --git a/stdlib/int64.ml b/stdlib/int64.ml
index 274a9868d9..32d8350083 100644
--- a/stdlib/int64.ml
+++ b/stdlib/int64.ml
@@ -27,8 +27,12 @@ external shift_right : int64 -> int -> int64 = "%int64_asr"
external shift_right_logical : int64 -> int -> int64 = "%int64_lsr"
external of_int : int -> int64 = "%int64_of_int"
external to_int : int64 -> int = "%int64_to_int"
-external of_float : float -> int64 = "caml_int64_of_float"
-external to_float : int64 -> float = "caml_int64_to_float"
+external of_float : float -> int64
+ = "caml_int64_of_float" "caml_int64_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external to_float : int64 -> float
+ = "caml_int64_to_float" "caml_int64_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
external of_int32 : int32 -> int64 = "%int64_of_int32"
external to_int32 : int64 -> int32 = "%int64_to_int32"
external of_nativeint : nativeint -> int64 = "%int64_of_nativeint"
@@ -49,8 +53,12 @@ let to_string n = format "%d" n
external of_string : string -> int64 = "caml_int64_of_string"
-external bits_of_float : float -> int64 = "caml_int64_bits_of_float"
-external float_of_bits : int64 -> float = "caml_int64_float_of_bits"
+external bits_of_float : float -> int64
+ = "caml_int64_bits_of_float" "caml_int64_bits_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external float_of_bits : int64 -> float
+ = "caml_int64_float_of_bits" "caml_int64_float_of_bits_unboxed"
+ [@@unboxed] [@@noalloc]
type t = int64
diff --git a/stdlib/int64.mli b/stdlib/int64.mli
index edd600c690..8510fcd600 100644
--- a/stdlib/int64.mli
+++ b/stdlib/int64.mli
@@ -112,13 +112,17 @@ external to_int : int64 -> int = "%int64_to_int"
is taken modulo 2{^31}, i.e. the top 33 bits are lost
during the conversion. *)
-external of_float : float -> int64 = "caml_int64_of_float"
+external of_float : float -> int64
+ = "caml_int64_of_float" "caml_int64_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given floating-point number to a 64-bit integer,
discarding the fractional part (truncate towards 0).
The result of the conversion is undefined if, after truncation,
the number is outside the range \[{!Int64.min_int}, {!Int64.max_int}\]. *)
-external to_float : int64 -> float = "caml_int64_to_float"
+external to_float : int64 -> float
+ = "caml_int64_to_float" "caml_int64_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given 64-bit integer to a floating-point number. *)
@@ -154,14 +158,18 @@ external of_string : string -> int64 = "caml_int64_of_string"
val to_string : int64 -> string
(** Return the string representation of its argument, in decimal. *)
-external bits_of_float : float -> int64 = "caml_int64_bits_of_float"
+external bits_of_float : float -> int64
+ = "caml_int64_bits_of_float" "caml_int64_bits_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Return the internal representation of the given float according
to the IEEE 754 floating-point 'double format' bit layout.
Bit 63 of the result represents the sign of the float;
bits 62 to 52 represent the (biased) exponent; bits 51 to 0
represent the mantissa. *)
-external float_of_bits : int64 -> float = "caml_int64_float_of_bits"
+external float_of_bits : int64 -> float
+ = "caml_int64_float_of_bits" "caml_int64_float_of_bits_unboxed"
+ [@@unboxed] [@@noalloc]
(** Return the floating-point number whose internal representation,
according to the IEEE 754 floating-point 'double format' bit layout,
is the given [int64]. *)
diff --git a/stdlib/nativeint.ml b/stdlib/nativeint.ml
index 7412bca04e..53d50af82d 100644
--- a/stdlib/nativeint.ml
+++ b/stdlib/nativeint.ml
@@ -27,8 +27,12 @@ external shift_right: nativeint -> int -> nativeint = "%nativeint_asr"
external shift_right_logical: nativeint -> int -> nativeint = "%nativeint_lsr"
external of_int: int -> nativeint = "%nativeint_of_int"
external to_int: nativeint -> int = "%nativeint_to_int"
-external of_float : float -> nativeint = "caml_nativeint_of_float"
-external to_float : nativeint -> float = "caml_nativeint_to_float"
+external of_float : float -> nativeint
+ = "caml_nativeint_of_float" "caml_nativeint_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
+external to_float : nativeint -> float
+ = "caml_nativeint_to_float" "caml_nativeint_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
external of_int32: int32 -> nativeint = "%nativeint_of_int32"
external to_int32: nativeint -> int32 = "%nativeint_to_int32"
diff --git a/stdlib/nativeint.mli b/stdlib/nativeint.mli
index ffa57030cd..cd9871ba75 100644
--- a/stdlib/nativeint.mli
+++ b/stdlib/nativeint.mli
@@ -129,14 +129,18 @@ external to_int : nativeint -> int = "%nativeint_to_int"
integer (type [int]). The high-order bit is lost during
the conversion. *)
-external of_float : float -> nativeint = "caml_nativeint_of_float"
+external of_float : float -> nativeint
+ = "caml_nativeint_of_float" "caml_nativeint_of_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given floating-point number to a native integer,
discarding the fractional part (truncate towards 0).
The result of the conversion is undefined if, after truncation,
the number is outside the range
\[{!Nativeint.min_int}, {!Nativeint.max_int}\]. *)
-external to_float : nativeint -> float = "caml_nativeint_to_float"
+external to_float : nativeint -> float
+ = "caml_nativeint_to_float" "caml_nativeint_to_float_unboxed"
+ [@@unboxed] [@@noalloc]
(** Convert the given native integer to a floating-point number. *)
external of_int32 : int32 -> nativeint = "%nativeint_of_int32"
diff --git a/stdlib/pervasives.ml b/stdlib/pervasives.ml
index ebfa3b4a83..2916720dee 100644
--- a/stdlib/pervasives.ml
+++ b/stdlib/pervasives.ml
@@ -150,7 +150,8 @@ external copysign : float -> float -> float
external mod_float : float -> float -> float = "caml_fmod_float" "fmod"
[@@unboxed] [@@noalloc]
external frexp : float -> float * int = "caml_frexp_float"
-external ldexp : float -> int -> float = "caml_ldexp_float"
+external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
+ "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
external modf : float -> float * float = "caml_modf_float"
external float : int -> float = "%floatofint"
external float_of_int : int -> float = "%floatofint"
@@ -176,7 +177,8 @@ type fpclass =
| FP_zero
| FP_infinite
| FP_nan
-external classify_float : float -> fpclass = "caml_classify_float"
+external classify_float : (float [@unboxed]) -> fpclass =
+ "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc]
(* String and byte sequence operations -- more in modules String and Bytes *)
diff --git a/stdlib/pervasives.mli b/stdlib/pervasives.mli
index c557612050..553253a16b 100644
--- a/stdlib/pervasives.mli
+++ b/stdlib/pervasives.mli
@@ -454,7 +454,9 @@ external frexp : float -> float * int = "caml_frexp_float"
zero. When [f] is non-zero, they are defined by
[f = x *. 2 ** n] and [0.5 <= x < 1.0]. *)
-external ldexp : float -> int -> float = "caml_ldexp_float"
+
+external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) =
+ "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc]
(** [ldexp x n] returns [x *. 2 ** n]. *)
external modf : float -> float * float = "caml_modf_float"
@@ -508,7 +510,8 @@ type fpclass =
(** The five classes of floating-point numbers, as determined by
the {!Pervasives.classify_float} function. *)
-external classify_float : float -> fpclass = "caml_classify_float"
+external classify_float : (float [@unboxed]) -> fpclass =
+ "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc]
(** Return the class of the given floating-point number:
normal, subnormal, zero, infinite, or not a number. *)
diff --git a/stdlib/sys.mli b/stdlib/sys.mli
index f1321b01ec..4e3f72a187 100644
--- a/stdlib/sys.mli
+++ b/stdlib/sys.mli
@@ -53,7 +53,8 @@ external getenv : string -> string = "caml_sys_getenv"
external command : string -> int = "caml_sys_system_command"
(** Execute the given shell command and return its exit code. *)
-external time : unit -> float = "caml_sys_time"
+external time : unit -> (float [@unboxed]) =
+ "caml_sys_time" "caml_sys_time_unboxed" [@@noalloc]
(** Return the processor time, in seconds, used by the program
since the beginning of execution. *)
diff --git a/stdlib/sys.mlp b/stdlib/sys.mlp
index 434f189733..67a7d02f21 100644
--- a/stdlib/sys.mlp
+++ b/stdlib/sys.mlp
@@ -44,7 +44,8 @@ external remove: string -> unit = "caml_sys_remove"
external rename : string -> string -> unit = "caml_sys_rename"
external getenv: string -> string = "caml_sys_getenv"
external command: string -> int = "caml_sys_system_command"
-external time: unit -> float = "caml_sys_time"
+external time: unit -> (float [@unboxed]) =
+ "caml_sys_time" "caml_sys_time_unboxed" [@@noalloc]
external chdir: string -> unit = "caml_sys_chdir"
external getcwd: unit -> string = "caml_sys_getcwd"
external readdir : string -> string array = "caml_sys_read_directory"
diff --git a/testsuite/.ignore b/testsuite/.ignore
deleted file mode 100644
index a333a8b0a0..0000000000
--- a/testsuite/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-_log
diff --git a/testsuite/makefiles/Makefile.common b/testsuite/makefiles/Makefile.common
index 3e6cc588e3..c26f5c02cf 100644
--- a/testsuite/makefiles/Makefile.common
+++ b/testsuite/makefiles/Makefile.common
@@ -67,7 +67,8 @@ OCAMLMKLIB=$(OCAMLRUN) $(OTOPDIR)/tools/ocamlmklib \
$(OTOPDIR)/ocamlopt $(OCFLAGS)"
OCAMLYACC=$(TOPDIR)/yacc/ocamlyacc$(EXE)
OCAMLBUILD=$(TOPDIR)/_build/ocamlbuild/ocamlbuild.native
-DUMPOBJ=$(OCAMLRUN) $(OTOPDIR)/tool/dumpobj
+DUMPOBJ=$(OCAMLRUN) $(OTOPDIR)/tools/dumpobj
+OBJINFO=$(OCAMLRUN) $(OTOPDIR)/tools/objinfo
BYTECODE_ONLY=[ "$(ARCH)" = "none" -o "$(ASM)" = "none" ]
NATIVECODE_ONLY=false
diff --git a/testsuite/tests/asmcomp/.ignore b/testsuite/tests/asmcomp/.ignore
deleted file mode 100644
index 321dc06109..0000000000
--- a/testsuite/tests/asmcomp/.ignore
+++ /dev/null
@@ -1,7 +0,0 @@
-codegen
-parsecmm.ml
-parsecmm.mli
-lexcmm.ml
-*.s
-*.out
-*.out.dSYM
diff --git a/testsuite/tests/asmcomp/main.c b/testsuite/tests/asmcomp/main.c
index 0b59b0b826..02645e325c 100644
--- a/testsuite/tests/asmcomp/main.c
+++ b/testsuite/tests/asmcomp/main.c
@@ -47,9 +47,9 @@ int cmpint(const void * i, const void * j)
int main(int argc, char **argv)
{
#ifdef UNIT_INT
- { extern int FUN();
- extern int call_gen_code();
- printf("%d\n", call_gen_code(FUN));
+ { extern long FUN(void);
+ extern long call_gen_code(long (*)(void));
+ printf("%ld\n", call_gen_code(FUN));
}
#else
if (argc < 2) {
@@ -57,23 +57,20 @@ int main(int argc, char **argv)
exit(2);
}
#ifdef INT_INT
- { extern int FUN();
- extern int call_gen_code();
- printf("%d\n", call_gen_code(FUN, atoi(argv[1])));
+ { extern long FUN(long);
+ extern long call_gen_code(long (*)(long), long);
+ printf("%ld\n", call_gen_code(FUN, atoi(argv[1])));
}
#endif
#ifdef INT_FLOAT
- { extern double FUN();
-#ifdef __mc68020__
-#define call_gen_code call_gen_code_float
-#endif
- extern double call_gen_code();
+ { extern double FUN(long);
+ extern double call_gen_code(double (*)(long), long);
printf("%f\n", call_gen_code(FUN, atoi(argv[1])));
}
#endif
#ifdef SORT
- { extern void FUN();
- extern void call_gen_code();
+ { extern void FUN(long, long, long *);
+ extern void call_gen_code(void (*)(long, long, long *), long, long, long *);
long n;
long * a, * b;
long i;
@@ -100,8 +97,8 @@ int main(int argc, char **argv)
#endif
#endif
#ifdef CHECKBOUND
- { extern void checkbound1(), checkbound2();
- extern void call_gen_code();
+ { extern void checkbound1(long), checkbound2(long, long);
+ extern void call_gen_code(void *, ...);
long x, y;
x = atoi(argv[1]);
if (argc >= 3) {
diff --git a/testsuite/tests/asmcomp/mainarith.c b/testsuite/tests/asmcomp/mainarith.c
index 94ff371e3c..4af44b857b 100644
--- a/testsuite/tests/asmcomp/mainarith.c
+++ b/testsuite/tests/asmcomp/mainarith.c
@@ -59,8 +59,8 @@ double F, G;
#arg, #res, X, Y, arg, result); \
}
-extern void call_gen_code();
-extern void testarith();
+extern void call_gen_code(void (*)(void));
+extern void testarith(void);
void do_test(void)
{
diff --git a/testsuite/tests/embedded/.ignore b/testsuite/tests/embedded/.ignore
deleted file mode 100644
index 97d78c3d3c..0000000000
--- a/testsuite/tests/embedded/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-caml
diff --git a/testsuite/tests/exotic-syntax/exotic.ml b/testsuite/tests/exotic-syntax/exotic.ml
index 873bf33932..8c095e8100 100644
--- a/testsuite/tests/exotic-syntax/exotic.ml
+++ b/testsuite/tests/exotic-syntax/exotic.ml
@@ -80,6 +80,13 @@ end;;
(* private polymorphic method with local type *)
object method private f : type t . int = 1 end;;
+(* type annotations on record fields, both in patterns and expressions, and both
+ with and without punning *)
+let get_int { contents : int } = contents
+let get_int2 { contents : int = c } = c
+let set_int contents = { contents : int }
+let set_int2 c = { contents : int = c }
+;;
(* More exotic: not even found in the manual (up to version 4.00),
but used in some programs found in the wild.
diff --git a/testsuite/tests/float-unboxing/float_subst_boxed_number.ml b/testsuite/tests/float-unboxing/float_subst_boxed_number.ml
index 2b5d511738..598bda81c6 100644
--- a/testsuite/tests/float-unboxing/float_subst_boxed_number.ml
+++ b/testsuite/tests/float-unboxing/float_subst_boxed_number.ml
@@ -38,6 +38,20 @@ module PR_6770 = struct
end
+let check_noalloc name f =
+ let a0 = Gc.allocated_bytes () in
+ let a1 = Gc.allocated_bytes () in
+ let _x = f () in
+ let a2 = Gc.allocated_bytes () in
+ let alloc = (a2 -. 2. *. a1 +. a0) in
+
+ (* is there a better to test whether we run in native code? *)
+ match Filename.basename Sys.argv.(0) with
+ | "program.byte" | "program.byte.exe" -> ()
+ | "program.native" | "program.native.exe" ->
+ if alloc > 100. then failwith name
+ | _ -> assert false
+
module GPR_109 = struct
let f () =
@@ -49,18 +63,26 @@ module GPR_109 = struct
done;
!r
- let test () =
- let a0 = Gc.allocated_bytes () in
- let a1 = Gc.allocated_bytes () in
- let _x = f () in
- let a2 = Gc.allocated_bytes () in
- let alloc = (a2 -. 2. *. a1 +. a0) in
- assert(alloc < 100.)
-
- let () =
- (* is there a better to test whether we run in native code? *)
- match Filename.basename Sys.argv.(0) with
- | "program.byte" | "program.byte.exe" -> ()
- | "program.native" | "program.native.exe" -> test ()
- | _ -> assert false
+ let () = check_noalloc "gpr 1O9" f
end
+
+
+let unbox_classify_float () =
+ let x = ref 100. in
+ for i = 1 to 1000 do
+ assert (classify_float !x = FP_normal);
+ x := !x +. 1.
+ done
+
+let unbox_compare_float () =
+ let module M = struct type sf = { mutable x: float; y: float; } end in
+ let x = { M.x=100. ; y=1. } in
+ for i = 1 to 1000 do
+ assert (compare x.M.x x.M.y >= 0);
+ x.M.x <- x.M.x +. 1.
+ done
+
+let () =
+ check_noalloc "classify float" unbox_classify_float;
+ check_noalloc "compare float" unbox_compare_float;
+ ()
diff --git a/testsuite/tests/lib-dynlink-bytecode/.ignore b/testsuite/tests/lib-dynlink-bytecode/.ignore
deleted file mode 100644
index 06b6473695..0000000000
--- a/testsuite/tests/lib-dynlink-bytecode/.ignore
+++ /dev/null
@@ -1,6 +0,0 @@
-main
-static
-custom
-custom.exe
-marshal.data
-caml
diff --git a/testsuite/tests/lib-dynlink-bytecode/stub1.c b/testsuite/tests/lib-dynlink-bytecode/stub1.c
index 60c8ab35ae..ae064854dc 100644
--- a/testsuite/tests/lib-dynlink-bytecode/stub1.c
+++ b/testsuite/tests/lib-dynlink-bytecode/stub1.c
@@ -15,7 +15,7 @@
#include "caml/alloc.h"
#include <stdio.h>
-value stub1() {
+value stub1(void) {
CAMLparam0();
CAMLlocal1(x);
printf("This is stub1!\n"); fflush(stdout);
diff --git a/testsuite/tests/lib-dynlink-bytecode/stub2.c b/testsuite/tests/lib-dynlink-bytecode/stub2.c
index 4064a75eec..73496d082f 100644
--- a/testsuite/tests/lib-dynlink-bytecode/stub2.c
+++ b/testsuite/tests/lib-dynlink-bytecode/stub2.c
@@ -15,9 +15,9 @@
#include "caml/alloc.h"
#include <stdio.h>
-extern value stub1();
+extern value stub1(void);
-value stub2() {
+value stub2(void) {
printf("This is stub2, calling stub1:\n"); fflush(stdout);
stub1();
printf("Ok!\n"); fflush(stdout);
diff --git a/testsuite/tests/lib-dynlink-native/.ignore b/testsuite/tests/lib-dynlink-native/.ignore
deleted file mode 100644
index 2dd2c724a8..0000000000
--- a/testsuite/tests/lib-dynlink-native/.ignore
+++ /dev/null
@@ -1,7 +0,0 @@
-mypack.pack.s
-mypack.pack.asm
-result
-main
-main.exe
-marshal.data
-caml
diff --git a/testsuite/tests/lib-scanf/.ignore b/testsuite/tests/lib-scanf/.ignore
deleted file mode 100644
index a940814e01..0000000000
--- a/testsuite/tests/lib-scanf/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-tscanf_data
diff --git a/testsuite/tests/lib-threads/.ignore b/testsuite/tests/lib-threads/.ignore
deleted file mode 100644
index e6d9e45b70..0000000000
--- a/testsuite/tests/lib-threads/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-*.byt
diff --git a/testsuite/tests/no-alias-deps/Makefile b/testsuite/tests/no-alias-deps/Makefile
new file mode 100644
index 0000000000..072505bdc5
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/Makefile
@@ -0,0 +1,34 @@
+#########################################################################
+# #
+# OCaml #
+# #
+# Xavier Clerc, SED, INRIA Rocquencourt #
+# #
+# Copyright 2010 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. #
+# #
+#########################################################################
+
+default: b.cmi c.cmi d.cmi aliases.ml
+ @$(OCAMLC) -c aliases.ml > aliases.ml.result 2>&1 || true
+ @$(OBJINFO) aliases.cmo | \
+ sed -e "s/[a-f0-9]\{32\}/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/g" \
+ > aliases.cmo.result 2>&1 || true
+ @for file in *.reference; do \
+ printf " ... testing '$$file':"; \
+ $(DIFF) $$file `basename $$file reference`result >/dev/null \
+ && echo " => passed" || echo " => failed"; \
+ done
+
+promote: defaultpromote
+
+clean: defaultclean
+ @rm -f *.result
+
+b.cmi: b.cmi.pre
+ cp b.cmi.pre b.cmi
+
+BASEDIR=../..
+include $(BASEDIR)/makefiles/Makefile.common
+COMPFLAGS = -no-alias-deps
diff --git a/testsuite/tests/no-alias-deps/aliases.cmo.reference b/testsuite/tests/no-alias-deps/aliases.cmo.reference
new file mode 100644
index 0000000000..dd1907146b
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/aliases.cmo.reference
@@ -0,0 +1,12 @@
+File aliases.cmo
+Unit name: Aliases
+Interfaces imported:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Pervasives
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa D
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa CamlinternalFormatBasics
+ -------------------------------- C
+ -------------------------------- B
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aliases
+ -------------------------------- A
+Uses unsafe features: no
+Force link: no
diff --git a/testsuite/tests/no-alias-deps/aliases.ml b/testsuite/tests/no-alias-deps/aliases.ml
new file mode 100644
index 0000000000..c74dcae69b
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/aliases.ml
@@ -0,0 +1,5 @@
+module A' = A (* missing a.cmi *)
+module B' = B (* broken b.cmi *)
+module C' = C (* valid c.cmi *)
+module D' = D (* valid d.cmi *)
+let () = print_int D'.something
diff --git a/testsuite/tests/no-alias-deps/aliases.ml.reference b/testsuite/tests/no-alias-deps/aliases.ml.reference
new file mode 100644
index 0000000000..ce6a3d1ba2
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/aliases.ml.reference
@@ -0,0 +1,5 @@
+File "_none_", line 1:
+Warning 49: no cmi file was found in path for module A
+File "_none_", line 1:
+Warning 49: no valid cmi file was found in path for module B. b.cmi
+is not a compiled interface
diff --git a/testsuite/tests/no-alias-deps/b.cmi.pre b/testsuite/tests/no-alias-deps/b.cmi.pre
new file mode 100644
index 0000000000..b0aedf1bb5
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/b.cmi.pre
@@ -0,0 +1 @@
+Not a valid cmi file
diff --git a/testsuite/tests/no-alias-deps/c.mli b/testsuite/tests/no-alias-deps/c.mli
new file mode 100644
index 0000000000..5d27914b5b
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/c.mli
@@ -0,0 +1 @@
+val something : int
diff --git a/testsuite/tests/no-alias-deps/d.mli b/testsuite/tests/no-alias-deps/d.mli
new file mode 100644
index 0000000000..5d27914b5b
--- /dev/null
+++ b/testsuite/tests/no-alias-deps/d.mli
@@ -0,0 +1 @@
+val something : int
diff --git a/testsuite/tests/runtime-errors/.ignore b/testsuite/tests/runtime-errors/.ignore
deleted file mode 100644
index fa628eaab6..0000000000
--- a/testsuite/tests/runtime-errors/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-*.bytecode
diff --git a/testsuite/tests/tool-debugger/basic/.ignore b/testsuite/tests/tool-debugger/basic/.ignore
deleted file mode 100644
index e09cf9eb6e..0000000000
--- a/testsuite/tests/tool-debugger/basic/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-compiler-libs
diff --git a/testsuite/tests/tool-debugger/find-artifacts/.ignore b/testsuite/tests/tool-debugger/find-artifacts/.ignore
deleted file mode 100644
index 0a2c0c40cf..0000000000
--- a/testsuite/tests/tool-debugger/find-artifacts/.ignore
+++ /dev/null
@@ -1,2 +0,0 @@
-compiler-libs
-out
diff --git a/testsuite/tests/tool-debugger/no_debug_event/.ignore b/testsuite/tests/tool-debugger/no_debug_event/.ignore
deleted file mode 100644
index cfbcf5c6d3..0000000000
--- a/testsuite/tests/tool-debugger/no_debug_event/.ignore
+++ /dev/null
@@ -1,4 +0,0 @@
-compiler-libs
-out
-c
-c.exe
diff --git a/testsuite/tests/tool-lexyacc/.ignore b/testsuite/tests/tool-lexyacc/.ignore
deleted file mode 100644
index 6bcc85147e..0000000000
--- a/testsuite/tests/tool-lexyacc/.ignore
+++ /dev/null
@@ -1,3 +0,0 @@
-scanner.ml
-grammar.mli
-grammar.ml
diff --git a/testsuite/tests/tool-ocamldoc/.ignore b/testsuite/tests/tool-ocamldoc/.ignore
deleted file mode 100644
index 866d4be886..0000000000
--- a/testsuite/tests/tool-ocamldoc/.ignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.html
-*.sty
-*.css
-ocamldoc.out
diff --git a/testsuite/tests/typing-modules-bugs/pr7036_ok.ml b/testsuite/tests/typing-modules-bugs/pr7036_ok.ml
new file mode 100644
index 0000000000..8a64603591
--- /dev/null
+++ b/testsuite/tests/typing-modules-bugs/pr7036_ok.ml
@@ -0,0 +1,21 @@
+module M = struct
+ module type S = sig type a val v : a end
+ type 'a s = (module S with type a = 'a)
+end
+
+module B = struct
+ class type a = object method a : 'a. 'a M.s -> 'a end
+end
+
+module M' = M
+module B' = B
+
+class b : B.a = object
+ method a : 'a. 'a M.s -> 'a = fun (type a) ((module X) : (module M.S with type
+a = a)) -> X.v
+end
+
+class b' : B.a = object
+ method a : 'a. 'a M'.s -> 'a = fun (type a) ((module X) : (module M'.S with
+type a = a)) -> X.v
+end
diff --git a/testsuite/tests/typing-warnings/coercions.ml b/testsuite/tests/typing-warnings/coercions.ml
index 1ca390b28e..d5126e916c 100644
--- a/testsuite/tests/typing-warnings/coercions.ml
+++ b/testsuite/tests/typing-warnings/coercions.ml
@@ -2,4 +2,4 @@
fun b -> if b then format_of_string "x" else "y";;
fun b -> if b then "x" else format_of_string "y";;
-fun b -> (if b then "x" else "y" : (_,_,_) format);;
+fun b : (_,_,_) format -> if b then "x" else "y";;
diff --git a/testsuite/tests/unboxed-primitive-args/.ignore b/testsuite/tests/unboxed-primitive-args/.ignore
deleted file mode 100644
index fc5844bc72..0000000000
--- a/testsuite/tests/unboxed-primitive-args/.ignore
+++ /dev/null
@@ -1,2 +0,0 @@
-main.ml
-stubs.c
diff --git a/testsuite/tests/unboxed-primitive-args/common.ml b/testsuite/tests/unboxed-primitive-args/common.ml
index 5dc6c7fb2f..88cca57422 100644
--- a/testsuite/tests/unboxed-primitive-args/common.ml
+++ b/testsuite/tests/unboxed-primitive-args/common.ml
@@ -243,7 +243,7 @@ external cleanup_float
-> float -> float -> float -> float -> float -> float -> float -> float
-> float -> float -> float -> float -> float -> float -> float -> float
-> float -> float -> float -> float -> float -> float -> float -> float
- -> float = "" "test_cleanup_normal" [@@noalloc] [@@unboxed]
+ -> float = "" "test_cleanup_float" [@@noalloc] [@@unboxed]
let cleanup_args_and_stack () =
let _ : int =
diff --git a/testsuite/tests/unboxed-primitive-args/test_common.c b/testsuite/tests/unboxed-primitive-args/test_common.c
index 30305b2c87..f1ee55bb85 100644
--- a/testsuite/tests/unboxed-primitive-args/test_common.c
+++ b/testsuite/tests/unboxed-primitive-args/test_common.c
@@ -23,12 +23,12 @@ value test_set_buffers(value v_ocaml_buffer, value v_c_buffer)
return Val_unit;
}
-value test_cleanup_normal()
+value test_cleanup_normal(void)
{
return Val_int(0);
}
-double test_cleanup_float()
+double test_cleanup_float(void)
{
return 0.;
}
diff --git a/tools/.ignore b/tools/.ignore
deleted file mode 100644
index 94fac02fbc..0000000000
--- a/tools/.ignore
+++ /dev/null
@@ -1,27 +0,0 @@
-ocamldep
-ocamldep.opt
-ocamldep.bak
-ocamlprof
-opnames.ml
-dumpobj
-dumpapprox
-objinfo
-cvt_emit
-cvt_emit.bak
-cvt_emit.ml
-ocamlcp
-ocamloptp
-ocamlmktop
-primreq
-ocamldumpobj
-keywords
-lexer299.ml
-ocaml299to3
-ocamlmklib
-ocamlmklibconfig.ml
-lexer301.ml
-scrapelabels
-addlabels
-objinfo_helper
-read_cmt
-read_cmt.opt
diff --git a/tools/check-typo b/tools/check-typo
index a28e4dc153..28a778cb77 100755
--- a/tools/check-typo
+++ b/tools/check-typo
@@ -27,13 +27,13 @@
# - presence of a copyright header (missing-header)
# - absence of a leftover "$Id" string (svn-keyword)
-# Exceptions are handled with a SVN property: "ocaml:typo".
+# Exceptions are handled with a git attribute: "ocaml-typo".
# Its value for a given file is a comma-separated list of rule names,
# which lists the rules that should be disabled for this file.
# The rule names are the ones shown above in parentheses.
# Built-in exceptions:
-# - Any binary file (i.e. with svn:mime-type = application/octet-stream)
+# - Any binary file (i.e. with git attribute "binary")
# is automatically exempt from all the rules.
# - Any file whose name matches one of the following patterns is
# automatically exempt from all rules
@@ -44,7 +44,6 @@
# from the "tabs" rule.
# - Any file whose name matches one of the following patterns is
# automatically exempt from the "missing-header" rule.
-# */.ignore
# *.mlpack
# *.mllib
# *.mltop
@@ -68,21 +67,24 @@
# on the command line (or by default the current directory), and check
# every file therein for compliance to the rules.
-# Directories named .svn and _build (and their contents) are always ignored.
-# This program ignores any file that is not under svn control, unless
+# Directories named .git (and their contents) are always ignored.
+# This program ignores any file that is not under git control, unless
# explicitly given on the command line.
-# If a directory has the SVN property "ocaml:typo" set to "prune",
+# If a directory has the git attribute "ocaml-typo" set to "prune",
# then it and its contents are ignored.
# You can ignore a rule by giving the option -<rule> on the command
# line (before any file names).
+# First prevent i18n from messing up everything.
+export LC_ALL=C
+
# Special case for recursive call from the find command (see IGNORE_DIRS).
case "$1" in
--check-prune)
- case `svn propget ocaml:typo "$2" 2>/dev/null` in
- prune) echo "INFO: pruned directory $2 (ocaml:typo=prune)" >&2; exit 0;;
+ case `git check-attr ocaml-typo "$2" 2>/dev/null` in
+ *prune*) echo "INFO: pruned directory $2 (ocaml-typo=prune)" >&2; exit 0;;
*) exit 3;;
esac;;
esac
@@ -104,8 +106,7 @@ while : ; do
done
IGNORE_DIRS="
- -name .svn -prune -o
- -name _build -prune -o
+ -name .git -prune -o
-type d -exec $0 --check-prune {} ; -prune -o
"
@@ -115,10 +116,8 @@ IGNORE_DIRS="
esac
) | (
while read f; do
- case `svn status "$f" 2>&1` in
- '?'*) is_svn=false;;
- I*) is_svn=false;;
- svn:*"is not a working copy") is_svn=false;;
+ case `git ls-files "$f" 2>&1` in
+ "") is_svn=false;;
*) is_svn=true;;
esac
case "$*" in
@@ -128,16 +127,16 @@ IGNORE_DIRS="
if $is_svn || $is_cmd_line; then :; else continue; fi
svnrules=''
if $is_svn; then
- case `svn propget svn:mime-type "$f"` in
- application/octet-stream) continue;;
+ case `git check-attr binary "$f"` in
+ *'binary: set') continue;;
esac
- svnrules=`svn propget ocaml:typo "$f"`
+ svnrules=`git check-attr ocaml-typo "$f" | sed -e 's/.*: //'`
+ case $svnrules in unspecified) svnrules= ;; esac
fi
rules="$userrules"
add_hd(){ rules="missing-header,$rules"; }
case "$f" in
Makefile*|*/Makefile*) rules="tab,$rules";;
- */.ignore) add_hd;;
*.mlpack|*.mllib|*.mltop|*.odocl|*.itarget|*.clib) add_hd;;
*.reference|*/reference|*/.depend*) continue;;
esac
@@ -230,7 +229,7 @@ IGNORE_DIRS="
for (i in r){
name = r[i];
if (name != "" && !counts[name]){
- err("unused-prop", sprintf("unused [%s] in ocaml:typo", name));
+ err("unused-prop", sprintf("unused [%s] in ocaml-typo", name));
}
}
}
diff --git a/tools/setignore b/tools/setignore
deleted file mode 100755
index 43d37a97dd..0000000000
--- a/tools/setignore
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-#########################################################################
-# #
-# OCaml #
-# #
-# Damien Doligez, projet Gallium, 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 Q Public License version 1.0. #
-# #
-#########################################################################
-
-(
- cat <<EOF
-*.o
-*.a
-*.so
-*.obj
-*.lib
-*.dll
-
-*.cm[ioxat]
-*.cmx[as]
-*.cmti
-*.annot
-
-*.result
-*.byte
-*.native
-program
-*.exe
-*.exe.manifest
-
-.depend
-.depend.nt
-.DS_Store
-
-EOF
-
- if [ -f .ignore ]; then cat .ignore; fi
-
-) | svn propset svn:ignore -F - .
diff --git a/typing/ctype.ml b/typing/ctype.ml
index ee39bb1b61..3ba0a686d3 100644
--- a/typing/ctype.ml
+++ b/typing/ctype.ml
@@ -698,7 +698,14 @@ let rec normalize_package_path env p =
in
match t with
| Some (Mty_ident p) -> normalize_package_path env p
- | Some (Mty_signature _ | Mty_functor _ | Mty_alias _) | None -> p
+ | Some (Mty_signature _ | Mty_functor _ | Mty_alias _) | None ->
+ match p with
+ Path.Pdot (p1, s, n) ->
+ (* For module aliases *)
+ let p1' = Env.normalize_path None env p1 in
+ if Path.same p1 p1' then p else
+ normalize_package_path env (Path.Pdot (p1', s, n))
+ | _ -> p
let rec update_level env level ty =
let ty = repr ty in
diff --git a/typing/env.ml b/typing/env.ml
index 399ebed4d6..ca5093a968 100644
--- a/typing/env.ml
+++ b/typing/env.ml
@@ -297,7 +297,6 @@ type pers_struct =
ps_sig: signature Lazy.t;
ps_comps: module_components;
ps_crcs: (string * Digest.t option) list;
- mutable ps_crcs_checked: bool;
ps_filename: string;
ps_flags: pers_flags list }
@@ -321,7 +320,6 @@ let clear_imports () =
imported_units := StringSet.empty
let check_consistency ps =
- if not ps.ps_crcs_checked then
try
List.iter
(fun (name, crco) ->
@@ -331,7 +329,6 @@ let check_consistency ps =
add_import name;
Consistbl.check crc_units name crc ps.ps_filename)
ps.ps_crcs;
- ps.ps_crcs_checked <- true;
with Consistbl.Inconsistency(name, source, auth) ->
error (Inconsistent_import(name, auth, source))
@@ -343,7 +340,8 @@ let save_pers_struct crc ps =
Consistbl.set crc_units modname crc ps.ps_filename;
add_import modname
-let read_pers_struct modname filename =
+let read_pers_struct check modname filename =
+ add_import modname;
let cmi = read_cmi filename in
let name = cmi.cmi_name in
let sign = cmi.cmi_sign in
@@ -360,44 +358,80 @@ let read_pers_struct modname filename =
ps_crcs = crcs;
ps_filename = filename;
ps_flags = flags;
- ps_crcs_checked = false;
} in
if ps.ps_name <> modname then
error (Illegal_renaming(modname, ps.ps_name, filename));
- add_import name;
List.iter
(function Rectypes ->
if not !Clflags.recursive_types then
error (Need_recursive_types(ps.ps_name, !current_unit)))
ps.ps_flags;
+ if check then check_consistency ps;
Hashtbl.add persistent_structures modname (Some ps);
ps
-let find_pers_struct ?(check=true) name =
+let find_pers_struct check name =
if name = "*predef*" then raise Not_found;
- let r =
- try Some (Hashtbl.find persistent_structures name)
- with Not_found -> None
- in
- let ps =
- match r with
- | Some None -> raise Not_found
- | Some (Some sg) -> sg
- | None ->
- (* PR#6843: record the weak dependency ([add_import]) even if
- the [find_in_path_uncap] call below fails to find the .cmi,
- to help make builds more deterministic. *)
- add_import name;
- let filename =
- try find_in_path_uncap !load_path (name ^ ".cmi")
- with Not_found ->
- Hashtbl.add persistent_structures name None;
- raise Not_found
- in
- read_pers_struct name filename
- in
- if check then check_consistency ps;
- ps
+ match Hashtbl.find persistent_structures name with
+ | Some ps -> ps
+ | None -> raise Not_found
+ | exception Not_found ->
+ let filename =
+ try
+ find_in_path_uncap !load_path (name ^ ".cmi")
+ with Not_found ->
+ Hashtbl.add persistent_structures name None;
+ raise Not_found
+ in
+ read_pers_struct check name filename
+
+(* Emits a warning if there is no valid cmi for name *)
+let check_pers_struct name =
+ try
+ ignore (find_pers_struct false name)
+ with
+ | Not_found ->
+ let warn = Warnings.No_cmi_file(name, None) in
+ Location.prerr_warning Location.none warn
+ | Cmi_format.Error err ->
+ let msg = Format.asprintf "%a" Cmi_format.report_error err in
+ let warn = Warnings.No_cmi_file(name, Some msg) in
+ Location.prerr_warning Location.none warn
+ | Error err ->
+ let msg =
+ match err with
+ | Illegal_renaming(name, ps_name, filename) ->
+ Format.asprintf
+ " %a@ contains the compiled interface for @ \
+ %s when %s was expected"
+ Location.print_filename filename ps_name name
+ | Inconsistent_import _ -> assert false
+ | Need_recursive_types(name, _) ->
+ Format.sprintf
+ "%s uses recursive types"
+ name
+ | Missing_module _ -> assert false
+ | Illegal_value_name _ -> assert false
+ in
+ let warn = Warnings.No_cmi_file(name, Some msg) in
+ Location.prerr_warning Location.none warn
+
+let read_pers_struct modname filename =
+ read_pers_struct true modname filename
+
+let find_pers_struct name =
+ find_pers_struct true name
+
+let check_pers_struct name =
+ if not (Hashtbl.mem persistent_structures name) then begin
+ (* PR#6843: record the weak dependency ([add_import]) regardless of
+ whether the check suceeds, to help make builds more
+ deterministic. *)
+ add_import name;
+ if (Warnings.is_active (Warnings.No_cmi_file("", None))) then
+ !add_delayed_check_forward
+ (fun () -> check_pers_struct name)
+ end
let reset_cache () =
current_unit := "";
@@ -724,10 +758,7 @@ and lookup_module ~load lid env : Path.t =
p
with Not_found ->
if s = !current_unit then raise Not_found;
- if !Clflags.transparent_modules && not load then
- try ignore (find_pers_struct ~check:false s)
- with Not_found ->
- Location.prerr_warning Location.none (Warnings.No_cmi_file s)
+ if !Clflags.transparent_modules && not load then check_pers_struct s
else ignore (find_pers_struct s);
Pident(Ident.create_persistent s)
end
@@ -1643,7 +1674,6 @@ let open_signature ?(loc = Location.none) ?(toplevel = false) ovf root sg env =
let read_signature modname filename =
let ps = read_pers_struct modname filename in
- check_consistency ps;
Lazy.force ps.ps_sig
(* Return the CRC of the interface of the given compilation unit *)
@@ -1662,7 +1692,7 @@ let crc_of_unit name =
(* Return the list of imported interfaces with their CRCs *)
-let imports() =
+let imports () =
Consistbl.extract (StringSet.elements !imported_units) crc_units
(* Save a signature to a file *)
@@ -1695,7 +1725,6 @@ let save_signature_with_imports sg modname filename imports =
ps_crcs = (cmi.cmi_name, Some crc) :: imports;
ps_filename = filename;
ps_flags = cmi.cmi_flags;
- ps_crcs_checked = false;
} in
save_pers_struct crc ps;
sg
diff --git a/typing/primitive.ml b/typing/primitive.ml
index 05c4ccfe8b..efe55b1387 100644
--- a/typing/primitive.ml
+++ b/typing/primitive.ml
@@ -69,6 +69,14 @@ let simple ~name ~arity ~alloc =
prim_native_repr_args = make_native_repr_args arity Same_as_ocaml_repr;
prim_native_repr_res = Same_as_ocaml_repr}
+let make ~name ~alloc ~native_name ~native_repr_args ~native_repr_res =
+ {prim_name = name;
+ prim_arity = List.length native_repr_args;
+ prim_alloc = alloc;
+ prim_native_name = native_name;
+ prim_native_repr_args = native_repr_args;
+ prim_native_repr_res = native_repr_res}
+
let parse_declaration valdecl ~native_repr_args ~native_repr_res =
let arity = List.length native_repr_args in
let name, native_name, old_style_noalloc, old_style_float =
diff --git a/typing/primitive.mli b/typing/primitive.mli
index 4872985767..4d2e890189 100644
--- a/typing/primitive.mli
+++ b/typing/primitive.mli
@@ -30,12 +30,22 @@ type description = private
prim_native_repr_args: native_repr list;
prim_native_repr_res: native_repr }
+(* Invariant [List.length d.prim_native_repr_args = d.prim_arity] *)
+
val simple
: name:string
-> arity:int
-> alloc:bool
-> description
+val make
+ : name:string
+ -> alloc:bool
+ -> native_name:string
+ -> native_repr_args: native_repr list
+ -> native_repr_res: native_repr
+ -> description
+
val parse_declaration
: Parsetree.value_description
-> native_repr_args:native_repr list
diff --git a/utils/.ignore b/utils/.ignore
deleted file mode 100644
index 25b6d3bc86..0000000000
--- a/utils/.ignore
+++ /dev/null
@@ -1 +0,0 @@
-config.ml
diff --git a/utils/warnings.ml b/utils/warnings.ml
index 884f2ee0da..d85385f013 100644
--- a/utils/warnings.ml
+++ b/utils/warnings.ml
@@ -66,7 +66,7 @@ type t =
| Bad_env_variable of string * string (* 46 *)
| Attribute_payload of string * string (* 47 *)
| Eliminated_optional_arguments of string list (* 48 *)
- | No_cmi_file of string (* 49 *)
+ | No_cmi_file of string * string option (* 49 *)
| Bad_docstring of bool (* 50 *)
| Expect_tailcall (* 51 *)
| Fragile_literal_pattern (* 52 *)
@@ -401,8 +401,12 @@ let message = function
Printf.sprintf "implicit elimination of optional argument%s %s"
(if List.length sl = 1 then "" else "s")
(String.concat ", " sl)
- | No_cmi_file s ->
- "no cmi file was found in path for module " ^ s
+ | No_cmi_file(name, None) ->
+ "no cmi file was found in path for module " ^ name
+ | No_cmi_file(name, Some msg) ->
+ Printf.sprintf
+ "no valid cmi file was found in path for module %s. %s"
+ name msg
| Bad_docstring unattached ->
if unattached then "unattached documentation comment (ignored)"
else "ambiguous documentation comment"
diff --git a/utils/warnings.mli b/utils/warnings.mli
index 1782e481ae..9c61cfca5b 100644
--- a/utils/warnings.mli
+++ b/utils/warnings.mli
@@ -61,7 +61,7 @@ type t =
| Bad_env_variable of string * string (* 46 *)
| Attribute_payload of string * string (* 47 *)
| Eliminated_optional_arguments of string list (* 48 *)
- | No_cmi_file of string (* 49 *)
+ | No_cmi_file of string * string option (* 49 *)
| Bad_docstring of bool (* 50 *)
| Expect_tailcall (* 51 *)
| Fragile_literal_pattern (* 52 *)
diff --git a/yacc/.ignore b/yacc/.ignore
deleted file mode 100644
index 833c2dea6d..0000000000
--- a/yacc/.ignore
+++ /dev/null
@@ -1,4 +0,0 @@
-ocamlyacc
-ocamlyacc.exe
-version.h
-.gdb_history
diff --git a/yacc/closure.c b/yacc/closure.c
index d84c125bf2..21a161e1e3 100644
--- a/yacc/closure.c
+++ b/yacc/closure.c
@@ -23,9 +23,9 @@ static unsigned *EFF;
-void print_EFF ();
-void print_first_derives ();
-void print_closure ();
+void print_EFF (void);
+void print_first_derives (void);
+void print_closure (void);
void set_EFF(void)
{
diff --git a/yacc/lr0.c b/yacc/lr0.c
index a5a62d341c..1106eb7d90 100644
--- a/yacc/lr0.c
+++ b/yacc/lr0.c
@@ -48,7 +48,7 @@ void initialize_states (void);
void save_reductions (void);
void new_itemsets (void);
void save_shifts (void);
-void print_derives ();
+void print_derives (void);
void show_cores (void), show_ritems (void), show_rrhs (void), show_shifts (void);
void allocate_itemsets(void)