Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

module.lds.S: Fix modules on 32-bit parisc architecture

On the 32-bit parisc architecture, we always used the
-ffunction-sections compiler option to tell the compiler to put the
functions into seperate text sections. This is necessary, otherwise
"big" kernel modules like ext4 or ipv6 fail to load because some
branches won't be able to reach their stubs.

Commit 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related
macros") broke this for parisc because all text sections will get
unconditionally merged now.

Introduce the ARCH_WANTS_MODULES_TEXT_SECTIONS config option which
avoids the text section merge for modules, and fix this issue by
enabling this option by default for 32-bit parisc.

Fixes: 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros")
Cc: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: stable@vger.kernel.org # v6.19+
Suggested-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Helge Deller <deller@gmx.de>

+10
+7
arch/Kconfig
··· 1127 1127 For architectures like powerpc/32 which have constraints on module 1128 1128 allocation and need to allocate module data outside of module area. 1129 1129 1130 + config ARCH_WANTS_MODULES_TEXT_SECTIONS 1131 + bool 1132 + help 1133 + For architectures like 32-bit parisc which require that functions in 1134 + modules have to keep code in own text sections (-ffunction-sections) 1135 + and to avoid merging all text into one big text section, 1136 + 1130 1137 config ARCH_WANTS_EXECMEM_LATE 1131 1138 bool 1132 1139 help
+1
arch/parisc/Kconfig
··· 8 8 select HAVE_FUNCTION_GRAPH_TRACER 9 9 select HAVE_SYSCALL_TRACEPOINTS 10 10 select ARCH_WANT_FRAME_POINTERS 11 + select ARCH_WANTS_MODULES_TEXT_SECTIONS if !64BIT 11 12 select ARCH_HAS_CPU_CACHE_ALIASING 12 13 select ARCH_HAS_DMA_ALLOC if PA11 13 14 select ARCH_HAS_DMA_OPS
+2
scripts/module.lds.S
··· 40 40 __kcfi_traps 0 : { KEEP(*(.kcfi_traps)) } 41 41 #endif 42 42 43 + #ifndef CONFIG_ARCH_WANTS_MODULES_TEXT_SECTIONS 43 44 .text 0 : { 44 45 *(.text .text.[0-9a-zA-Z_]*) 45 46 } 47 + #endif 46 48 47 49 .bss 0 : { 48 50 *(.bss .bss.[0-9a-zA-Z_]*)