mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 09:02:21 -04:00
Commit1ba9f89794("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros") added .text and made .data, .bss, and .rodata sections unconditional in the module linker script, but without an explicit address like the other sections in the same file. When linking modules with ld.bfd -r, sections defined without an address inherit the location counter, resulting in non-zero sh_addr values in the .ko. Relocatable objects are expected to have sh_addr=0 for these sections and these non-zero addresses confuse elfutils and have been reported to cause segmentation faults in SystemTap [1]. Add the 0 address specifier to all sections in module.lds, including the .codetag.* sections via MOD_SEPARATE_CODETAG_SECTIONS macro. Link: https://sourceware.org/bugzilla/show_bug.cgi?id=33958 Fixes:1ba9f89794("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros") Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Reviewed-by: Petr Pavlu <petr.pavlu@suse.com> Acked-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
68 lines
1.6 KiB
ArmAsm
68 lines
1.6 KiB
ArmAsm
/*
|
|
* Common module linker script, always used when linking a module.
|
|
* Archs are free to supply their own linker scripts. ld will
|
|
* combine them automatically.
|
|
*/
|
|
#ifdef CONFIG_UNWIND_TABLES
|
|
#define DISCARD_EH_FRAME
|
|
#else
|
|
#define DISCARD_EH_FRAME *(.eh_frame)
|
|
#endif
|
|
|
|
#include <asm-generic/codetag.lds.h>
|
|
|
|
SECTIONS {
|
|
/DISCARD/ : {
|
|
*(.discard)
|
|
*(.discard.*)
|
|
*(.export_symbol)
|
|
*(.no_trim_symbol)
|
|
}
|
|
|
|
__ksymtab 0 : ALIGN(8) { *(SORT(___ksymtab+*)) }
|
|
__ksymtab_gpl 0 : ALIGN(8) { *(SORT(___ksymtab_gpl+*)) }
|
|
__kcrctab 0 : ALIGN(4) { *(SORT(___kcrctab+*)) }
|
|
__kcrctab_gpl 0 : ALIGN(4) { *(SORT(___kcrctab_gpl+*)) }
|
|
|
|
.ctors 0 : ALIGN(8) { *(SORT(.ctors.*)) *(.ctors) }
|
|
.init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) }
|
|
|
|
.altinstructions 0 : ALIGN(8) { KEEP(*(.altinstructions)) }
|
|
__bug_table 0 : ALIGN(8) { KEEP(*(__bug_table)) }
|
|
__jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
|
|
__ex_table 0 : ALIGN(4) { KEEP(*(__ex_table)) }
|
|
|
|
__patchable_function_entries 0 : { *(__patchable_function_entries) }
|
|
|
|
.init.klp_funcs 0 : ALIGN(8) { KEEP(*(.init.klp_funcs)) }
|
|
.init.klp_objects 0 : ALIGN(8) { KEEP(*(.init.klp_objects)) }
|
|
|
|
#ifdef CONFIG_ARCH_USES_CFI_TRAPS
|
|
__kcfi_traps 0 : { KEEP(*(.kcfi_traps)) }
|
|
#endif
|
|
|
|
.text 0 : {
|
|
*(.text .text.[0-9a-zA-Z_]*)
|
|
}
|
|
|
|
.bss 0 : {
|
|
*(.bss .bss.[0-9a-zA-Z_]*)
|
|
*(.bss..L*)
|
|
}
|
|
|
|
.data 0 : {
|
|
*(.data .data.[0-9a-zA-Z_]*)
|
|
*(.data..L*)
|
|
}
|
|
|
|
.rodata 0 : {
|
|
*(.rodata .rodata.[0-9a-zA-Z_]*)
|
|
*(.rodata..L*)
|
|
}
|
|
|
|
MOD_SEPARATE_CODETAG_SECTIONS()
|
|
}
|
|
|
|
/* bring in arch-specific sections */
|
|
#include <asm/module.lds.h>
|