68c76ad4a9
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>
29 lines
834 B
C
29 lines
834 B
C
SECTIONS {
|
|
#ifdef CONFIG_ARM64_MODULE_PLTS
|
|
.plt 0 : { BYTE(0) }
|
|
.init.plt 0 : { BYTE(0) }
|
|
.text.ftrace_trampoline 0 : { BYTE(0) }
|
|
#endif
|
|
|
|
#ifdef CONFIG_KASAN_SW_TAGS
|
|
/*
|
|
* Outlined checks go into comdat-deduplicated sections named .text.hot.
|
|
* Because they are in comdats they are not combined by the linker and
|
|
* we otherwise end up with multiple sections with the same .text.hot
|
|
* name in the .ko file. The kernel module loader warns if it sees
|
|
* multiple sections with the same name so we use this sections
|
|
* directive to force them into a single section and silence the
|
|
* warning.
|
|
*/
|
|
.text.hot : { *(.text.hot) }
|
|
#endif
|
|
|
|
#ifdef CONFIG_UNWIND_TABLES
|
|
/*
|
|
* Currently, we only use unwind info at module load time, so we can
|
|
* put it into the .init allocation.
|
|
*/
|
|
.init.eh_frame : { *(.eh_frame) }
|
|
#endif
|
|
}
|