From 94aefdc760b1a7f77fe3a64d2ebf8c13645a49d0 Mon Sep 17 00:00:00 2001 From: lemon Date: Mon, 20 Apr 2026 16:39:48 +0200 Subject: frontend: embed , fix asm names --- src/a_embedfilesdir.c | 56 +++++++++++++++++++++++++++++++++++++++++---------- src/a_targ.c | 1 + src/c.c | 6 +++--- 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("\ @@ -110,6 +110,40 @@ typedef __builtin_va_list __gnuc_va_list;\n\ #define __alignas_is_defined 1\n\ #define __alignof_is_defined 1\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)) ; -- cgit v1.2.3