Re: [PATCH v8 7/8] modpost: Create modalias for builtin modules

From: Alexey Gladkov
Date: Fri Oct 10 2025 - 06:58:45 EST


On Fri, Oct 10, 2025 at 10:02:20AM +0200, Alexey Gladkov wrote:
> On Thu, Oct 09, 2025 at 10:37:36PM -0700, Nathan Chancellor wrote:
> > On Thu, Oct 09, 2025 at 09:52:08PM +0200, Nicolas Schier wrote:
> > > On Tue, Oct 07, 2025 at 12:15:21PM +0200, Alexey Gladkov wrote:
> > > > Hm. Indeed. I haven't found a good solution yet, but you can use the
> > > > following patch to unlock compilation. It won't solve the problem, it will
> > > > only hide it.
> > > >
> > > > --- a/scripts/Makefile.vmlinux
> > > > +++ b/scripts/Makefile.vmlinux
> > > > @@ -84,7 +84,7 @@ endif
> > > > remove-section-y := .modinfo
> > > > remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
> > > >
> > > > -remove-symbols := -w --strip-symbol='__mod_device_table__*'
> > > > +remove-symbols := -w --strip-unneeded-symbol='__mod_device_table__*'
> > > >
> > > > # To avoid warnings: "empty loadable segment detected at ..." from GNU objcopy,
> > > > # it is necessary to remove the PT_LOAD flag from the segment.
> > > >
> > >
> > > Is it problematic to hide that? Otherwise we'd have to revert the
> > > patch, right?
> >
> > Yeah, I would much prefer to ending up with pointless
> > __mod_device_table__ symbols in the final binary than erroring out
> > during the build...
>
> This is a very unpleasant problem, but it does not seem fatal. There will
> not be many such characters in the final vmlinux. In the configuration
> from the bug report, there are only:
>
> $ nm vmlinux.unstripped.riscv |grep -c __mod_device_table__
> 17
>
> Of course, this does not mean that the problem does not need to be solved.
>
> > Does this happen with other architectures? I have
> > not seen any reports yet but I have not tested anything yet.
>
> LDFLAGS_vmlinux for riscv was taken from arm64. I suspect that there may
> be the same problem there. But I haven't checked yet whether the problem
> actually exists on arm64.

I tried to compile the kernel for arm64 with CONFIG_RELOCATABLE=y.
It works without errors and the symbols are removed.

vmlinux.unstripped: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), statically linked, not stripped

--
Rgrds, legion