summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--libgcompat/internal.c17
-rw-r--r--libgcompat/internal.h14
3 files changed, 33 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index b6bee29..0b4e76c 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@ LIBGCOMPAT_SRC = \
libgcompat/execinfo.c \
libgcompat/gnulib.c \
libgcompat/grp.c \
+ libgcompat/internal.c \
libgcompat/malloc.c \
libgcompat/math.c \
libgcompat/misc.c \
@@ -53,6 +54,7 @@ ${LOADER_NAME}: ${LOADER_OBJ}
.c.o:
$(CC) -c -D_BSD_SOURCE -DLIBGCOMPAT=\"${LIBGCOMPAT_PATH}\" \
-DLINKER=\"${LINKER_PATH}\" -DLOADER=\"${LOADER_NAME}\" \
+ -Ilibgcompat \
-fPIC -std=c99 -Wall -Wextra -Wno-frame-address \
-Wno-unused-parameter ${CFLAGS} ${CPPFLAGS} -o $@ $<
diff --git a/libgcompat/internal.c b/libgcompat/internal.c
new file mode 100644
index 0000000..441b3cc
--- /dev/null
+++ b/libgcompat/internal.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+
+void GCOMPAT__panic(const char *fmt, ...)
+{
+ va_list va;
+
+ fprintf(stderr, "*** gcompat panic ***\n");
+
+ va_start(va, fmt);
+ vfprintf(stderr, fmt, va);
+ va_end(va);
+
+ abort();
+}
diff --git a/libgcompat/internal.h b/libgcompat/internal.h
new file mode 100644
index 0000000..bb107bc
--- /dev/null
+++ b/libgcompat/internal.h
@@ -0,0 +1,14 @@
+#ifndef LIBGCOMPAT_INTERNAL_H
+#define LIBGCOMPAT_INTERNAL_H
+
+void GCOMPAT__panic(const char *fmt, ...) __attribute__((noreturn));
+
+#define GCOMPAT__assert_with_reason(chk, fmt, ...) \
+ do { \
+ if (!(chk)) { \
+ GCOMPAT__panic(fmt, __VA_ARGS__); \
+ } \
+ } \
+ while(0);
+
+#endif