]> git.ipfire.org Git - people/dweismueller/ipfire-2.x.git/commitdiff
kernel: genksyms fix empty symbol crc.
authorArne Fitzenreiter <arne_f@ipfire.org>
Tue, 27 Oct 2015 15:57:24 +0000 (16:57 +0100)
committerArne Fitzenreiter <arne_f@ipfire.org>
Tue, 27 Oct 2015 15:57:24 +0000 (16:57 +0100)
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
lfs/linux
src/patches/linux-genksyms_fix_typeof_handling.patch [new file with mode: 0644]

index 8d59865f645a073b8f65bde31ccd925ba65e0234..0b482a5053cd8419c556ccf05e9e7224d7a7b562 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
@@ -173,6 +173,9 @@ endif
        # HyperV 2008 patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.x-hyperv-2008-fix.patch
 
+       # fix empty symbol crc's
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-genksyms_fix_typeof_handling.patch
+
 ifeq "$(KCFG)" "-kirkwood"
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-kirkwood_legacy_boot.patch
diff --git a/src/patches/linux-genksyms_fix_typeof_handling.patch b/src/patches/linux-genksyms_fix_typeof_handling.patch
new file mode 100644 (file)
index 0000000..3cf3403
--- /dev/null
@@ -0,0 +1,1360 @@
+From dc53324060f324e8af6867f57bf4891c13c6ef18 Mon Sep 17 00:00:00 2001
+From: Jan Beulich <JBeulich@suse.com>
+Date: Thu, 3 Apr 2014 14:46:37 -0700
+Subject: genksyms: fix typeof() handling
+
+Recent increased use of typeof() throughout the tree resulted in a
+number of symbols (25 in a typical distro config of ours) not getting a
+proper CRC calculated for them anymore, due to the parser in genksyms
+not coping with several of these uses (interestingly in the majority of
+[if not all] cases the problem is due to the use of typeof() in code
+preceding a certain export, not in the declaration/definition of the
+exported function/object itself; I wasn't able to find a way to address
+this more general parser shortcoming).
+
+The use of parameter_declaration is a little more relaxed than would be
+ideal (permitting not just a bare type specification, but also one with
+identifier), but since the same code is being passed through an actual
+compiler, there's no apparent risk of allowing through any broken code.
+
+Otoh using parameter_declaration instead of the ad hoc
+"decl_specifier_seq '*'" / "decl_specifier_seq" pair allows all types to
+be handled rather than just plain ones and pointers to plain ones.
+
+Signed-off-by: Jan Beulich <jbeulich@suse.com>
+Cc: Michal Marek <mmarek@suse.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+---
+ scripts/genksyms/keywords.gperf          |   5 +-
+ scripts/genksyms/keywords.hash.c_shipped | 133 +++----
+ scripts/genksyms/lex.l                   |  51 ++-
+ scripts/genksyms/lex.lex.c_shipped       |  51 ++-
+ scripts/genksyms/parse.tab.c_shipped     | 608 ++++++++++++++++---------------
+ scripts/genksyms/parse.tab.h_shipped     |  29 +-
+ scripts/genksyms/parse.y                 |   5 +-
+ 7 files changed, 498 insertions(+), 384 deletions(-)
+
+diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf
+index 3e77a94..a9096d9 100644
+--- a/scripts/genksyms/keywords.gperf
++++ b/scripts/genksyms/keywords.gperf
+@@ -23,6 +23,8 @@ __inline, INLINE_KEYW
+ __inline__, INLINE_KEYW
+ __signed, SIGNED_KEYW
+ __signed__, SIGNED_KEYW
++__typeof, TYPEOF_KEYW
++__typeof__, TYPEOF_KEYW
+ __volatile, VOLATILE_KEYW
+ __volatile__, VOLATILE_KEYW
+ # According to rth, c99 defines _Bool, __restrict, __restrict__, restrict.  KAO
+@@ -51,9 +53,8 @@ signed, SIGNED_KEYW
+ static, STATIC_KEYW
+ struct, STRUCT_KEYW
+ typedef, TYPEDEF_KEYW
++typeof, TYPEOF_KEYW
+ union, UNION_KEYW
+ unsigned, UNSIGNED_KEYW
+ void, VOID_KEYW
+ volatile, VOLATILE_KEYW
+-typeof, TYPEOF_KEYW
+-__typeof__, TYPEOF_KEYW
+diff --git a/scripts/genksyms/keywords.hash.c_shipped b/scripts/genksyms/keywords.hash.c_shipped
+index 8206260..e9452482 100644
+--- a/scripts/genksyms/keywords.hash.c_shipped
++++ b/scripts/genksyms/keywords.hash.c_shipped
+@@ -34,7 +34,7 @@ struct resword;
+ static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
+ #line 8 "scripts/genksyms/keywords.gperf"
+ struct resword { const char *name; int token; };
+-/* maximum key range = 64, duplicates = 0 */
++/* maximum key range = 98, duplicates = 0 */
+ #ifdef __GNUC__
+ __inline
+@@ -48,32 +48,32 @@ is_reserved_hash (register const char *str, register unsigned int len)
+ {
+   static const unsigned char asso_values[] =
+     {
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67,  0,
+-      67, 67, 67, 67, 67, 67, 15, 67, 67, 67,
+-       0, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67,  0, 67,  0, 67,  5,
+-      25, 20, 15, 30, 67, 15, 67, 67, 10,  0,
+-      10, 40, 20, 67, 10,  5,  0, 10, 15, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+-      67, 67, 67, 67, 67, 67
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101,   0,
++      101, 101, 101, 101, 101, 101,  15, 101, 101, 101,
++        0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101,   0, 101,   0, 101,   5,
++       25,  20,  55,  30, 101,  15, 101, 101,  10,   0,
++       10,  40,  10, 101,  10,   5,   0,  10,  15, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
++      101, 101, 101, 101, 101, 101
+     };
+   return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
+ }
+@@ -89,17 +89,17 @@ is_reserved_word (register const char *str, register unsigned int len)
+ {
+   enum
+     {
+-      TOTAL_KEYWORDS = 45,
++      TOTAL_KEYWORDS = 46,
+       MIN_WORD_LENGTH = 3,
+       MAX_WORD_LENGTH = 24,
+       MIN_HASH_VALUE = 3,
+-      MAX_HASH_VALUE = 66
++      MAX_HASH_VALUE = 100
+     };
+   static const struct resword wordlist[] =
+     {
+       {""}, {""}, {""},
+-#line 33 "scripts/genksyms/keywords.gperf"
++#line 35 "scripts/genksyms/keywords.gperf"
+       {"asm", ASM_KEYW},
+       {""},
+ #line 15 "scripts/genksyms/keywords.gperf"
+@@ -108,7 +108,7 @@ is_reserved_word (register const char *str, register unsigned int len)
+ #line 16 "scripts/genksyms/keywords.gperf"
+       {"__asm__", ASM_KEYW},
+       {""}, {""},
+-#line 59 "scripts/genksyms/keywords.gperf"
++#line 27 "scripts/genksyms/keywords.gperf"
+       {"__typeof__", TYPEOF_KEYW},
+       {""},
+ #line 19 "scripts/genksyms/keywords.gperf"
+@@ -119,31 +119,31 @@ is_reserved_word (register const char *str, register unsigned int len)
+       {"__const__", CONST_KEYW},
+ #line 25 "scripts/genksyms/keywords.gperf"
+       {"__signed__", SIGNED_KEYW},
+-#line 51 "scripts/genksyms/keywords.gperf"
++#line 53 "scripts/genksyms/keywords.gperf"
+       {"static", STATIC_KEYW},
+       {""},
+-#line 46 "scripts/genksyms/keywords.gperf"
++#line 48 "scripts/genksyms/keywords.gperf"
+       {"int", INT_KEYW},
+-#line 39 "scripts/genksyms/keywords.gperf"
++#line 41 "scripts/genksyms/keywords.gperf"
+       {"char", CHAR_KEYW},
+-#line 40 "scripts/genksyms/keywords.gperf"
++#line 42 "scripts/genksyms/keywords.gperf"
+       {"const", CONST_KEYW},
+-#line 52 "scripts/genksyms/keywords.gperf"
++#line 54 "scripts/genksyms/keywords.gperf"
+       {"struct", STRUCT_KEYW},
+-#line 31 "scripts/genksyms/keywords.gperf"
++#line 33 "scripts/genksyms/keywords.gperf"
+       {"__restrict__", RESTRICT_KEYW},
+-#line 32 "scripts/genksyms/keywords.gperf"
++#line 34 "scripts/genksyms/keywords.gperf"
+       {"restrict", RESTRICT_KEYW},
+ #line 12 "scripts/genksyms/keywords.gperf"
+       {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
+ #line 23 "scripts/genksyms/keywords.gperf"
+       {"__inline__", INLINE_KEYW},
+       {""},
+-#line 27 "scripts/genksyms/keywords.gperf"
++#line 29 "scripts/genksyms/keywords.gperf"
+       {"__volatile__", VOLATILE_KEYW},
+ #line 10 "scripts/genksyms/keywords.gperf"
+       {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
+-#line 30 "scripts/genksyms/keywords.gperf"
++#line 32 "scripts/genksyms/keywords.gperf"
+       {"_restrict", RESTRICT_KEYW},
+       {""},
+ #line 17 "scripts/genksyms/keywords.gperf"
+@@ -152,56 +152,65 @@ is_reserved_word (register const char *str, register unsigned int len)
+       {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
+ #line 21 "scripts/genksyms/keywords.gperf"
+       {"__extension__", EXTENSION_KEYW},
+-#line 42 "scripts/genksyms/keywords.gperf"
++#line 44 "scripts/genksyms/keywords.gperf"
+       {"enum", ENUM_KEYW},
+ #line 13 "scripts/genksyms/keywords.gperf"
+       {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
+-#line 43 "scripts/genksyms/keywords.gperf"
++#line 45 "scripts/genksyms/keywords.gperf"
+       {"extern", EXTERN_KEYW},
+       {""},
+ #line 24 "scripts/genksyms/keywords.gperf"
+       {"__signed", SIGNED_KEYW},
+ #line 14 "scripts/genksyms/keywords.gperf"
+       {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
+-#line 54 "scripts/genksyms/keywords.gperf"
++#line 57 "scripts/genksyms/keywords.gperf"
+       {"union", UNION_KEYW},
+-#line 58 "scripts/genksyms/keywords.gperf"
+-      {"typeof", TYPEOF_KEYW},
+-#line 53 "scripts/genksyms/keywords.gperf"
+-      {"typedef", TYPEDEF_KEYW},
++      {""}, {""},
+ #line 22 "scripts/genksyms/keywords.gperf"
+       {"__inline", INLINE_KEYW},
+-#line 38 "scripts/genksyms/keywords.gperf"
++#line 40 "scripts/genksyms/keywords.gperf"
+       {"auto", AUTO_KEYW},
+-#line 26 "scripts/genksyms/keywords.gperf"
++#line 28 "scripts/genksyms/keywords.gperf"
+       {"__volatile", VOLATILE_KEYW},
+       {""}, {""},
+-#line 55 "scripts/genksyms/keywords.gperf"
++#line 58 "scripts/genksyms/keywords.gperf"
+       {"unsigned", UNSIGNED_KEYW},
+       {""},
+-#line 49 "scripts/genksyms/keywords.gperf"
++#line 51 "scripts/genksyms/keywords.gperf"
+       {"short", SHORT_KEYW},
+-#line 45 "scripts/genksyms/keywords.gperf"
++#line 47 "scripts/genksyms/keywords.gperf"
+       {"inline", INLINE_KEYW},
+       {""},
+-#line 57 "scripts/genksyms/keywords.gperf"
++#line 60 "scripts/genksyms/keywords.gperf"
+       {"volatile", VOLATILE_KEYW},
+-#line 47 "scripts/genksyms/keywords.gperf"
++#line 49 "scripts/genksyms/keywords.gperf"
+       {"long", LONG_KEYW},
+-#line 29 "scripts/genksyms/keywords.gperf"
++#line 31 "scripts/genksyms/keywords.gperf"
+       {"_Bool", BOOL_KEYW},
+       {""}, {""},
+-#line 48 "scripts/genksyms/keywords.gperf"
++#line 50 "scripts/genksyms/keywords.gperf"
+       {"register", REGISTER_KEYW},
+-#line 56 "scripts/genksyms/keywords.gperf"
++#line 59 "scripts/genksyms/keywords.gperf"
+       {"void", VOID_KEYW},
+-#line 44 "scripts/genksyms/keywords.gperf"
+-      {"float", FLOAT_KEYW},
+-#line 41 "scripts/genksyms/keywords.gperf"
++      {""},
++#line 43 "scripts/genksyms/keywords.gperf"
+       {"double", DOUBLE_KEYW},
++      {""},
++#line 26 "scripts/genksyms/keywords.gperf"
++      {"__typeof", TYPEOF_KEYW},
++      {""}, {""},
++#line 52 "scripts/genksyms/keywords.gperf"
++      {"signed", SIGNED_KEYW},
+       {""}, {""}, {""}, {""},
+-#line 50 "scripts/genksyms/keywords.gperf"
+-      {"signed", SIGNED_KEYW}
++#line 56 "scripts/genksyms/keywords.gperf"
++      {"typeof", TYPEOF_KEYW},
++#line 55 "scripts/genksyms/keywords.gperf"
++      {"typedef", TYPEDEF_KEYW},
++      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
++      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
++      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
++#line 46 "scripts/genksyms/keywords.gperf"
++      {"float", FLOAT_KEYW}
+     };
+   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+diff --git a/scripts/genksyms/lex.l b/scripts/genksyms/lex.l
+index f770071..e583565 100644
+--- a/scripts/genksyms/lex.l
++++ b/scripts/genksyms/lex.l
+@@ -129,8 +129,9 @@ int
+ yylex(void)
+ {
+   static enum {
+-    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
+-    ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
++    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
++    ST_BRACKET, ST_BRACE, ST_EXPRESSION,
++    ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
+     ST_TABLE_5, ST_TABLE_6
+   } lexstate = ST_NOTSTARTED;
+@@ -198,6 +199,10 @@ repeat:
+                   lexstate = ST_ASM;
+                   count = 0;
+                   goto repeat;
++                case TYPEOF_KEYW:
++                  lexstate = ST_TYPEOF;
++                  count = 0;
++                  goto repeat;
+                 case STRUCT_KEYW:
+                 case UNION_KEYW:
+@@ -284,6 +289,48 @@ repeat:
+       }
+       break;
++    case ST_TYPEOF:
++      switch (token)
++      {
++      case '(':
++        if ( ++count == 1 )
++          lexstate = ST_TYPEOF_1;
++        else
++          APP;
++        goto repeat;
++      case ')':
++        APP;
++        if (--count == 0)
++          {
++            lexstate = ST_NORMAL;
++            token = TYPEOF_PHRASE;
++            break;
++          }
++        goto repeat;
++      default:
++        APP;
++        goto repeat;
++      }
++      break;
++
++    case ST_TYPEOF_1:
++      if (token == IDENT)
++      {
++        if (is_reserved_word(yytext, yyleng)
++            || find_symbol(yytext, SYM_TYPEDEF, 1))
++          {
++            yyless(0);
++            unput('(');
++            lexstate = ST_NORMAL;
++            token = TYPEOF_KEYW;
++            break;
++          }
++        _APP("(", 1);
++      }
++      APP;
++      lexstate = ST_TYPEOF;
++      goto repeat;
++
+     case ST_BRACKET:
+       APP;
+       switch (token)
+diff --git a/scripts/genksyms/lex.lex.c_shipped b/scripts/genksyms/lex.lex.c_shipped
+index 0bf4157..f82740a 100644
+--- a/scripts/genksyms/lex.lex.c_shipped
++++ b/scripts/genksyms/lex.lex.c_shipped
+@@ -1938,8 +1938,9 @@ int
+ yylex(void)
+ {
+   static enum {
+-    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
+-    ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
++    ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
++    ST_BRACKET, ST_BRACE, ST_EXPRESSION,
++    ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
+     ST_TABLE_5, ST_TABLE_6
+   } lexstate = ST_NOTSTARTED;
+@@ -2007,6 +2008,10 @@ repeat:
+                   lexstate = ST_ASM;
+                   count = 0;
+                   goto repeat;
++                case TYPEOF_KEYW:
++                  lexstate = ST_TYPEOF;
++                  count = 0;
++                  goto repeat;
+                 case STRUCT_KEYW:
+                 case UNION_KEYW:
+@@ -2093,6 +2098,48 @@ repeat:
+       }
+       break;
++    case ST_TYPEOF:
++      switch (token)
++      {
++      case '(':
++        if ( ++count == 1 )
++          lexstate = ST_TYPEOF_1;
++        else
++          APP;
++        goto repeat;
++      case ')':
++        APP;
++        if (--count == 0)
++          {
++            lexstate = ST_NORMAL;
++            token = TYPEOF_PHRASE;
++            break;
++          }
++        goto repeat;
++      default:
++        APP;
++        goto repeat;
++      }
++      break;
++
++    case ST_TYPEOF_1:
++      if (token == IDENT)
++      {
++        if (is_reserved_word(yytext, yyleng)
++            || find_symbol(yytext, SYM_TYPEDEF, 1))
++          {
++            yyless(0);
++            unput('(');
++            lexstate = ST_NORMAL;
++            token = TYPEOF_KEYW;
++            break;
++          }
++        _APP("(", 1);
++      }
++      APP;
++      lexstate = ST_TYPEOF;
++      goto repeat;
++
+     case ST_BRACKET:
+       APP;
+       switch (token)
+diff --git a/scripts/genksyms/parse.tab.c_shipped b/scripts/genksyms/parse.tab.c_shipped
+index ece53c7..c9f0f0ce 100644
+--- a/scripts/genksyms/parse.tab.c_shipped
++++ b/scripts/genksyms/parse.tab.c_shipped
+@@ -1,8 +1,8 @@
+-/* A Bison parser, made by GNU Bison 2.5.  */
++/* A Bison parser, made by GNU Bison 2.5.1.  */
+ /* Bison implementation for Yacc-like parsers in C
+    
+-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
++      Copyright (C) 1984, 1989-1990, 2000-2012 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
+@@ -44,7 +44,7 @@
+ #define YYBISON 1
+ /* Bison version.  */
+-#define YYBISON_VERSION "2.5"
++#define YYBISON_VERSION "2.5.1"
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -117,6 +117,14 @@ static void record_compound(struct string_list **keyw,
++# ifndef YY_NULL
++#  if defined __cplusplus && 201103L <= __cplusplus
++#   define YY_NULL nullptr
++#  else
++#   define YY_NULL 0
++#  endif
++# endif
++
+ /* Enabling traces.  */
+ #ifndef YYDEBUG
+ # define YYDEBUG 1
+@@ -171,18 +179,19 @@ static void record_compound(struct string_list **keyw,
+      EXPORT_SYMBOL_KEYW = 284,
+      ASM_PHRASE = 285,
+      ATTRIBUTE_PHRASE = 286,
+-     BRACE_PHRASE = 287,
+-     BRACKET_PHRASE = 288,
+-     EXPRESSION_PHRASE = 289,
+-     CHAR = 290,
+-     DOTS = 291,
+-     IDENT = 292,
+-     INT = 293,
+-     REAL = 294,
+-     STRING = 295,
+-     TYPE = 296,
+-     OTHER = 297,
+-     FILENAME = 298
++     TYPEOF_PHRASE = 287,
++     BRACE_PHRASE = 288,
++     BRACKET_PHRASE = 289,
++     EXPRESSION_PHRASE = 290,
++     CHAR = 291,
++     DOTS = 292,
++     IDENT = 293,
++     INT = 294,
++     REAL = 295,
++     STRING = 296,
++     TYPE = 297,
++     OTHER = 298,
++     FILENAME = 299
+    };
+ #endif
+@@ -304,6 +313,7 @@ YYID (yyi)
+ #    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 */
++      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+ #     ifndef EXIT_SUCCESS
+ #      define EXIT_SUCCESS 0
+ #     endif
+@@ -395,20 +405,20 @@ union yyalloc
+ #endif
+ #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+-/* Copy COUNT objects from FROM to TO.  The source and destination do
++/* Copy COUNT objects from SRC to DST.  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)))
++#   define YYCOPY(Dst, Src, Count) \
++      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+ #  else
+-#   define YYCOPY(To, From, Count)            \
+-      do                                      \
+-      {                                       \
+-        YYSIZE_T yyi;                         \
+-        for (yyi = 0; yyi < (Count); yyi++)   \
+-          (To)[yyi] = (From)[yyi];            \
+-      }                                       \
++#   define YYCOPY(Dst, Src, Count)              \
++      do                                        \
++        {                                       \
++          YYSIZE_T yyi;                         \
++          for (yyi = 0; yyi < (Count); yyi++)   \
++            (Dst)[yyi] = (Src)[yyi];            \
++        }                                       \
+       while (YYID (0))
+ #  endif
+ # endif
+@@ -417,20 +427,20 @@ union yyalloc
+ /* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  4
+ /* YYLAST -- Last index in YYTABLE.  */
+-#define YYLAST   532
++#define YYLAST   514
+ /* YYNTOKENS -- Number of terminals.  */
+-#define YYNTOKENS  53
++#define YYNTOKENS  54
+ /* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  49
+ /* YYNRULES -- Number of rules.  */
+ #define YYNRULES  132
+ /* YYNRULES -- Number of states.  */
+-#define YYNSTATES  188
++#define YYNSTATES  187
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+-#define YYMAXUTOK   298
++#define YYMAXUTOK   299
+ #define YYTRANSLATE(YYX)                                              \
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+@@ -442,15 +452,15 @@ static const yytype_uint8 yytranslate[] =
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-      47,    49,    48,     2,    46,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,    52,    44,
+-       2,    50,     2,     2,     2,     2,     2,     2,     2,     2,
++      48,    49,    50,     2,    47,     2,     2,     2,     2,     2,
++       2,     2,     2,     2,     2,     2,     2,     2,    53,    45,
++       2,    51,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+-       2,     2,     2,    51,     2,    45,     2,     2,     2,     2,
++       2,     2,     2,    52,     2,    46,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -467,7 +477,7 @@ static const yytype_uint8 yytranslate[] =
+        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+-      35,    36,    37,    38,    39,    40,    41,    42,    43
++      35,    36,    37,    38,    39,    40,    41,    42,    43,    44
+ };
+ #if YYDEBUG
+@@ -478,78 +488,77 @@ static const yytype_uint16 yyprhs[] =
+        0,     0,     3,     5,     8,     9,    12,    13,    18,    19,
+       23,    25,    27,    29,    31,    34,    37,    41,    42,    44,
+       46,    50,    55,    56,    58,    60,    63,    65,    67,    69,
+-      71,    73,    75,    77,    79,    81,    87,    92,    95,    98,
+-     101,   105,   109,   113,   116,   119,   122,   124,   126,   128,
+-     130,   132,   134,   136,   138,   140,   142,   144,   147,   148,
+-     150,   152,   155,   157,   159,   161,   163,   166,   168,   170,
+-     175,   180,   183,   187,   191,   194,   196,   198,   200,   205,
+-     210,   213,   217,   221,   224,   226,   230,   231,   233,   235,
+-     239,   242,   245,   247,   248,   250,   252,   257,   262,   265,
+-     269,   273,   277,   278,   280,   283,   287,   291,   292,   294,
+-     296,   299,   303,   306,   307,   309,   311,   315,   318,   321,
+-     323,   326,   327,   330,   334,   339,   341,   345,   347,   351,
+-     354,   355,   357
++      71,    73,    75,    77,    79,    81,    86,    88,    91,    94,
++      97,   101,   105,   109,   112,   115,   118,   120,   122,   124,
++     126,   128,   130,   132,   134,   136,   138,   140,   143,   144,
++     146,   148,   151,   153,   155,   157,   159,   162,   164,   166,
++     171,   176,   179,   183,   187,   190,   192,   194,   196,   201,
++     206,   209,   213,   217,   220,   222,   226,   227,   229,   231,
++     235,   238,   241,   243,   244,   246,   248,   253,   258,   261,
++     265,   269,   273,   274,   276,   279,   283,   287,   288,   290,
++     292,   295,   299,   302,   303,   305,   307,   311,   314,   317,
++     319,   322,   323,   326,   330,   335,   337,   341,   343,   347,
++     350,   351,   353
+ };
+ /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+ static const yytype_int8 yyrhs[] =
+ {
+-      54,     0,    -1,    55,    -1,    54,    55,    -1,    -1,    56,
+-      57,    -1,    -1,    12,    23,    58,    60,    -1,    -1,    23,
+-      59,    60,    -1,    60,    -1,    84,    -1,    99,    -1,   101,
+-      -1,     1,    44,    -1,     1,    45,    -1,    64,    61,    44,
+-      -1,    -1,    62,    -1,    63,    -1,    62,    46,    63,    -1,
+-      74,   100,    95,    85,    -1,    -1,    65,    -1,    66,    -1,
+-      65,    66,    -1,    67,    -1,    68,    -1,     5,    -1,    17,
+-      -1,    21,    -1,    11,    -1,    14,    -1,    69,    -1,    73,
+-      -1,    28,    47,    65,    48,    49,    -1,    28,    47,    65,
+-      49,    -1,    22,    37,    -1,    24,    37,    -1,    10,    37,
+-      -1,    22,    37,    87,    -1,    24,    37,    87,    -1,    10,
+-      37,    96,    -1,    10,    96,    -1,    22,    87,    -1,    24,
+-      87,    -1,     7,    -1,    19,    -1,    15,    -1,    16,    -1,
+-      20,    -1,    25,    -1,    13,    -1,     9,    -1,    26,    -1,
+-       6,    -1,    41,    -1,    48,    71,    -1,    -1,    72,    -1,
+-      73,    -1,    72,    73,    -1,     8,    -1,    27,    -1,    31,
+-      -1,    18,    -1,    70,    74,    -1,    75,    -1,    37,    -1,
+-      75,    47,    78,    49,    -1,    75,    47,     1,    49,    -1,
+-      75,    33,    -1,    47,    74,    49,    -1,    47,     1,    49,
+-      -1,    70,    76,    -1,    77,    -1,    37,    -1,    41,    -1,
+-      77,    47,    78,    49,    -1,    77,    47,     1,    49,    -1,
+-      77,    33,    -1,    47,    76,    49,    -1,    47,     1,    49,
+-      -1,    79,    36,    -1,    79,    -1,    80,    46,    36,    -1,
+-      -1,    80,    -1,    81,    -1,    80,    46,    81,    -1,    65,
+-      82,    -1,    70,    82,    -1,    83,    -1,    -1,    37,    -1,
+-      41,    -1,    83,    47,    78,    49,    -1,    83,    47,     1,
+-      49,    -1,    83,    33,    -1,    47,    82,    49,    -1,    47,
+-       1,    49,    -1,    64,    74,    32,    -1,    -1,    86,    -1,
+-      50,    34,    -1,    51,    88,    45,    -1,    51,     1,    45,
+-      -1,    -1,    89,    -1,    90,    -1,    89,    90,    -1,    64,
+-      91,    44,    -1,     1,    44,    -1,    -1,    92,    -1,    93,
+-      -1,    92,    46,    93,    -1,    76,    95,    -1,    37,    94,
+-      -1,    94,    -1,    52,    34,    -1,    -1,    95,    31,    -1,
+-      51,    97,    45,    -1,    51,    97,    46,    45,    -1,    98,
+-      -1,    97,    46,    98,    -1,    37,    -1,    37,    50,    34,
+-      -1,    30,    44,    -1,    -1,    30,    -1,    29,    47,    37,
+-      49,    44,    -1
++      55,     0,    -1,    56,    -1,    55,    56,    -1,    -1,    57,
++      58,    -1,    -1,    12,    23,    59,    61,    -1,    -1,    23,
++      60,    61,    -1,    61,    -1,    85,    -1,   100,    -1,   102,
++      -1,     1,    45,    -1,     1,    46,    -1,    65,    62,    45,
++      -1,    -1,    63,    -1,    64,    -1,    63,    47,    64,    -1,
++      75,   101,    96,    86,    -1,    -1,    66,    -1,    67,    -1,
++      66,    67,    -1,    68,    -1,    69,    -1,     5,    -1,    17,
++      -1,    21,    -1,    11,    -1,    14,    -1,    70,    -1,    74,
++      -1,    28,    48,    82,    49,    -1,    32,    -1,    22,    38,
++      -1,    24,    38,    -1,    10,    38,    -1,    22,    38,    88,
++      -1,    24,    38,    88,    -1,    10,    38,    97,    -1,    10,
++      97,    -1,    22,    88,    -1,    24,    88,    -1,     7,    -1,
++      19,    -1,    15,    -1,    16,    -1,    20,    -1,    25,    -1,
++      13,    -1,     9,    -1,    26,    -1,     6,    -1,    42,    -1,
++      50,    72,    -1,    -1,    73,    -1,    74,    -1,    73,    74,
++      -1,     8,    -1,    27,    -1,    31,    -1,    18,    -1,    71,
++      75,    -1,    76,    -1,    38,    -1,    76,    48,    79,    49,
++      -1,    76,    48,     1,    49,    -1,    76,    34,    -1,    48,
++      75,    49,    -1,    48,     1,    49,    -1,    71,    77,    -1,
++      78,    -1,    38,    -1,    42,    -1,    78,    48,    79,    49,
++      -1,    78,    48,     1,    49,    -1,    78,    34,    -1,    48,
++      77,    49,    -1,    48,     1,    49,    -1,    80,    37,    -1,
++      80,    -1,    81,    47,    37,    -1,    -1,    81,    -1,    82,
++      -1,    81,    47,    82,    -1,    66,    83,    -1,    71,    83,
++      -1,    84,    -1,    -1,    38,    -1,    42,    -1,    84,    48,
++      79,    49,    -1,    84,    48,     1,    49,    -1,    84,    34,
++      -1,    48,    83,    49,    -1,    48,     1,    49,    -1,    65,
++      75,    33,    -1,    -1,    87,    -1,    51,    35,    -1,    52,
++      89,    46,    -1,    52,     1,    46,    -1,    -1,    90,    -1,
++      91,    -1,    90,    91,    -1,    65,    92,    45,    -1,     1,
++      45,    -1,    -1,    93,    -1,    94,    -1,    93,    47,    94,
++      -1,    77,    96,    -1,    38,    95,    -1,    95,    -1,    53,
++      35,    -1,    -1,    96,    31,    -1,    52,    98,    46,    -1,
++      52,    98,    47,    46,    -1,    99,    -1,    98,    47,    99,
++      -1,    38,    -1,    38,    51,    35,    -1,    30,    45,    -1,
++      -1,    30,    -1,    29,    48,    38,    49,    45,    -1
+ };
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+ static const yytype_uint16 yyrline[] =
+ {
+-       0,   123,   123,   124,   128,   128,   134,   134,   136,   136,
+-     138,   139,   140,   141,   142,   143,   147,   161,   162,   166,
+-     174,   187,   193,   194,   198,   199,   203,   209,   213,   214,
+-     215,   216,   217,   221,   222,   223,   224,   228,   230,   232,
+-     236,   238,   240,   245,   248,   249,   253,   254,   255,   256,
+-     257,   258,   259,   260,   261,   262,   263,   267,   272,   273,
+-     277,   278,   282,   282,   282,   283,   291,   292,   296,   305,
+-     307,   309,   311,   313,   320,   321,   325,   326,   327,   329,
+-     331,   333,   335,   340,   341,   342,   346,   347,   351,   352,
+-     357,   362,   364,   368,   369,   377,   381,   383,   385,   387,
+-     389,   394,   403,   404,   409,   414,   415,   419,   420,   424,
+-     425,   429,   431,   436,   437,   441,   442,   446,   447,   448,
+-     452,   456,   457,   461,   462,   466,   467,   470,   475,   483,
+-     487,   488,   492
++       0,   124,   124,   125,   129,   129,   135,   135,   137,   137,
++     139,   140,   141,   142,   143,   144,   148,   162,   163,   167,
++     175,   188,   194,   195,   199,   200,   204,   210,   214,   215,
++     216,   217,   218,   222,   223,   224,   225,   229,   231,   233,
++     237,   239,   241,   246,   249,   250,   254,   255,   256,   257,
++     258,   259,   260,   261,   262,   263,   264,   268,   273,   274,
++     278,   279,   283,   283,   283,   284,   292,   293,   297,   306,
++     308,   310,   312,   314,   321,   322,   326,   327,   328,   330,
++     332,   334,   336,   341,   342,   343,   347,   348,   352,   353,
++     358,   363,   365,   369,   370,   378,   382,   384,   386,   388,
++     390,   395,   404,   405,   410,   415,   416,   420,   421,   425,
++     426,   430,   432,   437,   438,   442,   443,   447,   448,   449,
++     453,   457,   458,   462,   463,   467,   468,   471,   476,   484,
++     488,   489,   493
+ };
+ #endif
+@@ -565,9 +574,9 @@ static const char *const yytname[] =
+   "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW",
+   "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW",
+   "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE",
+-  "ATTRIBUTE_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
++  "ATTRIBUTE_PHRASE", "TYPEOF_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE",
+   "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING",
+-  "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "'*'", "')'",
++  "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "')'", "'*'",
+   "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1",
+   "declaration1", "$@2", "$@3", "simple_declaration",
+   "init_declarator_list_opt", "init_declarator_list", "init_declarator",
+@@ -584,7 +593,7 @@ static const char *const yytname[] =
+   "member_declarator_list_opt", "member_declarator_list",
+   "member_declarator", "member_bitfield_declarator", "attribute_opt",
+   "enum_body", "enumerator_list", "enumerator", "asm_definition",
+-  "asm_phrase_opt", "export_definition", 0
++  "asm_phrase_opt", "export_definition", YY_NULL
+ };
+ #endif
+@@ -597,28 +606,28 @@ static const yytype_uint16 yytoknum[] =
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+-     295,   296,   297,   298,    59,   125,    44,    40,    42,    41,
+-      61,   123,    58
++     295,   296,   297,   298,   299,    59,   125,    44,    40,    41,
++      42,    61,   123,    58
+ };
+ # endif
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+ static const yytype_uint8 yyr1[] =
+ {
+-       0,    53,    54,    54,    56,    55,    58,    57,    59,    57,
+-      57,    57,    57,    57,    57,    57,    60,    61,    61,    62,
+-      62,    63,    64,    64,    65,    65,    66,    66,    67,    67,
+-      67,    67,    67,    68,    68,    68,    68,    68,    68,    68,
+-      68,    68,    68,    68,    68,    68,    69,    69,    69,    69,
+-      69,    69,    69,    69,    69,    69,    69,    70,    71,    71,
+-      72,    72,    73,    73,    73,    73,    74,    74,    75,    75,
+-      75,    75,    75,    75,    76,    76,    77,    77,    77,    77,
+-      77,    77,    77,    78,    78,    78,    79,    79,    80,    80,
+-      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
+-      83,    84,    85,    85,    86,    87,    87,    88,    88,    89,
+-      89,    90,    90,    91,    91,    92,    92,    93,    93,    93,
+-      94,    95,    95,    96,    96,    97,    97,    98,    98,    99,
+-     100,   100,   101
++       0,    54,    55,    55,    57,    56,    59,    58,    60,    58,
++      58,    58,    58,    58,    58,    58,    61,    62,    62,    63,
++      63,    64,    65,    65,    66,    66,    67,    67,    68,    68,
++      68,    68,    68,    69,    69,    69,    69,    69,    69,    69,
++      69,    69,    69,    69,    69,    69,    70,    70,    70,    70,
++      70,    70,    70,    70,    70,    70,    70,    71,    72,    72,
++      73,    73,    74,    74,    74,    74,    75,    75,    76,    76,
++      76,    76,    76,    76,    77,    77,    78,    78,    78,    78,
++      78,    78,    78,    79,    79,    79,    80,    80,    81,    81,
++      82,    83,    83,    84,    84,    84,    84,    84,    84,    84,
++      84,    85,    86,    86,    87,    88,    88,    89,    89,    90,
++      90,    91,    91,    92,    92,    93,    93,    94,    94,    94,
++      95,    96,    96,    97,    97,    98,    98,    99,    99,   100,
++     101,   101,   102
+ };
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+@@ -627,7 +636,7 @@ static const yytype_uint8 yyr2[] =
+        0,     2,     1,     2,     0,     2,     0,     4,     0,     3,
+        1,     1,     1,     1,     2,     2,     3,     0,     1,     1,
+        3,     4,     0,     1,     1,     2,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     5,     4,     2,     2,     2,
++       1,     1,     1,     1,     1,     4,     1,     2,     2,     2,
+        3,     3,     3,     2,     2,     2,     1,     1,     1,     1,
+        1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
+        1,     2,     1,     1,     1,     1,     2,     1,     1,     4,
+@@ -648,68 +657,68 @@ static const yytype_uint8 yydefact[] =
+        4,     4,     2,     0,     1,     3,     0,    28,    55,    46,
+       62,    53,     0,    31,     0,    52,    32,    48,    49,    29,
+       65,    47,    50,    30,     0,     8,     0,    51,    54,    63,
+-       0,     0,     0,    64,    56,     5,    10,    17,    23,    24,
+-      26,    27,    33,    34,    11,    12,    13,    14,    15,    39,
+-       0,    43,     6,    37,     0,    44,    22,    38,    45,     0,
+-       0,   129,    68,     0,    58,     0,    18,    19,     0,   130,
+-      67,    25,    42,   127,     0,   125,    22,    40,     0,   113,
+-       0,     0,   109,     9,    17,    41,     0,     0,     0,     0,
+-      57,    59,    60,    16,     0,    66,   131,   101,   121,    71,
+-       0,     0,   123,     0,     7,   112,   106,    76,    77,     0,
+-       0,     0,   121,    75,     0,   114,   115,   119,   105,     0,
+-     110,   130,     0,    36,     0,    73,    72,    61,    20,   102,
+-       0,    93,     0,    84,    87,    88,   128,   124,   126,   118,
+-       0,    76,     0,   120,    74,   117,    80,     0,   111,     0,
+-      35,   132,   122,     0,    21,   103,    70,    94,    56,     0,
+-      93,    90,    92,    69,    83,     0,    82,    81,     0,     0,
+-     116,   104,     0,    95,     0,    91,    98,     0,    85,    89,
+-      79,    78,   100,    99,     0,     0,    97,    96
++       0,     0,     0,    64,    36,    56,     5,    10,    17,    23,
++      24,    26,    27,    33,    34,    11,    12,    13,    14,    15,
++      39,     0,    43,     6,    37,     0,    44,    22,    38,    45,
++       0,     0,   129,    68,     0,    58,     0,    18,    19,     0,
++     130,    67,    25,    42,   127,     0,   125,    22,    40,     0,
++     113,     0,     0,   109,     9,    17,    41,    93,     0,     0,
++       0,     0,    57,    59,    60,    16,     0,    66,   131,   101,
++     121,    71,     0,     0,   123,     0,     7,   112,   106,    76,
++      77,     0,     0,     0,   121,    75,     0,   114,   115,   119,
++     105,     0,   110,   130,    94,    56,     0,    93,    90,    92,
++      35,     0,    73,    72,    61,    20,   102,     0,     0,    84,
++      87,    88,   128,   124,   126,   118,     0,    76,     0,   120,
++      74,   117,    80,     0,   111,     0,     0,    95,     0,    91,
++      98,     0,   132,   122,     0,    21,   103,    70,    69,    83,
++       0,    82,    81,     0,     0,   116,   100,    99,     0,     0,
++     104,    85,    89,    79,    78,    97,    96
+ };
+ /* YYDEFGOTO[NTERM-NUM].  */
+ static const yytype_int16 yydefgoto[] =
+ {
+-      -1,     1,     2,     3,    35,    76,    56,    36,    65,    66,
+-      67,    79,    38,    39,    40,    41,    42,    68,    90,    91,
+-      43,   121,    70,   112,   113,   132,   133,   134,   135,   161,
+-     162,    44,   154,   155,    55,    80,    81,    82,   114,   115,
+-     116,   117,   129,    51,    74,    75,    45,    98,    46
++      -1,     1,     2,     3,    36,    77,    57,    37,    66,    67,
++      68,    80,    39,    40,    41,    42,    43,    69,    92,    93,
++      44,   123,    71,   114,   115,   138,   139,   140,   141,   128,
++     129,    45,   165,   166,    56,    81,    82,    83,   116,   117,
++     118,   119,   136,    52,    75,    76,    46,   100,    47
+ };
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+-#define YYPACT_NINF -135
++#define YYPACT_NINF -140
+ static const yytype_int16 yypact[] =
+ {
+-    -135,    20,  -135,   321,  -135,  -135,    30,  -135,  -135,  -135,
+-    -135,  -135,   -28,  -135,     2,  -135,  -135,  -135,  -135,  -135,
+-    -135,  -135,  -135,  -135,    -6,  -135,     9,  -135,  -135,  -135,
+-      -5,    15,   -17,  -135,  -135,  -135,  -135,    18,   491,  -135,
+-    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   -22,
+-      31,  -135,  -135,    19,   106,  -135,   491,    19,  -135,   491,
+-      50,  -135,  -135,    11,    -3,    51,    57,  -135,    18,   -14,
+-      14,  -135,  -135,    48,    46,  -135,   491,  -135,    33,    32,
+-      59,   154,  -135,  -135,    18,  -135,   365,    56,    60,    61,
+-    -135,    -3,  -135,  -135,    18,  -135,  -135,  -135,  -135,  -135,
+-     202,    74,  -135,   -23,  -135,  -135,  -135,    77,  -135,    16,
+-     101,    49,  -135,    34,    92,    93,  -135,  -135,  -135,    94,
+-    -135,   110,    95,  -135,    97,  -135,  -135,  -135,  -135,   -20,
+-      96,   410,    99,   113,   100,  -135,  -135,  -135,  -135,  -135,
+-     103,  -135,   107,  -135,  -135,   111,  -135,   239,  -135,    32,
+-    -135,  -135,  -135,   123,  -135,  -135,  -135,  -135,  -135,     3,
+-      52,  -135,    38,  -135,  -135,   454,  -135,  -135,   117,   128,
+-    -135,  -135,   134,  -135,   135,  -135,  -135,   276,  -135,  -135,
+-    -135,  -135,  -135,  -135,   137,   138,  -135,  -135
++    -140,    29,  -140,   207,  -140,  -140,    40,  -140,  -140,  -140,
++    -140,  -140,   -27,  -140,    44,  -140,  -140,  -140,  -140,  -140,
++    -140,  -140,  -140,  -140,   -22,  -140,   -18,  -140,  -140,  -140,
++      -9,    22,    28,  -140,  -140,  -140,  -140,  -140,    42,   472,
++    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
++      46,    43,  -140,  -140,    47,   107,  -140,   472,    47,  -140,
++     472,    62,  -140,  -140,    16,    -3,    57,    56,  -140,    42,
++      35,   -11,  -140,  -140,    53,    48,  -140,   472,  -140,    51,
++      21,    59,   157,  -140,  -140,    42,  -140,   388,    58,    60,
++      70,    81,  -140,    -3,  -140,  -140,    42,  -140,  -140,  -140,
++    -140,  -140,   253,    71,  -140,   -20,  -140,  -140,  -140,    83,
++    -140,     5,   102,    34,  -140,    12,    95,    94,  -140,  -140,
++    -140,    97,  -140,   113,  -140,  -140,     2,    41,  -140,    27,
++    -140,    99,  -140,  -140,  -140,  -140,   -24,    98,   101,   109,
++     104,  -140,  -140,  -140,  -140,  -140,   105,  -140,   110,  -140,
++    -140,   117,  -140,   298,  -140,    21,   112,  -140,   120,  -140,
++    -140,   343,  -140,  -140,   121,  -140,  -140,  -140,  -140,  -140,
++     434,  -140,  -140,   131,   137,  -140,  -140,  -140,   138,   141,
++    -140,  -140,  -140,  -140,  -140,  -140,  -140
+ };
+ /* YYPGOTO[NTERM-NUM].  */
+ static const yytype_int16 yypgoto[] =
+ {
+-    -135,  -135,   187,  -135,  -135,  -135,  -135,   -50,  -135,  -135,
+-      98,     0,   -59,   -37,  -135,  -135,  -135,   -77,  -135,  -135,
+-     -54,   -30,  -135,   -90,  -135,  -134,  -135,  -135,    24,   -58,
+-    -135,  -135,  -135,  -135,   -18,  -135,  -135,   109,  -135,  -135,
+-      44,    87,    84,   148,  -135,   102,  -135,  -135,  -135
++    -140,  -140,   190,  -140,  -140,  -140,  -140,   -45,  -140,  -140,
++      96,     1,   -60,   -31,  -140,  -140,  -140,   -78,  -140,  -140,
++     -55,    -7,  -140,   -92,  -140,  -139,  -140,  -140,   -59,   -39,
++    -140,  -140,  -140,  -140,   -13,  -140,  -140,   111,  -140,  -140,
++      39,    87,    84,   147,  -140,   106,  -140,  -140,  -140
+ };
+ /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+@@ -718,149 +727,145 @@ static const yytype_int16 yypgoto[] =
+ #define YYTABLE_NINF -109
+ static const yytype_int16 yytable[] =
+ {
+-      86,    71,   111,    37,   172,    10,    83,    69,    58,    49,
+-      92,   152,    88,   169,    73,    20,    96,   140,    97,   142,
+-       4,   144,   137,    50,    29,    52,   104,    61,    33,    50,
+-     153,    53,   111,    89,   111,    77,   -93,   127,    95,    85,
+-     157,   131,    59,   185,   173,    54,    57,    99,    62,    71,
+-     159,    64,   -93,   141,   160,    62,    84,   108,    63,    64,
+-      54,   100,    60,   109,    64,    63,    64,   146,    73,   107,
+-      54,   176,   111,   108,    47,    48,    84,   105,   106,   109,
+-      64,   147,   160,   160,   110,   177,   141,    87,   131,   157,
+-     108,   102,   103,   173,    71,    93,   109,    64,   101,   159,
+-      64,   174,   175,    94,   118,   124,   131,    78,   136,   125,
+-     126,     7,     8,     9,    10,    11,    12,    13,   131,    15,
+-      16,    17,    18,    19,    20,    21,    22,    23,    24,   110,
+-      26,    27,    28,    29,    30,   143,   148,    33,   105,   149,
+-      96,   151,   152,   -22,   150,   156,   165,    34,   163,   164,
+-     -22,  -107,   166,   -22,   -22,   119,   167,   171,   -22,     7,
+-       8,     9,    10,    11,    12,    13,   180,    15,    16,    17,
+-      18,    19,    20,    21,    22,    23,    24,   181,    26,    27,
+-      28,    29,    30,   182,   183,    33,   186,   187,     5,   179,
+-     120,   -22,   128,   170,   139,    34,   145,    72,   -22,  -108,
+-       0,   -22,   -22,   130,     0,   138,   -22,     7,     8,     9,
+-      10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
+-      20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
+-      30,     0,     0,    33,     0,     0,     0,     0,   -86,     0,
+-     168,     0,     0,    34,     7,     8,     9,    10,    11,    12,
+-      13,   -86,    15,    16,    17,    18,    19,    20,    21,    22,
+-      23,    24,     0,    26,    27,    28,    29,    30,     0,     0,
+-      33,     0,     0,     0,     0,   -86,     0,   184,     0,     0,
+-      34,     7,     8,     9,    10,    11,    12,    13,   -86,    15,
+-      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
+-      26,    27,    28,    29,    30,     0,     0,    33,     0,     0,
+-       0,     0,   -86,     0,     0,     0,     0,    34,     0,     0,
+-       0,     0,     6,     0,     0,   -86,     7,     8,     9,    10,
+-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+-      31,    32,    33,     0,     0,     0,     0,     0,   -22,     0,
+-       0,     0,    34,     0,     0,   -22,     0,     0,   -22,   -22,
+-       7,     8,     9,    10,    11,    12,    13,     0,    15,    16,
+-      17,    18,    19,    20,    21,    22,    23,    24,     0,    26,
+-      27,    28,    29,    30,     0,     0,    33,     0,     0,     0,
+-       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
+-       0,     0,     0,   122,   123,     7,     8,     9,    10,    11,
+-      12,    13,     0,    15,    16,    17,    18,    19,    20,    21,
+-      22,    23,    24,     0,    26,    27,    28,    29,    30,     0,
+-       0,    33,     0,     0,     0,     0,     0,   157,     0,     0,
+-       0,   158,     0,     0,     0,     0,     0,   159,    64,     7,
++      87,    88,   113,   156,    38,    10,   146,   163,    72,   127,
++      94,    50,    84,    59,   174,    20,    54,    90,    74,   148,
++      58,   150,   179,   101,    29,    51,   143,   164,    33,     4,
++      55,    70,   106,   113,    55,   113,   -93,   102,   134,    60,
++     124,    78,    87,   147,   157,    86,   152,   110,   127,   127,
++     126,   -93,    65,   111,    63,    65,    72,    91,    85,   109,
++     153,   160,    97,   110,    64,    98,    65,    53,    99,   111,
++      61,    65,   147,    62,   112,   161,   110,   113,    85,   124,
++      63,    74,   111,   157,    65,    48,    49,   158,   159,   126,
++      64,    65,    65,    87,   104,   105,   107,   108,    51,    55,
++      89,    87,    95,    96,   103,   120,   142,   130,    79,   131,
++      87,   182,     7,     8,     9,    10,    11,    12,    13,   132,
++      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
++     133,    26,    27,    28,    29,    30,   112,   149,    33,    34,
++     154,   155,   107,    98,   162,   -22,   169,   167,   163,    35,
++     168,   170,   -22,  -107,   171,   -22,   180,   -22,   121,   172,
++     -22,   176,     7,     8,     9,    10,    11,    12,    13,   177,
++      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
++     183,    26,    27,    28,    29,    30,   184,   185,    33,    34,
++     186,     5,   135,   122,   175,   -22,   145,    73,   151,    35,
++       0,     0,   -22,  -108,     0,   -22,     0,   -22,     6,     0,
++     -22,   144,     7,     8,     9,    10,    11,    12,    13,    14,
++      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
++      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
++       0,     0,     0,     0,     0,   -22,     0,     0,     0,    35,
++       0,     0,   -22,     0,   137,   -22,     0,   -22,     7,     8,
++       9,    10,    11,    12,    13,     0,    15,    16,    17,    18,
++      19,    20,    21,    22,    23,    24,     0,    26,    27,    28,
++      29,    30,     0,     0,    33,    34,     0,     0,     0,     0,
++     -86,     0,     0,     0,     0,    35,     0,     0,     0,   173,
++       0,     0,   -86,     7,     8,     9,    10,    11,    12,    13,
++       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
++      24,     0,    26,    27,    28,    29,    30,     0,     0,    33,
++      34,     0,     0,     0,     0,   -86,     0,     0,     0,     0,
++      35,     0,     0,     0,   178,     0,     0,   -86,     7,     8,
++       9,    10,    11,    12,    13,     0,    15,    16,    17,    18,
++      19,    20,    21,    22,    23,    24,     0,    26,    27,    28,
++      29,    30,     0,     0,    33,    34,     0,     0,     0,     0,
++     -86,     0,     0,     0,     0,    35,     0,     0,     0,     0,
++       0,     0,   -86,     7,     8,     9,    10,    11,    12,    13,
++       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
++      24,     0,    26,    27,    28,    29,    30,     0,     0,    33,
++      34,     0,     0,     0,     0,     0,   124,     0,     0,     0,
++     125,     0,     0,     0,     0,     0,   126,     0,    65,     7,
+        8,     9,    10,    11,    12,    13,     0,    15,    16,    17,
+       18,    19,    20,    21,    22,    23,    24,     0,    26,    27,
+-      28,    29,    30,     0,     0,    33,     0,     0,     0,     0,
+-     178,     0,     0,     0,     0,    34,     7,     8,     9,    10,
+-      11,    12,    13,     0,    15,    16,    17,    18,    19,    20,
+-      21,    22,    23,    24,     0,    26,    27,    28,    29,    30,
+-       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+-       0,     0,    34
++      28,    29,    30,     0,     0,    33,    34,     0,     0,     0,
++       0,   181,     0,     0,     0,     0,    35,     7,     8,     9,
++      10,    11,    12,    13,     0,    15,    16,    17,    18,    19,
++      20,    21,    22,    23,    24,     0,    26,    27,    28,    29,
++      30,     0,     0,    33,    34,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,    35
+ };
+ #define yypact_value_is_default(yystate) \
+-  ((yystate) == (-135))
++  ((yystate) == (-140))
+ #define yytable_value_is_error(yytable_value) \
+   YYID (0)
+ static const yytype_int16 yycheck[] =
+ {
+-      59,    38,    79,     3,     1,     8,    56,    37,    26,    37,
+-      64,    31,     1,   147,    37,    18,    30,     1,    32,   109,
+-       0,   111,    45,    51,    27,    23,    76,    44,    31,    51,
+-      50,    37,   109,    63,   111,    53,    33,    91,    68,    57,
+-      37,   100,    47,   177,    41,    51,    37,    33,    37,    86,
+-      47,    48,    49,    37,   131,    37,    56,    41,    47,    48,
+-      51,    47,    47,    47,    48,    47,    48,    33,    37,    37,
+-      51,    33,   149,    41,    44,    45,    76,    44,    45,    47,
+-      48,    47,   159,   160,    52,    47,    37,    37,   147,    37,
+-      41,    45,    46,    41,   131,    44,    47,    48,    50,    47,
+-      48,   159,   160,    46,    45,    49,   165,     1,    34,    49,
+-      49,     5,     6,     7,     8,     9,    10,    11,   177,    13,
+-      14,    15,    16,    17,    18,    19,    20,    21,    22,    52,
+-      24,    25,    26,    27,    28,    34,    44,    31,    44,    46,
+-      30,    44,    31,    37,    49,    49,    46,    41,    49,    36,
+-      44,    45,    49,    47,    48,     1,    49,    34,    52,     5,
+-       6,     7,     8,     9,    10,    11,    49,    13,    14,    15,
+-      16,    17,    18,    19,    20,    21,    22,    49,    24,    25,
+-      26,    27,    28,    49,    49,    31,    49,    49,     1,   165,
+-      81,    37,    94,   149,   107,    41,   112,    49,    44,    45,
+-      -1,    47,    48,     1,    -1,   103,    52,     5,     6,     7,
+-       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+-      18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
+-      28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,
+-       1,    -1,    -1,    41,     5,     6,     7,     8,     9,    10,
+-      11,    49,    13,    14,    15,    16,    17,    18,    19,    20,
+-      21,    22,    -1,    24,    25,    26,    27,    28,    -1,    -1,
+-      31,    -1,    -1,    -1,    -1,    36,    -1,     1,    -1,    -1,
+-      41,     5,     6,     7,     8,     9,    10,    11,    49,    13,
+-      14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
+-      24,    25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,
+-      -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
+-      -1,    -1,     1,    -1,    -1,    49,     5,     6,     7,     8,
+-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+-      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
+-      -1,    -1,    41,    -1,    -1,    44,    -1,    -1,    47,    48,
+-       5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
+-      15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
+-      25,    26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,
+-      -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
+-      -1,    -1,    -1,    48,    49,     5,     6,     7,     8,     9,
+-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    19,
+-      20,    21,    22,    -1,    24,    25,    26,    27,    28,    -1,
+-      -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+-      -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    48,     5,
++      60,    60,    80,     1,     3,     8,     1,    31,    39,    87,
++      65,    38,    57,    26,   153,    18,    38,     1,    38,   111,
++      38,   113,   161,    34,    27,    52,    46,    51,    31,     0,
++      52,    38,    77,   111,    52,   113,    34,    48,    93,    48,
++      38,    54,   102,    38,    42,    58,    34,    42,   126,   127,
++      48,    49,    50,    48,    38,    50,    87,    64,    57,    38,
++      48,    34,    69,    42,    48,    30,    50,    23,    33,    48,
++      48,    50,    38,    45,    53,    48,    42,   155,    77,    38,
++      38,    38,    48,    42,    50,    45,    46,   126,   127,    48,
++      48,    50,    50,   153,    46,    47,    45,    46,    52,    52,
++      38,   161,    45,    47,    51,    46,    35,    49,     1,    49,
++     170,   170,     5,     6,     7,     8,     9,    10,    11,    49,
++      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
++      49,    24,    25,    26,    27,    28,    53,    35,    31,    32,
++      45,    47,    45,    30,    45,    38,    37,    49,    31,    42,
++      49,    47,    45,    46,    49,    48,    35,    50,     1,    49,
++      53,    49,     5,     6,     7,     8,     9,    10,    11,    49,
++      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
++      49,    24,    25,    26,    27,    28,    49,    49,    31,    32,
++      49,     1,    96,    82,   155,    38,   109,    50,   114,    42,
++      -1,    -1,    45,    46,    -1,    48,    -1,    50,     1,    -1,
++      53,   105,     5,     6,     7,     8,     9,    10,    11,    12,
++      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
++      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
++      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,
++      -1,    -1,    45,    -1,     1,    48,    -1,    50,     5,     6,
++       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
++      17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
++      27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
++      37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,     1,
++      -1,    -1,    49,     5,     6,     7,     8,     9,    10,    11,
++      -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
++      22,    -1,    24,    25,    26,    27,    28,    -1,    -1,    31,
++      32,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
++      42,    -1,    -1,    -1,     1,    -1,    -1,    49,     5,     6,
++       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
++      17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
++      27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,
++      37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
++      -1,    -1,    49,     5,     6,     7,     8,     9,    10,    11,
++      -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
++      22,    -1,    24,    25,    26,    27,    28,    -1,    -1,    31,
++      32,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
++      42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,     5,
+        6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+       16,    17,    18,    19,    20,    21,    22,    -1,    24,    25,
+-      26,    27,    28,    -1,    -1,    31,    -1,    -1,    -1,    -1,
+-      36,    -1,    -1,    -1,    -1,    41,     5,     6,     7,     8,
+-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+-      19,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
+-      -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+-      -1,    -1,    41
++      26,    27,    28,    -1,    -1,    31,    32,    -1,    -1,    -1,
++      -1,    37,    -1,    -1,    -1,    -1,    42,     5,     6,     7,
++       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
++      18,    19,    20,    21,    22,    -1,    24,    25,    26,    27,
++      28,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    42
+ };
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+ static const yytype_uint8 yystos[] =
+ {
+-       0,    54,    55,    56,     0,    55,     1,     5,     6,     7,
++       0,    55,    56,    57,     0,    56,     1,     5,     6,     7,
+        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+-      28,    29,    30,    31,    41,    57,    60,    64,    65,    66,
+-      67,    68,    69,    73,    84,    99,   101,    44,    45,    37,
+-      51,    96,    23,    37,    51,    87,    59,    37,    87,    47,
+-      47,    44,    37,    47,    48,    61,    62,    63,    70,    74,
+-      75,    66,    96,    37,    97,    98,    58,    87,     1,    64,
+-      88,    89,    90,    60,    64,    87,    65,    37,     1,    74,
+-      71,    72,    73,    44,    46,    74,    30,    32,   100,    33,
+-      47,    50,    45,    46,    60,    44,    45,    37,    41,    47,
+-      52,    70,    76,    77,    91,    92,    93,    94,    45,     1,
+-      90,    74,    48,    49,    49,    49,    49,    73,    63,    95,
+-       1,    65,    78,    79,    80,    81,    34,    45,    98,    94,
+-       1,    37,    76,    34,    76,    95,    33,    47,    44,    46,
+-      49,    44,    31,    50,    85,    86,    49,    37,    41,    47,
+-      70,    82,    83,    49,    36,    46,    49,    49,     1,    78,
+-      93,    34,     1,    41,    82,    82,    33,    47,    36,    81,
+-      49,    49,    49,    49,     1,    78,    49,    49
++      28,    29,    30,    31,    32,    42,    58,    61,    65,    66,
++      67,    68,    69,    70,    74,    85,   100,   102,    45,    46,
++      38,    52,    97,    23,    38,    52,    88,    60,    38,    88,
++      48,    48,    45,    38,    48,    50,    62,    63,    64,    71,
++      75,    76,    67,    97,    38,    98,    99,    59,    88,     1,
++      65,    89,    90,    91,    61,    65,    88,    66,    82,    38,
++       1,    75,    72,    73,    74,    45,    47,    75,    30,    33,
++     101,    34,    48,    51,    46,    47,    61,    45,    46,    38,
++      42,    48,    53,    71,    77,    78,    92,    93,    94,    95,
++      46,     1,    91,    75,    38,    42,    48,    71,    83,    84,
++      49,    49,    49,    49,    74,    64,    96,     1,    79,    80,
++      81,    82,    35,    46,    99,    95,     1,    38,    77,    35,
++      77,    96,    34,    48,    45,    47,     1,    42,    83,    83,
++      34,    48,    45,    31,    51,    86,    87,    49,    49,    37,
++      47,    49,    49,     1,    79,    94,    49,    49,     1,    79,
++      35,    37,    82,    49,    49,    49,    49
+ };
+ #define yyerrok               (yyerrstatus = 0)
+@@ -890,17 +895,18 @@ static const yytype_uint8 yystos[] =
+ #define YYRECOVERING()  (!!yyerrstatus)
+-#define YYBACKUP(Token, Value)                                        \
+-do                                                            \
+-  if (yychar == YYEMPTY && yylen == 1)                                \
+-    {                                                         \
+-      yychar = (Token);                                               \
+-      yylval = (Value);                                               \
+-      YYPOPSTACK (1);                                         \
+-      goto yybackup;                                          \
+-    }                                                         \
+-  else                                                                \
+-    {                                                         \
++#define YYBACKUP(Token, Value)                                  \
++do                                                              \
++  if (yychar == YYEMPTY)                                        \
++    {                                                           \
++      yychar = (Token);                                         \
++      yylval = (Value);                                         \
++      YYPOPSTACK (yylen);                                       \
++      yystate = *yyssp;                                         \
++      goto yybackup;                                            \
++    }                                                           \
++  else                                                          \
++    {                                                           \
+       yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;                                                        \
+     }                                                         \
+@@ -995,6 +1001,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+     YYSTYPE const * const yyvaluep;
+ #endif
+ {
++  FILE *yyo = yyoutput;
++  YYUSE (yyo);
+   if (!yyvaluep)
+     return;
+ # ifdef YYPRINT
+@@ -1246,12 +1254,12 @@ static int
+ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                 yytype_int16 *yyssp, int yytoken)
+ {
+-  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
++  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+   YYSIZE_T yysize = yysize0;
+   YYSIZE_T yysize1;
+   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+   /* Internationalized format string. */
+-  const char *yyformat = 0;
++  const char *yyformat = YY_NULL;
+   /* Arguments of yyformat. */
+   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+   /* Number of reported tokens (one for the "unexpected", one per
+@@ -1311,7 +1319,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                     break;
+                   }
+                 yyarg[yycount++] = yytname[yyx];
+-                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                 if (! (yysize <= yysize1
+                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                   return 2;
+@@ -1463,7 +1471,7 @@ yyparse ()
+        `yyss': related to states.
+        `yyvs': related to semantic values.
+-       Refer to the stacks thru separate pointers, to allow yyoverflow
++       Refer to the stacks through separate pointers, to allow yyoverflow
+        to reallocate them elsewhere.  */
+     /* The state stack.  */
+@@ -2346,7 +2354,7 @@ yyabortlab:
+   yyresult = 1;
+   goto yyreturn;
+-#if !defined(yyoverflow) || YYERROR_VERBOSE
++#if !defined yyoverflow || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here.  |
+ `-------------------------------------------------*/
+diff --git a/scripts/genksyms/parse.tab.h_shipped b/scripts/genksyms/parse.tab.h_shipped
+index 93240a3..a4737de 100644
+--- a/scripts/genksyms/parse.tab.h_shipped
++++ b/scripts/genksyms/parse.tab.h_shipped
+@@ -1,8 +1,8 @@
+-/* A Bison parser, made by GNU Bison 2.5.  */
++/* A Bison parser, made by GNU Bison 2.5.1.  */
+ /* Bison interface for Yacc-like parsers in C
+    
+-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
++      Copyright (C) 1984, 1989-1990, 2000-2012 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
+@@ -66,18 +66,19 @@
+      EXPORT_SYMBOL_KEYW = 284,
+      ASM_PHRASE = 285,
+      ATTRIBUTE_PHRASE = 286,
+-     BRACE_PHRASE = 287,
+-     BRACKET_PHRASE = 288,
+-     EXPRESSION_PHRASE = 289,
+-     CHAR = 290,
+-     DOTS = 291,
+-     IDENT = 292,
+-     INT = 293,
+-     REAL = 294,
+-     STRING = 295,
+-     TYPE = 296,
+-     OTHER = 297,
+-     FILENAME = 298
++     TYPEOF_PHRASE = 287,
++     BRACE_PHRASE = 288,
++     BRACKET_PHRASE = 289,
++     EXPRESSION_PHRASE = 290,
++     CHAR = 291,
++     DOTS = 292,
++     IDENT = 293,
++     INT = 294,
++     REAL = 295,
++     STRING = 296,
++     TYPE = 297,
++     OTHER = 298,
++     FILENAME = 299
+    };
+ #endif
+diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y
+index 23c3999..b9f4cf2 100644
+--- a/scripts/genksyms/parse.y
++++ b/scripts/genksyms/parse.y
+@@ -103,6 +103,7 @@ static void record_compound(struct string_list **keyw,
+ %token ASM_PHRASE
+ %token ATTRIBUTE_PHRASE
++%token TYPEOF_PHRASE
+ %token BRACE_PHRASE
+ %token BRACKET_PHRASE
+ %token EXPRESSION_PHRASE
+@@ -220,8 +221,8 @@ storage_class_specifier:
+ type_specifier:
+       simple_type_specifier
+       | cvar_qualifier
+-      | TYPEOF_KEYW '(' decl_specifier_seq '*' ')'
+-      | TYPEOF_KEYW '(' decl_specifier_seq ')'
++      | TYPEOF_KEYW '(' parameter_declaration ')'
++      | TYPEOF_PHRASE
+       /* References to s/u/e's defined elsewhere.  Rearrange things
+          so that it is easier to expand the definition fully later.  */
+-- 
+cgit v0.11.2
+