xref: /OK3568_Linux_fs/device/rockchip/common/linux-kbuild/armhf/linux-kbuild-5.10/scripts/Makefile.kasan (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
2*4882a593SmuzhiyunCFLAGS_KASAN_NOSANITIZE := -fno-builtin
3*4882a593SmuzhiyunKASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)
4*4882a593Smuzhiyun
5*4882a593Smuzhiyuncc-param = $(call cc-option, -mllvm -$(1), $(call cc-option, --param $(1)))
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunifdef CONFIG_KASAN_STACK
8*4882a593Smuzhiyun	stack_enable := 1
9*4882a593Smuzhiyunelse
10*4882a593Smuzhiyun	stack_enable := 0
11*4882a593Smuzhiyunendif
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunifdef CONFIG_KASAN_GENERIC
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunifdef CONFIG_KASAN_INLINE
16*4882a593Smuzhiyun	call_threshold := 10000
17*4882a593Smuzhiyunelse
18*4882a593Smuzhiyun	call_threshold := 0
19*4882a593Smuzhiyunendif
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunCFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun# -fasan-shadow-offset fails without -fsanitize
24*4882a593SmuzhiyunCFLAGS_KASAN_SHADOW := $(call cc-option, -fsanitize=kernel-address \
25*4882a593Smuzhiyun			-fasan-shadow-offset=$(KASAN_SHADOW_OFFSET), \
26*4882a593Smuzhiyun			$(call cc-option, -fsanitize=kernel-address \
27*4882a593Smuzhiyun			-mllvm -asan-mapping-offset=$(KASAN_SHADOW_OFFSET)))
28*4882a593Smuzhiyun
29*4882a593Smuzhiyunifeq ($(strip $(CFLAGS_KASAN_SHADOW)),)
30*4882a593Smuzhiyun	CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL)
31*4882a593Smuzhiyunelse
32*4882a593Smuzhiyun	# Now add all the compiler specific options that are valid standalone
33*4882a593Smuzhiyun	CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \
34*4882a593Smuzhiyun	 $(call cc-param,asan-globals=1) \
35*4882a593Smuzhiyun	 $(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \
36*4882a593Smuzhiyun	 $(call cc-param,asan-stack=$(stack_enable)) \
37*4882a593Smuzhiyun	 $(call cc-param,asan-instrument-allocas=1)
38*4882a593Smuzhiyunendif
39*4882a593Smuzhiyun
40*4882a593Smuzhiyunendif # CONFIG_KASAN_GENERIC
41*4882a593Smuzhiyun
42*4882a593Smuzhiyunifdef CONFIG_KASAN_SW_TAGS
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunifdef CONFIG_KASAN_INLINE
45*4882a593Smuzhiyun    instrumentation_flags := $(call cc-param,hwasan-mapping-offset=$(KASAN_SHADOW_OFFSET))
46*4882a593Smuzhiyunelse
47*4882a593Smuzhiyun    instrumentation_flags := $(call cc-param,hwasan-instrument-with-calls=1)
48*4882a593Smuzhiyunendif
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunCFLAGS_KASAN := -fsanitize=kernel-hwaddress \
51*4882a593Smuzhiyun		$(call cc-param,hwasan-instrument-stack=$(stack_enable)) \
52*4882a593Smuzhiyun		$(call cc-param,hwasan-use-short-granules=0) \
53*4882a593Smuzhiyun		$(instrumentation_flags)
54*4882a593Smuzhiyun
55*4882a593Smuzhiyunendif # CONFIG_KASAN_SW_TAGS
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunexport CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE
58