]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.suse/genksyms-add-override-flag.diff
Add a patch to fix Intel E100 wake-on-lan problems.
[ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / genksyms-add-override-flag.diff
CommitLineData
6a930a95
BS
1From: Andreas Gruenbacher <agruen@suse.de>
2Subject: genksyms: add --override flag
3
4Add --override flag to genksyms to allow overriding types with old
5definitions using the 'override' keyword. This is similar to -p --preserve,
6but it doesn't abort the build if a symtype cannot be preserved
7
8[mmarek: added KBUILD_OVERRIDE env var to set this globally for the entire
9 build]
10---
11 scripts/genksyms/genksyms.c | 21 +++++++++++++++------
12 1 file changed, 15 insertions(+), 6 deletions(-)
13
14Index: b/scripts/genksyms/genksyms.c
15===================================================================
16--- a/scripts/genksyms/genksyms.c
17+++ b/scripts/genksyms/genksyms.c
18@@ -43,7 +43,7 @@ int cur_line = 1;
19 char *cur_filename;
20
21 static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types,
22- flag_preserve, flag_warnings;
23+ flag_override, flag_preserve, flag_warnings;
24 static const char *arch = "";
25 static const char *mod_prefix = "";
26
27@@ -200,7 +200,7 @@ struct symbol *__add_symbol(const char *
28 sym->is_declared = 1;
29 return sym;
30 } else if (!sym->is_declared) {
31- if (sym->is_override && flag_preserve) {
32+ if (sym->is_override && flag_override) {
33 print_location();
34 fprintf(stderr, "ignoring ");
35 print_type_name(type, name);
36@@ -586,11 +586,13 @@ void export_symbol(const char *name)
37 struct symbol *n = sym->expansion_trail;
38
39 if (sym->status != STATUS_UNCHANGED) {
40+ int fail = sym->is_override && flag_preserve;
41+
42 if (!has_changed) {
43 print_location();
44 fprintf(stderr, "%s: %s: modversion "
45 "changed because of changes "
46- "in ", flag_preserve ? "error" :
47+ "in ", fail ? "error" :
48 "warning", name);
49 } else
50 fprintf(stderr, ", ");
51@@ -598,7 +600,7 @@ void export_symbol(const char *name)
52 if (sym->status == STATUS_DEFINED)
53 fprintf(stderr, " (became defined)");
54 has_changed = 1;
55- if (flag_preserve)
56+ if (fail)
57 errors++;
58 }
59 sym->expansion_trail = 0;
60@@ -655,6 +657,7 @@ static void genksyms_usage(void)
61 " -D, --dump Dump expanded symbol defs (for debugging only)\n"
62 " -r, --reference file Read reference symbols from a file\n"
63 " -T, --dump-types file Dump expanded types into file\n"
64+ " -o, --override Allow to override reference modversions\n"
65 " -p, --preserve Preserve reference modversions or fail\n"
66 " -w, --warnings Enable warnings\n"
67 " -q, --quiet Disable warnings (default)\n"
68@@ -666,6 +669,7 @@ static void genksyms_usage(void)
69 " -D Dump expanded symbol defs (for debugging only)\n"
70 " -r file Read reference symbols from a file\n"
71 " -T file Dump expanded types into file\n"
72+ " -o Allow to override reference modversions\n"
73 " -p Preserve reference modversions or fail\n"
74 " -w Enable warnings\n"
75 " -q Disable warnings (default)\n"
76@@ -690,15 +694,16 @@ int main(int argc, char **argv)
77 {"reference", 1, 0, 'r'},
78 {"dump-types", 1, 0, 'T'},
79 {"preserve", 0, 0, 'p'},
80+ {"override", 0, 0, 'o'},
81 {"version", 0, 0, 'V'},
82 {"help", 0, 0, 'h'},
83 {0, 0, 0, 0}
84 };
85
86- while ((o = getopt_long(argc, argv, "a:dwqVDr:T:ph",
87+ while ((o = getopt_long(argc, argv, "a:dwqVDr:T:oph",
88 &long_opts[0], NULL)) != EOF)
89 #else /* __GNU_LIBRARY__ */
90- while ((o = getopt(argc, argv, "a:dwqVDr:T:ph")) != EOF)
91+ while ((o = getopt(argc, argv, "a:dwqVDr:T:oph")) != EOF)
92 #endif /* __GNU_LIBRARY__ */
93 switch (o) {
94 case 'a':
95@@ -735,7 +740,11 @@ int main(int argc, char **argv)
96 return 1;
97 }
98 break;
99+ case 'o':
100+ flag_override = 1;
101+ break;
102 case 'p':
103+ flag_override = 1;
104 flag_preserve = 1;
105 break;
106 case 'h':
107Index: b/scripts/Makefile.build
108===================================================================
109--- a/scripts/Makefile.build
110+++ b/scripts/Makefile.build
111@@ -159,6 +159,7 @@ cmd_cc_symtypes_c = \
112 -r $(firstword $(wildcard \
113 $(@:.symtypes=.symref) /dev/null)) \
114 $(if $(KBUILD_PRESERVE),-p) \
115+ $(if $(KBUILD_OVERRIDE),-o) \
116 -a $(ARCH) \
117 >/dev/null; \
118 test -s $@ || rm -f $@
119@@ -197,6 +198,7 @@ cmd_modversions = \
120 -r $(firstword $(wildcard \
121 $(@:.o=.symref) /dev/null)) \
122 $(if $(KBUILD_PRESERVE),-p) \
123+ $(if $(KBUILD_OVERRIDE),-o) \
124 -a $(ARCH) \
125 > $(@D)/.tmp_$(@F:.o=.ver); \
126 \