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>
This commit is contained in:
parent
58d4e450a4
commit
bb3290d916
@ -259,5 +259,4 @@ wakeup.bin
|
|||||||
wakeup.elf
|
wakeup.elf
|
||||||
wakeup.lds
|
wakeup.lds
|
||||||
zImage*
|
zImage*
|
||||||
zconf.hash.c
|
|
||||||
zoffset.h
|
zoffset.h
|
||||||
|
@ -9,6 +9,6 @@ HOSTCFLAGS_parse.tab.o := -I$(src)
|
|||||||
HOSTCFLAGS_lex.lex.o := -I$(src)
|
HOSTCFLAGS_lex.lex.o := -I$(src)
|
||||||
|
|
||||||
# dependencies on generated files need to be listed explicitly
|
# dependencies on generated files need to be listed explicitly
|
||||||
$(obj)/lex.lex.o: $(obj)/keywords.hash.c $(obj)/parse.tab.h
|
$(obj)/lex.lex.o: $(obj)/parse.tab.h
|
||||||
|
|
||||||
clean-files := keywords.hash.c lex.lex.c parse.tab.c parse.tab.h
|
clean-files := lex.lex.c parse.tab.c parse.tab.h
|
||||||
|
74
scripts/genksyms/keywords.c
Normal file
74
scripts/genksyms/keywords.c
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
static struct resword {
|
||||||
|
const char *name;
|
||||||
|
int token;
|
||||||
|
} keywords[] = {
|
||||||
|
{ "EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW },
|
||||||
|
{ "EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
|
||||||
|
{ "EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW },
|
||||||
|
{ "EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW },
|
||||||
|
{ "EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW },
|
||||||
|
{ "__asm", ASM_KEYW },
|
||||||
|
{ "__asm__", ASM_KEYW },
|
||||||
|
{ "__attribute", ATTRIBUTE_KEYW },
|
||||||
|
{ "__attribute__", ATTRIBUTE_KEYW },
|
||||||
|
{ "__const", CONST_KEYW },
|
||||||
|
{ "__const__", CONST_KEYW },
|
||||||
|
{ "__extension__", EXTENSION_KEYW },
|
||||||
|
{ "__inline", INLINE_KEYW },
|
||||||
|
{ "__inline__", INLINE_KEYW },
|
||||||
|
{ "__signed", SIGNED_KEYW },
|
||||||
|
{ "__signed__", SIGNED_KEYW },
|
||||||
|
{ "__typeof", TYPEOF_KEYW },
|
||||||
|
{ "__typeof__", TYPEOF_KEYW },
|
||||||
|
{ "__volatile", VOLATILE_KEYW },
|
||||||
|
{ "__volatile__", VOLATILE_KEYW },
|
||||||
|
{ "__builtin_va_list", VA_LIST_KEYW },
|
||||||
|
|
||||||
|
// According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict". KAO
|
||||||
|
{ "_Bool", BOOL_KEYW },
|
||||||
|
{ "_restrict", RESTRICT_KEYW },
|
||||||
|
{ "__restrict__", RESTRICT_KEYW },
|
||||||
|
{ "restrict", RESTRICT_KEYW },
|
||||||
|
{ "asm", ASM_KEYW },
|
||||||
|
|
||||||
|
// attribute commented out in modutils 2.4.2. People are using 'attribute' as a
|
||||||
|
// field name which breaks the genksyms parser. It is not a gcc keyword anyway.
|
||||||
|
// KAO. },
|
||||||
|
// { "attribute", ATTRIBUTE_KEYW },
|
||||||
|
|
||||||
|
{ "auto", AUTO_KEYW },
|
||||||
|
{ "char", CHAR_KEYW },
|
||||||
|
{ "const", CONST_KEYW },
|
||||||
|
{ "double", DOUBLE_KEYW },
|
||||||
|
{ "enum", ENUM_KEYW },
|
||||||
|
{ "extern", EXTERN_KEYW },
|
||||||
|
{ "float", FLOAT_KEYW },
|
||||||
|
{ "inline", INLINE_KEYW },
|
||||||
|
{ "int", INT_KEYW },
|
||||||
|
{ "long", LONG_KEYW },
|
||||||
|
{ "register", REGISTER_KEYW },
|
||||||
|
{ "short", SHORT_KEYW },
|
||||||
|
{ "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 },
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NR_KEYWORDS (sizeof(keywords)/sizeof(struct resword))
|
||||||
|
|
||||||
|
static int is_reserved_word(register const char *str, register unsigned int len)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < NR_KEYWORDS; i++) {
|
||||||
|
struct resword *r = keywords + i;
|
||||||
|
int l = strlen(r->name);
|
||||||
|
if (len == l && !memcmp(str, r->name, len))
|
||||||
|
return r->token;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
@ -1,61 +0,0 @@
|
|||||||
%language=ANSI-C
|
|
||||||
%define hash-function-name is_reserved_hash
|
|
||||||
%define lookup-function-name is_reserved_word
|
|
||||||
%{
|
|
||||||
struct resword;
|
|
||||||
static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
|
|
||||||
%}
|
|
||||||
struct resword { const char *name; int token; }
|
|
||||||
%%
|
|
||||||
EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW
|
|
||||||
EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
|
|
||||||
EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW
|
|
||||||
EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW
|
|
||||||
EXPORT_UNUSED_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
|
|
||||||
__asm, ASM_KEYW
|
|
||||||
__asm__, ASM_KEYW
|
|
||||||
__attribute, ATTRIBUTE_KEYW
|
|
||||||
__attribute__, ATTRIBUTE_KEYW
|
|
||||||
__const, CONST_KEYW
|
|
||||||
__const__, CONST_KEYW
|
|
||||||
__extension__, EXTENSION_KEYW
|
|
||||||
__inline, INLINE_KEYW
|
|
||||||
__inline__, INLINE_KEYW
|
|
||||||
__signed, SIGNED_KEYW
|
|
||||||
__signed__, SIGNED_KEYW
|
|
||||||
__typeof, TYPEOF_KEYW
|
|
||||||
__typeof__, TYPEOF_KEYW
|
|
||||||
__volatile, VOLATILE_KEYW
|
|
||||||
__volatile__, VOLATILE_KEYW
|
|
||||||
__builtin_va_list, VA_LIST_KEYW
|
|
||||||
# According to rth, c99 defines _Bool, __restrict, __restrict__, restrict. KAO
|
|
||||||
_Bool, BOOL_KEYW
|
|
||||||
_restrict, RESTRICT_KEYW
|
|
||||||
__restrict__, RESTRICT_KEYW
|
|
||||||
restrict, RESTRICT_KEYW
|
|
||||||
asm, ASM_KEYW
|
|
||||||
# attribute commented out in modutils 2.4.2. People are using 'attribute' as a
|
|
||||||
# field name which breaks the genksyms parser. It is not a gcc keyword anyway.
|
|
||||||
# KAO.
|
|
||||||
# attribute, ATTRIBUTE_KEYW
|
|
||||||
auto, AUTO_KEYW
|
|
||||||
char, CHAR_KEYW
|
|
||||||
const, CONST_KEYW
|
|
||||||
double, DOUBLE_KEYW
|
|
||||||
enum, ENUM_KEYW
|
|
||||||
extern, EXTERN_KEYW
|
|
||||||
float, FLOAT_KEYW
|
|
||||||
inline, INLINE_KEYW
|
|
||||||
int, INT_KEYW
|
|
||||||
long, LONG_KEYW
|
|
||||||
register, REGISTER_KEYW
|
|
||||||
short, SHORT_KEYW
|
|
||||||
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
|
|
@ -1,230 +0,0 @@
|
|||||||
/* ANSI-C code produced by gperf version 3.0.4 */
|
|
||||||
/* 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 */
|
|
||||||
|
|
||||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
|
||||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
|
||||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
|
||||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
|
||||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
|
||||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
|
||||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
|
||||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
|
||||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
|
||||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
|
||||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
|
||||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
|
||||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
|
||||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
|
||||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
|
||||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
|
||||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
|
||||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
|
||||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
|
||||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
|
||||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
|
||||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
|
||||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
|
||||||
/* The character set is not based on ISO-646. */
|
|
||||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#line 4 "scripts/genksyms/keywords.gperf"
|
|
||||||
|
|
||||||
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 = 98, duplicates = 0 */
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#else
|
|
||||||
#ifdef __cplusplus
|
|
||||||
inline
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
static unsigned int
|
|
||||||
is_reserved_hash (register const char *str, register unsigned int len)
|
|
||||||
{
|
|
||||||
static const unsigned char asso_values[] =
|
|
||||||
{
|
|
||||||
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, 0, 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]];
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
|
||||||
__attribute__ ((__gnu_inline__))
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
const struct resword *
|
|
||||||
is_reserved_word (register const char *str, register unsigned int len)
|
|
||||||
{
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
TOTAL_KEYWORDS = 47,
|
|
||||||
MIN_WORD_LENGTH = 3,
|
|
||||||
MAX_WORD_LENGTH = 24,
|
|
||||||
MIN_HASH_VALUE = 3,
|
|
||||||
MAX_HASH_VALUE = 100
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct resword wordlist[] =
|
|
||||||
{
|
|
||||||
{""}, {""}, {""},
|
|
||||||
#line 36 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"asm", ASM_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 15 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__asm", ASM_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 16 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__asm__", ASM_KEYW},
|
|
||||||
{""}, {""},
|
|
||||||
#line 27 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__typeof__", TYPEOF_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 19 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__const", CONST_KEYW},
|
|
||||||
#line 18 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__attribute__", ATTRIBUTE_KEYW},
|
|
||||||
#line 20 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__const__", CONST_KEYW},
|
|
||||||
#line 25 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__signed__", SIGNED_KEYW},
|
|
||||||
#line 54 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"static", STATIC_KEYW},
|
|
||||||
#line 30 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__builtin_va_list", VA_LIST_KEYW},
|
|
||||||
#line 49 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"int", INT_KEYW},
|
|
||||||
#line 42 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"char", CHAR_KEYW},
|
|
||||||
#line 43 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"const", CONST_KEYW},
|
|
||||||
#line 55 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"struct", STRUCT_KEYW},
|
|
||||||
#line 34 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__restrict__", RESTRICT_KEYW},
|
|
||||||
#line 35 "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 29 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__volatile__", VOLATILE_KEYW},
|
|
||||||
#line 10 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
|
|
||||||
#line 33 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"_restrict", RESTRICT_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 17 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__attribute", ATTRIBUTE_KEYW},
|
|
||||||
#line 11 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
|
|
||||||
#line 21 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__extension__", EXTENSION_KEYW},
|
|
||||||
#line 45 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"enum", ENUM_KEYW},
|
|
||||||
#line 13 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW},
|
|
||||||
#line 46 "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 58 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"union", UNION_KEYW},
|
|
||||||
{""}, {""},
|
|
||||||
#line 22 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__inline", INLINE_KEYW},
|
|
||||||
#line 41 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"auto", AUTO_KEYW},
|
|
||||||
#line 28 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__volatile", VOLATILE_KEYW},
|
|
||||||
{""}, {""},
|
|
||||||
#line 59 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"unsigned", UNSIGNED_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 52 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"short", SHORT_KEYW},
|
|
||||||
#line 48 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"inline", INLINE_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 61 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"volatile", VOLATILE_KEYW},
|
|
||||||
#line 50 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"long", LONG_KEYW},
|
|
||||||
#line 32 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"_Bool", BOOL_KEYW},
|
|
||||||
{""}, {""},
|
|
||||||
#line 51 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"register", REGISTER_KEYW},
|
|
||||||
#line 60 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"void", VOID_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 44 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"double", DOUBLE_KEYW},
|
|
||||||
{""},
|
|
||||||
#line 26 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"__typeof", TYPEOF_KEYW},
|
|
||||||
{""}, {""},
|
|
||||||
#line 53 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"signed", SIGNED_KEYW},
|
|
||||||
{""}, {""}, {""}, {""},
|
|
||||||
#line 57 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"typeof", TYPEOF_KEYW},
|
|
||||||
#line 56 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"typedef", TYPEDEF_KEYW},
|
|
||||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
||||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
||||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
||||||
#line 47 "scripts/genksyms/keywords.gperf"
|
|
||||||
{"float", FLOAT_KEYW}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
|
||||||
{
|
|
||||||
register int key = is_reserved_hash (str, len);
|
|
||||||
|
|
||||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
|
||||||
{
|
|
||||||
register const char *s = wordlist[key].name;
|
|
||||||
|
|
||||||
if (*str == *s && !strcmp (str + 1, s + 1))
|
|
||||||
return &wordlist[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -94,7 +94,7 @@ MC_TOKEN ([~%^&*+=|<>/-]=)|(&&)|("||")|(->)|(<<)|(>>)
|
|||||||
|
|
||||||
/* Bring in the keyword recognizer. */
|
/* Bring in the keyword recognizer. */
|
||||||
|
|
||||||
#include "keywords.hash.c"
|
#include "keywords.c"
|
||||||
|
|
||||||
|
|
||||||
/* Macros to append to our phrase collection list. */
|
/* Macros to append to our phrase collection list. */
|
||||||
@ -186,10 +186,10 @@ repeat:
|
|||||||
case IDENT:
|
case IDENT:
|
||||||
APP;
|
APP;
|
||||||
{
|
{
|
||||||
const struct resword *r = is_reserved_word(yytext, yyleng);
|
int r = is_reserved_word(yytext, yyleng);
|
||||||
if (r)
|
if (r >= 0)
|
||||||
{
|
{
|
||||||
switch (token = r->token)
|
switch (token = r)
|
||||||
{
|
{
|
||||||
case ATTRIBUTE_KEYW:
|
case ATTRIBUTE_KEYW:
|
||||||
lexstate = ST_ATTRIBUTE;
|
lexstate = ST_ATTRIBUTE;
|
||||||
|
@ -1905,7 +1905,7 @@ void yyfree (void * ptr )
|
|||||||
|
|
||||||
/* Bring in the keyword recognizer. */
|
/* Bring in the keyword recognizer. */
|
||||||
|
|
||||||
#include "keywords.hash.c"
|
#include "keywords.c"
|
||||||
|
|
||||||
/* Macros to append to our phrase collection list. */
|
/* Macros to append to our phrase collection list. */
|
||||||
|
|
||||||
@ -1995,10 +1995,10 @@ repeat:
|
|||||||
case IDENT:
|
case IDENT:
|
||||||
APP;
|
APP;
|
||||||
{
|
{
|
||||||
const struct resword *r = is_reserved_word(yytext, yyleng);
|
int r = is_reserved_word(yytext, yyleng);
|
||||||
if (r)
|
if (r >= 0)
|
||||||
{
|
{
|
||||||
switch (token = r->token)
|
switch (token = r)
|
||||||
{
|
{
|
||||||
case ATTRIBUTE_KEYW:
|
case ATTRIBUTE_KEYW:
|
||||||
lexstate = ST_ATTRIBUTE;
|
lexstate = ST_ATTRIBUTE;
|
||||||
|
1
scripts/kconfig/.gitignore
vendored
1
scripts/kconfig/.gitignore
vendored
@ -5,7 +5,6 @@ config*
|
|||||||
*.lex.c
|
*.lex.c
|
||||||
*.tab.c
|
*.tab.c
|
||||||
*.tab.h
|
*.tab.h
|
||||||
zconf.hash.c
|
|
||||||
*.moc
|
*.moc
|
||||||
gconf.glade.h
|
gconf.glade.h
|
||||||
*.pot
|
*.pot
|
||||||
|
@ -191,7 +191,7 @@ gconf-objs := gconf.o zconf.tab.o
|
|||||||
hostprogs-y := conf nconf mconf kxgettext qconf gconf
|
hostprogs-y := conf nconf mconf kxgettext qconf gconf
|
||||||
|
|
||||||
clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
|
clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
|
||||||
clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
|
clean-files += zconf.tab.c zconf.lex.c gconf.glade.h
|
||||||
clean-files += config.pot linux.pot
|
clean-files += config.pot linux.pot
|
||||||
|
|
||||||
# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
|
# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
|
||||||
@ -280,7 +280,7 @@ $(obj)/.tmp_gtkcheck:
|
|||||||
fi
|
fi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c
|
$(obj)/zconf.tab.o: $(obj)/zconf.lex.c
|
||||||
|
|
||||||
$(obj)/qconf.o: $(obj)/qconf.moc
|
$(obj)/qconf.o: $(obj)/qconf.moc
|
||||||
|
|
||||||
|
54
scripts/kconfig/kconf_id.c
Normal file
54
scripts/kconfig/kconf_id.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
static struct kconf_id kconf_id_array[] = {
|
||||||
|
{ "mainmenu", T_MAINMENU, TF_COMMAND },
|
||||||
|
{ "menu", T_MENU, TF_COMMAND },
|
||||||
|
{ "endmenu", T_ENDMENU, TF_COMMAND },
|
||||||
|
{ "source", T_SOURCE, TF_COMMAND },
|
||||||
|
{ "choice", T_CHOICE, TF_COMMAND },
|
||||||
|
{ "endchoice", T_ENDCHOICE, TF_COMMAND },
|
||||||
|
{ "comment", T_COMMENT, TF_COMMAND },
|
||||||
|
{ "config", T_CONFIG, TF_COMMAND },
|
||||||
|
{ "menuconfig", T_MENUCONFIG, TF_COMMAND },
|
||||||
|
{ "help", T_HELP, TF_COMMAND },
|
||||||
|
{ "---help---", T_HELP, TF_COMMAND },
|
||||||
|
{ "if", T_IF, TF_COMMAND|TF_PARAM },
|
||||||
|
{ "endif", T_ENDIF, TF_COMMAND },
|
||||||
|
{ "depends", T_DEPENDS, TF_COMMAND },
|
||||||
|
{ "optional", T_OPTIONAL, TF_COMMAND },
|
||||||
|
{ "default", T_DEFAULT, TF_COMMAND, S_UNKNOWN },
|
||||||
|
{ "prompt", T_PROMPT, TF_COMMAND },
|
||||||
|
{ "tristate", T_TYPE, TF_COMMAND, S_TRISTATE },
|
||||||
|
{ "def_tristate", T_DEFAULT, TF_COMMAND, S_TRISTATE },
|
||||||
|
{ "bool", T_TYPE, TF_COMMAND, S_BOOLEAN },
|
||||||
|
{ "boolean", T_TYPE, TF_COMMAND, S_BOOLEAN },
|
||||||
|
{ "def_bool", T_DEFAULT, TF_COMMAND, S_BOOLEAN },
|
||||||
|
{ "int", T_TYPE, TF_COMMAND, S_INT },
|
||||||
|
{ "hex", T_TYPE, TF_COMMAND, S_HEX },
|
||||||
|
{ "string", T_TYPE, TF_COMMAND, S_STRING },
|
||||||
|
{ "select", T_SELECT, TF_COMMAND },
|
||||||
|
{ "imply", T_IMPLY, TF_COMMAND },
|
||||||
|
{ "range", T_RANGE, TF_COMMAND },
|
||||||
|
{ "visible", T_VISIBLE, TF_COMMAND },
|
||||||
|
{ "option", T_OPTION, TF_COMMAND },
|
||||||
|
{ "on", T_ON, TF_PARAM },
|
||||||
|
{ "modules", T_OPT_MODULES, TF_OPTION },
|
||||||
|
{ "defconfig_list", T_OPT_DEFCONFIG_LIST, TF_OPTION },
|
||||||
|
{ "env", T_OPT_ENV, TF_OPTION },
|
||||||
|
{ "allnoconfig_y", T_OPT_ALLNOCONFIG_Y, TF_OPTION },
|
||||||
|
};
|
||||||
|
|
||||||
|
#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id))
|
||||||
|
|
||||||
|
static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) {
|
||||||
|
struct kconf_id *id = kconf_id_array+i;
|
||||||
|
int l = strlen(id->name);
|
||||||
|
|
||||||
|
if (len == l && !memcmp(str, id->name, len))
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
@ -62,7 +62,7 @@ enum conf_def_mode {
|
|||||||
#define T_OPT_ALLNOCONFIG_Y 4
|
#define T_OPT_ALLNOCONFIG_Y 4
|
||||||
|
|
||||||
struct kconf_id {
|
struct kconf_id {
|
||||||
int name;
|
const char *name;
|
||||||
int token;
|
int token;
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
enum symbol_type stype;
|
enum symbol_type stype;
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
%language=ANSI-C
|
|
||||||
%define hash-function-name kconf_id_hash
|
|
||||||
%define lookup-function-name kconf_id_lookup
|
|
||||||
%define string-pool-name kconf_id_strings
|
|
||||||
%compare-strncmp
|
|
||||||
%enum
|
|
||||||
%pic
|
|
||||||
%struct-type
|
|
||||||
|
|
||||||
struct kconf_id;
|
|
||||||
|
|
||||||
static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
|
|
||||||
|
|
||||||
%%
|
|
||||||
mainmenu, T_MAINMENU, TF_COMMAND
|
|
||||||
menu, T_MENU, TF_COMMAND
|
|
||||||
endmenu, T_ENDMENU, TF_COMMAND
|
|
||||||
source, T_SOURCE, TF_COMMAND
|
|
||||||
choice, T_CHOICE, TF_COMMAND
|
|
||||||
endchoice, T_ENDCHOICE, TF_COMMAND
|
|
||||||
comment, T_COMMENT, TF_COMMAND
|
|
||||||
config, T_CONFIG, TF_COMMAND
|
|
||||||
menuconfig, T_MENUCONFIG, TF_COMMAND
|
|
||||||
help, T_HELP, TF_COMMAND
|
|
||||||
---help---, T_HELP, TF_COMMAND
|
|
||||||
if, T_IF, TF_COMMAND|TF_PARAM
|
|
||||||
endif, T_ENDIF, TF_COMMAND
|
|
||||||
depends, T_DEPENDS, TF_COMMAND
|
|
||||||
optional, T_OPTIONAL, TF_COMMAND
|
|
||||||
default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
|
|
||||||
prompt, T_PROMPT, TF_COMMAND
|
|
||||||
tristate, T_TYPE, TF_COMMAND, S_TRISTATE
|
|
||||||
def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE
|
|
||||||
bool, T_TYPE, TF_COMMAND, S_BOOLEAN
|
|
||||||
boolean, T_TYPE, TF_COMMAND, S_BOOLEAN
|
|
||||||
def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN
|
|
||||||
int, T_TYPE, TF_COMMAND, S_INT
|
|
||||||
hex, T_TYPE, TF_COMMAND, S_HEX
|
|
||||||
string, T_TYPE, TF_COMMAND, S_STRING
|
|
||||||
select, T_SELECT, TF_COMMAND
|
|
||||||
imply, T_IMPLY, TF_COMMAND
|
|
||||||
range, T_RANGE, TF_COMMAND
|
|
||||||
visible, T_VISIBLE, TF_COMMAND
|
|
||||||
option, T_OPTION, TF_COMMAND
|
|
||||||
on, T_ON, TF_PARAM
|
|
||||||
modules, T_OPT_MODULES, TF_OPTION
|
|
||||||
defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
|
|
||||||
env, T_OPT_ENV, TF_OPTION
|
|
||||||
allnoconfig_y, T_OPT_ALLNOCONFIG_Y,TF_OPTION
|
|
||||||
%%
|
|
@ -1,297 +0,0 @@
|
|||||||
/* ANSI-C code produced by gperf version 3.0.4 */
|
|
||||||
/* 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 */
|
|
||||||
|
|
||||||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
|
||||||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
|
||||||
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
|
|
||||||
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
|
|
||||||
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
|
|
||||||
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
|
|
||||||
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
|
|
||||||
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
|
|
||||||
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
|
|
||||||
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
|
|
||||||
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
|
|
||||||
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
|
|
||||||
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
|
|
||||||
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
|
|
||||||
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
|
|
||||||
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
|
|
||||||
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
|
|
||||||
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
|
|
||||||
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
|
|
||||||
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
|
|
||||||
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
|
|
||||||
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
|
|
||||||
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
|
|
||||||
/* The character set is not based on ISO-646. */
|
|
||||||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#line 10 "scripts/kconfig/zconf.gperf"
|
|
||||||
struct kconf_id;
|
|
||||||
|
|
||||||
static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
|
|
||||||
/* maximum key range = 71, duplicates = 0 */
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#else
|
|
||||||
#ifdef __cplusplus
|
|
||||||
inline
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
static unsigned int
|
|
||||||
kconf_id_hash (register const char *str, register unsigned int len)
|
|
||||||
{
|
|
||||||
static const unsigned char asso_values[] =
|
|
||||||
{
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 0, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 10, 25, 25,
|
|
||||||
0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
|
|
||||||
10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
|
|
||||||
20, 0, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
||||||
73, 73, 73, 73, 73, 73
|
|
||||||
};
|
|
||||||
register int hval = len;
|
|
||||||
|
|
||||||
switch (hval)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
hval += asso_values[(unsigned char)str[2]];
|
|
||||||
/*FALLTHROUGH*/
|
|
||||||
case 2:
|
|
||||||
case 1:
|
|
||||||
hval += asso_values[(unsigned char)str[0]];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return hval + asso_values[(unsigned char)str[len - 1]];
|
|
||||||
}
|
|
||||||
|
|
||||||
struct kconf_id_strings_t
|
|
||||||
{
|
|
||||||
char kconf_id_strings_str2[sizeof("if")];
|
|
||||||
char kconf_id_strings_str3[sizeof("int")];
|
|
||||||
char kconf_id_strings_str5[sizeof("endif")];
|
|
||||||
char kconf_id_strings_str7[sizeof("default")];
|
|
||||||
char kconf_id_strings_str8[sizeof("tristate")];
|
|
||||||
char kconf_id_strings_str9[sizeof("endchoice")];
|
|
||||||
char kconf_id_strings_str10[sizeof("---help---")];
|
|
||||||
char kconf_id_strings_str12[sizeof("def_tristate")];
|
|
||||||
char kconf_id_strings_str13[sizeof("def_bool")];
|
|
||||||
char kconf_id_strings_str14[sizeof("defconfig_list")];
|
|
||||||
char kconf_id_strings_str17[sizeof("on")];
|
|
||||||
char kconf_id_strings_str18[sizeof("optional")];
|
|
||||||
char kconf_id_strings_str21[sizeof("option")];
|
|
||||||
char kconf_id_strings_str22[sizeof("endmenu")];
|
|
||||||
char kconf_id_strings_str23[sizeof("mainmenu")];
|
|
||||||
char kconf_id_strings_str25[sizeof("menuconfig")];
|
|
||||||
char kconf_id_strings_str27[sizeof("modules")];
|
|
||||||
char kconf_id_strings_str28[sizeof("allnoconfig_y")];
|
|
||||||
char kconf_id_strings_str29[sizeof("menu")];
|
|
||||||
char kconf_id_strings_str31[sizeof("select")];
|
|
||||||
char kconf_id_strings_str32[sizeof("comment")];
|
|
||||||
char kconf_id_strings_str33[sizeof("env")];
|
|
||||||
char kconf_id_strings_str35[sizeof("range")];
|
|
||||||
char kconf_id_strings_str36[sizeof("choice")];
|
|
||||||
char kconf_id_strings_str39[sizeof("bool")];
|
|
||||||
char kconf_id_strings_str41[sizeof("source")];
|
|
||||||
char kconf_id_strings_str42[sizeof("visible")];
|
|
||||||
char kconf_id_strings_str43[sizeof("hex")];
|
|
||||||
char kconf_id_strings_str46[sizeof("config")];
|
|
||||||
char kconf_id_strings_str47[sizeof("boolean")];
|
|
||||||
char kconf_id_strings_str50[sizeof("imply")];
|
|
||||||
char kconf_id_strings_str51[sizeof("string")];
|
|
||||||
char kconf_id_strings_str54[sizeof("help")];
|
|
||||||
char kconf_id_strings_str56[sizeof("prompt")];
|
|
||||||
char kconf_id_strings_str72[sizeof("depends")];
|
|
||||||
};
|
|
||||||
static const struct kconf_id_strings_t kconf_id_strings_contents =
|
|
||||||
{
|
|
||||||
"if",
|
|
||||||
"int",
|
|
||||||
"endif",
|
|
||||||
"default",
|
|
||||||
"tristate",
|
|
||||||
"endchoice",
|
|
||||||
"---help---",
|
|
||||||
"def_tristate",
|
|
||||||
"def_bool",
|
|
||||||
"defconfig_list",
|
|
||||||
"on",
|
|
||||||
"optional",
|
|
||||||
"option",
|
|
||||||
"endmenu",
|
|
||||||
"mainmenu",
|
|
||||||
"menuconfig",
|
|
||||||
"modules",
|
|
||||||
"allnoconfig_y",
|
|
||||||
"menu",
|
|
||||||
"select",
|
|
||||||
"comment",
|
|
||||||
"env",
|
|
||||||
"range",
|
|
||||||
"choice",
|
|
||||||
"bool",
|
|
||||||
"source",
|
|
||||||
"visible",
|
|
||||||
"hex",
|
|
||||||
"config",
|
|
||||||
"boolean",
|
|
||||||
"imply",
|
|
||||||
"string",
|
|
||||||
"help",
|
|
||||||
"prompt",
|
|
||||||
"depends"
|
|
||||||
};
|
|
||||||
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
|
|
||||||
#ifdef __GNUC__
|
|
||||||
__inline
|
|
||||||
#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
|
|
||||||
__attribute__ ((__gnu_inline__))
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
const struct kconf_id *
|
|
||||||
kconf_id_lookup (register const char *str, register unsigned int len)
|
|
||||||
{
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
TOTAL_KEYWORDS = 35,
|
|
||||||
MIN_WORD_LENGTH = 2,
|
|
||||||
MAX_WORD_LENGTH = 14,
|
|
||||||
MIN_HASH_VALUE = 2,
|
|
||||||
MAX_HASH_VALUE = 72
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct kconf_id wordlist[] =
|
|
||||||
{
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 26 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM},
|
|
||||||
#line 37 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT},
|
|
||||||
{-1},
|
|
||||||
#line 27 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 30 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
|
|
||||||
#line 32 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE},
|
|
||||||
#line 20 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
|
|
||||||
#line 25 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_HELP, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 33 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE},
|
|
||||||
#line 36 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
|
|
||||||
#line 47 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 45 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM},
|
|
||||||
#line 29 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 44 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND},
|
|
||||||
#line 17 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND},
|
|
||||||
#line 15 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 23 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 46 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
|
|
||||||
#line 49 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_OPT_ALLNOCONFIG_Y,TF_OPTION},
|
|
||||||
#line 16 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 40 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND},
|
|
||||||
#line 21 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
|
|
||||||
#line 48 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION},
|
|
||||||
{-1},
|
|
||||||
#line 42 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND},
|
|
||||||
#line 19 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 34 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
|
||||||
{-1},
|
|
||||||
#line 18 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND},
|
|
||||||
#line 43 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND},
|
|
||||||
#line 38 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 22 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND},
|
|
||||||
#line 35 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 41 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str50, T_IMPLY, TF_COMMAND},
|
|
||||||
#line 39 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING},
|
|
||||||
{-1}, {-1},
|
|
||||||
#line 24 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND},
|
|
||||||
{-1},
|
|
||||||
#line 31 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND},
|
|
||||||
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
|
|
||||||
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
|
|
||||||
#line 28 "scripts/kconfig/zconf.gperf"
|
|
||||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
|
|
||||||
{
|
|
||||||
register int key = kconf_id_hash (str, len);
|
|
||||||
|
|
||||||
if (key <= MAX_HASH_VALUE && key >= 0)
|
|
||||||
{
|
|
||||||
register int o = wordlist[key].name;
|
|
||||||
if (o >= 0)
|
|
||||||
{
|
|
||||||
register const char *s = o + kconf_id_strings;
|
|
||||||
|
|
||||||
if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
|
|
||||||
return &wordlist[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#line 50 "scripts/kconfig/zconf.gperf"
|
|
||||||
|
|
@ -209,8 +209,8 @@ int zconfparse (void);
|
|||||||
/* Copy the second part of user declarations. */
|
/* Copy the second part of user declarations. */
|
||||||
|
|
||||||
|
|
||||||
/* Include zconf.hash.c here so it can see the token constants. */
|
/* Include kconf_id.c here so it can see the token constants. */
|
||||||
#include "zconf.hash.c"
|
#include "kconf_id.c"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1515,7 +1515,7 @@ yyreduce:
|
|||||||
case 12:
|
case 12:
|
||||||
|
|
||||||
{
|
{
|
||||||
zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[-2].id)->name);
|
zconf_error("unexpected option \"%s\"", (yyvsp[-2].id)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -2268,13 +2268,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok
|
|||||||
{
|
{
|
||||||
if (id->token != endtoken) {
|
if (id->token != endtoken) {
|
||||||
zconf_error("unexpected '%s' within %s block",
|
zconf_error("unexpected '%s' within %s block",
|
||||||
kconf_id_strings + id->name, zconf_tokenname(starttoken));
|
id->name, zconf_tokenname(starttoken));
|
||||||
zconfnerrs++;
|
zconfnerrs++;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (current_menu->file != current_file) {
|
if (current_menu->file != current_file) {
|
||||||
zconf_error("'%s' in different file than '%s'",
|
zconf_error("'%s' in different file than '%s'",
|
||||||
kconf_id_strings + id->name, zconf_tokenname(starttoken));
|
id->name, zconf_tokenname(starttoken));
|
||||||
fprintf(stderr, "%s:%d: location of the '%s'\n",
|
fprintf(stderr, "%s:%d: location of the '%s'\n",
|
||||||
current_menu->file->name, current_menu->lineno,
|
current_menu->file->name, current_menu->lineno,
|
||||||
zconf_tokenname(starttoken));
|
zconf_tokenname(starttoken));
|
||||||
|
@ -101,8 +101,8 @@ static struct menu *current_menu, *current_entry;
|
|||||||
} if_entry menu_entry choice_entry
|
} if_entry menu_entry choice_entry
|
||||||
|
|
||||||
%{
|
%{
|
||||||
/* Include zconf.hash.c here so it can see the token constants. */
|
/* Include zconf_id.c here so it can see the token constants. */
|
||||||
#include "zconf.hash.c"
|
#include "kconf_id.c"
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%%
|
%%
|
||||||
@ -119,7 +119,7 @@ stmt_list:
|
|||||||
| stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
|
| stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
|
||||||
| stmt_list option_name error T_EOL
|
| stmt_list option_name error T_EOL
|
||||||
{
|
{
|
||||||
zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name);
|
zconf_error("unexpected option \"%s\"", $2->name);
|
||||||
}
|
}
|
||||||
| stmt_list error T_EOL { zconf_error("invalid statement"); }
|
| stmt_list error T_EOL { zconf_error("invalid statement"); }
|
||||||
;
|
;
|
||||||
@ -551,13 +551,13 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok
|
|||||||
{
|
{
|
||||||
if (id->token != endtoken) {
|
if (id->token != endtoken) {
|
||||||
zconf_error("unexpected '%s' within %s block",
|
zconf_error("unexpected '%s' within %s block",
|
||||||
kconf_id_strings + id->name, zconf_tokenname(starttoken));
|
id->name, zconf_tokenname(starttoken));
|
||||||
zconfnerrs++;
|
zconfnerrs++;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (current_menu->file != current_file) {
|
if (current_menu->file != current_file) {
|
||||||
zconf_error("'%s' in different file than '%s'",
|
zconf_error("'%s' in different file than '%s'",
|
||||||
kconf_id_strings + id->name, zconf_tokenname(starttoken));
|
id->name, zconf_tokenname(starttoken));
|
||||||
fprintf(stderr, "%s:%d: location of the '%s'\n",
|
fprintf(stderr, "%s:%d: location of the '%s'\n",
|
||||||
current_menu->file->name, current_menu->lineno,
|
current_menu->file->name, current_menu->lineno,
|
||||||
zconf_tokenname(starttoken));
|
zconf_tokenname(starttoken));
|
||||||
|
Loading…
Reference in New Issue
Block a user