• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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