From owner-svn-src-projects@freebsd.org Tue Feb 19 03:46:39 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 750A214DB376 for ; Tue, 19 Feb 2019 03:46:39 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1F1DD6A2FA; Tue, 19 Feb 2019 03:46:39 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0F6E118166; Tue, 19 Feb 2019 03:46:39 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x1J3kcRX055400; Tue, 19 Feb 2019 03:46:38 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x1J3kWhD055366; Tue, 19 Feb 2019 03:46:32 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201902190346.x1J3kWhD055366@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper Date: Tue, 19 Feb 2019 03:46:32 +0000 (UTC) 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/... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: 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/clang lib/clang/libllvmmi... X-SVN-Commit-Revision: 344271 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 1F1DD6A2FA X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Feb 2019 03:46:39 -0000 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 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 : public true_type {}; template <> struct __libcpp_is_floating_point : public true_type {}; template <> struct __libcpp_is_floating_point : 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 +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 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 ***