mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
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. Commit1ba9f89794("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:1ba9f89794("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>
This commit is contained in:
parent
3dce917902
commit
1221365f55
|
|
@ -1127,6 +1127,13 @@ config ARCH_WANTS_MODULES_DATA_IN_VMALLOC
|
||||||
For architectures like powerpc/32 which have constraints on module
|
For architectures like powerpc/32 which have constraints on module
|
||||||
allocation and need to allocate module data outside of module area.
|
allocation and need to allocate module data outside of module area.
|
||||||
|
|
||||||
|
config ARCH_WANTS_MODULES_TEXT_SECTIONS
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
For architectures like 32-bit parisc which require that functions in
|
||||||
|
modules have to keep code in own text sections (-ffunction-sections)
|
||||||
|
and to avoid merging all text into one big text section,
|
||||||
|
|
||||||
config ARCH_WANTS_EXECMEM_LATE
|
config ARCH_WANTS_EXECMEM_LATE
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ config PARISC
|
||||||
select HAVE_FUNCTION_GRAPH_TRACER
|
select HAVE_FUNCTION_GRAPH_TRACER
|
||||||
select HAVE_SYSCALL_TRACEPOINTS
|
select HAVE_SYSCALL_TRACEPOINTS
|
||||||
select ARCH_WANT_FRAME_POINTERS
|
select ARCH_WANT_FRAME_POINTERS
|
||||||
|
select ARCH_WANTS_MODULES_TEXT_SECTIONS if !64BIT
|
||||||
select ARCH_HAS_CPU_CACHE_ALIASING
|
select ARCH_HAS_CPU_CACHE_ALIASING
|
||||||
select ARCH_HAS_DMA_ALLOC if PA11
|
select ARCH_HAS_DMA_ALLOC if PA11
|
||||||
select ARCH_HAS_DMA_OPS
|
select ARCH_HAS_DMA_OPS
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,11 @@ SECTIONS {
|
||||||
__kcfi_traps 0 : { KEEP(*(.kcfi_traps)) }
|
__kcfi_traps 0 : { KEEP(*(.kcfi_traps)) }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARCH_WANTS_MODULES_TEXT_SECTIONS
|
||||||
.text 0 : {
|
.text 0 : {
|
||||||
*(.text .text.[0-9a-zA-Z_]*)
|
*(.text .text.[0-9a-zA-Z_]*)
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
.bss 0 : {
|
.bss 0 : {
|
||||||
*(.bss .bss.[0-9a-zA-Z_]*)
|
*(.bss .bss.[0-9a-zA-Z_]*)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user