Module Name: src Committed By: maxv Date: Mon Apr 13 09:34:03 UTC 2020
Modified Files: src/sys/arch/amd64/conf: Makefile.amd64 Log Message: Make KASAN compatible with LLVM. Same as GCC, except that LLVM aggressively inlines the shadow checks, and this causes problems at boot time; so we pass -asan-instrumentation-with-call-threshold=0 to force callbacks instead of inlines. To generate a diff of this commit: cvs rdiff -u -r1.82 -r1.83 src/sys/arch/amd64/conf/Makefile.amd64 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/conf/Makefile.amd64 diff -u src/sys/arch/amd64/conf/Makefile.amd64:1.82 src/sys/arch/amd64/conf/Makefile.amd64:1.83 --- src/sys/arch/amd64/conf/Makefile.amd64:1.82 Sat Apr 4 07:03:57 2020 +++ src/sys/arch/amd64/conf/Makefile.amd64 Mon Apr 13 09:34:02 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.amd64,v 1.82 2020/04/04 07:03:57 maxv Exp $ +# $NetBSD: Makefile.amd64,v 1.83 2020/04/13 09:34:02 maxv Exp $ # Makefile for NetBSD # @@ -49,12 +49,21 @@ CFLAGS+= -mindirect-branch=thunk-in CFLAGS+= -mindirect-branch-register .endif -.if ${KASAN:U0} > 0 && ${HAVE_GCC:U0} > 0 +.if ${KASAN:U0} > 0 +.if ${HAVE_GCC:U0} > 0 KASANFLAGS= -fsanitize=kernel-address \ --param asan-globals=1 --param asan-stack=1 \ --param asan-instrument-allocas=1 \ -fsanitize-address-use-after-scope \ -fasan-shadow-offset=0xDFFF900000000000 +.elif ${HAVE_LLVM:Uno} == "yes" +KASANFLAGS= -fsanitize=kernel-address \ + -mllvm -asan-globals=1 -mllvm -asan-stack=1 \ + -mllvm -asan-instrument-dynamic-allocas=1 \ + -mllvm -asan-use-after-scope=1 \ + -mllvm -asan-instrumentation-with-call-threshold=0 \ + -mllvm -asan-mapping-offset=0xDFFF900000000000 +.endif .for f in subr_asan.c subr_kcov.c KASANFLAGS.${f}= # empty .endfor