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
|