1 SECTIONS { 2 #ifdef CONFIG_ARM64_MODULE_PLTS 3 .plt 0 : { BYTE(0) } 4 .init.plt 0 : { BYTE(0) } 5 .text.ftrace_trampoline 0 : { BYTE(0) } 6 7 #ifdef CONFIG_CRYPTO_FIPS140 8 /* 9 * The FIPS140 module incorporates copies of builtin code, which gets 10 * integrity checked at module load time, and registered in a way that 11 * ensures that the integrity checked versions supersede the builtin 12 * ones. These objects are compiled as builtin code, and so their init 13 * hooks will be exported from the binary in the same way as builtin 14 * initcalls are, i.e., annotated with a level that defines the order 15 * in which the hooks are expected to be invoked. 16 */ 17 #define INIT_CALLS_LEVEL(level) \ 18 KEEP(*(.initcall##level##.init*)) \ 19 KEEP(*(.initcall##level##s.init*)) 20 21 .initcalls : { 22 *(.initcalls._start) 23 INIT_CALLS_LEVEL(0) 24 INIT_CALLS_LEVEL(1) 25 INIT_CALLS_LEVEL(2) 26 INIT_CALLS_LEVEL(3) 27 INIT_CALLS_LEVEL(4) 28 INIT_CALLS_LEVEL(5) 29 INIT_CALLS_LEVEL(rootfs) 30 INIT_CALLS_LEVEL(6) 31 INIT_CALLS_LEVEL(7) 32 *(.initcalls._end) 33 } 34 #endif 35 #endif 36 37 #ifdef CONFIG_KASAN_SW_TAGS 38 /* 39 * Outlined checks go into comdat-deduplicated sections named .text.hot. 40 * Because they are in comdats they are not combined by the linker and 41 * we otherwise end up with multiple sections with the same .text.hot 42 * name in the .ko file. The kernel module loader warns if it sees 43 * multiple sections with the same name so we use this sections 44 * directive to force them into a single section and silence the 45 * warning. 46 */ 47 .text.hot : { *(.text.hot) } 48 #endif 49 } 50