On Thu, Aug 14, 2025 at 10:08 PM Alexey Gladkov <leg...@kernel.org> wrote: > > From: Masahiro Yamada <masahi...@kernel.org> > > Currently, we assume all the data for modules.builtin.modinfo are > available in vmlinux.o. > > This makes it impossible for modpost, which is invoked after vmlinux.o, > to add additional module info. > > This commit moves the modules.builtin.modinfo rule after modpost. > > Signed-off-by: Masahiro Yamada <masahi...@kernel.org> > Signed-off-by: Alexey Gladkov <leg...@kernel.org>
I got this report from Stephen https://lore.kernel.org/lkml/20250730164047.7c4a7...@canb.auug.org.au/ Please make sure to have no regression. If this is difficult to solve, please discard this patch, and consider a different approach. > --- > scripts/Makefile.vmlinux | 26 ++++++++++++++++++++++++++ > scripts/Makefile.vmlinux_o | 26 +------------------------- > 2 files changed, 27 insertions(+), 25 deletions(-) > > diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux > index e2ceeb9e168d..fdab5aa90215 100644 > --- a/scripts/Makefile.vmlinux > +++ b/scripts/Makefile.vmlinux > @@ -96,6 +96,32 @@ targets += vmlinux > vmlinux: vmlinux.unstripped FORCE > $(call if_changed,strip_relocs) > > +# modules.builtin.modinfo > +# --------------------------------------------------------------------------- > + > +OBJCOPYFLAGS_modules.builtin.modinfo := -j .modinfo -O binary > + > +targets += modules.builtin.modinfo > +modules.builtin.modinfo: vmlinux.unstripped FORCE > + $(call if_changed,objcopy) > + > +# modules.builtin > +# --------------------------------------------------------------------------- > + > +__default: modules.builtin > + > +# The second line aids cases where multiple modules share the same object. > + > +quiet_cmd_modules_builtin = GEN $@ > + cmd_modules_builtin = \ > + tr '\0' '\n' < $< | \ > + sed -n 's/^[[:alnum:]:_]*\.file=//p' | \ > + tr ' ' '\n' | uniq | sed -e 's:^:kernel/:' -e 's/$$/.ko/' > $@ > + > +targets += modules.builtin > +modules.builtin: modules.builtin.modinfo FORCE > + $(call if_changed,modules_builtin) > + > # modules.builtin.ranges > # --------------------------------------------------------------------------- > ifdef CONFIG_BUILTIN_MODULE_RANGES > diff --git a/scripts/Makefile.vmlinux_o b/scripts/Makefile.vmlinux_o > index b024ffb3e201..23c8751285d7 100644 > --- a/scripts/Makefile.vmlinux_o > +++ b/scripts/Makefile.vmlinux_o > @@ -1,7 +1,7 @@ > # SPDX-License-Identifier: GPL-2.0-only > > PHONY := __default > -__default: vmlinux.o modules.builtin.modinfo modules.builtin > +__default: vmlinux.o > > include include/config/auto.conf > include $(srctree)/scripts/Kbuild.include > @@ -73,30 +73,6 @@ vmlinux.o: $(initcalls-lds) vmlinux.a > $(KBUILD_VMLINUX_LIBS) FORCE > > targets += vmlinux.o > > -# modules.builtin.modinfo > -# --------------------------------------------------------------------------- > - > -OBJCOPYFLAGS_modules.builtin.modinfo := -j .modinfo -O binary > - > -targets += modules.builtin.modinfo > -modules.builtin.modinfo: vmlinux.o FORCE > - $(call if_changed,objcopy) > - > -# modules.builtin > -# --------------------------------------------------------------------------- > - > -# The second line aids cases where multiple modules share the same object. > - > -quiet_cmd_modules_builtin = GEN $@ > - cmd_modules_builtin = \ > - tr '\0' '\n' < $< | \ > - sed -n 's/^[[:alnum:]:_]*\.file=//p' | \ > - tr ' ' '\n' | uniq | sed -e 's:^:kernel/:' -e 's/$$/.ko/' > $@ > - > -targets += modules.builtin > -modules.builtin: modules.builtin.modinfo FORCE > - $(call if_changed,modules_builtin) > - > # Add FORCE to the prerequisites of a target to force it to be always > rebuilt. > # --------------------------------------------------------------------------- > > -- > 2.50.1 > -- Best Regards Masahiro Yamada