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

Reply via email to