diff --git a/build-aux/configure-lib.sh b/build-aux/configure-lib.sh index ab47872e..4561d7ba 100644 --- a/build-aux/configure-lib.sh +++ b/build-aux/configure-lib.sh @@ -116,6 +116,7 @@ lib/ctype/isspace.c lib/ctype/isxdigit.c lib/mes/assert_msg.c lib/posix/write.c +lib/stdlib/abort.c lib/stdlib/atoi.c " if test $mes_kernel = gnu; then @@ -338,7 +339,6 @@ lib/stdio/fscanf.c lib/stdio/perror.c lib/stdio/vfscanf.c lib/stdlib/__exit.c -lib/stdlib/abort.c lib/stdlib/abs.c lib/stdlib/alloca.c lib/stdlib/atexit.c diff --git a/include/mes/builtins.h b/include/mes/builtins.h index 8b473dbd..07609ddf 100644 --- a/include/mes/builtins.h +++ b/include/mes/builtins.h @@ -102,6 +102,7 @@ struct scm *module_variable (struct scm *module, struct scm *name); struct scm *module_ref (struct scm *module, struct scm *name); struct scm *module_define_x (struct scm *module, struct scm *name, struct scm *value); /* src/posix.c */ +struct scm *abort_ (); struct scm *exit_ (struct scm *x); struct scm *peek_byte (); struct scm *read_byte (); diff --git a/kaem.run b/kaem.run index 7255f1d4..79737175 100644 --- a/kaem.run +++ b/kaem.run @@ -92,6 +92,7 @@ M2-Planet \ -f lib/string/strcmp.c \ -f lib/string/memcmp.c \ -f lib/linux/unlink.c \ + -f lib/stdlib/abort.c \ -f src/builtins.c \ -f src/core.c \ -f src/display.c \ diff --git a/simple.make b/simple.make index e8415080..30955da1 100644 --- a/simple.make +++ b/simple.make @@ -134,6 +134,7 @@ M2_SOURCES = \ lib/string/strcmp.c \ lib/string/memcmp.c \ lib/linux/unlink.c \ + lib/stdlib/abort.c \ src/m2.c M2_TODO = \ diff --git a/src/builtins.c b/src/builtins.c index f86e696a..be5c1fb1 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -212,6 +212,7 @@ mes_builtins (struct scm *a) /*:((internal)) */ a = init_builtin (builtin_type, "module-ref", 2, &module_ref, a); a = init_builtin (builtin_type, "module-define!", 3, &module_define_x, a); /* src/posix.c */ + a = init_builtin (builtin_type, "abort", 0, &abort_, a); a = init_builtin (builtin_type, "exit", 1, &exit_, a); a = init_builtin (builtin_type, "peek-byte", 0, &peek_byte, a); a = init_builtin (builtin_type, "read-byte", 0, &read_byte, a); diff --git a/src/posix.c b/src/posix.c index ed887f11..cb06f262 100644 --- a/src/posix.c +++ b/src/posix.c @@ -33,6 +33,15 @@ #include #include +struct scm * +abort_ () /*:((name . "abort")) */ +{ + if (g_debug > 0) + eputs ("abort!\n"); + abort (); + return cell_unspecified; +} + struct scm * exit_ (struct scm *x) /*:((name . "exit")) */ {