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