]> www.infradead.org Git - users/hch/misc.git/commitdiff
kbuild: keep .modinfo section in vmlinux.unstripped
authorMasahiro Yamada <masahiroy@kernel.org>
Thu, 18 Sep 2025 08:05:47 +0000 (10:05 +0200)
committerNathan Chancellor <nathan@kernel.org>
Wed, 24 Sep 2025 16:10:44 +0000 (09:10 -0700)
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>
Signed-off-by: Alexey Gladkov <legion@kernel.org>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/aaf67c07447215463300fccaa758904bac42f992.1758182101.git.legion@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
include/asm-generic/vmlinux.lds.h
scripts/Makefile.vmlinux
scripts/mksysmap

index ae2d2359b79e9e929e6507b107fe7099762f9a02..cfa63860dfd4cfbc46743d1237edf90bc7903b09 100644 (file)
@@ -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*)                                                \
 
index 4f2d4c3fb7372df0617ae3bfd3b0b6a00f54a2bb..70856dab0f541e776e0d118e5203be58f2e59f8c 100644 (file)
@@ -86,11 +86,14 @@ endif
 # vmlinux
 # ---------------------------------------------------------------------------
 
-remove-section-y                                   :=
+remove-section-y                                   := .modinfo
 remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*'
 
+# To avoid warnings: "empty loadable segment detected at ..." from GNU objcopy,
+# it is necessary to remove the PT_LOAD flag from the segment.
 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)) $@
 
 targets += vmlinux
 vmlinux: vmlinux.unstripped FORCE
index 3accbdb269ac70913c8b62dc9752420fe7ec7f05..a607a0059d119e76d1a9fd3b3bc1a226156a7bca 100755 (executable)
@@ -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)