1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 #include <asm/page-def.h> 3 4 SECTIONS { 5 .plt 0 : { BYTE(0) } 6 .init.plt 0 : { BYTE(0) } 7 .text.ftrace_trampoline 0 : { BYTE(0) } 8 9 #ifdef CONFIG_KASAN_SW_TAGS 10 /* 11 * Outlined checks go into comdat-deduplicated sections named .text.hot. 12 * Because they are in comdats they are not combined by the linker and 13 * we otherwise end up with multiple sections with the same .text.hot 14 * name in the .ko file. The kernel module loader warns if it sees 15 * multiple sections with the same name so we use this sections 16 * directive to force them into a single section and silence the 17 * warning. 18 */ 19 .text.hot : { *(.text.hot) } 20 #endif 21 22 #ifdef CONFIG_UNWIND_TABLES 23 /* 24 * Currently, we only use unwind info at module load time, so we can 25 * put it into the .init allocation. 26 */ 27 .init.eh_frame : { *(.eh_frame) } 28 #endif 29 30 #ifdef CONFIG_KVM ALIGN(PAGE_SIZE)31 .hyp.text : ALIGN(PAGE_SIZE) { 32 *(.hyp.text) 33 *(.hyp.text.ftrace_tramp) 34 . = ALIGN(PAGE_SIZE); 35 } ALIGN(PAGE_SIZE)36 .hyp.bss : ALIGN(PAGE_SIZE) { 37 *(.hyp.bss) 38 . = ALIGN(PAGE_SIZE); 39 } ALIGN(PAGE_SIZE)40 .hyp.rodata : ALIGN(PAGE_SIZE) { 41 *(.hyp.rodata) 42 . = ALIGN(PAGE_SIZE); 43 } ALIGN(PAGE_SIZE)44 .hyp.event_ids : ALIGN(PAGE_SIZE) { 45 /* 46 * Yet empty, without that *(.hyp.event_ids) input section 47 * (named after the output section), the location counter 48 * page-alignment below is ignored. 49 */ 50 *(.hyp.event_ids) 51 *(SORT(.hyp.event_ids.*)) 52 *(.hyp.printk_fmt_offset) 53 . = ALIGN(PAGE_SIZE); 54 } ALIGN(PAGE_SIZE)55 .hyp.patchable_function_entries : ALIGN(PAGE_SIZE) { 56 *(.hyp.patchable_function_entries) 57 . = ALIGN(PAGE_SIZE); 58 } ALIGN(PAGE_SIZE)59 .hyp.data : ALIGN(PAGE_SIZE) { 60 *(.hyp.data) 61 . = ALIGN(PAGE_SIZE); 62 } 63 .hyp.reloc : ALIGN(4) { *(.hyp.reloc) } 64 _hyp_events : { *(SORT(_hyp_events.*)) } 65 #endif 66 } 67