diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-08-19 13:17:02 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-08-19 14:02:53 -0400 |
| commit | bb3290d91695bb1ae78ab86f18fb4d7ad8e5ebcc (patch) | |
| tree | 0e50ccf15e0ad847395593ce8e4b1b4c6eb50031 /scripts | |
| parent | 58d4e450a490d5f02183f6834c12550ba26d3b47 (diff) | |
Remove gperf usage from toolchain
It turns out that gperf-3.1 changed types in the generated code in ways
that aren't even trivially detectable without having to generate a test-file.
It's just not worth using tools and libraries from clowns that don't
understand or care about compatibility. So get rid of gperf.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/genksyms/Makefile | 4 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.c | 74 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.gperf | 61 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.hash.c_shipped | 230 | ||||
| -rw-r--r-- | scripts/genksyms/lex.l | 8 | ||||
| -rw-r--r-- | scripts/genksyms/lex.lex.c_shipped | 8 | ||||
| -rw-r--r-- | scripts/kconfig/.gitignore | 1 | ||||
| -rw-r--r-- | scripts/kconfig/Makefile | 4 | ||||
| -rw-r--r-- | scripts/kconfig/kconf_id.c | 54 | ||||
| -rw-r--r-- | scripts/kconfig/lkc.h | 2 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.gperf | 50 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.hash.c_shipped | 297 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.tab.c_shipped | 10 | ||||
| -rw-r--r-- | scripts/kconfig/zconf.y | 10 |
14 files changed, 151 insertions, 662 deletions
diff --git a/scripts/genksyms/Makefile b/scripts/genksyms/Makefile index aca33b98bf63..3c23bab3367b 100644 --- a/scripts/genksyms/Makefile +++ b/scripts/genksyms/Makefile | |||
| @@ -9,6 +9,6 @@ HOSTCFLAGS_parse.tab.o := -I$(src) | |||
| 9 | HOSTCFLAGS_lex.lex.o := -I$(src) | 9 | HOSTCFLAGS_lex.lex.o := -I$(src) |
| 10 | 10 | ||
| 11 | # dependencies on generated files need to be listed explicitly | 11 | # 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 |
| 13 | 13 | ||
| 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 |
diff --git a/scripts/genksyms/keywords.c b/scripts/genksyms/keywords.c new file mode 100644 index 000000000000..9f40bcd17d07 --- /dev/null +++ b/scripts/genksyms/keywords.c | |||
| @@ -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 | } | ||
diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf deleted file mode 100644 index bd4c4b235588..000000000000 --- a/scripts/genksyms/keywords.gperf +++ /dev/null | |||
| @@ -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 | ||
diff --git a/scripts/genksyms/keywords.hash.c_shipped b/scripts/genksyms/keywords.hash.c_shipped deleted file mode 100644 index 738018ba7375..000000000000 --- a/scripts/genksyms/keywords.hash.c_shipped +++ /dev/null | |||
| @@ -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 | } | ||
diff --git a/scripts/genksyms/lex.l b/scripts/genksyms/lex.l index 5235aa507ba5..5dc25ee01c77 100644 --- a/scripts/genksyms/lex.l +++ b/scripts/genksyms/lex.l | |||
| @@ -94,7 +94,7 @@ MC_TOKEN ([~%^&*+=|<>/-]=)|(&&)|("||")|(->)|(<<)|(>>) | |||
| 94 | 94 | ||
| 95 | /* Bring in the keyword recognizer. */ | 95 | /* Bring in the keyword recognizer. */ |
| 96 | 96 | ||
| 97 | #include "keywords.hash.c" | 97 | #include "keywords.c" |
| 98 | 98 | ||
| 99 | 99 | ||
| 100 | /* Macros to append to our phrase collection list. */ | 100 | /* Macros to append to our phrase collection list. */ |
| @@ -186,10 +186,10 @@ repeat: | |||
| 186 | case IDENT: | 186 | case IDENT: |
| 187 | APP; | 187 | APP; |
| 188 | { | 188 | { |
| 189 | const struct resword *r = is_reserved_word(yytext, yyleng); | 189 | int r = is_reserved_word(yytext, yyleng); |
| 190 | if (r) | 190 | if (r >= 0) |
| 191 | { | 191 | { |
| 192 | switch (token = r->token) | 192 | switch (token = r) |
| 193 | { | 193 | { |
| 194 | case ATTRIBUTE_KEYW: | 194 | case ATTRIBUTE_KEYW: |
| 195 | lexstate = ST_ATTRIBUTE; | 195 | lexstate = ST_ATTRIBUTE; |
diff --git a/scripts/genksyms/lex.lex.c_shipped b/scripts/genksyms/lex.lex.c_shipped index 985c5541aae4..d5a7474b3e57 100644 --- a/scripts/genksyms/lex.lex.c_shipped +++ b/scripts/genksyms/lex.lex.c_shipped | |||
| @@ -1905,7 +1905,7 @@ void yyfree (void * ptr ) | |||
| 1905 | 1905 | ||
| 1906 | /* Bring in the keyword recognizer. */ | 1906 | /* Bring in the keyword recognizer. */ |
| 1907 | 1907 | ||
| 1908 | #include "keywords.hash.c" | 1908 | #include "keywords.c" |
| 1909 | 1909 | ||
| 1910 | /* Macros to append to our phrase collection list. */ | 1910 | /* Macros to append to our phrase collection list. */ |
| 1911 | 1911 | ||
| @@ -1995,10 +1995,10 @@ repeat: | |||
| 1995 | case IDENT: | 1995 | case IDENT: |
| 1996 | APP; | 1996 | APP; |
| 1997 | { | 1997 | { |
| 1998 | const struct resword *r = is_reserved_word(yytext, yyleng); | 1998 | int r = is_reserved_word(yytext, yyleng); |
| 1999 | if (r) | 1999 | if (r >= 0) |
| 2000 | { | 2000 | { |
| 2001 | switch (token = r->token) | 2001 | switch (token = r) |
| 2002 | { | 2002 | { |
| 2003 | case ATTRIBUTE_KEYW: | 2003 | case ATTRIBUTE_KEYW: |
| 2004 | lexstate = ST_ATTRIBUTE; | 2004 | lexstate = ST_ATTRIBUTE; |
diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore index be603c4fef62..51f1c877b543 100644 --- a/scripts/kconfig/.gitignore +++ b/scripts/kconfig/.gitignore | |||
| @@ -5,7 +5,6 @@ config* | |||
| 5 | *.lex.c | 5 | *.lex.c |
| 6 | *.tab.c | 6 | *.tab.c |
| 7 | *.tab.h | 7 | *.tab.h |
| 8 | zconf.hash.c | ||
| 9 | *.moc | 8 | *.moc |
| 10 | gconf.glade.h | 9 | gconf.glade.h |
| 11 | *.pot | 10 | *.pot |
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index eb8144643b78..8c12c20c55a6 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile | |||
| @@ -191,7 +191,7 @@ gconf-objs := gconf.o zconf.tab.o | |||
| 191 | hostprogs-y := conf nconf mconf kxgettext qconf gconf | 191 | hostprogs-y := conf nconf mconf kxgettext qconf gconf |
| 192 | 192 | ||
| 193 | clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck | 193 | 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 |
| 195 | clean-files += config.pot linux.pot | 195 | clean-files += config.pot linux.pot |
| 196 | 196 | ||
| 197 | # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) | 197 | # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) |
| @@ -280,7 +280,7 @@ $(obj)/.tmp_gtkcheck: | |||
| 280 | fi | 280 | fi |
| 281 | endif | 281 | endif |
| 282 | 282 | ||
| 283 | $(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c | 283 | $(obj)/zconf.tab.o: $(obj)/zconf.lex.c |
| 284 | 284 | ||
| 285 | $(obj)/qconf.o: $(obj)/qconf.moc | 285 | $(obj)/qconf.o: $(obj)/qconf.moc |
| 286 | 286 | ||
diff --git a/scripts/kconfig/kconf_id.c b/scripts/kconfig/kconf_id.c new file mode 100644 index 000000000000..5abbc728fbc4 --- /dev/null +++ b/scripts/kconfig/kconf_id.c | |||
| @@ -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 | } | ||
diff --git a/scripts/kconfig/lkc.h b/scripts/kconfig/lkc.h index 91ca126ea080..cdcbe43e87b3 100644 --- a/scripts/kconfig/lkc.h +++ b/scripts/kconfig/lkc.h | |||
| @@ -62,7 +62,7 @@ enum conf_def_mode { | |||
| 62 | #define T_OPT_ALLNOCONFIG_Y 4 | 62 | #define T_OPT_ALLNOCONFIG_Y 4 |
| 63 | 63 | ||
| 64 | struct kconf_id { | 64 | struct kconf_id { |
| 65 | int name; | 65 | const char *name; |
| 66 | int token; | 66 | int token; |
| 67 | unsigned int flags; | 67 | unsigned int flags; |
| 68 | enum symbol_type stype; | 68 | enum symbol_type stype; |
diff --git a/scripts/kconfig/zconf.gperf b/scripts/kconfig/zconf.gperf deleted file mode 100644 index ead02edec936..000000000000 --- a/scripts/kconfig/zconf.gperf +++ /dev/null | |||
| @@ -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 | %% | ||
diff --git a/scripts/kconfig/zconf.hash.c_shipped b/scripts/kconfig/zconf.hash.c_shipped deleted file mode 100644 index d51b15de074a..000000000000 --- a/scripts/kconfig/zconf.hash.c_shipped +++ /dev/null | |||
| @@ -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 | |||
diff --git a/scripts/kconfig/zconf.tab.c_shipped b/scripts/kconfig/zconf.tab.c_shipped index 65b7515a577c..a22b285d759f 100644 --- a/scripts/kconfig/zconf.tab.c_shipped +++ b/scripts/kconfig/zconf.tab.c_shipped | |||
| @@ -209,8 +209,8 @@ int zconfparse (void); | |||
| 209 | /* Copy the second part of user declarations. */ | 209 | /* Copy the second part of user declarations. */ |
| 210 | 210 | ||
| 211 | 211 | ||
| 212 | /* Include zconf.hash.c here so it can see the token constants. */ | 212 | /* Include kconf_id.c here so it can see the token constants. */ |
| 213 | #include "zconf.hash.c" | 213 | #include "kconf_id.c" |
| 214 | 214 | ||
| 215 | 215 | ||
| 216 | 216 | ||
| @@ -1515,7 +1515,7 @@ yyreduce: | |||
| 1515 | case 12: | 1515 | case 12: |
| 1516 | 1516 | ||
| 1517 | { | 1517 | { |
| 1518 | zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name); | 1518 | zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name); |
| 1519 | } | 1519 | } |
| 1520 | 1520 | ||
| 1521 | break; | 1521 | break; |
| @@ -2268,13 +2268,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok | |||
| 2268 | { | 2268 | { |
| 2269 | if (id->token != endtoken) { | 2269 | if (id->token != endtoken) { |
| 2270 | zconf_error("unexpected '%s' within %s block", | 2270 | zconf_error("unexpected '%s' within %s block", |
| 2271 | kconf_id_strings + id->name, zconf_tokenname(starttoken)); | 2271 | id->name, zconf_tokenname(starttoken)); |
| 2272 | zconfnerrs++; | 2272 | zconfnerrs++; |
| 2273 | return false; | 2273 | return false; |
| 2274 | } | 2274 | } |
| 2275 | if (current_menu->file != current_file) { | 2275 | if (current_menu->file != current_file) { |
| 2276 | zconf_error("'%s' in different file than '%s'", | 2276 | zconf_error("'%s' in different file than '%s'", |
| 2277 | kconf_id_strings + id->name, zconf_tokenname(starttoken)); | 2277 | id->name, zconf_tokenname(starttoken)); |
| 2278 | fprintf(stderr, "%s:%d: location of the '%s'\n", | 2278 | fprintf(stderr, "%s:%d: location of the '%s'\n", |
| 2279 | current_menu->file->name, current_menu->lineno, | 2279 | current_menu->file->name, current_menu->lineno, |
| 2280 | zconf_tokenname(starttoken)); | 2280 | zconf_tokenname(starttoken)); |
diff --git a/scripts/kconfig/zconf.y b/scripts/kconfig/zconf.y index 001305fa080b..c8f396c3b190 100644 --- a/scripts/kconfig/zconf.y +++ b/scripts/kconfig/zconf.y | |||
| @@ -101,8 +101,8 @@ static struct menu *current_menu, *current_entry; | |||
| 101 | } if_entry menu_entry choice_entry | 101 | } if_entry menu_entry choice_entry |
| 102 | 102 | ||
| 103 | %{ | 103 | %{ |
| 104 | /* Include zconf.hash.c here so it can see the token constants. */ | 104 | /* Include zconf_id.c here so it can see the token constants. */ |
| 105 | #include "zconf.hash.c" | 105 | #include "kconf_id.c" |
| 106 | %} | 106 | %} |
| 107 | 107 | ||
| 108 | %% | 108 | %% |
| @@ -119,7 +119,7 @@ stmt_list: | |||
| 119 | | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } | 119 | | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } |
| 120 | | stmt_list option_name error T_EOL | 120 | | stmt_list option_name error T_EOL |
| 121 | { | 121 | { |
| 122 | zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name); | 122 | zconf_error("unexpected option \"%s\"", $2->name); |
| 123 | } | 123 | } |
| 124 | | stmt_list error T_EOL { zconf_error("invalid statement"); } | 124 | | stmt_list error T_EOL { zconf_error("invalid statement"); } |
| 125 | ; | 125 | ; |
| @@ -551,13 +551,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok | |||
| 551 | { | 551 | { |
| 552 | if (id->token != endtoken) { | 552 | if (id->token != endtoken) { |
| 553 | zconf_error("unexpected '%s' within %s block", | 553 | zconf_error("unexpected '%s' within %s block", |
| 554 | kconf_id_strings + id->name, zconf_tokenname(starttoken)); | 554 | id->name, zconf_tokenname(starttoken)); |
| 555 | zconfnerrs++; | 555 | zconfnerrs++; |
| 556 | return false; | 556 | return false; |
| 557 | } | 557 | } |
| 558 | if (current_menu->file != current_file) { | 558 | if (current_menu->file != current_file) { |
| 559 | zconf_error("'%s' in different file than '%s'", | 559 | zconf_error("'%s' in different file than '%s'", |
| 560 | kconf_id_strings + id->name, zconf_tokenname(starttoken)); | 560 | id->name, zconf_tokenname(starttoken)); |
| 561 | fprintf(stderr, "%s:%d: location of the '%s'\n", | 561 | fprintf(stderr, "%s:%d: location of the '%s'\n", |
| 562 | current_menu->file->name, current_menu->lineno, | 562 | current_menu->file->name, current_menu->lineno, |
| 563 | zconf_tokenname(starttoken)); | 563 | zconf_tokenname(starttoken)); |
