mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
| diff -drupN a/arch/Kconfig b/arch/Kconfig
 | |
| --- a/arch/Kconfig	2018-08-06 17:23:04.000000000 +0300
 | |
| +++ b/arch/Kconfig	2022-06-12 05:28:14.000000000 +0300
 | |
| @@ -489,6 +489,74 @@ config LD_DEAD_CODE_DATA_ELIMINATION
 | |
|  	  sections (e.g., '.text.init'). Typically '.' in section names
 | |
|  	  is used to distinguish them from label names / C identifiers.
 | |
|  
 | |
| +config LTO
 | |
| +	def_bool n
 | |
| +
 | |
| +config ARCH_SUPPORTS_LTO_CLANG
 | |
| +	bool
 | |
| +	help
 | |
| +	  An architecture should select this option it supports:
 | |
| +	  - compiling with clang,
 | |
| +	  - compiling inline assembly with clang's integrated assembler,
 | |
| +	  - and linking with either lld or GNU gold w/ LLVMgold.
 | |
| +
 | |
| +choice
 | |
| +	prompt "Link-Time Optimization (LTO) (EXPERIMENTAL)"
 | |
| +	default LTO_NONE
 | |
| +	help
 | |
| +	  This option turns on Link-Time Optimization (LTO).
 | |
| +
 | |
| +config LTO_NONE
 | |
| +	bool "None"
 | |
| +
 | |
| +config LTO_CLANG
 | |
| +	bool "Use clang Link Time Optimization (LTO) (EXPERIMENTAL)"
 | |
| +	depends on ARCH_SUPPORTS_LTO_CLANG
 | |
| +	depends on !FTRACE_MCOUNT_RECORD || HAVE_C_RECORDMCOUNT
 | |
| +	select LTO
 | |
| +	select THIN_ARCHIVES
 | |
| +	select LD_DEAD_CODE_DATA_ELIMINATION
 | |
| +	help
 | |
| +          This option enables clang's Link Time Optimization (LTO), which allows
 | |
| +          the compiler to optimize the kernel globally at link time. If you
 | |
| +          enable this option, the compiler generates LLVM IR instead of object
 | |
| +          files, and the actual compilation from IR occurs at the LTO link step,
 | |
| +          which may take several minutes.
 | |
| +
 | |
| +          If you select this option, you must compile the kernel with clang >=
 | |
| +          5.0 (make CC=clang) and GNU gold from binutils >= 2.27, and have the
 | |
| +          LLVMgold plug-in in LD_LIBRARY_PATH.
 | |
| +
 | |
| +endchoice
 | |
| +
 | |
| +config CFI
 | |
| +	bool
 | |
| +
 | |
| +config CFI_PERMISSIVE
 | |
| +	bool "Use CFI in permissive mode"
 | |
| +	depends on CFI
 | |
| +	help
 | |
| +	  When selected, Control Flow Integrity (CFI) violations result in a
 | |
| +	  warning instead of a kernel panic. This option is useful for finding
 | |
| +	  CFI violations in drivers during development.
 | |
| +
 | |
| +config CFI_CLANG
 | |
| +	bool "Use clang Control Flow Integrity (CFI) (EXPERIMENTAL)"
 | |
| +	depends on LTO_CLANG
 | |
| +	depends on KALLSYMS
 | |
| +	select CFI
 | |
| +	help
 | |
| +	  This option enables clang Control Flow Integrity (CFI), which adds
 | |
| +	  runtime checking for indirect function calls.
 | |
| +
 | |
| +config CFI_CLANG_SHADOW
 | |
| +	bool "Use CFI shadow to speed up cross-module checks"
 | |
| +	default y
 | |
| +	depends on CFI_CLANG
 | |
| +	help
 | |
| +	  If you select this option, the kernel builds a fast look-up table of
 | |
| +	  CFI check functions in loaded modules to reduce overhead.
 | |
| +
 | |
|  config HAVE_ARCH_WITHIN_STACK_FRAMES
 | |
|  	bool
 | |
|  	help
 |