aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Makefile.modpost1
-rw-r--r--scripts/mod/modpost.c24
2 files changed, 18 insertions, 7 deletions
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index 69f0a1417e9a..1366a94b6c39 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -77,6 +77,7 @@ modpost = scripts/mod/modpost \
77 $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \ 77 $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \
78 $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ 78 $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
79 $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \ 79 $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
80 $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
80 $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) 81 $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
81 82
82MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS))) 83MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS)))
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index d583c98fde31..b2ae8afc1ab1 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -38,6 +38,7 @@ static int warn_unresolved = 0;
38/* How a symbol is exported */ 38/* How a symbol is exported */
39static int sec_mismatch_count = 0; 39static int sec_mismatch_count = 0;
40static int sec_mismatch_verbose = 1; 40static int sec_mismatch_verbose = 1;
41static int sec_mismatch_fatal = 0;
41/* ignore missing files */ 42/* ignore missing files */
42static int ignore_missing_files; 43static int ignore_missing_files;
43 44
@@ -2385,7 +2386,7 @@ int main(int argc, char **argv)
2385 struct ext_sym_list *extsym_iter; 2386 struct ext_sym_list *extsym_iter;
2386 struct ext_sym_list *extsym_start = NULL; 2387 struct ext_sym_list *extsym_start = NULL;
2387 2388
2388 while ((opt = getopt(argc, argv, "i:I:e:mnsST:o:awM:K:")) != -1) { 2389 while ((opt = getopt(argc, argv, "i:I:e:mnsST:o:awM:K:E")) != -1) {
2389 switch (opt) { 2390 switch (opt) {
2390 case 'i': 2391 case 'i':
2391 kernel_read = optarg; 2392 kernel_read = optarg;
@@ -2426,6 +2427,9 @@ int main(int argc, char **argv)
2426 case 'w': 2427 case 'w':
2427 warn_unresolved = 1; 2428 warn_unresolved = 1;
2428 break; 2429 break;
2430 case 'E':
2431 sec_mismatch_fatal = 1;
2432 break;
2429 default: 2433 default:
2430 exit(1); 2434 exit(1);
2431 } 2435 }
@@ -2475,14 +2479,20 @@ int main(int argc, char **argv)
2475 sprintf(fname, "%s.mod.c", mod->name); 2479 sprintf(fname, "%s.mod.c", mod->name);
2476 write_if_changed(&buf, fname); 2480 write_if_changed(&buf, fname);
2477 } 2481 }
2478
2479 if (dump_write) 2482 if (dump_write)
2480 write_dump(dump_write); 2483 write_dump(dump_write);
2481 if (sec_mismatch_count && !sec_mismatch_verbose) 2484 if (sec_mismatch_count) {
2482 warn("modpost: Found %d section mismatch(es).\n" 2485 if (!sec_mismatch_verbose) {
2483 "To see full details build your kernel with:\n" 2486 warn("modpost: Found %d section mismatch(es).\n"
2484 "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n", 2487 "To see full details build your kernel with:\n"
2485 sec_mismatch_count); 2488 "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
2489 sec_mismatch_count);
2490 }
2491 if (sec_mismatch_fatal) {
2492 fatal("modpost: Section mismatches detected.\n"
2493 "Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
2494 }
2495 }
2486 2496
2487 return err; 2497 return err;
2488} 2498}