1 # SPDX-License-Identifier: GPL-2.0
6 # Disable ftrace to avoid recursion.
7 CFLAGS_REMOVE_common.o = $(CC_FLAGS_FTRACE)
8 CFLAGS_REMOVE_generic.o = $(CC_FLAGS_FTRACE)
9 CFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE)
10 CFLAGS_REMOVE_quarantine.o = $(CC_FLAGS_FTRACE)
11 CFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE)
12 CFLAGS_REMOVE_report_generic.o = $(CC_FLAGS_FTRACE)
13 CFLAGS_REMOVE_report_hw_tags.o = $(CC_FLAGS_FTRACE)
14 CFLAGS_REMOVE_report_sw_tags.o = $(CC_FLAGS_FTRACE)
15 CFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE)
16 CFLAGS_REMOVE_hw_tags.o = $(CC_FLAGS_FTRACE)
17 CFLAGS_REMOVE_sw_tags.o = $(CC_FLAGS_FTRACE)
19 # Function splitter causes unnecessary splits in __asan_load1/__asan_store1
20 # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
21 CC_FLAGS_KASAN_RUNTIME := $(call cc-option, -fno-conserve-stack)
22 CC_FLAGS_KASAN_RUNTIME += -fno-stack-protector
23 # Disable branch tracing to avoid recursion.
24 CC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PROFILING
26 CFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME)
27 CFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
28 CFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME)
29 CFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIME)
30 CFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME)
31 CFLAGS_report_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
32 CFLAGS_report_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
33 CFLAGS_report_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
34 CFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME)
35 CFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
36 CFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
38 CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-disable-warning, vla)
39 ifndef 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.
44 CFLAGS_KASAN_TEST += -fno-builtin
47 CFLAGS_kasan_test.o := $(CFLAGS_KASAN_TEST)
48 CFLAGS_kasan_test_module.o := $(CFLAGS_KASAN_TEST)
50 obj-y := common.o report.o
51 obj-$(CONFIG_KASAN_GENERIC) += init.o generic.o report_generic.o shadow.o quarantine.o
52 obj-$(CONFIG_KASAN_HW_TAGS) += hw_tags.o report_hw_tags.o tags.o report_tags.o
53 obj-$(CONFIG_KASAN_SW_TAGS) += init.o report_sw_tags.o shadow.o sw_tags.o tags.o report_tags.o
55 obj-$(CONFIG_KASAN_KUNIT_TEST) += kasan_test.o
56 obj-$(CONFIG_KASAN_MODULE_TEST) += kasan_test_module.o