summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/assert.d10
-rw-r--r--src/assert/assert.c13
2 files changed, 23 insertions, 0 deletions
diff --git a/mk/assert.d b/mk/assert.d
new file mode 100644
index 00000000..aae9fcd0
--- /dev/null
+++ b/mk/assert.d
@@ -0,0 +1,10 @@
+libc_C.0: libc.a(assert.o)
+libc.a(assert.o): $(OBJDIR)/assert.o
+ @$(AR) $(ARFLAGS) $@ $(OBJDIR)/$%
+
+$(OBJDIR)/assert.o: src/assert/assert.c
+$(OBJDIR)/assert.o: src/stdlib/_stdlib.h
+$(OBJDIR)/assert.o:
+ @echo " [CC] $@"
+ @mkdir -p $(@D)
+ @$(CC) -c -o $@ $(CFLAGS) src/assert/assert.c
diff --git a/src/assert/assert.c b/src/assert/assert.c
new file mode 100644
index 00000000..2a5551a4
--- /dev/null
+++ b/src/assert/assert.c
@@ -0,0 +1,13 @@
+#include <stdlib.h>
+#include "stdlib/_stdlib.h"
+
+_Noreturn void assert(int exp)
+{
+ (void)exp;
+ __stdlib.constraint_handler("Undefined Behavior: The assert() macro has been suppressed to access an actual function", NULL, 0);
+ abort();
+}
+
+/*
+STDC(0)
+*/