diff --git a/libtcc.c b/libtcc.c index 58a5ca07..e5383211 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1080,6 +1080,12 @@ ST_FUNC int tcc_add_file_internal(TCCState *s1, const char *filename, int flags) if (ext[0]) ext++; +#ifdef CONFIG_TCC_ASM + /* if .S file, define __ASSEMBLER__ like gcc does */ + if (!strcmp(ext, "S")) + tcc_define_symbol(s1, "__ASSEMBLER__", NULL); +#endif + /* open the file */ ret = tcc_open(s1, filename); if (ret < 0) { diff --git a/tests/asmtest.S b/tests/asmtest.S index f6fecde5..0d4c0fc9 100644 --- a/tests/asmtest.S +++ b/tests/asmtest.S @@ -564,3 +564,7 @@ int $0x10 pushl $1 pushw $1 push $1 + +#ifdef __ASSEMBLER__ // should be defined, for S files + inc %eax +#endif