From e30e935d35c5024a3d27abfda73957f28969584f Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 31 Jan 2024 14:48:52 -0500 Subject: add dedicated undefined behavior handler, simplify most checks --- src/__undefined.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/__undefined.c (limited to 'src/__undefined.c') diff --git a/src/__undefined.c b/src/__undefined.c new file mode 100644 index 00000000..9bffff76 --- /dev/null +++ b/src/__undefined.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include "_safety.h" + +#if __STDC_VERSION__ < 199901L +static _Noreturn void _Exit(int); +#include "stdlib/_Exit.c" +#endif + +_Noreturn void __undefined(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "Undefined Behavior: "); + vfprintf(stderr, fmt, ap); + if (__checked_call.file) { + fprintf(stderr, " (source: %s:%ju", __checked_call.file, __checked_call.line); + if (__checked_call.func) { + fprintf(stderr, ":%s()", __checked_call.func); + } + fprintf(stderr, ")"); + } + fprintf(stderr, "\n"); + va_end(ap); + _Exit(-1); +} + +/* +STDC(0) +*/ -- cgit v1.2.1