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;

Reply via email to