1 # SPDX-License-Identifier: GPL-2.0 1 # SPDX-License-Identifier: GPL-2.0 2 KASAN_SANITIZE := n 2 KASAN_SANITIZE := n 3 UBSAN_SANITIZE := n 3 UBSAN_SANITIZE := n 4 KCOV_INSTRUMENT := n 4 KCOV_INSTRUMENT := n 5 5 6 # Disable ftrace to avoid recursion. 6 # Disable ftrace to avoid recursion. 7 CFLAGS_REMOVE_common.o = $(CC_FLAGS_FTRACE) 7 CFLAGS_REMOVE_common.o = $(CC_FLAGS_FTRACE) 8 CFLAGS_REMOVE_generic.o = $(CC_FLAGS_FTRACE) 8 CFLAGS_REMOVE_generic.o = $(CC_FLAGS_FTRACE) 9 CFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE) 9 CFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE) 10 CFLAGS_REMOVE_quarantine.o = $(CC_FLAGS_FTRACE 10 CFLAGS_REMOVE_quarantine.o = $(CC_FLAGS_FTRACE) 11 CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE) 11 CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE) 12 CFLAGS_REMOVE_report_generic.o = $(CC_FLAGS_FT 12 CFLAGS_REMOVE_report_generic.o = $(CC_FLAGS_FTRACE) 13 CFLAGS_REMOVE_report_hw_tags.o = $(CC_FLAGS_FT 13 CFLAGS_REMOVE_report_hw_tags.o = $(CC_FLAGS_FTRACE) 14 CFLAGS_REMOVE_report_sw_tags.o = $(CC_FLAGS_FT 14 CFLAGS_REMOVE_report_sw_tags.o = $(CC_FLAGS_FTRACE) 15 CFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE) 15 CFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE) 16 CFLAGS_REMOVE_hw_tags.o = $(CC_FLAGS_FTRACE) 16 CFLAGS_REMOVE_hw_tags.o = $(CC_FLAGS_FTRACE) 17 CFLAGS_REMOVE_sw_tags.o = $(CC_FLAGS_FTRACE) 17 CFLAGS_REMOVE_sw_tags.o = $(CC_FLAGS_FTRACE) 18 18 19 # Function splitter causes unnecessary splits 19 # Function splitter causes unnecessary splits in __asan_load1/__asan_store1 20 # see: https://gcc.gnu.org/bugzilla/show_bug.c 20 # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533 21 CC_FLAGS_KASAN_RUNTIME := $(call cc-option, -f 21 CC_FLAGS_KASAN_RUNTIME := $(call cc-option, -fno-conserve-stack) 22 CC_FLAGS_KASAN_RUNTIME += -fno-stack-protector 22 CC_FLAGS_KASAN_RUNTIME += -fno-stack-protector 23 # Disable branch tracing to avoid recursion. 23 # Disable branch tracing to avoid recursion. 24 CC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PRO 24 CC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PROFILING 25 25 26 CFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME) 26 CFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME) 27 CFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME) 27 CFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME) 28 CFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME) 28 CFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME) 29 CFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIM 29 CFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIME) 30 CFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME) 30 CFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME) 31 CFLAGS_report_generic.o := $(CC_FLAGS_KASAN_RU 31 CFLAGS_report_generic.o := $(CC_FLAGS_KASAN_RUNTIME) 32 CFLAGS_report_hw_tags.o := $(CC_FLAGS_KASAN_RU 32 CFLAGS_report_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 33 CFLAGS_report_sw_tags.o := $(CC_FLAGS_KASAN_RU 33 CFLAGS_report_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 34 CFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME) 34 CFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME) 35 CFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 35 CFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 36 CFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 36 CFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) 37 37 38 CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc 38 CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-disable-warning, vla) 39 ifndef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX 39 ifndef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX 40 # If compiler instruments memintrinsics by pre 40 # If compiler instruments memintrinsics by prefixing them with __asan/__hwasan, 41 # we need to treat them normally (as builtins) 41 # we need to treat them normally (as builtins), otherwise the compiler won't 42 # recognize them as instrumentable. If it does 42 # recognize them as instrumentable. If it doesn't instrument them, we need to 43 # pass -fno-builtin, so the compiler doesn't i 43 # pass -fno-builtin, so the compiler doesn't inline them. 44 CFLAGS_KASAN_TEST += -fno-builtin 44 CFLAGS_KASAN_TEST += -fno-builtin 45 endif 45 endif 46 46 47 CFLAGS_kasan_test_c.o := $(CFLAGS_KASAN_TEST) !! 47 CFLAGS_kasan_test.o := $(CFLAGS_KASAN_TEST) 48 RUSTFLAGS_kasan_test_rust.o := $(RUSTFLAGS_KAS << 49 CFLAGS_kasan_test_module.o := $(CFLAGS_KASAN_T 48 CFLAGS_kasan_test_module.o := $(CFLAGS_KASAN_TEST) 50 49 51 obj-y := common.o report.o 50 obj-y := common.o report.o 52 obj-$(CONFIG_KASAN_GENERIC) += init.o generic. 51 obj-$(CONFIG_KASAN_GENERIC) += init.o generic.o report_generic.o shadow.o quarantine.o 53 obj-$(CONFIG_KASAN_HW_TAGS) += hw_tags.o repor 52 obj-$(CONFIG_KASAN_HW_TAGS) += hw_tags.o report_hw_tags.o tags.o report_tags.o 54 obj-$(CONFIG_KASAN_SW_TAGS) += init.o report_s 53 obj-$(CONFIG_KASAN_SW_TAGS) += init.o report_sw_tags.o shadow.o sw_tags.o tags.o report_tags.o 55 << 56 kasan_test-objs := kasan_test_c.o << 57 ifdef CONFIG_RUST << 58 kasan_test-objs += kasan_test_rust.o << 59 endif << 60 54 61 obj-$(CONFIG_KASAN_KUNIT_TEST) += kasan_test.o 55 obj-$(CONFIG_KASAN_KUNIT_TEST) += kasan_test.o 62 obj-$(CONFIG_KASAN_MODULE_TEST) += kasan_test_ 56 obj-$(CONFIG_KASAN_MODULE_TEST) += kasan_test_module.o
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.