On Mon, 2016-01-04 at 14:50 +0000, Ian Jackson wrote: > We are going to want to cherry pick a change to the bison input, which > will involve rerunning bison. > > So firstly, update the bison and flex output to that from current > Debian wheezy (i386; 1:2.5.dfsg-2.1 and 2.5.35-10.1 respectively). > > There should be no functional change since there is no change to the > source file, but we will inherit bugfixes and behavioural changes from > the new version of bison. So this is more a matter of hope than > knowledge.
This one isn't a cherry pick, but rather a manual rerun of the tools with a cargo-culted commit message from another such occasion, right? > > Signed-off-by: Ian Jackson <ian.jack...@eu.citrix.com> > --- > tools/libxl/libxlu_cfg_y.c | 538 ++++++++++++++++++++++++------------ > -------- > tools/libxl/libxlu_cfg_y.h | 14 +- > 2 files changed, 304 insertions(+), 248 deletions(-) > > diff --git a/tools/libxl/libxlu_cfg_y.c b/tools/libxl/libxlu_cfg_y.c > index 218933e..4437e05 100644 > --- a/tools/libxl/libxlu_cfg_y.c > +++ b/tools/libxl/libxlu_cfg_y.c > @@ -1,10 +1,8 @@ > +/* A Bison parser, made by GNU Bison 2.5. */ > > -/* A Bison parser, made by GNU Bison 2.4.1. */ > - > -/* Skeleton implementation for Bison's Yacc-like parsers in C > +/* Bison implementation for Yacc-like parsers in C > > - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, > 2005, 2006 > - Free Software Foundation, Inc. > + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, > Inc. > > This program is free software: you can redistribute it and/or modify > it under the terms of the GNU General Public License as published by > @@ -46,7 +44,7 @@ > #define YYBISON 1 > > /* Bison version. */ > -#define YYBISON_VERSION "2.4.1" > +#define YYBISON_VERSION "2.5" > > /* Skeleton name. */ > #define YYSKELETON_NAME "yacc.c" > @@ -75,7 +73,7 @@ > > /* Copy the first part of user declarations. */ > > -/* Line 189 of yacc.c */ > +/* Line 268 of yacc.c */ > #line 19 "libxlu_cfg_y.y" > > #define YYLEX_PARAM ctx->scanner > @@ -83,8 +81,8 @@ > #include "libxlu_cfg_l.h" > > > -/* Line 189 of yacc.c */ > -#line 88 "libxlu_cfg_y.c" > +/* Line 268 of yacc.c */ > +#line 86 "libxlu_cfg_y.c" > > /* Enabling traces. */ > #ifndef YYDEBUG > @@ -124,7 +122,7 @@ > typedef union YYSTYPE > { > > -/* Line 214 of yacc.c */ > +/* Line 293 of yacc.c */ > #line 25 "libxlu_cfg_y.y" > > char *string; > @@ -132,8 +130,8 @@ typedef union YYSTYPE > > > > -/* Line 214 of yacc.c */ > -#line 137 "libxlu_cfg_y.c" > +/* Line 293 of yacc.c */ > +#line 135 "libxlu_cfg_y.c" > } YYSTYPE; > # define YYSTYPE_IS_TRIVIAL 1 > # define yystype YYSTYPE /* obsolescent; will be withdrawn */ > @@ -157,8 +155,8 @@ typedef struct YYLTYPE > /* Copy the second part of user declarations. */ > > > -/* Line 264 of yacc.c */ > -#line 162 "libxlu_cfg_y.c" > +/* Line 343 of yacc.c */ > +#line 160 "libxlu_cfg_y.c" > > #ifdef short > # undef short > @@ -208,7 +206,7 @@ typedef short int yytype_int16; > #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) > > #ifndef YY_ > -# if YYENABLE_NLS > +# if defined YYENABLE_NLS && YYENABLE_NLS > # if ENABLE_NLS > # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ > # define YY_(msgid) dgettext ("bison-runtime", msgid) > @@ -261,11 +259,11 @@ YYID (yyi) > # define alloca _alloca > # else > # define YYSTACK_ALLOC alloca > -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ > || defined __C99__FUNC__ \ > +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined > __STDC__ || defined __C99__FUNC__ \ > || defined __cplusplus || defined _MSC_VER) > # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ > -# ifndef _STDLIB_H > -# define _STDLIB_H 1 > +# ifndef EXIT_SUCCESS > +# define EXIT_SUCCESS 0 > # endif > # endif > # endif > @@ -288,24 +286,24 @@ YYID (yyi) > # ifndef YYSTACK_ALLOC_MAXIMUM > # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM > # endif > -# if (defined __cplusplus && ! defined _STDLIB_H \ > +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ > && ! ((defined YYMALLOC || defined malloc) \ > && (defined YYFREE || defined free))) > # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ > -# ifndef _STDLIB_H > -# define _STDLIB_H 1 > +# ifndef EXIT_SUCCESS > +# define EXIT_SUCCESS 0 > # endif > # endif > # ifndef YYMALLOC > # define YYMALLOC malloc > -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || > defined __C99__FUNC__ \ > +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ > || defined __C99__FUNC__ \ > || defined __cplusplus || defined _MSC_VER) > void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ > # endif > # endif > # ifndef YYFREE > # define YYFREE free > -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || > defined __C99__FUNC__ \ > +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || > defined __C99__FUNC__ \ > || defined __cplusplus || defined _MSC_VER) > void free (void *); /* INFRINGES ON USER NAME SPACE */ > # endif > @@ -336,23 +334,7 @@ union yyalloc > ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof > (YYLTYPE)) \ > + 2 * YYSTACK_GAP_MAXIMUM) > > -/* Copy COUNT objects from FROM to TO. The source and destination do > - not overlap. */ > -# ifndef YYCOPY > -# if defined __GNUC__ && 1 < __GNUC__ > -# define YYCOPY(To, From, Count) \ > - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) > -# else > -# define YYCOPY(To, From, Count) \ > - do \ > - { \ > - YYSIZE_T yyi; \ > - for (yyi = 0; yyi < (Count); yyi++) \ > - (To)[yyi] = (From)[yyi]; \ > - } \ > - while (YYID (0)) > -# endif > -# endif > +# define YYCOPY_NEEDED 1 > > /* Relocate STACK from its old location to the new one. The > local variables YYSIZE and YYSTACKSIZE give the old and new number of > @@ -372,6 +354,26 @@ union yyalloc > > #endif > > +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED > +/* Copy COUNT objects from FROM to TO. The source and destination do > + not overlap. */ > +# ifndef YYCOPY > +# if defined __GNUC__ && 1 < __GNUC__ > +# define YYCOPY(To, From, Count) \ > + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) > +# else > +# define YYCOPY(To, From, Count) \ > + do \ > + { \ > + YYSIZE_T yyi; \ > + for (yyi = 0; yyi < (Count); yyi++) \ > + (To)[yyi] = (From)[yyi]; \ > + } \ > + while (YYID (0)) > +# endif > +# endif > +#endif /* !YYCOPY_NEEDED */ > + > /* YYFINAL -- State number of the termination state. */ > #define YYFINAL 3 > /* YYLAST -- Last index in YYTABLE. */ > @@ -492,8 +494,8 @@ static const yytype_uint8 yyr2[] = > 5, 0, 2 > }; > > -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state > - STATE-NUM when YYTABLE doesn't specify something else to do. Zero > +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. > + Performed when YYTABLE doesn't specify something else to do. Zero > means the default is an error. */ > static const yytype_uint8 yydefact[] = > { > @@ -528,8 +530,7 @@ static const yytype_int8 yypgoto[] = > > /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If > positive, shift that token. If negative, reduce the rule which > - number is the opposite. If zero, do what YYDEFACT says. > - If YYTABLE_NINF, syntax error. */ > + number is the opposite. If YYTABLE_NINF, syntax error. */ > #define YYTABLE_NINF -3 > static const yytype_int8 yytable[] = > { > @@ -538,6 +539,12 @@ static const yytype_int8 yytable[] = > 16, 26, 25, 20, 13 > }; > > +#define yypact_value_is_default(yystate) \ > + ((yystate) == (-18)) > + > +#define yytable_value_is_error(yytable_value) \ > + YYID (0) > + > static const yytype_uint8 yycheck[] = > { > 0, 1, 19, 3, 0, 6, 6, 21, 8, 6, > @@ -566,9 +573,18 @@ static const yytype_uint8 yystos[] = > > /* Like YYERROR except do call yyerror. This remains here temporarily > to ease the transition to the new meaning of YYERROR, for GCC. > - Once GCC version 2 has supplanted version 1, this can go. */ > + Once GCC version 2 has supplanted version 1, this can go. However, > + YYFAIL appears to be in use. Nevertheless, it is formally deprecated > + in Bison 2.4.2's NEWS entry, where a plan to phase it out is > + discussed. */ > > #define YYFAIL goto yyerrlab > +#if defined YYFAIL > + /* This is here to suppress warnings from the GCC cpp's > + -Wunused-macros. Normally we don't worry about that warning, but > + some users do, and we want to make it easy for users to remove > + YYFAIL uses, which will produce warnings from Bison 2.5. */ > +#endif > > #define YYRECOVERING() (!!yyerrstatus) > > @@ -578,7 +594,6 @@ do > \ > { \ > yychar = (Token); \ > yylval = (Value); \ > - yytoken = YYTRANSLATE (yychar); \ > YYPOPSTACK (1); \ > goto yybackup; \ > } \ > @@ -625,7 +640,7 @@ while (YYID (0)) > we won't break user code: when these are the locations we know. */ > > #ifndef YY_LOCATION_PRINT > -# if YYLTYPE_IS_TRIVIAL > +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL > # define YY_LOCATION_PRINT(File, Loc) \ > fprintf (File, "%d.%d-%d.%d", \ > (Loc).first_line, (Loc).first_column, \ > @@ -834,7 +849,6 @@ int yydebug; > # define YYMAXDEPTH 10000 > #endif > > - > > #if YYERROR_VERBOSE > > @@ -937,115 +951,142 @@ yytnamerr (char *yyres, const char *yystr) > } > # endif > > -/* Copy into YYRESULT an error message about the unexpected token > - YYCHAR while in state YYSTATE. Return the number of bytes copied, > - including the terminating null byte. If YYRESULT is null, do not > - copy anything; just return the number of bytes that would be > - copied. As a special case, return 0 if an ordinary "syntax error" > - message will do. Return YYSIZE_MAXIMUM if overflow occurs during > - size calculation. */ > -static YYSIZE_T > -yysyntax_error (char *yyresult, int yystate, int yychar) > -{ > - int yyn = yypact[yystate]; > +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message > + about the unexpected token YYTOKEN for the state stack whose top is > + YYSSP. > > - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) > - return 0; > - else > + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is > + not large enough to hold the message. In that case, also set > + *YYMSG_ALLOC to the required number of bytes. Return 2 if the > + required number of bytes is too large to store. */ > +static int > +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, > + yytype_int16 *yyssp, int yytoken) > +{ > + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); > + YYSIZE_T yysize = yysize0; > + YYSIZE_T yysize1; > + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; > + /* Internationalized format string. */ > + const char *yyformat = 0; > + /* Arguments of yyformat. */ > + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; > + /* Number of reported tokens (one for the "unexpected", one per > + "expected"). */ > + int yycount = 0; > + > + /* There are many possibilities here to consider: > + - Assume YYFAIL is not used. It's too flawed to consider. See > + <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024 > .html> > + for details. YYERROR is fine as it does not invoke this > + function. > + - If this state is a consistent state with a default action, then > + the only way this function was invoked is if the default action > + is an error action. In that case, don't check for expected > + tokens because there are none. > + - The only way there can be no lookahead present (in yychar) is if > + this state is a consistent state with a default action. Thus, > + detecting the absence of a lookahead is sufficient to determine > + that there is no unexpected or expected token to report. In that > + case, just report a simple "syntax error". > + - Don't assume there isn't a lookahead just because this state is a > + consistent state with a default action. There might have been a > + previous inconsistent state, consistent state with a non-default > + action, or user semantic action that manipulated yychar. > + - Of course, the expected token list depends on states to have > + correct lookahead information, and it depends on the parser not > + to perform extra reductions after fetching a lookahead from the > + scanner and before detecting a syntax error. Thus, state merging > + (from LALR or IELR) and default reductions corrupt the expected > + token list. However, the list is correct for canonical LR with > + one exception: it will still contain any token that will not be > + accepted due to an error action in a later state. > + */ > + if (yytoken != YYEMPTY) > { > - int yytype = YYTRANSLATE (yychar); > - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); > - YYSIZE_T yysize = yysize0; > - YYSIZE_T yysize1; > - int yysize_overflow = 0; > - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; > - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; > - int yyx; > - > -# if 0 > - /* This is so xgettext sees the translatable formats that are > - constructed on the fly. */ > - YY_("syntax error, unexpected %s"); > - YY_("syntax error, unexpected %s, expecting %s"); > - YY_("syntax error, unexpected %s, expecting %s or %s"); > - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); > - YY_("syntax error, unexpected %s, expecting %s or %s or %s or > %s"); > -# endif > - char *yyfmt; > - char const *yyf; > - static char const yyunexpected[] = "syntax error, unexpected %s"; > - static char const yyexpecting[] = ", expecting %s"; > - static char const yyor[] = " or %s"; > - char yyformat[sizeof yyunexpected > - + sizeof yyexpecting - 1 > - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) > - * (sizeof yyor - 1))]; > - char const *yyprefix = yyexpecting; > - > - /* Start YYX at -YYN if negative to avoid negative indexes in > - YYCHECK. */ > - int yyxbegin = yyn < 0 ? -yyn : 0; > - > - /* Stay within bounds of both yycheck and yytname. */ > - int yychecklim = YYLAST - yyn + 1; > - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; > - int yycount = 1; > - > - yyarg[0] = yytname[yytype]; > - yyfmt = yystpcpy (yyformat, yyunexpected); > - > - for (yyx = yyxbegin; yyx < yyxend; ++yyx) > - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) > - { > - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) > - { > - yycount = 1; > - yysize = yysize0; > - yyformat[sizeof yyunexpected - 1] = '\0'; > - break; > - } > - yyarg[yycount++] = yytname[yyx]; > - yysize1 = yysize + yytnamerr (0, yytname[yyx]); > - yysize_overflow |= (yysize1 < yysize); > - yysize = yysize1; > - yyfmt = yystpcpy (yyfmt, yyprefix); > - yyprefix = yyor; > - } > + int yyn = yypact[*yyssp]; > + yyarg[yycount++] = yytname[yytoken]; > + if (!yypact_value_is_default (yyn)) > + { > + /* Start YYX at -YYN if negative to avoid negative indexes in > + YYCHECK. In other words, skip the first -YYN actions for > + this state because they are default actions. */ > + int yyxbegin = yyn < 0 ? -yyn : 0; > + /* Stay within bounds of both yycheck and yytname. */ > + int yychecklim = YYLAST - yyn + 1; > + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; > + int yyx; > + > + for (yyx = yyxbegin; yyx < yyxend; ++yyx) > + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR > + && !yytable_value_is_error (yytable[yyx + yyn])) > + { > + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) > + { > + yycount = 1; > + yysize = yysize0; > + break; > + } > + yyarg[yycount++] = yytname[yyx]; > + yysize1 = yysize + yytnamerr (0, yytname[yyx]); > + if (! (yysize <= yysize1 > + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) > + return 2; > + yysize = yysize1; > + } > + } > + } > > - yyf = YY_(yyformat); > - yysize1 = yysize + yystrlen (yyf); > - yysize_overflow |= (yysize1 < yysize); > - yysize = yysize1; > + switch (yycount) > + { > +# define YYCASE_(N, S) \ > + case N: \ > + yyformat = S; \ > + break > + YYCASE_(0, YY_("syntax error")); > + YYCASE_(1, YY_("syntax error, unexpected %s")); > + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); > + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or > %s")); > + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or > %s")); > + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or > %s or %s")); > +# undef YYCASE_ > + } > > - if (yysize_overflow) > - return YYSIZE_MAXIMUM; > + yysize1 = yysize + yystrlen (yyformat); > + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) > + return 2; > + yysize = yysize1; > > - if (yyresult) > - { > - /* Avoid sprintf, as that infringes on the user's name space. > - Don't have undefined behavior even if the translation > - produced a string with the wrong number of "%s"s. */ > - char *yyp = yyresult; > - int yyi = 0; > - while ((*yyp = *yyf) != '\0') > - { > - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) > - { > - yyp += yytnamerr (yyp, yyarg[yyi++]); > - yyf += 2; > - } > - else > - { > - yyp++; > - yyf++; > - } > - } > - } > - return yysize; > + if (*yymsg_alloc < yysize) > + { > + *yymsg_alloc = 2 * yysize; > + if (! (yysize <= *yymsg_alloc > + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) > + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; > + return 1; > } > + > + /* Avoid sprintf, as that infringes on the user's name space. > + Don't have undefined behavior even if the translation > + produced a string with the wrong number of "%s"s. */ > + { > + char *yyp = *yymsg; > + int yyi = 0; > + while ((*yyp = *yyformat) != '\0') > + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) > + { > + yyp += yytnamerr (yyp, yyarg[yyi++]); > + yyformat += 2; > + } > + else > + { > + yyp++; > + yyformat++; > + } > + } > + return 0; > } > #endif /* YYERROR_VERBOSE */ > - > > /*-----------------------------------------------. > | Release the memory associated to this symbol. | > @@ -1078,66 +1119,66 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, > ctx) > { > case 3: /* "IDENT" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 40 "libxlu_cfg_y.y" > { free((yyvaluep->string)); }; > > -/* Line 1000 of yacc.c */ > -#line 1087 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1128 "libxlu_cfg_y.c" > break; > case 4: /* "STRING" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 40 "libxlu_cfg_y.y" > { free((yyvaluep->string)); }; > > -/* Line 1000 of yacc.c */ > -#line 1096 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1137 "libxlu_cfg_y.c" > break; > case 5: /* "NUMBER" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 40 "libxlu_cfg_y.y" > { free((yyvaluep->string)); }; > > -/* Line 1000 of yacc.c */ > -#line 1105 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1146 "libxlu_cfg_y.c" > break; > case 18: /* "value" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 43 "libxlu_cfg_y.y" > { xlu__cfg_set_free((yyvaluep->setting)); }; > > -/* Line 1000 of yacc.c */ > -#line 1114 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1155 "libxlu_cfg_y.c" > break; > case 19: /* "atom" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 40 "libxlu_cfg_y.y" > { free((yyvaluep->string)); }; > > -/* Line 1000 of yacc.c */ > -#line 1123 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1164 "libxlu_cfg_y.c" > break; > case 20: /* "valuelist" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 43 "libxlu_cfg_y.y" > { xlu__cfg_set_free((yyvaluep->setting)); }; > > -/* Line 1000 of yacc.c */ > -#line 1132 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1173 "libxlu_cfg_y.c" > break; > case 21: /* "values" */ > > -/* Line 1000 of yacc.c */ > +/* Line 1391 of yacc.c */ > #line 43 "libxlu_cfg_y.y" > { xlu__cfg_set_free((yyvaluep->setting)); }; > > -/* Line 1000 of yacc.c */ > -#line 1141 "libxlu_cfg_y.c" > +/* Line 1391 of yacc.c */ > +#line 1182 "libxlu_cfg_y.c" > break; > > default: > @@ -1145,6 +1186,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, > ctx) > } > } > > + > /* Prevent warnings from -Wmissing-prototypes. */ > #ifdef YYPARSE_PARAM > #if defined __STDC__ || defined __cplusplus > @@ -1161,12 +1203,9 @@ int yyparse (); > #endif /* ! YYPARSE_PARAM */ > > > - > - > - > -/*-------------------------. > -| yyparse or yypush_parse. | > -`-------------------------*/ > +/*----------. > +| yyparse. | > +`----------*/ > > #ifdef YYPARSE_PARAM > #if (defined __STDC__ || defined __C99__FUNC__ \ > @@ -1230,7 +1269,7 @@ YYLTYPE yylloc; > YYLTYPE *yylsp; > > /* The locations where the error started and ended. */ > - YYLTYPE yyerror_range[2]; > + YYLTYPE yyerror_range[3]; > > YYSIZE_T yystacksize; > > @@ -1277,7 +1316,7 @@ YYLTYPE yylloc; > yyvsp = yyvs; > yylsp = yyls; > > -#if YYLTYPE_IS_TRIVIAL > +#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL > /* Initialize the default location before parsing starts. */ > yylloc.first_line = yylloc.last_line = 1; > yylloc.first_column = yylloc.last_column = 1; > @@ -1379,7 +1418,7 @@ yybackup: > > /* First try to decide what to do without reference to lookahead > token. */ > yyn = yypact[yystate]; > - if (yyn == YYPACT_NINF) > + if (yypact_value_is_default (yyn)) > goto yydefault; > > /* Not known => get a lookahead token if don't already have one. */ > @@ -1410,8 +1449,8 @@ yybackup: > yyn = yytable[yyn]; > if (yyn <= 0) > { > - if (yyn == 0 || yyn == YYTABLE_NINF) > - goto yyerrlab; > + if (yytable_value_is_error (yyn)) > + goto yyerrlab; > yyn = -yyn; > goto yyreduce; > } > @@ -1467,80 +1506,91 @@ yyreduce: > { > case 9: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 57 "libxlu_cfg_y.y" > - { xlu__cfg_set_store(ctx,(yyvsp[(1) - (3)].string),(yyvsp[(3) - > (3)].setting),(yylsp[(3) - (3)]).first_line); ;} > + { xlu__cfg_set_store(ctx,(yyvsp[(1) - (3)].string),(yyvsp[(3) - > (3)].setting),(yylsp[(3) - (3)]).first_line); } > break; > > case 12: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 62 "libxlu_cfg_y.y" > - { (yyval.setting)= xlu__cfg_set_mk(ctx,1,(yyvsp[(1) - (1)].string)); > ;} > + { (yyval.setting)= xlu__cfg_set_mk(ctx,1,(yyvsp[(1) - (1)].string)); > } > break; > > case 13: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 63 "libxlu_cfg_y.y" > - { (yyval.setting)= (yyvsp[(3) - (4)].setting); ;} > + { (yyval.setting)= (yyvsp[(3) - (4)].setting); } > break; > > case 14: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 65 "libxlu_cfg_y.y" > - { (yyval.string)= (yyvsp[(1) - (1)].string); ;} > + { (yyval.string)= (yyvsp[(1) - (1)].string); } > break; > > case 15: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 66 "libxlu_cfg_y.y" > - { (yyval.string)= (yyvsp[(1) - (1)].string); ;} > + { (yyval.string)= (yyvsp[(1) - (1)].string); } > break; > > case 16: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 68 "libxlu_cfg_y.y" > - { (yyval.setting)= xlu__cfg_set_mk(ctx,0,0); ;} > + { (yyval.setting)= xlu__cfg_set_mk(ctx,0,0); } > break; > > case 17: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 69 "libxlu_cfg_y.y" > - { (yyval.setting)= (yyvsp[(1) - (1)].setting); ;} > + { (yyval.setting)= (yyvsp[(1) - (1)].setting); } > break; > > case 18: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 70 "libxlu_cfg_y.y" > - { (yyval.setting)= (yyvsp[(1) - (3)].setting); ;} > + { (yyval.setting)= (yyvsp[(1) - (3)].setting); } > break; > > case 19: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 72 "libxlu_cfg_y.y" > - { (yyval.setting)= xlu__cfg_set_mk(ctx,2,(yyvsp[(1) - (2)].string)); > ;} > + { (yyval.setting)= xlu__cfg_set_mk(ctx,2,(yyvsp[(1) - (2)].string)); > } > break; > > case 20: > > -/* Line 1455 of yacc.c */ > +/* Line 1806 of yacc.c */ > #line 73 "libxlu_cfg_y.y" > - { xlu__cfg_set_add(ctx,(yyvsp[(1) - (5)].setting),(yyvsp[(4) - > (5)].string)); (yyval.setting)= (yyvsp[(1) - (5)].setting); ;} > + { xlu__cfg_set_add(ctx,(yyvsp[(1) - (5)].setting),(yyvsp[(4) - > (5)].string)); (yyval.setting)= (yyvsp[(1) - (5)].setting); } > break; > > > > -/* Line 1455 of yacc.c */ > -#line 1542 "libxlu_cfg_y.c" > +/* Line 1806 of yacc.c */ > +#line 1581 "libxlu_cfg_y.c" > default: break; > } > + /* User semantic actions sometimes alter yychar, and that requires > + that yytoken be updated with the new translation. We take the > + approach of translating immediately before every use of yytoken. > + One alternative is translating here after every semantic action, > + but that translation would be missed if the semantic action invokes > + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or > + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an > + incorrect destructor might then be invoked immediately. In the > + case of YYERROR or YYBACKUP, subsequent parser actions might lead > + to an incorrect destructor call or verbose syntax error message > + before the lookahead is translated. */ > YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); > > YYPOPSTACK (yylen); > @@ -1569,6 +1619,10 @@ yyreduce: > | yyerrlab -- here on detecting error | > `------------------------------------*/ > yyerrlab: > + /* Make sure we have latest lookahead translation. See comments at > + user semantic actions for why this is necessary. */ > + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); > + > /* If not already recovering from an error, report this error. */ > if (!yyerrstatus) > { > @@ -1576,41 +1630,40 @@ yyerrlab: > #if ! YYERROR_VERBOSE > yyerror (&yylloc, ctx, YY_("syntax error")); > #else > +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ > + yyssp, yytoken) > { > - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); > - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) > - { > - YYSIZE_T yyalloc = 2 * yysize; > - if (! (yysize <= yyalloc && yyalloc <= > YYSTACK_ALLOC_MAXIMUM)) > - yyalloc = YYSTACK_ALLOC_MAXIMUM; > - if (yymsg != yymsgbuf) > - YYSTACK_FREE (yymsg); > - yymsg = (char *) YYSTACK_ALLOC (yyalloc); > - if (yymsg) > - yymsg_alloc = yyalloc; > - else > - { > - yymsg = yymsgbuf; > - yymsg_alloc = sizeof yymsgbuf; > - } > - } > - > - if (0 < yysize && yysize <= yymsg_alloc) > - { > - (void) yysyntax_error (yymsg, yystate, yychar); > - yyerror (&yylloc, ctx, yymsg); > - } > - else > - { > - yyerror (&yylloc, ctx, YY_("syntax error")); > - if (yysize != 0) > - goto yyexhaustedlab; > - } > + char const *yymsgp = YY_("syntax error"); > + int yysyntax_error_status; > + yysyntax_error_status = YYSYNTAX_ERROR; > + if (yysyntax_error_status == 0) > + yymsgp = yymsg; > + else if (yysyntax_error_status == 1) > + { > + if (yymsg != yymsgbuf) > + YYSTACK_FREE (yymsg); > + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); > + if (!yymsg) > + { > + yymsg = yymsgbuf; > + yymsg_alloc = sizeof yymsgbuf; > + yysyntax_error_status = 2; > + } > + else > + { > + yysyntax_error_status = YYSYNTAX_ERROR; > + yymsgp = yymsg; > + } > + } > + yyerror (&yylloc, ctx, yymsgp); > + if (yysyntax_error_status == 2) > + goto yyexhaustedlab; > } > +# undef YYSYNTAX_ERROR > #endif > } > > - yyerror_range[0] = yylloc; > + yyerror_range[1] = yylloc; > > if (yyerrstatus == 3) > { > @@ -1647,7 +1700,7 @@ yyerrorlab: > if (/*CONSTCOND*/ 0) > goto yyerrorlab; > > - yyerror_range[0] = yylsp[1-yylen]; > + yyerror_range[1] = yylsp[1-yylen]; > /* Do not reclaim the symbols of the rule which action triggered > this YYERROR. */ > YYPOPSTACK (yylen); > @@ -1666,7 +1719,7 @@ yyerrlab1: > for (;;) > { > yyn = yypact[yystate]; > - if (yyn != YYPACT_NINF) > + if (!yypact_value_is_default (yyn)) > { > yyn += YYTERROR; > if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) > @@ -1681,7 +1734,7 @@ yyerrlab1: > if (yyssp == yyss) > YYABORT; > > - yyerror_range[0] = *yylsp; > + yyerror_range[1] = *yylsp; > yydestruct ("Error: popping", > yystos[yystate], yyvsp, yylsp, ctx); > YYPOPSTACK (1); > @@ -1691,10 +1744,10 @@ yyerrlab1: > > *++yyvsp = yylval; > > - yyerror_range[1] = yylloc; > + yyerror_range[2] = yylloc; > /* Using YYLLOC is tempting, but would change the location of > the lookahead. YYLOC is available though. */ > - YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); > + YYLLOC_DEFAULT (yyloc, yyerror_range, 2); > *++yylsp = yyloc; > > /* Shift the error token. */ > @@ -1730,8 +1783,13 @@ yyexhaustedlab: > > yyreturn: > if (yychar != YYEMPTY) > - yydestruct ("Cleanup: discarding lookahead", > - yytoken, &yylval, &yylloc, ctx); > + { > + /* Make sure we have latest lookahead translation. See comments > at > + user semantic actions for why this is necessary. */ > + yytoken = YYTRANSLATE (yychar); > + yydestruct ("Cleanup: discarding lookahead", > + yytoken, &yylval, &yylloc, ctx); > + } > /* Do not reclaim the symbols of the rule which action triggered > this YYABORT or YYACCEPT. */ > YYPOPSTACK (yylen); > diff --git a/tools/libxl/libxlu_cfg_y.h b/tools/libxl/libxlu_cfg_y.h > index e7b3d12..d7dfaf2 100644 > --- a/tools/libxl/libxlu_cfg_y.h > +++ b/tools/libxl/libxlu_cfg_y.h > @@ -1,10 +1,8 @@ > +/* A Bison parser, made by GNU Bison 2.5. */ > > -/* A Bison parser, made by GNU Bison 2.4.1. */ > - > -/* Skeleton interface for Bison's Yacc-like parsers in C > +/* Bison interface for Yacc-like parsers in C > > - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, > 2005, 2006 > - Free Software Foundation, Inc. > + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, > Inc. > > This program is free software: you can redistribute it and/or modify > it under the terms of the GNU General Public License as published by > @@ -52,7 +50,7 @@ > typedef union YYSTYPE > { > > -/* Line 1676 of yacc.c */ > +/* Line 2068 of yacc.c */ > #line 25 "libxlu_cfg_y.y" > > char *string; > @@ -60,8 +58,8 @@ typedef union YYSTYPE > > > > -/* Line 1676 of yacc.c */ > -#line 65 "libxlu_cfg_y.h" > +/* Line 2068 of yacc.c */ > +#line 63 "libxlu_cfg_y.h" > } YYSTYPE; > # define YYSTYPE_IS_TRIVIAL 1 > # define yystype YYSTYPE /* obsolescent; will be withdrawn */ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel