mirror of
https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9.git
synced 2026-09-10 06:09:48 +08:00
Bugzilla: https://bugzilla.redhat.com/2234390 Upstream Status: RHEL only This commit is part of a series which reverts https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/2687 whose purpose was to address https://bugzilla.redhat.com/2183343 This reverts centos-stream-9 commit4ea8cf7a2bcommit4ea8cf7a2bAuthor: Sebastian Ott <sebott@redhat.com> Date: Tue Jun 20 12:51:25 2023 -0400 arm64: unwind: add asynchronous unwind tables to kernel and modules Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2183343 Enable asynchronous unwind table generation for both the core kernel as well as modules, and emit the resulting .eh_frame sections as init code so we can use the unwind directives for code patching at boot or module load time. This will be used by dynamic shadow call stack support, which will rely on code patching rather than compiler codegen to emit the shadow call stack push and pop instructions. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Sami Tolvanen <samitolvanen@google.com> Tested-by: Sami Tolvanen <samitolvanen@google.com> Link: https://lore.kernel.org/r/20221027155908.1940624-2-ardb@kernel.org Signed-off-by: Will Deacon <will@kernel.org> (cherry picked from commit 68c76ad4a9571a2b603665c85cf8229bcf04982a) Signed-off-by: Sebastian Ott <sebott@redhat.com> Note: minor conflicts in drivers/firmware/efi/libstub/Makefile include/asm-generic/vmlinux.lds.h scripts/module.lds.S Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
67 lines
1.5 KiB
ArmAsm
67 lines
1.5 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_CFI_CLANG
|
|
# include <asm/page.h>
|
|
# define ALIGN_CFI ALIGN(PAGE_SIZE)
|
|
# define SANITIZER_DISCARDS *(.eh_frame)
|
|
#else
|
|
# define ALIGN_CFI
|
|
# define SANITIZER_DISCARDS
|
|
#endif
|
|
|
|
SECTIONS {
|
|
/DISCARD/ : {
|
|
*(.discard)
|
|
*(.discard.*)
|
|
SANITIZER_DISCARDS
|
|
}
|
|
|
|
__ksymtab 0 : { *(SORT(___ksymtab+*)) }
|
|
__ksymtab_gpl 0 : { *(SORT(___ksymtab_gpl+*)) }
|
|
__kcrctab 0 : { *(SORT(___kcrctab+*)) }
|
|
__kcrctab_gpl 0 : { *(SORT(___kcrctab_gpl+*)) }
|
|
|
|
.init_array 0 : ALIGN(8) { *(SORT(.init_array.*)) *(.init_array) }
|
|
|
|
__jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
|
|
|
|
__patchable_function_entries : { *(__patchable_function_entries) }
|
|
|
|
#ifdef CONFIG_LTO_CLANG
|
|
/*
|
|
* With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and
|
|
* -ffunction-sections, which increases the size of the final module.
|
|
* Merge the split sections in the final binary.
|
|
*/
|
|
.bss : {
|
|
*(.bss .bss.[0-9a-zA-Z_]*)
|
|
*(.bss..L*)
|
|
}
|
|
|
|
.data : {
|
|
*(.data .data.[0-9a-zA-Z_]*)
|
|
*(.data..L*)
|
|
}
|
|
|
|
.rodata : {
|
|
*(.rodata .rodata.[0-9a-zA-Z_]*)
|
|
*(.rodata..L*)
|
|
}
|
|
|
|
/*
|
|
* With CONFIG_CFI_CLANG, we assume __cfi_check is at the beginning
|
|
* of the .text section, and is aligned to PAGE_SIZE.
|
|
*/
|
|
.text : ALIGN_CFI {
|
|
*(.text.__cfi_check)
|
|
*(.text .text.[0-9a-zA-Z_]* .text..L.cfi*)
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* bring in arch-specific sections */
|
|
#include <asm/module.lds.h>
|