1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
#include <stddef.h>
#define S(s) s"\0\0\0\0\0", (sizeof s) - 1
struct EmbedFile {
const char *name;
const char *s;
size_t len;
} embedfilesdir[] = {
{"stddef.h", S("\
#pragma once\n\
typedef __PTRDIFF_TYPE__ ptrdiff_t;\n\
typedef __SIZE_TYPE__ size_t;\n\
typedef __WCHAR_TYPE__ wchar_t;\n\
#undef NULL\n\
#define NULL ((void*)0)\n\
#undef offsetof\n\
#define offsetof(type, memb) ((size_t)((char *)&((type *)0)->memb - (char *)0))\n\
#if __STDC_VERSION__ >= 201112L\n\
typedef struct {long long __ll; long double __ld;} max_align_t;\n\
#endif\n\
")},
{"stdarg.h", S("\
#pragma once\n\
typedef __builtin_va_list va_list;\n\
#ifndef __GNUC_VA_LIST\n\
#define __GNUC_VA_LIST\n\
typedef __builtin_va_list __gnuc_va_list;\n\
#endif\n\
#define va_start(ap,n) __builtin_va_start(ap)\n\
#define va_arg(ap,type) __builtin_va_arg(ap, type)\n\
#define va_copy(dst,src) __builtin_va_copy(dst, src)\n\
#define va_end(ap) __builtin_va_end(ap)\n\
")},
{"stdbool.h", S("\
#pragma once\n\
#if __STDC_VERSION__ < 202311L /* in C23 they are keywords */\n\
#define bool _Bool \n\
#define true 1\n\
#define false 0\n\
#endif\n\
#define __bool_true_false_are_defined 1\n\
")},
{"float.h", S("\
#pragma once\n\
#define FLT_ROUNDS (-1)\n\
#define FLT_EVAL_METHOD (-1)\n\
#define FLT_HAS_SUBNORM (-1)\n\
#define DBL_HAS_SUBNORM (-1)\n\
#define LDBL_HAS_SUBNORM (-1)\n\
#define FLT_RADIX 2\n\
#define FLT_MANT_DIG 24\n\
#define DBL_MANT_DIG 53\n\
#define LDBL_MANT_DIG 53\n\
#define FLT_DECIMAL_DIG 9\n\
#define DBL_DECIMAL_DIG 17\n\
#define LDBL_DECIMAL_DIG 17\n\
#define DECIMAL_DIG 17\n\
#define FLT_DIG 6\n\
#define DBL_DIG 15\n\
#define LDBL_DIG 15\n\
#define FLT_MIN_EXP (-125)\n\
#define DBL_MIN_EXP (-1021)\n\
#define LDBL_MIN_EXP (-1021)\n\
#define FLT_MIN_10_EXP (-37)\n\
#define DBL_MIN_10_EXP (-307)\n\
#define LDBL_MIN_10_EXP (-307)\n\
#define FLT_MAX_EXP 128\n\
#define DBL_MAX_EXP 1024\n\
#define LDBL_MAX_EXP 1024\n\
#define FLT_MAX_10_EXP 38\n\
#define DBL_MAX_10_EXP 308\n\
#define LDBL_MAX_10_EXP 308\n\
#define FLT_MAX 3.40282e+38\n\
#define DBL_MAX 1.79769e+308\n\
#define LDBL_MAX 1.79769e+308\n\
#define FLT_EPSILON 1.19209e-07\n\
#define DBL_EPSILON 2.22045e-16\n\
#define LDBL_EPSILON 2.22045e-16\n\
#define FLT_MIN 1.17549e-38\n\
#define DBL_MIN 2.22507e-308\n\
#define LDBL_MIN 2.22507e-308\n\
#define FLT_TRUE_MIN 1.4013e-45\n\
#define DBL_TRUE_MIN 4.94066e-324\n\
#define LDBL_TRUE_MIN 4.94066e-324\n\
")},
{"iso646.h", S("\
#define and &&\n\
#define and_eq &=\n\
#define bitand &\n\
#define bitor |\n\
#define compl ~\n\
#define not !\n\
#define not_eq !=\n\
#define or ||\n\
#define or_eq |=\n\
#define xor ^\n\
#define xor_eq ^=\n\
")},
{"stdnoreturn.h", S("\
#define noreturn _Noreturn\n\
")},
{"stdalign.h", S("\
#if __STDC_VERSION__ < 202311L\n\
#define alignas _Alignas\n\
#define alignof _Alignof\n\
#define __alignas_is_defined 1\n\
#define __alignof_is_defined 1\n\
#endif\n\
")},
{"limits.h", S("\
#pragma once\n\
/* Tell glibc not to try to recursively #include_next gcc's <limits.h> */\n\
#if defined __GNUC__ && !defined _GCC_LIMITS_H\n\
#define _GCC_LIMITS_H_\n\
#endif\n\
/* We want the system libc header for POSIX constants */\n\
#ifdef __STDC_HOSTED__\n\
#include_next <limits.h>\n\
#endif\n\
\n\
#undef CHAR_BIT\n\
#undef CHAR_MAX\n\
#undef CHAR_MIN\n\
#undef UCHAR_MAX\n\
#undef SCHAR_MAX\n\
#undef SCHAR_MIN\n\
#undef USHRT_MAX\n\
#undef SHRT_MAX\n\
#undef SHRT_MIN\n\
#undef MB_LEN_MAX\n\
#undef UINT_MAX\n\
#undef INT_MAX\n\
#undef INT_MIN\n\
#undef ULONG_MAX\n\
#undef LONG_MAX\n\
#undef LONG_MIN\n\
#undef ULLONG_MAX\n\
#undef LLONG_MAX\n\
#undef LLONG_MIN\n\
\n\
#define CHAR_BIT 8\n\
#ifdef __CHAR_UNSIGNED__\n\
#define CHAR_MAX UCHAR_MAX\n\
#define CHAR_MIN 0\n\
#else\n\
#define CHAR_MAX SCHAR_MAX\n\
#define CHAR_MIN SCHAR_MIN\n\
#endif\n\
#define UCHAR_MAX 255\n\
#define SCHAR_MAX 127\n\
#define SCHAR_MIN (-128)\n\
#define USHRT_MAX 65535\n\
#define SHRT_MAX 32767\n\
#define SHRT_MIN (-32768)\n\
#define MB_LEN_MAX 16\n\
#define UINT_MAX 4294967295U\n\
#define INT_MAX 2147483647\n\
#define INT_MIN (-INT_MAX - 1)\n\
#if __SIZEOF_LONG__ == __SIZEOF__INT__\n\
#define ULONG_MAX 4294967295UL\n\
#define LONG_MAX 2147483647L\n\
#else\n\
#define ULONG_MAX 18446744073709551615UL\n\
#define LONG_MAX 9223372036854775807L\n\
#endif\n\
#define LONG_MIN (-LONG_MAX - 1L)\n\
#define ULLONG_MAX 18446744073709551615ULL\n\
#define LLONG_MAX 9223372036854775807LL\n\
#define LLONG_MIN (-LLONG_MAX-1)\n\
")},
{NULL}
};
/* vim:set ts=3 sw=3 expandtab: */
|