]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scripts: Do not strip .rela.dyn section
authorAlexandre Ghiti <alexghiti@rivosinc.com>
Tue, 8 Apr 2025 07:28:51 +0000 (09:28 +0200)
committerAlexandre Ghiti <alexghiti@rivosinc.com>
Thu, 8 May 2025 12:01:01 +0000 (12:01 +0000)
The .rela.dyn section contains runtime relocations and is only emitted
for a relocatable kernel.

riscv uses this section to relocate the kernel at runtime but that section
is stripped from vmlinux. That prevents kexec to successfully load vmlinux
since it does not contain the relocations info needed.

Fixes: 559d1e45a16d ("riscv: Use --emit-relocs in order to move .rela.dyn in init")
Tested-by: Björn Töpel <bjorn@rivosinc.com>
Reviewed-by: Björn Töpel <bjorn@rivosinc.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250408072851.90275-1-alexghiti@rivosinc.com
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
scripts/Makefile.vmlinux

index b0a6cd5b818c9fe19d20f5ddf4908eb14b888ea9..85d60d9864016966f2677f8c3788310e790b4aba 100644 (file)
@@ -13,7 +13,7 @@ ifdef CONFIG_ARCH_VMLINUX_NEEDS_RELOCS
 vmlinux-final := vmlinux.unstripped
 
 quiet_cmd_strip_relocs = RSTRIP  $@
-      cmd_strip_relocs = $(OBJCOPY) --remove-section='.rel*' $< $@
+      cmd_strip_relocs = $(OBJCOPY) --remove-section='.rel*' --remove-section=!'.rel*.dyn' $< $@
 
 vmlinux: $(vmlinux-final) FORCE
        $(call if_changed,strip_relocs)