aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tcc.h1
-rw-r--r--tccasm.c4
2 files changed, 5 insertions, 0 deletions
diff --git a/tcc.h b/tcc.h
index b72f4e4..7d42607 100644
--- a/tcc.h
+++ b/tcc.h
@@ -715,6 +715,7 @@ struct TCCState {
#define DEF_ASM(x) DEF(TOK_ASM_ ## x, #x)
#define TOK_ASM_int TOK_INT
+#define TOK_ASM_weak TOK_WEAK1
#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64
/* only used for i386 asm opcodes definitions */
diff --git a/tccasm.c b/tccasm.c
index 1064ea6..8c62987 100644
--- a/tccasm.c
+++ b/tccasm.c
@@ -481,6 +481,8 @@ static void asm_parse_directive(TCCState *s1)
break;
case TOK_ASM_globl:
case TOK_ASM_global:
+ case TOK_ASM_weak:
+ tok1 = tok;
do {
Sym *sym;
@@ -491,6 +493,8 @@ static void asm_parse_directive(TCCState *s1)
sym->type.t = VT_VOID;
}
sym->type.t &= ~VT_STATIC;
+ if (tok1 == TOK_ASM_weak)
+ sym->type.t |= VT_WEAK;
next();
} while (tok == ',');
break;