Skip to content

Commit

Permalink
kbuild: do not do section mismatch checks on vmlinux in 2nd pass
Browse files Browse the repository at this point in the history
We already check and warn about section mismatches from vmlinux
(build as vmlinux.o) during first pass so skip the checks
during the 2nd pass where we process modules.

Signed-off-by: Sam Ravnborg <[email protected]>
  • Loading branch information
sravnborg committed Jul 25, 2007
1 parent 80492cc commit 8d8d828
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
19 changes: 10 additions & 9 deletions scripts/Makefile.modpost
Original file line number Diff line number Diff line change
Expand Up @@ -56,23 +56,24 @@ _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))

# Step 2), invoke modpost
# Includes step 3,4
modpost = scripts/mod/modpost \
$(if $(CONFIG_MODVERSIONS),-m) \
$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \
$(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)

quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
cmd_modpost = scripts/mod/modpost \
$(if $(CONFIG_MODVERSIONS),-m) \
$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \
$(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
cmd_modpost = $(modpost) -s

PHONY += __modpost
__modpost: $(modules:.ko=.o) FORCE
$(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^)

quiet_cmd_kernel-mod = MODPOST $@
cmd_kernel-mod = $(cmd_modpost) $@
cmd_kernel-mod = $(modpost) $@

PHONY += vmlinux
vmlinux.o: FORCE
$(call cmd,kernel-mod)

Expand Down
13 changes: 10 additions & 3 deletions scripts/mod/modpost.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ int have_vmlinux = 0;
static int all_versions = 0;
/* If we are modposting external module set to 1 */
static int external_module = 0;
/* Warn about section mismatch in vmlinux if set to 1 */
static int vmlinux_section_warnings = 1;
/* Only warn about unresolved symbols */
static int warn_unresolved = 0;
/* How a symbol is exported */
Expand Down Expand Up @@ -1257,8 +1259,10 @@ static void read_symbols(char *modname)
handle_modversions(mod, &info, sym, symname);
handle_moddevtable(mod, &info, sym, symname);
}
check_sec_ref(mod, modname, &info, init_section, init_section_ref_ok);
check_sec_ref(mod, modname, &info, exit_section, exit_section_ref_ok);
if (is_vmlinux(modname) && vmlinux_section_warnings) {
check_sec_ref(mod, modname, &info, init_section, init_section_ref_ok);
check_sec_ref(mod, modname, &info, exit_section, exit_section_ref_ok);
}

version = get_modinfo(info.modinfo, info.modinfo_len, "version");
if (version)
Expand Down Expand Up @@ -1626,7 +1630,7 @@ int main(int argc, char **argv)
int opt;
int err;

while ((opt = getopt(argc, argv, "i:I:mo:aw")) != -1) {
while ((opt = getopt(argc, argv, "i:I:mso:aw")) != -1) {
switch(opt) {
case 'i':
kernel_read = optarg;
Expand All @@ -1644,6 +1648,9 @@ int main(int argc, char **argv)
case 'a':
all_versions = 1;
break;
case 's':
vmlinux_section_warnings = 0;
break;
case 'w':
warn_unresolved = 1;
break;
Expand Down

0 comments on commit 8d8d828

Please sign in to comment.