History

Merge branch 'gperf-removal'

Remove our use of 'gperf' for generating perfect hashes from some of our build tools. This removal was prompted by Masahiro Yamada sending out a patch that removes all our pre-generated files, and when I tested it, I noticed that the gperf version I have (3.1) apparently generates code that no longer works with out code-base because the function interfaces generated by gperf have changed. We really don't care that much, and the gperf people changed their interfaces in ways that makes it annoying to work with them. Tools that make it hard to use them should not be used, and the kernel is not at all interested in some autoconf mess. So remove the gperf dependency entirely. It turns out that if you ignore the pre-generated files, the use of gperf apparently saved us a whopping fifteen lines of code. It obviously wasn't worth it, considering that the pre-generated files are about 500 lines. I sent this out as a patch about three weeks ago, and got absolutely zero responses. So let's see if anybody notices now that I merge it. Because there might be serious bugs here, but it WorksForMe(tm). * gperf-removal: Remove gperf usage from toolchain

Linus Torvalds committed 9 years ago

Commit 5969d1b2 parents 572c01b bb3290d15 files · +151 −663Browse files

Unified · Split

15 files
  1. Documentation/dontdiff +0 −1
  2. scripts/genksyms/Makefile +2 −2
  3. scripts/genksyms/keywords.c +74 −0
  4. scripts/genksyms/keywords.gperf +0 −61
  5. scripts/genksyms/keywords.hash.c_shipped +0 −230
  6. scripts/genksyms/lex.l +4 −4
  7. scripts/genksyms/lex.lex.c_shipped +4 −4
  8. scripts/kconfig/.gitignore +0 −1
  9. scripts/kconfig/Makefile +2 −2
  10. scripts/kconfig/kconf_id.c +54 −0
  11. scripts/kconfig/lkc.h +1 −1
  12. scripts/kconfig/zconf.gperf +0 −50
  13. scripts/kconfig/zconf.hash.c_shipped +0 −297
  14. scripts/kconfig/zconf.tab.c_shipped +5 −5
  15. scripts/kconfig/zconf.y +5 −5
Documentation/dontdiff+0−1
@@ -259,5 +259,4 @@ wakeup.bin · 258 unmodified lines
259259 wakeup.elf
260260 wakeup.lds
261261 zImage*
262−zconf.hash.c
263262 zoffset.h
scripts/genksyms/Makefile+2−2
@@ -9,6 +9,6 @@ HOSTCFLAGS_parse.tab.o := -I$(src) · 8 unmodified lines
99 HOSTCFLAGS_lex.lex.o := -I$(src)
1010
1111 # dependencies on generated files need to be listed explicitly
12−$(obj)/lex.lex.o: $(obj)/keywords.hash.c $(obj)/parse.tab.h
12+$(obj)/lex.lex.o: $(obj)/parse.tab.h
1313
14−clean-files := keywords.hash.c lex.lex.c parse.tab.c parse.tab.h
14+clean-files := lex.lex.c parse.tab.c parse.tab.h
scripts/genksyms/keywords.c+74−0
@@ -0,0 +1,74 @@
1+static struct resword {
2+ const char *name;
3+ int token;
4+} keywords[] = {
5+ { "EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW },
6+ { "EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
7+ { "EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW },
8+ { "EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW },
9+ { "EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
10+ { "__asm", ASM_KEYW },
11+ { "__asm__", ASM_KEYW },
12+ { "__attribute", ATTRIBUTE_KEYW },
13+ { "__attribute__", ATTRIBUTE_KEYW },
14+ { "__const", CONST_KEYW },
15+ { "__const__", CONST_KEYW },
16+ { "__extension__", EXTENSION_KEYW },
17+ { "__inline", INLINE_KEYW },
18+ { "__inline__", INLINE_KEYW },
19+ { "__signed", SIGNED_KEYW },
20+ { "__signed__", SIGNED_KEYW },
21+ { "__typeof", TYPEOF_KEYW },
22+ { "__typeof__", TYPEOF_KEYW },
23+ { "__volatile", VOLATILE_KEYW },
24+ { "__volatile__", VOLATILE_KEYW },
25+ { "__builtin_va_list", VA_LIST_KEYW },
26+
27+ // According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict". KAO
28+ { "_Bool", BOOL_KEYW },
29+ { "_restrict", RESTRICT_KEYW },
30+ { "__restrict__", RESTRICT_KEYW },
31+ { "restrict", RESTRICT_KEYW },
32+ { "asm", ASM_KEYW },
33+
34+ // attribute commented out in modutils 2.4.2. People are using 'attribute' as a
35+ // field name which breaks the genksyms parser. It is not a gcc keyword anyway.
36+ // KAO. },
37+ // { "attribute", ATTRIBUTE_KEYW },
38+
39+ { "auto", AUTO_KEYW },
40+ { "char", CHAR_KEYW },
41+ { "const", CONST_KEYW },
42+ { "double", DOUBLE_KEYW },
43+ { "enum", ENUM_KEYW },
44+ { "extern", EXTERN_KEYW },
45+ { "float", FLOAT_KEYW },
46+ { "inline", INLINE_KEYW },
47+ { "int", INT_KEYW },
48+ { "long", LONG_KEYW },
49+ { "register", REGISTER_KEYW },
50+ { "short", SHORT_KEYW },
51+ { "signed", SIGNED_KEYW },
52+ { "static", STATIC_KEYW },
53+ { "struct", STRUCT_KEYW },
54+ { "typedef", TYPEDEF_KEYW },
55+ { "typeof", TYPEOF_KEYW },
56+ { "union", UNION_KEYW },
57+ { "unsigned", UNSIGNED_KEYW },
58+ { "void", VOID_KEYW },
59+ { "volatile", VOLATILE_KEYW },
60+};
61+
62+#define NR_KEYWORDS (sizeof(keywords)/sizeof(struct resword))
63+
64+static int is_reserved_word(register const char *str, register unsigned int len)
65+{
66+ int i;
67+ for (i = 0; i < NR_KEYWORDS; i++) {
68+ struct resword *r = keywords + i;
69+ int l = strlen(r->name);
70+ if (len == l && !memcmp(str, r->name, len))
71+ return r->token;
72+ }
73+ return -1;
74+}
scripts/genksyms/keywords.gperf+0−61
@@ -1,61 +0,0 @@
1−%language=ANSI-C
2−%define hash-function-name is_reserved_hash
3−%define lookup-function-name is_reserved_word
4−%{
5−struct resword;
6−static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
7−%}
8−struct resword { const char *name; int token; }
9−%%
10−EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW
11−EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
12−EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW
13−EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW
14−EXPORT_UNUSED_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
15−__asm, ASM_KEYW
16−__asm__, ASM_KEYW
17−__attribute, ATTRIBUTE_KEYW
18−__attribute__, ATTRIBUTE_KEYW
19−__const, CONST_KEYW
20−__const__, CONST_KEYW
21−__extension__, EXTENSION_KEYW
22−__inline, INLINE_KEYW
23−__inline__, INLINE_KEYW
24−__signed, SIGNED_KEYW
25−__signed__, SIGNED_KEYW
26−__typeof, TYPEOF_KEYW
27−__typeof__, TYPEOF_KEYW
28−__volatile, VOLATILE_KEYW
29−__volatile__, VOLATILE_KEYW
30−__builtin_va_list, VA_LIST_KEYW
31−# According to rth, c99 defines _Bool, __restrict, __restrict__, restrict. KAO
32−_Bool, BOOL_KEYW
33−_restrict, RESTRICT_KEYW
34−__restrict__, RESTRICT_KEYW
35−restrict, RESTRICT_KEYW
36−asm, ASM_KEYW
37−# attribute commented out in modutils 2.4.2. People are using 'attribute' as a
38−# field name which breaks the genksyms parser. It is not a gcc keyword anyway.
39−# KAO.
40−# attribute, ATTRIBUTE_KEYW
41−auto, AUTO_KEYW
42−char, CHAR_KEYW
43−const, CONST_KEYW
44−double, DOUBLE_KEYW
45−enum, ENUM_KEYW
46−extern, EXTERN_KEYW
47−float, FLOAT_KEYW
48−inline, INLINE_KEYW
49−int, INT_KEYW
50−long, LONG_KEYW
51−register, REGISTER_KEYW
52−short, SHORT_KEYW
53−signed, SIGNED_KEYW
54−static, STATIC_KEYW
55−struct, STRUCT_KEYW
56−typedef, TYPEDEF_KEYW
57−typeof, TYPEOF_KEYW
58−union, UNION_KEYW
59−unsigned, UNSIGNED_KEYW
60−void, VOID_KEYW
61−volatile, VOLATILE_KEYW
scripts/genksyms/keywords.hash.c_shipped+0−230
@@ -1,230 +0,0 @@
1−/* ANSI-C code produced by gperf version 3.0.4 */
2−/* Command-line: gperf -t --output-file scripts/genksyms/keywords.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/genksyms/keywords.gperf */
3−
4−#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
5− && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
6− && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
7− && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
8− && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
9− && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
10− && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
11− && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
12− && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
13− && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
14− && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
15− && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
16− && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
17− && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
18− && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
19− && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
20− && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
21− && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
22− && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
23− && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
24− && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
25− && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
26− && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
27−/* The character set is not based on ISO-646. */
28−#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
29−#endif
30−
31−#line 4 "scripts/genksyms/keywords.gperf"
32−
33−struct resword;
34−static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
35−#line 8 "scripts/genksyms/keywords.gperf"
36−struct resword { const char *name; int token; };
37−/* maximum key range = 98, duplicates = 0 */
38−
39−#ifdef __GNUC__
40−__inline
41−#else
42−#ifdef __cplusplus
43−inline
44−#endif
45−#endif
46−static unsigned int
47−is_reserved_hash (register const char *str, register unsigned int len)
48−{
49− static const unsigned char asso_values[] =
50− {
51− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
52− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
53− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
54− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
55− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
56− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
57− 101, 101, 101, 101, 101, 101, 101, 101, 101, 0,
58− 101, 101, 101, 101, 101, 101, 15, 101, 101, 101,
59− 0, 101, 101, 101, 101, 101, 101, 101, 101, 101,
60− 101, 101, 101, 101, 101, 0, 101, 0, 0, 5,
61− 25, 20, 55, 30, 101, 15, 101, 101, 10, 0,
62− 10, 40, 10, 101, 10, 5, 0, 10, 15, 101,
63− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
64− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
65− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
66− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
67− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
68− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
69− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
70− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
71− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
72− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
73− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
74− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
75− 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
76− 101, 101, 101, 101, 101, 101
77− };
78− return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
79−}
80−
81−#ifdef __GNUC__
82−__inline
83−#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
84−__attribute__ ((__gnu_inline__))
85−#endif
86−#endif
87−const struct resword *
88−is_reserved_word (register const char *str, register unsigned int len)
89−{
90− enum
91− {
92− TOTAL_KEYWORDS = 47,
93− MIN_WORD_LENGTH = 3,
94− MAX_WORD_LENGTH = 24,
95− MIN_HASH_VALUE = 3,
96− MAX_HASH_VALUE = 100
97− };
98−
99− static const struct resword wordlist[] =
100− {
101− {""}, {""}, {""},
102−#line 36 "scripts/genksyms/keywords.gperf"
103− {"asm", ASM_KEYW},
104− {""},
105−#line 15 "scripts/genksyms/keywords.gperf"
106− {"__asm", ASM_KEYW},
107− {""},
108−#line 16 "scripts/genksyms/keywords.gperf"
109− {"__asm__", ASM_KEYW},
110− {""}, {""},
111−#line 27 "scripts/genksyms/keywords.gperf"
112− {"__typeof__", TYPEOF_KEYW},
113− {""},
114−#line 19 "scripts/genksyms/keywords.gperf"
115− {"__const", CONST_KEYW},
116−#line 18 "scripts/genksyms/keywords.gperf"
117− {"__attribute__", ATTRIBUTE_KEYW},
118−#line 20 "scripts/genksyms/keywords.gperf"
119− {"__const__", CONST_KEYW},
120−#line 25 "scripts/genksyms/keywords.gperf"
121− {"__signed__", SIGNED_KEYW},
122−#line 54 "scripts/genksyms/keywords.gperf"
123− {"static", STATIC_KEYW},
124−#line 30 "scripts/genksyms/keywords.gperf"
125− {"__builtin_va_list", VA_LIST_KEYW},
126−#line 49 "scripts/genksyms/keywords.gperf"
127− {"int", INT_KEYW},
128−#line 42 "scripts/genksyms/keywords.gperf"
129− {"char", CHAR_KEYW},
130−#line 43 "scripts/genksyms/keywords.gperf"
131− {"const", CONST_KEYW},
132−#line 55 "scripts/genksyms/keywords.gperf"
133− {"struct", STRUCT_KEYW},
134−#line 34 "scripts/genksyms/keywords.gperf"
135− {"__restrict__", RESTRICT_KEYW},
136−#line 35 "scripts/genksyms/keywords.gperf"
137− {"restrict", RESTRICT_KEYW},
138−#line 12 "scripts/genksyms/keywords.gperf"
139− {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW},
140−#line 23 "scripts/genksyms/keywords.gperf"
141− {"__inline__", INLINE_KEYW},
142− {""},
143−#line 29 "scripts/genksyms/keywords.gperf"
144− {"__volatile__", VOLATILE_KEYW},
145−#line 10 "scripts/genksyms/keywords.gperf"
146− {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
147−#line 33 "scripts/genksyms/keywords.gperf"
148− {"_restrict", RESTRICT_KEYW},
149− {""},
150−#line 17 "scripts/genksyms/keywords.gperf"
151− {"__attribute", ATTRIBUTE_KEYW},
152−#line 11 "scripts/genksyms/keywords.gperf"
153− {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
154−#line 21 "scripts/genksyms/keywords.gperf"
155− {"__extension__", EXTENSION_KEYW},
156−#line 45 "scripts/genksyms/keywords.gperf"
157− {"enum", ENUM_KEYW},
158−#line 13 "scripts/genksyms/keywords.gperf"
159− {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
160−#line 46 "scripts/genksyms/keywords.gperf"
161− {"extern", EXTERN_KEYW},
162− {""},
163−#line 24 "scripts/genksyms/keywords.gperf"
164− {"__signed", SIGNED_KEYW},
165−#line 14 "scripts/genksyms/keywords.gperf"
166− {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
167−#line 58 "scripts/genksyms/keywords.gperf"
168− {"union", UNION_KEYW},
169− {""}, {""},
170−#line 22 "scripts/genksyms/keywords.gperf"
171− {"__inline", INLINE_KEYW},
172−#line 41 "scripts/genksyms/keywords.gperf"
173− {"auto", AUTO_KEYW},
174−#line 28 "scripts/genksyms/keywords.gperf"
175− {"__volatile", VOLATILE_KEYW},
176− {""}, {""},
177−#line 59 "scripts/genksyms/keywords.gperf"
178− {"unsigned", UNSIGNED_KEYW},
179− {""},
180−#line 52 "scripts/genksyms/keywords.gperf"
181− {"short", SHORT_KEYW},
182−#line 48 "scripts/genksyms/keywords.gperf"
183− {"inline", INLINE_KEYW},
184− {""},
185−#line 61 "scripts/genksyms/keywords.gperf"
186− {"volatile", VOLATILE_KEYW},
187−#line 50 "scripts/genksyms/keywords.gperf"
188− {"long", LONG_KEYW},
189−#line 32 "scripts/genksyms/keywords.gperf"
190− {"_Bool", BOOL_KEYW},
191− {""}, {""},
192−#line 51 "scripts/genksyms/keywords.gperf"
193− {"register", REGISTER_KEYW},
194−#line 60 "scripts/genksyms/keywords.gperf"
195− {"void", VOID_KEYW},
196− {""},
197−#line 44 "scripts/genksyms/keywords.gperf"
198− {"double", DOUBLE_KEYW},
199− {""},
200−#line 26 "scripts/genksyms/keywords.gperf"
201− {"__typeof", TYPEOF_KEYW},
202− {""}, {""},
203−#line 53 "scripts/genksyms/keywords.gperf"
204− {"signed", SIGNED_KEYW},
205− {""}, {""}, {""}, {""},
206−#line 57 "scripts/genksyms/keywords.gperf"
207− {"typeof", TYPEOF_KEYW},
208−#line 56 "scripts/genksyms/keywords.gperf"
209− {"typedef", TYPEDEF_KEYW},
210− {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
211− {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
212− {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
213−#line 47 "scripts/genksyms/keywords.gperf"
214− {"float", FLOAT_KEYW}
215− };
216−
217− if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
218− {
219− register int key = is_reserved_hash (str, len);
220−
221− if (key <= MAX_HASH_VALUE && key >= 0)
222− {
223− register const char *s = wordlist[key].name;
224−
225− if (*str == *s && !strcmp (str + 1, s + 1))
226− return &wordlist[key];
227− }
228− }
229− return 0;
230−}
scripts/genksyms/lex.l+4−4
@@ -94,7 +94,7 @@ MC_TOKEN ([~%^&*+=|<>/-]=)|(&&)|("||")|(->)|(<<)|(>>) · 93 unmodified lines
9494
9595 /* Bring in the keyword recognizer. */
9696
97−#include "keywords.hash.c"
97+#include "keywords.c"
9898
9999
100100 /* Macros to append to our phrase collection list. */
@@ -186,10 +186,10 @@ repeat: · 85 unmodified lines
186186 case IDENT:
187187 APP;
188188 {
189− const struct resword *r = is_reserved_word(yytext, yyleng);
190− if (r)
189+ int r = is_reserved_word(yytext, yyleng);
190+ if (r >= 0)
191191 {
192− switch (token = r->token)
192+ switch (token = r)
193193 {
194194 case ATTRIBUTE_KEYW:
195195 lexstate = ST_ATTRIBUTE;
scripts/genksyms/lex.lex.c_shipped+4−4
@@ -1905,7 +1905,7 @@ void yyfree (void * ptr ) · 1904 unmodified lines
19051905
19061906 /* Bring in the keyword recognizer. */
19071907
1908−#include "keywords.hash.c"
1908+#include "keywords.c"
19091909
19101910 /* Macros to append to our phrase collection list. */
19111911
@@ -1995,10 +1995,10 @@ repeat: · 83 unmodified lines
19951995 case IDENT:
19961996 APP;
19971997 {
1998− const struct resword *r = is_reserved_word(yytext, yyleng);
1999− if (r)
1998+ int r = is_reserved_word(yytext, yyleng);
1999+ if (r >= 0)
20002000 {
2001− switch (token = r->token)
2001+ switch (token = r)
20022002 {
20032003 case ATTRIBUTE_KEYW:
20042004 lexstate = ST_ATTRIBUTE;
scripts/kconfig/.gitignore+0−1
@@ -5,7 +5,6 @@ config* · 4 unmodified lines
55 *.lex.c
66 *.tab.c
77 *.tab.h
8−zconf.hash.c
98 *.moc
109 gconf.glade.h
1110 *.pot
scripts/kconfig/Makefile+2−2
@@ -191,7 +191,7 @@ gconf-objs := gconf.o zconf.tab.o · 190 unmodified lines
191191 hostprogs-y := conf nconf mconf kxgettext qconf gconf
192192
193193 clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
194−clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
194+clean-files += zconf.tab.c zconf.lex.c gconf.glade.h
195195 clean-files += config.pot linux.pot
196196
197197 # Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
@@ -280,7 +280,7 @@ $(obj)/.tmp_gtkcheck: · 82 unmodified lines
280280 fi
281281 endif
282282
283−$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c
283+$(obj)/zconf.tab.o: $(obj)/zconf.lex.c
284284
285285 $(obj)/qconf.o: $(obj)/qconf.moc
286286
scripts/kconfig/kconf_id.c+54−0
@@ -0,0 +1,54 @@
1+
2+static struct kconf_id kconf_id_array[] = {
3+ { "mainmenu", T_MAINMENU, TF_COMMAND },
4+ { "menu", T_MENU, TF_COMMAND },
5+ { "endmenu", T_ENDMENU, TF_COMMAND },
6+ { "source", T_SOURCE, TF_COMMAND },
7+ { "choice", T_CHOICE, TF_COMMAND },
8+ { "endchoice", T_ENDCHOICE, TF_COMMAND },
9+ { "comment", T_COMMENT, TF_COMMAND },
10+ { "config", T_CONFIG, TF_COMMAND },
11+ { "menuconfig", T_MENUCONFIG, TF_COMMAND },
12+ { "help", T_HELP, TF_COMMAND },
13+ { "---help---", T_HELP, TF_COMMAND },
14+ { "if", T_IF, TF_COMMAND|TF_PARAM },
15+ { "endif", T_ENDIF, TF_COMMAND },
16+ { "depends", T_DEPENDS, TF_COMMAND },
17+ { "optional", T_OPTIONAL, TF_COMMAND },
18+ { "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN },
19+ { "prompt", T_PROMPT, TF_COMMAND },
20+ { "tristate", T_TYPE, TF_COMMAND, S_TRISTATE },
21+ { "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE },
22+ { "bool", T_TYPE, TF_COMMAND, S_BOOLEAN },
23+ { "boolean", T_TYPE, TF_COMMAND, S_BOOLEAN },
24+ { "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN },
25+ { "int", T_TYPE, TF_COMMAND, S_INT },
26+ { "hex", T_TYPE, TF_COMMAND, S_HEX },
27+ { "string", T_TYPE, TF_COMMAND, S_STRING },
28+ { "select", T_SELECT, TF_COMMAND },
29+ { "imply", T_IMPLY, TF_COMMAND },
30+ { "range", T_RANGE, TF_COMMAND },
31+ { "visible", T_VISIBLE, TF_COMMAND },
32+ { "option", T_OPTION, TF_COMMAND },
33+ { "on", T_ON, TF_PARAM },
34+ { "modules", T_OPT_MODULES, TF_OPTION },
35+ { "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION },
36+ { "env", T_OPT_ENV, TF_OPTION },
37+ { "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION },
38+};
39+
40+#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id))
41+
42+static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len)
43+{
44+ int i;
45+
46+ for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) {
47+ struct kconf_id *id = kconf_id_array+i;
48+ int l = strlen(id->name);
49+
50+ if (len == l && !memcmp(str, id->name, len))
51+ return id;
52+ }
53+ return NULL;
54+}
scripts/kconfig/lkc.h+1−1
@@ -62,7 +62,7 @@ enum conf_def_mode { · 61 unmodified lines
6262 #define T_OPT_ALLNOCONFIG_Y 4
6363
6464 struct kconf_id {
65− int name;
65+ const char *name;
6666 int token;
6767 unsigned int flags;
6868 enum symbol_type stype;
scripts/kconfig/zconf.gperf+0−50
@@ -1,50 +0,0 @@
1−%language=ANSI-C
2−%define hash-function-name kconf_id_hash
3−%define lookup-function-name kconf_id_lookup
4−%define string-pool-name kconf_id_strings
5−%compare-strncmp
6−%enum
7−%pic
8−%struct-type
9−
10−struct kconf_id;
11−
12−static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
13−
14−%%
15−mainmenu, T_MAINMENU, TF_COMMAND
16−menu, T_MENU, TF_COMMAND
17−endmenu, T_ENDMENU, TF_COMMAND
18−source, T_SOURCE, TF_COMMAND
19−choice, T_CHOICE, TF_COMMAND
20−endchoice, T_ENDCHOICE, TF_COMMAND
21−comment, T_COMMENT, TF_COMMAND
22−config, T_CONFIG, TF_COMMAND
23−menuconfig, T_MENUCONFIG, TF_COMMAND
24−help, T_HELP, TF_COMMAND
25−---help---, T_HELP, TF_COMMAND
26−if, T_IF, TF_COMMAND|TF_PARAM
27−endif, T_ENDIF, TF_COMMAND
28−depends, T_DEPENDS, TF_COMMAND
29−optional, T_OPTIONAL, TF_COMMAND
30−default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
31−prompt, T_PROMPT, TF_COMMAND
32−tristate, T_TYPE, TF_COMMAND, S_TRISTATE
33−def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE
34−bool, T_TYPE, TF_COMMAND, S_BOOLEAN
35−boolean, T_TYPE, TF_COMMAND, S_BOOLEAN
36−def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN
37−int, T_TYPE, TF_COMMAND, S_INT
38−hex, T_TYPE, TF_COMMAND, S_HEX
39−string, T_TYPE, TF_COMMAND, S_STRING
40−select, T_SELECT, TF_COMMAND
41−imply, T_IMPLY, TF_COMMAND
42−range, T_RANGE, TF_COMMAND
43−visible, T_VISIBLE, TF_COMMAND
44−option, T_OPTION, TF_COMMAND
45−on, T_ON, TF_PARAM
46−modules, T_OPT_MODULES, TF_OPTION
47−defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
48−env, T_OPT_ENV, TF_OPTION
49−allnoconfig_y, T_OPT_ALLNOCONFIG_Y,TF_OPTION
50−%%
scripts/kconfig/zconf.hash.c_shipped+0−297
@@ -1,297 +0,0 @@
1−/* ANSI-C code produced by gperf version 3.0.4 */
2−/* Command-line: gperf -t --output-file scripts/kconfig/zconf.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/kconfig/zconf.gperf */
3−
4−#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
5− && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
6− && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
7− && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
8− && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
9− && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
10− && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
11− && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
12− && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
13− && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
14− && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
15− && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
16− && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
17− && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
18− && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
19− && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
20− && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
21− && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
22− && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
23− && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
24− && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
25− && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
26− && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
27−/* The character set is not based on ISO-646. */
28−#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
29−#endif
30−
31−#line 10 "scripts/kconfig/zconf.gperf"
32−struct kconf_id;
33−
34−static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
35−/* maximum key range = 71, duplicates = 0 */
36−
37−#ifdef __GNUC__
38−__inline
39−#else
40−#ifdef __cplusplus
41−inline
42−#endif
43−#endif
44−static unsigned int
45−kconf_id_hash (register const char *str, register unsigned int len)
46−{
47− static const unsigned char asso_values[] =
48− {
49− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
50− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
51− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
52− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
53− 73, 73, 73, 73, 73, 0, 73, 73, 73, 73,
54− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
55− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
56− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
57− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
58− 73, 73, 73, 73, 73, 73, 73, 10, 25, 25,
59− 0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
60− 10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
61− 20, 0, 73, 73, 73, 73, 73, 73, 73, 73,
62− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
63− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
64− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
65− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
66− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
67− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
68− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
69− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
70− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
71− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
72− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
73− 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
74− 73, 73, 73, 73, 73, 73
75− };
76− register int hval = len;
77−
78− switch (hval)
79− {
80− default:
81− hval += asso_values[(unsigned char)str[2]];
82− /*FALLTHROUGH*/
83− case 2:
84− case 1:
85− hval += asso_values[(unsigned char)str[0]];
86− break;
87− }
88− return hval + asso_values[(unsigned char)str[len - 1]];
89−}
90−
91−struct kconf_id_strings_t
92− {
93− char kconf_id_strings_str2[sizeof("if")];
94− char kconf_id_strings_str3[sizeof("int")];
95− char kconf_id_strings_str5[sizeof("endif")];
96− char kconf_id_strings_str7[sizeof("default")];
97− char kconf_id_strings_str8[sizeof("tristate")];
98− char kconf_id_strings_str9[sizeof("endchoice")];
99− char kconf_id_strings_str10[sizeof("---help---")];
100− char kconf_id_strings_str12[sizeof("def_tristate")];
101− char kconf_id_strings_str13[sizeof("def_bool")];
102− char kconf_id_strings_str14[sizeof("defconfig_list")];
103− char kconf_id_strings_str17[sizeof("on")];
104− char kconf_id_strings_str18[sizeof("optional")];
105− char kconf_id_strings_str21[sizeof("option")];
106− char kconf_id_strings_str22[sizeof("endmenu")];
107− char kconf_id_strings_str23[sizeof("mainmenu")];
108− char kconf_id_strings_str25[sizeof("menuconfig")];
109− char kconf_id_strings_str27[sizeof("modules")];
110− char kconf_id_strings_str28[sizeof("allnoconfig_y")];
111− char kconf_id_strings_str29[sizeof("menu")];
112− char kconf_id_strings_str31[sizeof("select")];
113− char kconf_id_strings_str32[sizeof("comment")];
114− char kconf_id_strings_str33[sizeof("env")];
115− char kconf_id_strings_str35[sizeof("range")];
116− char kconf_id_strings_str36[sizeof("choice")];
117− char kconf_id_strings_str39[sizeof("bool")];
118− char kconf_id_strings_str41[sizeof("source")];
119− char kconf_id_strings_str42[sizeof("visible")];
120− char kconf_id_strings_str43[sizeof("hex")];
121− char kconf_id_strings_str46[sizeof("config")];
122− char kconf_id_strings_str47[sizeof("boolean")];
123− char kconf_id_strings_str50[sizeof("imply")];
124− char kconf_id_strings_str51[sizeof("string")];
125− char kconf_id_strings_str54[sizeof("help")];
126− char kconf_id_strings_str56[sizeof("prompt")];
127− char kconf_id_strings_str72[sizeof("depends")];
128− };
129−static const struct kconf_id_strings_t kconf_id_strings_contents =
130− {
131− "if",
132− "int",
133− "endif",
134− "default",
135− "tristate",
136− "endchoice",
137− "---help---",
138− "def_tristate",
139− "def_bool",
140− "defconfig_list",
141− "on",
142− "optional",
143− "option",
144− "endmenu",
145− "mainmenu",
146− "menuconfig",
147− "modules",
148− "allnoconfig_y",
149− "menu",
150− "select",
151− "comment",
152− "env",
153− "range",
154− "choice",
155− "bool",
156− "source",
157− "visible",
158− "hex",
159− "config",
160− "boolean",
161− "imply",
162− "string",
163− "help",
164− "prompt",
165− "depends"
166− };
167−#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
168−#ifdef __GNUC__
169−__inline
170−#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
171−__attribute__ ((__gnu_inline__))
172−#endif
173−#endif
174−const struct kconf_id *
175−kconf_id_lookup (register const char *str, register unsigned int len)
176−{
177− enum
178− {
179− TOTAL_KEYWORDS = 35,
180− MIN_WORD_LENGTH = 2,
181− MAX_WORD_LENGTH = 14,
182− MIN_HASH_VALUE = 2,
183− MAX_HASH_VALUE = 72
184− };
185−
186− static const struct kconf_id wordlist[] =
187− {
188− {-1}, {-1},
189−#line 26 "scripts/kconfig/zconf.gperf"
190− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM},
191−#line 37 "scripts/kconfig/zconf.gperf"
192− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT},
193− {-1},
194−#line 27 "scripts/kconfig/zconf.gperf"
195− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
196− {-1},
197−#line 30 "scripts/kconfig/zconf.gperf"
198− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
199−#line 32 "scripts/kconfig/zconf.gperf"
200− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE},
201−#line 20 "scripts/kconfig/zconf.gperf"
202− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
203−#line 25 "scripts/kconfig/zconf.gperf"
204− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_HELP, TF_COMMAND},
205− {-1},
206−#line 33 "scripts/kconfig/zconf.gperf"
207− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE},
208−#line 36 "scripts/kconfig/zconf.gperf"
209− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
210−#line 47 "scripts/kconfig/zconf.gperf"
211− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION},
212− {-1}, {-1},
213−#line 45 "scripts/kconfig/zconf.gperf"
214− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM},
215−#line 29 "scripts/kconfig/zconf.gperf"
216− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND},
217− {-1}, {-1},
218−#line 44 "scripts/kconfig/zconf.gperf"
219− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND},
220−#line 17 "scripts/kconfig/zconf.gperf"
221− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND},
222−#line 15 "scripts/kconfig/zconf.gperf"
223− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND},
224− {-1},
225−#line 23 "scripts/kconfig/zconf.gperf"
226− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND},
227− {-1},
228−#line 46 "scripts/kconfig/zconf.gperf"
229− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
230−#line 49 "scripts/kconfig/zconf.gperf"
231− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPT_ALLNOCONFIG_Y,TF_OPTION},
232−#line 16 "scripts/kconfig/zconf.gperf"
233− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
234− {-1},
235−#line 40 "scripts/kconfig/zconf.gperf"
236− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND},
237−#line 21 "scripts/kconfig/zconf.gperf"
238− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
239−#line 48 "scripts/kconfig/zconf.gperf"
240− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION},
241− {-1},
242−#line 42 "scripts/kconfig/zconf.gperf"
243− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND},
244−#line 19 "scripts/kconfig/zconf.gperf"
245− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND},
246− {-1}, {-1},
247−#line 34 "scripts/kconfig/zconf.gperf"
248− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN},
249− {-1},
250−#line 18 "scripts/kconfig/zconf.gperf"
251− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND},
252−#line 43 "scripts/kconfig/zconf.gperf"
253− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND},
254−#line 38 "scripts/kconfig/zconf.gperf"
255− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX},
256− {-1}, {-1},
257−#line 22 "scripts/kconfig/zconf.gperf"
258− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND},
259−#line 35 "scripts/kconfig/zconf.gperf"
260− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN},
261− {-1}, {-1},
262−#line 41 "scripts/kconfig/zconf.gperf"
263− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str50, T_IMPLY, TF_COMMAND},
264−#line 39 "scripts/kconfig/zconf.gperf"
265− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING},
266− {-1}, {-1},
267−#line 24 "scripts/kconfig/zconf.gperf"
268− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND},
269− {-1},
270−#line 31 "scripts/kconfig/zconf.gperf"
271− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND},
272− {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
273− {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
274−#line 28 "scripts/kconfig/zconf.gperf"
275− {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND}
276− };
277−
278− if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
279− {
280− register int key = kconf_id_hash (str, len);
281−
282− if (key <= MAX_HASH_VALUE && key >= 0)
283− {
284− register int o = wordlist[key].name;
285− if (o >= 0)
286− {
287− register const char *s = o + kconf_id_strings;
288−
289− if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
290− return &wordlist[key];
291− }
292− }
293− }
294− return 0;
295−}
296−#line 50 "scripts/kconfig/zconf.gperf"
297−
scripts/kconfig/zconf.tab.c_shipped+5−5
@@ -209,8 +209,8 @@ int zconfparse (void); · 208 unmodified lines
209209 /* Copy the second part of user declarations. */
210210
211211
212−/* Include zconf.hash.c here so it can see the token constants. */
213−#include "zconf.hash.c"
212+/* Include kconf_id.c here so it can see the token constants. */
213+#include "kconf_id.c"
214214
215215
216216
@@ -1515,7 +1515,7 @@ yyreduce: · 1298 unmodified lines
15151515 case 12:
15161516
15171517 {
1518− zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name);
1518+ zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name);
15191519 }
15201520
15211521 break;
@@ -2268,13 +2268,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok · 746 unmodified lines
22682268 {
22692269 if (id->token != endtoken) {
22702270 zconf_error("unexpected '%s' within %s block",
2271− kconf_id_strings + id->name, zconf_tokenname(starttoken));
2271+ id->name, zconf_tokenname(starttoken));
22722272 zconfnerrs++;
22732273 return false;
22742274 }
22752275 if (current_menu->file != current_file) {
22762276 zconf_error("'%s' in different file than '%s'",
2277− kconf_id_strings + id->name, zconf_tokenname(starttoken));
2277+ id->name, zconf_tokenname(starttoken));
22782278 fprintf(stderr, "%s:%d: location of the '%s'\n",
22792279 current_menu->file->name, current_menu->lineno,
22802280 zconf_tokenname(starttoken));
scripts/kconfig/zconf.y+5−5
@@ -101,8 +101,8 @@ static struct menu *current_menu, *current_entry; · 100 unmodified lines
101101 } if_entry menu_entry choice_entry
102102
103103 %{
104−/* Include zconf.hash.c here so it can see the token constants. */
105−#include "zconf.hash.c"
104+/* Include zconf_id.c here so it can see the token constants. */
105+#include "kconf_id.c"
106106 %}
107107
108108 %%
@@ -119,7 +119,7 @@ stmt_list: · 10 unmodified lines
119119 | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
120120 | stmt_list option_name error T_EOL
121121 {
122− zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name);
122+ zconf_error("unexpected option \"%s\"", $2->name);
123123 }
124124 | stmt_list error T_EOL { zconf_error("invalid statement"); }
125125 ;
@@ -551,13 +551,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok · 425 unmodified lines
551551 {
552552 if (id->token != endtoken) {
553553 zconf_error("unexpected '%s' within %s block",
554− kconf_id_strings + id->name, zconf_tokenname(starttoken));
554+ id->name, zconf_tokenname(starttoken));
555555 zconfnerrs++;
556556 return false;
557557 }
558558 if (current_menu->file != current_file) {
559559 zconf_error("'%s' in different file than '%s'",
560− kconf_id_strings + id->name, zconf_tokenname(starttoken));
560+ id->name, zconf_tokenname(starttoken));
561561 fprintf(stderr, "%s:%d: location of the '%s'\n",
562562 current_menu->file->name, current_menu->lineno,
563563 zconf_tokenname(starttoken));