From: William McVicker <willmcvicker@google.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Nicolas Schier <nicolas@fjasle.eu>
Subject: Re: [PATCH] kbuild: do not automatically add -w option to modpost
Date: Mon, 23 Jan 2023 14:42:39 -0800 [thread overview]
Message-ID: <Y88NX11/LcnfloYk@google.com> (raw)
In-Reply-To: <20230123052653.711899-1-masahiroy@kernel.org>
On 01/23/2023, Masahiro Yamada wrote:
> When there is a missing input file (vmlinux.o or Module.symvers), you
> are likely to get a ton of unresolved symbols.
>
> Currently, Kbuild automatically adds the -w option to allow module builds
> to continue with warnings instead of errors.
>
> This may not be what the user expects because it is generally more useful
> to catch all possible issues at build time instead of at run time.
>
> Let's not do what the user did not ask.
>
> If you still want to build modules anyway, you can proceed by explicitly
> setting KBUILD_MODPOST_WARN=1. Since you may miss a real issue, you need
> to be aware of what you are doing.
>
> Suggested-by: William McVicker <willmcvicker@google.com>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
> scripts/Makefile.modpost | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
> index 43343e13c542..9254ed811ddd 100644
> --- a/scripts/Makefile.modpost
> +++ b/scripts/Makefile.modpost
> @@ -121,16 +121,14 @@ modpost-args += -e $(addprefix -i , $(KBUILD_EXTRA_SYMBOLS))
>
> endif # ($(KBUILD_EXTMOD),)
>
> -ifneq ($(missing-input),)
> -modpost-args += -w
> -endif
> -
> quiet_cmd_modpost = MODPOST $@
> cmd_modpost = \
> $(if $(missing-input), \
> echo >&2 "WARNING: $(missing-input) is missing."; \
> echo >&2 " Modules may not have dependencies or modversions."; \
> - echo >&2 " You may get many unresolved symbol warnings.";) \
> + echo >&2 " You may get many unresolved symbol errors.";) \
You need to move the closing parenthesis to come at the end of these
echo messages. Otherwise you get this new message unconditionally.
I also found during testing that the refactoring in commit f73edc8951b2
("kbuild: unify two modpost invocations") dropped the check for missing
KBUILD_EXTRA_SYMBOLS. That means if an external module depends on
another external module and sets:
KBUILD_EXTRA_SYMBOLS=/path/to/ext_module/Module.symvers
... then make will fail even with KBUILD_MODPOST_WARN=1 since we
unconditionally add KBUILD_EXTRA_SYMBOLS to the modpost-args like this:
modpost-args += -e $(addprefix -i , $(KBUILD_EXTRA_SYMBOLS))
To fix this, I suggest you also take the following patch so that
KBUILD_MODPOST_WARN=1 will allow you to skip those unresolved symbols as
well:
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index 931a3272a4ba..0e2f7fa58056 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -149,14 +149,12 @@ include $(kbuild-file)
output-symdump := $(KBUILD_EXTMOD)/Module.symvers
-ifeq ($(wildcard Module.symvers),)
-missing-input := Module.symvers
-else
-modpost-args += -i Module.symvers
-modpost-deps += Module.symvers
-endif
+input-symdump := Module.symvers $(KBUILD_EXTRA_SYMBOLS)
+existing-input-symdump := $(wildcard $(input-symdump))
+missing-input := $(filter-out $(existing-input-symdump), $(input-symdump))
-modpost-args += -e $(addprefix -i , $(KBUILD_EXTRA_SYMBOLS))
+modpost-deps += $(existing-input-symdumps)
+modpost-args += -e $(addprefix -i , $(existing-input-symdump))
endif # ($(KBUILD_EXTMOD),)
With those changes, the patch works for me as expected. I verified I get
a build time error when referencing unresolved symbols without setting
KBUILD_MODPOST_WARN=1. And then I verified setting KBUILD_MODPOST_WARN=1
treated those errors as warnings.
Thanks,
Will
> + echo >&2 " You can set KBUILD_MODPOST_WARN=1 to turn errors into warning"; \
> + echo >&2 " if you want to proceed at your own risk."; \
> $(MODPOST) $(modpost-args)
>
> targets += $(output-symdump)
> --
> 2.34.1
>
next prev parent reply other threads:[~2023-01-23 22:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-23 5:26 [PATCH] kbuild: do not automatically add -w option to modpost Masahiro Yamada
2023-01-23 22:42 ` William McVicker [this message]
2023-01-24 2:48 ` Masahiro Yamada
2023-01-24 17:39 ` William McVicker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y88NX11/LcnfloYk@google.com \
--to=willmcvicker@google.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.