162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ciKASAN_SANITIZE := n
362306a36Sopenharmony_ciUBSAN_SANITIZE := n
462306a36Sopenharmony_ciKCOV_INSTRUMENT := n
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci# Disable ftrace to avoid recursion.
762306a36Sopenharmony_ciCFLAGS_REMOVE_common.o = $(CC_FLAGS_FTRACE)
862306a36Sopenharmony_ciCFLAGS_REMOVE_generic.o = $(CC_FLAGS_FTRACE)
962306a36Sopenharmony_ciCFLAGS_REMOVE_init.o = $(CC_FLAGS_FTRACE)
1062306a36Sopenharmony_ciCFLAGS_REMOVE_quarantine.o = $(CC_FLAGS_FTRACE)
1162306a36Sopenharmony_ciCFLAGS_REMOVE_report.o = $(CC_FLAGS_FTRACE)
1262306a36Sopenharmony_ciCFLAGS_REMOVE_report_generic.o = $(CC_FLAGS_FTRACE)
1362306a36Sopenharmony_ciCFLAGS_REMOVE_report_hw_tags.o = $(CC_FLAGS_FTRACE)
1462306a36Sopenharmony_ciCFLAGS_REMOVE_report_sw_tags.o = $(CC_FLAGS_FTRACE)
1562306a36Sopenharmony_ciCFLAGS_REMOVE_shadow.o = $(CC_FLAGS_FTRACE)
1662306a36Sopenharmony_ciCFLAGS_REMOVE_hw_tags.o = $(CC_FLAGS_FTRACE)
1762306a36Sopenharmony_ciCFLAGS_REMOVE_sw_tags.o = $(CC_FLAGS_FTRACE)
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci# Function splitter causes unnecessary splits in __asan_load1/__asan_store1
2062306a36Sopenharmony_ci# see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63533
2162306a36Sopenharmony_ciCC_FLAGS_KASAN_RUNTIME := $(call cc-option, -fno-conserve-stack)
2262306a36Sopenharmony_ciCC_FLAGS_KASAN_RUNTIME += -fno-stack-protector
2362306a36Sopenharmony_ci# Disable branch tracing to avoid recursion.
2462306a36Sopenharmony_ciCC_FLAGS_KASAN_RUNTIME += -DDISABLE_BRANCH_PROFILING
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciCFLAGS_common.o := $(CC_FLAGS_KASAN_RUNTIME)
2762306a36Sopenharmony_ciCFLAGS_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
2862306a36Sopenharmony_ciCFLAGS_init.o := $(CC_FLAGS_KASAN_RUNTIME)
2962306a36Sopenharmony_ciCFLAGS_quarantine.o := $(CC_FLAGS_KASAN_RUNTIME)
3062306a36Sopenharmony_ciCFLAGS_report.o := $(CC_FLAGS_KASAN_RUNTIME)
3162306a36Sopenharmony_ciCFLAGS_report_generic.o := $(CC_FLAGS_KASAN_RUNTIME)
3262306a36Sopenharmony_ciCFLAGS_report_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
3362306a36Sopenharmony_ciCFLAGS_report_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
3462306a36Sopenharmony_ciCFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME)
3562306a36Sopenharmony_ciCFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
3662306a36Sopenharmony_ciCFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME)
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciCFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-disable-warning, vla)
3962306a36Sopenharmony_ciifndef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX
4062306a36Sopenharmony_ci# If compiler instruments memintrinsics by prefixing them with __asan/__hwasan,
4162306a36Sopenharmony_ci# we need to treat them normally (as builtins), otherwise the compiler won't
4262306a36Sopenharmony_ci# recognize them as instrumentable. If it doesn't instrument them, we need to
4362306a36Sopenharmony_ci# pass -fno-builtin, so the compiler doesn't inline them.
4462306a36Sopenharmony_ciCFLAGS_KASAN_TEST += -fno-builtin
4562306a36Sopenharmony_ciendif
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciCFLAGS_kasan_test.o := $(CFLAGS_KASAN_TEST)
4862306a36Sopenharmony_ciCFLAGS_kasan_test_module.o := $(CFLAGS_KASAN_TEST)
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciobj-y := common.o report.o
5162306a36Sopenharmony_ciobj-$(CONFIG_KASAN_GENERIC) += init.o generic.o report_generic.o shadow.o quarantine.o
5262306a36Sopenharmony_ciobj-$(CONFIG_KASAN_HW_TAGS) += hw_tags.o report_hw_tags.o tags.o report_tags.o
5362306a36Sopenharmony_ciobj-$(CONFIG_KASAN_SW_TAGS) += init.o report_sw_tags.o shadow.o sw_tags.o tags.o report_tags.o
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciobj-$(CONFIG_KASAN_KUNIT_TEST) += kasan_test.o
5662306a36Sopenharmony_ciobj-$(CONFIG_KASAN_MODULE_TEST) += kasan_test_module.o
57