diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-09-25 08:06:15 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-09-25 08:06:15 +0200 |
commit | 47d4f7609270e81344abb78fa3658e917a9e9b8f (patch) | |
tree | 8fe021264f475abbab529b26e54bfe1c4892c0c7 /scripts | |
parent | 555e0db0fa05432c36f9d4a0b9cbcaf7498ac238 (diff) | |
parent | 932ef7a02e2fff7fd7d6ee1cb3558593987c5b3e (diff) | |
download | barebox-47d4f7609270e81344abb78fa3658e917a9e9b8f.tar.gz barebox-47d4f7609270e81344abb78fa3658e917a9e9b8f.tar.xz |
Merge branch 'for-next/kasan' into master
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.kasan | 17 | ||||
-rw-r--r-- | scripts/Makefile.lib | 10 |
2 files changed, 27 insertions, 0 deletions
diff --git a/scripts/Makefile.kasan b/scripts/Makefile.kasan new file mode 100644 index 0000000000..83f6aa543d --- /dev/null +++ b/scripts/Makefile.kasan @@ -0,0 +1,17 @@ + # SPDX-License-Identifier: GPL-2.0 +ifdef CONFIG_KASAN +CFLAGS_KASAN_NOSANITIZE := -fno-builtin +KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET) +endif + +CFLAGS_KASAN_MINIMAL := -fsanitize=kernel-address + +cc-param = $(call cc-option, -mllvm -$(1), $(call cc-option, --param $(1))) + +CFLAGS_KASAN := $(CFLAGS_KASAN_MINIMAL) \ + $(call cc-param,asan-globals=1) \ + $(call cc-param,asan-instrument-allocas=1) + +ifndef CONFIG_CPU_64 +CFLAGS_KASAN += $(call cc-param,asan-stack=1) +endif diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 337430cd00..ab7d9f2bdf 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -127,6 +127,16 @@ _c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(target-stem).o) _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(target-stem).o) _cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(target-stem).lds) +# +# Enable address sanitizer flags for kernel except some files or directories +# we don't want to check (depends on variables KASAN_SANITIZE_obj.o, KASAN_SANITIZE) +# +ifeq ($(CONFIG_KASAN),y) +_c_flags += $(if $(part-of-pbl),, $(if $(patsubst n%,, \ + $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \ + $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE))) +endif + ifeq ($(CONFIG_UBSAN),y) _CFLAGS_UBSAN = $(eval _CFLAGS_UBSAN := $(CFLAGS_UBSAN))$(_CFLAGS_UBSAN) _c_flags += $(if $(patsubst n%,, \ |