#define __GNUC__ = 2.1

__GNUC__ nowadays as macro seems to mean the "GNU C dialect"
rather than the compiler itself.  See also

  http://gcc.gnu.org/ml/gcc/2008-07/msg00026.html

This patch will probably cause problems of various kinds but
maybe we should try nonetheless.
This commit is contained in:
grischka 2016-10-15 16:01:16 +02:00
parent 4d247c00a3
commit f3c1ea6c2d
3 changed files with 27 additions and 6 deletions

View file

@ -885,15 +885,28 @@ LIBTCCAPI TCCState *tcc_new(void)
/* wint_t is unsigned int by default, but (signed) int on BSDs /* wint_t is unsigned int by default, but (signed) int on BSDs
and unsigned short on windows. Other OSes might have still and unsigned short on windows. Other OSes might have still
other conventions, sigh. */ other conventions, sigh. */
#if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) # if defined(__FreeBSD__) || defined (__FreeBSD_kernel__)
|| defined(__NetBSD__) || defined(__OpenBSD__)
tcc_define_symbol(s, "__WINT_TYPE__", "int"); tcc_define_symbol(s, "__WINT_TYPE__", "int");
#else # else
tcc_define_symbol(s, "__WINT_TYPE__", "unsigned int"); tcc_define_symbol(s, "__WINT_TYPE__", "unsigned int");
#endif # endif
# if 0
/* glibc defines */ /* glibc defines */
tcc_define_symbol(s, "__REDIRECT(name, proto, alias)", "name proto __asm__ (#alias)"); tcc_define_symbol(s, "__REDIRECT(name, proto, alias)",
tcc_define_symbol(s, "__REDIRECT_NTH(name, proto, alias)", "name proto __asm__ (#alias) __THROW"); "name proto __asm__ (#alias)");
#endif tcc_define_symbol(s, "__REDIRECT_NTH(name, proto, alias)",
"name proto __asm__ (#alias) __THROW");
# endif
# if 1
/* define __GNUC__ to have some useful stuff from sys/cdefs.h */
tcc_define_symbol(s, "__GNUC__", "2");
tcc_define_symbol(s, "__GNUC_MINOR__", "1");
tcc_define_symbol(s, "__builtin_alloca", "alloca");
tcc_define_symbol(s, "__builtin_memcpy", "memcpy");
tcc_define_symbol(s, "__USER_LABEL_PREFIX__", "");
# endif
#endif /* ndef TCC_TARGET_PE */
return s; return s;
} }

View file

@ -3104,10 +3104,14 @@ static void parse_attribute(AttributeDef *ad)
case TOK_MODE_DI: case TOK_MODE_DI:
ad->a.mode = VT_LLONG + 1; ad->a.mode = VT_LLONG + 1;
break; break;
case TOK_MODE_QI:
ad->a.mode = VT_BYTE + 1;
break;
case TOK_MODE_HI: case TOK_MODE_HI:
ad->a.mode = VT_SHORT + 1; ad->a.mode = VT_SHORT + 1;
break; break;
case TOK_MODE_SI: case TOK_MODE_SI:
case TOK_MODE_word:
ad->a.mode = VT_INT + 1; ad->a.mode = VT_INT + 1;
break; break;
default: default:

View file

@ -117,10 +117,14 @@
DEF(TOK_FASTCALL1, "fastcall") DEF(TOK_FASTCALL1, "fastcall")
DEF(TOK_FASTCALL2, "__fastcall") DEF(TOK_FASTCALL2, "__fastcall")
DEF(TOK_FASTCALL3, "__fastcall__") DEF(TOK_FASTCALL3, "__fastcall__")
DEF(TOK_MODE, "__mode__") DEF(TOK_MODE, "__mode__")
DEF(TOK_MODE_QI, "__QI__")
DEF(TOK_MODE_DI, "__DI__") DEF(TOK_MODE_DI, "__DI__")
DEF(TOK_MODE_HI, "__HI__") DEF(TOK_MODE_HI, "__HI__")
DEF(TOK_MODE_SI, "__SI__") DEF(TOK_MODE_SI, "__SI__")
DEF(TOK_MODE_word, "__word__")
DEF(TOK_DLLEXPORT, "dllexport") DEF(TOK_DLLEXPORT, "dllexport")
DEF(TOK_DLLIMPORT, "dllimport") DEF(TOK_DLLIMPORT, "dllimport")
DEF(TOK_NORETURN1, "noreturn") DEF(TOK_NORETURN1, "noreturn")