Merge tag 'hardening-v6.9-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / Kconfig
index fd18b7db2c777bb1223ffd0a4bcf0d5b11633330..9f066785bb71d93ca5da01a22d15ed2effba5901 100644 (file)
@@ -799,7 +799,7 @@ config CFI_CLANG
        depends on ARCH_SUPPORTS_CFI_CLANG
        depends on $(cc-option,-fsanitize=kcfi)
        help
-         This option enables Clangs forward-edge Control Flow Integrity
+         This option enables Clang's forward-edge Control Flow Integrity
          (CFI) checking, where the compiler injects a runtime check to each
          indirect function call to ensure the target is a valid function with
          the correct static type. This restricts possible call targets and
@@ -1597,4 +1597,16 @@ config FUNCTION_ALIGNMENT
        default 4 if FUNCTION_ALIGNMENT_4B
        default 0
 
+config CC_HAS_MIN_FUNCTION_ALIGNMENT
+       # Detect availability of the GCC option -fmin-function-alignment which
+       # guarantees minimal alignment for all functions, unlike
+       # -falign-functions which the compiler ignores for cold functions.
+       def_bool $(cc-option, -fmin-function-alignment=8)
+
+config CC_HAS_SANE_FUNCTION_ALIGNMENT
+       # Set if the guaranteed alignment with -fmin-function-alignment is
+       # available or extra care is required in the kernel. Clang provides
+       # strict alignment always, even with -falign-functions.
+       def_bool CC_HAS_MIN_FUNCTION_ALIGNMENT || CC_IS_CLANG
+
 endmenu