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