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 fa5f19b8d53a..1791665006f9 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 4f2d4c3fb737..e2ceeb9e168d 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 3accbdb269ac..a607a0059d11 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
On Thu, Jul 24, 2025 at 03:49:40PM +0200, Alexey Gladkov wrote: Hi Alexey, Masahiro, > 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 fa5f19b8d53a..1791665006f9 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) } \ FWIW, to me .modinfo logically does not quite belong to ELF_DETAILS, since it is not about ELF. I would guess, that you want to make a minimal code impact to the linker scripts, but with that you turn .modinfo the only section among ones that do not make it to the final image: STABS_DEBUG DWARF_DEBUG ELF_DETAILS That immediately breaks s390, but also is a call for trouble in the future, as far as I am concerned. Would it makes sense to introduce e.g MODINFO instead? > .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*) \ Thanks!
On Mon, Jul 28, 2025 at 10:58 PM Alexander Gordeev <agordeev@linux.ibm.com> wrote: > > On Thu, Jul 24, 2025 at 03:49:40PM +0200, Alexey Gladkov wrote: > > Hi Alexey, Masahiro, > > > 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 fa5f19b8d53a..1791665006f9 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) } \ > > FWIW, to me .modinfo logically does not quite belong to ELF_DETAILS, > since it is not about ELF. > > I would guess, that you want to make a minimal code impact to the > linker scripts, but with that you turn .modinfo the only section > among ones that do not make it to the final image: > > STABS_DEBUG > DWARF_DEBUG > ELF_DETAILS > > That immediately breaks s390, but also is a call for trouble in > the future, as far as I am concerned. > > Would it makes sense to introduce e.g MODINFO instead? I am open to MODINFO addition, if Alexey is happy about modifying linker scripts for all arches. Yeah, it is tedious, though... > > > .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*) \ > > Thanks! -- Best Regards Masahiro Yamada
On Mon, Jul 28, 2025 at 03:57:53PM +0200, Alexander Gordeev wrote: > On Thu, Jul 24, 2025 at 03:49:40PM +0200, Alexey Gladkov wrote: > > Hi Alexey, Masahiro, > > > 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 fa5f19b8d53a..1791665006f9 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) } \ > > FWIW, to me .modinfo logically does not quite belong to ELF_DETAILS, > since it is not about ELF. The macro name ELF_DETAILS is rather unfortunate. The description says that these sections are not related to debugging. > I would guess, that you want to make a minimal code impact to the > linker scripts, but with that you turn .modinfo the only section > among ones that do not make it to the final image: > > STABS_DEBUG > DWARF_DEBUG > ELF_DETAILS > > That immediately breaks s390, but also is a call for trouble in > the future, as far as I am concerned. > > Would it makes sense to introduce e.g MODINFO instead? This will require patching all architectures to add MODINFO. This will have a significant code impact. To avoid this, .modinfo was added to ELF_DETAILS. > > .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*) \ > > Thanks! > -- Rgrds, legion
© 2016 - 2025 Red Hat, Inc.