author: Linus Torvalds <torvalds@linux-foundation.org> 2021-04-27 10:16:46 -0700
committer: Linus Torvalds <torvalds@linux-foundation.org> 2021-04-27 10:16:46 -0700
commit: 57fa2369ab17d67e6232f85b868652fbf4407206
parent: 2fbc66c7838a7fbfb91bf8e119e51e73b4a8a0bc
Commit Summary:
Diffstat:
1 file changed, 15 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 70bfa5067c87..f03888cdba4e 100644
--- a/Makefile
+++ b/Makefile
@@ -924,6 +924,23 @@ KBUILD_AFLAGS += -fno-lto
export CC_FLAGS_LTO
endif
+ifdef CONFIG_CFI_CLANG
+CC_FLAGS_CFI := -fsanitize=cfi \
+ -fsanitize-cfi-cross-dso \
+ -fno-sanitize-cfi-canonical-jump-tables \
+ -fno-sanitize-trap=cfi \
+ -fno-sanitize-blacklist
+
+ifdef CONFIG_CFI_PERMISSIVE
+CC_FLAGS_CFI += -fsanitize-recover=cfi
+endif
+
+# If LTO flags are filtered out, we must also filter out CFI.
+CC_FLAGS_LTO += $(CC_FLAGS_CFI)
+KBUILD_CFLAGS += $(CC_FLAGS_CFI)
+export CC_FLAGS_CFI
+endif
+
ifdef CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B
KBUILD_CFLAGS += -falign-functions=32
endif