summaryrefslogtreecommitdiff
path: root/lib/mlibc/options/ansi/include
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-03-07 17:28:52 -0500
committerIan Moffett <ian@osmora.org>2024-03-07 18:24:51 -0500
commitf5e48e94a2f4d4bbd6e5628c7f2afafc6dbcc459 (patch)
tree93b156621dc0303816b37f60ba88051b702d92f6 /lib/mlibc/options/ansi/include
parentbd5969fc876a10b18613302db7087ef3c40f18e1 (diff)
build: Build mlibc + add distclean target
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'lib/mlibc/options/ansi/include')
-rw-r--r--lib/mlibc/options/ansi/include/alloca.h8
-rw-r--r--lib/mlibc/options/ansi/include/assert.h46
-rw-r--r--lib/mlibc/options/ansi/include/bits/ansi/fenv.h54
-rw-r--r--lib/mlibc/options/ansi/include/bits/ansi/time_t.h8
-rw-r--r--lib/mlibc/options/ansi/include/bits/ansi/timespec.h13
-rw-r--r--lib/mlibc/options/ansi/include/complex.h134
-rw-r--r--lib/mlibc/options/ansi/include/ctype.h46
-rw-r--r--lib/mlibc/options/ansi/include/errno.h31
-rw-r--r--lib/mlibc/options/ansi/include/fenv.h44
-rw-r--r--lib/mlibc/options/ansi/include/inttypes.h146
-rw-r--r--lib/mlibc/options/ansi/include/limits.h117
-rw-r--r--lib/mlibc/options/ansi/include/locale.h81
-rw-r--r--lib/mlibc/options/ansi/include/math.h383
-rw-r--r--lib/mlibc/options/ansi/include/mlibc/ansi-sysdeps.hpp71
-rw-r--r--lib/mlibc/options/ansi/include/mlibc/environment.hpp10
-rw-r--r--lib/mlibc/options/ansi/include/mlibc/file-io.hpp111
-rw-r--r--lib/mlibc/options/ansi/include/setjmp.h48
-rw-r--r--lib/mlibc/options/ansi/include/signal.h48
-rw-r--r--lib/mlibc/options/ansi/include/stdc-predef.h6
-rw-r--r--lib/mlibc/options/ansi/include/stdio.h229
-rw-r--r--lib/mlibc/options/ansi/include/stdlib.h128
-rw-r--r--lib/mlibc/options/ansi/include/string.h107
-rw-r--r--lib/mlibc/options/ansi/include/threads.h61
-rw-r--r--lib/mlibc/options/ansi/include/time.h154
-rw-r--r--lib/mlibc/options/ansi/include/uchar.h29
-rw-r--r--lib/mlibc/options/ansi/include/wchar.h128
-rw-r--r--lib/mlibc/options/ansi/include/wctype.h52
27 files changed, 0 insertions, 2293 deletions
diff --git a/lib/mlibc/options/ansi/include/alloca.h b/lib/mlibc/options/ansi/include/alloca.h
deleted file mode 100644
index 0cc6bcb..0000000
--- a/lib/mlibc/options/ansi/include/alloca.h
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#ifndef _ALLOCA_H
-#define _ALLOCA_H
-
-#define alloca __builtin_alloca
-
-#endif // _ALLOCA_H
-
diff --git a/lib/mlibc/options/ansi/include/assert.h b/lib/mlibc/options/ansi/include/assert.h
deleted file mode 100644
index 7eccae0..0000000
--- a/lib/mlibc/options/ansi/include/assert.h
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef _ASSERT_H
-#define _ASSERT_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-// NOTE: This is not ISO C. Declared in LSB
-__attribute__ ((__noreturn__)) void __assert_fail(const char *assertion, const char *file, unsigned int line,
- const char *function);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _ASSERT_H
-
-#include <mlibc-config.h>
-
-#if __MLIBC_GLIBC_OPTION
-# include <bits/glibc/glibc_assert.h>
-#endif
-
-// NOTE: [7.2] requires this be outside the include guard
-#ifdef NDEBUG
-
-#undef assert
-#define assert(ignore) ((void)0)
-
-#else // NDEBUG
-
-#undef assert
-#define assert(assertion) ((void)((assertion) \
- || (__assert_fail(#assertion, __FILE__, __LINE__, __func__), 0)))
-
-#endif // NDEBUG
-
-#ifndef __cplusplus
-#undef static_assert
-#define static_assert _Static_assert
-#endif
diff --git a/lib/mlibc/options/ansi/include/bits/ansi/fenv.h b/lib/mlibc/options/ansi/include/bits/ansi/fenv.h
deleted file mode 100644
index 677ddaa..0000000
--- a/lib/mlibc/options/ansi/include/bits/ansi/fenv.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef MLIBC_FENV_H
-#define MLIBC_FENV_H
-
-#if defined(__x86_64__) || defined(__i386__)
-
-#define FE_DENORMAL 2
-#define FE_DIVBYZERO 4
-#define FE_INEXACT 32
-#define FE_INVALID 1
-#define FE_OVERFLOW 8
-#define FE_UNDERFLOW 16
-
-#define FE_ALL_EXCEPT (FE_DENORMAL | FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-#define FE_TONEAREST 0
-#define FE_DOWNWARD 0x400
-#define FE_UPWARD 0x800
-#define FE_TOWARDZERO 0xC00
-
-#elif defined(__aarch64__)
-
-#define FE_INVALID 1
-#define FE_DIVBYZERO 2
-#define FE_OVERFLOW 4
-#define FE_UNDERFLOW 8
-#define FE_INEXACT 16
-
-#define FE_ALL_EXCEPT 31
-
-#define FE_TONEAREST 0
-#define FE_UPWARD 0x400000
-#define FE_DOWNWARD 0x800000
-#define FE_TOWARDZERO 0xC00000
-
-#elif defined(__riscv) && __riscv_xlen == 64
-
-#define FE_INEXACT 1
-#define FE_UNDERFLOW 2
-#define FE_OVERFLOW 4
-#define FE_DIVBYZERO 8
-#define FE_INVALID 16
-
-#define FE_ALL_EXCEPT 31
-
-#define FE_TONEAREST 0
-#define FE_TOWARDZERO 1
-#define FE_DOWNWARD 2
-#define FE_UPWARD 3
-
-#else
-#error Unknown architecture
-#endif
-
-#endif // MLIBC_FENV_H
diff --git a/lib/mlibc/options/ansi/include/bits/ansi/time_t.h b/lib/mlibc/options/ansi/include/bits/ansi/time_t.h
deleted file mode 100644
index 1c29fa0..0000000
--- a/lib/mlibc/options/ansi/include/bits/ansi/time_t.h
+++ /dev/null
@@ -1,8 +0,0 @@
-
-#ifndef MLIBC_TIME_T
-#define MLIBC_TIME_T
-
-typedef long time_t;
-
-#endif
-
diff --git a/lib/mlibc/options/ansi/include/bits/ansi/timespec.h b/lib/mlibc/options/ansi/include/bits/ansi/timespec.h
deleted file mode 100644
index d34aa64..0000000
--- a/lib/mlibc/options/ansi/include/bits/ansi/timespec.h
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#ifndef MLIBC_TIMESPEC_H
-#define MLIBC_TIMESPEC_H
-
-#include <bits/ansi/time_t.h>
-
-struct timespec {
- time_t tv_sec;
- long tv_nsec;
-};
-
-#endif // MLIBC_TIMESPEC_H
-
diff --git a/lib/mlibc/options/ansi/include/complex.h b/lib/mlibc/options/ansi/include/complex.h
deleted file mode 100644
index 6191f28..0000000
--- a/lib/mlibc/options/ansi/include/complex.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */
-
-/*
- * Written by Matthias Drochner.
- * Public domain.
- */
-
-#ifndef _COMPLEX_H
-#define _COMPLEX_H
-
-#define complex _Complex
-#define _Complex_I 1.0fi
-#define I _Complex_I
-
-#define CMPLX(x, y) ((double complex)__builtin_complex((double)(x), (double)(y)))
-#define CMPLXF(x, y) ((float complex)__builtin_complex((float)(x), (float)(y)))
-#define CMPLXL(x, y) ((long double complex)__builtin_complex((long double)(x), (long double)(y)))
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-/* 7.3.5 Trigonometric functions */
-/* 7.3.5.1 The cacos functions */
-double complex cacos(double complex);
-float complex cacosf(float complex);
-
-/* 7.3.5.2 The casin functions */
-double complex casin(double complex);
-float complex casinf(float complex);
-
-/* 7.3.5.1 The catan functions */
-double complex catan(double complex);
-float complex catanf(float complex);
-
-/* 7.3.5.1 The ccos functions */
-double complex ccos(double complex);
-float complex ccosf(float complex);
-
-/* 7.3.5.1 The csin functions */
-double complex csin(double complex);
-float complex csinf(float complex);
-
-/* 7.3.5.1 The ctan functions */
-double complex ctan(double complex);
-float complex ctanf(float complex);
-
-/* 7.3.6 Hyperbolic functions */
-/* 7.3.6.1 The cacosh functions */
-double complex cacosh(double complex);
-float complex cacoshf(float complex);
-
-/* 7.3.6.2 The casinh functions */
-double complex casinh(double complex);
-float complex casinhf(float complex);
-
-/* 7.3.6.3 The catanh functions */
-double complex catanh(double complex);
-float complex catanhf(float complex);
-
-/* 7.3.6.4 The ccosh functions */
-double complex ccosh(double complex);
-float complex ccoshf(float complex);
-
-/* 7.3.6.5 The csinh functions */
-double complex csinh(double complex);
-float complex csinhf(float complex);
-
-/* 7.3.6.6 The ctanh functions */
-double complex ctanh(double complex);
-float complex ctanhf(float complex);
-
-/* 7.3.7 Exponential and logarithmic functions */
-/* 7.3.7.1 The cexp functions */
-double complex cexp(double complex);
-float complex cexpf(float complex);
-
-/* 7.3.7.2 The clog functions */
-double complex clog(double complex);
-float complex clogf(float complex);
-
-/* 7.3.8 Power and absolute-value functions */
-/* 7.3.8.1 The cabs functions */
-/*#ifndef __LIBM0_SOURCE__ */
-/* avoid conflict with historical cabs(struct complex) */
-/* double cabs(double complex) __RENAME(__c99_cabs);
- float cabsf(float complex) __RENAME(__c99_cabsf);
- #endif
-*/
-double cabs(double complex) ;
-float cabsf(float complex) ;
-
-/* 7.3.8.2 The cpow functions */
-double complex cpow(double complex, double complex);
-float complex cpowf(float complex, float complex);
-
-/* 7.3.8.3 The csqrt functions */
-double complex csqrt(double complex);
-float complex csqrtf(float complex);
-
-/* 7.3.9 Manipulation functions */
-/* 7.3.9.1 The carg functions */
-double carg(double complex);
-float cargf(float complex);
-
-/* 7.3.9.2 The cimag functions */
-double cimag(double complex);
-float cimagf(float complex);
-long double cimagl(long double complex);
-
-/* 7.3.9.3 The conj functions */
-double complex conj(double complex);
-float complex conjf(float complex);
-/*long double complex conjl(long double complex); */
-
-/* 7.3.9.4 The cproj functions */
-double complex cproj(double complex);
-float complex cprojf(float complex);
-/*long double complex cprojl(long double complex); */
-
-/* 7.3.9.5 The creal functions */
-double creal(double complex);
-float crealf(float complex);
-long double creall(long double complex);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ! _COMPLEX_H */
diff --git a/lib/mlibc/options/ansi/include/ctype.h b/lib/mlibc/options/ansi/include/ctype.h
deleted file mode 100644
index 7cd1ec8..0000000
--- a/lib/mlibc/options/ansi/include/ctype.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _CTYPE_H
-#define _CTYPE_H
-
-#include <mlibc-config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-// Character classification function [7.4.1]
-int isalnum(int c);
-int isalpha(int c);
-int isblank(int c);
-int iscntrl(int c);
-int isdigit(int c);
-int isgraph(int c);
-int islower(int c);
-int isprint(int c);
-int ispunct(int c);
-int isspace(int c);
-int isupper(int c);
-int isxdigit(int c);
-
-// glibc extensions.
-int isascii(int c);
-
-// Character case mapping functions [7.4.2]
-int tolower(int c);
-int toupper(int c);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-// Borrowed from glibc
-#define toascii(c) ((c) & 0x7f)
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_ctype.h>
-#endif
-
-#endif // _CTYPE_H
diff --git a/lib/mlibc/options/ansi/include/errno.h b/lib/mlibc/options/ansi/include/errno.h
deleted file mode 100644
index 7730b16..0000000
--- a/lib/mlibc/options/ansi/include/errno.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _ERRNO_H
-#define _ERRNO_H
-
-#include <abi-bits/errno.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-// Some programs define their own errno as an "extern int" if it is not a macro.
-#define errno __mlibc_errno
-extern __thread int __mlibc_errno;
-
-int *__errno_location(void);
-
-// Linux extensions.
-
-extern char *program_invocation_name;
-extern char *program_invocation_short_name;
-extern char *__progname;
-extern char *__progname_full;
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _ERRNO_H
diff --git a/lib/mlibc/options/ansi/include/fenv.h b/lib/mlibc/options/ansi/include/fenv.h
deleted file mode 100644
index 11e38f3..0000000
--- a/lib/mlibc/options/ansi/include/fenv.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef _FENV_H
-#define _FENV_H
-
-#include <bits/types.h>
-#include <bits/ansi/fenv.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- __mlibc_uint32 __control_word;
- __mlibc_uint32 __status_word;
- __mlibc_uint32 __unused[5];
- __mlibc_uint32 __mxcsr;
-} fenv_t;
-
-typedef __mlibc_uint16 fexcept_t;
-
-#ifndef __MLIBC_ABI_ONLY
-
-int feclearexcept(int);
-int fegetenv(fenv_t *);
-int fegetexceptflag(fexcept_t *, int);
-int fegetround(void);
-int feholdexcept(fenv_t *);
-int feraiseexcept(int);
-int fesetenv(const fenv_t *);
-int fesetexceptflag(const fexcept_t *, int);
-int fesetround(int);
-int fetestexcept(int);
-int feupdateenv(const fenv_t *);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#define FE_DFL_ENV ((const fenv_t *) -1)
-
-#endif // _FENV_H
-
diff --git a/lib/mlibc/options/ansi/include/inttypes.h b/lib/mlibc/options/ansi/include/inttypes.h
deleted file mode 100644
index 5495440..0000000
--- a/lib/mlibc/options/ansi/include/inttypes.h
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifndef _STDINT_H
-#define _STDINT_H
-
-#include <stdint.h>
-
-/* Even though this is not strictly not-ABI, it is mlibc-printf specific therefore */
-/* gate behind !__MLIBC_ABI_ONLY */
-#ifndef __MLIBC_ABI_ONLY
-
-#if UINTPTR_MAX == UINT64_MAX
-# define __PRI64 "l"
-# define __PRIPTR "l"
-#else
-# define __PRI64 "ll"
-# define __PRIPTR ""
-#endif
-
-// TODO: This is extremly unelegant and fragile.
-#define PRId8 "d"
-#define PRIi8 "i"
-#define PRIdLEAST8 "d"
-#define PRIiLEAST8 "i"
-#define PRIdFAST8 "d"
-#define PRIiFAST8 "i"
-#define PRId16 "d"
-#define PRIi16 "i"
-#define PRIdLEAST16 "d"
-#define PRIiLEAST16 "i"
-#define PRIdFAST16 "ld"
-#define PRIiFAST16 "li"
-#define PRId32 "d"
-#define PRIi32 "i"
-#define PRIdLEAST32 "d"
-#define PRIiLEAST32 "i"
-#define PRIdFAST32 "ld"
-#define PRIiFAST32 "li"
-#define PRId64 __PRI64 "d"
-#define PRIi64 __PRI64 "i"
-#define PRIdLEAST64 __PRI64 "d"
-#define PRIiLEAST64 __PRI64 "i"
-#define PRIdFAST64 __PRI64 "d"
-#define PRIiFAST64 __PRI64 "i"
-#define PRIdMAX __PRI64 "d"
-#define PRIiMAX __PRI64 "i"
-#define PRIdPTR __PRIPTR "d"
-#define PRIiPTR __PRIPTR "i"
-#define PRIo8 "o"
-#define PRIu8 "u"
-#define PRIx8 "x"
-#define PRIX8 "X"
-#define PRIoLEAST8 "o"
-#define PRIuLEAST8 "u"
-#define PRIxLEAST8 "x"
-#define PRIXLEAST8 "X"
-#define PRIoFAST8 "o"
-#define PRIuFAST8 "u"
-#define PRIxFAST8 "x"
-#define PRIXFAST8 "X"
-#define PRIo16 "o"
-#define PRIu16 "u"
-#define PRIx16 "x"
-#define PRIX16 "X"
-#define PRIoLEAST16 "o"
-#define PRIuLEAST16 "u"
-#define PRIxLEAST16 "x"
-#define PRIXLEAST16 "X"
-#define PRIoFAST16 "lo"
-#define PRIuFAST16 "lu"
-#define PRIxFAST16 "lx"
-#define PRIXFAST16 "lX"
-#define PRIo32 "o"
-#define PRIu32 "u"
-#define PRIx32 "x"
-#define PRIX32 "X"
-#define PRIoLEAST32 "o"
-#define PRIuLEAST32 "u"
-#define PRIxLEAST32 "x"
-#define PRIXLEAST32 "X"
-#define PRIoFAST32 "lo"
-#define PRIuFAST32 "lu"
-#define PRIxFAST32 "lx"
-#define PRIXFAST32 "lX"
-#define PRIo64 __PRI64 "o"
-#define PRIu64 __PRI64 "u"
-#define PRIx64 __PRI64 "x"
-#define PRIX64 __PRI64 "X"
-#define PRIoLEAST64 __PRI64 "o"
-#define PRIuLEAST64 __PRI64 "u"
-#define PRIxLEAST64 __PRI64 "x"
-#define PRIXLEAST64 __PRI64 "X"
-#define PRIoFAST64 __PRI64 "o"
-#define PRIuFAST64 __PRI64 "u"
-#define PRIxFAST64 __PRI64 "x"
-#define PRIXFAST64 __PRI64 "X"
-#define PRIoMAX __PRI64 "o"
-#define PRIuMAX __PRI64 "u"
-#define PRIxMAX __PRI64 "x"
-#define PRIXMAX __PRI64 "X"
-#define PRIoPTR __PRIPTR "o"
-#define PRIuPTR __PRIPTR "u"
-#define PRIxPTR __PRIPTR "x"
-#define PRIXPTR __PRIPTR "X"
-
-#define SCNu32 "u"
-#define SCNu64 __PRI64 "u"
-#define SCNuMAX __PRI64 "u"
-#define SCNx16 "hx"
-#define SCNx32 "x"
-#define SCNx64 __PRI64 "x"
-#define SCNxMAX __PRI64 "x"
-#define SCNi8 "hhi"
-#define SCNxPTR __PRIPTR "x"
-
-#define SCNi8 "hhi"
-#define SCNi64 __PRI64 "i"
-
-#define SCNd32 "d"
-#define SCNd64 __PRI64 "d"
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- intmax_t quot;
- intmax_t rem;
-} imaxdiv_t;
-
-#ifndef __MLIBC_ABI_ONLY
-
-intmax_t imaxabs(intmax_t);
-imaxdiv_t imaxdiv(intmax_t, intmax_t);
-intmax_t strtoimax(const char *__restrict, char **__restrict, int);
-uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
-intmax_t wcstoimax(const __WCHAR_TYPE__ *__restrict, __WCHAR_TYPE__ **__restrict, int);
-uintmax_t wcstoumax(const __WCHAR_TYPE__ *__restrict, __WCHAR_TYPE__ **__restrict, int);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _STDINT_H
diff --git a/lib/mlibc/options/ansi/include/limits.h b/lib/mlibc/options/ansi/include/limits.h
deleted file mode 100644
index 86b786e..0000000
--- a/lib/mlibc/options/ansi/include/limits.h
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef _LIMITS_H
-#define _LIMITS_H
-
-#define CHAR_BIT 8
-
-#ifndef MB_LEN_MAX
-# define MB_LEN_MAX 4
-#endif
-
-#ifdef LONG_MAX
-# ifdef LONG_MAX == INT32_MAX
-# define LONG_BIT 32
-# else
-// Safe assumption
-# define LONG_BIT 64
-# endif
-#elif defined __LONG_MAX__
-# if __LONG_MAX__ == INT32_MAX
-# define LONG_BIT 32
-# else
-// Safe assumption
-# define LONG_BIT 64
-# endif
-#else
-# error "Unsupported configuration, please define either LONG_MAX or __LONG_MAX__"
-#endif
-
-#undef SCHAR_MIN
-#undef SCHAR_MAX
-#undef CHAR_MIN
-#undef CHAR_MAX
-#undef UCHAR_MAX
-#undef SHRT_MIN
-#undef SHRT_MAX
-#undef USHRT_MAX
-#undef INT_MIN
-#undef INT_MAX
-#undef UINT_MAX
-#undef LONG_MIN
-#undef LONG_MAX
-#undef ULONG_MAX
-#undef LLONG_MIN
-#undef LLONG_MAX
-#undef ULLONG_MAX
-
-#define SCHAR_MIN (-__SCHAR_MAX__ - 1)
-#define SCHAR_MAX __SCHAR_MAX__
-#if __SCHAR_MAX__ == __INT_MAX__
-# define UCHAR_MAX (__SCHAR_MAX__ * 2U + 1U)
-#else
-# define UCHAR_MAX (__SCHAR_MAX__ * 2 + 1)
-#endif
-
-#ifdef __CHAR_UNSIGNED__
-# define CHAR_MAX UCHAR_MAX
-# if __SCHAR_MAX__ == __INT_MAX__
-# define CHAR_MIN 0U
-# else
-# define CHAR_MIN 0
-# endif
-#else
-# define CHAR_MAX SCHAR_MAX
-# define CHAR_MIN SCHAR_MIN
-#endif
-
-#define SHRT_MIN (-__SHRT_MAX__ - 1)
-#define SHRT_MAX __SHRT_MAX__
-#if __SHRT_MAX_ == __INT_MAX__
-# define USHRT_MAX (__SHRT_MAX__ * 2U + 1U)
-#else
-# define USHRT_MAX (__SHRT_MAX__ * 2 + 1)
-#endif
-
-#define INT_MIN (-__INT_MAX__ - 1)
-#define INT_MAX __INT_MAX__
-#define UINT_MAX (__INT_MAX__ * 2 + 1)
-
-#define LONG_MIN (-__LONG_MAX__ - 1L)
-#define LONG_MAX __LONG_MAX__
-#define ULONG_MAX (__LONG_MAX__ * 2UL + 1UL)
-
-#define LLONG_MIN (-__LONG_LONG_MAX__ - 1LL)
-#define LLONG_MAX __LONG_LONG_MAX__
-#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL)
-
-#define NAME_MAX 255
-#define PATH_MAX 4096
-#define LINE_MAX 4096
-#define PIPE_BUF 4096
-
-#define CHARCLASS_NAME_MAX 14
-#define RE_DUP_MAX 255
-
-// This value is a guaranteed minimum, get the current maximum from sysconf
-#define NGROUPS_MAX 8
-// POSIX states 9 is the minimum for NL_ARGMAX
-#define NL_ARGMAX 9
-
-#if INTPTR_MAX == INT64_MAX
-# define SSIZE_MAX LONG_MAX
-#elif INTPTR_MAX == INT32_MAX
-# define SSIZE_MAX INT_MAX
-#endif
-
-#define _POSIX_ARG_MAX 4096
-#define _POSIX_OPEN_MAX 16
-#define _POSIX_HOST_NAME_MAX 255
-#define _POSIX_NAME_MAX 14
-#define _POSIX_TZNAME_MAX 6
-#define _XOPEN_NAME_MAX 255
-
-#define PTHREAD_STACK_MIN 16384
-#define PTHREAD_KEYS_MAX 1024
-
-#include <abi-bits/limits.h>
-
-#endif // _LIMITS_H
diff --git a/lib/mlibc/options/ansi/include/locale.h b/lib/mlibc/options/ansi/include/locale.h
deleted file mode 100644
index 3b4773d..0000000
--- a/lib/mlibc/options/ansi/include/locale.h
+++ /dev/null
@@ -1,81 +0,0 @@
-
-#ifndef _LOCALE_H
-#define _LOCALE_H
-
-#include <mlibc-config.h>
-
-#include <bits/null.h>
-
-#define LC_ALL 1
-#define LC_COLLATE 2
-#define LC_CTYPE 3
-#define LC_MONETARY 4
-#define LC_NUMERIC 5
-#define LC_TIME 6
-#define LC_MESSAGES 7
-
-#define LC_GLOBAL_LOCALE ((locale_t) -1L)
-
-#define LC_CTYPE_MASK (1<<LC_CTYPE)
-#define LC_NUMERIC_MASK (1<<LC_NUMERIC)
-#define LC_TIME_MASK (1<<LC_TIME)
-#define LC_COLLATE_MASK (1<<LC_COLLATE)
-#define LC_MONETARY_MASK (1<<LC_MONETARY)
-#define LC_MESSAGES_MASK (1<<LC_MESSAGES)
-#define LC_ALL_MASK 0x7FFFFFFF
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct lconv {
- char *decimal_point;
- char *thousands_sep;
- char *grouping;
- char *mon_decimal_point;
- char *mon_thousands_sep;
- char *mon_grouping;
- char *positive_sign;
- char *negative_sign;
- char *currency_symbol;
- char frac_digits;
- char p_cs_precedes;
- char n_cs_precedes;
- char p_sep_by_space;
- char n_sep_by_space;
- char p_sign_posn;
- char n_sign_posn;
- char *int_curr_symbol;
- char int_frac_digits;
- char int_p_cs_precedes;
- char int_n_cs_precedes;
- char int_p_sep_by_space;
- char int_n_sep_by_space;
- char int_p_sign_posn;
- char int_n_sign_posn;
-};
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [C11/7.11.1] setlocale() function
-
-char *setlocale(int category, const char *locale);
-
-// [C11/7.11.2] Locale inquiry function
-
-struct lconv *localeconv(void);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-// posix extension
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_locale.h>
-#endif // __MLIBC_POSIX_OPTION
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _LOCALE_H
-
diff --git a/lib/mlibc/options/ansi/include/math.h b/lib/mlibc/options/ansi/include/math.h
deleted file mode 100644
index 7d7ab3c..0000000
--- a/lib/mlibc/options/ansi/include/math.h
+++ /dev/null
@@ -1,383 +0,0 @@
-
-#ifndef _MATH_H
-#define _MATH_H
-
-#include <bits/inline-definition.h>
-
-// this is a posix extension
-#define M_E 2.7182818284590452354
-#define M_LOG2E 1.4426950408889634074
-#define M_LOG10E 0.43429448190325182765
-#define M_LN2 0.69314718055994530942
-#define M_LN10 2.30258509299404568402
-#define M_PI 3.14159265358979323846
-#define M_PI_2 1.57079632679489661923
-#define M_PI_4 0.78539816339744830962
-#define M_1_PI 0.31830988618379067154
-#define M_2_PI 0.63661977236758134308
-#define M_2_SQRTPI 1.12837916709551257390
-#define M_SQRT2 1.41421356237309504880
-#define M_SQRT1_2 0.70710678118654752440
-#define M_PIl 3.141592653589793238462643383279502884L
-
-// The following two definitions are from musl.
-#define FP_ILOGBNAN (-1 - (int)(((unsigned)-1) >> 1))
-#define FP_ILOGB0 FP_ILOGBNAN
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef double double_t;
-typedef float float_t;
-
-#define HUGE_VAL (__builtin_huge_val())
-#define HUGE_VALF (__builtin_huge_valf())
-#define HUGE_VALL (__builtin_huge_vall())
-#define INFINITY (__builtin_inff())
-#define NAN (__builtin_nanf(""))
-
-// [C11/7.12.1 Treatment of error conditions]
-
-#define MATH_ERRNO 1
-#define MATH_ERREXCEPT 2
-#define math_errhandling 3
-
-// [C11/7.12.3 Classification macros]
-
-// NOTE: fpclassify always returns exactly one of those constants
-// However making them bitwise disjoint simplifies isfinite() etc.
-#define FP_INFINITE 1
-#define FP_NAN 2
-#define FP_NORMAL 4
-#define FP_SUBNORMAL 8
-#define FP_ZERO 16
-
-#ifndef __MLIBC_ABI_ONLY
-
-int __fpclassify(double x);
-int __fpclassifyf(float x);
-int __fpclassifyl(long double x);
-
-#define fpclassify(x) \
- (sizeof(x) == sizeof(double) ? __fpclassify(x) : \
- (sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \
- (sizeof(x) == sizeof(long double) ? __fpclassifyl(x) : \
- 0)))
-
-#define isfinite(x) (fpclassify(x) & (FP_NORMAL | FP_SUBNORMAL | FP_ZERO))
-#define isnan(x) (fpclassify(x) == FP_NAN)
-#define isinf(x) (fpclassify(x) == FP_INFINITE)
-#define isnormal(x) (fpclassify(x) == FP_NORMAL)
-
-// FIXME: this is gcc specific
-#define signbit(x) (__builtin_signbit(x))
-
-// [C11/7.12.14 Comparison macros]
-#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
-
-__MLIBC_INLINE_DEFINITION int __mlibc_isless(double_t x, double_t y) { return !isunordered(x, y) && x < y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessf(float_t x, float_t y) { return !isunordered(x, y) && x < y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessl(long double x, long double y) { return !isunordered(x, y) && x < y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessequal(double_t x, double_t y) { return !isunordered(x, y) && x <= y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessequalf(float_t x, float_t y) { return !isunordered(x, y) && x <= y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessequall(long double x, long double y) { return !isunordered(x, y) && x <= y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessgreater(double_t x, double_t y) { return !isunordered(x, y) && x != y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessgreaterf(float_t x, float_t y) { return !isunordered(x, y) && x != y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_islessgreaterl(long double x, long double y) { return !isunordered(x, y) && x != y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreater(double_t x, double_t y) { return !isunordered(x, y) && x > y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreaterf(float_t x, float_t y) { return !isunordered(x, y) && x > y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreaterl(long double x, long double y) { return !isunordered(x, y) && x > y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreaterequal(double_t x, double_t y) { return !isunordered(x, y) && x >= y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreaterequalf(float_t x, float_t y) { return !isunordered(x, y) && x >= y; }
-__MLIBC_INLINE_DEFINITION int __mlibc_isgreaterequall(long double x, long double y) { return !isunordered(x, y) && x >= y; }
-
-// TODO: We chould use _Generic here but that does not work in C++ code.
-#define __MLIBC_CHOOSE_COMPARISON(x, y, p) ( \
- sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \
- sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \
- p##l(x, y) )
-
-#define isless(x, y) __MLIBC_CHOOSE_COMPARISON(x, y, __mlibc_isless)
-#define islessequal(x, y) __MLIBC_CHOOSE_COMPARISON(x, y, __mlibc_islessequal)
-#define islessgreater(x, y) __MLIBC_CHOOSE_COMPARISON(x, y, __mlibc_islessgreater)
-#define isgreater(x, y) __MLIBC_CHOOSE_COMPARISON(x, y, __mlibc_isgreater)
-#define isgreaterequal(x, y) __MLIBC_CHOOSE_COMPARISON(x, y, __mlibc_isgreaterequal)
-
-// this is a gnu extension
-void sincos(double, double *, double *);
-void sincosf(float, float *, float *);
-void sincosl(long double, long double *, long double *);
-
-double exp10(double);
-float exp10f(float);
-long double exp10l(long double);
-
-double pow10(double);
-float pow10f(float);
-long double pow10l(long double);
-
-// [C11/7.12.4 Trigonometric functions]
-
-double acos(double x);
-float acosf(float x);
-long double acosl(long double x);
-
-double asin(double x);
-float asinf(float x);
-long double asinl(long double x);
-
-double atan(double x);
-float atanf(float x);
-long double atanl(long double x);
-
-double atan2(double x, double y);
-float atan2f(float x, float y);
-long double atan2l(long double x, long double y);
-
-double cos(double x);
-float cosf(float x);
-long double cosl(long double x);
-
-double sin(double x);
-float sinf(float x);
-long double sinl(long double x);
-
-double tan(double x);
-float tanf(float x);
-long double tanl(long double x);
-
-// [C11/7.12.5 Hyperbolic functions]
-
-double acosh(double x);
-float acoshf(float x);
-long double acoshl(long double x);
-
-double asinh(double x);
-float asinhf(float x);
-long double asinhl(long double x);
-
-double atanh(double x);
-float atanhf(float x);
-long double atanhl(long double x);
-
-double cosh(double x);
-float coshf(float x);
-long double coshl(long double x);
-
-double sinh(double x);
-float sinhf(float x);
-long double sinhl(long double x);
-
-double tanh(double x);
-float tanhf(float x);
-long double tanhl(long double x);
-
-// [C11/7.12.6 Exponential and logarithmic functions]
-
-double exp(double x);
-float expf(float x);
-long double expl(long double x);
-
-double exp2(double x);
-float exp2f(float x);
-long double exp2l(long double x);
-
-double expm1(double x);
-float expm1f(float x);
-long double expm1l(long double x);
-
-double frexp(double x, int *power);
-float frexpf(float x, int *power);
-long double frexpl(long double x, int *power);
-
-int ilogb(double x);
-int ilogbf(float x);
-int ilogbl(long double x);
-
-double ldexp(double x, int power);
-float ldexpf(float x, int power);
-long double ldexpl(long double x, int power);
-
-double log(double x);
-float logf(float x);
-long double logl(long double x);
-
-double log10(double x);
-float log10f(float x);
-long double log10l(long double x);
-
-double log1p(double x);
-float log1pf(float x);
-long double log1pl(long double x);
-
-double log2(double x);
-float log2f(float x);
-long double log2l(long double x);
-
-double logb(double x);
-float logbf(float x);
-long double logbl(long double x);
-
-double modf(double x, double *integral);
-float modff(float x, float *integral);
-long double modfl(long double x, long double *integral);
-
-double scalbn(double x, int power);
-float scalbnf(float x, int power);
-long double scalbnl(long double x, int power);
-
-double scalbln(double x, long power);
-float scalblnf(float x, long power);
-long double scalblnl(long double x, long power);
-
-// [C11/7.12.7 Power and absolute-value functions]
-
-double cbrt(double x);
-float cbrtf(float x);
-long double cbrtl(long double x);
-
-double fabs(double x);
-float fabsf(float x);
-long double fabsl(long double x);
-
-double hypot(double x, double y);
-float hypotf(float x, float y);
-long double hypotl(long double x, long double y);
-
-double pow(double x, double y);
-float powf(float x, float y);
-long double powl(long double x, long double y);
-
-double sqrt(double x);
-float sqrtf(float x);
-long double sqrtl(long double x);
-
-// [C11/7.12.8 Error and gamma functions]
-
-double erf(double x);
-float erff(float x);
-long double erfl(long double x);
-
-double erfc(double x);
-float erfcf(float x);
-long double erfcl(long double x);
-
-double lgamma(double x);
-float lgammaf(float x);
-long double lgammal(long double x);
-
-double tgamma(double x);
-float tgammaf(float x);
-long double tgammal(long double x);
-
-// [C11/7.12.9 Nearest integer functions]
-
-double ceil(double x);
-float ceilf(float x);
-long double ceill(long double x);
-
-double floor(double x);
-float floorf(float x);
-long double floorl(long double x);
-
-double nearbyint(double x);
-float nearbyintf(float x);
-long double nearbyintl(long double x);
-
-double rint(double x);
-float rintf(float x);
-long double rintl(long double x);
-
-long lrint(double x);
-long lrintf(float x);
-long lrintl(long double x);
-
-long long llrint(double x);
-long long llrintf(float x);
-long long llrintl(long double x);
-
-double round(double x);
-float roundf(float x);
-long double roundl(long double x);
-
-long lround(double x);
-long lroundf(float x);
-long lroundl(long double x);
-
-long long llround(double x);
-long long llroundf(float x);
-long long llroundl(long double x);
-
-double trunc(double x);
-float truncf(float x);
-long double truncl(long double x);
-
-// [C11/7.12.10 Remainder functions]
-
-double fmod(double x, double y);
-float fmodf(float x, float y);
-long double fmodl(long double x, long double y);
-
-double remainder(double x, double y);
-float remainderf(float x, float y);
-long double remainderl(long double x, long double y);
-
-double remquo(double x, double y, int *quotient);
-float remquof(float x, float y, int *quotient);
-long double remquol(long double x, long double y, int *quotient);
-
-// [C11/7.12.11 Manipulation functions]
-
-double copysign(double x, double sign);
-float copysignf(float x, float sign);
-long double copysignl(long double x, long double sign);
-
-double nan(const char *tag);
-float nanf(const char *tag);
-long double nanl(const char *tag);
-
-double nextafter(double x, double dir);
-float nextafterf(float x, float dir);
-long double nextafterl(long double x, long double dir);
-
-double nexttoward(double x, long double dir);
-float nexttowardf(float x, long double dir);
-long double nexttowardl(long double x, long double dir);
-
-// [C11/7.12.12 Maximum, minimum and positive difference functions]
-
-double fdim(double x, double y);
-float fdimf(float x, float y);
-long double fdiml(long double x, long double y);
-
-double fmax(double x, double y);
-float fmaxf(float x, float y);
-long double fmaxl(long double x, long double y);
-
-double fmin(double x, double y);
-float fminf(float x, float y);
-long double fminl(long double x, long double y);
-
-// [C11/7.12.13 Floating multiply-add]
-
-double fma(double, double, double);
-float fmaf(float, float, float);
-long double fmal(long double, long double, long double);
-
-extern int signgam;
-#define __signgam signgam
-
-// BSD floating-point classification functions - obsolete
-
-int finite(double x);
-int finitef(float x);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _MATH_H
-
diff --git a/lib/mlibc/options/ansi/include/mlibc/ansi-sysdeps.hpp b/lib/mlibc/options/ansi/include/mlibc/ansi-sysdeps.hpp
deleted file mode 100644
index 203084e..0000000
--- a/lib/mlibc/options/ansi/include/mlibc/ansi-sysdeps.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef MLIBC_ANSI_SYSDEPS
-#define MLIBC_ANSI_SYSDEPS
-
-#include <stddef.h>
-
-#include <abi-bits/seek-whence.h>
-#include <abi-bits/vm-flags.h>
-#include <abi-bits/pid_t.h>
-#include <abi-bits/mode_t.h>
-#include <bits/off_t.h>
-#include <bits/ssize_t.h>
-#include <bits/ansi/time_t.h>
-#include <signal.h>
-#include <stdarg.h>
-
-struct rusage;
-
-namespace [[gnu::visibility("hidden")]] mlibc {
-
-[[noreturn]] void sys_exit(int status);
-[[noreturn, gnu::weak]] void sys_thread_exit();
-
-// If *stack is not null, it should point to the lowest addressable byte of the stack.
-// Returns the new stack pointer in *stack and the stack base in *stack_base.
-[[gnu::weak]] int sys_prepare_stack(void **stack, void *entry, void *user_arg, void* tcb, size_t *stack_size, size_t *guard_size, void **stack_base);
-[[gnu::weak]] int sys_clone(void *tcb, pid_t *pid_out, void *stack);
-
-int sys_futex_wait(int *pointer, int expected, const struct timespec *time);
-int sys_futex_wake(int *pointer);
-
-int sys_open(const char *pathname, int flags, mode_t mode, int *fd);
-[[gnu::weak]] int sys_flock(int fd, int options);
-
-[[gnu::weak]] int sys_open_dir(const char *path, int *handle);
-[[gnu::weak]] int sys_read_entries(int handle, void *buffer, size_t max_size,
- size_t *bytes_read);
-
-int sys_read(int fd, void *buf, size_t count, ssize_t *bytes_read);
-
-int sys_write(int fd, const void *buf, size_t count, ssize_t *bytes_written);
-[[gnu::weak]] int sys_pread(int fd, void *buf, size_t n, off_t off, ssize_t *bytes_read);
-
-int sys_seek(int fd, off_t offset, int whence, off_t *new_offset);
-int sys_close(int fd);
-
-int sys_clock_get(int clock, time_t *secs, long *nanos);
-[[gnu::weak]] int sys_clock_getres(int clock, time_t *secs, long *nanos);
-[[gnu::weak]] int sys_sleep(time_t *secs, long *nanos);
-// In contrast to the isatty() library function, the sysdep function uses return value
-// zero (and not one) to indicate that the file is a terminal.
-[[gnu::weak]] int sys_isatty(int fd);
-[[gnu::weak]] int sys_rmdir(const char *path);
-[[gnu::weak]] int sys_unlinkat(int dirfd, const char *path, int flags);
-[[gnu::weak]] int sys_rename(const char *path, const char *new_path);
-[[gnu::weak]] int sys_renameat(int olddirfd, const char *old_path, int newdirfd, const char *new_path);
-
-[[gnu::weak]] int sys_sigprocmask(int how, const sigset_t *__restrict set,
- sigset_t *__restrict retrieve);
-[[gnu::weak]] int sys_sigaction(int, const struct sigaction *__restrict,
- struct sigaction *__restrict);
-
-[[gnu::weak]] int sys_fork(pid_t *child);
-[[gnu::weak]] int sys_waitpid(pid_t pid, int *status, int flags, struct rusage *ru, pid_t *ret_pid);
-[[gnu::weak]] int sys_execve(const char *path, char *const argv[], char *const envp[]);
-
-[[gnu::weak]] pid_t sys_getpid();
-[[gnu::weak]] int sys_kill(int, int);
-
-} //namespace mlibc
-
-#endif // MLIBC_ANSI_SYSDEPS
diff --git a/lib/mlibc/options/ansi/include/mlibc/environment.hpp b/lib/mlibc/options/ansi/include/mlibc/environment.hpp
deleted file mode 100644
index 7fd5cf9..0000000
--- a/lib/mlibc/options/ansi/include/mlibc/environment.hpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef MLIBC_ENVIRONMENT_HPP
-#define MLIBC_ENVIRONMENT_HPP
-
-namespace mlibc {
-
-int putenv(char *string);
-
-} // namespace mlibc
-
-#endif // MLIBC_ENVIRONMENT_HPP
diff --git a/lib/mlibc/options/ansi/include/mlibc/file-io.hpp b/lib/mlibc/options/ansi/include/mlibc/file-io.hpp
deleted file mode 100644
index 1155a2b..0000000
--- a/lib/mlibc/options/ansi/include/mlibc/file-io.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef MLIBC_FILE_IO_HPP
-#define MLIBC_FILE_IO_HPP
-
-#include <stdio.h>
-
-#include <mlibc/lock.hpp>
-#include <mlibc/allocator.hpp>
-#include <frg/list.hpp>
-
-namespace mlibc {
-
-enum class stream_type {
- unknown,
- file_like,
- pipe_like
-};
-
-enum class buffer_mode {
- unknown,
- no_buffer,
- line_buffer,
- full_buffer
-};
-
-struct abstract_file : __mlibc_file_base {
-public:
- abstract_file(void (*do_dispose)(abstract_file *) = nullptr);
-
- abstract_file(const abstract_file &) = delete;
-
- abstract_file &operator= (const abstract_file &) = delete;
-
- virtual ~abstract_file();
-
- void dispose();
-
- virtual int close() = 0;
- virtual int reopen(const char *path, const char *mode) = 0;
-
- int read(char *buffer, size_t max_size, size_t *actual_size);
- int write(const char *buffer, size_t max_size, size_t *actual_size);
- int unget(char c);
-
- int update_bufmode(buffer_mode mode);
-
- void purge();
- int flush();
-
- int tell(off_t *current_offset);
- int seek(off_t offset, int whence);
-
-protected:
- virtual int determine_type(stream_type *type) = 0;
- virtual int determine_bufmode(buffer_mode *mode) = 0;
- virtual int io_read(char *buffer, size_t max_size, size_t *actual_size) = 0;
- virtual int io_write(const char *buffer, size_t max_size, size_t *actual_size) = 0;
- virtual int io_seek(off_t offset, int whence, off_t *new_offset) = 0;
-
- int _reset();
-private:
- int _init_type();
- int _init_bufmode();
-
- int _write_back();
- int _save_pos();
-
- void _ensure_allocation();
-
- stream_type _type;
- buffer_mode _bufmode;
- void (*_do_dispose)(abstract_file *);
-
-public:
- // lock for file operations
- RecursiveFutexLock _lock;
- // All files are stored in a global linked list, so that they can be flushed at exit().
- frg::default_list_hook<abstract_file> _list_hook;
-};
-
-struct fd_file : abstract_file {
- fd_file(int fd, void (*do_dispose)(abstract_file *) = nullptr, bool force_unbuffered = false);
-
- int fd();
-
- int close() override;
- int reopen(const char *path, const char *mode) override;
-
- static int parse_modestring(const char *mode);
-
-protected:
- int determine_type(stream_type *type) override;
- int determine_bufmode(buffer_mode *mode) override;
-
- int io_read(char *buffer, size_t max_size, size_t *actual_size) override;
- int io_write(const char *buffer, size_t max_size, size_t *actual_size) override;
- int io_seek(off_t offset, int whence, off_t *new_offset) override;
-
-private:
- // Underlying file descriptor.
- int _fd;
- bool _force_unbuffered;
-};
-
-template <typename T>
-void file_dispose_cb(abstract_file *base) {
- frg::destruct(getAllocator(), static_cast<T *>(base));
-}
-
-} // namespace mlibc
-
-#endif // MLIBC_FILE_IO_HPP
diff --git a/lib/mlibc/options/ansi/include/setjmp.h b/lib/mlibc/options/ansi/include/setjmp.h
deleted file mode 100644
index 30346f0..0000000
--- a/lib/mlibc/options/ansi/include/setjmp.h
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef _SETJMP_H
-#define _SETJMP_H
-
-#include <mlibc-config.h>
-#include <bits/machine.h>
-#include <abi-bits/signal.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// [C11/7.13] Non-local jumps
-
-typedef struct __jmp_buf {
- struct __mlibc_jmpbuf_register_state reg_state;
-} jmp_buf[1];
-
-#ifndef __MLIBC_ABI_ONLY
-
-__attribute__((__returns_twice__)) int setjmp(jmp_buf buffer);
-__attribute__((__noreturn__)) void longjmp(jmp_buf buffer, int value);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-// POSIX Non-local jumps signal extensions
-
-typedef struct __sigjmp_buf {
- struct __mlibc_jmpbuf_register_state reg_state;
- int savesigs;
- sigset_t sigset;
-} sigjmp_buf[1];
-
-#ifndef __MLIBC_ABI_ONLY
-
-#if __MLIBC_POSIX_OPTION
-__attribute__((__returns_twice__)) int sigsetjmp(sigjmp_buf buffer, int savesigs);
-__attribute__((__noreturn__)) void siglongjmp(sigjmp_buf buffer, int value);
-#endif // __MLIBC_POSIX_OPTION
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _SETJMP_H
-
diff --git a/lib/mlibc/options/ansi/include/signal.h b/lib/mlibc/options/ansi/include/signal.h
deleted file mode 100644
index e27592b..0000000
--- a/lib/mlibc/options/ansi/include/signal.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef _SIGNAL_H
-#define _SIGNAL_H
-
-#include <abi-bits/signal.h>
-#include <mlibc-config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// [7.14] Signal handling basics
-
-typedef int sig_atomic_t;
-
-#define CLD_EXITED 1
-#define CLD_KILLED 2
-#define CLD_DUMPED 3
-#define CLD_TRAPPED 4
-#define CLD_STOPPED 5
-#define CLD_CONTINUED 6
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [7.14.1] signal() function
-
-__sighandler signal(int sig, __sighandler handler);
-
-// [7.14.2] raise() function
-
-int raise(int sig);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#define _NSIG NSIG
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_signal.h>
-#endif
-
-#if __MLIBC_GLIBC_OPTION
-# include <bits/glibc/glibc_signal.h>
-#endif
-
-#endif // _SIGNAL_H
diff --git a/lib/mlibc/options/ansi/include/stdc-predef.h b/lib/mlibc/options/ansi/include/stdc-predef.h
deleted file mode 100644
index a0e3e92..0000000
--- a/lib/mlibc/options/ansi/include/stdc-predef.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _STDC_PREDEF_H
-#define _STDC_PREDEF_H
-
-#define __STDC_ISO_10646__ 201206L
-
-#endif /* _STDC_PREDEF_H */
diff --git a/lib/mlibc/options/ansi/include/stdio.h b/lib/mlibc/options/ansi/include/stdio.h
deleted file mode 100644
index 168a3c7..0000000
--- a/lib/mlibc/options/ansi/include/stdio.h
+++ /dev/null
@@ -1,229 +0,0 @@
-
-#ifndef _STDIO_H
-#define _STDIO_H
-
-#include <abi-bits/seek-whence.h>
-#include <bits/null.h>
-#include <bits/size_t.h>
-#include <mlibc-config.h>
-
-// Glibc extensions require ssize_t.
-#include <bits/ssize_t.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// [C11-7.21.1] I/O related types
-
-#define __MLIBC_EOF_BIT 1
-#define __MLIBC_ERROR_BIT 2
-
-struct __mlibc_file_base {
- // Buffer for I/O operations.
- // We reserve a few extra bytes for ungetc operations. This means
- // that __buffer_ptr will point a few bytes *into* the allocation.
- char *__buffer_ptr;
-
- // Number of bytes the buffer can hold.
- size_t __buffer_size;
-
- // Current offset inside the buffer.
- size_t __offset;
-
- // Position inside the buffer that matches the current file pointer.
- size_t __io_offset;
-
- // Valid region of the buffer.
- size_t __valid_limit;
-
- // Begin and end of the dirty region inside the buffer.
- size_t __dirty_begin;
- size_t __dirty_end;
-
- // This points to the same place as __buffer_ptr, or a few bytes earlier
- // if there are bytes pushed by ungetc. If buffering is disabled, calls
- // to ungetc will trigger an allocation.
- char *__unget_ptr;
-
- // 0 if we are currently reading from the buffer.
- // 1 if we are currently writing to the buffer.
- // This is only really important for pipe-like streams.
- int __io_mode;
-
- // EOF and error bits.
- int __status_bits;
-};
-
-typedef struct __mlibc_file_base FILE;
-typedef size_t fpos_t;
-
-// [C11-7.21.1] I/O related macros
-
-#define _IOFBF 1
-#define _IOLBF 2
-#define _IONBF 3
-
-#define BUFSIZ 512
-
-#define EOF (-1)
-
-#define FOPEN_MAX 1024
-#define FILENAME_MAX 256
-#define L_tmpnam 256
-
-#define TMP_MAX 1024
-
-#ifndef __MLIBC_ABI_ONLY
-
-extern FILE *stderr;
-extern FILE *stdin;
-extern FILE *stdout;
-
-// [C11-7.21.4] Operations on files
-
-int remove(const char *filename);
-int rename(const char *old_path, const char *new_path);
-int renameat(int olddirfd, const char *old_path, int newdirfd, const char *new_path);
-FILE *tmpfile(void);
-char *tmpnam(char *buffer);
-
-// [C11-7.21.5] File access functions
-
-int fclose(FILE *stream);
-int fflush(FILE *stream);
-FILE *fopen(const char *__restrict filename, const char *__restrict mode);
-FILE *freopen(const char *__restrict filename, const char *__restrict mode, FILE *__restrict stream);
-void setbuf(FILE *__restrict stream, char *__restrict buffer);
-int setvbuf(FILE *__restrict stream, char *__restrict buffer, int mode, size_t size);
-void setlinebuf(FILE *stream);
-void setbuffer(FILE *, char *, size_t);
-
-// [C11-7.21.6] Formatted input/output functions
-
-__attribute__((__format__(printf, 2, 3)))
-int fprintf(FILE *__restrict stream, const char *__restrict format, ...);
-
-__attribute__((__format__(scanf, 2, 3)))
-int fscanf(FILE *__restrict stream, const char *__restrict format, ...);
-
-__attribute__((__format__(printf, 1, 2)))
-int printf(const char *__restrict format, ...);
-
-__attribute__((__format__(scanf, 1, 2)))
-int scanf(const char *__restrict format, ...);
-
-__attribute__((__format__(printf, 3, 4)))
-int snprintf(char *__restrict buffer, size_t max_size, const char *__restrict format, ...);
-
-__attribute__((__format__(printf, 2, 3)))
-int sprintf(char *__restrict buffer, const char *__restrict format, ...);
-
-__attribute__((__format__(scanf, 2, 3)))
-int sscanf(const char *__restrict buffer, const char *__restrict format, ...);
-
-__attribute__((__format__(printf, 2, 0)))
-int vfprintf(FILE *__restrict stream, const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(scanf, 2, 0)))
-int vfscanf(FILE *__restrict stream, const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(printf, 1, 0)))
-int vprintf(const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(scanf, 1, 0)))
-int vscanf(const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(printf, 3, 0)))
-int vsnprintf(char *__restrict buffer, size_t max_size,
- const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(printf, 2, 0)))
-int vsprintf(char *__restrict buffer, const char *__restrict format, __builtin_va_list args);
-
-__attribute__((__format__(scanf, 2, 0)))
-int vsscanf(const char *__restrict buffer, const char *__restrict format, __builtin_va_list args);
-
-// this is a gnu extension
-__attribute__((__format__(printf, 2, 0)))
-int vasprintf(char **, const char *, __builtin_va_list);
-
-// [C11-7.21.7] Character input/output functions
-
-int fgetc(FILE *stream);
-char *fgets(char *__restrict buffer, size_t max_size, FILE *__restrict stream);
-int fputc(int c, FILE *stream);
-int fputs(const char *__restrict string, FILE *__restrict stream);
-char *gets(char *s);
-int getc(FILE *stream);
-int getchar(void);
-int putc(int c, FILE *stream);
-int putchar(int c);
-int puts(const char *string);
-int ungetc(int c, FILE *stream);
-
-// [C11-7.21.8] Direct input/output functions
-
-size_t fread(void *__restrict buffer, size_t size, size_t count, FILE *__restrict stream);
-size_t fwrite(const void *__restrict buffer, size_t size, size_t count, FILE *__restrict stream);
-
-// [C11-7.21.9] File positioning functions
-
-int fgetpos(FILE *__restrict stream, fpos_t *__restrict position);
-int fseek(FILE *stream, long offset, int whence);
-int fsetpos(FILE *stream, const fpos_t *position);
-long ftell(FILE *stream);
-void rewind(FILE *stream);
-
-// [C11-7.21.10] Error handling functions
-
-void clearerr(FILE *stream);
-int feof(FILE *stream);
-int ferror(FILE *stream);
-void perror(const char *string);
-
-// POSIX unlocked I/O extensions.
-
-int getc_unlocked(FILE *);
-int getchar_unlocked(void);
-int putc_unlocked(int, FILE *);
-int putchar_unlocked(int);
-
-// GLIBC extensions.
-
-ssize_t getline(char **, size_t *, FILE *);
-ssize_t getdelim(char **, size_t *, int, FILE *);
-
-int asprintf(char **, const char *, ...);
-
-// Linux unlocked I/O extensions.
-
-void flockfile(FILE *);
-void funlockfile(FILE *);
-int ftrylockfile(FILE *);
-
-void clearerr_unlocked(FILE *);
-int feof_unlocked(FILE *);
-int ferror_unlocked(FILE *);
-int fileno_unlocked(FILE *);
-int fflush_unlocked(FILE *);
-int fgetc_unlocked(FILE *);
-int fputc_unlocked(int, FILE *);
-size_t fread_unlocked(void *__restrict, size_t, size_t, FILE *__restrict);
-size_t fwrite_unlocked(const void *__restrict, size_t, size_t, FILE *__restrict);
-
-char *fgets_unlocked(char *, int, FILE *);
-int fputs_unlocked(const char *, FILE *);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_stdio.h>
-#endif
-
-#endif // _STDIO_H
-
diff --git a/lib/mlibc/options/ansi/include/stdlib.h b/lib/mlibc/options/ansi/include/stdlib.h
deleted file mode 100644
index d0e916a..0000000
--- a/lib/mlibc/options/ansi/include/stdlib.h
+++ /dev/null
@@ -1,128 +0,0 @@
-#ifndef _STDLIB_H
-#define _STDLIB_H
-
-#include <alloca.h>
-#include <mlibc-config.h>
-#include <bits/null.h>
-#include <bits/size_t.h>
-#include <bits/wchar_t.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// [7.22] General utilities
-
-typedef struct {
- int quot, rem;
-} div_t;
-
-typedef struct {
- long quot, rem;
-} ldiv_t;
-
-typedef struct {
- long long quot, rem;
-} lldiv_t;
-
-#define EXIT_FAILURE 1
-#define EXIT_SUCCESS 0
-
-#define RAND_MAX 0x7FFFFFFF
-
-// TODO: this should not be a compile-time constant
-#define MB_CUR_MAX 4
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [7.22.1] Numeric conversion functions
-
-double atof(const char *string);
-int atoi(const char *string);
-long atol(const char *string);
-long long atoll(const char *string);
-double strtod(const char *__restrict string, char **__restrict end);
-float strtof(const char *__restrict string, char **__restrict end);
-long double strtold(const char *__restrict string, char **__restrict end);
-long strtol(const char *__restrict string, char **__restrict end, int base);
-long long strtoll(const char *__restrict string, char **__restrict end, int base);
-unsigned long strtoul(const char *__restrict string, char **__restrict end, int base);
-unsigned long long strtoull(const char *__restrict string, char **__restrict end, int base);
-
-// [7.22.2] Pseudo-random sequence generation functions
-
-int rand(void);
-int rand_r(unsigned *);
-void srand(unsigned int);
-
-// [7.22.3] Memory management functions
-
-void *aligned_alloc(size_t alignment, size_t size);
-void *calloc(size_t count, size_t size);
-void free(void *pointer);
-void *malloc(size_t size);
-void *realloc(void *pointer, size_t size);
-
-int posix_memalign(void **, size_t, size_t);
-
-// [7.22.4] Communication with the environment
-
-__attribute__((__noreturn__)) void abort(void);
-int atexit(void (*func)(void));
-int at_quick_exit(void (*func)(void));
-__attribute__((__noreturn__)) void exit(int status);
-__attribute__((__noreturn__)) void _Exit(int status);
-char *getenv(const char *name);
-__attribute__((__noreturn__)) void quick_exit(int status);
-int system(const char *string);
-
-// GLIBC extension.
-char *mktemp(char *);
-
-// [7.22.5] Searching and sorting utilities
-
-void *bsearch(const void *key, const void *base, size_t count, size_t size,
- int (*compare)(const void *, const void *));
-void qsort(void *base, size_t count, size_t size,
- int (*compare)(const void *, const void *));
-void qsort_r(void *base, size_t nmemb, size_t size,
- int (*compar)(const void *, const void *, void *),
- void *arg);
-
-// [7.22.6] Integer arithmetic functions
-
-int abs(int number);
-long labs(long number);
-long long llabs(long long number);
-
-div_t div(int number, int denom);
-ldiv_t ldiv(long number, long denom);
-lldiv_t lldiv(long long number, long long denom);
-
-// [7.22.7] Multibyte character conversion functions
-
-int mblen(const char *, size_t);
-int mbtowc(wchar_t *__restrict wc, const char *__restrict mb_chr, size_t max_size);
-int wctomb(char *mb_chr, wchar_t wc);
-
-// [7.22.8] Multibyte string conversion functions
-
-size_t mbstowcs(wchar_t *__restrict wc_string, const char *__restrict mb_string, size_t max_size);
-size_t wcstombs(char *mb_string, const wchar_t *__restrict wc_string, size_t max_size);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#if __MLIBC_GLIBC_OPTION
-typedef int (*comparison_fn_t) (const void *, const void *);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_stdlib.h>
-#endif
-
-#endif // _STDLIB_H
-
diff --git a/lib/mlibc/options/ansi/include/string.h b/lib/mlibc/options/ansi/include/string.h
deleted file mode 100644
index 5297e36..0000000
--- a/lib/mlibc/options/ansi/include/string.h
+++ /dev/null
@@ -1,107 +0,0 @@
-#ifndef _STRING_H
-#define _STRING_H
-
-#include <mlibc-config.h>
-#include <bits/null.h>
-#include <bits/size_t.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [7.24.2] Copying functions
-
-void *memcpy(void *__restrict dest, const void *__restrict src, size_t size);
-void *memmove(void *dest, const void *src, size_t size);
-char *strcpy(char *__restrict dest, const char *src);
-char *strncpy(char *__restrict dest, const char *src, size_t max_size);
-
-// [7.24.3] Concatenation functions
-
-char *strcat(char *__restrict dest, const char *__restrict src);
-char *strncat(char *__restrict dest, const char *__restrict src, size_t max_size);
-
-// [7.24.4] Comparison functions
-
-int memcmp(const void *a, const void *b, size_t size);
-int strcmp(const char *a, const char *b);
-int strcoll(const char *a, const char *b);
-int strncmp(const char *a, const char *b, size_t max_size);
-size_t strxfrm(char *__restrict dest, const char *__restrict src, size_t max_size);
-
-// [7.24.5] Search functions
-
-void *memchr(const void *s, int c, size_t size);
-char *strchr(const char *s, int c);
-size_t strcspn(const char *s, const char *chrs);
-char *strpbrk(const char *s, const char *chrs);
-char *strrchr(const char *s, int c);
-size_t strspn(const char *s, const char *chrs);
-char *strstr(const char *pattern, const char *s);
-char *strtok(char *__restrict s, const char *__restrict delimiter);
-
-// This is a GNU extension.
-char *strchrnul(const char *, int);
-
-// [7.24.6] Miscellaneous functions
-
-void *memset(void *dest, int c, size_t size);
-char *strerror(int errnum);
-size_t strlen(const char *s);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#if __MLIBC_POSIX_OPTION && (defined(_BSD_SOURCE) || defined(_GNU_SOURCE))
-#include <strings.h>
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-// POSIX extensions.
-int strerror_r(int, char *, size_t);
-void *mempcpy(void *, const void *, size_t);
-
-// GNU extensions.
-int strverscmp(const char *l0, const char *r0);
-int ffsl(long i);
-int ffsll(long long i);
-void *memmem(const void *, size_t, const void *, size_t);
-
-/* Handling the basename mess:
- * If <libgen.h> is included *at all*, we use the XPG-defined basename
- * implementation, otherwise, we use the GNU one. Since our ABI previously
- * provided the XPG one under basename, we'll have to diverge from GNU here and
- * provide __mlibc_gnu_basename instead.
- */
-#if __MLIBC_GLIBC_OPTION && defined(_GNU_SOURCE) && !defined(basename)
-char *__mlibc_gnu_basename_c(const char *path);
-
-# ifdef __cplusplus
-extern "C++" {
-static inline const char *__mlibc_gnu_basename(const char *path) {
- return __mlibc_gnu_basename_c(path);
-}
-static inline char *__mlibc_gnu_basename(char *path) {
- return __mlibc_gnu_basename_c(path);
-}
-}
-# else
-# define __mlibc_gnu_basename __mlibc_gnu_basename_c
-# endif
-
-#define basename __mlibc_gnu_basename
-#endif
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_string.h>
-#endif
-
-#endif // _STRING_H
diff --git a/lib/mlibc/options/ansi/include/threads.h b/lib/mlibc/options/ansi/include/threads.h
deleted file mode 100644
index f96abcd..0000000
--- a/lib/mlibc/options/ansi/include/threads.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef _THREADS_H
-#define _THREADS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <bits/threads.h>
-
-enum {
- mtx_plain,
- mtx_recursive,
- mtx_timed,
-};
-
-enum {
- thrd_success,
- thrd_timedout,
- thrd_busy,
- thrd_error,
- thrd_nomem,
-};
-
-typedef struct __mlibc_thread_data *thrd_t;
-typedef struct __mlibc_mutex mtx_t;
-typedef struct __mlibc_cond cnd_t;
-#ifndef __cplusplus
-#define thread_local _Thread_local
-#endif
-
-typedef int (*thrd_start_t)(void*);
-
-#ifndef __MLIBC_ABI_ONLY
-
-int thrd_create(thrd_t *thr, thrd_start_t func, void *arg);
-int thrd_equal(thrd_t lhs, thrd_t rhs);
-thrd_t thrd_current(void);
-int thrd_sleep(const struct timespec *duration, struct timespec *remaining);
-void thrd_yield(void);
-int thrd_detach(thrd_t thr);
-int thrd_join(thrd_t thr, int *res);
-__attribute__((__noreturn__)) void thrd_exit(int res);
-
-int mtx_init(mtx_t *mtx, int type);
-void mtx_destroy(mtx_t *mtx);
-int mtx_lock(mtx_t *mtx);
-int mtx_unlock(mtx_t *mtx);
-
-int cnd_init(cnd_t *cond);
-void cnd_destroy(cnd_t *cond);
-int cnd_broadcast(cnd_t *cond);
-int cnd_wait(cnd_t *cond, mtx_t *mtx);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _THREADS_H */
-
diff --git a/lib/mlibc/options/ansi/include/time.h b/lib/mlibc/options/ansi/include/time.h
deleted file mode 100644
index a3239e9..0000000
--- a/lib/mlibc/options/ansi/include/time.h
+++ /dev/null
@@ -1,154 +0,0 @@
-#ifndef _TIME_H
-#define _TIME_H
-
-#include <bits/null.h>
-#include <bits/size_t.h>
-#include <bits/ansi/time_t.h>
-#include <bits/ansi/timespec.h>
-#include <mlibc-config.h>
-
-// [7.27.1] Components of time
-
-#define CLOCKS_PER_SEC ((clock_t)1000000)
-
-#define TIME_UTC 1
-
-// POSIX extensions.
-
-#define CLOCK_REALTIME 0
-#define CLOCK_MONOTONIC 1
-#define CLOCK_PROCESS_CPUTIME_ID 2
-#define CLOCK_THREAD_CPUTIME_ID 3
-#define CLOCK_MONOTONIC_RAW 4
-#define CLOCK_REALTIME_COARSE 5
-#define CLOCK_MONOTONIC_COARSE 6
-#define CLOCK_BOOTTIME 7
-#define CLOCK_REALTIME_ALARM 8
-#define CLOCK_BOOTTIME_ALARM 9
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// [7.27.1] Components of time
-
-typedef long clock_t; // Matches Linux' ABI.
-
-struct tm {
- int tm_sec;
- int tm_min;
- int tm_hour;
- int tm_mday;
- int tm_mon;
- int tm_year;
- int tm_wday;
- int tm_yday;
- int tm_isdst;
- long int tm_gmtoff;
- const char *tm_zone;
-};
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [7.27.2] Time manipulation functions
-
-clock_t clock(void);
-double difftime(time_t a, time_t b);
-time_t mktime(struct tm *ptr);
-time_t time(time_t *timer);
-int timespec_get(struct timespec *ptr, int base);
-
-// [7.27.3] Time conversion functions
-
-char *asctime(const struct tm *ptr);
-char *ctime(const time_t *timer);
-struct tm *gmtime(const time_t *timer);
-struct tm *gmtime_r(const time_t *__restrict timer, struct tm *__restrict result);
-struct tm *localtime(const time_t *timer);
-size_t strftime(char *__restrict dest, size_t max_size,
- const char *__restrict format, const struct tm *__restrict ptr);
-
-void tzset(void);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-// POSIX extensions.
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_time.h>
-# include <bits/posix/timer_t.h>
-#endif // __MLIBC_POSIX_OPTION
-
-#include <abi-bits/clockid_t.h>
-
-#define TIMER_ABSTIME 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-extern int daylight;
-extern long timezone;
-extern char *tzname[2];
-
-int nanosleep(const struct timespec *, struct timespec *);
-
-int clock_getres(clockid_t, struct timespec *);
-int clock_gettime(clockid_t, struct timespec *);
-int clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *);
-int clock_settime(clockid_t, const struct timespec *);
-
-struct tm *localtime_r(const time_t *, struct tm *);
-char *asctime_r(const struct tm *tm, char *buf);
-char *ctime_r(const time_t *, char *);
-
-#if __MLIBC_POSIX_OPTION
-char *strptime(const char *__restrict, const char *__restrict,
- struct tm *__restrict);
-#endif /* __MLIBC_POSIX_OPTION */
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-// GNU extensions.
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __MLIBC_ABI_ONLY
-
-time_t timelocal(struct tm *);
-time_t timegm(struct tm *);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-// Linux extensions.
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct itimerspec {
- struct timespec it_interval;
- struct timespec it_value;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _TIME_H
diff --git a/lib/mlibc/options/ansi/include/uchar.h b/lib/mlibc/options/ansi/include/uchar.h
deleted file mode 100644
index 3651a60..0000000
--- a/lib/mlibc/options/ansi/include/uchar.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef _UCHAR_H
-#define _UCHAR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <bits/mbstate.h>
-#include <bits/size_t.h>
-
-#ifndef __cplusplus
-typedef __CHAR16_TYPE__ char16_t;
-typedef __CHAR32_TYPE__ char32_t;
-#endif /* __cplusplus */
-
-typedef struct __mlibc_mbstate mbstate_t;
-
-#ifndef __MLIBC_ABI_ONLY
-
-size_t c32rtomb(char *pmb, char32_t c32, mbstate_t *ps);
-size_t mbrtoc32(char32_t *pc32, const char *pmb, size_t max, mbstate_t *ps);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UCHAR_H */
diff --git a/lib/mlibc/options/ansi/include/wchar.h b/lib/mlibc/options/ansi/include/wchar.h
deleted file mode 100644
index 27198c5..0000000
--- a/lib/mlibc/options/ansi/include/wchar.h
+++ /dev/null
@@ -1,128 +0,0 @@
-#ifndef _WCHAR_H
-#define _WCHAR_H
-
-#include <bits/null.h>
-#include <bits/size_t.h>
-#include <bits/wchar_t.h>
-#include <bits/wchar.h>
-#include <bits/wint_t.h>
-#include <bits/mbstate.h>
-
-#define WEOF 0xffffffffU
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct __mlibc_file_base FILE;
-
-typedef struct __mlibc_mbstate mbstate_t;
-
-// MISSING: struct tm
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [7.28.2] Wide formatted I/O functions
-
-int fwprintf(FILE *__restrict, const wchar_t *__restrict, ...);
-int fwscanf(FILE *__restrict, const wchar_t *__restrict, ...);
-int vfwprintf(FILE *__restrict, const wchar_t *__restrict, __builtin_va_list);
-int vfwscanf(FILE *__restrict, const wchar_t *__restrict, __builtin_va_list);
-
-int swprintf(wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
-int swscanf(wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
-int vswprintf(wchar_t *__restrict, size_t, const wchar_t *__restrict, __builtin_va_list);
-int vswscanf(wchar_t *__restrict, size_t, const wchar_t *__restrict, __builtin_va_list);
-
-int wprintf(const wchar_t *__restrict, ...);
-int wscanf(const wchar_t *__restrict, ...);
-int vwprintf(const wchar_t *__restrict, __builtin_va_list);
-int vwscanf(const wchar_t *__restrict, __builtin_va_list);
-
-// [7.28.3] Wide character I/O functions
-
-wint_t fgetwc(FILE *);
-wchar_t *fgetws(wchar_t *__restrict, int, FILE *__restrict);
-wint_t fputwc(wchar_t, FILE *);
-int fputws(const wchar_t *__restrict, FILE *__restrict);
-int fwide(FILE *, int);
-wint_t getwc(FILE *);
-wint_t getwchar(void);
-wint_t putwc(wchar_t, FILE *);
-wint_t putwchar(wchar_t);
-wint_t ungetwc(wint_t, FILE *);
-
-// [7.28.4] Wide string functions
-
-double wcstod(const wchar_t *__restrict, wchar_t **__restrict);
-float wcstof(const wchar_t *__restrict, wchar_t **__restrict);
-long double wcstold(const wchar_t *__restrict, wchar_t **__restrict);
-
-long wcstol(const wchar_t *__restrict, wchar_t **__restrict, int);
-long long wcstoll(const wchar_t *__restrict, wchar_t **__restrict, int);
-unsigned long wcstoul(const wchar_t *__restrict, wchar_t **__restrict, int);
-unsigned long long wcstoull(const wchar_t *__restrict, wchar_t **__restrict, int);
-
-wchar_t *wcscpy(wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcsncpy(wchar_t *__restrict, const wchar_t *__restrict, size_t);
-wchar_t *wmemcpy(wchar_t *__restrict, const wchar_t *__restrict, size_t);
-wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
-
-wchar_t *wcscat(wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcsncat(wchar_t *__restrict, const wchar_t *__restrict, size_t);
-
-int wcscmp(const wchar_t *, const wchar_t *);
-int wcscoll(const wchar_t *, const wchar_t *);
-int wcsncmp(const wchar_t *, const wchar_t *, size_t);
-int wcsxfrm(wchar_t *__restrict, const wchar_t *__restrict, size_t);
-int wmemcmp(const wchar_t *, const wchar_t *, size_t);
-
-wchar_t *wcschr(const wchar_t *, wchar_t);
-size_t wcscspn(const wchar_t *, const wchar_t *);
-wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
-wchar_t *wcsrchr(const wchar_t *, wchar_t);
-size_t wcsspn(const wchar_t *, const wchar_t *);
-wchar_t *wcsstr(const wchar_t *, const wchar_t *);
-wchar_t *wcstok(wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict);
-wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
-
-size_t wcslen(const wchar_t *);
-wchar_t *wmemset(wchar_t *, wchar_t, size_t);
-
-// [7.28.5] Wide date/time functions
-
-/* POSIX says:
- * The tag tm is declared as naming an incomplete structure type, the contents of which are
- * described in the header <time.h>. */
-struct tm;
-size_t wcsftime(wchar_t *__restrict, size_t, const wchar_t *__restrict,
- const struct tm *__restrict);
-
-// [7.28.6] Wide conversion functions
-
-wint_t btowc(int c);
-int wctob(wint_t);
-
-int mbsinit(const mbstate_t *);
-size_t mbrlen(const char *__restrict, size_t, mbstate_t *__restrict);
-size_t mbrtowc(wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
-size_t wcrtomb(char *__restrict, wchar_t, mbstate_t *__restrict);
-size_t mbsrtowcs(wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict);
-size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict);
-size_t wcsrtombs(char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict);
-size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict);
-
-// POSIX extensions
-int wcwidth(wchar_t wc);
-int wcswidth(const wchar_t *, size_t);
-wchar_t *wcsdup(const wchar_t *s);
-int wcsncasecmp(const wchar_t*, const wchar_t*, size_t);
-int wcscasecmp(const wchar_t *, const wchar_t *);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _WCHAR_H
diff --git a/lib/mlibc/options/ansi/include/wctype.h b/lib/mlibc/options/ansi/include/wctype.h
deleted file mode 100644
index df5d37a..0000000
--- a/lib/mlibc/options/ansi/include/wctype.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef _WCTYPE_H
-#define _WCTYPE_H
-
-#include <mlibc-config.h>
-#include <bits/wint_t.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef unsigned long wctype_t;
-typedef unsigned long wctrans_t;
-
-#ifndef __MLIBC_ABI_ONLY
-
-// [C11/7.30.2.2] Extensible wide character classification functions.
-
-int iswalnum(wint_t);
-int iswalpha(wint_t);
-int iswblank(wint_t);
-int iswcntrl(wint_t);
-int iswdigit(wint_t);
-int iswgraph(wint_t);
-int iswlower(wint_t);
-int iswprint(wint_t);
-int iswpunct(wint_t);
-int iswspace(wint_t);
-int iswupper(wint_t);
-int iswxdigit(wint_t);
-
-wctype_t wctype(const char *);
-int iswctype(wint_t, wctype_t);
-
-// [C11/7.30.3] Wide character case mapping utilities.
-
-wint_t towlower(wint_t);
-wint_t towupper(wint_t);
-
-wctrans_t wctrans(const char *);
-wint_t towctrans(wint_t, wctrans_t);
-
-#endif /* !__MLIBC_ABI_ONLY */
-
-#ifdef __cplusplus
-}
-#endif
-
-#if __MLIBC_POSIX_OPTION
-# include <bits/posix/posix_wctype.h>
-#endif
-
-#endif // _WCTYPE_H