modpost: show warning if vmlinux is not found when processing modules
authorMasahiro Yamada <masahiroy@kernel.org>
Mon, 1 Jun 2020 05:57:13 +0000 (14:57 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 6 Jun 2020 14:38:12 +0000 (23:38 +0900)
check_exports() does not print warnings about unresolved symbols if
vmlinux is missing because there would be too many.

This situation happens when you do 'make modules' from the clean
tree, or compile external modules against a kernel tree that has
not been completely built.

It is dangerous to not check unresolved symbols because you might be
building useless modules. At least it should be warned.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/mod/modpost.c

index b839c48689dff7c8e0cec94aeb38f8377c23a06a..3df26789c2e6df8f419bb78a26b47686aadc57ae 100644 (file)
@@ -2001,8 +2001,6 @@ static void read_symbols(const char *modname)
 
        mod = new_module(modname);
 
-       /* When there's no vmlinux, don't print warnings about
-        * unresolved symbols (since there'll be too many ;) */
        if (is_vmlinux(modname)) {
                have_vmlinux = 1;
                mod->skip = 1;
@@ -2623,6 +2621,13 @@ int main(int argc, char **argv)
        if (files_source)
                read_symbols_from_files(files_source);
 
+       /*
+        * When there's no vmlinux, don't print warnings about
+        * unresolved symbols (since there'll be too many ;)
+        */
+       if (!have_vmlinux)
+               warn("Symbol info of vmlinux is missing. Unresolved symbol check will be entirely skipped.\n");
+
        err = 0;
 
        for (mod = modules; mod; mod = mod->next) {