Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Sep 2019 14:06:07 -0000
From:      Enji Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r345785 - in projects/kyua-use-googletest-test-interface: contrib/bsnmp/snmpd contrib/capsicum-test contrib/googletest/googletest contrib/googletest/googletest/docs contrib/googletest/g...
Message-ID:  <201904012128.x31LS4bS071533@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Mon Apr  1 21:28:04 2019
New Revision: 345785
URL: https://svnweb.freebsd.org/changeset/base/345785

Log:
  MFhead@r345784

Added:
  projects/kyua-use-googletest-test-interface/contrib/capsicum-test/
     - copied from r345784, head/contrib/capsicum-test/
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc
     - copied unchanged from r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc
Modified:
  projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc
  projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel
  projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile
  projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile
  projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile
  projects/kyua-use-googletest-test-interface/lib/libbe/be.c
  projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh
  projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c
  projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
  projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h
  projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c
  projects/kyua-use-googletest-test-interface/sys/dev/md/md.c
  projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c
  projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c
  projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c
  projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c
  projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c
  projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile
  projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c
  projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile
Directory Properties:
  projects/kyua-use-googletest-test-interface/   (props changed)
  projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/   (props changed)

Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -726,8 +726,7 @@ target_activate_address(struct target_address *addrs)
 	sa.sin_addr.s_addr = htonl((addrs->address[0] << 24) |
 	    (addrs->address[1] << 16) | (addrs->address[2] << 8) |
 	    (addrs->address[3] << 0));
-	sa.sin_port = htons(addrs->address[4]) << 8 |
-	     htons(addrs->address[5]) << 0;
+	sa.sin_port = htons(addrs->address[4] << 8 | addrs->address[5]);
 
 	if (connect(addrs->socket, (struct sockaddr *)&sa, sa.sin_len) == -1) {
 		syslog(LOG_ERR, "connect(%s,%u): %m",

Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt	Mon Apr  1 21:28:04 2019	(r345785)
@@ -217,6 +217,7 @@ if (gtest_build_tests)
     test/gtest-typed-test2_test.cc)
   cxx_test(gtest_unittest gtest_main)
   cxx_test(gtest-unittest-api_test gtest)
+  cxx_test(gtest_skip_in_environment_setup_test gtest_main)
   cxx_test(gtest_skip_test gtest_main)
 
   ############################################################

Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am	Mon Apr  1 21:28:04 2019	(r345785)
@@ -290,6 +290,12 @@ test_gtest_all_test_SOURCES = test/gtest_all_test.cc
 test_gtest_all_test_LDADD = lib/libgtest_main.la \
                             lib/libgtest.la
 
+TESTS += test/gtest_skip_in_environment_setup_test
+check_PROGRAMS += test/gtest_skip_in_environment_setup_test
+test_gtest_skip_in_environment_setup_test_SOURCES = test/gtest_skip_in_environment_setup_test.cc
+test_gtest_skip_in_environment_setup_test_LDADD= lib/libgtest_main.la \
+                                                 lib/libgtest.la
+
 # Tests that fused gtest files compile and work.
 FUSED_GTEST_SRC = \
   fused-src/gtest/gtest-all.cc \

Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md	Mon Apr  1 21:28:04 2019	(r345785)
@@ -1289,8 +1289,10 @@ Environment* AddGlobalTestEnvironment(Environment* env
 ```
 
 Now, when `RUN_ALL_TESTS()` is called, it first calls the `SetUp()` method of
-the environment object, then runs the tests if there was no fatal failures, and
-finally calls `TearDown()` of the environment object.
+each environment object, then runs the tests if none of the environments
+reported fatal failures and `GTEST_SKIP()` was not called. `RUN_ALL_TESTS()`
+always calls `TearDown()` with each environment object, regardless of whether
+or not the tests were run.
 
 It's OK to register multiple environment objects. In this case, their `SetUp()`
 will be called in the order they are registered, and their `TearDown()` will be

Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc	Mon Apr  1 21:28:04 2019	(r345785)
@@ -5243,9 +5243,23 @@ bool UnitTestImpl::RunAllTests() {
       ForEach(environments_, SetUpEnvironment);
       repeater->OnEnvironmentsSetUpEnd(*parent_);
 
-      // Runs the tests only if there was no fatal failure during global
-      // set-up.
-      if (!Test::HasFatalFailure()) {
+      // Runs the tests only if there was no fatal failure or skip triggered
+      // during global set-up.
+      if (Test::IsSkipped()) {
+        // Emit diagnostics when global set-up calls skip, as it will not be
+        // emitted by default.
+        TestResult& test_result =
+          *internal::GetUnitTestImpl()->current_test_result();
+        for (int j = 0; j < test_result.total_part_count(); ++j) {
+          const TestPartResult& test_part_result =
+            test_result.GetTestPartResult(j);
+          if (test_part_result.type() == TestPartResult::kSkip) {
+            const std::string& result = test_part_result.message();
+            printf("%s\n", result.c_str());
+          }
+        }
+        fflush(stdout);
+      } else if (!Test::HasFatalFailure()) {
         for (int test_index = 0; test_index < total_test_case_count();
              test_index++) {
           GetMutableTestCase(test_index)->Run();

Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel
==============================================================================
--- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel	Mon Apr  1 21:28:04 2019	(r345785)
@@ -311,6 +311,13 @@ cc_binary(
     deps = ["//:gtest"],
 )
 
+cc_test(
+    name = "gtest_skip_in_environment_setup_test",
+    size = "small",
+    srcs = ["gtest_skip_in_environment_setup_test.cc"],
+    deps = ["//:gtest_main"],
+)
+
 py_test(
     name = "googletest-list-tests-unittest",
     size = "small",

Copied: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (from r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc	Mon Apr  1 21:28:04 2019	(r345785, copy of r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc)
@@ -0,0 +1,60 @@
+// Copyright 2019, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * 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.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT
+// OWNER 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.
+//
+// This test verifies that skipping in the environment results in the
+// testcases being skipped.
+//
+// This is a reproduction case for
+// https://github.com/google/googletest/issues/2189 .
+
+#include <iostream>
+#include <gtest/gtest.h>
+
+class SetupEnvironment : public testing::Environment {
+public:
+  void SetUp() override {
+    GTEST_SKIP() << "Skipping the entire environment";
+  }
+};
+
+TEST(Test, AlwaysPasses) {
+  EXPECT_EQ(true, true);
+}
+
+TEST(Test, AlwaysFails) {
+  EXPECT_EQ(true, false);
+}
+
+int main(int argc, char **argv) {
+  testing::InitGoogleTest(&argc, argv);
+
+  testing::AddGlobalTestEnvironment(new SetupEnvironment());
+
+  return (RUN_ALL_TESTS());
+}

Modified: projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile
==============================================================================
--- projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile	Mon Apr  1 21:28:04 2019	(r345785)
@@ -3,9 +3,10 @@
 PROG=	gdb${GDB_SUFFIX}
 SRCS=	gdb.c
 
-BULIBS= ${OBJ_BU}/libbfd/libbfd.a ${OBJ_BU}/libopcodes/libopcodes.a \
-	${OBJ_BU}/libiberty/libiberty.a
-GDBLIBS= ${OBJ_GDB}/libgdb/libgdb.a
+BULIBS= ${OBJ_BU}/libbfd/libbfd${PIE_SUFFIX}.a \
+	${OBJ_BU}/libopcodes/libopcodes${PIE_SUFFIX}.a \
+	${OBJ_BU}/libiberty/libiberty${PIE_SUFFIX}.a
+GDBLIBS= ${OBJ_GDB}/libgdb/libgdb${PIE_SUFFIX}.a
 
 # libthread_db.so calls back into gdb for the proc services.  Make all the
 # global symbols visible.

Modified: projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile
==============================================================================
--- projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile	Mon Apr  1 21:28:04 2019	(r345785)
@@ -4,9 +4,10 @@ PROG=	kgdb${GDB_SUFFIX}
 SRCS=	main.c kld.c kthr.c trgt.c trgt_${TARGET_CPUARCH}.c
 WARNS?=	2
 
-BULIBS= ${OBJ_BU}/libbfd/libbfd.a ${OBJ_BU}/libopcodes/libopcodes.a \
-	${OBJ_BU}/libiberty/libiberty.a
-GDBLIBS= ${OBJ_GDB}/libgdb/libgdb.a
+BULIBS= ${OBJ_BU}/libbfd/libbfd${PIE_SUFFIX}.a \
+	${OBJ_BU}/libopcodes/libopcodes${PIE_SUFFIX}.a \
+	${OBJ_BU}/libiberty/libiberty${PIE_SUFFIX}.a
+GDBLIBS= ${OBJ_GDB}/libgdb/libgdb${PIE_SUFFIX}.a
 
 DPADD=	${GDBLIBS} ${BULIBS}
 LDADD=	${GDBLIBS} ${BULIBS}

Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile
==============================================================================
--- projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile	Mon Apr  1 21:28:04 2019	(r345785)
@@ -19,6 +19,7 @@ GTESTS+=	gtest_sole_header_test
 GTESTS+=	googletest-test-part-test
 GTESTS+=	gtest-typed-test_test
 GTESTS+=	gtest_skip_test
+GTESTS+=	gtest_skip_in_environment_setup_test
 GTESTS+=	gtest_unittest
 
 # This test cannot selectively run a single test, as it verifies results when

Modified: projects/kyua-use-googletest-test-interface/lib/libbe/be.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/lib/libbe/be.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/lib/libbe/be.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -265,6 +265,16 @@ be_destroy(libbe_handle_t *lbh, const char *name, int 
 		    zfs_prop_get(fs, ZFS_PROP_ORIGIN, origin, sizeof(origin),
 		    NULL, NULL, 0, 1) != 0)
 			return (set_error(lbh, BE_ERR_NOORIGIN));
+
+		/* Don't destroy a mounted dataset unless force is specified */
+		if ((mounted = zfs_is_mounted(fs, NULL)) != 0) {
+			if (force) {
+				zfs_unmount(fs, NULL, 0);
+			} else {
+				free(bdd.snapname);
+				return (set_error(lbh, BE_ERR_DESTROYMNT));
+			}
+		}
 	} else {
 		if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_SNAPSHOT))
 			return (set_error(lbh, BE_ERR_NOENT));
@@ -277,16 +287,6 @@ be_destroy(libbe_handle_t *lbh, const char *name, int 
 		if (fs == NULL) {
 			free(bdd.snapname);
 			return (set_error(lbh, BE_ERR_ZFSOPEN));
-		}
-	}
-
-	/* Check if mounted, unmount if force is specified */
-	if ((mounted = zfs_is_mounted(fs, NULL)) != 0) {
-		if (force) {
-			zfs_unmount(fs, NULL, 0);
-		} else {
-			free(bdd.snapname);
-			return (set_error(lbh, BE_ERR_DESTROYMNT));
 		}
 	}
 

Modified: projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh
==============================================================================
--- projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh	Mon Apr  1 21:28:04 2019	(r345785)
@@ -123,12 +123,21 @@ bectl_destroy_body()
 	zpool=$(make_zpool_name)
 	disk=${cwd}/disk.img
 	mount=${cwd}/mnt
+	root=${mount}/root
 
 	bectl_create_setup ${zpool} ${disk} ${mount}
 	atf_check bectl -r ${zpool}/ROOT create -e default default2
 	atf_check -o not-empty zfs get mountpoint ${zpool}/ROOT/default2
 	atf_check -e ignore bectl -r ${zpool}/ROOT destroy default2
 	atf_check -e not-empty -s not-exit:0 zfs get mountpoint ${zpool}/ROOT/default2
+
+	# Test origin snapshot deletion when the snapshot to be destroyed
+	# belongs to a mounted dataset, see PR 236043.
+	atf_check mkdir -p ${root}
+	atf_check -o not-empty bectl -r ${zpool}/ROOT mount default ${root}
+	atf_check bectl -r ${zpool}/ROOT create -e default default3
+	atf_check bectl -r ${zpool}/ROOT destroy -o default3
+	atf_check bectl -r ${zpool}/ROOT unmount default
 }
 bectl_destroy_cleanup()
 {

Modified: projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -256,6 +256,8 @@ aw_mmc_cam_action(struct cam_sim *sim, union ccb *ccb)
 		cts->proto_specific.mmc.host_f_min = sc->aw_host.f_min;
 		cts->proto_specific.mmc.host_f_max = sc->aw_host.f_max;
 		cts->proto_specific.mmc.host_caps = sc->aw_host.caps;
+		cts->proto_specific.mmc.host_max_data = (sc->aw_mmc_conf->dma_xferlen *
+		    AW_MMC_DMA_SEGS) / MMC_SECTOR_SIZE;
 		memcpy(&cts->proto_specific.mmc.ios, &sc->aw_host.ios, sizeof(struct mmc_ios));
 		ccb->ccb_h.status = CAM_REQ_CMP;
 		break;

Modified: projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -66,8 +66,17 @@ __FBSDID("$FreeBSD$");
 #define	NUM_DMA_SEGS			2
 
 #ifdef DEBUG
-#define dprintf(fmt, args...) do { printf("%s(): ", __func__);   \
-    printf(fmt,##args); } while (0)
+static int bcm2835_sdhci_debug = 0;
+
+TUNABLE_INT("hw.bcm2835.sdhci.debug", &bcm2835_sdhci_debug);
+SYSCTL_INT(_hw_sdhci, OID_AUTO, bcm2835_sdhci_debug, CTLFLAG_RWTUN,
+    &bcm2835_sdhci_debug, 0, "bcm2835 SDHCI debug level");
+
+#define	dprintf(fmt, args...)					\
+	do {							\
+		if (bcm2835_sdhci_debug)			\
+			printf("%s: " fmt, __func__, ##args);	\
+	}  while (0)
 #else
 #define dprintf(fmt, args...)
 #endif

Modified: projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h	Mon Apr  1 21:28:04 2019	(r345785)
@@ -1051,6 +1051,7 @@ struct ccb_trans_settings_mmc {
 #define MMC_CAP_8_BIT_DATA	(1 << 1) /* Can do 8-bit data transfers */
 #define MMC_CAP_HSPEED		(1 << 2) /* Can do High Speed transfers */
 	uint32_t host_caps;
+	uint32_t host_max_data;
 };
 
 /* Get/Set transfer rate/width/disconnection/tag queueing settings */

Modified: projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -150,6 +150,17 @@ struct sdda_softc {
 	struct timeval log_time;
 };
 
+static const char *mmc_errmsg[] =
+{
+	"None",
+	"Timeout",
+	"Bad CRC",
+	"Fifo",
+	"Failed",
+	"Invalid",
+	"NO MEMORY"
+};
+
 #define ccb_bp		ppriv_ptr1
 
 static	disk_strategy_t	sddastrategy;
@@ -165,6 +176,7 @@ static	void		sddadone(struct cam_periph *periph,
 static  int		sddaerror(union ccb *ccb, u_int32_t cam_flags,
 				u_int32_t sense_flags);
 
+static int mmc_handle_reply(union ccb *ccb);
 static uint16_t get_rca(struct cam_periph *periph);
 static void sdda_start_init(void *context, union ccb *start_ccb);
 static void sdda_start_init_task(void *context, int pending);
@@ -218,6 +230,37 @@ get_rca(struct cam_periph *periph) {
 	return periph->path->device->mmc_ident_data.card_rca;
 }
 
+/*
+ * Figure out if CCB execution resulted in error.
+ * Look at both CAM-level errors and on MMC protocol errors.
+*/
+static int
+mmc_handle_reply(union ccb *ccb)
+{
+
+	KASSERT(ccb->ccb_h.func_code == XPT_MMC_IO,
+	    ("ccb %p: cannot handle non-XPT_MMC_IO errors, got func_code=%d",
+		ccb, ccb->ccb_h.func_code));
+
+	/* TODO: maybe put MMC-specific handling into cam.c/cam_error_print altogether */
+	if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) {
+		if (ccb->mmcio.cmd.error != 0) {
+			xpt_print_path(ccb->ccb_h.path);
+			printf("CMD%d failed, err %d (%s)\n",
+			       ccb->mmcio.cmd.opcode,
+			       ccb->mmcio.cmd.error,
+			       mmc_errmsg[ccb->mmcio.cmd.error]);
+			return (EIO);
+		}
+	} else {
+		cam_error_print(ccb, CAM_ESF_ALL, CAM_EPF_ALL);
+		return (EIO);
+	}
+
+	return (0); /* Normal return */
+}
+
+
 static uint32_t
 mmc_get_bits(uint32_t *bits, int bit_len, int start, int size)
 {
@@ -777,11 +820,12 @@ mmc_exec_app_cmd(struct cam_periph *periph, union ccb 
 		       /*mmc_data*/ NULL,
 		       /*timeout*/ 0);
 
-	err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
+	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
+	err = mmc_handle_reply(ccb);
 	if (err != 0)
-		return err;
+		return (err);
 	if (!(ccb->mmcio.cmd.resp[0] & R1_APP_CMD))
-		return MMC_ERR_FAILED;
+		return (EIO);
 
 	/* Now exec actual command */
 	int flags = 0;
@@ -803,12 +847,14 @@ mmc_exec_app_cmd(struct cam_periph *periph, union ccb 
 		       /*mmc_data*/ cmd->data,
 		       /*timeout*/ 0);
 
-	err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
+	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
+	err = mmc_handle_reply(ccb);
+	if (err != 0)
+		return (err);
 	memcpy(cmd->resp, ccb->mmcio.cmd.resp, sizeof(cmd->resp));
 	cmd->error = ccb->mmcio.cmd.error;
-	if (err != 0)
-		return err;
-	return 0;
+
+	return (0);
 }
 
 static int
@@ -858,10 +904,9 @@ mmc_send_ext_csd(struct cam_periph *periph, union ccb 
 		       /*mmc_data*/ &d,
 		       /*timeout*/ 0);
 
-	err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
-	if (err != 0)
-		return (err);
-	return (MMC_ERR_NONE);
+	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
+	err = mmc_handle_reply(ccb);
+	return (err);
 }
 
 static void
@@ -904,7 +949,7 @@ mmc_switch_fill_mmcio(union ccb *ccb,
 static int
 mmc_select_card(struct cam_periph *periph, union ccb *ccb, uint32_t rca)
 {
-	int flags;
+	int flags, err;
 
 	flags = (rca ? MMC_RSP_R1B : MMC_RSP_NONE) | MMC_CMD_AC;
 	cam_fill_mmcio(&ccb->mmcio,
@@ -918,42 +963,20 @@ mmc_select_card(struct cam_periph *periph, union ccb *
 		       /*timeout*/ 0);
 
 	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
-
-	if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) {
-		if (ccb->mmcio.cmd.error != 0) {
-			CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-				  ("%s: MMC_SELECT command failed", __func__));
-			return EIO;
-		}
-		return 0; /* Normal return */
-	} else {
-		CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-			  ("%s: CAM request failed\n", __func__));
-		return EIO;
-	}
+	err = mmc_handle_reply(ccb);
+	return (err);
 }
 
 static int
 mmc_switch(struct cam_periph *periph, union ccb *ccb,
     uint8_t set, uint8_t index, uint8_t value, u_int timeout)
 {
+	int err;
 
 	mmc_switch_fill_mmcio(ccb, set, index, value, timeout);
 	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
-
-	if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) {
-		if (ccb->mmcio.cmd.error != 0) {
-			CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-				  ("%s: MMC command failed", __func__));
-			return (EIO);
-		}
-		return (0); /* Normal return */
-	} else {
-		CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-			  ("%s: CAM request failed\n", __func__));
-		return (EIO);
-	}
-
+	err = mmc_handle_reply(ccb);
+	return (err);
 }
 
 static uint32_t
@@ -987,6 +1010,7 @@ mmc_sd_switch(struct cam_periph *periph, union ccb *cc
 
 	struct mmc_data mmc_d;
 	uint32_t arg;
+	int err;
 
 	memset(res, 0, 64);
 	mmc_d.len = 64;
@@ -1009,19 +1033,8 @@ mmc_sd_switch(struct cam_periph *periph, union ccb *cc
 		       /*timeout*/ 0);
 
 	cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL);
-
-	if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) {
-		if (ccb->mmcio.cmd.error != 0) {
-			CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-				  ("%s: MMC command failed", __func__));
-			return EIO;
-		}
-		return 0; /* Normal return */
-	} else {
-		CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH,
-			  ("%s: CAM request failed\n", __func__));
-		return EIO;
-	}
+	err = mmc_handle_reply(ccb);
+	return (err);
 }
 
 static int
@@ -1195,6 +1208,27 @@ sdda_get_host_caps(struct cam_periph *periph, union cc
 	return (cts->host_caps);
 }
 
+static uint32_t
+sdda_get_max_data(struct cam_periph *periph, union ccb *ccb)
+{
+	struct ccb_trans_settings_mmc *cts;
+
+	cts = &ccb->cts.proto_specific.mmc;
+	memset(cts, 0, sizeof(struct ccb_trans_settings_mmc));
+
+	ccb->ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
+	ccb->ccb_h.flags = CAM_DIR_NONE;
+	ccb->ccb_h.retry_count = 0;
+	ccb->ccb_h.timeout = 100;
+	ccb->ccb_h.cbfcnp = NULL;
+	xpt_action(ccb);
+
+	if (ccb->ccb_h.status != CAM_REQ_CMP)
+		panic("Cannot get host max data");
+	KASSERT(cts->host_max_data != 0, ("host_max_data == 0?!"));
+	return (cts->host_max_data);
+}
+
 static void
 sdda_start_init(void *context, union ccb *start_ccb)
 {
@@ -1420,7 +1454,6 @@ sdda_add_part(struct cam_periph *periph, u_int type, c
 	struct sdda_softc *sc = (struct sdda_softc *)periph->softc;
 	struct sdda_part *part;
 	struct ccb_pathinq cpi;
-	u_int maxio;
 
 	CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH,
 	    ("Partition type '%s', size %ju %s\n",
@@ -1479,12 +1512,9 @@ sdda_add_part(struct cam_periph *periph, u_int type, c
 	part->disk->d_gone = sddadiskgonecb;
 	part->disk->d_name = part->name;
 	part->disk->d_drv1 = part;
-	maxio = cpi.maxio;		/* Honor max I/O size of SIM */
-	if (maxio == 0)
-		maxio = DFLTPHYS;	/* traditional default */
-	else if (maxio > MAXPHYS)
-		maxio = MAXPHYS;	/* for safety */
-	part->disk->d_maxsize = maxio;
+	part->disk->d_maxsize =
+	    MIN(MAXPHYS, sdda_get_max_data(periph,
+		    (union ccb *)&cpi) * mmc_get_sector_size(periph));
 	part->disk->d_unit = cnt;
 	part->disk->d_flags = 0;
 	strlcpy(part->disk->d_descr, sc->card_id_string,

Modified: projects/kyua-use-googletest-test-interface/sys/dev/md/md.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/md/md.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/md/md.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -110,6 +110,7 @@
 
 #define MD_SHUTDOWN	0x10000		/* Tell worker thread to terminate. */
 #define	MD_EXITING	0x20000		/* Worker thread is exiting. */
+#define MD_PROVIDERGONE	0x40000		/* Safe to free the softc */
 
 #ifndef MD_NSECT
 #define MD_NSECT (10000 * 2)
@@ -199,6 +200,7 @@ static g_start_t g_md_start;
 static g_access_t g_md_access;
 static void g_md_dumpconf(struct sbuf *sb, const char *indent,
     struct g_geom *gp, struct g_consumer *cp __unused, struct g_provider *pp);
+static g_provgone_t g_md_providergone;
 
 static struct cdev *status_dev = NULL;
 static struct sx md_sx;
@@ -220,6 +222,7 @@ struct g_class g_md_class = {
 	.start = g_md_start,
 	.access = g_md_access,
 	.dumpconf = g_md_dumpconf,
+	.providergone = g_md_providergone,
 };
 
 DECLARE_GEOM_CLASS(g_md_class, g_md);
@@ -481,8 +484,8 @@ g_md_start(struct bio *bp)
 	}
 	mtx_lock(&sc->queue_mtx);
 	bioq_disksort(&sc->bio_queue, bp);
-	mtx_unlock(&sc->queue_mtx);
 	wakeup(sc);
+	mtx_unlock(&sc->queue_mtx);
 }
 
 #define	MD_MALLOC_MOVE_ZERO	1
@@ -1496,17 +1499,30 @@ bad:
 	return (error);
 }
 
+static void
+g_md_providergone(struct g_provider *pp)
+{
+	struct md_s *sc = pp->geom->softc;
+
+	mtx_lock(&sc->queue_mtx);
+	sc->flags |= MD_PROVIDERGONE;
+	wakeup(&sc->flags);
+	mtx_unlock(&sc->queue_mtx);
+}
+
 static int
 mddestroy(struct md_s *sc, struct thread *td)
 {
 
 	if (sc->gp) {
-		sc->gp->softc = NULL;
 		g_topology_lock();
 		g_wither_geom(sc->gp, ENXIO);
 		g_topology_unlock();
-		sc->gp = NULL;
-		sc->pp = NULL;
+
+		mtx_lock(&sc->queue_mtx);
+		while (!(sc->flags & MD_PROVIDERGONE))
+			msleep(&sc->flags, &sc->queue_mtx, PRIBIO, "mddestroy", 0);
+		mtx_unlock(&sc->queue_mtx);
 	}
 	if (sc->devstat) {
 		devstat_remove_entry(sc->devstat);

Modified: projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -31,6 +31,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_acpi.h"
 #include "opt_bus.h"
 
 #include <sys/param.h>
@@ -5693,13 +5694,34 @@ pci_get_resource_list (device_t dev, device_t child)
 	return (&dinfo->resources);
 }
 
+#ifdef ACPI_DMAR
+bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child);
 bus_dma_tag_t
 pci_get_dma_tag(device_t bus, device_t dev)
 {
+	bus_dma_tag_t tag;
+	struct pci_softc *sc;
+
+	if (device_get_parent(dev) == bus) {
+		/* try dmar and return if it works */
+		tag = dmar_get_dma_tag(bus, dev);
+	} else
+		tag = NULL;
+	if (tag == NULL) {
+		sc = device_get_softc(bus);
+		tag = sc->sc_dma_tag;
+	}
+	return (tag);
+}
+#else
+bus_dma_tag_t
+pci_get_dma_tag(device_t bus, device_t dev)
+{
 	struct pci_softc *sc = device_get_softc(bus);
 
 	return (sc->sc_dma_tag);
 }
+#endif
 
 uint32_t
 pci_read_config_method(device_t dev, device_t child, int reg, int width)

Modified: projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -2580,6 +2580,7 @@ sdhci_cam_action(struct cam_sim *sim, union ccb *ccb)
 	case XPT_GET_TRAN_SETTINGS:
 	{
 		struct ccb_trans_settings *cts = &ccb->cts;
+		uint32_t max_data;
 
 		if (sdhci_debug > 1)
 			slot_printf(slot, "Got XPT_GET_TRAN_SETTINGS\n");
@@ -2593,6 +2594,19 @@ sdhci_cam_action(struct cam_sim *sim, union ccb *ccb)
 		cts->proto_specific.mmc.host_f_min = slot->host.f_min;
 		cts->proto_specific.mmc.host_f_max = slot->host.f_max;
 		cts->proto_specific.mmc.host_caps = slot->host.caps;
+		/*
+		 * Re-tuning modes 1 and 2 restrict the maximum data length
+		 * per read/write command to 4 MiB.
+		 */
+		if (slot->opt & SDHCI_TUNING_ENABLED &&
+		    (slot->retune_mode == SDHCI_RETUNE_MODE_1 ||
+		    slot->retune_mode == SDHCI_RETUNE_MODE_2)) {
+			max_data = 4 * 1024 * 1024 / MMC_SECTOR_SIZE;
+		} else {
+			max_data = 65535;
+		}
+		cts->proto_specific.mmc.host_max_data = max_data;
+
 		memcpy(&cts->proto_specific.mmc.ios, &slot->host.ios, sizeof(struct mmc_ios));
 		ccb->ccb_h.status = CAM_REQ_CMP;
 		break;

Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -2851,10 +2851,6 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin
 	}
 
 	if (flags & RT2860_RX_L2PAD) {
-		/*
-		 * XXX OpenBSD removes padding between header
-		 * and payload here...
-		 */
 		RUN_DPRINTF(sc, RUN_DEBUG_RECV,
 		    "received RT2860_RX_L2PAD frame\n");
 		len += 2;
@@ -2865,8 +2861,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin
 
 	wh = mtod(m, struct ieee80211_frame *);
 
-	/* XXX wrong for monitor mode */
-	if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) {
+	if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) != 0 &&
+	    (flags & RT2860_RX_DEC) != 0) {
 		wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED;
 		m->m_flags |= M_WEP;
 	}
@@ -2896,6 +2892,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin
 		uint16_t phy;
 
 		tap->wr_flags = 0;
+		if (flags & RT2860_RX_L2PAD)
+			tap->wr_flags |= IEEE80211_RADIOTAP_F_DATAPAD;
 		tap->wr_antsignal = rssi;
 		tap->wr_antenna = ant;
 		tap->wr_dbm_antsignal = run_rssi2dbm(sc, rssi, ant);
@@ -3162,14 +3160,23 @@ tr_setup:
 
 		vap = data->ni->ni_vap;
 		if (ieee80211_radiotap_active_vap(vap)) {
+			const struct ieee80211_frame *wh;
 			struct run_tx_radiotap_header *tap = &sc->sc_txtap;
 			struct rt2860_txwi *txwi = 
 			    (struct rt2860_txwi *)(&data->desc + sizeof(struct rt2870_txd));
+			int has_l2pad;
+
+			wh = mtod(m, struct ieee80211_frame *);
+			has_l2pad = IEEE80211_HAS_ADDR4(wh) !=
+			    IEEE80211_QOS_HAS_SEQ(wh);
+
 			tap->wt_flags = 0;
 			tap->wt_rate = rt2860_rates[data->ridx].rate;
 			tap->wt_hwqueue = index;
 			if (le16toh(txwi->phy) & RT2860_PHY_SHPRE)
 				tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
+			if (has_l2pad)
+				tap->wt_flags |= IEEE80211_RADIOTAP_F_DATAPAD;
 
 			ieee80211_radiotap_tx(vap, m);
 		}

Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -1276,8 +1276,8 @@ uath_watchdog(void *arg)
 	if (sc->sc_tx_timer > 0) {
 		if (--sc->sc_tx_timer == 0) {
 			device_printf(sc->sc_dev, "device timeout\n");
-			/*uath_init(sc); XXX needs a process context! */
 			counter_u64_add(ic->ic_oerrors, 1);
+			ieee80211_restart_all(ic);
 			return;
 		}
 		callout_reset(&sc->watchdog_ch, hz, uath_watchdog, sc);

Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -1891,11 +1891,13 @@ static void
 urtw_watchdog(void *arg)
 {
 	struct urtw_softc *sc = arg;
+	struct ieee80211com *ic = &sc->sc_ic;
 
 	if (sc->sc_txtimer > 0) {
 		if (--sc->sc_txtimer == 0) {
 			device_printf(sc->sc_dev, "device timeout\n");
-			counter_u64_add(sc->sc_ic.ic_oerrors, 1);
+			counter_u64_add(ic->ic_oerrors, 1);
+			ieee80211_restart_all(ic);
 			return;
 		}
 		callout_reset(&sc->sc_watchdog_ch, hz, urtw_watchdog, sc);

Modified: projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile
==============================================================================
--- projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile	Mon Apr  1 21:28:04 2019	(r345785)
@@ -55,4 +55,6 @@ WARNS?=	6
 
 LDFLAGS+=	-lbsm -lutil
 
+CFLAGS.process-control.c+=	-I${SRCTOP}/tests
+
 .include <bsd.test.mk>

Modified: projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c
==============================================================================
--- projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c	Mon Apr  1 21:28:04 2019	(r345785)
@@ -48,6 +48,8 @@
 
 #include "utils.h"
 
+#include "freebsd_test_suite/macros.h"
+
 static pid_t pid;
 static int filedesc, status;
 static struct pollfd fds[1];
@@ -1512,15 +1514,8 @@ ATF_TC_HEAD(cap_enter_success, tc)
 
 ATF_TC_BODY(cap_enter_success, tc)
 {
-	int capinfo;
-	size_t len = sizeof(capinfo);
-	const char *capname = "kern.features.security_capability_mode";
-	ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0));
+	ATF_REQUIRE_FEATURE("security_capability_mode");
 
-	/* Without CAPABILITY_MODE enabled, cap_enter() returns ENOSYS */
-	if (!capinfo)
-		atf_tc_skip("Capsicum is not enabled in the system");
-
 	FILE *pipefd = setup(fds, auclass);
 	ATF_REQUIRE((pid = fork()) != -1);
 	if (pid) {
@@ -1550,14 +1545,9 @@ ATF_TC_HEAD(cap_getmode_success, tc)
 
 ATF_TC_BODY(cap_getmode_success, tc)
 {
-	int capinfo, modep;
-	size_t len = sizeof(capinfo);
-	const char *capname = "kern.features.security_capability_mode";
-	ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0));
+	int modep;
 
-	/* Without CAPABILITY_MODE enabled, cap_getmode() returns ENOSYS */
-	if (!capinfo)
-		atf_tc_skip("Capsicum is not enabled in the system");
+	ATF_REQUIRE_FEATURE("security_capability_mode");
 
 	pid = getpid();
 	snprintf(pcregex, sizeof(pcregex), "cap_getmode.*%d.*success", pid);

Modified: projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile
==============================================================================
--- projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile	Mon Apr  1 21:26:05 2019	(r345784)
+++ projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile	Mon Apr  1 21:28:04 2019	(r345785)
@@ -1,11 +1,56 @@
 # $FreeBSD$
 
+.include <src.opts.mk>
+
 TESTSDIR=	${TESTSBASE}/sys/capsicum
 
 ATF_TESTS_C+=	bindat_connectat
 ATF_TESTS_C+=	ioctls_test
 
 CFLAGS+=	-I${SRCTOP}/tests
+
+.if ${MK_GOOGLETEST} != no
+
+.PATH: ${SRCTOP}/contrib/capsicum-test
+
+GTESTS+=	capsicum-test
+
+SRCS.capsicum-test+=	\
+	capsicum-test-main.cc \
+	capsicum-test.cc \
+	capability-fd.cc \
+	fexecve.cc \
+	procdesc.cc \
+	capmode.cc \
+	fcntl.cc \
+	ioctl.cc \
+	openat.cc \
+	sysctl.cc \
+	select.cc \
+	mqueue.cc \
+	socket.cc \
+	sctp.cc \
+	capability-fd-pair.cc \
+	overhead.cc \
+	rename.cc
+
+LIBADD.capsicum-test+=	gtest pthread
+TEST_METADATA.capsicum-test=	required_user="unprivileged"
+
+.for p in mini-me mini-me.noexec mini-me.setuid
+PROGS+=		$p
+NO_SHARED.$p=
+SRCS.$p=	mini-me.c
+.endfor
+
+BINDIR=	${TESTSDIR}
+
+BINMODE.mini-me.noexec=	${NOBINMODE}
+BINMODE.mini-me.setuid=	4555
+
+WARNS.capsicum-test=	3
+
+.endif
 
 WARNS?=	6
 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904012128.x31LS4bS071533>