Unified · Split
| @@ -715,6 +715,7 @@ struct TCCState { · 714 unmodified lines | ||
| 715 | 715 | |
| 716 | 716 | #define DEF_ASM(x) DEF(TOK_ASM_ ## x, #x) |
| 717 | 717 | #define TOK_ASM_int TOK_INT |
| 718 | +#define TOK_ASM_weak TOK_WEAK1 | |
| 718 | 719 | |
| 719 | 720 | #if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64 |
| 720 | 721 | /* only used for i386 asm opcodes definitions */ |
| @@ -481,6 +481,8 @@ static void asm_parse_directive(TCCState *s1) · 480 unmodified lines | ||
| 481 | 481 | break; |
| 482 | 482 | case TOK_ASM_globl: |
| 483 | 483 | case TOK_ASM_global: |
| 484 | + case TOK_ASM_weak: | |
| 485 | + tok1 = tok; | |
| 484 | 486 | do { |
| 485 | 487 | Sym *sym; |
| 486 | 488 | |
| @@ -491,6 +493,8 @@ static void asm_parse_directive(TCCState *s1) · 4 unmodified lines | ||
| 491 | 493 | sym->type.t = VT_VOID; |
| 492 | 494 | } |
| 493 | 495 | sym->type.t &= ~VT_STATIC; |
| 496 | + if (tok1 == TOK_ASM_weak) | |
| 497 | + sym->type.t |= VT_WEAK; | |
| 494 | 498 | next(); |
| 495 | 499 | } while (tok == ','); |
| 496 | 500 | break; |