diff options
author | pierreweis <Pierre.Weis@inria.fr> | 2015-11-12 14:38:00 +0100 |
---|---|---|
committer | pierreweis <Pierre.Weis@inria.fr> | 2015-11-12 14:38:00 +0100 |
commit | 97cfe7d88231029464596fb4c38cc2c677c029ed (patch) | |
tree | e8695a8879385f1234fa10db9eb6040025ffeff5 | |
parent | 468a014650f448b3f68649472e7196fc977f4fa2 (diff) | |
parent | 9dfa69e54698842ece80ee0ac11aa6ede1f2a1b4 (diff) | |
download | ocaml-97cfe7d88231029464596fb4c38cc2c677c029ed.tar.gz |
Merge branch 'trunk' of ssh://github.com/ocaml/ocaml into trunk
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 @@ -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 Binary files differindex 33d3b3a828..ba32993f0b 100755 --- a/boot/ocamlc +++ b/boot/ocamlc diff --git a/boot/ocamldep b/boot/ocamldep Binary files differindex 844584aaf9..4a47869bcc 100755 --- a/boot/ocamldep +++ b/boot/ocamldep diff --git a/boot/ocamllex b/boot/ocamllex Binary files differindex bae5a2a708..911786114f 100755 --- a/boot/ocamllex +++ b/boot/ocamllex 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) |