summaryrefslogtreecommitdiff
path: root/src/__undefined.c
blob: 6f61939305a9607caf4001644ce58059c08062f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include "_safety.h"

#include "_forced/_Exit.h"

_Noreturn void __undefined(const char *fmt, ...)
{
	___signal.current = 0;

	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)
*/