From: Nicolas Schier <nsc@kernel.org>
To: Alexey Gladkov <legion@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>,
Petr Pavlu <petr.pavlu@suse.com>,
Luis Chamberlain <mcgrof@kernel.org>,
Sami Tolvanen <samitolvanen@google.com>,
Daniel Gomez <da.gomez@samsung.com>,
linux-kernel@vger.kernel.org, linux-modules@vger.kernel.org,
linux-kbuild@vger.kernel.org,
Masahiro Yamada <masahiroy@kernel.org>
Subject: Re: [PATCH v7 3/8] kbuild: keep .modinfo section in vmlinux.unstripped
Date: Tue, 16 Sep 2025 14:42:48 +0200 [thread overview]
Message-ID: <aMlbSEnwGOPM39Op@levanger> (raw)
In-Reply-To: <aMlKTPpNXrRW6v_7@example.org>
On Tue, Sep 16, 2025 at 01:30:20PM +0200, Alexey Gladkov wrote:
> On Tue, Sep 16, 2025 at 11:36:54AM +0200, Nicolas Schier wrote:
> > On Tue, Sep 16, 2025 at 09:12:22AM +0200, Alexey Gladkov wrote:
> > > On Mon, Sep 15, 2025 at 07:56:16AM +0200, Nicolas Schier wrote:
> > > > On Mon, Aug 18, 2025 at 06:54:57PM +0200, Alexey Gladkov wrote:
> > > > > From: Masahiro Yamada <masahiroy@kernel.org>
> > > > >
> > > > > Keep the .modinfo section during linking, but strip it from the final
> > > > > vmlinux.
> > > > >
> > > > > Adjust scripts/mksysmap to exclude modinfo symbols from kallsyms.
> > > > >
> > > > > This change will allow the next commit to extract the .modinfo section
> > > > > from the vmlinux.unstripped intermediate.
> > > > >
> > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > > > > ---
> > > > > include/asm-generic/vmlinux.lds.h | 2 +-
> > > > > scripts/Makefile.vmlinux | 2 +-
> > > > > scripts/mksysmap | 3 +++
> > > > > 3 files changed, 5 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> > > > > index ae2d2359b79e9..cfa63860dfd4c 100644
> > > > > --- a/include/asm-generic/vmlinux.lds.h
> > > > > +++ b/include/asm-generic/vmlinux.lds.h
> > > > > @@ -831,6 +831,7 @@ defined(CONFIG_AUTOFDO_CLANG) || defined(CONFIG_PROPELLER_CLANG)
> > > > >
> > > > > /* Required sections not related to debugging. */
> > > > > #define ELF_DETAILS \
> > > > > + .modinfo : { *(.modinfo) } \
> > > > > .comment 0 : { *(.comment) } \
> > > > > .symtab 0 : { *(.symtab) } \
> > > > > .strtab 0 : { *(.strtab) } \
> > > > > @@ -1044,7 +1045,6 @@ defined(CONFIG_AUTOFDO_CLANG) || defined(CONFIG_PROPELLER_CLANG)
> > > > > *(.discard.*) \
> > > > > *(.export_symbol) \
> > > > > *(.no_trim_symbol) \
> > > > > - *(.modinfo) \
> > > > > /* ld.bfd warns about .gnu.version* even when not emitted */ \
> > > > > *(.gnu.version*) \
> > > > >
> > > > > diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux
> > > > > index 4f2d4c3fb7372..e2ceeb9e168d4 100644
> > > > > --- a/scripts/Makefile.vmlinux
> > > > > +++ b/scripts/Makefile.vmlinux
> > > > > @@ -86,7 +86,7 @@ endif
> > > > > # vmlinux
> > > > > # ---------------------------------------------------------------------------
> > > > >
> > > > > -remove-section-y :=
> > > > > +remove-section-y := .modinfo
> > > > > remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
> > > > >
> > > > > quiet_cmd_strip_relocs = OBJCOPY $@
> > > > > diff --git a/scripts/mksysmap b/scripts/mksysmap
> > > > > index 3accbdb269ac7..a607a0059d119 100755
> > > > > --- a/scripts/mksysmap
> > > > > +++ b/scripts/mksysmap
> > > > > @@ -79,6 +79,9 @@
> > > > > / _SDA_BASE_$/d
> > > > > / _SDA2_BASE_$/d
> > > > >
> > > > > +# MODULE_INFO()
> > > > > +/ __UNIQUE_ID_modinfo[0-9]*$/d
> > > > > +
> > > > > # ---------------------------------------------------------------------------
> > > > > # Ignored patterns
> > > > > # (symbols that contain the pattern are ignored)
> > > > > --
> > > > > 2.50.1
> > > > >
> > > >
> > > > Hi Alexey,
> > > >
> > > > with this patch applied, I still get a warning from objcpy as Masahiro
> > > > and Stephen wrote [1,2]
> > > >
> > > > SORTTAB vmlinux.unstripped
> > > > + sorttable vmlinux.unstripped
> > > > + nm -S vmlinux.unstripped
> > > > + ./scripts/sorttable -s .tmp_vmlinux.nm-sort vmlinux.unstripped
> > > > + is_enabled CONFIG_KALLSYMS
> > > > + grep -q ^CONFIG_KALLSYMS=y include/config/auto.conf
> > > > + cmp -s System.map .tmp_vmlinux2.syms
> > > > + echo vmlinux.unstripped: ../scripts/link-vmlinux.sh
> > > > # OBJCOPY vmlinux
> > > > objcopy --remove-section=.modinfo vmlinux.unstripped vmlinux
> > > > objcopy: vmlinux.unstripped: warning: empty loadable segment detected at vaddr=0xffff8000807a0000, is this intentional?
> > > >
> > > > (arm64, allnoconfig)
> > > >
> > > > Kind regards,
> > > > Nicolas
> > > >
> > > >
> > > > [1]: https://lore.kernel.org/linux-kbuild/CAK7LNAR-gD2H6Kk-rZjo0R3weTHCGTm0a=u2tRH1WWW6Sx6=RQ@mail.gmail.com/
> > > > [2]: https://lore.kernel.org/lkml/20250730164047.7c4a731a@canb.auug.org.au/
> > > >
> > >
> > > Hm. I missed that. I need to investigate how to fix this. Nothing comes
> > > to mind right now.
> >
> > Same here. Only thing I could find until now is
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/scripts/link-vmlinux.sh?id=90ceddcb495008ac8ba7a3dce297841efcd7d584
> >
> > where '2>/dev/null' is appended exactly to prevent this very warning.
> > But for me, it doesn't feel good doing that when stripping to vmlinux.
>
> Yes, that's not a very good approach. It will hide other errors that will
> definitely need to be seen. I think the commit you mentioned is actually
> incorrect. I think there should be a different solution.
>
> I think in the case of .modinfo, we can change the flag in the section
> since we are going to delete it anyway.
>
> diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux
> index dbbe3bf0cf23..9a118b31d0dc 100644
> --- a/scripts/Makefile.vmlinux
> +++ b/scripts/Makefile.vmlinux
> @@ -87,7 +87,8 @@ remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
> remove-symbols := -w --strip-symbol='__mod_device_table__*'
>
> quiet_cmd_strip_relocs = OBJCOPY $@
> - cmd_strip_relocs = $(OBJCOPY) $(addprefix --remove-section=,$(remove-section-y)) \
> + cmd_strip_relocs = $(OBJCOPY) $(patsubst %,--set-section-flags %=noload,$(remove-section-y)) $< && \
> + $(OBJCOPY) $(addprefix --remove-section=,$(remove-section-y)) \
> $(remove-symbols) $< $@
>
> targets += vmlinux
Ah, great! I thought we had to fiddle around with linker scripts et al.
I needed to use an intermediate file:
diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux
index e2ceeb9e168d..516d51ca634b 100644
--- a/scripts/Makefile.vmlinux
+++ b/scripts/Makefile.vmlinux
@@ -90,6 +90,9 @@ remove-section-y := .modinfo
remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
quiet_cmd_strip_relocs = OBJCOPY $@
- cmd_strip_relocs = $(OBJCOPY) $(addprefix --remove-section=,$(remove-section-y)) $< $@
+ cmd_strip_relocs = set -e; \
+ trap 'rm $<.noload' EXIT HUP INT; \
+ $(OBJCOPY) $(patsubst %,--set-section-flags %=noload,$(remove-section-y)) $< $<.noload && \
+ $(OBJCOPY) $(addprefix --remove-section=,$(remove-section-y)) $<.noload $@
targets += vmlinux
Kind regards,
Nicolas
next prev parent reply other threads:[~2025-09-16 12:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-18 16:54 [PATCH v7 0/8] Add generated modalias to modules.builtin.modinfo Alexey Gladkov
2025-08-18 16:54 ` [PATCH v7 1/8] s390: vmlinux.lds.S: Reorder sections Alexey Gladkov
2025-08-18 16:54 ` [PATCH v7 2/8] kbuild: always create intermediate vmlinux.unstripped Alexey Gladkov
2025-09-17 11:57 ` Nicolas Schier
2025-08-18 16:54 ` [PATCH v7 3/8] kbuild: keep .modinfo section in vmlinux.unstripped Alexey Gladkov
2025-09-15 5:56 ` Nicolas Schier
2025-09-16 7:12 ` Alexey Gladkov
2025-09-16 9:36 ` Nicolas Schier
2025-09-16 11:30 ` Alexey Gladkov
2025-09-16 12:42 ` Nicolas Schier [this message]
2025-09-16 13:03 ` Alexey Gladkov
2025-09-16 13:28 ` Nicolas Schier
2025-09-17 1:10 ` Nathan Chancellor
2025-09-17 6:49 ` Alexey Gladkov
2025-09-17 11:55 ` Nicolas Schier
2025-09-17 12:38 ` Alexey Gladkov
2025-09-18 4:08 ` Nicolas Schier
2025-08-18 16:54 ` [PATCH v7 4/8] kbuild: extract modules.builtin.modinfo from vmlinux.unstripped Alexey Gladkov
2025-09-17 11:57 ` Nicolas Schier
2025-08-18 16:54 ` [PATCH v7 5/8] scsi: Always define blogic_pci_tbl structure Alexey Gladkov
2025-08-18 16:55 ` [PATCH v7 6/8] modpost: Add modname to mod_device_table alias Alexey Gladkov
2025-09-14 20:07 ` Nicolas Schier
2025-08-18 16:55 ` [PATCH v7 7/8] modpost: Create modalias for builtin modules Alexey Gladkov
2025-08-18 16:55 ` [PATCH v7 8/8] kbuild: vmlinux.unstripped should always depend on .vmlinux.export.o Alexey Gladkov
2025-10-02 16:37 ` ChaosEsque Team
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=aMlbSEnwGOPM39Op@levanger \
--to=nsc@kernel.org \
--cc=da.gomez@samsung.com \
--cc=legion@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=mcgrof@kernel.org \
--cc=nathan@kernel.org \
--cc=petr.pavlu@suse.com \
--cc=samitolvanen@google.com \
/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.