summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/conf
diff options
context:
space:
mode:
authoranton <anton@cvs.openbsd.org>2018-08-19 11:42:34 +0000
committeranton <anton@cvs.openbsd.org>2018-08-19 11:42:34 +0000
commitccc7f034a58f63768110e9b4b82324eee3597706 (patch)
treec9496c52dfbf2469806099cdfbb26e5d108f4c88 /sys/arch/amd64/conf
parent63e6caa26564e0dc0de5c358a1401413ea2b7e8c (diff)
Add kcov(4), a kernel code coverage tracing driver. It's used in conjunction
with the syzkaller kernel fuzzer. So far, 8 distinct panics have been found and fixed. This effort will continue. kcov is limited to architectures using Clang as their default compiler and is not enabled by default. With help from mpi@, thanks! ok kettenis@ mpi@ visa@
Diffstat (limited to 'sys/arch/amd64/conf')
-rw-r--r--sys/arch/amd64/conf/GENERIC5
-rw-r--r--sys/arch/amd64/conf/Makefile.amd6412
-rw-r--r--sys/arch/amd64/conf/files.amd648
3 files changed, 22 insertions, 3 deletions
diff --git a/sys/arch/amd64/conf/GENERIC b/sys/arch/amd64/conf/GENERIC
index d07eb346fce..d3b593f71f4 100644
--- a/sys/arch/amd64/conf/GENERIC
+++ b/sys/arch/amd64/conf/GENERIC
@@ -1,4 +1,4 @@
-# $OpenBSD: GENERIC,v 1.457 2018/08/03 01:50:14 kevlo Exp $
+# $OpenBSD: GENERIC,v 1.458 2018/08/19 11:42:33 anton Exp $
#
# For further information on compiling OpenBSD kernels, see the config(8)
# man page.
@@ -658,6 +658,9 @@ pseudo-device hotplug 1 # devices hot plugging
# mouse & keyboard multiplexor pseudo-devices
pseudo-device wsmux 2
+# kernel code coverage
+pseudo-device kcov 1
+
# Virtio devices
virtio* at pci? # Virtio PCI device
vioblk* at virtio? # Virtio block device
diff --git a/sys/arch/amd64/conf/Makefile.amd64 b/sys/arch/amd64/conf/Makefile.amd64
index 3950ac592dc..f6f6f286aa9 100644
--- a/sys/arch/amd64/conf/Makefile.amd64
+++ b/sys/arch/amd64/conf/Makefile.amd64
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile.amd64,v 1.98 2018/07/13 08:10:56 deraadt Exp $
+# $OpenBSD: Makefile.amd64,v 1.99 2018/08/19 11:42:33 anton Exp $
# For instructions on building kernels consult the config(8) and options(4)
# manual pages.
@@ -43,6 +43,10 @@ SORTR= cat
.else
CMACHFLAGS+= -mretpoline
.endif
+.if ${IDENT:M-DKCOV} && ${COMPILER_VERSION:Mclang}
+CMACHFLAGS+= -fno-ret-protector
+PROF= -fsanitize-coverage=trace-pc
+.endif
.if ${COMPILER_VERSION:Mclang}
NO_INTEGR_AS= -no-integrated-as
.endif
@@ -135,6 +139,12 @@ vers.o: ${SYSTEM_DEP:Ngap.o}
sh $S/conf/newvers.sh
${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
+.if ${IDENT:M-DKCOV} && ${COMPILER_VERSION:Mclang}
+kcov.o: $S/dev/kcov.c
+ ${NORMAL_C} -fno-sanitize-coverage=trace-pc
+.endif
+
+
clean:
rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* \
gap.link ld.script lorder makegap.sh param.c
diff --git a/sys/arch/amd64/conf/files.amd64 b/sys/arch/amd64/conf/files.amd64
index 6da1a7b0aa6..a4b89dde769 100644
--- a/sys/arch/amd64/conf/files.amd64
+++ b/sys/arch/amd64/conf/files.amd64
@@ -1,4 +1,4 @@
-# $OpenBSD: files.amd64,v 1.97 2018/07/12 12:46:00 fcambus Exp $
+# $OpenBSD: files.amd64,v 1.98 2018/08/19 11:42:33 anton Exp $
maxpartitions 16
maxusers 2 16 128
@@ -245,6 +245,12 @@ file arch/amd64/amd64/vmm.c vmm needs-flag
file arch/amd64/amd64/vmm_support.S vmm
#
+# KCOV
+#
+pseudo-device kcov
+file dev/kcov.c kcov
+
+#
# Machine-independent SD/MMC drivers
#
include "dev/sdmmc/files.sdmmc"