aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/a_embedfilesdir.c56
-rw-r--r--src/a_targ.c1
-rw-r--r--src/c.c6
3 files changed, 49 insertions, 14 deletions
diff --git a/src/a_embedfilesdir.c b/src/a_embedfilesdir.c
index d07bb87..6500d84 100644
--- a/src/a_embedfilesdir.c
+++ b/src/a_embedfilesdir.c
@@ -86,17 +86,17 @@ typedef __builtin_va_list __gnuc_va_list;\n\
")},
{"iso646.h", S("\
-#define and &&\
-#define and_eq &=\
-#define bitand &\
-#define bitor |\
-#define compl ~\
-#define not !\
-#define not_eq !=\
-#define or ||\
-#define or_eq |=\
-#define xor ^\
-#define xor_eq ^=\
+#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("\
@@ -112,6 +112,40 @@ typedef __builtin_va_list __gnuc_va_list;\n\
#endif\n\
")},
+{"limits.h", S("\
+#pragma once\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 4294967295\n\
+#define INT_MAX 2147483647\n\
+#define INT_MIN (-INT_MAX - 1)\n\
+#if __SIZEOF_LONG__ == __SIZEOF__INT__\n\
+#define ULONG_MAX UINT_MAX\n\
+#define LONG_MAX INT_MAX\n\
+#define LONG_MIN INT_MIN\n\
+#else\n\
+#define ULONG_MAX ULLONG_MAX\n\
+#define LONG_MAX LLONG_MAX\n\
+#define LONG_MIN LLONG_MIN\n\
+#endif\n\
+#define ULLONG_MAX 18446744073709551615ULL\n\
+#define LLONG_MAX 9223372036854775807LL\n\
+#define LLONG_MIN (-LLONG_MAX-1)\n\
+")},
+
{NULL}
};
diff --git a/src/a_targ.c b/src/a_targ.c
index f6e060c..b54e3ec 100644
--- a/src/a_targ.c
+++ b/src/a_targ.c
@@ -146,6 +146,7 @@ putpredefmacros(void)
cpp0define("__ORDER_BIG_ENDIAN__", "4321");
cpp0define("__BYTE_ORDER__",
targ_bigendian ? "__ORDER_BIG_ENDIAN__" : "__ORDER_LITTLE_ENDIAN__");
+ cpp0define("__USER_LABEL_PREFIX__", "");
}
bool
diff --git a/src/c.c b/src/c.c
index 3ef9cfc..4ff42b4 100644
--- a/src/c.c
+++ b/src/c.c
@@ -2955,10 +2955,10 @@ pdecl(DeclState *st, CComp *cm) {
if (st->kind == DTOPLEVEL || st->kind == DFUNCVAR) {
while (attrspec(cm, &st->attr)) ;
if (match(cm, NULL, TKW__asm__) && expect(cm, '(', NULL)) {
- peek(cm, &tk);
- if (expect(cm, TKSTRLIT, "asm symbol name")) {
+ if (peek(cm, NULL) == TKSTRLIT) {
+ lex(cm, &tk);
decl.sym = intern_(tk.s, tk.len);
- }
+ } else expect(cm, TKSTRLIT, "asm symbol name");
expect(cm, ')', NULL);
}
while (attrspec(cm, &st->attr)) ;