Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Feb 2019 03:46:32 +0000 (UTC)
From:      Enji Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r344271 - in projects/import-googletest-1.8.1: . contrib/libarchive/libarchive contrib/libc++/include contrib/llvm/lib/MC etc/mtree kerberos5/tools/asn1_compile kerberos5/tools/slc lib/...
Message-ID:  <201902190346.x1J3kWhD055366@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Tue Feb 19 03:46:32 2019
New Revision: 344271
URL: https://svnweb.freebsd.org/changeset/base/344271

Log:
  MFhead@r344270

Added:
  projects/import-googletest-1.8.1/lib/libc/x86/gen/
     - copied from r344270, head/lib/libc/x86/gen/
  projects/import-googletest-1.8.1/sys/opencrypto/cbc_mac.c
     - copied unchanged from r344270, head/sys/opencrypto/cbc_mac.c
  projects/import-googletest-1.8.1/sys/opencrypto/cbc_mac.h
     - copied unchanged from r344270, head/sys/opencrypto/cbc_mac.h
  projects/import-googletest-1.8.1/sys/opencrypto/xform_cbc_mac.c
     - copied unchanged from r344270, head/sys/opencrypto/xform_cbc_mac.c
  projects/import-googletest-1.8.1/tools/build/options/WITHOUT_PIE
     - copied unchanged from r344270, head/tools/build/options/WITHOUT_PIE
  projects/import-googletest-1.8.1/tools/build/options/WITH_PIE
     - copied unchanged from r344270, head/tools/build/options/WITH_PIE
Deleted:
  projects/import-googletest-1.8.1/lib/libc/amd64/gen/getcontextx.c
  projects/import-googletest-1.8.1/lib/libc/i386/gen/getcontextx.c
Modified:
  projects/import-googletest-1.8.1/UPDATING
  projects/import-googletest-1.8.1/contrib/libarchive/libarchive/archive_read_disk_posix.c
  projects/import-googletest-1.8.1/contrib/libc++/include/type_traits
  projects/import-googletest-1.8.1/contrib/llvm/lib/MC/ELFObjectWriter.cpp
  projects/import-googletest-1.8.1/etc/mtree/BSD.root.dist
  projects/import-googletest-1.8.1/kerberos5/tools/asn1_compile/Makefile
  projects/import-googletest-1.8.1/kerberos5/tools/slc/Makefile
  projects/import-googletest-1.8.1/lib/clang/Makefile.inc
  projects/import-googletest-1.8.1/lib/clang/libllvmminimal/Makefile
  projects/import-googletest-1.8.1/lib/libbe/be.c
  projects/import-googletest-1.8.1/lib/libbe/be.h
  projects/import-googletest-1.8.1/lib/libbe/be_error.c
  projects/import-googletest-1.8.1/lib/libbe/libbe.3
  projects/import-googletest-1.8.1/lib/libc/Makefile
  projects/import-googletest-1.8.1/lib/libc/amd64/gen/Makefile.inc
  projects/import-googletest-1.8.1/lib/libc/gen/readpassphrase.3
  projects/import-googletest-1.8.1/lib/libc/i386/gen/Makefile.inc
  projects/import-googletest-1.8.1/lib/libc/sys/sendfile.2
  projects/import-googletest-1.8.1/lib/libc/x86/sys/__vdso_gettc.c
  projects/import-googletest-1.8.1/lib/libmemstat/memstat_uma.c
  projects/import-googletest-1.8.1/lib/libthr/arch/powerpc/include/pthread_md.h
  projects/import-googletest-1.8.1/libexec/rc/rc.d/nfsd
  projects/import-googletest-1.8.1/libexec/rtld-elf/Makefile
  projects/import-googletest-1.8.1/sbin/mdmfs/mdmfs.c
  projects/import-googletest-1.8.1/sbin/nvmecontrol/firmware.c
  projects/import-googletest-1.8.1/share/man/man5/src.conf.5
  projects/import-googletest-1.8.1/share/mk/bsd.lib.mk
  projects/import-googletest-1.8.1/share/mk/bsd.opts.mk
  projects/import-googletest-1.8.1/share/mk/bsd.prog.mk
  projects/import-googletest-1.8.1/share/mk/src.libnames.mk
  projects/import-googletest-1.8.1/stand/common/dev_net.c
  projects/import-googletest-1.8.1/stand/common/disk.c
  projects/import-googletest-1.8.1/stand/common/part.c
  projects/import-googletest-1.8.1/stand/i386/Makefile.inc
  projects/import-googletest-1.8.1/stand/i386/zfsboot/zfsboot.c
  projects/import-googletest-1.8.1/stand/libsa/cd9660.c
  projects/import-googletest-1.8.1/stand/libsa/zfs/zfs.c
  projects/import-googletest-1.8.1/stand/lua/password.lua
  projects/import-googletest-1.8.1/stand/powerpc/uboot/Makefile
  projects/import-googletest-1.8.1/stand/uboot/common/main.c
  projects/import-googletest-1.8.1/stand/uboot/lib/libuboot.h
  projects/import-googletest-1.8.1/sys/amd64/amd64/pmap.c
  projects/import-googletest-1.8.1/sys/amd64/sgx/sgx_linux.c
  projects/import-googletest-1.8.1/sys/arm/allwinner/axp81x.c
  projects/import-googletest-1.8.1/sys/arm/arm/elf_machdep.c
  projects/import-googletest-1.8.1/sys/arm/freescale/imx/imx6_snvs.c
  projects/import-googletest-1.8.1/sys/arm64/arm64/elf_machdep.c
  projects/import-googletest-1.8.1/sys/conf/NOTES
  projects/import-googletest-1.8.1/sys/conf/files
  projects/import-googletest-1.8.1/sys/conf/ldscript.riscv
  projects/import-googletest-1.8.1/sys/contrib/libnv/nvpair.c
  projects/import-googletest-1.8.1/sys/dev/ata/ata-all.h
  projects/import-googletest-1.8.1/sys/dev/ena/ena.c
  projects/import-googletest-1.8.1/sys/dev/ena/ena.h
  projects/import-googletest-1.8.1/sys/dev/ixl/if_ixl.c
  projects/import-googletest-1.8.1/sys/dev/ixl/ixl_pf.h
  projects/import-googletest-1.8.1/sys/dev/netmap/netmap_freebsd.c
  projects/import-googletest-1.8.1/sys/dev/netmap/netmap_kern.h
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_internal.c
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_internal.h
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_io.c
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_ipc.h
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_node.c
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_node.h
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_vfsops.c
  projects/import-googletest-1.8.1/sys/fs/fuse/fuse_vnops.c
  projects/import-googletest-1.8.1/sys/i386/include/cpufunc.h
  projects/import-googletest-1.8.1/sys/kern/kern_resource.c
  projects/import-googletest-1.8.1/sys/kern/sys_pipe.c
  projects/import-googletest-1.8.1/sys/mips/mips/elf_machdep.c
  projects/import-googletest-1.8.1/sys/modules/crypto/Makefile
  projects/import-googletest-1.8.1/sys/net/if_lagg.c
  projects/import-googletest-1.8.1/sys/net/if_vlan.c
  projects/import-googletest-1.8.1/sys/net/iflib.c
  projects/import-googletest-1.8.1/sys/netinet/in_pcb.c
  projects/import-googletest-1.8.1/sys/netinet/tcp_timewait.c
  projects/import-googletest-1.8.1/sys/opencrypto/cryptodev.c
  projects/import-googletest-1.8.1/sys/opencrypto/cryptodev.h
  projects/import-googletest-1.8.1/sys/opencrypto/cryptosoft.c
  projects/import-googletest-1.8.1/sys/opencrypto/xform_aes_icm.c
  projects/import-googletest-1.8.1/sys/opencrypto/xform_auth.h
  projects/import-googletest-1.8.1/sys/opencrypto/xform_enc.h
  projects/import-googletest-1.8.1/sys/powerpc/booke/pmap.c
  projects/import-googletest-1.8.1/sys/powerpc/powerpc/elf32_machdep.c
  projects/import-googletest-1.8.1/sys/powerpc/powerpc/elf64_machdep.c
  projects/import-googletest-1.8.1/sys/powerpc/powerpc/exec_machdep.c
  projects/import-googletest-1.8.1/sys/riscv/include/param.h
  projects/import-googletest-1.8.1/sys/riscv/include/pcb.h
  projects/import-googletest-1.8.1/sys/riscv/include/pcpu.h
  projects/import-googletest-1.8.1/sys/riscv/include/pmap.h
  projects/import-googletest-1.8.1/sys/riscv/include/pte.h
  projects/import-googletest-1.8.1/sys/riscv/include/vmparam.h
  projects/import-googletest-1.8.1/sys/riscv/riscv/elf_machdep.c
  projects/import-googletest-1.8.1/sys/riscv/riscv/genassym.c
  projects/import-googletest-1.8.1/sys/riscv/riscv/machdep.c
  projects/import-googletest-1.8.1/sys/riscv/riscv/mp_machdep.c
  projects/import-googletest-1.8.1/sys/riscv/riscv/pmap.c
  projects/import-googletest-1.8.1/sys/riscv/riscv/swtch.S
  projects/import-googletest-1.8.1/sys/riscv/riscv/vm_machdep.c
  projects/import-googletest-1.8.1/sys/sparc64/sparc64/elf_machdep.c
  projects/import-googletest-1.8.1/sys/vm/vm_fault.c
  projects/import-googletest-1.8.1/sys/vm/vm_map.c
  projects/import-googletest-1.8.1/sys/vm/vm_pageout.c
  projects/import-googletest-1.8.1/sys/vm/vnode_pager.c
  projects/import-googletest-1.8.1/tools/build/mk/OptionalObsoleteFiles.inc
  projects/import-googletest-1.8.1/tools/tools/crypto/cryptocheck.c
  projects/import-googletest-1.8.1/usr.bin/clang/Makefile.inc
  projects/import-googletest-1.8.1/usr.bin/kdump/kdump.c
  projects/import-googletest-1.8.1/usr.bin/svn/Makefile.inc
  projects/import-googletest-1.8.1/usr.sbin/bhyve/block_if.c
  projects/import-googletest-1.8.1/usr.sbin/bhyve/pci_xhci.c   (contents, props changed)
  projects/import-googletest-1.8.1/usr.sbin/bsdinstall/partedit/partedit_powerpc.c
  projects/import-googletest-1.8.1/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_partition_tbl.c
  projects/import-googletest-1.8.1/usr.sbin/nfsd/nfsd.8
  projects/import-googletest-1.8.1/usr.sbin/nfsd/nfsd.c
  projects/import-googletest-1.8.1/usr.sbin/rpc.ypupdated/update.c
  projects/import-googletest-1.8.1/usr.sbin/wlandebug/Makefile
Directory Properties:
  projects/import-googletest-1.8.1/   (props changed)
  projects/import-googletest-1.8.1/contrib/libarchive/   (props changed)
  projects/import-googletest-1.8.1/contrib/libc++/   (props changed)
  projects/import-googletest-1.8.1/contrib/llvm/   (props changed)

Modified: projects/import-googletest-1.8.1/UPDATING
==============================================================================
--- projects/import-googletest-1.8.1/UPDATING	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/UPDATING	Tue Feb 19 03:46:32 2019	(r344271)
@@ -38,6 +38,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
 	modules on kernels not having 'device iflib', the iflib.ko module
 	is loaded automatically.
 
+20190125:
+	The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration
+	options no longer exist since r343219 and r343427 respectively;
+	nothing uses them, so they should be just removed from custom
+	kernel config files.
+
 20181230:
 	r342635 changes the way efibootmgr(8) works by requiring users to add
 	the -b (bootnum) parameter for commands where the bootnum was previously
@@ -231,7 +237,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
 20180719:
 	ARM64 now have efifb support, if you want to have serial console
 	on your arm64 board when an screen is connected and the bootloader
-	setup a frambuffer for us to use, just add :
+	setup a framebuffer for us to use, just add :
 	boot_serial=YES
 	boot_multicons=YES
 	in /boot/loader.conf

Modified: projects/import-googletest-1.8.1/contrib/libarchive/libarchive/archive_read_disk_posix.c
==============================================================================
--- projects/import-googletest-1.8.1/contrib/libarchive/libarchive/archive_read_disk_posix.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/contrib/libarchive/libarchive/archive_read_disk_posix.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -860,6 +860,7 @@ next_entry(struct archive_read_disk *a, struct tree *t
 	struct archive_string delayed_str;
 
 	delayed = ARCHIVE_OK;
+	delayed_errno = 0;
 	archive_string_init(&delayed_str);
 
 	st = NULL;

Modified: projects/import-googletest-1.8.1/contrib/libc++/include/type_traits
==============================================================================
--- projects/import-googletest-1.8.1/contrib/libc++/include/type_traits	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/contrib/libc++/include/type_traits	Tue Feb 19 03:46:32 2019	(r344271)
@@ -733,12 +733,6 @@ _LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_
 // is_floating_point
 
 template <class _Tp> struct __libcpp_is_floating_point              : public false_type {};
-#ifdef __clang__
-template <>          struct __libcpp_is_floating_point<__fp16>      : public true_type {};
-#endif
-#ifdef __FLT16_MANT_DIG__
-template <>          struct __libcpp_is_floating_point<_Float16>    : public true_type {};
-#endif
 template <>          struct __libcpp_is_floating_point<float>       : public true_type {};
 template <>          struct __libcpp_is_floating_point<double>      : public true_type {};
 template <>          struct __libcpp_is_floating_point<long double> : public true_type {};

Modified: projects/import-googletest-1.8.1/contrib/llvm/lib/MC/ELFObjectWriter.cpp
==============================================================================
--- projects/import-googletest-1.8.1/contrib/llvm/lib/MC/ELFObjectWriter.cpp	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/contrib/llvm/lib/MC/ELFObjectWriter.cpp	Tue Feb 19 03:46:32 2019	(r344271)
@@ -1258,14 +1258,20 @@ void ELFObjectWriter::executePostLayoutBinding(MCAssem
     if (!Symbol.isUndefined() && !Rest.startswith("@@@"))
       continue;
 
-    // FIXME: produce a better error message.
+    // FIXME: Get source locations for these errors or diagnose them earlier.
     if (Symbol.isUndefined() && Rest.startswith("@@") &&
-        !Rest.startswith("@@@"))
-      report_fatal_error("A @@ version cannot be undefined");
+        !Rest.startswith("@@@")) {
+      Asm.getContext().reportError(SMLoc(), "versioned symbol " + AliasName +
+                                                " must be defined");
+      continue;
+    }
 
-    if (Renames.count(&Symbol) && Renames[&Symbol] != Alias)
-      report_fatal_error(llvm::Twine("Multiple symbol versions defined for ") +
-                         Symbol.getName());
+    if (Renames.count(&Symbol) && Renames[&Symbol] != Alias) {
+      Asm.getContext().reportError(
+          SMLoc(), llvm::Twine("multiple symbol versions defined for ") +
+                       Symbol.getName());
+      continue;
+    }
 
     Renames.insert(std::make_pair(&Symbol, Alias));
   }

Modified: projects/import-googletest-1.8.1/etc/mtree/BSD.root.dist
==============================================================================
--- projects/import-googletest-1.8.1/etc/mtree/BSD.root.dist	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/etc/mtree/BSD.root.dist	Tue Feb 19 03:46:32 2019	(r344271)
@@ -26,6 +26,8 @@
         ..
         modules
         ..
+        uboot
+        ..
         zfs
         ..
     ..

Modified: projects/import-googletest-1.8.1/kerberos5/tools/asn1_compile/Makefile
==============================================================================
--- projects/import-googletest-1.8.1/kerberos5/tools/asn1_compile/Makefile	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/kerberos5/tools/asn1_compile/Makefile	Tue Feb 19 03:46:32 2019	(r344271)
@@ -6,6 +6,7 @@ LIBROKEN_A=	${.OBJDIR:H:H}/lib/libroken/libroken.a
 LIBADD=	vers
 LDADD=	${LIBROKEN_A}
 DPADD=	${LIBROKEN_A}
+MK_PIE:=	no
 
 SRCS=	\
 	asn1parse.y \

Modified: projects/import-googletest-1.8.1/kerberos5/tools/slc/Makefile
==============================================================================
--- projects/import-googletest-1.8.1/kerberos5/tools/slc/Makefile	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/kerberos5/tools/slc/Makefile	Tue Feb 19 03:46:32 2019	(r344271)
@@ -6,6 +6,7 @@ LIBADD=	vers
 LDADD=  ${LIBROKEN_A}
 DPADD=  ${LIBROKEN_A}
 MAN=
+MK_PIE:=	no
 
 SRCS=	roken.h \
 	slc-gram.y \

Modified: projects/import-googletest-1.8.1/lib/clang/Makefile.inc
==============================================================================
--- projects/import-googletest-1.8.1/lib/clang/Makefile.inc	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/clang/Makefile.inc	Tue Feb 19 03:46:32 2019	(r344271)
@@ -2,6 +2,8 @@
 
 .include <bsd.compiler.mk>
 
+MK_PIE:=	no	# Explicit libXXX.a references
+
 .if ${COMPILER_TYPE} == "clang"
 DEBUG_FILES_CFLAGS= -gline-tables-only
 .else

Modified: projects/import-googletest-1.8.1/lib/clang/libllvmminimal/Makefile
==============================================================================
--- projects/import-googletest-1.8.1/lib/clang/libllvmminimal/Makefile	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/clang/libllvmminimal/Makefile	Tue Feb 19 03:46:32 2019	(r344271)
@@ -18,6 +18,7 @@ SRCS+=		Support/Errno.cpp
 SRCS+=		Support/Error.cpp
 SRCS+=		Support/ErrorHandling.cpp
 SRCS+=		Support/FoldingSet.cpp
+SRCS+=		Support/FormatVariadic.cpp
 SRCS+=		Support/FormattedStream.cpp
 SRCS+=		Support/Hashing.cpp
 SRCS+=		Support/Host.cpp

Modified: projects/import-googletest-1.8.1/lib/libbe/be.c
==============================================================================
--- projects/import-googletest-1.8.1/lib/libbe/be.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libbe/be.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -45,6 +45,11 @@ __FBSDID("$FreeBSD$");
 #include "be.h"
 #include "be_impl.h"
 
+struct be_destroy_data {
+	libbe_handle_t		*lbh;
+	char			*snapname;
+};
+
 #if SOON
 static int be_create_child_noent(libbe_handle_t *lbh, const char *active,
     const char *child_path);
@@ -186,12 +191,38 @@ be_nicenum(uint64_t num, char *buf, size_t buflen)
 static int
 be_destroy_cb(zfs_handle_t *zfs_hdl, void *data)
 {
+	char path[BE_MAXPATHLEN];
+	struct be_destroy_data *bdd;
+	zfs_handle_t *snap;
 	int err;
 
-	if ((err = zfs_iter_children(zfs_hdl, be_destroy_cb, data)) != 0)
+	bdd = (struct be_destroy_data *)data;
+	if (bdd->snapname == NULL) {
+		err = zfs_iter_children(zfs_hdl, be_destroy_cb, data);
+		if (err != 0)
+			return (err);
+		return (zfs_destroy(zfs_hdl, false));
+	}
+	/* If we're dealing with snapshots instead, delete that one alone */
+	err = zfs_iter_filesystems(zfs_hdl, be_destroy_cb, data);
+	if (err != 0)
 		return (err);
-	if ((err = zfs_destroy(zfs_hdl, false)) != 0)
-		return (err);
+	/*
+	 * This part is intentionally glossing over any potential errors,
+	 * because there's a lot less potential for errors when we're cleaning
+	 * up snapshots rather than a full deep BE.  The primary error case
+	 * here being if the snapshot doesn't exist in the first place, which
+	 * the caller will likely deem insignificant as long as it doesn't
+	 * exist after the call.  Thus, such a missing snapshot shouldn't jam
+	 * up the destruction.
+	 */
+	snprintf(path, sizeof(path), "%s@%s", zfs_get_name(zfs_hdl),
+	    bdd->snapname);
+	if (!zfs_dataset_exists(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT))
+		return (0);
+	snap = zfs_open(bdd->lbh->lzh, path, ZFS_TYPE_SNAPSHOT);
+	if (snap != NULL)
+		zfs_destroy(snap, false);
 	return (0);
 }
 
@@ -199,22 +230,26 @@ be_destroy_cb(zfs_handle_t *zfs_hdl, void *data)
  * Destroy the boot environment or snapshot specified by the name
  * parameter. Options are or'd together with the possible values:
  * BE_DESTROY_FORCE : forces operation on mounted datasets
+ * BE_DESTROY_ORIGIN: destroy the origin snapshot as well
  */
 int
 be_destroy(libbe_handle_t *lbh, const char *name, int options)
 {
+	struct be_destroy_data bdd;
 	char origin[BE_MAXPATHLEN], path[BE_MAXPATHLEN];
 	zfs_handle_t *fs;
-	char *p;
+	char *snapdelim;
 	int err, force, mounted;
+	size_t rootlen;
 
-	p = path;
+	bdd.lbh = lbh;
+	bdd.snapname = NULL;
 	force = options & BE_DESTROY_FORCE;
 	*origin = '\0';
 
 	be_root_concat(lbh, name, path);
 
-	if (strchr(name, '@') == NULL) {
+	if ((snapdelim = strchr(path, '@')) == NULL) {
 		if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_FILESYSTEM))
 			return (set_error(lbh, BE_ERR_NOENT));
 
@@ -222,9 +257,10 @@ be_destroy(libbe_handle_t *lbh, const char *name, int 
 		    strcmp(path, lbh->bootfs) == 0)
 			return (set_error(lbh, BE_ERR_DESTROYACT));
 
-		fs = zfs_open(lbh->lzh, p, ZFS_TYPE_FILESYSTEM);
+		fs = zfs_open(lbh->lzh, path, ZFS_TYPE_FILESYSTEM);
 		if (fs == NULL)
 			return (set_error(lbh, BE_ERR_ZFSOPEN));
+
 		if ((options & BE_DESTROY_ORIGIN) != 0 &&
 		    zfs_prop_get(fs, ZFS_PROP_ORIGIN, origin, sizeof(origin),
 		    NULL, NULL, 0, 1) != 0)
@@ -233,40 +269,56 @@ be_destroy(libbe_handle_t *lbh, const char *name, int 
 		if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_SNAPSHOT))
 			return (set_error(lbh, BE_ERR_NOENT));
 
-		fs = zfs_open(lbh->lzh, p, ZFS_TYPE_SNAPSHOT);
-		if (fs == NULL)
+		bdd.snapname = strdup(snapdelim + 1);
+		if (bdd.snapname == NULL)
+			return (set_error(lbh, BE_ERR_NOMEM));
+		*snapdelim = '\0';
+		fs = zfs_open(lbh->lzh, path, ZFS_TYPE_DATASET);
+		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)
+		if (force) {
 			zfs_unmount(fs, NULL, 0);
-		else
+		} else {
+			free(bdd.snapname);
 			return (set_error(lbh, BE_ERR_DESTROYMNT));
+		}
 	}
 
-	if ((err = be_destroy_cb(fs, NULL)) != 0) {
+	err = be_destroy_cb(fs, &bdd);
+	zfs_close(fs);
+	free(bdd.snapname);
+	if (err != 0) {
 		/* Children are still present or the mount is referenced */
 		if (err == EBUSY)
 			return (set_error(lbh, BE_ERR_DESTROYMNT));
 		return (set_error(lbh, BE_ERR_UNKNOWN));
 	}
 
-	if (*origin != '\0') {
-		fs = zfs_open(lbh->lzh, origin, ZFS_TYPE_SNAPSHOT);
-		if (fs == NULL)
-			return (set_error(lbh, BE_ERR_ZFSOPEN));
-		err = zfs_destroy(fs, false);
-		if (err == EBUSY)
-			return (set_error(lbh, BE_ERR_DESTROYMNT));
-		else if (err != 0)
-			return (set_error(lbh, BE_ERR_UNKNOWN));
-	}
+	if ((options & BE_DESTROY_ORIGIN) == 0)
+		return (0);
 
-	return (0);
-}
+	/* The origin can't possibly be shorter than the BE root */
+	rootlen = strlen(lbh->root);
+	if (*origin == '\0' || strlen(origin) <= rootlen + 1)
+		return (set_error(lbh, BE_ERR_INVORIGIN));
 
+	/*
+	 * We'll be chopping off the BE root and running this back through
+	 * be_destroy, so that we properly handle the origin snapshot whether
+	 * it be that of a deep BE or not.
+	 */
+	if (strncmp(origin, lbh->root, rootlen) != 0 || origin[rootlen] != '/')
+		return (0);
+
+	return (be_destroy(lbh, origin + rootlen + 1,
+	    options & ~BE_DESTROY_ORIGIN));
+}
 
 int
 be_snapshot(libbe_handle_t *lbh, const char *source, const char *snap_name,

Modified: projects/import-googletest-1.8.1/lib/libbe/be.h
==============================================================================
--- projects/import-googletest-1.8.1/lib/libbe/be.h	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libbe/be.h	Tue Feb 19 03:46:32 2019	(r344271)
@@ -59,6 +59,7 @@ typedef enum be_error {
 	BE_ERR_NOPOOL,		/* operation not supported on this pool */
 	BE_ERR_NOMEM,		/* insufficient memory */
 	BE_ERR_UNKNOWN,         /* unknown error */
+	BE_ERR_INVORIGIN,       /* invalid origin */
 } be_error_t;
 
 

Modified: projects/import-googletest-1.8.1/lib/libbe/be_error.c
==============================================================================
--- projects/import-googletest-1.8.1/lib/libbe/be_error.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libbe/be_error.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -105,6 +105,9 @@ libbe_error_description(libbe_handle_t *lbh)
 	case BE_ERR_UNKNOWN:
 		return ("unknown error");
 
+	case BE_ERR_INVORIGIN:
+		return ("invalid origin");
+
 	default:
 		assert(lbh->error == BE_ERR_SUCCESS);
 		return ("no error");

Modified: projects/import-googletest-1.8.1/lib/libbe/libbe.3
==============================================================================
--- projects/import-googletest-1.8.1/lib/libbe/libbe.3	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libbe/libbe.3	Tue Feb 19 03:46:32 2019	(r344271)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 11, 2019
+.Dd February 12, 2019
 .Dt LIBBE 3
 .Os
 .Sh NAME
@@ -489,6 +489,8 @@ BE_ERR_NOPOOL
 BE_ERR_NOMEM
 .It
 BE_ERR_UNKNOWN
+.It
+BE_ERR_INVORIGIN
 .El
 .Sh SEE ALSO
 .Xr bectl 8

Modified: projects/import-googletest-1.8.1/lib/libc/Makefile
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/Makefile	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/Makefile	Tue Feb 19 03:46:32 2019	(r344271)
@@ -122,6 +122,7 @@ NOASM=
 .endif
 .if ${LIBC_ARCH} == "i386" || ${LIBC_ARCH} == "amd64"
 .include "${LIBC_SRCTOP}/x86/sys/Makefile.inc"
+.include "${LIBC_SRCTOP}/x86/gen/Makefile.inc"
 .endif
 .if ${MK_NIS} != "no"
 CFLAGS+= -DYP

Modified: projects/import-googletest-1.8.1/lib/libc/amd64/gen/Makefile.inc
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/amd64/gen/Makefile.inc	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/amd64/gen/Makefile.inc	Tue Feb 19 03:46:32 2019	(r344271)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 SRCS+=	_setjmp.S _set_tp.c rfork_thread.S setjmp.S sigsetjmp.S \
-	fabs.S getcontextx.c \
+	fabs.S \
 	infinity.c ldexp.c makecontext.c signalcontext.c \
 	flt_rounds.c fpgetmask.c fpsetmask.c fpgetprec.c fpsetprec.c \
 	fpgetround.c fpsetround.c fpgetsticky.c

Modified: projects/import-googletest-1.8.1/lib/libc/gen/readpassphrase.3
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/gen/readpassphrase.3	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/gen/readpassphrase.3	Tue Feb 19 03:46:32 2019	(r344271)
@@ -178,4 +178,6 @@ extension and should not be used if portability is des
 The
 .Fn readpassphrase
 function first appeared in
+.Fx 4.6
+and
 .Ox 2.9 .

Modified: projects/import-googletest-1.8.1/lib/libc/i386/gen/Makefile.inc
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/i386/gen/Makefile.inc	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/i386/gen/Makefile.inc	Tue Feb 19 03:46:32 2019	(r344271)
@@ -2,5 +2,5 @@
 # $FreeBSD$
 
 SRCS+=	_ctx_start.S _setjmp.S _set_tp.c fabs.S \
-	flt_rounds.c getcontextx.c infinity.c ldexp.c makecontext.c \
+	flt_rounds.c infinity.c ldexp.c makecontext.c \
 	rfork_thread.S setjmp.S signalcontext.c sigsetjmp.S

Modified: projects/import-googletest-1.8.1/lib/libc/sys/sendfile.2
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/sys/sendfile.2	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/sys/sendfile.2	Tue Feb 19 03:46:32 2019	(r344271)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 25, 2019
+.Dd February 15, 2019
 .Dt SENDFILE 2
 .Os
 .Sh NAME
@@ -224,6 +224,19 @@ implementation of
 .Fn sendfile
 is "zero-copy", meaning that it has been optimized so that copying of the file data is avoided.
 .Sh TUNING
+.Ss physical paging buffers
+.Fn sendfile
+uses vnode pager to read file pages into memory.
+The pager uses a pool of physical buffers to run its I/O operations.
+When system runs out of pbufs, sendfile will block and report state
+.Dq Li zonelimit .
+Size of the pool can be tuned with
+.Va vm.vnode_pbufs
+.Xr loader.conf 5
+tunable and can be checked with
+.Xr sysctl 8
+OID of the same name at runtime.
+.Ss sendfile(2) buffers
 On some architectures, this system call internally uses a special
 .Fn sendfile
 buffer
@@ -279,9 +292,11 @@ buffers usage respectively.
 These values may also be viewed through
 .Nm netstat Fl m .
 .Pp
-If a value of zero is reported for
-.Va kern.ipc.nsfbufs ,
-your architecture does not need to use
+If
+.Xr sysctl 8
+OID
+.Va kern.ipc.nsfbufs
+doesn't exist, your architecture does not need to use
 .Fn sendfile
 buffers because their task can be efficiently performed
 by the generic virtual memory structures.
@@ -363,11 +378,13 @@ does not support
 The socket peer has closed the connection.
 .El
 .Sh SEE ALSO
+.Xr loader.conf 5 ,
 .Xr netstat 1 ,
 .Xr open 2 ,
 .Xr send 2 ,
 .Xr socket 2 ,
 .Xr writev 2 ,
+.Xr sysctl 8 ,
 .Xr tuning 7
 .Rs
 .%A K. Elmeleegy

Modified: projects/import-googletest-1.8.1/lib/libc/x86/sys/__vdso_gettc.c
==============================================================================
--- projects/import-googletest-1.8.1/lib/libc/x86/sys/__vdso_gettc.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libc/x86/sys/__vdso_gettc.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -54,31 +54,6 @@ __FBSDID("$FreeBSD$");
 #include "libc_private.h"
 
 static void
-cpuidp(u_int leaf, u_int p[4])
-{
-
-	__asm __volatile(
-#if defined(__i386__)
-	    "	pushl	%%ebx\n"
-#endif
-	    "	cpuid\n"
-#if defined(__i386__)
-	    "	movl	%%ebx,%1\n"
-	    "	popl	%%ebx"
-#endif
-	    : "=a" (p[0]),
-#if defined(__i386__)
-	    "=r" (p[1]),
-#elif defined(__amd64__)
-	    "=b" (p[1]),
-#else
-#error "Arch"
-#endif
-	    "=c" (p[2]), "=d" (p[3])
-	    :  "0" (leaf));
-}
-
-static void
 rdtsc_mb_lfence(void)
 {
 
@@ -100,12 +75,12 @@ rdtsc_mb_none(void)
 DEFINE_UIFUNC(static, void, rdtsc_mb, (void), static)
 {
 	u_int p[4];
-	/* Not a typo, string matches our cpuidp() registers use. */
+	/* Not a typo, string matches our do_cpuid() registers use. */
 	static const char intel_id[] = "GenuntelineI";
 
 	if ((cpu_feature & CPUID_SSE2) == 0)
 		return (rdtsc_mb_none);
-	cpuidp(0, p);
+	do_cpuid(0, p);
 	return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ?
 	    rdtsc_mb_lfence : rdtsc_mb_mfence);
 }

Modified: projects/import-googletest-1.8.1/lib/libmemstat/memstat_uma.c
==============================================================================
--- projects/import-googletest-1.8.1/lib/libmemstat/memstat_uma.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libmemstat/memstat_uma.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -213,6 +213,15 @@ retry:
 			mtp->mt_numfrees += upsp->ups_frees;
 		}
 
+		/*
+		 * Values for uth_allocs and uth_frees frees are snap.
+		 * It may happen that kernel reports that number of frees
+		 * is greater than number of allocs. See counter(9) for
+		 * details.
+		 */
+		if (mtp->mt_numallocs < mtp->mt_numfrees)
+			mtp->mt_numallocs = mtp->mt_numfrees;
+
 		mtp->mt_size = uthp->uth_size;
 		mtp->mt_rsize = uthp->uth_rsize;
 		mtp->mt_memalloced = mtp->mt_numallocs * uthp->uth_size;

Modified: projects/import-googletest-1.8.1/lib/libthr/arch/powerpc/include/pthread_md.h
==============================================================================
--- projects/import-googletest-1.8.1/lib/libthr/arch/powerpc/include/pthread_md.h	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/lib/libthr/arch/powerpc/include/pthread_md.h	Tue Feb 19 03:46:32 2019	(r344271)
@@ -72,14 +72,15 @@ _tcb_set(struct tcb *tcb)
 static __inline struct tcb *
 _tcb_get(void)
 {
-	register uint8_t *_tp;
+        register struct tcb *tcb;
+
 #ifdef __powerpc64__
-	__asm __volatile("mr %0,13" : "=r"(_tp));
+	__asm __volatile("addi %0,13,%1" : "=r"(tcb) : "i"(-TP_OFFSET));
 #else
-	__asm __volatile("mr %0,2" : "=r"(_tp));
+	__asm __volatile("addi %0,2,%1" : "=r"(tcb) : "i"(-TP_OFFSET));
 #endif
 
-	return ((struct tcb *)(_tp - TP_OFFSET));
+	return (tcb);
 }
 
 static __inline struct pthread *

Modified: projects/import-googletest-1.8.1/libexec/rc/rc.d/nfsd
==============================================================================
--- projects/import-googletest-1.8.1/libexec/rc/rc.d/nfsd	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/libexec/rc/rc.d/nfsd	Tue Feb 19 03:46:32 2019	(r344271)
@@ -13,6 +13,7 @@ name="nfsd"
 desc="Remote NFS server"
 rcvar="nfs_server_enable"
 command="/usr/sbin/${name}"
+nfs_server_vhost=""
 
 load_rc_config $name
 start_precmd="nfsd_precmd"
@@ -20,6 +21,7 @@ sig_stop="USR1"
 
 nfsd_precmd()
 {
+	local	_vhost
 	rc_flags="${nfs_server_flags}"
 
 	# Load the modules now, so that the vfs.nfsd sysctl
@@ -46,6 +48,9 @@ nfsd_precmd()
 
 	force_depend rpcbind || return 1
 	force_depend mountd || return 1
+	if [ -n "${nfs_server_vhost}" ]; then
+		command_args="-V \"${nfs_server_vhost}\""
+	fi
 }
 
 run_rc_command "$1"

Modified: projects/import-googletest-1.8.1/libexec/rtld-elf/Makefile
==============================================================================
--- projects/import-googletest-1.8.1/libexec/rtld-elf/Makefile	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/libexec/rtld-elf/Makefile	Tue Feb 19 03:46:32 2019	(r344271)
@@ -7,6 +7,7 @@
 .include <src.opts.mk>
 PACKAGE=	clibs
 MK_BIND_NOW=	no
+MK_PIE=		no # Always position independent using local rules
 MK_SSP=		no
 
 CONFS=		libmap.conf

Modified: projects/import-googletest-1.8.1/sbin/mdmfs/mdmfs.c
==============================================================================
--- projects/import-googletest-1.8.1/sbin/mdmfs/mdmfs.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/sbin/mdmfs/mdmfs.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -196,6 +196,7 @@ main(int argc, char **argv)
 				usage();
 			mdtype = MD_MALLOC;
 			have_mdtype = true;
+			argappend(&mdconfig_arg, "-o reserve");
 			break;
 		case 'm':
 			argappend(&newfs_arg, "-m %s", optarg);

Modified: projects/import-googletest-1.8.1/sbin/nvmecontrol/firmware.c
==============================================================================
--- projects/import-googletest-1.8.1/sbin/nvmecontrol/firmware.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/sbin/nvmecontrol/firmware.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -177,7 +177,7 @@ static void
 firmware(const struct nvme_function *nf, int argc, char *argv[])
 {
 	int				fd = -1, slot = 0;
-	int				a_flag, s_flag, f_flag;
+	int				a_flag, f_flag;
 	int				activate_action, reboot_required;
 	int				opt;
 	char				*p, *image = NULL;
@@ -188,7 +188,7 @@ firmware(const struct nvme_function *nf, int argc, cha
 	uint8_t				fw_slot1_ro, fw_num_slots;
 	struct nvme_controller_data	cdata;
 
-	a_flag = s_flag = f_flag = false;
+	a_flag = f_flag = false;
 
 	while ((opt = getopt(argc, argv, "af:s:")) != -1) {
 		switch (opt) {
@@ -214,7 +214,6 @@ firmware(const struct nvme_function *nf, int argc, cha
 				    "7.\n", optarg);
 				usage(nf);
 			}
-			s_flag = true;
 			break;
 		case 'f':
 			image = optarg;

Modified: projects/import-googletest-1.8.1/share/man/man5/src.conf.5
==============================================================================
--- projects/import-googletest-1.8.1/share/man/man5/src.conf.5	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/share/man/man5/src.conf.5	Tue Feb 19 03:46:32 2019	(r344271)
@@ -1,6 +1,6 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
 .\" $FreeBSD$
-.Dd January 31, 2019
+.Dd February 15, 2019
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -406,7 +406,8 @@ Set to build the Clang C/C++ compiler during the boots
 This is a default setting on
 amd64/amd64, arm/arm, arm/armv6, arm/armv7, arm64/aarch64 and i386/i386.
 .It Va WITH_CLANG_EXTRAS
-Set to build additional clang and llvm tools, such as bugpoint.
+Set to build additional clang and llvm tools, such as bugpoint and
+clang-format.
 .It Va WITHOUT_CLANG_FULL
 Set to avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of
 the Clang C/C++ compiler.
@@ -1542,6 +1543,9 @@ When set, it enforces these options:
 .It
 .Va WITHOUT_AUTHPF
 .El
+.It Va WITH_PIE
+Build dynamically linked binaries as
+Position-Independent Executable (PIE).
 .It Va WITHOUT_PKGBOOTSTRAP
 Set to not build
 .Xr pkg 7

Modified: projects/import-googletest-1.8.1/share/mk/bsd.lib.mk
==============================================================================
--- projects/import-googletest-1.8.1/share/mk/bsd.lib.mk	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/share/mk/bsd.lib.mk	Tue Feb 19 03:46:32 2019	(r344271)
@@ -91,13 +91,16 @@ CTFFLAGS+= -g
 # prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
 # .pico used for PIC object files
 # .nossppico used for NOSSP PIC object files
-.SUFFIXES: .out .o .bc .ll .po .pico .nossppico .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
+# .pieo used for PIE object files
+.SUFFIXES: .out .o .bc .ll .po .pico .nossppico .pieo .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
 
 .if !defined(PICFLAG)
 .if ${MACHINE_CPUARCH} == "sparc64"
 PICFLAG=-fPIC
+PIEFLAG=-fPIE
 .else
 PICFLAG=-fpic
+PIEFLAG=-fpie
 .endif
 .endif
 
@@ -115,6 +118,10 @@ PO_FLAG=-pg
 	${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS:C/^-fstack-protector.*$//} ${CFLAGS:C/^-fstack-protector.*$//} -c ${.IMPSRC} -o ${.TARGET}
 	${CTFCONVERT_CMD}
 
+.c.pieo:
+	${CC} ${PIEFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+	${CTFCONVERT_CMD}
+
 .cc.po .C.po .cpp.po .cxx.po:
 	${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
 
@@ -124,6 +131,9 @@ PO_FLAG=-pg
 .cc.nossppico .C.nossppico .cpp.nossppico .cxx.nossppico:
 	${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS:C/^-fstack-protector.*$//} ${CXXFLAGS:C/^-fstack-protector.*$//} -c ${.IMPSRC} -o ${.TARGET}
 
+.cc.pieo .C.pieo .cpp.pieo .cxx.pieo:
+	${CXX} ${PIEFLAG} ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
 .f.po:
 	${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
 	${CTFCONVERT_CMD}
@@ -136,7 +146,7 @@ PO_FLAG=-pg
 	${FC} ${PICFLAG} -DPIC ${FFLAGS:C/^-fstack-protector.*$//} -o ${.TARGET} -c ${.IMPSRC}
 	${CTFCONVERT_CMD}
 
-.s.po .s.pico .s.nossppico:
+.s.po .s.pico .s.nossppico .s.pieo:
 	${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
 	${CTFCONVERT_CMD}
 
@@ -155,6 +165,11 @@ PO_FLAG=-pg
 	    ${CFLAGS:C/^-fstack-protector.*$//} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
 	${CTFCONVERT_CMD}
 
+.asm.pieo:
+	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PIEFLAG} -DPIC \
+	    ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+	${CTFCONVERT_CMD}
+
 .S.po:
 	${CC:N${CCACHE_BIN}} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \
 	    -o ${.TARGET}
@@ -170,6 +185,11 @@ PO_FLAG=-pg
 	    -c ${.IMPSRC} -o ${.TARGET}
 	${CTFCONVERT_CMD}
 
+.S.pieo:
+	${CC:N${CCACHE_BIN}} ${PIEFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \
+	    -c ${.IMPSRC} -o ${.TARGET}
+	${CTFCONVERT_CMD}
+
 _LIBDIR:=${LIBDIR}
 _SHLIBDIR:=${SHLIBDIR}
 
@@ -333,6 +353,20 @@ lib${LIB_PRIVATE}${LIB}_nossp_pic.a: ${NOSSPSOBJS}
 .endif
 
 .endif # !defined(INTERNALLIB)
+
+.if defined(INTERNALLIB) && ${MK_PIE} != "no"
+PIEOBJS+=	${OBJS:.o=.pieo}
+DEPENDOBJS+=	${PIEOBJS}
+CLEANFILES+=	${PIEOBJS}
+
+_LIBS+=		lib${LIB_PRIVATE}${LIB}_pie.a
+
+lib${LIB_PRIVATE}${LIB}_pie.a: ${PIEOBJS}
+	@${ECHO} building pie ${LIB} library
+	@rm -f ${.TARGET}
+	${AR} ${ARFLAGS} ${.TARGET} ${PIEOBJS} ${ARADD}
+	${RANLIB} ${RANLIBFLAGS} ${.TARGET}
+.endif
 
 .if defined(_SKIP_BUILD)
 all:

Modified: projects/import-googletest-1.8.1/share/mk/bsd.opts.mk
==============================================================================
--- projects/import-googletest-1.8.1/share/mk/bsd.opts.mk	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/share/mk/bsd.opts.mk	Tue Feb 19 03:46:32 2019	(r344271)
@@ -73,6 +73,7 @@ __DEFAULT_NO_OPTIONS = \
     CCACHE_BUILD \
     CTF \
     INSTALL_AS_USER \
+    PIE \
     RETPOLINE \
     STALE_STAGED
 

Modified: projects/import-googletest-1.8.1/share/mk/bsd.prog.mk
==============================================================================
--- projects/import-googletest-1.8.1/share/mk/bsd.prog.mk	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/share/mk/bsd.prog.mk	Tue Feb 19 03:46:32 2019	(r344271)
@@ -38,11 +38,16 @@ MK_DEBUG_FILES=	no
 .if ${MK_BIND_NOW} != "no"
 LDFLAGS+= -Wl,-znow
 .endif
+.if ${MK_PIE} != "no" && (!defined(NO_SHARED) || ${NO_SHARED:tl} == "no")
+CFLAGS+= -fPIE
+CXXFLAGS+= -fPIE
+LDFLAGS+= -pie
+.endif
 .if ${MK_RETPOLINE} != "no"
 CFLAGS+= -mretpoline
 CXXFLAGS+= -mretpoline
 # retpolineplt is broken with static linking (PR 233336)
-.if !defined(NO_SHARED) || ${NO_SHARED} == "no" || ${NO_SHARED} == "NO"
+.if !defined(NO_SHARED) || ${NO_SHARED:tl} == "no"
 LDFLAGS+= -Wl,-zretpolineplt
 .endif
 .endif
@@ -68,7 +73,7 @@ TAGS+=		package=${PACKAGE:Uruntime}
 TAG_ARGS=	-T ${TAGS:[*]:S/ /,/g}
 .endif
 
-.if defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO")
+.if defined(NO_SHARED) && ${NO_SHARED:tl} != "no"
 LDFLAGS+= -static
 .endif
 

Modified: projects/import-googletest-1.8.1/share/mk/src.libnames.mk
==============================================================================
--- projects/import-googletest-1.8.1/share/mk/src.libnames.mk	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/share/mk/src.libnames.mk	Tue Feb 19 03:46:32 2019	(r344271)
@@ -385,6 +385,10 @@ LDADD_gtest_main= -lprivategtest_main
 LIB${_l:tu}?=	${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
 .endfor
 
+.if ${MK_PIE} != "no"
+PIE_SUFFIX=	_pie
+.endif
+
 .for _l in ${_LIBRARIES}
 .if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
 LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
@@ -392,12 +396,14 @@ LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
 DPADD_${_l}?=	${LIB${_l:tu}}
 .if ${_PRIVATELIBS:M${_l}}
 LDADD_${_l}?=	-lprivate${_l}
+.elif ${_INTERNALLIBS:M${_l}}
+LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX}
 .else
 LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l}
 .endif
 # Add in all dependencies for static linkage.
 .if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
-    (defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO")))
+    (defined(NO_SHARED) && ${NO_SHARED:tl} != "no"))
 .for _d in ${_DP_${_l}}
 DPADD_${_l}+=	${DPADD_${_d}}
 LDADD_${_l}+=	${LDADD_${_d}}
@@ -444,69 +450,69 @@ LDADD+=		${LDADD_${_l}}
 
 # INTERNALLIB definitions.
 LIBELFTCDIR=	${OBJTOP}/lib/libelftc
-LIBELFTC?=	${LIBELFTCDIR}/libelftc.a
+LIBELFTC?=	${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a
 
 LIBPEDIR=	${OBJTOP}/lib/libpe
-LIBPE?=		${LIBPEDIR}/libpe.a
+LIBPE?=		${LIBPEDIR}/libpe${PIE_SUFFIX}.a
 
 LIBOPENBSDDIR=	${OBJTOP}/lib/libopenbsd
-LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd.a
+LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a
 
 LIBSMDIR=	${OBJTOP}/lib/libsm
-LIBSM?=		${LIBSMDIR}/libsm.a
+LIBSM?=		${LIBSMDIR}/libsm${PIE_SUFFIX}.a
 
 LIBSMDBDIR=	${OBJTOP}/lib/libsmdb
-LIBSMDB?=	${LIBSMDBDIR}/libsmdb.a
+LIBSMDB?=	${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a
 
 LIBSMUTILDIR=	${OBJTOP}/lib/libsmutil
-LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil.a
+LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a
 
 LIBNETBSDDIR?=	${OBJTOP}/lib/libnetbsd
-LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd.a
+LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a
 
 LIBVERSDIR?=	${OBJTOP}/kerberos5/lib/libvers
-LIBVERS?=	${LIBVERSDIR}/libvers.a
+LIBVERS?=	${LIBVERSDIR}/libvers${PIE_SUFFIX}.a
 
 LIBSLDIR=	${OBJTOP}/kerberos5/lib/libsl
-LIBSL?=		${LIBSLDIR}/libsl.a
+LIBSL?=		${LIBSLDIR}/libsl${PIE_SUFFIX}.a
 
 LIBIPFDIR=	${OBJTOP}/sbin/ipf/libipf
-LIBIPF?=	${LIBIPFDIR}/libipf.a
+LIBIPF?=	${LIBIPFDIR}/libipf${PIE_SUFFIX}.a
 
 LIBTELNETDIR=	${OBJTOP}/lib/libtelnet
-LIBTELNET?=	${LIBTELNETDIR}/libtelnet.a
+LIBTELNET?=	${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a
 
 LIBCRONDIR=	${OBJTOP}/usr.sbin/cron/lib
-LIBCRON?=	${LIBCRONDIR}/libcron.a
+LIBCRON?=	${LIBCRONDIR}/libcron${PIE_SUFFIX}.a
 
 LIBNTPDIR=	${OBJTOP}/usr.sbin/ntp/libntp
-LIBNTP?=	${LIBNTPDIR}/libntp.a
+LIBNTP?=	${LIBNTPDIR}/libntp${PIE_SUFFIX}.a
 
 LIBNTPEVENTDIR=	${OBJTOP}/usr.sbin/ntp/libntpevent
-LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent.a
+LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a
 
 LIBOPTSDIR=	${OBJTOP}/usr.sbin/ntp/libopts
-LIBOPTS?=	${LIBOPTSDIR}/libopts.a
+LIBOPTS?=	${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a
 
 LIBPARSEDIR=	${OBJTOP}/usr.sbin/ntp/libparse
-LIBPARSE?=	${LIBPARSEDIR}/libparse.a
+LIBPARSE?=	${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a
 
 LIBLPRDIR=	${OBJTOP}/usr.sbin/lpr/common_source
-LIBLPR?=	${LIBLPRDIR}/liblpr.a
+LIBLPR?=	${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a
 
 LIBFIFOLOGDIR=	${OBJTOP}/usr.sbin/fifolog/lib
-LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog.a
+LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a
 
 LIBBSNMPTOOLSDIR=	${OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
-LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools.a
+LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a
 
 LIBAMUDIR=	${OBJTOP}/usr.sbin/amd/libamu
-LIBAMU?=	${LIBAMUDIR}/libamu.a
+LIBAMU?=	${LIBAMUDIR}/libamu${PIE_SUFFIX}.a
 
-LIBBE?=		${LIBBEDIR}/libbe.a
+LIBBE?=		${LIBBEDIR}/libbe${PIE_SUFFIX}.a
 
 LIBPMCSTATDIR=	${OBJTOP}/lib/libpmcstat
-LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat.a
+LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a
 
 LIBC_NOSSP_PICDIR=	${OBJTOP}/lib/libc
 LIBC_NOSSP_PIC?=	${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a

Modified: projects/import-googletest-1.8.1/stand/common/dev_net.c
==============================================================================
--- projects/import-googletest-1.8.1/stand/common/dev_net.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/stand/common/dev_net.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -122,13 +122,15 @@ net_open(struct open_file *f, ...)
 {
 	struct iodesc *d;
 	va_list args;
-	char *devname;		/* Device part of file name (or NULL). */
+	struct devdesc *dev;
+	const char *devname;	/* Device part of file name (or NULL). */
 	int error = 0;
 
 	va_start(args, f);
-	devname = va_arg(args, char*);
+	dev = va_arg(args, struct devdesc *);
 	va_end(args);
 
+	devname = dev->d_dev->dv_name;
 	/* Before opening another interface, close the previous one first. */
 	if (netdev_sock >= 0 && strcmp(devname, netdev_name) != 0)
 		net_cleanup();
@@ -137,7 +139,7 @@ net_open(struct open_file *f, ...)
 	if (netdev_opens == 0) {
 		/* Find network interface. */
 		if (netdev_sock < 0) {
-			netdev_sock = netif_open(devname);
+			netdev_sock = netif_open(dev);
 			if (netdev_sock < 0) {
 				printf("net_open: netif_open() failed\n");
 				return (ENXIO);

Modified: projects/import-googletest-1.8.1/stand/common/disk.c
==============================================================================
--- projects/import-googletest-1.8.1/stand/common/disk.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/stand/common/disk.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -75,7 +75,7 @@ display_size(uint64_t size, u_int sectorsize)
 		size /= 1024;
 		unit = 'M';
 	}
-	sprintf(buf, "%ld%cB", (long)size, unit);
+	sprintf(buf, "%4ld%cB", (long)size, unit);
 	return (buf);
 }
 
@@ -102,7 +102,6 @@ ptblread(void *d, void *buf, size_t blocks, uint64_t o
 	    blocks * od->sectorsize, (char *)buf, NULL));
 }
 
-#define	PWIDTH	35
 static int
 ptable_print(void *arg, const char *pname, const struct ptable_entry *part)
 {
@@ -112,16 +111,16 @@ ptable_print(void *arg, const char *pname, const struc
 	struct ptable *table;
 	char line[80];
 	int res;
+	u_int sectsize;
+	uint64_t partsize;
 
 	pa = (struct print_args *)arg;
 	od = (struct open_disk *)pa->dev->dd.d_opendata;
-	sprintf(line, "  %s%s: %s", pa->prefix, pname,
-	    parttype2str(part->type));
-	if (pa->verbose)
-		sprintf(line, "%-*s%s", PWIDTH, line,
-		    display_size(part->end - part->start + 1,
-		    od->sectorsize));
-	strcat(line, "\n");
+	sectsize = od->sectorsize;
+	partsize = part->end - part->start + 1;
+	sprintf(line, "  %s%s: %s\t%s\n", pa->prefix, pname,
+	    parttype2str(part->type),
+	    pa->verbose ? display_size(partsize, sectsize) : "");
 	if (pager_output(line))
 		return 1;
 	res = 0;
@@ -131,10 +130,15 @@ ptable_print(void *arg, const char *pname, const struc
 		dev.dd.d_unit = pa->dev->dd.d_unit;
 		dev.d_slice = part->index;
 		dev.d_partition = -1;
-		if (disk_open(&dev, part->end - part->start + 1,
-		    od->sectorsize) == 0) {
-			table = ptable_open(&dev, part->end - part->start + 1,
-			    od->sectorsize, ptblread);
+		if (disk_open(&dev, partsize, sectsize) == 0) {
+			/*
+			 * disk_open() for partition -1 on a bsd slice assumes
+			 * you want the first bsd partition.  Reset things so
+			 * that we're looking at the start of the raw slice.
+			 */
+			dev.d_partition = -1;
+			dev.d_offset = part->start;
+			table = ptable_open(&dev, partsize, sectsize, ptblread);
 			if (table != NULL) {
 				sprintf(line, "  %s%s", pa->prefix, pname);
 				bsd.dev = pa->dev;
@@ -149,7 +153,6 @@ ptable_print(void *arg, const char *pname, const struc
 
 	return (res);
 }
-#undef PWIDTH
 
 int
 disk_print(struct disk_devdesc *dev, char *prefix, int verbose)

Modified: projects/import-googletest-1.8.1/stand/common/part.c
==============================================================================
--- projects/import-googletest-1.8.1/stand/common/part.c	Tue Feb 19 02:26:47 2019	(r344270)
+++ projects/import-googletest-1.8.1/stand/common/part.c	Tue Feb 19 03:46:32 2019	(r344271)
@@ -788,6 +788,9 @@ ptable_close(struct ptable *table)
 {
 	struct pentry *entry;
 
+	if (table == NULL)

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



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