diff options
Diffstat (limited to 'scripts')
27 files changed, 675 insertions, 436 deletions
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 7675d11ee65e..eadcd4d359d9 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -488,9 +488,9 @@ endif quiet_cmd_export_list = EXPORTS $@ cmd_export_list = $(OBJDUMP) -h $< | \ - sed -ne '/___ksymtab/{s/.*+/$(ref_prefix)/;s/ .*/)/;p}' >$(ksyms-lds);\ + sed -ne '/___ksymtab/s/.*+\([^ ]*\).*/$(ref_prefix)\1)/p' >$(ksyms-lds);\ rm -f $(dummy-object);\ - $(AR) rcs$(KBUILD_ARFLAGS) $(dummy-object);\ + echo | $(CC) $(a_flags) -c -o $(dummy-object) -x assembler -;\ $(LD) $(ld_flags) -r -o $@ -T $(ksyms-lds) $(dummy-object);\ rm $(dummy-object) $(ksyms-lds) @@ -517,11 +517,18 @@ $($(subst $(obj)/,,$(@:.o=-objs))) \ $($(subst $(obj)/,,$(@:.o=-y))) \ $($(subst $(obj)/,,$(@:.o=-m)))), $^) -quiet_cmd_link_multi-y = LD $@ -cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis) +cmd_link_multi-link = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis) + +ifdef CONFIG_THIN_ARCHIVES + quiet_cmd_link_multi-y = AR $@ + cmd_link_multi-y = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS) $@ $(link_multi_deps) +else + quiet_cmd_link_multi-y = LD $@ + cmd_link_multi-y = $(cmd_link_multi-link) +endif quiet_cmd_link_multi-m = LD [M] $@ -cmd_link_multi-m = $(cmd_link_multi-y) +cmd_link_multi-m = $(cmd_link_multi-link) $(multi-used-y): FORCE $(call if_changed,link_multi-y) diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh index 8dc1918b6783..513da1a4a2da 100755 --- a/scripts/adjust_autoksyms.sh +++ b/scripts/adjust_autoksyms.sh @@ -59,6 +59,7 @@ cat > "$new_ksyms_file" << EOT */ EOT +[ "$(ls -A "$MODVERDIR")" ] && sed -ns -e '3{s/ /\n/g;/^$/!p;}' "$MODVERDIR"/*.mod | sort -u | while read sym; do if [ -n "$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX" ]; then diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index fd3556b2a5d1..982c52ca6473 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -335,7 +335,7 @@ our $Attribute = qr{ __percpu| __nocast| __safe| - __bitwise__| + __bitwise| __packed__| __packed2__| __naked| @@ -3681,7 +3681,7 @@ sub process { $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ && $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ && $line !~ /\b$typeTypedefs\b/ && - $line !~ /\b__bitwise(?:__|)\b/) { + $line !~ /\b__bitwise\b/) { WARN("NEW_TYPEDEFS", "do not add new typedefs\n" . $herecurr); } diff --git a/scripts/coccinelle/misc/boolconv.cocci b/scripts/coccinelle/misc/boolconv.cocci new file mode 100644 index 000000000000..33c464d6bc71 --- /dev/null +++ b/scripts/coccinelle/misc/boolconv.cocci @@ -0,0 +1,90 @@ +/// Remove unneeded conversion to bool +/// +//# Relational and logical operators evaluate to bool, +//# explicit conversion is overly verbose and unneeded. +// +// Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2. + +virtual patch +virtual context +virtual org +virtual report + +//---------------------------------------------------------- +// For patch mode +//---------------------------------------------------------- + +@depends on patch@ +expression A, B; +symbol true, false; +@@ + +( + A == B +| + A != B +| + A > B +| + A < B +| + A >= B +| + A <= B +| + A && B +| + A || B +) +- ? true : false + +//---------------------------------------------------------- +// For context mode +//---------------------------------------------------------- + +@r depends on !patch@ +expression A, B; +symbol true, false; +position p; +@@ + +( + A == B +| + A != B +| + A > B +| + A < B +| + A >= B +| + A <= B +| + A && B +| + A || B +) +* ? true : false@p + +//---------------------------------------------------------- +// For org mode +//---------------------------------------------------------- + +@script:python depends on r&&org@ +p << r.p; +@@ + +msg = "WARNING: conversion to bool not needed here" +coccilib.org.print_todo(p[0], msg) + +//---------------------------------------------------------- +// For report mode +//---------------------------------------------------------- + +@script:python depends on r&&report@ +p << r.p; +@@ + +msg = "WARNING: conversion to bool not needed here" +coccilib.report.print_report(p[0], msg) diff --git a/scripts/coccinelle/misc/irqf_oneshot.cocci b/scripts/coccinelle/misc/irqf_oneshot.cocci index b421150a2eff..f698d6d0f5d7 100644 --- a/scripts/coccinelle/misc/irqf_oneshot.cocci +++ b/scripts/coccinelle/misc/irqf_oneshot.cocci @@ -5,7 +5,7 @@ /// So pass the IRQF_ONESHOT flag in this case. /// // -// Confidence: Good +// Confidence: Moderate // Comments: // Options: --no-includes @@ -15,16 +15,13 @@ virtual org virtual report @r1@ -expression dev; -expression irq; -expression thread_fn; -expression flags; +expression dev, irq, thread_fn; position p; @@ ( request_threaded_irq@p(irq, NULL, thread_fn, ( -flags | IRQF_ONESHOT +IRQF_ONESHOT | ... | IRQF_ONESHOT ) @@ -32,21 +29,34 @@ IRQF_ONESHOT | devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, ( -flags | IRQF_ONESHOT +IRQF_ONESHOT | ... | IRQF_ONESHOT ) , ...) ) -@depends on patch@ -expression dev; -expression irq; -expression thread_fn; -expression flags; +@r2@ +expression dev, irq, thread_fn, flags, e; position p != r1.p; @@ ( +flags = IRQF_ONESHOT | ... +| +flags |= IRQF_ONESHOT | ... +) +... when != flags = e +( +request_threaded_irq@p(irq, NULL, thread_fn, flags, ...); +| +devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...); +) + +@depends on patch@ +expression dev, irq, thread_fn, flags; +position p != {r1.p,r2.p}; +@@ +( request_threaded_irq@p(irq, NULL, thread_fn, ( -0 @@ -69,15 +79,25 @@ devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, ) @depends on context@ -position p != r1.p; +expression dev, irq; +position p != {r1.p,r2.p}; @@ -*request_threaded_irq@p(...) +( +*request_threaded_irq@p(irq, NULL, ...) +| +*devm_request_threaded_irq@p(dev, irq, NULL, ...) +) + @match depends on report || org@ -expression irq; -position p != r1.p; +expression dev, irq; +position p != {r1.p,r2.p}; @@ +( request_threaded_irq@p(irq, NULL, ...) +| +devm_request_threaded_irq@p(dev, irq, NULL, ...) +) @script:python depends on org@ p << match.p; diff --git a/scripts/gcc-plugins/latent_entropy_plugin.c b/scripts/gcc-plugins/latent_entropy_plugin.c index 8160f1c1b56e..12541126575b 100644 --- a/scripts/gcc-plugins/latent_entropy_plugin.c +++ b/scripts/gcc-plugins/latent_entropy_plugin.c @@ -619,7 +619,7 @@ __visible int plugin_init(struct plugin_name_args *plugin_info, enabled = false; continue; } - error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); } register_callback(plugin_name, PLUGIN_INFO, NULL, diff --git a/scripts/gcc-plugins/sancov_plugin.c b/scripts/gcc-plugins/sancov_plugin.c index 7ea0b3f50739..70f5fe0d590a 100644 --- a/scripts/gcc-plugins/sancov_plugin.c +++ b/scripts/gcc-plugins/sancov_plugin.c @@ -126,7 +126,7 @@ __visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gc enable = false; continue; } - error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); + error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key); } register_callback(plugin_name, PLUGIN_INFO, NULL, &sancov_plugin_info); diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf index a9096d993172..bd4c4b235588 100644 --- a/scripts/genksyms/keywords.gperf +++ b/scripts/genksyms/keywords.gperf @@ -27,6 +27,7 @@ __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 diff --git a/scripts/genksyms/keywords.hash.c_shipped b/scripts/genksyms/keywords.hash.c_shipped index e9452482e198..738018ba7375 100644 --- a/scripts/genksyms/keywords.hash.c_shipped +++ b/scripts/genksyms/keywords.hash.c_shipped @@ -57,7 +57,7 @@ is_reserved_hash (register const char *str, register unsigned int len) 101, 101, 101, 101, 101, 101, 101, 101, 101, 0, 101, 101, 101, 101, 101, 101, 15, 101, 101, 101, 0, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 0, 101, 0, 101, 5, + 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, @@ -89,7 +89,7 @@ is_reserved_word (register const char *str, register unsigned int len) { enum { - TOTAL_KEYWORDS = 46, + TOTAL_KEYWORDS = 47, MIN_WORD_LENGTH = 3, MAX_WORD_LENGTH = 24, MIN_HASH_VALUE = 3, @@ -99,7 +99,7 @@ is_reserved_word (register const char *str, register unsigned int len) static const struct resword wordlist[] = { {""}, {""}, {""}, -#line 35 "scripts/genksyms/keywords.gperf" +#line 36 "scripts/genksyms/keywords.gperf" {"asm", ASM_KEYW}, {""}, #line 15 "scripts/genksyms/keywords.gperf" @@ -119,20 +119,21 @@ is_reserved_word (register const char *str, register unsigned int len) {"__const__", CONST_KEYW}, #line 25 "scripts/genksyms/keywords.gperf" {"__signed__", SIGNED_KEYW}, -#line 53 "scripts/genksyms/keywords.gperf" +#line 54 "scripts/genksyms/keywords.gperf" {"static", STATIC_KEYW}, - {""}, -#line 48 "scripts/genksyms/keywords.gperf" +#line 30 "scripts/genksyms/keywords.gperf" + {"__builtin_va_list", VA_LIST_KEYW}, +#line 49 "scripts/genksyms/keywords.gperf" {"int", INT_KEYW}, -#line 41 "scripts/genksyms/keywords.gperf" - {"char", CHAR_KEYW}, #line 42 "scripts/genksyms/keywords.gperf" + {"char", CHAR_KEYW}, +#line 43 "scripts/genksyms/keywords.gperf" {"const", CONST_KEYW}, -#line 54 "scripts/genksyms/keywords.gperf" +#line 55 "scripts/genksyms/keywords.gperf" {"struct", STRUCT_KEYW}, -#line 33 "scripts/genksyms/keywords.gperf" - {"__restrict__", RESTRICT_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}, @@ -143,7 +144,7 @@ is_reserved_word (register const char *str, register unsigned int len) {"__volatile__", VOLATILE_KEYW}, #line 10 "scripts/genksyms/keywords.gperf" {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, -#line 32 "scripts/genksyms/keywords.gperf" +#line 33 "scripts/genksyms/keywords.gperf" {"_restrict", RESTRICT_KEYW}, {""}, #line 17 "scripts/genksyms/keywords.gperf" @@ -152,64 +153,64 @@ is_reserved_word (register const char *str, register unsigned int len) {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, #line 21 "scripts/genksyms/keywords.gperf" {"__extension__", EXTENSION_KEYW}, -#line 44 "scripts/genksyms/keywords.gperf" +#line 45 "scripts/genksyms/keywords.gperf" {"enum", ENUM_KEYW}, #line 13 "scripts/genksyms/keywords.gperf" {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW}, -#line 45 "scripts/genksyms/keywords.gperf" +#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 57 "scripts/genksyms/keywords.gperf" +#line 58 "scripts/genksyms/keywords.gperf" {"union", UNION_KEYW}, {""}, {""}, #line 22 "scripts/genksyms/keywords.gperf" {"__inline", INLINE_KEYW}, -#line 40 "scripts/genksyms/keywords.gperf" +#line 41 "scripts/genksyms/keywords.gperf" {"auto", AUTO_KEYW}, #line 28 "scripts/genksyms/keywords.gperf" {"__volatile", VOLATILE_KEYW}, {""}, {""}, -#line 58 "scripts/genksyms/keywords.gperf" +#line 59 "scripts/genksyms/keywords.gperf" {"unsigned", UNSIGNED_KEYW}, {""}, -#line 51 "scripts/genksyms/keywords.gperf" +#line 52 "scripts/genksyms/keywords.gperf" {"short", SHORT_KEYW}, -#line 47 "scripts/genksyms/keywords.gperf" +#line 48 "scripts/genksyms/keywords.gperf" {"inline", INLINE_KEYW}, {""}, -#line 60 "scripts/genksyms/keywords.gperf" +#line 61 "scripts/genksyms/keywords.gperf" {"volatile", VOLATILE_KEYW}, -#line 49 "scripts/genksyms/keywords.gperf" +#line 50 "scripts/genksyms/keywords.gperf" {"long", LONG_KEYW}, -#line 31 "scripts/genksyms/keywords.gperf" +#line 32 "scripts/genksyms/keywords.gperf" {"_Bool", BOOL_KEYW}, {""}, {""}, -#line 50 "scripts/genksyms/keywords.gperf" +#line 51 "scripts/genksyms/keywords.gperf" {"register", REGISTER_KEYW}, -#line 59 "scripts/genksyms/keywords.gperf" +#line 60 "scripts/genksyms/keywords.gperf" {"void", VOID_KEYW}, {""}, -#line 43 "scripts/genksyms/keywords.gperf" +#line 44 "scripts/genksyms/keywords.gperf" {"double", DOUBLE_KEYW}, {""}, #line 26 "scripts/genksyms/keywords.gperf" {"__typeof", TYPEOF_KEYW}, {""}, {""}, -#line 52 "scripts/genksyms/keywords.gperf" +#line 53 "scripts/genksyms/keywords.gperf" {"signed", SIGNED_KEYW}, {""}, {""}, {""}, {""}, -#line 56 "scripts/genksyms/keywords.gperf" +#line 57 "scripts/genksyms/keywords.gperf" {"typeof", TYPEOF_KEYW}, -#line 55 "scripts/genksyms/keywords.gperf" +#line 56 "scripts/genksyms/keywords.gperf" {"typedef", TYPEDEF_KEYW}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 46 "scripts/genksyms/keywords.gperf" +#line 47 "scripts/genksyms/keywords.gperf" {"float", FLOAT_KEYW} }; diff --git a/scripts/genksyms/parse.tab.c_shipped b/scripts/genksyms/parse.tab.c_shipped index 99950b5afb0d..69148d30ca3f 100644 --- a/scripts/genksyms/parse.tab.c_shipped +++ b/scripts/genksyms/parse.tab.c_shipped @@ -172,22 +172,23 @@ extern int yydebug; VOID_KEYW = 281, VOLATILE_KEYW = 282, TYPEOF_KEYW = 283, - EXPORT_SYMBOL_KEYW = 284, - ASM_PHRASE = 285, - ATTRIBUTE_PHRASE = 286, - TYPEOF_PHRASE = 287, - BRACE_PHRASE = 288, - BRACKET_PHRASE = 289, - EXPRESSION_PHRASE = 290, - CHAR = 291, - DOTS = 292, - IDENT = 293, - INT = 294, - REAL = 295, - STRING = 296, - TYPE = 297, - OTHER = 298, - FILENAME = 299 + VA_LIST_KEYW = 284, + EXPORT_SYMBOL_KEYW = 285, + ASM_PHRASE = 286, + ATTRIBUTE_PHRASE = 287, + TYPEOF_PHRASE = 288, + BRACE_PHRASE = 289, + BRACKET_PHRASE = 290, + EXPRESSION_PHRASE = 291, + CHAR = 292, + DOTS = 293, + IDENT = 294, + INT = 295, + REAL = 296, + STRING = 297, + TYPE = 298, + OTHER = 299, + FILENAME = 300 }; #endif @@ -439,20 +440,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 515 +#define YYLAST 524 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 54 +#define YYNTOKENS 55 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 49 /* YYNRULES -- Number of rules. */ -#define YYNRULES 133 +#define YYNRULES 134 /* YYNRULES -- Number of states. */ -#define YYNSTATES 188 +#define YYNSTATES 189 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 299 +#define YYMAXUTOK 300 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -464,15 +465,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 48, 49, 50, 2, 47, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 53, 45, - 2, 51, 2, 2, 2, 2, 2, 2, 2, 2, + 49, 50, 51, 2, 48, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 54, 46, + 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 52, 2, 46, 2, 2, 2, 2, + 2, 2, 2, 53, 2, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -489,7 +490,8 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45 }; #if YYDEBUG @@ -502,76 +504,76 @@ static const yytype_uint16 yyprhs[] = 46, 50, 55, 56, 58, 60, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 86, 88, 91, 94, 97, 101, 105, 109, 112, 115, 118, 120, 122, 124, - 126, 128, 130, 132, 134, 136, 138, 140, 143, 144, - 146, 148, 151, 153, 155, 157, 159, 162, 164, 166, - 168, 173, 178, 181, 185, 189, 192, 194, 196, 198, - 203, 208, 211, 215, 219, 222, 224, 228, 229, 231, - 233, 237, 240, 243, 245, 246, 248, 250, 255, 260, - 263, 267, 271, 275, 276, 278, 281, 285, 289, 290, - 292, 294, 297, 301, 304, 305, 307, 309, 313, 316, - 319, 321, 324, 325, 328, 332, 337, 339, 343, 345, - 349, 352, 353, 355 + 126, 128, 130, 132, 134, 136, 138, 140, 142, 145, + 146, 148, 150, 153, 155, 157, 159, 161, 164, 166, + 168, 170, 175, 180, 183, 187, 191, 194, 196, 198, + 200, 205, 210, 213, 217, 221, 224, 226, 230, 231, + 233, 235, 239, 242, 245, 247, 248, 250, 252, 257, + 262, 265, 269, 273, 277, 278, 280, 283, 287, 291, + 292, 294, 296, 299, 303, 306, 307, 309, 311, 315, + 318, 321, 323, 326, 327, 330, 334, 339, 341, 345, + 347, 351, 354, 355, 357 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 55, 0, -1, 56, -1, 55, 56, -1, -1, 57, - 58, -1, -1, 12, 23, 59, 61, -1, -1, 23, - 60, 61, -1, 61, -1, 85, -1, 100, -1, 102, - -1, 1, 45, -1, 1, 46, -1, 65, 62, 45, - -1, -1, 63, -1, 64, -1, 63, 47, 64, -1, - 75, 101, 96, 86, -1, -1, 66, -1, 67, -1, - 66, 67, -1, 68, -1, 69, -1, 5, -1, 17, - -1, 21, -1, 11, -1, 14, -1, 70, -1, 74, - -1, 28, 48, 82, 49, -1, 32, -1, 22, 38, - -1, 24, 38, -1, 10, 38, -1, 22, 38, 88, - -1, 24, 38, 88, -1, 10, 38, 97, -1, 10, - 97, -1, 22, 88, -1, 24, 88, -1, 7, -1, + 56, 0, -1, 57, -1, 56, 57, -1, -1, 58, + 59, -1, -1, 12, 23, 60, 62, -1, -1, 23, + 61, 62, -1, 62, -1, 86, -1, 101, -1, 103, + -1, 1, 46, -1, 1, 47, -1, 66, 63, 46, + -1, -1, 64, -1, 65, -1, 64, 48, 65, -1, + 76, 102, 97, 87, -1, -1, 67, -1, 68, -1, + 67, 68, -1, 69, -1, 70, -1, 5, -1, 17, + -1, 21, -1, 11, -1, 14, -1, 71, -1, 75, + -1, 28, 49, 83, 50, -1, 33, -1, 22, 39, + -1, 24, 39, -1, 10, 39, -1, 22, 39, 89, + -1, 24, 39, 89, -1, 10, 39, 98, -1, 10, + 98, -1, 22, 89, -1, 24, 89, -1, 7, -1, 19, -1, 15, -1, 16, -1, 20, -1, 25, -1, - 13, -1, 9, -1, 26, -1, 6, -1, 42, -1, - 50, 72, -1, -1, 73, -1, 74, -1, 73, 74, - -1, 8, -1, 27, -1, 31, -1, 18, -1, 71, - 75, -1, 76, -1, 38, -1, 42, -1, 76, 48, - 79, 49, -1, 76, 48, 1, 49, -1, 76, 34, - -1, 48, 75, 49, -1, 48, 1, 49, -1, 71, - 77, -1, 78, -1, 38, -1, 42, -1, 78, 48, - 79, 49, -1, 78, 48, 1, 49, -1, 78, 34, - -1, 48, 77, 49, -1, 48, 1, 49, -1, 80, - 37, -1, 80, -1, 81, 47, 37, -1, -1, 81, - -1, 82, -1, 81, 47, 82, -1, 66, 83, -1, - 71, 83, -1, 84, -1, -1, 38, -1, 42, -1, - 84, 48, 79, 49, -1, 84, 48, 1, 49, -1, - 84, 34, -1, 48, 83, 49, -1, 48, 1, 49, - -1, 65, 75, 33, -1, -1, 87, -1, 51, 35, - -1, 52, 89, 46, -1, 52, 1, 46, -1, -1, - 90, -1, 91, -1, 90, 91, -1, 65, 92, 45, - -1, 1, 45, -1, -1, 93, -1, 94, -1, 93, - 47, 94, -1, 77, 96, -1, 38, 95, -1, 95, - -1, 53, 35, -1, -1, 96, 31, -1, 52, 98, - 46, -1, 52, 98, 47, 46, -1, 99, -1, 98, - 47, 99, -1, 38, -1, 38, 51, 35, -1, 30, - 45, -1, -1, 30, -1, 29, 48, 38, 49, 45, - -1 + 13, -1, 9, -1, 26, -1, 6, -1, 29, -1, + 43, -1, 51, 73, -1, -1, 74, -1, 75, -1, + 74, 75, -1, 8, -1, 27, -1, 32, -1, 18, + -1, 72, 76, -1, 77, -1, 39, -1, 43, -1, + 77, 49, 80, 50, -1, 77, 49, 1, 50, -1, + 77, 35, -1, 49, 76, 50, -1, 49, 1, 50, + -1, 72, 78, -1, 79, -1, 39, -1, 43, -1, + 79, 49, 80, 50, -1, 79, 49, 1, 50, -1, + 79, 35, -1, 49, 78, 50, -1, 49, 1, 50, + -1, 81, 38, -1, 81, -1, 82, 48, 38, -1, + -1, 82, -1, 83, -1, 82, 48, 83, -1, 67, + 84, -1, 72, 84, -1, 85, -1, -1, 39, -1, + 43, -1, 85, 49, 80, 50, -1, 85, 49, 1, + 50, -1, 85, 35, -1, 49, 84, 50, -1, 49, + 1, 50, -1, 66, 76, 34, -1, -1, 88, -1, + 52, 36, -1, 53, 90, 47, -1, 53, 1, 47, + -1, -1, 91, -1, 92, -1, 91, 92, -1, 66, + 93, 46, -1, 1, 46, -1, -1, 94, -1, 95, + -1, 94, 48, 95, -1, 78, 97, -1, 39, 96, + -1, 96, -1, 54, 36, -1, -1, 97, 32, -1, + 53, 99, 47, -1, 53, 99, 48, 47, -1, 100, + -1, 99, 48, 100, -1, 39, -1, 39, 52, 36, + -1, 31, 46, -1, -1, 31, -1, 30, 49, 39, + 50, 46, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 124, 124, 125, 129, 129, 135, 135, 137, 137, - 139, 140, 141, 142, 143, 144, 148, 162, 163, 167, - 175, 188, 194, 195, 199, 200, 204, 210, 214, 215, - 216, 217, 218, 222, 223, 224, 225, 229, 231, 233, - 237, 239, 241, 246, 249, 250, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 268, 273, 274, - 278, 279, 283, 283, 283, 284, 292, 293, 297, 306, - 315, 317, 319, 321, 323, 330, 331, 335, 336, 337, - 339, 341, 343, 345, 350, 351, 352, 356, 357, 361, - 362, 367, 372, 374, 378, 379, 387, 391, 393, 395, - 397, 399, 404, 413, 414, 419, 424, 425, 429, 430, - 434, 435, 439, 441, 446, 447, 451, 452, 456, 457, - 458, 462, 466, 467, 471, 472, 476, 477, 480, 485, - 493, 497, 498, 502 + 0, 125, 125, 126, 130, 130, 136, 136, 138, 138, + 140, 141, 142, 143, 144, 145, 149, 163, 164, 168, + 176, 189, 195, 196, 200, 201, 205, 211, 215, 216, + 217, 218, 219, 223, 224, 225, 226, 230, 232, 234, + 238, 240, 242, 247, 250, 251, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 270, 275, + 276, 280, 281, 285, 285, 285, 286, 294, 295, 299, + 308, 317, 319, 321, 323, 325, 332, 333, 337, 338, + 339, 341, 343, 345, 347, 352, 353, 354, 358, 359, + 363, 364, 369, 374, 376, 380, 381, 389, 393, 395, + 397, 399, 401, 406, 415, 416, 421, 426, 427, 431, + 432, 436, 437, 441, 443, 448, 449, 453, 454, 458, + 459, 460, 464, 468, 469, 473, 474, 478, 479, 482, + 487, 495, 499, 500, 504 }; #endif @@ -586,12 +588,12 @@ static const char *const yytname[] = "INLINE_KEYW", "INT_KEYW", "LONG_KEYW", "REGISTER_KEYW", "RESTRICT_KEYW", "SHORT_KEYW", "SIGNED_KEYW", "STATIC_KEYW", "STRUCT_KEYW", "TYPEDEF_KEYW", "UNION_KEYW", "UNSIGNED_KEYW", "VOID_KEYW", - "VOLATILE_KEYW", "TYPEOF_KEYW", "EXPORT_SYMBOL_KEYW", "ASM_PHRASE", - "ATTRIBUTE_PHRASE", "TYPEOF_PHRASE", "BRACE_PHRASE", "BRACKET_PHRASE", - "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", "REAL", "STRING", - "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", "'('", "')'", "'*'", - "'='", "'{'", "':'", "$accept", "declaration_seq", "declaration", "$@1", - "declaration1", "$@2", "$@3", "simple_declaration", + "VOLATILE_KEYW", "TYPEOF_KEYW", "VA_LIST_KEYW", "EXPORT_SYMBOL_KEYW", + "ASM_PHRASE", "ATTRIBUTE_PHRASE", "TYPEOF_PHRASE", "BRACE_PHRASE", + "BRACKET_PHRASE", "EXPRESSION_PHRASE", "CHAR", "DOTS", "IDENT", "INT", + "REAL", "STRING", "TYPE", "OTHER", "FILENAME", "';'", "'}'", "','", + "'('", "')'", "'*'", "'='", "'{'", "':'", "$accept", "declaration_seq", + "declaration", "$@1", "declaration1", "$@2", "$@3", "simple_declaration", "init_declarator_list_opt", "init_declarator_list", "init_declarator", "decl_specifier_seq_opt", "decl_specifier_seq", "decl_specifier", "storage_class_specifier", "type_specifier", "simple_type_specifier", @@ -619,28 +621,28 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 59, 125, 44, 40, 41, - 42, 61, 123, 58 + 295, 296, 297, 298, 299, 300, 59, 125, 44, 40, + 41, 42, 61, 123, 58 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 54, 55, 55, 57, 56, 59, 58, 60, 58, - 58, 58, 58, 58, 58, 58, 61, 62, 62, 63, - 63, 64, 65, 65, 66, 66, 67, 67, 68, 68, - 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 71, 72, 72, - 73, 73, 74, 74, 74, 74, 75, 75, 76, 76, - 76, 76, 76, 76, 76, 77, 77, 78, 78, 78, - 78, 78, 78, 78, 79, 79, 79, 80, 80, 81, - 81, 82, 83, 83, 84, 84, 84, 84, 84, 84, - 84, 84, 85, 86, 86, 87, 88, 88, 89, 89, - 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, - 94, 95, 96, 96, 97, 97, 98, 98, 99, 99, - 100, 101, 101, 102 + 0, 55, 56, 56, 58, 57, 60, 59, 61, 59, + 59, 59, 59, 59, 59, 59, 62, 63, 63, 64, + 64, 65, 66, 66, 67, 67, 68, 68, 69, 69, + 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 72, 73, + 73, 74, 74, 75, 75, 75, 75, 76, 76, 77, + 77, 77, 77, 77, 77, 77, 78, 78, 79, 79, + 79, 79, 79, 79, 79, 80, 80, 80, 81, 81, + 82, 82, 83, 84, 84, 85, 85, 85, 85, 85, + 85, 85, 85, 86, 87, 87, 88, 89, 89, 90, + 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, + 95, 95, 96, 97, 97, 98, 98, 99, 99, 100, + 100, 101, 102, 102, 103 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -651,15 +653,15 @@ static const yytype_uint8 yyr2[] = 3, 4, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, - 4, 4, 2, 3, 3, 2, 1, 1, 1, 4, - 4, 2, 3, 3, 2, 1, 3, 0, 1, 1, - 3, 2, 2, 1, 0, 1, 1, 4, 4, 2, - 3, 3, 3, 0, 1, 2, 3, 3, 0, 1, - 1, 2, 3, 2, 0, 1, 1, 3, 2, 2, - 1, 2, 0, 2, 3, 4, 1, 3, 1, 3, - 2, 0, 1, 5 + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, + 1, 4, 4, 2, 3, 3, 2, 1, 1, 1, + 4, 4, 2, 3, 3, 2, 1, 3, 0, 1, + 1, 3, 2, 2, 1, 0, 1, 1, 4, 4, + 2, 3, 3, 3, 0, 1, 2, 3, 3, 0, + 1, 1, 2, 3, 2, 0, 1, 1, 3, 2, + 2, 1, 2, 0, 2, 3, 4, 1, 3, 1, + 3, 2, 0, 1, 5 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -668,217 +670,219 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 4, 4, 2, 0, 1, 3, 0, 28, 55, 46, - 62, 53, 0, 31, 0, 52, 32, 48, 49, 29, - 65, 47, 50, 30, 0, 8, 0, 51, 54, 63, - 0, 0, 0, 64, 36, 56, 5, 10, 17, 23, - 24, 26, 27, 33, 34, 11, 12, 13, 14, 15, - 39, 0, 43, 6, 37, 0, 44, 22, 38, 45, - 0, 0, 130, 68, 69, 0, 58, 0, 18, 19, - 0, 131, 67, 25, 42, 128, 0, 126, 22, 40, - 0, 114, 0, 0, 110, 9, 17, 41, 94, 0, - 0, 0, 0, 57, 59, 60, 16, 0, 66, 132, - 102, 122, 72, 0, 0, 124, 0, 7, 113, 107, - 77, 78, 0, 0, 0, 122, 76, 0, 115, 116, - 120, 106, 0, 111, 131, 95, 56, 0, 94, 91, - 93, 35, 0, 74, 73, 61, 20, 103, 0, 0, - 85, 88, 89, 129, 125, 127, 119, 0, 77, 0, - 121, 75, 118, 81, 0, 112, 0, 0, 96, 0, - 92, 99, 0, 133, 123, 0, 21, 104, 71, 70, - 84, 0, 83, 82, 0, 0, 117, 101, 100, 0, - 0, 105, 86, 90, 80, 79, 98, 97 + 63, 53, 0, 31, 0, 52, 32, 48, 49, 29, + 66, 47, 50, 30, 0, 8, 0, 51, 54, 64, + 0, 56, 0, 0, 65, 36, 57, 5, 10, 17, + 23, 24, 26, 27, 33, 34, 11, 12, 13, 14, + 15, 39, 0, 43, 6, 37, 0, 44, 22, 38, + 45, 0, 0, 131, 69, 70, 0, 59, 0, 18, + 19, 0, 132, 68, 25, 42, 129, 0, 127, 22, + 40, 0, 115, 0, 0, 111, 9, 17, 41, 95, + 0, 0, 0, 0, 58, 60, 61, 16, 0, 67, + 133, 103, 123, 73, 0, 0, 125, 0, 7, 114, + 108, 78, 79, 0, 0, 0, 123, 77, 0, 116, + 117, 121, 107, 0, 112, 132, 96, 57, 0, 95, + 92, 94, 35, 0, 75, 74, 62, 20, 104, 0, + 0, 86, 89, 90, 130, 126, 128, 120, 0, 78, + 0, 122, 76, 119, 82, 0, 113, 0, 0, 97, + 0, 93, 100, 0, 134, 124, 0, 21, 105, 72, + 71, 85, 0, 84, 83, 0, 0, 118, 102, 101, + 0, 0, 106, 87, 91, 81, 80, 99, 98 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 3, 36, 78, 57, 37, 67, 68, - 69, 81, 39, 40, 41, 42, 43, 70, 93, 94, - 44, 124, 72, 115, 116, 139, 140, 141, 142, 129, - 130, 45, 166, 167, 56, 82, 83, 84, 117, 118, - 119, 120, 137, 52, 76, 77, 46, 101, 47 + -1, 1, 2, 3, 37, 79, 58, 38, 68, 69, + 70, 82, 40, 41, 42, 43, 44, 71, 94, 95, + 45, 125, 73, 116, 117, 140, 141, 142, 143, 130, + 131, 46, 167, 168, 57, 83, 84, 85, 118, 119, + 120, 121, 138, 53, 77, 78, 47, 102, 48 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -92 +#define YYPACT_NINF -111 static const yytype_int16 yypact[] = { - -92, 19, -92, 208, -92, -92, 39, -92, -92, -92, - -92, -92, -27, -92, 23, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -22, -92, 9, -92, -92, -92, - -6, 16, 25, -92, -92, -92, -92, -92, 31, 473, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - 49, 37, -92, -92, 51, 108, -92, 473, 51, -92, - 473, 59, -92, -92, -92, 12, -3, 60, 57, -92, - 31, -7, 24, -92, -92, 55, 42, -92, 473, -92, - 46, -21, 61, 158, -92, -92, 31, -92, 389, 71, - 82, 88, 89, -92, -3, -92, -92, 31, -92, -92, - -92, -92, -92, 254, 73, -92, -24, -92, -92, -92, - 90, -92, 17, 75, 45, -92, 32, 96, 95, -92, - -92, -92, 99, -92, 115, -92, -92, 3, 48, -92, - 34, -92, 102, -92, -92, -92, -92, -11, 100, 103, - 111, 104, -92, -92, -92, -92, -92, 106, -92, 113, - -92, -92, 126, -92, 299, -92, -21, 121, -92, 132, - -92, -92, 344, -92, -92, 125, -92, -92, -92, -92, - -92, 435, -92, -92, 138, 139, -92, -92, -92, 142, - 143, -92, -92, -92, -92, -92, -92, -92 + -111, 13, -111, 210, -111, -111, 28, -111, -111, -111, + -111, -111, -27, -111, 44, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -24, -111, -20, -111, -111, -111, + 31, -111, 32, 42, -111, -111, -111, -111, -111, 34, + 481, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, 51, 56, -111, -111, 52, 108, -111, 481, 52, + -111, 481, 58, -111, -111, -111, 19, 0, 54, 55, + -111, 34, 30, -18, -111, -111, 68, -25, -111, 481, + -111, 45, 33, 59, 159, -111, -111, 34, -111, 395, + 57, 60, 81, 88, -111, 0, -111, -111, 34, -111, + -111, -111, -111, -111, 257, 72, -111, -23, -111, -111, + -111, 85, -111, 20, 106, 47, -111, -10, 97, 96, + -111, -111, -111, 99, -111, 115, -111, -111, 5, 50, + -111, 11, -111, 102, -111, -111, -111, -111, -22, 100, + 103, 111, 104, -111, -111, -111, -111, -111, 113, -111, + 121, -111, -111, 124, -111, 303, -111, 33, 132, -111, + 139, -111, -111, 349, -111, -111, 122, -111, -111, -111, + -111, -111, 442, -111, -111, 140, 143, -111, -111, -111, + 144, 145, -111, -111, -111, -111, -111, -111, -111 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -92, -92, 192, -92, -92, -92, -92, -47, -92, -92, - 97, 0, -60, -32, -92, -92, -92, -79, -92, -92, - -58, -26, -92, -38, -92, -91, -92, -92, -59, -28, - -92, -92, -92, -92, -20, -92, -92, 112, -92, -92, - 41, 91, 83, 149, -92, 101, -92, -92, -92 + -111, -111, 160, -111, -111, -111, -111, -51, -111, -111, + 98, -1, -61, -37, -111, -111, -111, -78, -111, -111, + -53, -30, -111, -66, -111, -110, -111, -111, -60, -63, + -111, -111, -111, -111, -21, -111, -111, 116, -111, -111, + 40, 90, 83, 152, -111, 105, -111, -111, -111 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -110 +#define YYTABLE_NINF -111 static const yytype_int16 yytable[] = { - 88, 89, 114, 38, 157, 10, 59, 73, 95, 128, - 85, 50, 71, 91, 75, 20, 54, 110, 147, 4, - 164, 111, 144, 99, 29, 51, 100, 112, 33, 66, - 55, 107, 113, 114, 79, 114, 135, -94, 87, 92, - 165, 125, 60, 88, 98, 158, 53, 58, 128, 128, - 63, 127, -94, 66, 64, 148, 73, 86, 102, 111, - 65, 55, 66, 175, 61, 112, 153, 66, 161, 63, - 62, 180, 103, 64, 149, 75, 151, 114, 86, 65, - 154, 66, 162, 148, 48, 49, 125, 111, 105, 106, - 158, 108, 109, 112, 88, 66, 127, 90, 66, 159, - 160, 51, 88, 55, 97, 96, 104, 121, 143, 80, - 150, 88, 183, 7, 8, 9, 10, 11, 12, 13, - 131, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 132, 26, 27, 28, 29, 30, 133, 134, 33, - 34, 155, 156, 113, 108, 99, -22, 163, 170, 168, - 35, 171, 169, -22, -108, 172, -22, 164, -22, 122, - 181, -22, 173, 7, 8, 9, 10, 11, 12, 13, - 177, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 178, 26, 27, 28, 29, 30, 184, 185, 33, - 34, 186, 187, 5, 136, 123, -22, 176, 152, 74, - 35, 146, 0, -22, -109, 0, -22, 145, -22, 6, - 0, -22, 0, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 0, 0, 0, 0, 0, -22, 0, 0, 0, - 35, 0, 0, -22, 0, 138, -22, 0, -22, 7, - 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 0, 26, 27, - 28, 29, 30, 0, 0, 33, 34, 0, 0, 0, - 0, -87, 0, 0, 0, 0, 35, 0, 0, 0, - 174, 0, 0, -87, 7, 8, 9, 10, 11, 12, - 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 0, 26, 27, 28, 29, 30, 0, 0, - 33, 34, 0, 0, 0, 0, -87, 0, 0, 0, - 0, 35, 0, 0, 0, 179, 0, 0, -87, 7, - 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 0, 26, 27, - 28, 29, 30, 0, 0, 33, 34, 0, 0, 0, - 0, -87, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, -87, 7, 8, 9, 10, 11, 12, + 89, 90, 39, 74, 115, 60, 158, 86, 10, 72, + 165, 129, 51, 4, 96, 55, 76, 103, 20, 59, + 92, 148, 106, 107, 145, 154, 52, 29, 108, 56, + 166, 104, 34, 56, 80, 115, 93, 115, 88, 155, + -95, 99, 136, 89, 126, 176, 162, 150, 159, 152, + 129, 129, 74, 181, 128, -95, 67, 87, 64, 149, + 163, 100, 65, 112, 101, 160, 161, 54, 66, 113, + 67, 67, 111, 64, 49, 50, 112, 65, 87, 115, + 61, 62, 113, 66, 67, 67, 149, 114, 63, 126, + 112, 109, 110, 159, 89, 76, 113, 91, 67, 128, + 97, 67, 89, 98, 52, 56, 122, 132, 144, 81, + 133, 89, 184, 7, 8, 9, 10, 11, 12, 13, + 105, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 134, 26, 27, 28, 29, 30, 31, 135, 114, + 34, 35, 151, 156, 157, 109, 100, -22, 164, 171, + 169, 36, 172, 170, -22, -109, 165, -22, 182, -22, + 123, 5, -22, 173, 7, 8, 9, 10, 11, 12, + 13, 174, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 178, 26, 27, 28, 29, 30, 31, 179, + 185, 34, 35, 186, 187, 188, 137, 177, -22, 153, + 124, 147, 36, 75, 0, -22, -110, 0, -22, 0, + -22, 6, 146, -22, 0, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 0, 0, 0, 0, 0, -22, + 0, 0, 0, 36, 0, 0, -22, 0, 139, -22, + 0, -22, 7, 8, 9, 10, 11, 12, 13, 0, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 26, 27, 28, 29, 30, 31, 0, 0, 34, + 35, 0, 0, 0, 0, -88, 0, 0, 0, 0, + 36, 0, 0, 0, 175, 0, 0, -88, 7, 8, + 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 26, 27, 28, + 29, 30, 31, 0, 0, 34, 35, 0, 0, 0, + 0, -88, 0, 0, 0, 0, 36, 0, 0, 0, + 180, 0, 0, -88, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 0, 26, 27, 28, 29, 30, 0, 0, - 33, 34, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 126, 0, 0, 0, 0, 0, 127, 0, 66, + 23, 24, 0, 26, 27, 28, 29, 30, 31, 0, + 0, 34, 35, 0, 0, 0, 0, -88, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, -88, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 26, - 27, 28, 29, 30, 0, 0, 33, 34, 0, 0, - 0, 0, 182, 0, 0, 0, 0, 35, 7, 8, - 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 0, 26, 27, 28, - 29, 30, 0, 0, 33, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35 + 27, 28, 29, 30, 31, 0, 0, 34, 35, 0, + 0, 0, 0, 0, 126, 0, 0, 0, 127, 0, + 0, 0, 0, 0, 128, 0, 67, 7, 8, 9, + 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 0, 26, 27, 28, 29, + 30, 31, 0, 0, 34, 35, 0, 0, 0, 0, + 183, 0, 0, 0, 0, 36, 7, 8, 9, 10, + 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 0, 26, 27, 28, 29, 30, + 31, 0, 0, 34, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36 }; #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-92))) + (!!((Yystate) == (-111))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 60, 60, 81, 3, 1, 8, 26, 39, 66, 88, - 57, 38, 38, 1, 38, 18, 38, 38, 1, 0, - 31, 42, 46, 30, 27, 52, 33, 48, 31, 50, - 52, 78, 53, 112, 54, 114, 94, 34, 58, 65, - 51, 38, 48, 103, 70, 42, 23, 38, 127, 128, - 38, 48, 49, 50, 42, 38, 88, 57, 34, 42, - 48, 52, 50, 154, 48, 48, 34, 50, 34, 38, - 45, 162, 48, 42, 112, 38, 114, 156, 78, 48, - 48, 50, 48, 38, 45, 46, 38, 42, 46, 47, - 42, 45, 46, 48, 154, 50, 48, 38, 50, 127, - 128, 52, 162, 52, 47, 45, 51, 46, 35, 1, - 35, 171, 171, 5, 6, 7, 8, 9, 10, 11, - 49, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 49, 24, 25, 26, 27, 28, 49, 49, 31, - 32, 45, 47, 53, 45, 30, 38, 45, 37, 49, - 42, 47, 49, 45, 46, 49, 48, 31, 50, 1, - 35, 53, 49, 5, 6, 7, 8, 9, 10, 11, - 49, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 49, 24, 25, 26, 27, 28, 49, 49, 31, - 32, 49, 49, 1, 97, 83, 38, 156, 115, 50, - 42, 110, -1, 45, 46, -1, 48, 106, 50, 1, - -1, 53, -1, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, -1, 1, 48, -1, 50, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, -1, 24, 25, - 26, 27, 28, -1, -1, 31, 32, -1, -1, -1, - -1, 37, -1, -1, -1, -1, 42, -1, -1, -1, - 1, -1, -1, 49, 5, 6, 7, 8, 9, 10, - 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, -1, 24, 25, 26, 27, 28, -1, -1, - 31, 32, -1, -1, -1, -1, 37, -1, -1, -1, - -1, 42, -1, -1, -1, 1, -1, -1, 49, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, -1, 24, 25, - 26, 27, 28, -1, -1, 31, 32, -1, -1, -1, - -1, 37, -1, -1, -1, -1, 42, -1, -1, -1, - -1, -1, -1, 49, 5, 6, 7, 8, 9, 10, + 61, 61, 3, 40, 82, 26, 1, 58, 8, 39, + 32, 89, 39, 0, 67, 39, 39, 35, 18, 39, + 1, 1, 47, 48, 47, 35, 53, 27, 79, 53, + 52, 49, 32, 53, 55, 113, 66, 115, 59, 49, + 35, 71, 95, 104, 39, 155, 35, 113, 43, 115, + 128, 129, 89, 163, 49, 50, 51, 58, 39, 39, + 49, 31, 43, 43, 34, 128, 129, 23, 49, 49, + 51, 51, 39, 39, 46, 47, 43, 43, 79, 157, + 49, 49, 49, 49, 51, 51, 39, 54, 46, 39, + 43, 46, 47, 43, 155, 39, 49, 39, 51, 49, + 46, 51, 163, 48, 53, 53, 47, 50, 36, 1, + 50, 172, 172, 5, 6, 7, 8, 9, 10, 11, + 52, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 50, 24, 25, 26, 27, 28, 29, 50, 54, + 32, 33, 36, 46, 48, 46, 31, 39, 46, 38, + 50, 43, 48, 50, 46, 47, 32, 49, 36, 51, + 1, 1, 54, 50, 5, 6, 7, 8, 9, 10, + 11, 50, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 50, 24, 25, 26, 27, 28, 29, 50, + 50, 32, 33, 50, 50, 50, 98, 157, 39, 116, + 84, 111, 43, 51, -1, 46, 47, -1, 49, -1, + 51, 1, 107, 54, -1, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, -1, -1, -1, -1, -1, 39, + -1, -1, -1, 43, -1, -1, 46, -1, 1, 49, + -1, 51, 5, 6, 7, 8, 9, 10, 11, -1, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + -1, 24, 25, 26, 27, 28, 29, -1, -1, 32, + 33, -1, -1, -1, -1, 38, -1, -1, -1, -1, + 43, -1, -1, -1, 1, -1, -1, 50, 5, 6, + 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, -1, 24, 25, 26, + 27, 28, 29, -1, -1, 32, 33, -1, -1, -1, + -1, 38, -1, -1, -1, -1, 43, -1, -1, -1, + 1, -1, -1, 50, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, -1, 24, 25, 26, 27, 28, -1, -1, - 31, 32, -1, -1, -1, -1, -1, 38, -1, -1, - -1, 42, -1, -1, -1, -1, -1, 48, -1, 50, + 21, 22, -1, 24, 25, 26, 27, 28, 29, -1, + -1, 32, 33, -1, -1, -1, -1, 38, -1, -1, + -1, -1, 43, -1, -1, -1, -1, -1, -1, 50, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, 24, - 25, 26, 27, 28, -1, -1, 31, 32, -1, -1, - -1, -1, 37, -1, -1, -1, -1, 42, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, -1, -1, 31, 32, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 42 + 25, 26, 27, 28, 29, -1, -1, 32, 33, -1, + -1, -1, -1, -1, 39, -1, -1, -1, 43, -1, + -1, -1, -1, -1, 49, -1, 51, 5, 6, 7, + 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, -1, -1, 32, 33, -1, -1, -1, -1, + 38, -1, -1, -1, -1, 43, 5, 6, 7, 8, + 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, + 29, -1, -1, 32, 33, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 43 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 55, 56, 57, 0, 56, 1, 5, 6, 7, + 0, 56, 57, 58, 0, 57, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 42, 58, 61, 65, 66, - 67, 68, 69, 70, 74, 85, 100, 102, 45, 46, - 38, 52, 97, 23, 38, 52, 88, 60, 38, 88, - 48, 48, 45, 38, 42, 48, 50, 62, 63, 64, - 71, 75, 76, 67, 97, 38, 98, 99, 59, 88, - 1, 65, 89, 90, 91, 61, 65, 88, 66, 82, - 38, 1, 75, 72, 73, 74, 45, 47, 75, 30, - 33, 101, 34, 48, 51, 46, 47, 61, 45, 46, - 38, 42, 48, 53, 71, 77, 78, 92, 93, 94, - 95, 46, 1, 91, 75, 38, 42, 48, 71, 83, - 84, 49, 49, 49, 49, 74, 64, 96, 1, 79, - 80, 81, 82, 35, 46, 99, 95, 1, 38, 77, - 35, 77, 96, 34, 48, 45, 47, 1, 42, 83, - 83, 34, 48, 45, 31, 51, 86, 87, 49, 49, - 37, 47, 49, 49, 1, 79, 94, 49, 49, 1, - 79, 35, 37, 82, 49, 49, 49, 49 + 28, 29, 30, 31, 32, 33, 43, 59, 62, 66, + 67, 68, 69, 70, 71, 75, 86, 101, 103, 46, + 47, 39, 53, 98, 23, 39, 53, 89, 61, 39, + 89, 49, 49, 46, 39, 43, 49, 51, 63, 64, + 65, 72, 76, 77, 68, 98, 39, 99, 100, 60, + 89, 1, 66, 90, 91, 92, 62, 66, 89, 67, + 83, 39, 1, 76, 73, 74, 75, 46, 48, 76, + 31, 34, 102, 35, 49, 52, 47, 48, 62, 46, + 47, 39, 43, 49, 54, 72, 78, 79, 93, 94, + 95, 96, 47, 1, 92, 76, 39, 43, 49, 72, + 84, 85, 50, 50, 50, 50, 75, 65, 97, 1, + 80, 81, 82, 83, 36, 47, 100, 96, 1, 39, + 78, 36, 78, 97, 35, 49, 46, 48, 1, 43, + 84, 84, 35, 49, 46, 32, 52, 87, 88, 50, + 50, 38, 48, 50, 50, 1, 80, 95, 50, 50, + 1, 80, 36, 38, 83, 50, 50, 50, 50 }; #define yyerrok (yyerrstatus = 0) @@ -1845,27 +1849,27 @@ yyreduce: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 56: + case 57: { (*(yyvsp[(1) - (1)]))->tag = SYM_TYPEDEF; (yyval) = (yyvsp[(1) - (1)]); } break; - case 57: + case 58: { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); } break; - case 58: + case 59: { (yyval) = NULL; } break; - case 61: + case 62: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 65: + case 66: { /* restrict has no effect in prototypes so ignore it */ remove_node((yyvsp[(1) - (1)])); @@ -1873,12 +1877,12 @@ yyreduce: } break; - case 66: + case 67: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 68: + case 69: { if (current_name != NULL) { error_with_pos("unexpected second declaration name"); @@ -1890,7 +1894,7 @@ yyreduce: } break; - case 69: + case 70: { if (current_name != NULL) { error_with_pos("unexpected second declaration name"); @@ -1902,11 +1906,6 @@ yyreduce: } break; - case 70: - - { (yyval) = (yyvsp[(4) - (4)]); } - break; - case 71: { (yyval) = (yyvsp[(4) - (4)]); } @@ -1914,12 +1913,12 @@ yyreduce: case 72: - { (yyval) = (yyvsp[(2) - (2)]); } + { (yyval) = (yyvsp[(4) - (4)]); } break; case 73: - { (yyval) = (yyvsp[(3) - (3)]); } + { (yyval) = (yyvsp[(2) - (2)]); } break; case 74: @@ -1929,12 +1928,12 @@ yyreduce: case 75: - { (yyval) = (yyvsp[(2) - (2)]); } + { (yyval) = (yyvsp[(3) - (3)]); } break; - case 79: + case 76: - { (yyval) = (yyvsp[(4) - (4)]); } + { (yyval) = (yyvsp[(2) - (2)]); } break; case 80: @@ -1944,12 +1943,12 @@ yyreduce: case 81: - { (yyval) = (yyvsp[(2) - (2)]); } + { (yyval) = (yyvsp[(4) - (4)]); } break; case 82: - { (yyval) = (yyvsp[(3) - (3)]); } + { (yyval) = (yyvsp[(2) - (2)]); } break; case 83: @@ -1959,40 +1958,45 @@ yyreduce: case 84: + { (yyval) = (yyvsp[(3) - (3)]); } + break; + + case 85: + { (yyval) = (yyvsp[(2) - (2)]); } break; - case 86: + case 87: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 87: + case 88: { (yyval) = NULL; } break; - case 90: + case 91: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 91: + case 92: { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); } break; - case 92: + case 93: { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); } break; - case 94: + case 95: { (yyval) = NULL; } break; - case 95: + case 96: { /* For version 2 checksums, we don't want to remember private parameter names. */ @@ -2001,39 +2005,39 @@ yyreduce: } break; - case 96: + case 97: { remove_node((yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); } break; - case 97: + case 98: { (yyval) = (yyvsp[(4) - (4)]); } break; - case 98: + case 99: { (yyval) = (yyvsp[(4) - (4)]); } break; - case 99: + case 100: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 100: + case 101: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 101: + case 102: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 102: + case 103: { struct string_list *decl = *(yyvsp[(2) - (3)]); *(yyvsp[(2) - (3)]) = NULL; @@ -2042,87 +2046,87 @@ yyreduce: } break; - case 103: + case 104: { (yyval) = NULL; } break; - case 105: + case 106: { remove_list((yyvsp[(2) - (2)]), &(*(yyvsp[(1) - (2)]))->next); (yyval) = (yyvsp[(2) - (2)]); } break; - case 106: + case 107: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 107: + case 108: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 108: + case 109: { (yyval) = NULL; } break; - case 111: + case 112: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 112: + case 113: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 113: + case 114: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 114: + case 115: { (yyval) = NULL; } break; - case 117: + case 118: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 118: + case 119: { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); } break; - case 119: + case 120: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 121: + case 122: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 122: + case 123: { (yyval) = NULL; } break; - case 124: + case 125: { (yyval) = (yyvsp[(3) - (3)]); } break; - case 125: + case 126: { (yyval) = (yyvsp[(4) - (4)]); } break; - case 128: + case 129: { const char *name = strdup((*(yyvsp[(1) - (1)]))->string); @@ -2130,7 +2134,7 @@ yyreduce: } break; - case 129: + case 130: { const char *name = strdup((*(yyvsp[(1) - (3)]))->string); @@ -2139,17 +2143,17 @@ yyreduce: } break; - case 130: + case 131: { (yyval) = (yyvsp[(2) - (2)]); } break; - case 131: + case 132: { (yyval) = NULL; } break; - case 133: + case 134: { export_symbol((*(yyvsp[(3) - (5)]))->string); (yyval) = (yyvsp[(5) - (5)]); } break; diff --git a/scripts/genksyms/parse.tab.h_shipped b/scripts/genksyms/parse.tab.h_shipped index 4c00cef6d71d..46a5e124eda1 100644 --- a/scripts/genksyms/parse.tab.h_shipped +++ b/scripts/genksyms/parse.tab.h_shipped @@ -72,22 +72,23 @@ extern int yydebug; VOID_KEYW = 281, VOLATILE_KEYW = 282, TYPEOF_KEYW = 283, - EXPORT_SYMBOL_KEYW = 284, - ASM_PHRASE = 285, - ATTRIBUTE_PHRASE = 286, - TYPEOF_PHRASE = 287, - BRACE_PHRASE = 288, - BRACKET_PHRASE = 289, - EXPRESSION_PHRASE = 290, - CHAR = 291, - DOTS = 292, - IDENT = 293, - INT = 294, - REAL = 295, - STRING = 296, - TYPE = 297, - OTHER = 298, - FILENAME = 299 + VA_LIST_KEYW = 284, + EXPORT_SYMBOL_KEYW = 285, + ASM_PHRASE = 286, + ATTRIBUTE_PHRASE = 287, + TYPEOF_PHRASE = 288, + BRACE_PHRASE = 289, + BRACKET_PHRASE = 290, + EXPRESSION_PHRASE = 291, + CHAR = 292, + DOTS = 293, + IDENT = 294, + INT = 295, + REAL = 296, + STRING = 297, + TYPE = 298, + OTHER = 299, + FILENAME = 300 }; #endif diff --git a/scripts/genksyms/parse.y b/scripts/genksyms/parse.y index 723ab30fe9d4..4fba255e54ae 100644 --- a/scripts/genksyms/parse.y +++ b/scripts/genksyms/parse.y @@ -98,6 +98,7 @@ static void record_compound(struct string_list **keyw, %token VOID_KEYW %token VOLATILE_KEYW %token TYPEOF_KEYW +%token VA_LIST_KEYW %token EXPORT_SYMBOL_KEYW @@ -261,6 +262,7 @@ simple_type_specifier: | DOUBLE_KEYW | VOID_KEYW | BOOL_KEYW + | VA_LIST_KEYW | TYPE { (*$1)->tag = SYM_TYPEDEF; $$ = $1; } ; diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 1f22a186c18c..299b92ca1ae0 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c @@ -76,7 +76,6 @@ static void usage(void) { fprintf(stderr, "Usage: kallsyms [--all-symbols] " "[--symbol-prefix=<prefix char>] " - "[--page-offset=<CONFIG_PAGE_OFFSET>] " "[--base-relative] < in.map > out.S\n"); exit(1); } diff --git a/scripts/kconfig/nconf.c b/scripts/kconfig/nconf.c index d42d534a66cd..a9bc5334a478 100644 --- a/scripts/kconfig/nconf.c +++ b/scripts/kconfig/nconf.c @@ -5,7 +5,9 @@ * Derived from menuconfig. * */ +#ifndef _GNU_SOURCE #define _GNU_SOURCE +#endif #include <string.h> #include <stdlib.h> diff --git a/scripts/kconfig/nconf.gui.c b/scripts/kconfig/nconf.gui.c index 8275f0e55106..4b2f44c20caf 100644 --- a/scripts/kconfig/nconf.gui.c +++ b/scripts/kconfig/nconf.gui.c @@ -364,12 +364,14 @@ int dialog_inputbox(WINDOW *main_window, WINDOW *prompt_win; WINDOW *form_win; PANEL *panel; - int i, x, y; + int i, x, y, lines, columns, win_lines, win_cols; int res = -1; int cursor_position = strlen(init); int cursor_form_win; char *result = *resultp; + getmaxyx(stdscr, lines, columns); + if (strlen(init)+1 > *result_len) { *result_len = strlen(init)+1; *resultp = result = realloc(result, *result_len); @@ -386,14 +388,19 @@ int dialog_inputbox(WINDOW *main_window, if (title) prompt_width = max(prompt_width, strlen(title)); + win_lines = min(prompt_lines+6, lines-2); + win_cols = min(prompt_width+7, columns-2); + prompt_lines = max(win_lines-6, 0); + prompt_width = max(win_cols-7, 0); + /* place dialog in middle of screen */ - y = (getmaxy(stdscr)-(prompt_lines+4))/2; - x = (getmaxx(stdscr)-(prompt_width+4))/2; + y = (lines-win_lines)/2; + x = (columns-win_cols)/2; strncpy(result, init, *result_len); /* create the windows */ - win = newwin(prompt_lines+6, prompt_width+7, y, x); + win = newwin(win_lines, win_cols, y, x); prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2); form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); keypad(form_win, TRUE); diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index fc5555992220..ae6c72546411 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc @@ -65,11 +65,19 @@ ConfigSettings::ConfigSettings() QList<int> ConfigSettings::readSizes(const QString& key, bool *ok) { QList<int> result; - QStringList entryList = value(key).toStringList(); - QStringList::Iterator it; - for (it = entryList.begin(); it != entryList.end(); ++it) - result.push_back((*it).toInt()); + if (contains(key)) + { + QStringList entryList = value(key).toStringList(); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + *ok = true; + } + else + *ok = false; return result; } @@ -1014,7 +1022,7 @@ ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) if (!objectName().isEmpty()) { configSettings->beginGroup(objectName()); - _showDebug = configSettings->value("/showDebug", false).toBool(); + setShowDebug(configSettings->value("/showDebug", false).toBool()); configSettings->endGroup(); connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); } @@ -1474,6 +1482,7 @@ ConfigMainWindow::ConfigMainWindow(void) optionMenu->addSeparator(); optionMenu->addActions(optGroup->actions()); optionMenu->addSeparator(); + optionMenu->addAction(showDebugAction); // create help menu menu->addSeparator(); diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index f742c65108b9..c80291319cb2 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -209,15 +209,6 @@ case "${KCONFIG_CONFIG}" in . "./${KCONFIG_CONFIG}" esac -archive_builtin - -#link vmlinux.o -info LD vmlinux.o -modpost_link vmlinux.o - -# modpost vmlinux.o to check for section mismatches -${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o - # Update version info GEN .version if [ ! -r .version ]; then @@ -231,6 +222,15 @@ fi; # final build of init/ ${MAKE} -f "${srctree}/scripts/Makefile.build" obj=init GCC_PLUGINS_CFLAGS="${GCC_PLUGINS_CFLAGS}" +archive_builtin + +#link vmlinux.o +info LD vmlinux.o +modpost_link vmlinux.o + +# modpost vmlinux.o to check for section mismatches +${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o + kallsymso="" kallsyms_vmlinux="" if [ -n "${CONFIG_KALLSYMS}" ]; then @@ -246,10 +246,14 @@ if [ -n "${CONFIG_KALLSYMS}" ]; then # the right size, but due to the added section, some # addresses have shifted. # From here, we generate a correct .tmp_kallsyms2.o - # 2a) We may use an extra pass as this has been necessary to - # woraround some alignment related bugs. - # KALLSYMS_EXTRA_PASS=1 is used to trigger this. - # 3) The correct ${kallsymso} is linked into the final vmlinux. + # 3) That link may have expanded the kernel image enough that + # more linker branch stubs / trampolines had to be added, which + # introduces new names, which further expands kallsyms. Do another + # pass if that is the case. In theory it's possible this results + # in even more stubs, but unlikely. + # KALLSYMS_EXTRA_PASS=1 may also used to debug or work around + # other bugs. + # 4) The correct ${kallsymso} is linked into the final vmlinux. # # a) Verify that the System.map from vmlinux matches the map from # ${kallsymso}. @@ -265,8 +269,11 @@ if [ -n "${CONFIG_KALLSYMS}" ]; then vmlinux_link .tmp_kallsyms1.o .tmp_vmlinux2 kallsyms .tmp_vmlinux2 .tmp_kallsyms2.o - # step 2a - if [ -n "${KALLSYMS_EXTRA_PASS}" ]; then + # step 3 + size1=$(stat -c "%s" .tmp_kallsyms1.o) + size2=$(stat -c "%s" .tmp_kallsyms2.o) + + if [ $size1 -ne $size2 ] || [ -n "${KALLSYMS_EXTRA_PASS}" ]; then kallsymso=.tmp_kallsyms3.o kallsyms_vmlinux=.tmp_vmlinux3 diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index bd8349759095..29c89a6bad3d 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -609,6 +609,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info, { unsigned int crc; enum export export; + bool is_crc = false; if ((!is_vmlinux(mod->name) || mod->is_dot_o) && strncmp(symname, "__ksymtab", 9) == 0) @@ -618,6 +619,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info, /* CRC'd symbol */ if (strncmp(symname, CRC_PFX, strlen(CRC_PFX)) == 0) { + is_crc = true; crc = (unsigned int) sym->st_value; sym_update_crc(symname + strlen(CRC_PFX), mod, crc, export); @@ -663,6 +665,10 @@ static void handle_modversions(struct module *mod, struct elf_info *info, else symname++; #endif + if (is_crc) { + const char *e = is_vmlinux(mod->name) ?"":".ko"; + warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", symname + strlen(CRC_PFX), mod->name, e); + } mod->unres = alloc_symbol(symname, ELF_ST_BIND(sym->st_info) == STB_WEAK, mod->unres); @@ -2371,6 +2377,7 @@ static void write_dump(const char *fname) } } write_if_changed(&buf, fname); + free(buf.p); } struct ext_sym_list { @@ -2496,6 +2503,7 @@ int main(int argc, char **argv) "Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n"); } } + free(buf.p); return err; } diff --git a/scripts/package/builddeb b/scripts/package/builddeb index 8ea9fd2b6573..3c575cd07888 100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb @@ -51,7 +51,7 @@ set_debarch() { debarch=hppa ;; mips*) debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; - arm64) + aarch64|arm64) debarch=arm64 ;; arm*) if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then diff --git a/scripts/package/mkspec b/scripts/package/mkspec index 57673bae5597..bb43f153fd8e 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec @@ -116,7 +116,8 @@ echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2" echo "%endif" if ! $PREBUILT; then -echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}" +echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/build" +echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/source" echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE" echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\"" echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)" diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c index 5423a58d1b06..aeb34223167c 100644 --- a/scripts/recordmcount.c +++ b/scripts/recordmcount.c @@ -213,6 +213,59 @@ static int make_nop_x86(void *map, size_t const offset) return 0; } +static unsigned char ideal_nop4_arm_le[4] = { 0x00, 0x00, 0xa0, 0xe1 }; /* mov r0, r0 */ +static unsigned char ideal_nop4_arm_be[4] = { 0xe1, 0xa0, 0x00, 0x00 }; /* mov r0, r0 */ +static unsigned char *ideal_nop4_arm; + +static unsigned char bl_mcount_arm_le[4] = { 0xfe, 0xff, 0xff, 0xeb }; /* bl */ +static unsigned char bl_mcount_arm_be[4] = { 0xeb, 0xff, 0xff, 0xfe }; /* bl */ +static unsigned char *bl_mcount_arm; + +static unsigned char push_arm_le[4] = { 0x04, 0xe0, 0x2d, 0xe5 }; /* push {lr} */ +static unsigned char push_arm_be[4] = { 0xe5, 0x2d, 0xe0, 0x04 }; /* push {lr} */ +static unsigned char *push_arm; + +static unsigned char ideal_nop2_thumb_le[2] = { 0x00, 0xbf }; /* nop */ +static unsigned char ideal_nop2_thumb_be[2] = { 0xbf, 0x00 }; /* nop */ +static unsigned char *ideal_nop2_thumb; + +static unsigned char push_bl_mcount_thumb_le[6] = { 0x00, 0xb5, 0xff, 0xf7, 0xfe, 0xff }; /* push {lr}, bl */ +static unsigned char push_bl_mcount_thumb_be[6] = { 0xb5, 0x00, 0xf7, 0xff, 0xff, 0xfe }; /* push {lr}, bl */ +static unsigned char *push_bl_mcount_thumb; + +static int make_nop_arm(void *map, size_t const offset) +{ + char *ptr; + int cnt = 1; + int nop_size; + size_t off = offset; + + ptr = map + offset; + if (memcmp(ptr, bl_mcount_arm, 4) == 0) { + if (memcmp(ptr - 4, push_arm, 4) == 0) { + off -= 4; + cnt = 2; + } + ideal_nop = ideal_nop4_arm; + nop_size = 4; + } else if (memcmp(ptr - 2, push_bl_mcount_thumb, 6) == 0) { + cnt = 3; + nop_size = 2; + off -= 2; + ideal_nop = ideal_nop2_thumb; + } else + return -1; + + /* Convert to nop */ + ulseek(fd_map, off, SEEK_SET); + + do { + uwrite(fd_map, ideal_nop, nop_size); + } while (--cnt > 0); + + return 0; +} + static unsigned char ideal_nop4_arm64[4] = {0x1f, 0x20, 0x03, 0xd5}; static int make_nop_arm64(void *map, size_t const offset) { @@ -430,6 +483,11 @@ do_file(char const *const fname) w2 = w2rev; w8 = w8rev; } + ideal_nop4_arm = ideal_nop4_arm_le; + bl_mcount_arm = bl_mcount_arm_le; + push_arm = push_arm_le; + ideal_nop2_thumb = ideal_nop2_thumb_le; + push_bl_mcount_thumb = push_bl_mcount_thumb_le; break; case ELFDATA2MSB: if (*(unsigned char const *)&endian != 0) { @@ -438,6 +496,11 @@ do_file(char const *const fname) w2 = w2rev; w8 = w8rev; } + ideal_nop4_arm = ideal_nop4_arm_be; + bl_mcount_arm = bl_mcount_arm_be; + push_arm = push_arm_be; + ideal_nop2_thumb = ideal_nop2_thumb_be; + push_bl_mcount_thumb = push_bl_mcount_thumb_be; break; } /* end switch */ if (memcmp(ELFMAG, ehdr->e_ident, SELFMAG) != 0 @@ -463,6 +526,8 @@ do_file(char const *const fname) break; case EM_ARM: reltype = R_ARM_ABS32; altmcount = "__gnu_mcount_nc"; + make_nop = make_nop_arm; + rel_type_nop = R_ARM_NONE; break; case EM_AARCH64: reltype = R_AARCH64_ABS64; diff --git a/scripts/selinux/genheaders/Makefile b/scripts/selinux/genheaders/Makefile index 1d1ac51359e3..6fc2b8789a0b 100644 --- a/scripts/selinux/genheaders/Makefile +++ b/scripts/selinux/genheaders/Makefile @@ -1,4 +1,6 @@ hostprogs-y := genheaders -HOST_EXTRACFLAGS += -Isecurity/selinux/include +HOST_EXTRACFLAGS += \ + -I$(srctree)/include/uapi -I$(srctree)/include \ + -I$(srctree)/security/selinux/include always := $(hostprogs-y) diff --git a/scripts/selinux/genheaders/genheaders.c b/scripts/selinux/genheaders/genheaders.c index 539855ff31f9..f4dd41f900d5 100644 --- a/scripts/selinux/genheaders/genheaders.c +++ b/scripts/selinux/genheaders/genheaders.c @@ -1,3 +1,7 @@ + +/* NOTE: we really do want to use the kernel headers here */ +#define __EXPORTED_HEADERS__ + #include <stdio.h> #include <stdlib.h> #include <unistd.h> diff --git a/scripts/selinux/mdp/Makefile b/scripts/selinux/mdp/Makefile index dba7eff69a00..d6a83cafe59f 100644 --- a/scripts/selinux/mdp/Makefile +++ b/scripts/selinux/mdp/Makefile @@ -1,5 +1,7 @@ hostprogs-y := mdp -HOST_EXTRACFLAGS += -Isecurity/selinux/include +HOST_EXTRACFLAGS += \ + -I$(srctree)/include/uapi -I$(srctree)/include \ + -I$(srctree)/security/selinux/include always := $(hostprogs-y) clean-files := policy.* file_contexts diff --git a/scripts/selinux/mdp/mdp.c b/scripts/selinux/mdp/mdp.c index e10beb11b696..c29fa4a6228d 100644 --- a/scripts/selinux/mdp/mdp.c +++ b/scripts/selinux/mdp/mdp.c @@ -24,6 +24,10 @@ * Authors: Serge E. Hallyn <serue@us.ibm.com> */ + +/* NOTE: we really do want to use the kernel headers here */ +#define __EXPORTED_HEADERS__ + #include <stdio.h> #include <stdlib.h> #include <unistd.h> diff --git a/scripts/sign-file.c b/scripts/sign-file.c index 53af6dc3e6c1..19ec468b1168 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -267,7 +267,7 @@ int main(int argc, char **argv) } x509_name = argv[2]; module_name = argv[3]; - if (argc == 5) { + if (argc == 5 && strcmp(argv[3], argv[4]) != 0) { dest_name = argv[4]; replace_orig = false; } else { diff --git a/scripts/sortextable.c b/scripts/sortextable.c index f453b7ce99d6..365a907f98b3 100644 --- a/scripts/sortextable.c +++ b/scripts/sortextable.c @@ -316,6 +316,8 @@ do_file(char const *const fname) case EM_S390: case EM_AARCH64: case EM_PARISC: + case EM_PPC: + case EM_PPC64: custom_sort = sort_relative_table; break; case EM_ARCOMPACT: |