modpost: propagate W=1 build option to modpost
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 6 Jun 2023 09:41:59 +0000 (18:41 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 7 Jun 2023 13:41:08 +0000 (22:41 +0900)
"No build warning" is a strong requirement these days, so you must fix
all issues before enabling a new warning flag.

We often add a new warning to W=1 first so that the kbuild test robot
blocks new breakages.

This commit allows modpost to show extra warnings only when W=1
(or KBUILD_EXTRA_WARN=1) is given.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
scripts/Makefile.modpost
scripts/mod/modpost.c

index 0980c58..074e27c 100644 (file)
@@ -47,6 +47,7 @@ modpost-args =                                                                                \
        $(if $(KBUILD_MODPOST_WARN),-w)                                                 \
        $(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS))                                     \
        $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N)       \
+       $(if $(findstring 1, $(KBUILD_EXTRA_WARN)),-W)                                  \
        -o $@
 
 modpost-deps := $(MODPOST)
index d10f5bd..3ea5eb2 100644 (file)
@@ -42,6 +42,8 @@ static bool allow_missing_ns_imports;
 
 static bool error_occurred;
 
+static bool extra_warn;
+
 /*
  * Cut off the warnings when there are too many. This typically occurs when
  * vmlinux is missing. ('make modules' without building vmlinux.)
@@ -2199,7 +2201,7 @@ int main(int argc, char **argv)
        LIST_HEAD(dump_lists);
        struct dump_list *dl, *dl2;
 
-       while ((opt = getopt(argc, argv, "ei:mnT:o:awENd:")) != -1) {
+       while ((opt = getopt(argc, argv, "ei:mnT:o:aWwENd:")) != -1) {
                switch (opt) {
                case 'e':
                        external_module = true;
@@ -2224,6 +2226,9 @@ int main(int argc, char **argv)
                case 'T':
                        files_source = optarg;
                        break;
+               case 'W':
+                       extra_warn = true;
+                       break;
                case 'w':
                        warn_unresolved = true;
                        break;