[PATCH v6 3/9] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped

Alexey Gladkov posted 9 patches 1 month, 3 weeks ago
There is a newer version of this series
[PATCH v6 3/9] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped
Posted by Alexey Gladkov 1 month, 3 weeks ago
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
Re: [PATCH v6 3/9] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped
Posted by Masahiro Yamada 1 month, 2 weeks ago
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
Re: [PATCH v6 3/9] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped
Posted by Alexey Gladkov 1 month, 2 weeks ago
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

Re: [PATCH v6 3/9] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped
Posted by Nathan Chancellor 1 month, 2 weeks ago
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