summaryrefslogtreecommitdiff
path: root/arch/alpha/kernel
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2026-09-05 15:29:39 -0400
committerMagnus Lindholm <linmag7@gmail.com>2026-10-18 00:44:42 +0200
commit27f48a2c82917cb4c6fd771734671c118d2cf2af (patch)
tree0e9ba2ea2466685191487393de5127f293041292 /arch/alpha/kernel
parente517a172b77601839e1c52ac4303602e285804bb (diff)
alpha: discard .eh_frame and the relocation sections
gcc emits .eh_frame for Alpha even though the kernel builds with -fno-asynchronous-unwind-tables, and nothing in the kernel consumes it: the stack trace code scans the stack for text addresses rather than unwinding DWARF. It was allocated in the loaded image, so dropping it shrinks vmlinux by about 1.1MB for a Marvel SMP configuration. The .rela* sections are equally useless, as the kernel image is not relocatable. The linker was already dropping their contents. Both were being placed as orphan sections, which is what drew attention to them. Assisted-by: Claude:claude-opus-5 Signed-off-by: Matt Turner <mattst88@gmail.com> Tested-by: Magnus Lindholm <linmag7@gmail.com> Reviewed-by: Magnus Lindholm <linmag7@gmail.com> Link: https://lore.kernel.org/r/20260905-arch-kconfig-options-v2-v2-18-83e8245761a2@gmail.com Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
Diffstat (limited to 'arch/alpha/kernel')
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index 95704e64b6a6..c44941d3b874 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -76,5 +76,16 @@ SECTIONS
MODINFO
ELF_DETAILS
+ /*
+ * gcc emits .eh_frame for Alpha even with
+ * -fno-asynchronous-unwind-tables, and the kernel has no DWARF
+ * unwinder to consume it. The relocation sections are likewise
+ * useless as the kernel image is not relocatable.
+ */
+ /DISCARD/ : {
+ *(.eh_frame)
+ *(.rela .rela*)
+ }
+
DISCARDS
}