aboutsummaryrefslogtreecommitdiff
path: root/tcc.c
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji _at_ gmail.com>2009-04-01 03:45:18 +0900
committergrischka <grischka>2009-04-18 15:07:09 +0200
commitebb874e2164308b1b9a53a2b1f6d1b9f65894059 (patch)
tree8f20f558fe52bac208014ab4d8609ec6ad58bcff /tcc.c
parent6512d9e2eac343c8419f61866ec7b866e19bf2c4 (diff)
downloadtinycc-ebb874e2164308b1b9a53a2b1f6d1b9f65894059.tar.gz
tinycc-ebb874e2164308b1b9a53a2b1f6d1b9f65894059.tar.bz2
Remove multiple definition error caused by combination of x86-64 and va_list.
We need malloc and free to implement va_start and va_end. Since malloc and free may be replaced by #define, we add __builtin_malloc and __builtin_free.
Diffstat (limited to 'tcc.c')
-rw-r--r--tcc.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tcc.c b/tcc.c
index ceca30f..f707791 100644
--- a/tcc.c
+++ b/tcc.c
@@ -7750,6 +7750,24 @@ static void unary(void)
vset(&type, VT_LOCAL, 0);
}
break;
+#ifdef TCC_TARGET_X86_64
+ case TOK_builtin_malloc:
+ {
+ char *p = file->buf_ptr;
+ file->buf_ptr = "malloc";
+ next_nomacro1();
+ file->buf_ptr = p;
+ goto tok_identifier;
+ }
+ case TOK_builtin_free:
+ {
+ char *p = file->buf_ptr;
+ file->buf_ptr = "free";
+ next_nomacro1();
+ file->buf_ptr = p;
+ goto tok_identifier;
+ }
+#endif
case TOK_INC:
case TOK_DEC:
t = tok;