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