From: Masahiro Yamada <masahiroy@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 <masahiroy@kernel.org>
Signed-off-by: Alexey Gladkov <legion@kernel.org>
---
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
On Thu, Aug 14, 2025 at 10:08 PM Alexey Gladkov <legion@kernel.org> wrote: > > From: Masahiro Yamada <masahiroy@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 <masahiroy@kernel.org> > Signed-off-by: Alexey Gladkov <legion@kernel.org> I got this report from Stephen https://lore.kernel.org/lkml/20250730164047.7c4a731a@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
On Sun, Aug 17, 2025 at 09:34:52PM +0900, Masahiro Yamada wrote: > On Thu, Aug 14, 2025 at 10:08 PM Alexey Gladkov <legion@kernel.org> wrote: > > > > From: Masahiro Yamada <masahiroy@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 <masahiroy@kernel.org> > > Signed-off-by: Alexey Gladkov <legion@kernel.org> > > I got this report from Stephen > https://lore.kernel.org/lkml/20250730164047.7c4a731a@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. My emails must have gotten lost somewhere. Because I replied to that message right away and provided a fix. Stephen even applied it to the tree later. You were in CC whole time. https://lore.kernel.org/all/20250730090025.2402129-1-legion@kernel.org/ Tomorrow I will make a new version with the corrections I missed. But now, I'm not sure to which tree I should send it. > > > --- > > 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 > -- Rgrds, legion
On Sun, Aug 17, 2025 at 02:52:39PM +0200, Alexey Gladkov wrote: > My emails must have gotten lost somewhere. Because I replied to that > message right away and provided a fix. Stephen even applied it to the tree > later. You were in CC whole time. > > https://lore.kernel.org/all/20250730090025.2402129-1-legion@kernel.org/ > > Tomorrow I will make a new version with the corrections I missed. But now, > I'm not sure to which tree I should send it. You can send it against kbuild-next: https://git.kernel.org/kbuild/l/kbuild-next Cheers, Nathan
© 2016 - 2025 Red Hat, Inc.