core: Add abort.

* build-aux/configure-lib.sh (libmes_SOURCES): Add abort.c.
* src/posix.c (abort_): New function: use it.
* include/mes/builtins.h: Declare it.
* kaem.run: Add it.
* simple.make (M2_SOURCES): Likewise.
This commit is contained in:
Jan Nieuwenhuizen 2019-11-10 16:04:25 +01:00
parent 52733ced9a
commit 536ed43b12
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
6 changed files with 14 additions and 1 deletions

View File

@ -79,6 +79,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 = linux; then
@ -247,7 +248,6 @@ lib/stdio/fileno.c
lib/stdio/freopen.c
lib/stdio/perror.c
lib/stdlib/__exit.c
lib/stdlib/abort.c
lib/stdlib/abs.c
lib/stdlib/alloca.c
lib/stdlib/atexit.c

View File

@ -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 ();

View File

@ -91,6 +91,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 \

View File

@ -132,6 +132,7 @@ M2_SOURCES = \
lib/string/strcmp.c \
lib/string/memcmp.c \
lib/linux/unlink.c \
lib/stdlib/abort.c \
src/m2.c
M2_TODO = \

View File

@ -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);

View File

@ -31,6 +31,15 @@
#include <sys/wait.h>
#include <unistd.h>
struct scm *
abort_ () /*:((name . "abort")) */
{
if (g_debug > 0)
eputs ("abort!\n");
abort ();
return cell_unspecified;
}
struct scm *
exit_ (struct scm *x) /*:((name . "exit")) */
{