Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51a847d2 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "kasan/Makefile: support LLVM style asan parameters"

parents 8d588f99 b919d3e2
Loading
Loading
Loading
Loading
+18 −19
Original line number Diff line number Diff line
@@ -10,32 +10,31 @@ KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)

CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address

ifeq ($(cc-name),clang)
CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \
		-mllvm \
		-asan-mapping-offset=$(KASAN_SHADOW_OFFSET) \
		-asan-stack=1 -asan-globals=1 \
		-asan-instrumentation-with-call-threshold=$(call_threshold))
else
CFLAGS_KASAN := $(call cc-option, -fsanitize=kernel-address \
		-fasan-shadow-offset=$(KASAN_SHADOW_OFFSET) \
		--param asan-stack=1 --param asan-globals=1 \
		--param asan-instrumentation-with-call-threshold=$(call_threshold))
endif

cc-param = $(call cc-option, -mllvm -$(1), $(call cc-option, --param $(1)))
ifeq ($(call cc-option, $(CFLAGS_KASAN_MINIMAL) -Werror),)
   ifneq ($(CONFIG_COMPILE_TEST),y)
        $(warning Cannot use CONFIG_KASAN: \
            -fsanitize=kernel-address is not supported by compiler)
   endif
else
    ifeq ($(CFLAGS_KASAN),)
        ifneq ($(CONFIG_COMPILE_TEST),y)
            $(warning CONFIG_KASAN: compiler does not support all options.\
                Trying minimal configuration)
        endif
   # -fasan-shadow-offset fails without -fsanitize
   CFLAGS_KASAN_SHADOW := $(call cc-option, -fsanitize=kernel-address \
			-fasan-shadow-offset=$(KASAN_SHADOW_OFFSET), \
			$(call cc-option, -fsanitize=kernel-address \
			-mllvm -asan-mapping-offset=$(KASAN_SHADOW_OFFSET)))

   ifeq ($(strip $(CFLAGS_KASAN_SHADOW)),)
      CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL)
   else
      # Now add all the compiler specific options that are valid standalone
      CFLAGS_KASAN := $(CFLAGS_KASAN_SHADOW) \
	$(call cc-param,asan-globals=1) \
	$(call cc-param,asan-instrumentation-with-call-threshold=$(call_threshold)) \
	$(call cc-param,asan-stack=1) \
	$(call cc-param,asan-use-after-scope=1)
   endif

endif

CFLAGS_KASAN += $(call cc-option, -fsanitize-address-use-after-scope)