| @@ -331,23 +331,24 @@ static void asm_parse_directive(TCCState *s1) · 330 unmodified lines |
| 331 | 331 | uint8_t *ptr; |
| 332 | 332 | |
| 333 | 333 | /* assembler directive */ |
| 334 | + next(); |
| 334 | 335 | sec = cur_text_section; |
| 335 | 336 | switch(tok) { |
| 336 | | − case TOK_ASMDIR_align: |
| 337 | | − case TOK_ASMDIR_p2align: |
| 338 | | − case TOK_ASMDIR_skip: |
| 339 | | − case TOK_ASMDIR_space: |
| 337 | + case TOK_ASM_align: |
| 338 | + case TOK_ASM_p2align: |
| 339 | + case TOK_ASM_skip: |
| 340 | + case TOK_ASM_space: |
| 340 | 341 | tok1 = tok; |
| 341 | 342 | next(); |
| 342 | 343 | n = asm_int_expr(s1); |
| 343 | | − if (tok1 == TOK_ASMDIR_p2align) |
| 344 | + if (tok1 == TOK_ASM_p2align) |
| 344 | 345 | { |
| 345 | 346 | if (n < 0 || n > 30) |
| 346 | 347 | tcc_error("invalid p2align, must be between 0 and 30"); |
| 347 | 348 | n = 1 << n; |
| 348 | | − tok1 = TOK_ASMDIR_align; |
| 349 | + tok1 = TOK_ASM_align; |
| 349 | 350 | } |
| 350 | | − if (tok1 == TOK_ASMDIR_align) { |
| 351 | + if (tok1 == TOK_ASM_align) { |
| 351 | 352 | if (n < 0 || (n & (n-1)) != 0) |
| 352 | 353 | tcc_error("alignment must be a positive power of two"); |
| 353 | 354 | offset = (ind + n - 1) & -n; |
| @@ -371,7 +372,7 @@ static void asm_parse_directive(TCCState *s1) · 17 unmodified lines |
| 371 | 372 | } |
| 372 | 373 | ind += size; |
| 373 | 374 | break; |
| 374 | | − case TOK_ASMDIR_quad: |
| 375 | + case TOK_ASM_quad: |
| 375 | 376 | next(); |
| 376 | 377 | for(;;) { |
| 377 | 378 | uint64_t vl; |
| @@ -398,15 +399,15 @@ static void asm_parse_directive(TCCState *s1) · 20 unmodified lines |
| 398 | 399 | next(); |
| 399 | 400 | } |
| 400 | 401 | break; |
| 401 | | − case TOK_ASMDIR_byte: |
| 402 | + case TOK_ASM_byte: |
| 402 | 403 | size = 1; |
| 403 | 404 | goto asm_data; |
| 404 | | − case TOK_ASMDIR_word: |
| 405 | | − case TOK_ASMDIR_short: |
| 405 | + case TOK_ASM_word: |
| 406 | + case TOK_SHORT: |
| 406 | 407 | size = 2; |
| 407 | 408 | goto asm_data; |
| 408 | | − case TOK_ASMDIR_long: |
| 409 | | − case TOK_ASMDIR_int: |
| 409 | + case TOK_LONG: |
| 410 | + case TOK_INT: |
| 410 | 411 | size = 4; |
| 411 | 412 | asm_data: |
| 412 | 413 | next(); |
| @@ -432,7 +433,7 @@ static void asm_parse_directive(TCCState *s1) · 19 unmodified lines |
| 432 | 433 | next(); |
| 433 | 434 | } |
| 434 | 435 | break; |
| 435 | | − case TOK_ASMDIR_fill: |
| 436 | + case TOK_ASM_fill: |
| 436 | 437 | { |
| 437 | 438 | int repeat, size, val, i, j; |
| 438 | 439 | uint8_t repeat_buf[8]; |
| @@ -474,7 +475,7 @@ static void asm_parse_directive(TCCState *s1) · 35 unmodified lines |
| 474 | 475 | } |
| 475 | 476 | } |
| 476 | 477 | break; |
| 477 | | − case TOK_ASMDIR_org: |
| 478 | + case TOK_ASM_org: |
| 478 | 479 | { |
| 479 | 480 | unsigned long n; |
| 480 | 481 | next(); |
| @@ -487,10 +488,10 @@ static void asm_parse_directive(TCCState *s1) · 6 unmodified lines |
| 487 | 488 | goto zero_pad; |
| 488 | 489 | } |
| 489 | 490 | break; |
| 490 | | − case TOK_ASMDIR_globl: |
| 491 | | − case TOK_ASMDIR_global: |
| 492 | | − case TOK_ASMDIR_weak: |
| 493 | | − case TOK_ASMDIR_hidden: |
| 491 | + case TOK_ASM_globl: |
| 492 | + case TOK_ASM_global: |
| 493 | + case TOK_ASM_weak: |
| 494 | + case TOK_ASM_hidden: |
| 494 | 495 | tok1 = tok; |
| 495 | 496 | do { |
| 496 | 497 | Sym *sym; |
| @@ -501,18 +502,18 @@ static void asm_parse_directive(TCCState *s1) · 4 unmodified lines |
| 501 | 502 | sym = label_push(&s1->asm_labels, tok, 0); |
| 502 | 503 | sym->type.t = VT_VOID; |
| 503 | 504 | } |
| 504 | | − if (tok1 != TOK_ASMDIR_hidden) |
| 505 | + if (tok1 != TOK_ASM_hidden) |
| 505 | 506 | sym->type.t &= ~VT_STATIC; |
| 506 | | − if (tok1 == TOK_ASMDIR_weak) |
| 507 | + if (tok1 == TOK_ASM_weak) |
| 507 | 508 | sym->type.t |= VT_WEAK; |
| 508 | | − else if (tok1 == TOK_ASMDIR_hidden) |
| 509 | + else if (tok1 == TOK_ASM_hidden) |
| 509 | 510 | sym->type.t |= STV_HIDDEN << VT_VIS_SHIFT; |
| 510 | 511 | next(); |
| 511 | 512 | } while (tok == ','); |
| 512 | 513 | break; |
| 513 | | − case TOK_ASMDIR_string: |
| 514 | | − case TOK_ASMDIR_ascii: |
| 515 | | − case TOK_ASMDIR_asciz: |
| 514 | + case TOK_ASM_string: |
| 515 | + case TOK_ASM_ascii: |
| 516 | + case TOK_ASM_asciz: |
| 516 | 517 | { |
| 517 | 518 | const uint8_t *p; |
| 518 | 519 | int i, size, t; |
| @@ -524,7 +525,7 @@ static void asm_parse_directive(TCCState *s1) · 5 unmodified lines |
| 524 | 525 | expect("string constant"); |
| 525 | 526 | p = tokc.str.data; |
| 526 | 527 | size = tokc.str.size; |
| 527 | | − if (t == TOK_ASMDIR_ascii && size > 0) |
| 528 | + if (t == TOK_ASM_ascii && size > 0) |
| 528 | 529 | size--; |
| 529 | 530 | for(i = 0; i < size; i++) |
| 530 | 531 | g(p[i]); |
| @@ -537,9 +538,9 @@ static void asm_parse_directive(TCCState *s1) · 6 unmodified lines |
| 537 | 538 | } |
| 538 | 539 | } |
| 539 | 540 | break; |
| 540 | | − case TOK_ASMDIR_text: |
| 541 | | − case TOK_ASMDIR_data: |
| 542 | | − case TOK_ASMDIR_bss: |
| 541 | + case TOK_ASM_text: |
| 542 | + case TOK_ASM_data: |
| 543 | + case TOK_ASM_bss: |
| 543 | 544 | { |
| 544 | 545 | char sname[64]; |
| 545 | 546 | tok1 = tok; |
| @@ -556,7 +557,7 @@ static void asm_parse_directive(TCCState *s1) · 10 unmodified lines |
| 556 | 557 | use_section(s1, sname); |
| 557 | 558 | } |
| 558 | 559 | break; |
| 559 | | − case TOK_ASMDIR_file: |
| 560 | + case TOK_ASM_file: |
| 560 | 561 | { |
| 561 | 562 | char filename[512]; |
| 562 | 563 | |
| @@ -574,7 +575,7 @@ static void asm_parse_directive(TCCState *s1) · 11 unmodified lines |
| 574 | 575 | next(); |
| 575 | 576 | } |
| 576 | 577 | break; |
| 577 | | − case TOK_ASMDIR_ident: |
| 578 | + case TOK_ASM_ident: |
| 578 | 579 | { |
| 579 | 580 | char ident[256]; |
| 580 | 581 | |
| @@ -592,7 +593,7 @@ static void asm_parse_directive(TCCState *s1) · 11 unmodified lines |
| 592 | 593 | next(); |
| 593 | 594 | } |
| 594 | 595 | break; |
| 595 | | − case TOK_ASMDIR_size: |
| 596 | + case TOK_ASM_size: |
| 596 | 597 | { |
| 597 | 598 | Sym *sym; |
| 598 | 599 | |
| @@ -613,7 +614,7 @@ static void asm_parse_directive(TCCState *s1) · 14 unmodified lines |
| 613 | 614 | } |
| 614 | 615 | } |
| 615 | 616 | break; |
| 616 | | − case TOK_ASMDIR_type: |
| 617 | + case TOK_ASM_type: |
| 617 | 618 | { |
| 618 | 619 | Sym *sym; |
| 619 | 620 | const char *newtype; |
| @@ -631,7 +632,7 @@ static void asm_parse_directive(TCCState *s1) · 11 unmodified lines |
| 631 | 632 | newtype = tokc.str.data; |
| 632 | 633 | } else { |
| 633 | 634 | if (tok == '@' || tok == '%') |
| 634 | | − next(); |
| 635 | + skip(tok); |
| 635 | 636 | newtype = get_tok_str(tok, NULL); |
| 636 | 637 | } |
| 637 | 638 | |
| @@ -645,7 +646,7 @@ static void asm_parse_directive(TCCState *s1) · 7 unmodified lines |
| 645 | 646 | next(); |
| 646 | 647 | } |
| 647 | 648 | break; |
| 648 | | − case TOK_ASMDIR_section: |
| 649 | + case TOK_SECTION1: |
| 649 | 650 | { |
| 650 | 651 | char sname[256]; |
| 651 | 652 | |
| @@ -665,18 +666,12 @@ static void asm_parse_directive(TCCState *s1) · 13 unmodified lines |
| 665 | 666 | if (tok != TOK_STR) |
| 666 | 667 | expect("string constant"); |
| 667 | 668 | next(); |
| 668 | | − if (tok == ',') { |
| 669 | | − next(); |
| 670 | | − if (tok == '@' || tok == '%') |
| 671 | | − next(); |
| 672 | | − next(); |
| 673 | | − } |
| 674 | 669 | } |
| 675 | 670 | last_text_section = cur_text_section; |
| 676 | 671 | use_section(s1, sname); |
| 677 | 672 | } |
| 678 | 673 | break; |
| 679 | | − case TOK_ASMDIR_previous: |
| 674 | + case TOK_ASM_previous: |
| 680 | 675 | { |
| 681 | 676 | Section *sec; |
| 682 | 677 | next(); |
| @@ -688,13 +683,13 @@ static void asm_parse_directive(TCCState *s1) · 5 unmodified lines |
| 688 | 683 | } |
| 689 | 684 | break; |
| 690 | 685 | #ifdef TCC_TARGET_I386 |
| 691 | | − case TOK_ASMDIR_code16: |
| 686 | + case TOK_ASM_code16: |
| 692 | 687 | { |
| 693 | 688 | next(); |
| 694 | 689 | s1->seg_size = 16; |
| 695 | 690 | } |
| 696 | 691 | break; |
| 697 | | − case TOK_ASMDIR_code32: |
| 692 | + case TOK_ASM_code32: |
| 698 | 693 | { |
| 699 | 694 | next(); |
| 700 | 695 | s1->seg_size = 32; |
| @@ -703,7 +698,7 @@ static void asm_parse_directive(TCCState *s1) · 2 unmodified lines |
| 703 | 698 | #endif |
| 704 | 699 | #ifdef TCC_TARGET_X86_64 |
| 705 | 700 | /* added for compatibility with GAS */ |
| 706 | | − case TOK_ASMDIR_code64: |
| 701 | + case TOK_ASM_code64: |
| 707 | 702 | next(); |
| 708 | 703 | break; |
| 709 | 704 | #endif |
| @@ -768,7 +763,7 @@ static int tcc_assemble_internal(TCCState *s1, int do_preprocess) · 58 unmodified lines |
| 768 | 763 | /* horrible gas comment */ |
| 769 | 764 | while (tok != TOK_LINEFEED) |
| 770 | 765 | next(); |
| 771 | | − } else if (tok >= TOK_ASMDIR_FIRST && tok <= TOK_ASMDIR_LAST) { |
| 766 | + } else if (tok == '.') { |
| 772 | 767 | asm_parse_directive(s1); |
| 773 | 768 | } else if (tok == TOK_PPNUM) { |
| 774 | 769 | const char *p; |