VirtualBox

Changeset 53701 in vbox for trunk


Ignore:
Timestamp:
Jan 2, 2015 12:43:14 PM (10 years ago)
Author:
vboxsync
Message:

VBoxDTrace: Fixes for dtrace -lv - id_or_type() would unput(EOF). (r78)

Location:
trunk/src/VBox/ExtPacks/VBoxDTrace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ExtPacks/VBoxDTrace/VBoxDTrace/Makefile.kmk

    r53699 r53701  
    101101 VBoxDTrace_USES     += yacc
    102102 VBoxDTrace_YACCTOOL  = BISON
    103  VBoxDTrace_YACCFLAGS = -d
     103 VBoxDTrace_YACCFLAGS = -d -y
    104104 VBoxDTrace_SOURCES  += \
    105105        $(VBOXDT_PATH_LIBDTRACE)/common/dt_grammar.y
     
    113113 VBoxDTrace_USES     += lex
    114114 VBoxDTrace_LEXTOOL   = FLEX
    115  VBoxDTrace_LEXFLAGS  = -l
     115 VBoxDTrace_LEXFLAGS  = -l -B #-d -T
    116116 VBoxDTrace_DEFS     += USING_FLEX
    117117 VBoxDTrace_SOURCES  += \
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_cc.c

    r53699 r53701  
    21452145        pcb.pcb_token = context;
    21462146
     2147#ifdef USING_FLEX /* In case flex starts work too early. Moved from dt_pcb_push. */
     2148        yyinit(&pcb);
     2149#endif
    21472150        if (context != DT_CTX_DPROG)
    21482151                yybegin(YYS_EXPR);
     
    21712174         * we optionally display the parse tree if debugging is enabled.
    21722175         */
    2173 fprintf(stderr, "debug: calling yyparse\n"); /* REMOVE ME */
    21742176        if (yyparse() != 0 || yypcb->pcb_root == NULL)
    2175                 xyerror(D_EMPTY, "empty D program translation unit (#1)\n");  /* REMOVE (#1) */
     2177                xyerror(D_EMPTY, "empty D program translation unit\n");
    21762178
    21772179        yybegin(YYS_DONE);
     
    22042206                if ((dnp = yypcb->pcb_root->dn_list) == NULL &&
    22052207                    !(yypcb->pcb_cflags & DTRACE_C_EMPTY))
    2206                         xyerror(D_EMPTY, "empty D program translation unit (#2)\n"); /* REMOVE (#2) */
     2208                        xyerror(D_EMPTY, "empty D program translation unit\n");
    22072209
    22082210                if ((yypcb->pcb_prog = dt_program_create(dtp)) == NULL)
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_lex.l

    r53699 r53701  
    5555                        result = (int)fread(buf, 1, max_size, yypcb->pcb_fileptr); \
    5656                        if (!result && ferror(yypcb->pcb_fileptr)) \
    57                                 YY_FATAL_ERROR("input in flex scanner failed"); \
     57                      longjmp(yypcb->pcb_jmpbuf, EDT_FIO); \
     58                                /*YY_FATAL_ERROR("input in flex scanner failed");*/ \
    5859                } else { \
    5960                        size_t off = yypcb->pcb_strptr - yypcb->pcb_string; \
     
    6566                                memcpy(buf, yypcb->pcb_strptr, result); \
    6667                                yypcb->pcb_strptr += result; \
    67             fprintf(stderr, "yy_input -> %d '%.*s'\n", result, result, buf); /* REMOVE ME */ \
     68            /*fprintf(stderr, "yy_input -> %d '%.*s'\n", result, result, buf);*/ \
    6869         } else { \
    6970            buf[0] = '\0'; \
    70             result = (YYSTATE) == S0; \
    71             fprintf(stderr, "yy_input -> %d\n", result); /* REMOVE ME */ \
     71            result = 0; \
     72            /*fprintf(stderr, "yy_input -> %d\n", result);*/ \
    7273         } \
    7374                } \
     
    519520                                tok = DT_TOK_DIV;
    520521
    521                         unput(c);
     522                        if (c != EOF) unput(c);
    522523                        return (tok);
    523524                }
     
    599600<S0>{RGX_WS}    ; /* discard */
    600601<S0>"\\"\n      ; /* discard */
    601     /* VBOX - START */
    602 <S0>"\0" {
    603             fprintf(stderr, "<S0>\\0\n");
    604             return (DT_TOK_EOF);
    605          }
    606     /* VBOX - END */
    607602<S0>.           yyerror("syntax error near \"%c\"\n", yytext[0]);
    608603
     
    610605<S1>"*/"        BEGIN(yypcb->pcb_cstate);
    611606 /* VBOX - START */
    612 <S1>"\0"        yyerror("end-of-file encountered before matching */\n");
     607<S1><<EOF>>     yyerror("end-of-file encountered before matching */\n");
    613608 /* VBOX - END */
    614609<S1>.|\n        ; /* discard */
     
    671666
    672667<S2>{RGX_WS}    ; /* discard */
    673  /* VBOX - START */
    674 <S2>"\0" {
    675             fprintf(stderr, "<S2>\\0\n");
    676             return (DT_TOK_EOF);
    677          }
    678  /* VBOX - END */
    679668<S2>.           yyerror("syntax error near \"%c\"\n", yytext[0]);
    680669
     
    707696
    708697 /* VBOX - BEGIN */
    709 <S3>"\0"        yyerror("end-of-file encountered before end of control line\n");
     698<S3><<EOF>>     yyerror("end-of-file encountered before end of control line\n");
    710699 /* VBOX - END */
    711700<S3>.           yyerror("syntax error near \"%c\"\n", yytext[0]);
     
    767756#ifndef USING_FLEX
    768757        yysptr = yysbuf;
     758#else
     759   yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
    769760#endif
    770761}
     
    838829                if ((c1 = input()) == c0)
    839830                        ttok = DT_TOK_IDENT;
    840                 unput(c1);
     831                if (c1 != EOF) unput(c1);
    841832                break;
    842833
     
    844835                if ((c1 = input()) != c0)
    845836                        ttok = DT_TOK_IDENT;
    846                 unput(c1);
     837                if (c1 != EOF) unput(c1);
    847838                break;
    848839        case '[':
     
    859850        }
    860851
    861         unput(c0);
     852        if (c0 != EOF) unput(c0);
    862853        return (ttok);
    863854}
  • trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_pcb.c

    r53655 r53701  
    9191        dtp->dt_gen++;
    9292
     93#ifndef USING_FLEX /* In case flex starts work too early. Moved to dt_compile. */
    9394        yyinit(pcb);
     95#endif
    9496}
    9597
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette