summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-07-24 12:58:12 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-07-24 12:58:12 +0000
commit7b8776e106238ea16b0d72b60eba31383642f234 (patch)
tree53dbaf62fe970de866870ed9b67adc7bca984686
parent45375784668e586efd81b5b89ec43f5717aef456 (diff)
Separation de main() dans un fichier a part.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@937 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--asmrun/.depend414
-rw-r--r--asmrun/Makefile4
-rw-r--r--asmrun/startup.c (renamed from asmrun/main.c)2
-rw-r--r--byterun/.depend26
-rw-r--r--byterun/Makefile3
-rw-r--r--byterun/main.c234
-rw-r--r--byterun/startup.c246
7 files changed, 513 insertions, 416 deletions
diff --git a/asmrun/.depend b/asmrun/.depend
index 18f0cb07e..7c1008426 100644
--- a/asmrun/.depend
+++ b/asmrun/.depend
@@ -1,174 +1,240 @@
-alloc.o : alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h ../byterun/stacks.h
-array.o : array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-compare.o : compare.c ../byterun/fail.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-extern.o : extern.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h ../byterun/str.h
-fail.o : fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
- ../byterun/memory.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/roots.h ../byterun/signals.h stack.h
-floats.o : floats.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/minor_gc.h ../byterun/stacks.h
-freelist.o : freelist.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/gc_ctrl.h ../byterun/major_gc.h
-gc_ctrl.o : gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-hash.o : hash.c ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h
-intern.o : intern.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h
-ints.o : ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-io.o : io.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/io.h ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/minor_gc.h ../byterun/signals.h ../byterun/sys.h
-lexing.o : lexing.c ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/stacks.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-main.o : main.c ../byterun/gc.h ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/gc_ctrl.h ../byterun/sys.h
-major_gc.o : major_gc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/freelist.h \
- ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/roots.h
-md5.o : md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
-memory.o : memory.c ../byterun/fail.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/freelist.h \
- ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \
- ../byterun/minor_gc.h ../byterun/signals.h
-minor_gc.o : minor_gc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h ../byterun/minor_gc.h \
- ../byterun/roots.h ../byterun/signals.h
-misc.o : misc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/misc.h
-obj.o : obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h ../byterun/prims.h
-parsing.o : parsing.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/alloc.h
-roots.o : roots.c ../byterun/memory.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/roots.h \
- stack.h
-signals.o : signals.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/fail.h ../byterun/signals.h
-str.o : str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h
-sys.o : sys.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/instruct.h ../byterun/signals.h ../byterun/stacks.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-terminfo.o : terminfo.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/io.h
-alloc.d.o : alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h ../byterun/stacks.h
-array.d.o : array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-compare.d.o : compare.c ../byterun/fail.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-extern.d.o : extern.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h ../byterun/str.h
-fail.d.o : fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
- ../byterun/memory.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/roots.h ../byterun/signals.h stack.h
-floats.d.o : floats.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/minor_gc.h ../byterun/stacks.h
-freelist.d.o : freelist.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/freelist.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/gc_ctrl.h ../byterun/major_gc.h
-gc_ctrl.d.o : gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/gc.h \
- ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-hash.d.o : hash.c ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h
-intern.d.o : intern.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \
- ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h
-ints.d.o : ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-io.d.o : io.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/io.h ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/minor_gc.h ../byterun/signals.h ../byterun/sys.h
-lexing.d.o : lexing.c ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/stacks.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/str.h
-main.d.o : main.c ../byterun/gc.h ../byterun/mlvalues.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/misc.h ../byterun/gc_ctrl.h ../byterun/sys.h
-major_gc.d.o : major_gc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/freelist.h \
- ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/roots.h
-md5.d.o : md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
-memory.d.o : memory.c ../byterun/fail.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/freelist.h \
- ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \
- ../byterun/minor_gc.h ../byterun/signals.h
-minor_gc.d.o : minor_gc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h ../byterun/minor_gc.h \
- ../byterun/roots.h ../byterun/signals.h
-misc.d.o : misc.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/misc.h
-obj.d.o : obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
- ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h ../byterun/prims.h
-parsing.d.o : parsing.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/mlvalues.h ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/alloc.h
-roots.d.o : roots.c ../byterun/memory.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
- ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/roots.h \
- stack.h
-signals.d.o : signals.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
- ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
- ../byterun/fail.h ../byterun/signals.h
-str.d.o : str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
- ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/fail.h
-sys.d.o : sys.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/instruct.h ../byterun/signals.h ../byterun/stacks.h ../byterun/memory.h \
- ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
-terminfo.d.o : terminfo.c ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
- ../byterun/alloc.h ../byterun/misc.h ../byterun/mlvalues.h ../byterun/fail.h \
- ../byterun/io.h
+alloc.o: alloc.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h \
+ ../byterun/stacks.h
+array.o: array.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
+compare.o: compare.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/str.h
+extern.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/reverse.h ../byterun/str.h
+fail.o: fail.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/memory.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h stack.h
+floats.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/stacks.h
+freelist.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h
+gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
+hash.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h
+intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/reverse.h
+ints.o: ints.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/str.h
+io.o: io.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/signals.h \
+ ../byterun/sys.h
+lexing.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/stacks.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/str.h
+main.o: main.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h
+major_gc.o: major_gc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/roots.h
+md5.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
+memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \
+ ../byterun/minor_gc.h ../byterun/signals.h
+minor_gc.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h
+misc.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/misc.h
+obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h \
+ ../byterun/prims.h
+parsing.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/alloc.h
+roots.o: roots.c ../byterun/memory.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/roots.h \
+ stack.h
+signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/fail.h ../byterun/signals.h
+startup.o: startup.c ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/gc_ctrl.h ../byterun/sys.h
+str.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h
+sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/instruct.h \
+ ../byterun/signals.h ../byterun/stacks.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
+terminfo.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
+alloc.d.o: alloc.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h \
+ ../byterun/stacks.h
+array.d.o: array.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
+compare.d.o: compare.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/str.h
+extern.d.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/reverse.h ../byterun/str.h
+fail.d.o: fail.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/memory.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h stack.h
+floats.d.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/stacks.h
+freelist.d.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h
+gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h
+hash.d.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h
+intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \
+ ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/reverse.h
+ints.d.o: ints.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/str.h
+io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/signals.h \
+ ../byterun/sys.h
+lexing.d.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/stacks.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/str.h
+main.d.o: main.c ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h
+major_gc.d.o: major_gc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/roots.h
+md5.d.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
+memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \
+ ../byterun/minor_gc.h ../byterun/signals.h
+minor_gc.d.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h
+misc.d.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/misc.h
+obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/minor_gc.h \
+ ../byterun/prims.h
+parsing.d.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/alloc.h
+roots.d.o: roots.c ../byterun/memory.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/roots.h \
+ stack.h
+signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/fail.h ../byterun/signals.h
+startup.d.o: startup.c ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/gc_ctrl.h ../byterun/sys.h
+str.d.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h
+sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/instruct.h \
+ ../byterun/signals.h ../byterun/stacks.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
+terminfo.d.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/io.h
diff --git a/asmrun/Makefile b/asmrun/Makefile
index 1b30f1e37..cb5df5d11 100644
--- a/asmrun/Makefile
+++ b/asmrun/Makefile
@@ -5,7 +5,7 @@ FLAGS=-I../byterun -DNATIVE_CODE -DTARGET_$(ARCH) -DSYS_$(SYSTEM)
CFLAGS=$(FLAGS) -O $(NATIVECCCOMPOPTS)
DFLAGS=$(FLAGS) -g -DDEBUG $(NATIVECCCOMPOPTS)
-COBJS=main.o fail.o roots.o signals.o \
+COBJS=startup.o main.o fail.o roots.o signals.o \
misc.o freelist.o major_gc.o minor_gc.o memory.o alloc.o compare.o ints.o \
floats.o str.o array.o io.o extern.o intern.o hash.o sys.o parsing.o \
gc_ctrl.o terminfo.o md5.o obj.o lexing.o
@@ -34,6 +34,8 @@ install:
power.o: power-$(SYSTEM).o
cp power-$(SYSTEM).o power.o
+main.c: ../byterun/main.c
+ ln -s ../byterun/main.c main.c
misc.c: ../byterun/misc.c
ln -s ../byterun/misc.c misc.c
freelist.c: ../byterun/freelist.c
diff --git a/asmrun/main.c b/asmrun/startup.c
index f191a94e5..780850bb3 100644
--- a/asmrun/main.c
+++ b/asmrun/startup.c
@@ -42,7 +42,7 @@ static void init_atoms()
extern value caml_start_program P((void));
-int main(argc, argv)
+int caml_main(argc, argv)
int argc;
char * argv[];
{
diff --git a/byterun/.depend b/byterun/.depend
index 06800186c..4e628862b 100644
--- a/byterun/.depend
+++ b/byterun/.depend
@@ -37,11 +37,10 @@ ints.o: ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
io.o: io.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
mlvalues.h fail.h io.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
signals.h sys.h
-lexing.o: lexing.c mlvalues.h config.h ../config/m.h ../config/s.h \
- misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h
-main.o: main.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
- mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h \
- minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h sys.h
+lexing.o: lexing.c fail.h misc.h config.h ../config/m.h ../config/s.h \
+ mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ str.h
+main.o: main.c misc.h config.h ../config/m.h ../config/s.h
major_gc.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \
misc.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h roots.h
md5.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
@@ -72,6 +71,10 @@ signals.o: signals.c alloc.h misc.h config.h ../config/m.h \
minor_gc.h roots.h signals.h
stacks.o: stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h \
mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h
+startup.o: startup.c config.h ../config/m.h ../config/s.h alloc.h \
+ misc.h mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h \
+ intext.h io.h minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ sys.h
str.o: str.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
mlvalues.h fail.h
sys.o: sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
@@ -119,11 +122,10 @@ ints.d.o: ints.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
io.d.o: io.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
mlvalues.h fail.h io.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
signals.h sys.h
-lexing.d.o: lexing.c mlvalues.h config.h ../config/m.h ../config/s.h \
- misc.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h str.h
-main.d.o: main.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
- mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h intext.h io.h \
- minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h sys.h
+lexing.d.o: lexing.c fail.h misc.h config.h ../config/m.h ../config/s.h \
+ mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ str.h
+main.d.o: main.c misc.h config.h ../config/m.h ../config/s.h
major_gc.d.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \
misc.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h roots.h
md5.d.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
@@ -154,6 +156,10 @@ signals.d.o: signals.c alloc.h misc.h config.h ../config/m.h \
minor_gc.h roots.h signals.h
stacks.d.o: stacks.c config.h ../config/m.h ../config/s.h fail.h misc.h \
mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h
+startup.d.o: startup.c config.h ../config/m.h ../config/s.h alloc.h \
+ misc.h mlvalues.h exec.h fail.h fix_code.h gc_ctrl.h interp.h \
+ intext.h io.h minor_gc.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ sys.h
str.d.o: str.c alloc.h misc.h config.h ../config/m.h ../config/s.h \
mlvalues.h fail.h
sys.d.o: sys.c config.h ../config/m.h ../config/s.h alloc.h misc.h \
diff --git a/byterun/Makefile b/byterun/Makefile
index f1056a4ee..68aa02e7c 100644
--- a/byterun/Makefile
+++ b/byterun/Makefile
@@ -4,8 +4,9 @@ CC=$(BYTECC)
CFLAGS=-O $(BYTECCCOMPOPTS)
DFLAGS=-g -DDEBUG $(BYTECCCOMPOPTS)
-OBJS=interp.o misc.o stacks.o fix_code.o main.o fail.o signals.o \
+OBJS=interp.o misc.o stacks.o fix_code.o startup.o main.o \
freelist.o major_gc.o minor_gc.o memory.o alloc.o roots.o \
+ fail.o signals.o \
compare.o ints.o floats.o str.o array.o io.o extern.o intern.o \
hash.o sys.o meta.o parsing.o gc_ctrl.o terminfo.o md5.o obj.o \
lexing.o
diff --git a/byterun/main.c b/byterun/main.c
index 9337a9b46..6538049d4 100644
--- a/byterun/main.c
+++ b/byterun/main.c
@@ -11,240 +11,16 @@
/* $Id$ */
-/* Start-up code */
+/* Main entry point (can be overriden by a user-provided main()
+ function that calls caml_main() later). */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include "config.h"
-#ifdef HAS_UNISTD
-#include <unistd.h>
-#endif
-#include "alloc.h"
-#include "exec.h"
-#include "fail.h"
-#include "fix_code.h"
-#include "gc_ctrl.h"
-#include "interp.h"
-#include "intext.h"
-#include "io.h"
-#include "minor_gc.h"
#include "misc.h"
-#include "mlvalues.h"
-#include "stacks.h"
-#include "sys.h"
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
+extern int caml_main P((int, char **));
-header_t atom_table[256];
-code_t start_code;
-asize_t code_size;
-
-static void init_atoms()
-{
- int i;
- for(i = 0; i < 256; i++) atom_table[i] = Make_header(0, i, White);
-}
-
-static unsigned long read_size(p)
- unsigned char * p;
-{
- return ((unsigned long) p[0] << 24) + ((unsigned long) p[1] << 16) +
- ((unsigned long) p[2] << 8) + p[3];
-}
-
-#define FILE_NOT_FOUND (-1)
-#define TRUNCATED_FILE (-2)
-#define BAD_MAGIC_NUM (-3)
-
-static int read_trailer(fd, trail)
- int fd;
- struct exec_trailer * trail;
-{
- char buffer[TRAILER_SIZE];
-
- lseek(fd, (long) -TRAILER_SIZE, 2);
- if (read(fd, buffer, TRAILER_SIZE) < TRAILER_SIZE) return TRUNCATED_FILE;
- trail->code_size = read_size(buffer);
- trail->data_size = read_size(buffer+4);
- trail->symbol_size = read_size(buffer+8);
- trail->debug_size = read_size(buffer+12);
- if (strncmp(buffer + 16, EXEC_MAGIC, 12) == 0)
- return 0;
- else
- return BAD_MAGIC_NUM;
-}
-
-int attempt_open(name, trail, do_open_script)
- char ** name;
- struct exec_trailer * trail;
- int do_open_script;
-{
- char * truename;
- int fd;
- int err;
- char buf [2];
-
- truename = searchpath(*name);
- if (truename == 0) truename = *name; else *name = truename;
- fd = open(truename, O_RDONLY | O_BINARY);
- if (fd == -1) return FILE_NOT_FOUND;
- if (!do_open_script){
- err = read (fd, buf, 2);
- if (err < 2) { close(fd); return TRUNCATED_FILE; }
- if (buf [0] == '#' && buf [1] == '!') { close(fd); return BAD_MAGIC_NUM; }
- }
- err = read_trailer(fd, trail);
- if (err != 0) { close(fd); return err; }
- return fd;
-}
-
-/* Invocation of camlrun: 4 cases.
-
- 1. runtime + bytecode
- user types: camlrun [options] bytecode args...
- arguments: camlrun [options] bytecode args...
-
- 2. bytecode script
- user types: bytecode args...
- 2a (kernel 1) arguments: camlrun ./bytecode args...
- 2b (kernel 2) arguments: bytecode bytecode args...
-
- 3. concatenated runtime and bytecode
- user types: composite args...
- arguments: composite args...
-
-Algorithm:
- 1- If argument 0 is a valid byte-code file that does not start with #!,
- then we are in case 3 and we pass the same command line to the
- Caml Light program.
- 2- In all other cases, we parse the command line as:
- (whatever) [options] bytecode args...
- and we strip "(whatever) [options]" from the command line.
-
-*/
-
-extern void init_ieee_floats();
-
-#ifdef HAS_UI
-int caml_main(argc, argv)
-#else
int main(argc, argv)
-#endif
int argc;
- char * argv[];
+ char ** argv;
{
- int fd;
- struct exec_trailer trail;
- int i;
- struct longjmp_buffer raise_buf;
- struct channel * chan;
- int verbose_init = 0, percent_free_init = Percent_free_def;
- long minor_heap_init = Minor_heap_def, heap_chunk_init = Heap_chunk_def;
-
- /* Machine-dependent initialization of the floating-point hardware
- so that it behaves as much as possible as specified in IEEE */
- init_ieee_floats();
-
- /* Parsing of command-line */
-#ifdef DEBUG
- verbose_init = 1;
-#endif
-
- i = 0;
- fd = attempt_open(&argv[0], &trail, 0);
-
- if (fd < 0) {
-
- for(i = 1; i < argc && argv[i][0] == '-'; i++) {
- switch(argv[i][1]) {
-#ifdef DEBUG
- case 't': {
- extern int trace_flag;
- trace_flag = 1;
- break;
- }
-#endif
- case 'v':
- verbose_init = 1;
- break;
- default:
- fatal_error_arg("Unknown option %s.\n", argv[i]);
- }
- }
-
- if (argv[i] == 0)
- fatal_error("No bytecode file specified.\n");
-
- fd = attempt_open(&argv[i], &trail, 1);
-
- switch(fd) {
- case FILE_NOT_FOUND:
- fatal_error_arg("Fatal error: cannot find file %s\n", argv[i]);
- break;
- case TRUNCATED_FILE:
- case BAD_MAGIC_NUM:
- fatal_error_arg(
- "Fatal error: the file %s is not a bytecode executable file\n",
- argv[i]);
- break;
- }
- }
-
- /* Runtime options. The option letter is the first letter of the
- last word of the ML name of the option (see [lib/gc.mli]). */
-
- { char *opt = getenv ("CAMLRUNPARAM");
- if (opt != NULL){
- while (*opt != '\0'){
- switch (*opt++){
- case 's': sscanf (opt, "=%ld", &minor_heap_init); break;
- case 'i': sscanf (opt, "=%ld", &heap_chunk_init); break;
- case 'o': sscanf (opt, "=%d", &percent_free_init); break;
- case 'v': sscanf (opt, "=%d", &verbose_init); break;
- }
- }
- }
- }
-
- if (sigsetjmp(raise_buf.buf, 1) == 0) {
-
- external_raise = &raise_buf;
-
- init_gc (minor_heap_init, heap_chunk_init, percent_free_init,
- verbose_init);
- init_stack();
- init_atoms();
-
- lseek(fd, - (long) (TRAILER_SIZE + trail.code_size + trail.data_size
- + trail.symbol_size + trail.debug_size), 2);
-
- code_size = trail.code_size;
- start_code = (code_t) stat_alloc(code_size);
- if (read(fd, (char *) start_code, code_size) != code_size)
- fatal_error("Fatal error: truncated bytecode file.\n");
-
-#ifdef ARCH_BIG_ENDIAN
- fixup_endianness(start_code, code_size);
-#endif
-
- chan = open_descr(fd);
- global_data = input_value(chan);
- close_channel(chan);
- /* Ensure that the globals are in the major heap. */
- oldify(global_data, &global_data);
-
- sys_init(argv + i);
- interprete(start_code, code_size);
- sys_exit(Val_int(0));
-
- } else {
-
- fatal_error_arg("Fatal error: uncaught exception %s.\n",
- String_val(Field(Field(exn_bucket, 0), 0)));
- }
+ return caml_main(argc, argv);
}
-
diff --git a/byterun/startup.c b/byterun/startup.c
new file mode 100644
index 000000000..92872558c
--- /dev/null
+++ b/byterun/startup.c
@@ -0,0 +1,246 @@
+/***********************************************************************/
+/* */
+/* Objective Caml */
+/* */
+/* Xavier Leroy and Damien Doligez, INRIA Rocquencourt */
+/* */
+/* Copyright 1996 Institut National de Recherche en Informatique et */
+/* Automatique. Distributed only by permission. */
+/* */
+/***********************************************************************/
+
+/* $Id$ */
+
+/* Start-up code */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include "config.h"
+#ifdef HAS_UNISTD
+#include <unistd.h>
+#endif
+#include "alloc.h"
+#include "exec.h"
+#include "fail.h"
+#include "fix_code.h"
+#include "gc_ctrl.h"
+#include "interp.h"
+#include "intext.h"
+#include "io.h"
+#include "minor_gc.h"
+#include "misc.h"
+#include "mlvalues.h"
+#include "stacks.h"
+#include "sys.h"
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
+header_t atom_table[256];
+code_t start_code;
+asize_t code_size;
+
+static void init_atoms()
+{
+ int i;
+ for(i = 0; i < 256; i++) atom_table[i] = Make_header(0, i, White);
+}
+
+static unsigned long read_size(p)
+ unsigned char * p;
+{
+ return ((unsigned long) p[0] << 24) + ((unsigned long) p[1] << 16) +
+ ((unsigned long) p[2] << 8) + p[3];
+}
+
+#define FILE_NOT_FOUND (-1)
+#define TRUNCATED_FILE (-2)
+#define BAD_MAGIC_NUM (-3)
+
+static int read_trailer(fd, trail)
+ int fd;
+ struct exec_trailer * trail;
+{
+ char buffer[TRAILER_SIZE];
+
+ lseek(fd, (long) -TRAILER_SIZE, 2);
+ if (read(fd, buffer, TRAILER_SIZE) < TRAILER_SIZE) return TRUNCATED_FILE;
+ trail->code_size = read_size(buffer);
+ trail->data_size = read_size(buffer+4);
+ trail->symbol_size = read_size(buffer+8);
+ trail->debug_size = read_size(buffer+12);
+ if (strncmp(buffer + 16, EXEC_MAGIC, 12) == 0)
+ return 0;
+ else
+ return BAD_MAGIC_NUM;
+}
+
+int attempt_open(name, trail, do_open_script)
+ char ** name;
+ struct exec_trailer * trail;
+ int do_open_script;
+{
+ char * truename;
+ int fd;
+ int err;
+ char buf [2];
+
+ truename = searchpath(*name);
+ if (truename == 0) truename = *name; else *name = truename;
+ fd = open(truename, O_RDONLY | O_BINARY);
+ if (fd == -1) return FILE_NOT_FOUND;
+ if (!do_open_script){
+ err = read (fd, buf, 2);
+ if (err < 2) { close(fd); return TRUNCATED_FILE; }
+ if (buf [0] == '#' && buf [1] == '!') { close(fd); return BAD_MAGIC_NUM; }
+ }
+ err = read_trailer(fd, trail);
+ if (err != 0) { close(fd); return err; }
+ return fd;
+}
+
+/* Invocation of camlrun: 4 cases.
+
+ 1. runtime + bytecode
+ user types: camlrun [options] bytecode args...
+ arguments: camlrun [options] bytecode args...
+
+ 2. bytecode script
+ user types: bytecode args...
+ 2a (kernel 1) arguments: camlrun ./bytecode args...
+ 2b (kernel 2) arguments: bytecode bytecode args...
+
+ 3. concatenated runtime and bytecode
+ user types: composite args...
+ arguments: composite args...
+
+Algorithm:
+ 1- If argument 0 is a valid byte-code file that does not start with #!,
+ then we are in case 3 and we pass the same command line to the
+ Caml Light program.
+ 2- In all other cases, we parse the command line as:
+ (whatever) [options] bytecode args...
+ and we strip "(whatever) [options]" from the command line.
+
+*/
+
+extern void init_ieee_floats();
+
+int caml_main(argc, argv)
+ int argc;
+ char ** argv;
+{
+ int fd;
+ struct exec_trailer trail;
+ int i;
+ struct longjmp_buffer raise_buf;
+ struct channel * chan;
+ int verbose_init = 0, percent_free_init = Percent_free_def;
+ long minor_heap_init = Minor_heap_def, heap_chunk_init = Heap_chunk_def;
+
+ /* Machine-dependent initialization of the floating-point hardware
+ so that it behaves as much as possible as specified in IEEE */
+ init_ieee_floats();
+
+ /* Parsing of command-line */
+#ifdef DEBUG
+ verbose_init = 1;
+#endif
+
+ i = 0;
+ fd = attempt_open(&argv[0], &trail, 0);
+
+ if (fd < 0) {
+
+ for(i = 1; i < argc && argv[i][0] == '-'; i++) {
+ switch(argv[i][1]) {
+#ifdef DEBUG
+ case 't': {
+ extern int trace_flag;
+ trace_flag = 1;
+ break;
+ }
+#endif
+ case 'v':
+ verbose_init = 1;
+ break;
+ default:
+ fatal_error_arg("Unknown option %s.\n", argv[i]);
+ }
+ }
+
+ if (argv[i] == 0)
+ fatal_error("No bytecode file specified.\n");
+
+ fd = attempt_open(&argv[i], &trail, 1);
+
+ switch(fd) {
+ case FILE_NOT_FOUND:
+ fatal_error_arg("Fatal error: cannot find file %s\n", argv[i]);
+ break;
+ case TRUNCATED_FILE:
+ case BAD_MAGIC_NUM:
+ fatal_error_arg(
+ "Fatal error: the file %s is not a bytecode executable file\n",
+ argv[i]);
+ break;
+ }
+ }
+
+ /* Runtime options. The option letter is the first letter of the
+ last word of the ML name of the option (see [lib/gc.mli]). */
+
+ { char *opt = getenv ("CAMLRUNPARAM");
+ if (opt != NULL){
+ while (*opt != '\0'){
+ switch (*opt++){
+ case 's': sscanf (opt, "=%ld", &minor_heap_init); break;
+ case 'i': sscanf (opt, "=%ld", &heap_chunk_init); break;
+ case 'o': sscanf (opt, "=%d", &percent_free_init); break;
+ case 'v': sscanf (opt, "=%d", &verbose_init); break;
+ }
+ }
+ }
+ }
+
+ if (sigsetjmp(raise_buf.buf, 1) == 0) {
+
+ external_raise = &raise_buf;
+
+ init_gc (minor_heap_init, heap_chunk_init, percent_free_init,
+ verbose_init);
+ init_stack();
+ init_atoms();
+
+ lseek(fd, - (long) (TRAILER_SIZE + trail.code_size + trail.data_size
+ + trail.symbol_size + trail.debug_size), 2);
+
+ code_size = trail.code_size;
+ start_code = (code_t) stat_alloc(code_size);
+ if (read(fd, (char *) start_code, code_size) != code_size)
+ fatal_error("Fatal error: truncated bytecode file.\n");
+
+#ifdef ARCH_BIG_ENDIAN
+ fixup_endianness(start_code, code_size);
+#endif
+
+ chan = open_descr(fd);
+ global_data = input_value(chan);
+ close_channel(chan);
+ /* Ensure that the globals are in the major heap. */
+ oldify(global_data, &global_data);
+
+ sys_init(argv + i);
+ interprete(start_code, code_size);
+ sys_exit(Val_int(0));
+
+ } else {
+
+ fatal_error_arg("Fatal error: uncaught exception %s.\n",
+ String_val(Field(Field(exn_bucket, 0), 0)));
+ }
+}
+