Module Name: src
Committed By: maxv
Date: Fri Nov 15 09:44:44 UTC 2019
Modified Files:
src/share/mk: bsd.sys.mk
src/sys/kern: subr_kcov.c
Log Message:
Make kMSan compatible with KCOV. With kMSan we are forced to stay with the
fsanitize flag on subr_kcov.c, which means that kMSan will instrument KCOV.
We add a bunch of __nomsan attributes to reduce this instrumentation, but
it does not remove it completely. That's fine.
To generate a diff of this commit:
cvs rdiff -u -r1.295 -r1.296 src/share/mk/bsd.sys.mk
cvs rdiff -u -r1.8 -r1.9 src/sys/kern/subr_kcov.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/mk/bsd.sys.mk
diff -u src/share/mk/bsd.sys.mk:1.295 src/share/mk/bsd.sys.mk:1.296
--- src/share/mk/bsd.sys.mk:1.295 Tue Nov 5 20:19:17 2019
+++ src/share/mk/bsd.sys.mk Fri Nov 15 09:44:44 2019
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.sys.mk,v 1.295 2019/11/05 20:19:17 maxv Exp $
+# $NetBSD: bsd.sys.mk,v 1.296 2019/11/15 09:44:44 maxv Exp $
#
# Build definitions used for NetBSD source tree builds.
@@ -247,7 +247,7 @@ CFLAGS+= ${KLEAKFLAGS.${.IMPSRC:T}:U${KL
.if ${KCOV:U0} > 0
KCOVFLAGS= -fsanitize-coverage=trace-pc
.for f in subr_kcov.c subr_lwp_specificdata.c subr_specificdata.c subr_asan.c \
- subr_csan.c
+ subr_csan.c subr_msan.c
KCOVFLAGS.${f}= # empty
.endfor
CFLAGS+= ${KCOVFLAGS.${.IMPSRC:T}:U${KCOVFLAGS}}
Index: src/sys/kern/subr_kcov.c
diff -u src/sys/kern/subr_kcov.c:1.8 src/sys/kern/subr_kcov.c:1.9
--- src/sys/kern/subr_kcov.c:1.8 Sun May 26 05:41:45 2019
+++ src/sys/kern/subr_kcov.c Fri Nov 15 09:44:44 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_kcov.c,v 1.8 2019/05/26 05:41:45 kamil Exp $ */
+/* $NetBSD: subr_kcov.c,v 1.9 2019/11/15 09:44:44 maxv Exp $ */
/*
* Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -339,7 +339,7 @@ out:
return error;
}
-static inline bool
+static inline bool __nomsan
in_interrupt(void)
{
return curcpu()->ci_idepth >= 0;
@@ -347,7 +347,7 @@ in_interrupt(void)
void __sanitizer_cov_trace_pc(void);
-void
+void __nomsan
__sanitizer_cov_trace_pc(void)
{
extern int cold;
@@ -388,7 +388,7 @@ __sanitizer_cov_trace_pc(void)
}
}
-static void
+static void __nomsan
trace_cmp(uint64_t type, uint64_t arg1, uint64_t arg2, intptr_t pc)
{
extern int cold;
@@ -433,7 +433,7 @@ trace_cmp(uint64_t type, uint64_t arg1,
void __sanitizer_cov_trace_cmp1(uint8_t arg1, uint8_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_cmp1(uint8_t arg1, uint8_t arg2)
{
@@ -443,7 +443,7 @@ __sanitizer_cov_trace_cmp1(uint8_t arg1,
void __sanitizer_cov_trace_cmp2(uint16_t arg1, uint16_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_cmp2(uint16_t arg1, uint16_t arg2)
{
@@ -453,7 +453,7 @@ __sanitizer_cov_trace_cmp2(uint16_t arg1
void __sanitizer_cov_trace_cmp4(uint32_t arg1, uint32_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_cmp4(uint32_t arg1, uint32_t arg2)
{
@@ -463,7 +463,7 @@ __sanitizer_cov_trace_cmp4(uint32_t arg1
void __sanitizer_cov_trace_cmp8(uint64_t arg1, uint64_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_cmp8(uint64_t arg1, uint64_t arg2)
{
@@ -473,7 +473,7 @@ __sanitizer_cov_trace_cmp8(uint64_t arg1
void __sanitizer_cov_trace_const_cmp1(uint8_t arg1, uint8_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_const_cmp1(uint8_t arg1, uint8_t arg2)
{
@@ -483,7 +483,7 @@ __sanitizer_cov_trace_const_cmp1(uint8_t
void __sanitizer_cov_trace_const_cmp2(uint16_t arg1, uint16_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_const_cmp2(uint16_t arg1, uint16_t arg2)
{
@@ -493,7 +493,7 @@ __sanitizer_cov_trace_const_cmp2(uint16_
void __sanitizer_cov_trace_const_cmp4(uint32_t arg1, uint32_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_const_cmp4(uint32_t arg1, uint32_t arg2)
{
@@ -503,7 +503,7 @@ __sanitizer_cov_trace_const_cmp4(uint32_
void __sanitizer_cov_trace_const_cmp8(uint64_t arg1, uint64_t arg2);
-void
+void __nomsan
__sanitizer_cov_trace_const_cmp8(uint64_t arg1, uint64_t arg2)
{
@@ -513,7 +513,7 @@ __sanitizer_cov_trace_const_cmp8(uint64_
void __sanitizer_cov_trace_switch(uint64_t val, uint64_t *cases);
-void
+void __nomsan
__sanitizer_cov_trace_switch(uint64_t val, uint64_t *cases)
{
uint64_t i, nbits, ncases, type;