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