diff options
author | Jakob Kaivo <jkk@ung.org> | 2023-11-14 14:59:21 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2023-11-14 14:59:21 -0500 |
commit | 00a8e6711ea5f22e47f81bed85b49511a9c2a60e (patch) | |
tree | 30b1bcb0bc62d0ad34754d59845bf42c1d42a4b5 | |
parent | 30226c2f0959ef4a74f67de4ed762cdc4dffb82f (diff) |
add a function that triggers UB if the assert() macro is suppressed to access an actual function
-rw-r--r-- | mk/assert.d | 10 | ||||
-rw-r--r-- | src/assert/assert.c | 13 |
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) +*/ |