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@xxxxxxxxxx> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > 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 >