svn commit: r346925 - in projects/runtime-coverage-v2: . cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip lib/libvgl sbin/ipfw share/man/man4 stand/efi/loader sys/conf sys/contrib/ipfilter/ne...

Enji Cooper ngie at FreeBSD.org
Mon Apr 29 20:19:25 UTC 2019


Author: ngie
Date: Mon Apr 29 20:19:21 2019
New Revision: 346925
URL: https://svnweb.freebsd.org/changeset/base/346925

Log:
  MFhead at r346924

Added:
  projects/runtime-coverage-v2/share/man/man4/dtrace_audit.4
     - copied unchanged from r346924, head/share/man/man4/dtrace_audit.4
Modified:
  projects/runtime-coverage-v2/MAINTAINERS   (contents, props changed)
  projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh
  projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh
  projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh.out
  projects/runtime-coverage-v2/lib/libvgl/main.c
  projects/runtime-coverage-v2/lib/libvgl/mouse.c
  projects/runtime-coverage-v2/lib/libvgl/simple.c
  projects/runtime-coverage-v2/lib/libvgl/vgl.h
  projects/runtime-coverage-v2/sbin/ipfw/ipfw2.c
  projects/runtime-coverage-v2/share/man/man4/Makefile
  projects/runtime-coverage-v2/share/man/man4/audit.4
  projects/runtime-coverage-v2/share/man/man4/auditpipe.4
  projects/runtime-coverage-v2/stand/efi/loader/main.c
  projects/runtime-coverage-v2/sys/conf/files.powerpc
  projects/runtime-coverage-v2/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  projects/runtime-coverage-v2/sys/dev/altera/atse/if_atse.c
  projects/runtime-coverage-v2/sys/dev/altera/softdma/softdma.c
  projects/runtime-coverage-v2/sys/dev/isp/isp_pci.c
  projects/runtime-coverage-v2/sys/dev/xdma/xdma.h
  projects/runtime-coverage-v2/sys/dev/xdma/xdma_mbuf.c
  projects/runtime-coverage-v2/sys/dev/xdma/xdma_sg.c
  projects/runtime-coverage-v2/sys/kern/vfs_bio.c
  projects/runtime-coverage-v2/sys/netinet/in_mcast.c
  projects/runtime-coverage-v2/sys/netpfil/ipfw/ip_fw2.c
  projects/runtime-coverage-v2/sys/powerpc/conf/GENERIC64
  projects/runtime-coverage-v2/sys/powerpc/powernv/opal_dev.c
  projects/runtime-coverage-v2/sys/x86/x86/busdma_bounce.c
  projects/runtime-coverage-v2/tools/regression/fsx/fsx.c
  projects/runtime-coverage-v2/usr.sbin/nfsdumpstate/nfsdumpstate.c
Directory Properties:
  projects/runtime-coverage-v2/   (props changed)
  projects/runtime-coverage-v2/cddl/   (props changed)
  projects/runtime-coverage-v2/cddl/contrib/opensolaris/   (props changed)
  projects/runtime-coverage-v2/sys/contrib/ipfilter/   (props changed)

Modified: projects/runtime-coverage-v2/MAINTAINERS
==============================================================================
--- projects/runtime-coverage-v2/MAINTAINERS	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/MAINTAINERS	Mon Apr 29 20:19:21 2019	(r346925)
@@ -35,17 +35,19 @@ makes a commit to the specified subtree.
 
 subsystem	login	notes
 -----------------------------
-atf			freebsd-testing,jmmv,ngie	Pre-commit review requested.
 ath(4)		adrian	Pre-commit review requested, send to freebsd-wireless at freebsd.org
+contrib/atf		ngie,#test		Pre-commit review requested.
+contrib/capsicum-test	ngie,#capsicum,#test	Pre-commit review requested.
 contrib/compiler-rt	dim	Pre-commit review preferred.
+contrib/googletest	ngie,#test		Pre-commit review requested.
 contrib/ipfilter	cy	Pre-commit review requested.
 contrib/libc++		dim	Pre-commit review preferred.
 contrib/libcxxrt	dim	Pre-commit review preferred.
 contrib/libunwind	dim,emaste,jhb	Pre-commit review preferred.
 contrib/llvm		dim	Pre-commit review preferred.
 contrib/llvm/tools/lldb	dim,emaste	Pre-commit review preferred.
-contrib/netbsd-tests	freebsd-testing,ngie	Pre-commit review requested.
-contrib/pjdfstest	freebsd-testing,asomers,ngie,pjd	Pre-commit review requested.
+contrib/netbsd-tests	ngie,#test		Pre-commit review requested.
+contrib/pjdfstest	asomers,ngie,pjd,#test	Pre-commit review requested.
 *env(3)		secteam	Due to the problematic security history of this
 			code, please have patches reviewed by secteam.
 etc/mail	gshapiro	Pre-commit review requested.  Keep in sync with -STABLE.
@@ -86,10 +88,15 @@ sh(1)		jilles		Pre-commit review requested. This also 
 				to kill(1), printf(1) and test(1) which are
 				compiled in as builtins.
 share/mk	imp, bapt, bdrewery, emaste, sjg	Make is hard.
-share/mk/*.test.mk	freebsd-testing,ngie (same list as share/mk too)	Pre-commit review requested.
+share/mk/*.test.mk	imp,bapt,bdrewery,	Pre-commit review requested.
+			emaste,ngie,sjg,#test
 stand/forth		dteske	Pre-commit review requested.
 stand/lua		kevans	Pre-commit review requested
-sys/compat/linuxkpi	hselasky	If in doubt, ask.
+sys/compat/linuxkpi	hselasky		If in doubt, ask.
+			zeising, johalun	pre-commit review requested via
+						#x11 phabricator group.
+						(to avoid drm graphics drivers
+						impact)
 sys/contrib/ipfilter	cy	Pre-commit review requested.
 sys/dev/e1000	erj	Pre-commit phabricator review requested.
 sys/dev/ixgbe	erj	Pre-commit phabricator review requested.
@@ -101,7 +108,7 @@ sys/netinet/ip_carp.c	glebius	Pre-commit review recomm
 sys/netpfil/pf	kp,glebius	Pre-commit review recommended.
 sys/x86/xen	royger		Pre-commit review recommended.
 sys/xen		royger		Pre-commit review recommended.
-tests			freebsd-testing,ngie	Pre-commit review requested.
+tests			ngie,#test		Pre-commit review requested.
 tools/build	imp	Pre-commit review requested, especially to fix bootstrap issues.
 top(1)		eadler	Pre-commit review requested.
 usr.sbin/bsdconfig	dteske	Pre-commit phabricator review requested.

Modified: projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh
==============================================================================
--- projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh	Mon Apr 29 20:19:21 2019	(r346925)
@@ -58,36 +58,52 @@ DIR=/var/tmp/dtest.$$
 
 sctpport=1024
 bound=5000
-while [ $sctpport -lt $bound ]; do
-	ncat --sctp -z $local $sctpport > /dev/null || break
-	sctpport=$(($sctpport + 1))
-done
-if [ $sctpport -eq $bound ]; then
-	echo "couldn't find an available SCTP port"
-	exit 1
-fi
 
 mkdir $DIR
 cd $DIR
 
-# ncat will exit when the association is closed.
-ncat --sctp --listen $local $sctpport &
-
-cat > test.pl <<-EOPERL
+cat > client.pl <<-EOPERL
 	use IO::Socket;
 	my \$s = IO::Socket::INET->new(
 	    Type => SOCK_STREAM,
 	    Proto => "sctp",
 	    LocalAddr => "$local",
 	    PeerAddr => "$local",
-	    PeerPort => $sctpport,
+	    PeerPort => \$ARGV[0],
 	    Timeout => 3);
-	die "Could not connect to host $local port $sctpport \$@" unless \$s;
+	die "Could not connect to host $local port \$ARGV[0] \$@" unless \$s;
 	close \$s;
-	sleep(2);
+	sleep(\$ARGV[1]);
 EOPERL
 
-$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
+while [ $sctpport -lt $bound ]; do
+	perl client.pl $sctpport 0 2>&- || break
+	sctpport=$(($sctpport + 1))
+done
+if [ $sctpport -eq $bound ]; then
+	echo "couldn't find an available SCTP port"
+	exit 1
+fi
+
+cat > server.pl <<-EOPERL
+	use IO::Socket;
+	my \$l = IO::Socket::INET->new(
+	    Type => SOCK_STREAM,
+	    Proto => "sctp",
+	    LocalAddr => "$local",
+	    LocalPort => $sctpport,
+	    Listen => 1,
+	    Reuse => 1);
+	die "Could not listen on $local port $sctpport \$@" unless \$l;
+	my \$c = \$l->accept();
+	close \$l;
+	while (<\$c>) {};
+	close \$c;
+EOPERL
+
+perl server.pl &
+
+$dtrace -c "perl client.pl $sctpport 2" -qs /dev/stdin <<EODTRACE
 BEGIN
 {
 	ipsend = sctpsend = ipreceive = sctpreceive = 0;
@@ -122,10 +138,10 @@ sctp:::receive
 END
 {
 	printf("Minimum SCTP events seen\n\n");
-	printf("ip:::send (%d) - %s\n", ipsend, ipsend >= 7 ? "yes" : "no");
-	printf("ip:::receive (%d) - %s\n", ipreceive, ipreceive >= 7 ? "yes" : "no");
-	printf("sctp:::send (%d) - %s\n", sctpsend, sctpsend >= 7 ? "yes" : "no");
-	printf("sctp:::receive (%d) - %s\n", sctpreceive, sctpreceive >= 7 ? "yes" : "no");
+	printf("ip:::send - %s\n", ipsend >= 7 ? "yes" : "no");
+	printf("ip:::receive - %s\n", ipreceive >= 7 ? "yes" : "no");
+	printf("sctp:::send - %s\n", sctpsend >= 7 ? "yes" : "no");
+	printf("sctp:::receive - %s\n", sctpreceive >= 7 ? "yes" : "no");
 }
 EODTRACE
 

Modified: projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh
==============================================================================
--- projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh	Mon Apr 29 20:19:21 2019	(r346925)
@@ -61,36 +61,52 @@ DIR=/var/tmp/dtest.$$
 
 sctpport=1024
 bound=5000
-while [ $sctpport -lt $bound ]; do
-	ncat --sctp -z $local $sctpport > /dev/null || break
-	sctpport=$(($sctpport + 1))
-done
-if [ $sctpport -eq $bound ]; then
-	echo "couldn't find an available SCTP port"
-	exit 1
-fi
 
 mkdir $DIR
 cd $DIR
 
-# ncat will exit when the association is closed.
-ncat --sctp --listen $local $sctpport &
-
-cat > test.pl <<-EOPERL
+cat > client.pl <<-EOPERL
 	use IO::Socket;
 	my \$s = IO::Socket::INET->new(
 	    Type => SOCK_STREAM,
 	    Proto => "sctp",
 	    LocalAddr => "$local",
 	    PeerAddr => "$local",
-	    PeerPort => $sctpport,
+	    PeerPort => \$ARGV[0],
 	    Timeout => 3);
-	die "Could not connect to host $local port $sctpport \$@" unless \$s;
+	die "Could not connect to host $local port \$ARGV[0] \$@" unless \$s;
 	close \$s;
-	sleep(2);
+	sleep(\$ARGV[1]);
 EOPERL
 
-$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
+while [ $sctpport -lt $bound ]; do
+	perl client.pl $sctpport 0 2>&- || break
+	sctpport=$(($sctpport + 1))
+done
+if [ $sctpport -eq $bound ]; then
+	echo "couldn't find an available SCTP port"
+	exit 1
+fi
+
+cat > server.pl <<-EOPERL
+	use IO::Socket;
+	my \$l = IO::Socket::INET->new(
+	    Type => SOCK_STREAM,
+	    Proto => "sctp",
+	    LocalAddr => "$local",
+	    LocalPort => $sctpport,
+	    Listen => 1,
+	    Reuse => 1);
+	die "Could not listen on $local port $sctpport \$@" unless \$l;
+	my \$c = \$l->accept();
+	close \$l;
+	while (<\$c>) {};
+	close \$c;
+EOPERL
+
+perl server.pl &
+
+$dtrace -c "perl client.pl $sctpport 2" -qs /dev/stdin <<EODTRACE
 BEGIN
 {
 	ipsend = sctpsend = ipreceive = sctpreceive = 0;

Modified: projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh.out
==============================================================================
--- projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh.out	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh.out	Mon Apr 29 20:19:21 2019	(r346925)
@@ -10,3 +10,4 @@ sctp:::state-change to established - yes
 sctp:::state-change to shutdown-sent - yes
 sctp:::state-change to shutdown-received - yes
 sctp:::state-change to shutdown-ack-sent - yes
+

Modified: projects/runtime-coverage-v2/lib/libvgl/main.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/main.c	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/lib/libvgl/main.c	Mon Apr 29 20:19:21 2019	(r346925)
@@ -77,7 +77,7 @@ struct vt_mode smode;
   signal(SIGUSR2, SIG_IGN);
   VGLSwitchPending = 0;
   VGLAbortPending = 0;
-  VGLMousePointerHide();
+  VGLMouseMode(VGL_MOUSEHIDE);
 
   if (VGLMem != MAP_FAILED) {
     VGLClear(VGLDisplay, 0);

Modified: projects/runtime-coverage-v2/lib/libvgl/mouse.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/mouse.c	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/lib/libvgl/mouse.c	Mon Apr 29 20:19:21 2019	(r346925)
@@ -39,56 +39,137 @@ __FBSDID("$FreeBSD$");
 #include <sys/fbio.h>
 #include "vgl.h"
 
+static void VGLMouseAction(int dummy);
+
 #define BORDER	0xff	/* default border -- light white in rgb 3:3:2 */
 #define INTERIOR 0xa0	/* default interior -- red in rgb 3:3:2 */
+#define LARGE_MOUSE_IMG_XSIZE	19
+#define LARGE_MOUSE_IMG_YSIZE	32
+#define SMALL_MOUSE_IMG_XSIZE	10
+#define SMALL_MOUSE_IMG_YSIZE	16
 #define X	0xff	/* any nonzero in And mask means part of cursor */
 #define B	BORDER
 #define I	INTERIOR
-static byte StdAndMask[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE] = {
-	X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-	X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,
-	X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,
-	X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,
-	X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,
-	X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
-	X,X,X,0,X,X,X,X,0,0,0,0,0,0,0,0,
-	X,X,0,0,X,X,X,X,0,0,0,0,0,0,0,0,
-	0,0,0,0,0,X,X,X,X,0,0,0,0,0,0,0,
-	0,0,0,0,0,X,X,X,X,0,0,0,0,0,0,0,
-	0,0,0,0,0,0,X,X,0,0,0,0,0,0,0,0,
+static byte LargeAndMask[] = {
+  X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+  X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+  X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,X,X,X,X,X,X,0,0,0,0,0,0,0,
+  X,X,X,X,X,X,0,X,X,X,X,X,X,0,0,0,0,0,0,
+  X,X,X,X,X,0,0,X,X,X,X,X,X,0,0,0,0,0,0,
+  X,X,X,X,0,0,0,0,X,X,X,X,X,X,0,0,0,0,0,
+  X,X,X,0,0,0,0,0,X,X,X,X,X,X,0,0,0,0,0,
+  X,X,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,X,X,X,X,X,X,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,X,X,X,X,0,0,0,
 };
-static byte StdOrMask[MOUSE_IMG_SIZE*MOUSE_IMG_SIZE] = {
-	B,B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-	B,I,B,0,0,0,0,0,0,0,0,0,0,0,0,0,
-	B,I,I,B,0,0,0,0,0,0,0,0,0,0,0,0,
-	B,I,I,I,B,0,0,0,0,0,0,0,0,0,0,0,
-	B,I,I,I,I,B,0,0,0,0,0,0,0,0,0,0,
-	B,I,I,I,I,I,B,0,0,0,0,0,0,0,0,0,
-	B,I,I,I,I,I,I,B,0,0,0,0,0,0,0,0,
-	B,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,
-	B,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,
-	B,I,I,I,I,I,B,B,B,B,0,0,0,0,0,0,
-	B,I,I,B,I,I,B,0,0,0,0,0,0,0,0,0,
-	B,I,B,0,B,I,I,B,0,0,0,0,0,0,0,0,
-	B,B,0,0,B,I,I,B,0,0,0,0,0,0,0,0,
-	0,0,0,0,0,B,I,I,B,0,0,0,0,0,0,0,
-	0,0,0,0,0,B,I,I,B,0,0,0,0,0,0,0,
-	0,0,0,0,0,0,B,B,0,0,0,0,0,0,0,0,
+static byte LargeOrMask[] = {
+  B,B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,B,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,B,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,B,0,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,B,0,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,B,0,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,I,B,0,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,I,I,B,0,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,B,0,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,B,0,
+  B,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,B,
+  B,I,I,I,I,I,I,I,I,I,I,B,B,B,B,B,B,B,B,
+  B,I,I,I,I,I,I,I,I,I,I,B,0,0,0,0,0,0,0,
+  B,I,I,I,I,I,B,I,I,I,I,B,0,0,0,0,0,0,0,
+  B,I,I,I,I,B,0,B,I,I,I,I,B,0,0,0,0,0,0,
+  B,I,I,I,B,0,0,B,I,I,I,I,B,0,0,0,0,0,0,
+  B,I,I,B,0,0,0,0,B,I,I,I,I,B,0,0,0,0,0,
+  B,I,B,0,0,0,0,0,B,I,I,I,I,B,0,0,0,0,0,
+  B,B,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,B,I,I,I,I,B,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,B,B,B,B,0,0,0,
 };
+static byte SmallAndMask[] = {
+  X,X,0,0,0,0,0,0,0,0,
+  X,X,X,0,0,0,0,0,0,0,
+  X,X,X,X,0,0,0,0,0,0,
+  X,X,X,X,X,0,0,0,0,0,
+  X,X,X,X,X,X,0,0,0,0,
+  X,X,X,X,X,X,X,0,0,0,
+  X,X,X,X,X,X,X,X,0,0,
+  X,X,X,X,X,X,X,X,X,0,
+  X,X,X,X,X,X,X,X,X,X,
+  X,X,X,X,X,X,X,X,X,X,
+  X,X,X,X,X,X,X,0,0,0,
+  X,X,X,0,X,X,X,X,0,0,
+  X,X,0,0,X,X,X,X,0,0,
+  0,0,0,0,0,X,X,X,X,0,
+  0,0,0,0,0,X,X,X,X,0,
+  0,0,0,0,0,0,X,X,0,0,
+};
+static byte SmallOrMask[] = {
+  B,B,0,0,0,0,0,0,0,0,
+  B,I,B,0,0,0,0,0,0,0,
+  B,I,I,B,0,0,0,0,0,0,
+  B,I,I,I,B,0,0,0,0,0,
+  B,I,I,I,I,B,0,0,0,0,
+  B,I,I,I,I,I,B,0,0,0,
+  B,I,I,I,I,I,I,B,0,0,
+  B,I,I,I,I,I,I,I,B,0,
+  B,I,I,I,I,I,I,I,I,B,
+  B,I,I,I,I,I,B,B,B,B,
+  B,I,I,B,I,I,B,0,0,0,
+  B,I,B,0,B,I,I,B,0,0,
+  B,B,0,0,B,I,I,B,0,0,
+  0,0,0,0,0,B,I,I,B,0,
+  0,0,0,0,0,B,I,I,B,0,
+  0,0,0,0,0,0,B,B,0,0,
+};
 #undef X
 #undef B
 #undef I
-static VGLBitmap VGLMouseStdAndMask = 
-    VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, StdAndMask);
-static VGLBitmap VGLMouseStdOrMask = 
-    VGLBITMAP_INITIALIZER(MEMBUF, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE, StdOrMask);
+static VGLBitmap VGLMouseLargeAndMask = 
+  VGLBITMAP_INITIALIZER(MEMBUF, LARGE_MOUSE_IMG_XSIZE, LARGE_MOUSE_IMG_YSIZE,
+                        LargeAndMask);
+static VGLBitmap VGLMouseLargeOrMask = 
+  VGLBITMAP_INITIALIZER(MEMBUF, LARGE_MOUSE_IMG_XSIZE, LARGE_MOUSE_IMG_YSIZE,
+                        LargeOrMask);
+static VGLBitmap VGLMouseSmallAndMask = 
+  VGLBITMAP_INITIALIZER(MEMBUF, SMALL_MOUSE_IMG_XSIZE, SMALL_MOUSE_IMG_YSIZE,
+                        SmallAndMask);
+static VGLBitmap VGLMouseSmallOrMask = 
+  VGLBITMAP_INITIALIZER(MEMBUF, SMALL_MOUSE_IMG_XSIZE, SMALL_MOUSE_IMG_YSIZE,
+                        SmallOrMask);
 static VGLBitmap *VGLMouseAndMask, *VGLMouseOrMask;
-static int VGLMouseVisible = 0;
 static int VGLMouseShown = VGL_MOUSEHIDE;
 static int VGLMouseXpos = 0;
 static int VGLMouseYpos = 0;
@@ -102,51 +183,44 @@ static volatile sig_atomic_t VGLMsuppressint;
 					VGLMouseAction(0);		\
 			} while (0)
 
-void
-VGLMousePointerShow()
+int
+__VGLMouseMode(int mode)
 {
-  if (!VGLMouseVisible) {
-    INTOFF();
-    VGLMouseVisible = 1;
-    __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos, VGLDisplay, 
-		  VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, -MOUSE_IMG_SIZE);
-    INTON();
-  }
-}
+  int oldmode;
 
-void
-VGLMousePointerHide()
-{
-  if (VGLMouseVisible) {
-    INTOFF();
-    VGLMouseVisible = 0;
-    __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos, VGLDisplay, 
-                    VGLMouseXpos, VGLMouseYpos, MOUSE_IMG_SIZE, MOUSE_IMG_SIZE);
-    INTON();
-  }
-}
-
-void
-VGLMouseMode(int mode)
-{
+  INTOFF();
+  oldmode = VGLMouseShown;
   if (mode == VGL_MOUSESHOW) {
     if (VGLMouseShown == VGL_MOUSEHIDE) {
-      VGLMousePointerShow();
       VGLMouseShown = VGL_MOUSESHOW;
+      __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos,
+                      VGLDisplay, VGLMouseXpos, VGLMouseYpos,
+                      VGLMouseAndMask->VXsize, -VGLMouseAndMask->VYsize);
     }
   }
   else {
     if (VGLMouseShown == VGL_MOUSESHOW) {
-      VGLMousePointerHide();
       VGLMouseShown = VGL_MOUSEHIDE;
+      __VGLBitmapCopy(&VGLVDisplay, VGLMouseXpos, VGLMouseYpos,
+                      VGLDisplay, VGLMouseXpos, VGLMouseYpos,
+                      VGLMouseAndMask->VXsize, VGLMouseAndMask->VYsize);
     }
   }
+  INTON();
+  return oldmode;
 }
 
 void
+VGLMouseMode(int mode)
+{
+  __VGLMouseMode(mode);
+}
+
+static void
 VGLMouseAction(int dummy)	
 {
   struct mouse_info mouseinfo;
+  int mousemode;
 
   if (VGLMsuppressint) {
     VGLMintpending = 1;
@@ -157,13 +231,14 @@ again:
   VGLMintpending = 0;
   mouseinfo.operation = MOUSE_GETINFO;
   ioctl(0, CONS_MOUSECTL, &mouseinfo);
-  if (VGLMouseShown == VGL_MOUSESHOW)
-    VGLMousePointerHide();
-  VGLMouseXpos = mouseinfo.u.data.x;
-  VGLMouseYpos = mouseinfo.u.data.y;
+  if (VGLMouseXpos != mouseinfo.u.data.x ||
+      VGLMouseYpos != mouseinfo.u.data.y) {
+    mousemode = __VGLMouseMode(VGL_MOUSEHIDE);
+    VGLMouseXpos = mouseinfo.u.data.x;
+    VGLMouseYpos = mouseinfo.u.data.y;
+    __VGLMouseMode(mousemode);
+  }
   VGLMouseButtons = mouseinfo.u.data.buttons;
-  if (VGLMouseShown == VGL_MOUSESHOW)
-    VGLMousePointerShow();
 
   /* 
    * Loop to handle any new (suppressed) signals.  This is INTON() without
@@ -178,9 +253,10 @@ again:
 void
 VGLMouseSetImage(VGLBitmap *AndMask, VGLBitmap *OrMask)
 {
-  if (VGLMouseShown == VGL_MOUSESHOW)
-    VGLMousePointerHide();
+  int mousemode;
 
+  mousemode = __VGLMouseMode(VGL_MOUSEHIDE);
+
   VGLMouseAndMask = AndMask;
 
   if (VGLMouseOrMask != NULL) {
@@ -191,20 +267,23 @@ VGLMouseSetImage(VGLBitmap *AndMask, VGLBitmap *OrMask
   VGLBitmapAllocateBits(VGLMouseOrMask);
   VGLBitmapCvt(OrMask, VGLMouseOrMask);
 
-  if (VGLMouseShown == VGL_MOUSESHOW)
-    VGLMousePointerShow();
+  __VGLMouseMode(mousemode);
 }
 
 void
 VGLMouseSetStdImage()
 {
-  VGLMouseSetImage(&VGLMouseStdAndMask, &VGLMouseStdOrMask);
+  if (VGLDisplay->VXsize > 800)
+    VGLMouseSetImage(&VGLMouseLargeAndMask, &VGLMouseLargeOrMask);
+  else
+    VGLMouseSetImage(&VGLMouseSmallAndMask, &VGLMouseSmallOrMask);
 }
 
 int
 VGLMouseInit(int mode)
 {
   struct mouse_info mouseinfo;
+  VGLBitmap *ormask;
   int andmask, border, error, i, interior;
 
   switch (VGLModeInfo.vi_mem_model) {
@@ -231,9 +310,14 @@ VGLMouseInit(int mode)
     border = strtoul(getenv("VGLMOUSEBORDERCOLOR"), NULL, 0);
   if (getenv("VGLMOUSEINTERIORCOLOR") != NULL)
     interior = strtoul(getenv("VGLMOUSEINTERIORCOLOR"), NULL, 0);
-  for (i = 0; i < MOUSE_IMG_SIZE*MOUSE_IMG_SIZE; i++)
-    VGLMouseStdOrMask.Bitmap[i] = VGLMouseStdOrMask.Bitmap[i] == BORDER ?
-      border : VGLMouseStdOrMask.Bitmap[i] == INTERIOR ? interior : 0;
+  ormask = &VGLMouseLargeOrMask;
+  for (i = 0; i < ormask->VXsize * ormask->VYsize; i++)
+    ormask->Bitmap[i] = ormask->Bitmap[i] == BORDER ?  border :
+                        ormask->Bitmap[i] == INTERIOR ? interior : 0;
+  ormask = &VGLMouseSmallOrMask;
+  for (i = 0; i < ormask->VXsize * ormask->VYsize; i++)
+    ormask->Bitmap[i] = ormask->Bitmap[i] == BORDER ?  border :
+                        ormask->Bitmap[i] == INTERIOR ? interior : 0;
   VGLMouseSetStdImage();
   mouseinfo.operation = MOUSE_MODE;
   mouseinfo.u.mode.signal = SIGUSR2;
@@ -288,9 +372,10 @@ VGLMouseFreezeXY(int x, int y)
   INTOFF();
   if (VGLMouseShown != VGL_MOUSESHOW)
     return 0;
-  if (x >= VGLMouseXpos && x < VGLMouseXpos + MOUSE_IMG_SIZE &&
-      y >= VGLMouseYpos && y < VGLMouseYpos + MOUSE_IMG_SIZE &&
-      VGLMouseAndMask->Bitmap[(y-VGLMouseYpos)*MOUSE_IMG_SIZE+(x-VGLMouseXpos)])
+  if (x >= VGLMouseXpos && x < VGLMouseXpos + VGLMouseAndMask->VXsize &&
+      y >= VGLMouseYpos && y < VGLMouseYpos + VGLMouseAndMask->VYsize &&
+      VGLMouseAndMask->Bitmap[(y-VGLMouseYpos)*VGLMouseAndMask->VXsize+
+                              (x-VGLMouseXpos)])
     return 1;
   return 0;
 }
@@ -303,13 +388,13 @@ VGLMouseOverlap(int x, int y, int width, int hight)
   if (VGLMouseShown != VGL_MOUSESHOW)
     return 0;
   if (x > VGLMouseXpos)
-    overlap = (VGLMouseXpos + MOUSE_IMG_SIZE) - x;
+    overlap = (VGLMouseXpos + VGLMouseAndMask->VXsize) - x;
   else
     overlap = (x + width) - VGLMouseXpos;
   if (overlap <= 0)
     return 0;
   if (y > VGLMouseYpos)
-    overlap = (VGLMouseYpos + MOUSE_IMG_SIZE) - y;
+    overlap = (VGLMouseYpos + VGLMouseAndMask->VYsize) - y;
   else
     overlap = (y + hight) - VGLMouseYpos;
   return overlap > 0;
@@ -324,10 +409,10 @@ VGLMouseMerge(int x, int y, int width, byte *line)
   if (xstart < VGLMouseXpos)
     xstart = VGLMouseXpos;
   xend = x + width;
-  if (xend > VGLMouseXpos + MOUSE_IMG_SIZE)
-    xend = VGLMouseXpos + MOUSE_IMG_SIZE;
+  if (xend > VGLMouseXpos + VGLMouseAndMask->VXsize)
+    xend = VGLMouseXpos + VGLMouseAndMask->VXsize;
   for (x1 = xstart; x1 < xend; x1++) {
-    pos = (y - VGLMouseYpos) * MOUSE_IMG_SIZE + x1 - VGLMouseXpos;
+    pos = (y - VGLMouseYpos) * VGLMouseAndMask->VXsize + x1 - VGLMouseXpos;
     if (VGLMouseAndMask->Bitmap[pos])
       bcopy(&VGLMouseOrMask->Bitmap[pos * VGLDisplay->PixelBytes],
             &line[(x1 - x) * VGLDisplay->PixelBytes], VGLDisplay->PixelBytes);

Modified: projects/runtime-coverage-v2/lib/libvgl/simple.c
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/simple.c	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/lib/libvgl/simple.c	Mon Apr 29 20:19:21 2019	(r346925)
@@ -465,14 +465,11 @@ void
 VGLClear(VGLBitmap *object, u_long color)
 {
   VGLBitmap src;
-  int i, len, mouseoverlap, offset;
+  int i, len, mousemode, offset;
 
   VGLCheckSwitch();
   if (object == VGLDisplay) {
     VGLMouseFreeze();
-    mouseoverlap = VGLMouseOverlap(0, 0, object->VXsize, object->VYsize);
-    if (mouseoverlap)
-      VGLMousePointerHide();
     VGLClear(&VGLVDisplay, color);
   } else if (object->Type != MEMBUF)
     return;		/* invalid */
@@ -499,18 +496,21 @@ VGLClear(VGLBitmap *object, u_long color)
     for (i = 0; i < object->VXsize; i++)
       bcopy(&color, src.Bitmap + i * object->PixelBytes, object->PixelBytes);
     for (i = 0; i < object->VYsize; i++)
-      __VGLBitmapCopy(&src, 0, 0, object, 0, i, object->VXsize, 1);
+      __VGLBitmapCopy(&src, 0, 0, object, 0, i, object->VXsize, -1);
     break;
 
   case VIDBUF8X:
+    mousemode = __VGLMouseMode(VGL_MOUSEHIDE);
     /* XXX works only for Xsize % 4 = 0 */
     outb(0x3c6, 0xff);
     outb(0x3c4, 0x02); outb(0x3c5, 0x0f);
     memset(object->Bitmap, (byte)color, VGLAdpInfo.va_line_width*object->VYsize);
+    __VGLMouseMode(mousemode);
     break;
 
   case VIDBUF4:
   case VIDBUF4S:
+    mousemode = __VGLMouseMode(VGL_MOUSEHIDE);
     /* XXX works only for Xsize % 8 = 0 */
     outb(0x3c4, 0x02); outb(0x3c5, 0x0f);
     outb(0x3ce, 0x05); outb(0x3cf, 0x02);		/* mode 2 */
@@ -524,13 +524,11 @@ VGLClear(VGLBitmap *object, u_long color)
       offset += len;
     }
     outb(0x3ce, 0x05); outb(0x3cf, 0x00);
+    __VGLMouseMode(mousemode);
     break;
   }
-  if (object == VGLDisplay) {
-    if (mouseoverlap)
-      VGLMousePointerShow();
+  if (object == VGLDisplay)
     VGLMouseUnFreeze();
-  }
 }
 
 static inline u_long

Modified: projects/runtime-coverage-v2/lib/libvgl/vgl.h
==============================================================================
--- projects/runtime-coverage-v2/lib/libvgl/vgl.h	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/lib/libvgl/vgl.h	Mon Apr 29 20:19:21 2019	(r346925)
@@ -125,10 +125,8 @@ int VGLSetVScreenSize(VGLBitmap *object, int VXsize, i
 int VGLPanScreen(VGLBitmap *object, int x, int y);
 int VGLSetSegment(unsigned int offset);
 /* mouse.c */
-void VGLMousePointerShow(void);
-void VGLMousePointerHide(void);
+int __VGLMouseMode(int mode);
 void VGLMouseMode(int mode);
-void VGLMouseAction(int dummy);
 void VGLMouseSetImage(VGLBitmap *AndMask, VGLBitmap *OrMask);
 void VGLMouseSetStdImage(void);
 int VGLMouseInit(int mode);

Modified: projects/runtime-coverage-v2/sbin/ipfw/ipfw2.c
==============================================================================
--- projects/runtime-coverage-v2/sbin/ipfw/ipfw2.c	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/sbin/ipfw/ipfw2.c	Mon Apr 29 20:19:21 2019	(r346925)
@@ -1701,9 +1701,13 @@ print_instruction(struct buf_pr *bp, const struct form
 		    IPFW_TLV_STATE_NAME));
 		break;
 	case O_IP6:
+		if (state->flags & HAVE_PROTO)
+			bprintf(bp, " proto");
 		bprintf(bp, " ip6");
 		break;
 	case O_IP4:
+		if (state->flags & HAVE_PROTO)
+			bprintf(bp, " proto");
 		bprintf(bp, " ip4");
 		break;
 	case O_ICMP6TYPE:

Modified: projects/runtime-coverage-v2/share/man/man4/Makefile
==============================================================================
--- projects/runtime-coverage-v2/share/man/man4/Makefile	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/share/man/man4/Makefile	Mon Apr 29 20:19:21 2019	(r346925)
@@ -887,7 +887,8 @@ _ccd.4=		ccd.4
 .endif
 
 .if ${MK_CDDL} != "no"
-_dtrace_provs=	dtrace_io.4 \
+_dtrace_provs=	dtrace_audit.4 \
+		dtrace_io.4 \
 		dtrace_ip.4 \
 		dtrace_lockstat.4 \
 		dtrace_proc.4 \
@@ -896,6 +897,8 @@ _dtrace_provs=	dtrace_io.4 \
 		dtrace_tcp.4 \
 		dtrace_udp.4 \
 		dtrace_udplite.4
+
+MLINKS+=	dtrace_audit.4 dtaudit.4
 .endif
 
 .if ${MK_EFI} != "no"

Modified: projects/runtime-coverage-v2/share/man/man4/audit.4
==============================================================================
--- projects/runtime-coverage-v2/share/man/man4/audit.4	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/share/man/man4/audit.4	Mon Apr 29 20:19:21 2019	(r346925)
@@ -1,6 +1,11 @@
-.\" Copyright (c) 2006 Robert N. M. Watson
+.\" Copyright (c) 2006, 2019 Robert N. M. Watson
 .\" All rights reserved.
 .\"
+.\" This software was developed in part by BAE Systems, the University of
+.\" Cambridge Computer Laboratory, and Memorial University under DARPA/AFRL
+.\" contract FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent
+.\" Computing (TC) research program.
+.\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
@@ -24,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 31, 2009
+.Dd April 28, 2019
 .Dt AUDIT 4
 .Os
 .Sh NAME
@@ -74,6 +79,12 @@ Audit pipe special devices, discussed in
 provide a configurable live tracking mechanism to allow applications to
 tee the audit trail, as well as to configure custom preselection parameters
 to track users and events in a fine-grained manner.
+.Ss DTrace Audit Provider
+The DTrace Audit Provider,
+.Xr dtaudit 4 ,
+allows D scripts to enable capture of in-kernel audit records for kernel audit
+event types, and then process their contents during audit commit or BSM
+generation.
 .Sh SEE ALSO
 .Xr auditreduce 1 ,
 .Xr praudit 1 ,
@@ -88,6 +99,7 @@ to track users and events in a fine-grained manner.
 .Xr setauid 2 ,
 .Xr libbsm 3 ,
 .Xr auditpipe 4 ,
+.Xr dtaudit 4 ,
 .Xr audit.log 5 ,
 .Xr audit_class 5 ,
 .Xr audit_control 5 ,

Modified: projects/runtime-coverage-v2/share/man/man4/auditpipe.4
==============================================================================
--- projects/runtime-coverage-v2/share/man/man4/auditpipe.4	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/share/man/man4/auditpipe.4	Mon Apr 29 20:19:21 2019	(r346925)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 30, 2018
+.Dd April 28, 2019
 .Dt AUDITPIPE 4
 .Os
 .Sh NAME
@@ -221,6 +221,7 @@ to review the default audit trail.
 .Xr poll 2 ,
 .Xr select 2 ,
 .Xr audit 4 ,
+.Xr dtaudit 4 ,
 .Xr audit_control 5 ,
 .Xr audit 8 ,
 .Xr auditd 8

Copied: projects/runtime-coverage-v2/share/man/man4/dtrace_audit.4 (from r346924, head/share/man/man4/dtrace_audit.4)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/runtime-coverage-v2/share/man/man4/dtrace_audit.4	Mon Apr 29 20:19:21 2019	(r346925, copy of r346924, head/share/man/man4/dtrace_audit.4)
@@ -0,0 +1,178 @@
+.\"-
+.\" SPDX-License-Identifier: BSD-2-Clause
+.\"
+.\" Copyright (c) 2019 Robert N. M. Watson
+.\"
+.\" This software was developed by BAE Systems, the University of Cambridge
+.\" Computer Laboratory, and Memorial University under DARPA/AFRL contract
+.\" FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing
+.\" (TC) research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 28, 2019
+.Dt DTRACE_AUDIT 4
+.Os
+.Sh NAME
+.Nm dtrace_audit
+.Nd A DTrace provider for tracing
+.Xr audit 4
+events
+.Sh SYNOPSIS
+.Pp
+.Fn audit:event:aue_*:commit "char *eventname" "struct audit_record *ar"
+.Fn audit:event:aue_*:bsm "char *eventname" "struct audit_record *ar" "const void *" "size_t"
+.Pp
+To compile this module into the kernel, place the following in your kernel
+configuration file:
+.Pp
+.Bd -literal -offset indent
+.Cd "options DTAUDIT"
+.Ed
+.Pp
+Alternatively, to load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+dtaudit_load="YES"
+.Ed
+.Sh DESCRIPTION
+The DTrace
+.Nm dtaudit
+provider allows users to trace events in the kernel security auditing
+subsystem,
+.Xr audit 4 .
+.Xr audit 4
+provides detailed logging of a configurable set of security-relevant system
+calls, including key arguments (such as file paths) and return values that are
+copied race-free as the system call proceeds.
+The
+.Nm dtaudit
+provider allows DTrace scripts to selectively enable in-kernel audit-record
+capture for system calls, and then access those records in either the
+in-kernel format or BSM format (\c
+.Xr audit.log 5 )
+when the system call completes.
+While the in-kernel audit record data structure is subject to change as the
+kernel changes over time, it is a much more friendly interface for use in D
+scripts than either those available via the DTrace system-call provider or the
+BSM trail itself.
+.Ss Configuration
+The
+.Nm dtaudit
+provider relies on
+.Xr audit 4
+being compiled into the kernel.
+.Nm dtaudit
+probes become available only once there is an event-to-name mapping installed
+in the kernel, normally done by
+.Xr auditd 8
+during the boot process, if audit is enabled in
+.Xr rc.conf 5 :
+.Bd -literal -offset indent
+auditd_enable="YES"
+.Ed
+.Pp
+If
+.Nm dtaudit
+probes are required earlier in boot -- for example, in single-user mode -- or
+without enabling
+.Xr audit 4 ,
+they can be preloaded in the boot loader by adding this line to
+.Xr loader.conf 5 .
+.Bd -literal -offset indent
+audit_event_load="YES"
+.Ed
+.Ss Probes
+The
+.Fn audit:event:aue_*:commit
+probes fire synchronously during system-call return, giving access to two
+arguments: a
+.Vt char *
+audit event name, and
+the
+.Vt struct audit_record *
+in-kernel audit record.
+Because the probe fires in system-call return, the user thread has not yet
+regained control, and additional information from the thread and process
+remains available for capture by the script.
+.Pp
+The
+.Fn audit:event:aue_*:bsm
+probes fire asynchonously from system-call return, following BSM conversion
+and just prior to being written to disk, giving access to four arguments: a
+.Vt char *
+audit event name, the
+.Vt struct audit_record *
+in-kernel audit record, a
+.Vt const void *
+pointer to the converted BSM record, and a
+.Vt size_t
+for the length of the BSM record.
+.Sh IMPLEMENTATION NOTES
+When a set of
+.Nm dtaudit
+probes are registered, corresponding in-kernel audit records will be captured
+and their probes will fire regardless of whether the
+.Xr audit 4
+subsystem itself would have captured the record for the purposes of writing it
+to the audit trail, or for delivery to a
+.Xr auditpipe 4 .
+In-kernel audit records allocated only because of enabled
+.Xr dtaudit 4
+probes will not be unnecessarily written to the audit trail or enabled pipes.
+.Sh SEE ALSO
+.Xr dtrace 1 ,
+.Xr audit 4 ,
+.Xr audit.log 5 ,
+.Xr loader.conf 5 ,
+.Xr rc.conf 5 ,
+.Xr auditd 8
+.Sh HISTORY
+The
+.Nm dtaudit
+provider first appeared in
+.Fx 12.0 .
+.Sh AUTHORS
+This software and this manual page were developed by BAE Systems, the
+University of Cambridge Computer Laboratory, and Memorial University under
+DARPA/AFRL contract
+.Pq FA8650-15-C-7558
+.Pq Do CADETS Dc ,
+as part of the DARPA Transparent Computing (TC) research program.
+The
+.Nm dtaudit
+provider and this manual page were written by
+.An Robert Watson Aq Mt rwatson at FreeBSD.org .
+.Sh BUGS
+Because
+.Xr audit 4
+maintains its primary event-to-name mapping database in userspace, that
+database must be loaded into the kernel before
+.Nm dtaudit
+probes become available.
+.Pp
+.Nm dtaudit
+is only able to provide access to system-call audit events, not the full
+scope of userspace events, such as those relating to login, password change,
+and so on.

Modified: projects/runtime-coverage-v2/stand/efi/loader/main.c
==============================================================================
--- projects/runtime-coverage-v2/stand/efi/loader/main.c	Mon Apr 29 20:17:53 2019	(r346924)
+++ projects/runtime-coverage-v2/stand/efi/loader/main.c	Mon Apr 29 20:19:21 2019	(r346925)
@@ -472,13 +472,35 @@ find_currdev(bool do_bootmgr, bool is_last,
 	 */
 	rootdev = getenv("rootdev");
 	if (rootdev != NULL) {
-		printf("Setting currdev to configured rootdev %s\n", rootdev);
+		printf("    Setting currdev to configured rootdev %s\n",
+		    rootdev);
 		set_currdev(rootdev);
 		return (0);
 	}
 
 	/*
-	 * Second choice: If we can find out image boot_info, and there's
+	 * Second choice: If uefi_rootdev is set, translate that UEFI device
+	 * path to the loader's internal name and use that.
+	 */
+	do {
+		rootdev = getenv("uefi_rootdev");
+		if (rootdev == NULL)
+			break;
+		devpath = efi_name_to_devpath(rootdev);
+		if (devpath == NULL)
+			break;
+		dp = efiblk_get_pdinfo_by_device_path(devpath);
+		efi_devpath_free(devpath);
+		if (dp == NULL)
+			break;
+		printf("    Setting currdev to UEFI path %s\n",
+		    rootdev);
+		set_currdev_pdinfo(dp);
+		return (0);
+	} while (0);
+
+	/*
+	 * Third choice: If we can find out image boot_info, and there's
 	 * a follow-on boot image in that boot_info, use that. In this
 	 * case root will be the partition specified in that image and
 	 * we'll load the kernel specified by the file path. Should there
@@ -742,6 +764,80 @@ out:
 	return (how);
 }
 
+void
+parse_loader_efi_config(EFI_HANDLE h, const char *env_fn)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list