extern "C" {
#endif
+#if __STDC_VERSION__ >= 201112L
+#elif defined(__GNUC__)
+#define _Noreturn __attribute__((__noreturn__))
+#else
+#define _Noreturn
+#endif
+
#include <bits/setjmp.h>
int setjmp (jmp_buf);
-void longjmp (jmp_buf, int);
+_Noreturn void longjmp (jmp_buf, int);
#define setjmp setjmp
#define longjmp longjmp
#define __restrict
#endif
+#if __STDC_VERSION__ >= 201112L
+#elif defined(__GNUC__)
+#define _Noreturn __attribute__((__noreturn__))
+#else
+#define _Noreturn
+#endif
+
#undef NULL
#ifdef __cplusplus
#define NULL 0
void free (void *);
void *aligned_alloc(size_t alignment, size_t size);
-void abort (void);
+_Noreturn void abort (void);
int atexit (void (*) (void));
-void exit (int);
-void _Exit (int);
+_Noreturn void exit (int);
+_Noreturn void _Exit (int);
int at_quick_exit (void (*) (void));
-void quick_exit (int);
+_Noreturn void quick_exit (int);
char *getenv (const char *);
#include <stdlib.h>
#include "syscall.h"
-void _Exit(int ec)
+_Noreturn void _Exit(int ec)
{
__syscall(SYS_exit_group, ec);
__syscall(SYS_exit, ec);
#include <signal.h>
#include "syscall.h"
-void abort(void)
+_Noreturn void abort(void)
{
raise(SIGABRT);
raise(SIGKILL);
weak_alias(dummy, __flush_on_exit);
weak_alias(dummy, __seek_on_exit);
-void exit(int code)
+_Noreturn void exit(int code)
{
static int lock;
static void dummy() { }
weak_alias(dummy, __funcs_on_quick_exit);
-void quick_exit(int code)
+_Noreturn void quick_exit(int code)
{
static int lock;
while (a_swap(&lock, 1)) __syscall(SYS_pause);