diff options
| -rw-r--r-- | scripts/Makefile.modpost | 19 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 13 |
2 files changed, 20 insertions, 12 deletions
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index c6fcc597b3be..1818c502007e 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost | |||
| @@ -56,23 +56,24 @@ _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules)) | |||
| 56 | 56 | ||
| 57 | # Step 2), invoke modpost | 57 | # Step 2), invoke modpost |
| 58 | # Includes step 3,4 | 58 | # Includes step 3,4 |
| 59 | modpost = scripts/mod/modpost \ | ||
| 60 | $(if $(CONFIG_MODVERSIONS),-m) \ | ||
| 61 | $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \ | ||
| 62 | $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \ | ||
| 63 | $(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \ | ||
| 64 | $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ | ||
| 65 | $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) | ||
| 66 | |||
| 59 | quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules | 67 | quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules |
| 60 | cmd_modpost = scripts/mod/modpost \ | 68 | cmd_modpost = $(modpost) -s |
| 61 | $(if $(CONFIG_MODVERSIONS),-m) \ | ||
| 62 | $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \ | ||
| 63 | $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \ | ||
| 64 | $(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \ | ||
| 65 | $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ | ||
| 66 | $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) | ||
| 67 | 69 | ||
| 68 | PHONY += __modpost | 70 | PHONY += __modpost |
| 69 | __modpost: $(modules:.ko=.o) FORCE | 71 | __modpost: $(modules:.ko=.o) FORCE |
| 70 | $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^) | 72 | $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^) |
| 71 | 73 | ||
| 72 | quiet_cmd_kernel-mod = MODPOST $@ | 74 | quiet_cmd_kernel-mod = MODPOST $@ |
| 73 | cmd_kernel-mod = $(cmd_modpost) $@ | 75 | cmd_kernel-mod = $(modpost) $@ |
| 74 | 76 | ||
| 75 | PHONY += vmlinux | ||
| 76 | vmlinux.o: FORCE | 77 | vmlinux.o: FORCE |
| 77 | $(call cmd,kernel-mod) | 78 | $(call cmd,kernel-mod) |
| 78 | 79 | ||
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 5ab7914d30ef..87e3ee56e87d 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
| @@ -23,6 +23,8 @@ int have_vmlinux = 0; | |||
| 23 | static int all_versions = 0; | 23 | static int all_versions = 0; |
| 24 | /* If we are modposting external module set to 1 */ | 24 | /* If we are modposting external module set to 1 */ |
| 25 | static int external_module = 0; | 25 | static int external_module = 0; |
| 26 | /* Warn about section mismatch in vmlinux if set to 1 */ | ||
| 27 | static int vmlinux_section_warnings = 1; | ||
| 26 | /* Only warn about unresolved symbols */ | 28 | /* Only warn about unresolved symbols */ |
| 27 | static int warn_unresolved = 0; | 29 | static int warn_unresolved = 0; |
| 28 | /* How a symbol is exported */ | 30 | /* How a symbol is exported */ |
| @@ -1257,8 +1259,10 @@ static void read_symbols(char *modname) | |||
| 1257 | handle_modversions(mod, &info, sym, symname); | 1259 | handle_modversions(mod, &info, sym, symname); |
| 1258 | handle_moddevtable(mod, &info, sym, symname); | 1260 | handle_moddevtable(mod, &info, sym, symname); |
| 1259 | } | 1261 | } |
| 1260 | check_sec_ref(mod, modname, &info, init_section, init_section_ref_ok); | 1262 | if (is_vmlinux(modname) && vmlinux_section_warnings) { |
| 1261 | check_sec_ref(mod, modname, &info, exit_section, exit_section_ref_ok); | 1263 | check_sec_ref(mod, modname, &info, init_section, init_section_ref_ok); |
| 1264 | check_sec_ref(mod, modname, &info, exit_section, exit_section_ref_ok); | ||
| 1265 | } | ||
| 1262 | 1266 | ||
| 1263 | version = get_modinfo(info.modinfo, info.modinfo_len, "version"); | 1267 | version = get_modinfo(info.modinfo, info.modinfo_len, "version"); |
| 1264 | if (version) | 1268 | if (version) |
| @@ -1626,7 +1630,7 @@ int main(int argc, char **argv) | |||
| 1626 | int opt; | 1630 | int opt; |
| 1627 | int err; | 1631 | int err; |
| 1628 | 1632 | ||
| 1629 | while ((opt = getopt(argc, argv, "i:I:mo:aw")) != -1) { | 1633 | while ((opt = getopt(argc, argv, "i:I:mso:aw")) != -1) { |
| 1630 | switch(opt) { | 1634 | switch(opt) { |
| 1631 | case 'i': | 1635 | case 'i': |
| 1632 | kernel_read = optarg; | 1636 | kernel_read = optarg; |
| @@ -1644,6 +1648,9 @@ int main(int argc, char **argv) | |||
| 1644 | case 'a': | 1648 | case 'a': |
| 1645 | all_versions = 1; | 1649 | all_versions = 1; |
| 1646 | break; | 1650 | break; |
| 1651 | case 's': | ||
| 1652 | vmlinux_section_warnings = 0; | ||
| 1653 | break; | ||
| 1647 | case 'w': | 1654 | case 'w': |
| 1648 | warn_unresolved = 1; | 1655 | warn_unresolved = 1; |
| 1649 | break; | 1656 | break; |
