diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | libgcompat/internal.c | 17 | ||||
-rw-r--r-- | libgcompat/internal.h | 14 |
3 files changed, 33 insertions, 0 deletions
@@ -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 |