diff options
Diffstat (limited to 'src/__undefined.c')
-rw-r--r-- | src/__undefined.c | 31 |
1 files changed, 31 insertions, 0 deletions
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 <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#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) +*/ |