parent
f456c90a9b
commit
3a32d0929e
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef _ATTRS_H
|
||||||
|
#define _ATTRS_H
|
||||||
|
|
||||||
|
#define pure __attribute__((pure))
|
||||||
|
#define noglobal __attribute__((const))
|
||||||
|
#define noinline __attribute__((noinline))
|
||||||
|
#define cold __attribute__((cold))
|
||||||
|
|
||||||
|
#ifndef DEBUG
|
||||||
|
#define _force_inline __attribute__((gnu_inline)) inline extern
|
||||||
|
#else
|
||||||
|
#define _force_inline __attribute__((gnu_inline)) inline static
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __cplusplus // sepples has [[noreturn]]
|
||||||
|
#define noreturn __attribute__((noreturn)) void
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _ATTRS_H */
|
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef _PANIC_H
|
||||||
|
#define _PANIC_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "attrs.h"
|
||||||
|
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wall"
|
||||||
|
noinline cold static noreturn panic(const char* msg, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
va_start(va, msg);
|
||||||
|
fputs("Fatal error: ", stderr);
|
||||||
|
vfprintf(stderr, msg, va);
|
||||||
|
va_end(va);
|
||||||
|
fputs("\n", stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
|
#endif /* _PANIC_H */
|
Loading…
Reference in new issue