All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Gladkov <legion@kernel.org>
To: Nicolas Schier <nsc@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 13:30:20 +0200	[thread overview]
Message-ID: <aMlKTPpNXrRW6v_7@example.org> (raw)
In-Reply-To: <aMkvtg55F1gJ5feM@levanger>

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
-- 
Rgrds, legion


  reply	other threads:[~2025-09-16 11:30 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 [this message]
2025-09-16 12:42           ` Nicolas Schier
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=aMlKTPpNXrRW6v_7@example.org \
    --to=legion@kernel.org \
    --cc=da.gomez@samsung.com \
    --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=nsc@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.