]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.25/patches.suse/genksyms-add-override-flag.diff
Added missing SuSE-Xen-Patches.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.suse / genksyms-add-override-flag.diff
1 From: Andreas Gruenbacher <agruen@suse.de>
2 Subject: genksyms: add --override flag
3
4 Add --override flag to genksyms to allow overriding types with old
5 definitions using the 'override' keyword. This is similar to -p --preserve,
6 but 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
14 Index: 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':
107 Index: 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 \