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