aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-09-08 00:39:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-09-08 00:39:15 -0400
commit5969d1bb3082b41eba8fd2c826559abe38ccb6df (patch)
tree39f72fe44d2842ee29e89b0d23c61569fa7f725c /scripts
parent572c01ba19ef150e98aea0b45ca17d43356521b5 (diff)
parentbb3290d91695bb1ae78ab86f18fb4d7ad8e5ebcc (diff)
Merge branch 'gperf-removal'
Remove our use of 'gperf' for generating perfect hashes from some of our build tools. This removal was prompted by Masahiro Yamada sending out a patch that removes all our pre-generated files, and when I tested it, I noticed that the gperf version I have (3.1) apparently generates code that no longer works with out code-base because the function interfaces generated by gperf have changed. We really don't care that much, and the gperf people changed their interfaces in ways that makes it annoying to work with them. Tools that make it hard to use them should not be used, and the kernel is not at all interested in some autoconf mess. So remove the gperf dependency entirely. It turns out that if you ignore the pre-generated files, the use of gperf apparently saved us a whopping fifteen lines of code. It obviously wasn't worth it, considering that the pre-generated files are about 500 lines. I sent this out as a patch about three weeks ago, and got absolutely zero responses. So let's see if anybody notices now that I merge it. Because there might be serious bugs here, but it WorksForMe(tm). * gperf-removal: Remove gperf usage from toolchain
Diffstat (limited to 'scripts')
-rw-r--r--scripts/genksyms/Makefile4
-rw-r--r--scripts/genksyms/keywords.c74
-rw-r--r--scripts/genksyms/keywords.gperf61
-rw-r--r--scripts/genksyms/keywords.hash.c_shipped230
-rw-r--r--scripts/genksyms/lex.l8
-rw-r--r--scripts/genksyms/lex.lex.c_shipped8
-rw-r--r--scripts/kconfig/.gitignore1
-rw-r--r--scripts/kconfig/Makefile4
-rw-r--r--scripts/kconfig/kconf_id.c54
-rw-r--r--scripts/kconfig/lkc.h2
-rw-r--r--scripts/kconfig/zconf.gperf50
-rw-r--r--scripts/kconfig/zconf.hash.c_shipped297
-rw-r--r--scripts/kconfig/zconf.tab.c_shipped10
-rw-r--r--scripts/kconfig/zconf.y10
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)
9HOSTCFLAGS_lex.lex.o := -I$(src) 9HOSTCFLAGS_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
14clean-files := keywords.hash.c lex.lex.c parse.tab.c parse.tab.h 14clean-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 @@
1static 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
64static 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%{
5struct resword;
6static const struct resword *is_reserved_word(register const char *str, register unsigned int len);
7%}
8struct resword { const char *name; int token; }
9%%
10EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW
11EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
12EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW
13EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW
14EXPORT_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
35restrict, RESTRICT_KEYW
36asm, 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
41auto, AUTO_KEYW
42char, CHAR_KEYW
43const, CONST_KEYW
44double, DOUBLE_KEYW
45enum, ENUM_KEYW
46extern, EXTERN_KEYW
47float, FLOAT_KEYW
48inline, INLINE_KEYW
49int, INT_KEYW
50long, LONG_KEYW
51register, REGISTER_KEYW
52short, SHORT_KEYW
53signed, SIGNED_KEYW
54static, STATIC_KEYW
55struct, STRUCT_KEYW
56typedef, TYPEDEF_KEYW
57typeof, TYPEOF_KEYW
58union, UNION_KEYW
59unsigned, UNSIGNED_KEYW
60void, VOID_KEYW
61volatile, 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))