From owner-svn-src-projects@freebsd.org Sun Aug 20 07:06:14 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EEA51DE40C0 for ; Sun, 20 Aug 2017 07:06:14 +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 mx1.freebsd.org (Postfix) with ESMTPS id BB59C767D8; Sun, 20 Aug 2017 07:06:14 +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 v7K76D0t066874; Sun, 20 Aug 2017 07:06:13 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7K76DkR066871; Sun, 20 Aug 2017 07:06:13 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708200706.v7K76DkR066871@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sun, 20 Aug 2017 07:06:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322717 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322717 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Sun, 20 Aug 2017 07:06:15 -0000 Author: ngie Date: Sun Aug 20 07:06:13 2017 New Revision: 322717 URL: https://svnweb.freebsd.org/changeset/base/322717 Log: Need to account for SRCS that don't get compiled with --coverage, e.g., .S files Modified: projects/runtime-coverage/share/mk/bsd.cov.mk projects/runtime-coverage/share/mk/bsd.lib.mk projects/runtime-coverage/share/mk/bsd.prog.mk Modified: projects/runtime-coverage/share/mk/bsd.cov.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cov.mk Sun Aug 20 07:04:23 2017 (r322716) +++ projects/runtime-coverage/share/mk/bsd.cov.mk Sun Aug 20 07:06:13 2017 (r322717) @@ -4,7 +4,12 @@ FILESGROUPS?= FILES -GCNOS= ${COV_OBJS:.o=.gcno} +cov_objs_no_suffixes= ${COV_OBJS:R} +.for src in ${COV_SRCS:R} +.if ${cov_objs_no_suffixes:M${src}} +GCNOS+= ${src}.gcno +.endif +.endfor .if !empty(GCNOS) GCNOS:= ${GCNOS:O:u} Modified: projects/runtime-coverage/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.lib.mk Sun Aug 20 07:04:23 2017 (r322716) +++ projects/runtime-coverage/share/mk/bsd.lib.mk Sun Aug 20 07:06:13 2017 (r322717) @@ -454,6 +454,7 @@ _libinstall: .include .if defined(_COV_FLAG) COV_OBJS= ${SOBJS:.pico=.o} +COV_SRCS= ${SRCS:M*.[c|cc|cpp|cxx|C]} .include .endif .include Modified: projects/runtime-coverage/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.prog.mk Sun Aug 20 07:04:23 2017 (r322716) +++ projects/runtime-coverage/share/mk/bsd.prog.mk Sun Aug 20 07:06:13 2017 (r322717) @@ -303,6 +303,7 @@ NLSNAME?= ${PROG} .include .if defined(_COV_FLAG) COV_OBJS= ${OBJS} +COV_SRCS= ${SRCS:M*.[c|cc|cpp|cxx|C]} .include .endif .include From owner-svn-src-projects@freebsd.org Mon Aug 21 11:56:54 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4C39ADD598F for ; Mon, 21 Aug 2017 11:56:54 +0000 (UTC) (envelope-from hselasky@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 mx1.freebsd.org (Postfix) with ESMTPS id C24D66C569; Mon, 21 Aug 2017 11:56:53 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7LBurnd078935; Mon, 21 Aug 2017 11:56:53 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7LBumFp078895; Mon, 21 Aug 2017 11:56:48 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201708211156.v7LBumFp078895@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 21 Aug 2017 11:56:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322747 - in projects/bsd_rdma_4_9: . bin/cat bin/chmod bin/date bin/dd bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests bin/sh/tests/invocation bi... X-SVN-Group: projects X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: in projects/bsd_rdma_4_9: . bin/cat bin/chmod bin/date bin/dd bin/echo bin/expr bin/ln bin/ls bin/mv bin/pax bin/pkill bin/pwait bin/sh bin/sh/tests bin/sh/tests/invocation bin/sleep bin/test contrib/... X-SVN-Commit-Revision: 322747 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Mon, 21 Aug 2017 11:56:54 -0000 Author: hselasky Date: Mon Aug 21 11:56:47 2017 New Revision: 322747 URL: https://svnweb.freebsd.org/changeset/base/322747 Log: Merge ^/head r322398 through r322746. Added: projects/bsd_rdma_4_9/bin/sh/tests/invocation/ - copied from r322746, head/bin/sh/tests/invocation/ projects/bsd_rdma_4_9/contrib/gcc/config/riscv/ - copied from r322746, head/contrib/gcc/config/riscv/ projects/bsd_rdma_4_9/lib/libcasper/services/tests/ - copied from r322746, head/lib/libcasper/services/tests/ projects/bsd_rdma_4_9/lib/libcasper/tests/ - copied from r322746, head/lib/libcasper/tests/ projects/bsd_rdma_4_9/share/man/man4/wmt.4 - copied unchanged from r322746, head/share/man/man4/wmt.4 projects/bsd_rdma_4_9/sys/amd64/include/sgx.h - copied unchanged from r322746, head/sys/amd64/include/sgx.h projects/bsd_rdma_4_9/sys/amd64/include/sgxreg.h - copied unchanged from r322746, head/sys/amd64/include/sgxreg.h projects/bsd_rdma_4_9/sys/amd64/sgx/ - copied from r322746, head/sys/amd64/sgx/ projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/include/asm/msr.h - copied unchanged from r322746, head/sys/compat/linuxkpi/common/include/asm/msr.h projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/include/linux/atomic.h - copied unchanged from r322746, head/sys/compat/linuxkpi/common/include/linux/atomic.h projects/bsd_rdma_4_9/sys/dev/iicbus/ds13rtc.c - copied unchanged from r322746, head/sys/dev/iicbus/ds13rtc.c projects/bsd_rdma_4_9/sys/dev/usb/input/wmt.c - copied unchanged from r322746, head/sys/dev/usb/input/wmt.c projects/bsd_rdma_4_9/sys/modules/i2c/ds13rtc/ - copied from r322746, head/sys/modules/i2c/ds13rtc/ projects/bsd_rdma_4_9/sys/modules/i2c/s35390a/ - copied from r322746, head/sys/modules/i2c/s35390a/ projects/bsd_rdma_4_9/sys/modules/sgx/ - copied from r322746, head/sys/modules/sgx/ projects/bsd_rdma_4_9/sys/modules/sgx_linux/ - copied from r322746, head/sys/modules/sgx_linux/ projects/bsd_rdma_4_9/sys/modules/usb/wmt/ - copied from r322746, head/sys/modules/usb/wmt/ projects/bsd_rdma_4_9/tests/Makefile.inc0 - copied unchanged from r322746, head/tests/Makefile.inc0 projects/bsd_rdma_4_9/tests/etc/Makefile.inc - copied unchanged from r322746, head/tests/etc/Makefile.inc projects/bsd_rdma_4_9/tests/sys/geom/class/Makefile.inc - copied unchanged from r322746, head/tests/sys/geom/class/Makefile.inc projects/bsd_rdma_4_9/tests/sys/pjdfstest/Makefile.inc - copied unchanged from r322746, head/tests/sys/pjdfstest/Makefile.inc projects/bsd_rdma_4_9/tests/sys/pjdfstest/tests/Makefile.inc - copied unchanged from r322746, head/tests/sys/pjdfstest/tests/Makefile.inc projects/bsd_rdma_4_9/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX - copied unchanged from r322746, head/tools/build/options/WITHOUT_MAKE_CHECK_USE_SANDBOX Deleted: projects/bsd_rdma_4_9/contrib/gcc/config/riscv64/ projects/bsd_rdma_4_9/contrib/zstd/examples/ projects/bsd_rdma_4_9/sys/dev/iicbus/ds133x.c projects/bsd_rdma_4_9/sys/dev/iicbus/ds1374.c Modified: projects/bsd_rdma_4_9/Makefile projects/bsd_rdma_4_9/Makefile.inc1 projects/bsd_rdma_4_9/Makefile.libcompat projects/bsd_rdma_4_9/UPDATING projects/bsd_rdma_4_9/bin/cat/Makefile projects/bsd_rdma_4_9/bin/chmod/Makefile projects/bsd_rdma_4_9/bin/date/Makefile projects/bsd_rdma_4_9/bin/dd/Makefile projects/bsd_rdma_4_9/bin/echo/Makefile projects/bsd_rdma_4_9/bin/expr/Makefile projects/bsd_rdma_4_9/bin/ln/Makefile projects/bsd_rdma_4_9/bin/ls/Makefile projects/bsd_rdma_4_9/bin/mv/Makefile projects/bsd_rdma_4_9/bin/pax/Makefile projects/bsd_rdma_4_9/bin/pkill/Makefile projects/bsd_rdma_4_9/bin/pkill/pkill.c projects/bsd_rdma_4_9/bin/pwait/Makefile projects/bsd_rdma_4_9/bin/sh/Makefile projects/bsd_rdma_4_9/bin/sh/tests/Makefile projects/bsd_rdma_4_9/bin/sleep/Makefile projects/bsd_rdma_4_9/bin/test/Makefile projects/bsd_rdma_4_9/contrib/binutils/bfd/ecoff.c projects/bsd_rdma_4_9/contrib/binutils/gas/config/tc-mips.c projects/bsd_rdma_4_9/contrib/libc++/include/string projects/bsd_rdma_4_9/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/bsd_rdma_4_9/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h projects/bsd_rdma_4_9/contrib/llvm/include/llvm/Object/COFFImportFile.h projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/VirtRegMap.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Object/COFFImportFile.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/bsd_rdma_4_9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/bsd_rdma_4_9/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp projects/bsd_rdma_4_9/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang-c/Index.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Driver/ToolChains/NetBSD.h projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Sema/SemaCast.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/lld/COFF/Driver.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/lld/ELF/Driver.cpp projects/bsd_rdma_4_9/contrib/llvm/tools/lld/ELF/Options.td projects/bsd_rdma_4_9/contrib/llvm/tools/llvm-objdump/llvm-objdump.cpp projects/bsd_rdma_4_9/contrib/mdocml/lib.in projects/bsd_rdma_4_9/etc/mtree/BSD.tests.dist projects/bsd_rdma_4_9/etc/periodic/daily/200.backup-passwd projects/bsd_rdma_4_9/etc/periodic/daily/Makefile projects/bsd_rdma_4_9/etc/rc.d/Makefile projects/bsd_rdma_4_9/gnu/usr.bin/binutils/Makefile.inc0 projects/bsd_rdma_4_9/gnu/usr.bin/binutils/ld/Makefile.arm projects/bsd_rdma_4_9/gnu/usr.bin/binutils/libbfd/Makefile.arm projects/bsd_rdma_4_9/gnu/usr.bin/cc/Makefile.inc projects/bsd_rdma_4_9/gnu/usr.bin/cc/Makefile.tgt projects/bsd_rdma_4_9/gnu/usr.bin/gdb/Makefile.inc projects/bsd_rdma_4_9/gnu/usr.bin/gdb/libgdb/Makefile projects/bsd_rdma_4_9/lib/atf/libatf-c++/Makefile projects/bsd_rdma_4_9/lib/atf/libatf-c/Makefile projects/bsd_rdma_4_9/lib/clang/include/clang/Basic/Version.inc projects/bsd_rdma_4_9/lib/clang/include/lld/Config/Version.inc projects/bsd_rdma_4_9/lib/clang/include/llvm/Support/VCSRevision.h projects/bsd_rdma_4_9/lib/libarchive/Makefile projects/bsd_rdma_4_9/lib/libc/Makefile projects/bsd_rdma_4_9/lib/libc/i386/Makefile.inc projects/bsd_rdma_4_9/lib/libc/stdlib/set_constraint_handler_s.c projects/bsd_rdma_4_9/lib/libc/string/memset_s.c projects/bsd_rdma_4_9/lib/libc/sys/getsockopt.2 projects/bsd_rdma_4_9/lib/libc/sys/shmget.2 projects/bsd_rdma_4_9/lib/libc/tests/string/memset_s_test.c projects/bsd_rdma_4_9/lib/libc/x86/sys/__vdso_gettc.c projects/bsd_rdma_4_9/lib/libcam/Makefile projects/bsd_rdma_4_9/lib/libcasper/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_dns/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_dns/tests/dns_test.c projects/bsd_rdma_4_9/lib/libcasper/services/cap_grp/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_grp/tests/grp_test.c projects/bsd_rdma_4_9/lib/libcasper/services/cap_pwd/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_pwd/tests/pwd_test.c projects/bsd_rdma_4_9/lib/libcasper/services/cap_sysctl/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_sysctl/tests/Makefile projects/bsd_rdma_4_9/lib/libcasper/services/cap_sysctl/tests/sysctl_test.c projects/bsd_rdma_4_9/lib/libcompiler_rt/Makefile.inc projects/bsd_rdma_4_9/lib/libcrypt/Makefile projects/bsd_rdma_4_9/lib/libfetch/common.c projects/bsd_rdma_4_9/lib/libkvm/Makefile projects/bsd_rdma_4_9/lib/libmp/Makefile projects/bsd_rdma_4_9/lib/libnv/Makefile projects/bsd_rdma_4_9/lib/libpathconv/Makefile projects/bsd_rdma_4_9/lib/libproc/Makefile projects/bsd_rdma_4_9/lib/librt/Makefile projects/bsd_rdma_4_9/lib/libsbuf/Makefile projects/bsd_rdma_4_9/lib/libthr/Makefile projects/bsd_rdma_4_9/lib/libutil/Makefile projects/bsd_rdma_4_9/lib/libutil/kinfo_getvmmap.3 projects/bsd_rdma_4_9/lib/libxo/Makefile projects/bsd_rdma_4_9/lib/msun/Makefile projects/bsd_rdma_4_9/lib/ncurses/ncurses/termcap.c projects/bsd_rdma_4_9/libexec/atf/atf-check/Makefile projects/bsd_rdma_4_9/libexec/atf/atf-sh/Makefile projects/bsd_rdma_4_9/libexec/rtld-elf/Makefile projects/bsd_rdma_4_9/release/packages/kernel.ucl projects/bsd_rdma_4_9/release/packages/runtime.ucl projects/bsd_rdma_4_9/release/release.sh projects/bsd_rdma_4_9/sbin/devd/Makefile projects/bsd_rdma_4_9/sbin/dhclient/Makefile projects/bsd_rdma_4_9/sbin/growfs/Makefile projects/bsd_rdma_4_9/sbin/ifconfig/Makefile projects/bsd_rdma_4_9/sbin/mdconfig/Makefile projects/bsd_rdma_4_9/sbin/pfctl/Makefile projects/bsd_rdma_4_9/sbin/route/route.8 projects/bsd_rdma_4_9/share/examples/Makefile projects/bsd_rdma_4_9/share/man/man4/Makefile projects/bsd_rdma_4_9/share/man/man4/bge.4 projects/bsd_rdma_4_9/share/man/man4/ena.4 projects/bsd_rdma_4_9/share/man/man4/pfsync.4 projects/bsd_rdma_4_9/share/man/man4/sa.4 projects/bsd_rdma_4_9/share/man/man4/usb_quirk.4 projects/bsd_rdma_4_9/share/man/man5/src.conf.5 projects/bsd_rdma_4_9/share/man/man9/Makefile projects/bsd_rdma_4_9/share/man/man9/config_intrhook.9 projects/bsd_rdma_4_9/share/man/man9/sbuf.9 projects/bsd_rdma_4_9/share/misc/bsd-family-tree projects/bsd_rdma_4_9/share/mk/bsd.README projects/bsd_rdma_4_9/share/mk/bsd.cpu.mk projects/bsd_rdma_4_9/share/mk/bsd.crunchgen.mk projects/bsd_rdma_4_9/share/mk/bsd.lib.mk projects/bsd_rdma_4_9/share/mk/bsd.links.mk projects/bsd_rdma_4_9/share/mk/bsd.opts.mk projects/bsd_rdma_4_9/share/mk/bsd.own.mk projects/bsd_rdma_4_9/share/mk/bsd.prog.mk projects/bsd_rdma_4_9/share/mk/src.opts.mk projects/bsd_rdma_4_9/share/mk/suite.test.mk projects/bsd_rdma_4_9/share/mk/sys.mk projects/bsd_rdma_4_9/share/zoneinfo/Makefile projects/bsd_rdma_4_9/sys/amd64/amd64/minidump_machdep.c projects/bsd_rdma_4_9/sys/amd64/amd64/trap.c projects/bsd_rdma_4_9/sys/amd64/include/cpufunc.h projects/bsd_rdma_4_9/sys/amd64/include/intr_machdep.h projects/bsd_rdma_4_9/sys/arm/arm/minidump_machdep.c projects/bsd_rdma_4_9/sys/arm/arm/sc_machdep.c projects/bsd_rdma_4_9/sys/arm/at91/at91_pmc.c projects/bsd_rdma_4_9/sys/arm/conf/GENERIC projects/bsd_rdma_4_9/sys/arm/conf/NOTES projects/bsd_rdma_4_9/sys/arm64/arm64/debug_monitor.c projects/bsd_rdma_4_9/sys/arm64/arm64/gic_v3.c projects/bsd_rdma_4_9/sys/arm64/arm64/gic_v3_fdt.c projects/bsd_rdma_4_9/sys/arm64/arm64/gicv3_its.c projects/bsd_rdma_4_9/sys/arm64/arm64/machdep.c projects/bsd_rdma_4_9/sys/arm64/arm64/minidump_machdep.c projects/bsd_rdma_4_9/sys/arm64/arm64/mp_machdep.c projects/bsd_rdma_4_9/sys/arm64/arm64/vfp.c projects/bsd_rdma_4_9/sys/arm64/include/machdep.h projects/bsd_rdma_4_9/sys/boot/common/part.c projects/bsd_rdma_4_9/sys/boot/efi/include/efi.h projects/bsd_rdma_4_9/sys/boot/efi/loader/arch/amd64/trap.c projects/bsd_rdma_4_9/sys/boot/fdt/dts/arm/bcm2835.dtsi projects/bsd_rdma_4_9/sys/boot/fdt/dts/arm/bcm2836.dtsi projects/bsd_rdma_4_9/sys/cam/cam_iosched.c projects/bsd_rdma_4_9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h projects/bsd_rdma_4_9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/include/linux/device.h projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/include/linux/list.h projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/src/linux_rcu.c projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/src/linux_tasklet.c projects/bsd_rdma_4_9/sys/compat/linuxkpi/common/src/linux_work.c projects/bsd_rdma_4_9/sys/conf/NOTES projects/bsd_rdma_4_9/sys/conf/files projects/bsd_rdma_4_9/sys/conf/files.arm64 projects/bsd_rdma_4_9/sys/conf/kern.post.mk projects/bsd_rdma_4_9/sys/crypto/aesni/aesni_ghash.c projects/bsd_rdma_4_9/sys/crypto/aesni/aesni_wrap.c projects/bsd_rdma_4_9/sys/ddb/db_textdump.c projects/bsd_rdma_4_9/sys/dev/cxgbe/adapter.h projects/bsd_rdma_4_9/sys/dev/cxgbe/common/t4_hw.c projects/bsd_rdma_4_9/sys/dev/cxgbe/t4_main.c projects/bsd_rdma_4_9/sys/dev/cxgbe/tom/t4_listen.c projects/bsd_rdma_4_9/sys/dev/extres/hwreset/hwreset.h projects/bsd_rdma_4_9/sys/dev/hyperv/include/hyperv.h projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/hn_nvs.c projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/hn_nvs.h projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/hn_rndis.c projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/hn_rndis.h projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/if_hn.c projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/if_hnreg.h projects/bsd_rdma_4_9/sys/dev/hyperv/netvsc/if_hnvar.h projects/bsd_rdma_4_9/sys/dev/hyperv/pcib/vmbus_pcib.c projects/bsd_rdma_4_9/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c projects/bsd_rdma_4_9/sys/dev/hyperv/storvsc/hv_vstorage.h projects/bsd_rdma_4_9/sys/dev/hyperv/utilities/hv_kvp.c projects/bsd_rdma_4_9/sys/dev/hyperv/utilities/vmbus_timesync.c projects/bsd_rdma_4_9/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c projects/bsd_rdma_4_9/sys/dev/hyperv/vmbus/hyperv.c projects/bsd_rdma_4_9/sys/dev/hyperv/vmbus/vmbus.c projects/bsd_rdma_4_9/sys/dev/hyperv/vmbus/vmbus_et.c projects/bsd_rdma_4_9/sys/dev/iicbus/nxprtc.c projects/bsd_rdma_4_9/sys/dev/iicbus/s35390a.c projects/bsd_rdma_4_9/sys/dev/nvme/nvme.c projects/bsd_rdma_4_9/sys/dev/pci/pci_host_generic.h projects/bsd_rdma_4_9/sys/dev/qlnx/qlnxe/qlnx_def.h projects/bsd_rdma_4_9/sys/dev/qlnx/qlnxe/qlnx_os.c projects/bsd_rdma_4_9/sys/dev/qlnx/qlnxe/qlnx_ver.h projects/bsd_rdma_4_9/sys/dev/safe/safe.c projects/bsd_rdma_4_9/sys/dev/syscons/scterm-teken.c projects/bsd_rdma_4_9/sys/dev/syscons/syscons.c projects/bsd_rdma_4_9/sys/dev/syscons/syscons.h projects/bsd_rdma_4_9/sys/dev/usb/quirk/usb_quirk.c projects/bsd_rdma_4_9/sys/dev/usb/quirk/usb_quirk.h projects/bsd_rdma_4_9/sys/dev/usb/usb_hid.c projects/bsd_rdma_4_9/sys/dev/usb/usbhid.h projects/bsd_rdma_4_9/sys/dev/vt/vt_core.c projects/bsd_rdma_4_9/sys/dev/xen/timer/timer.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfs_clbio.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfs_clnode.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfs_clport.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfs_clsubs.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfs_clvnops.c projects/bsd_rdma_4_9/sys/fs/nfsclient/nfsnode.h projects/bsd_rdma_4_9/sys/geom/journal/g_journal.c projects/bsd_rdma_4_9/sys/i386/i386/exception.s projects/bsd_rdma_4_9/sys/i386/i386/minidump_machdep.c projects/bsd_rdma_4_9/sys/i386/include/intr_machdep.h projects/bsd_rdma_4_9/sys/isa/rtc.h projects/bsd_rdma_4_9/sys/isa/syscons_isa.c projects/bsd_rdma_4_9/sys/kern/kern_dump.c projects/bsd_rdma_4_9/sys/kern/kern_ktr.c projects/bsd_rdma_4_9/sys/kern/kern_sendfile.c projects/bsd_rdma_4_9/sys/kern/kern_shutdown.c projects/bsd_rdma_4_9/sys/kern/subr_autoconf.c projects/bsd_rdma_4_9/sys/kern/subr_blist.c projects/bsd_rdma_4_9/sys/kern/subr_intr.c projects/bsd_rdma_4_9/sys/kern/subr_sbuf.c projects/bsd_rdma_4_9/sys/kern/subr_smp.c projects/bsd_rdma_4_9/sys/kern/vfs_bio.c projects/bsd_rdma_4_9/sys/kern/vfs_subr.c projects/bsd_rdma_4_9/sys/libkern/x86/crc32_sse42.c projects/bsd_rdma_4_9/sys/mips/atheros/if_arge.c projects/bsd_rdma_4_9/sys/mips/conf/XLP.hints projects/bsd_rdma_4_9/sys/mips/conf/XLR projects/bsd_rdma_4_9/sys/mips/conf/XLR64 projects/bsd_rdma_4_9/sys/mips/conf/XLRN32 projects/bsd_rdma_4_9/sys/mips/conf/std.XLP projects/bsd_rdma_4_9/sys/mips/mips/minidump_machdep.c projects/bsd_rdma_4_9/sys/mips/mips/sc_machdep.c projects/bsd_rdma_4_9/sys/mips/rmi/xlr_i2c.c projects/bsd_rdma_4_9/sys/modules/Makefile projects/bsd_rdma_4_9/sys/modules/armv8crypto/Makefile projects/bsd_rdma_4_9/sys/modules/dtb/rpi/Makefile projects/bsd_rdma_4_9/sys/modules/i2c/Makefile projects/bsd_rdma_4_9/sys/modules/qlnx/qlnxe/Makefile projects/bsd_rdma_4_9/sys/modules/usb/Makefile projects/bsd_rdma_4_9/sys/net/bpf.c projects/bsd_rdma_4_9/sys/net/if_vlan.c projects/bsd_rdma_4_9/sys/netinet/tcp_usrreq.c projects/bsd_rdma_4_9/sys/powerpc/powerpc/sc_machdep.c projects/bsd_rdma_4_9/sys/sparc64/sparc64/dump_machdep.c projects/bsd_rdma_4_9/sys/sparc64/sparc64/pmap.c projects/bsd_rdma_4_9/sys/sys/blist.h projects/bsd_rdma_4_9/sys/sys/conf.h projects/bsd_rdma_4_9/sys/sys/consio.h projects/bsd_rdma_4_9/sys/sys/gtaskqueue.h projects/bsd_rdma_4_9/sys/sys/kernel.h projects/bsd_rdma_4_9/sys/sys/kerneldump.h projects/bsd_rdma_4_9/sys/sys/sbuf.h projects/bsd_rdma_4_9/sys/sys/taskqueue.h projects/bsd_rdma_4_9/sys/sys/vnode.h projects/bsd_rdma_4_9/sys/teken/sequences projects/bsd_rdma_4_9/sys/teken/teken.h projects/bsd_rdma_4_9/sys/teken/teken_subr_compat.h projects/bsd_rdma_4_9/sys/vm/vm_glue.c projects/bsd_rdma_4_9/sys/vm/vm_kern.c projects/bsd_rdma_4_9/sys/vm/vm_object.c projects/bsd_rdma_4_9/sys/vm/vm_object.h projects/bsd_rdma_4_9/sys/vm/vm_page.c projects/bsd_rdma_4_9/sys/vm/vm_page.h projects/bsd_rdma_4_9/sys/x86/acpica/srat.c projects/bsd_rdma_4_9/sys/x86/cpufreq/hwpstate.c projects/bsd_rdma_4_9/sys/x86/isa/atrtc.c projects/bsd_rdma_4_9/sys/x86/x86/intr_machdep.c projects/bsd_rdma_4_9/sys/x86/x86/mp_x86.c projects/bsd_rdma_4_9/tests/Makefile projects/bsd_rdma_4_9/tests/sys/Makefile.inc projects/bsd_rdma_4_9/tools/build/mk/OptionalObsoleteFiles.inc projects/bsd_rdma_4_9/usr.bin/apply/Makefile projects/bsd_rdma_4_9/usr.bin/basename/Makefile projects/bsd_rdma_4_9/usr.bin/bsdcat/Makefile projects/bsd_rdma_4_9/usr.bin/calendar/Makefile projects/bsd_rdma_4_9/usr.bin/calendar/calendars/calendar.freebsd projects/bsd_rdma_4_9/usr.bin/cmp/Makefile projects/bsd_rdma_4_9/usr.bin/col/Makefile projects/bsd_rdma_4_9/usr.bin/comm/Makefile projects/bsd_rdma_4_9/usr.bin/compress/Makefile projects/bsd_rdma_4_9/usr.bin/cpio/Makefile projects/bsd_rdma_4_9/usr.bin/csplit/Makefile projects/bsd_rdma_4_9/usr.bin/cut/Makefile projects/bsd_rdma_4_9/usr.bin/diff/Makefile projects/bsd_rdma_4_9/usr.bin/diff3/Makefile projects/bsd_rdma_4_9/usr.bin/dirname/Makefile projects/bsd_rdma_4_9/usr.bin/du/Makefile projects/bsd_rdma_4_9/usr.bin/file2c/Makefile projects/bsd_rdma_4_9/usr.bin/getconf/Makefile projects/bsd_rdma_4_9/usr.bin/grep/Makefile projects/bsd_rdma_4_9/usr.bin/grep/util.c projects/bsd_rdma_4_9/usr.bin/gzip/Makefile projects/bsd_rdma_4_9/usr.bin/hexdump/Makefile projects/bsd_rdma_4_9/usr.bin/ident/Makefile projects/bsd_rdma_4_9/usr.bin/indent/Makefile projects/bsd_rdma_4_9/usr.bin/join/Makefile projects/bsd_rdma_4_9/usr.bin/jot/Makefile projects/bsd_rdma_4_9/usr.bin/lastcomm/Makefile projects/bsd_rdma_4_9/usr.bin/limits/Makefile projects/bsd_rdma_4_9/usr.bin/m4/Makefile projects/bsd_rdma_4_9/usr.bin/mkesdb/yacc.y projects/bsd_rdma_4_9/usr.bin/mkimg/Makefile projects/bsd_rdma_4_9/usr.bin/mt/mt.1 projects/bsd_rdma_4_9/usr.bin/ncal/Makefile projects/bsd_rdma_4_9/usr.bin/pr/Makefile projects/bsd_rdma_4_9/usr.bin/printf/Makefile projects/bsd_rdma_4_9/usr.bin/procstat/Makefile projects/bsd_rdma_4_9/usr.bin/sdiff/Makefile projects/bsd_rdma_4_9/usr.bin/sed/Makefile projects/bsd_rdma_4_9/usr.bin/soelim/Makefile projects/bsd_rdma_4_9/usr.bin/stat/Makefile projects/bsd_rdma_4_9/usr.bin/tail/Makefile projects/bsd_rdma_4_9/usr.bin/tar/Makefile projects/bsd_rdma_4_9/usr.bin/timeout/Makefile projects/bsd_rdma_4_9/usr.bin/tr/Makefile projects/bsd_rdma_4_9/usr.bin/truncate/Makefile projects/bsd_rdma_4_9/usr.bin/uniq/Makefile projects/bsd_rdma_4_9/usr.bin/units/Makefile projects/bsd_rdma_4_9/usr.bin/units/units.1 projects/bsd_rdma_4_9/usr.bin/uudecode/Makefile projects/bsd_rdma_4_9/usr.bin/uuencode/Makefile projects/bsd_rdma_4_9/usr.bin/xargs/Makefile projects/bsd_rdma_4_9/usr.bin/xinstall/Makefile projects/bsd_rdma_4_9/usr.bin/xo/Makefile projects/bsd_rdma_4_9/usr.bin/yacc/Makefile projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidcontrol/sdp.c projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/bthid_config.h projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/bthidd.conf.sample projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/bthidd.h projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/hid.c projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/lexer.l projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/parser.y projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/server.c projects/bsd_rdma_4_9/usr.sbin/bluetooth/bthidd/session.c projects/bsd_rdma_4_9/usr.sbin/bootparamd/bootparamd/bootparamd.c projects/bsd_rdma_4_9/usr.sbin/bootparamd/callbootd/callbootd.c projects/bsd_rdma_4_9/usr.sbin/chown/Makefile projects/bsd_rdma_4_9/usr.sbin/cpucontrol/cpucontrol.8 projects/bsd_rdma_4_9/usr.sbin/etcupdate/Makefile projects/bsd_rdma_4_9/usr.sbin/extattr/Makefile projects/bsd_rdma_4_9/usr.sbin/fstyp/Makefile projects/bsd_rdma_4_9/usr.sbin/makefs/Makefile projects/bsd_rdma_4_9/usr.sbin/newsyslog/Makefile projects/bsd_rdma_4_9/usr.sbin/nmtree/Makefile projects/bsd_rdma_4_9/usr.sbin/pw/Makefile projects/bsd_rdma_4_9/usr.sbin/pw/pw_user.c projects/bsd_rdma_4_9/usr.sbin/pw/tests/pw_useradd_test.sh projects/bsd_rdma_4_9/usr.sbin/pw/tests/pw_usermod_test.sh projects/bsd_rdma_4_9/usr.sbin/rpcbind/Makefile projects/bsd_rdma_4_9/usr.sbin/sa/Makefile projects/bsd_rdma_4_9/usr.sbin/vidcontrol/vidcontrol.1 projects/bsd_rdma_4_9/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/bsd_rdma_4_9/ (props changed) projects/bsd_rdma_4_9/contrib/binutils/ (props changed) projects/bsd_rdma_4_9/contrib/compiler-rt/ (props changed) projects/bsd_rdma_4_9/contrib/gcc/ (props changed) projects/bsd_rdma_4_9/contrib/libc++/ (props changed) projects/bsd_rdma_4_9/contrib/llvm/ (props changed) projects/bsd_rdma_4_9/contrib/llvm/tools/clang/ (props changed) projects/bsd_rdma_4_9/contrib/llvm/tools/lld/ (props changed) projects/bsd_rdma_4_9/contrib/llvm/tools/lldb/ (props changed) projects/bsd_rdma_4_9/contrib/mdocml/ (props changed) projects/bsd_rdma_4_9/contrib/zstd/ (props changed) projects/bsd_rdma_4_9/gnu/usr.bin/binutils/ (props changed) projects/bsd_rdma_4_9/gnu/usr.bin/gdb/ (props changed) projects/bsd_rdma_4_9/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/bsd_rdma_4_9/Makefile ============================================================================== --- projects/bsd_rdma_4_9/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -221,7 +221,7 @@ SUB_MAKE= `test -x ${MYMAKE} && echo ${MYMAKE} || echo SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk .endif -_MAKE= PATH=${PATH} MAKE_CMD=${MAKE} ${SUB_MAKE} -f Makefile.inc1 \ +_MAKE= PATH=${PATH} MAKE_CMD="${MAKE}" ${SUB_MAKE} -f Makefile.inc1 \ TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Only allow meta mode for the whitelisted targets. See META_TGT_WHITELIST @@ -245,12 +245,17 @@ _MAKE+= MK_META_MODE=no .endif # !exists(/dev/filemon) && !defined(NO_FILEMON) .endif # !defined(_CAN_USE_META_MODE) -# Guess machine architecture from machine type, and vice versa. +# Guess target architecture from target type, and vice versa, based on +# historic FreeBSD practice of tending to have TARGET == TARGET_ARCH +# expanding to TARGET == TARGET_CPUARCH in recent times, with known +# exceptions. .if !defined(TARGET_ARCH) && defined(TARGET) +# T->TA mapping is usually TARGET with arm64 the odd man out _TARGET_ARCH= ${TARGET:S/arm64/aarch64/} .elif !defined(TARGET) && defined(TARGET_ARCH) && \ ${TARGET_ARCH} != ${MACHINE_ARCH} -_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?(hf)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/powerpcspe/powerpc/:C/riscv64(sf)?/riscv/} +# TA->T mapping is accidentally CPUARCH with aarch64 the odd man out +_TARGET= ${TARGET_ARCH:${__TO_CPUARCH}:C/aarch64/arm64/} .endif .if defined(TARGET) && !defined(_TARGET) _TARGET=${TARGET} Modified: projects/bsd_rdma_4_9/Makefile.inc1 ============================================================================== --- projects/bsd_rdma_4_9/Makefile.inc1 Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/Makefile.inc1 Mon Aug 21 11:56:47 2017 (r322747) @@ -346,6 +346,12 @@ SVN= ${_P}/${_S} . endfor .endif SVNFLAGS?= -r HEAD +.if !defined(VCS_REVISION) && empty(VCS_REVISION) +_VCS_REVISION?= $$(eval ${SVNVERSION_CMD} ${SRCDIR}) +. if !empty(_VCS_REVISION) +VCS_REVISION= $$(echo r${_VCS_REVISION}) +. endif +.endif .if !defined(OSRELDATE) .if exists(/usr/include/osreldate.h) @@ -1493,20 +1499,24 @@ packagekernel: .PHONY @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' \ @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .else @@ -1515,17 +1525,21 @@ packagekernel: .PHONY tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz .endif +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz +.endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" .for _kernel in ${BUILDKERNELS:[2..-1]} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --exclude '*.debug' . | \ ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz +.if ${MK_DEBUG_FILES} != "no" cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvf - --include '*/*/*.debug' $$(eval find .) | \ ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz +.endif .endfor .endif .endif @@ -1618,9 +1632,9 @@ create-world-package-${pkgname}: .PHONY @awk -F\" ' \ /^name/ { printf("===> Creating %s-", $$2); next } \ /^version/ { print $$2; next } \ - ' ${WSTAGEDIR}/${pkgname}.ucl ; + ' ${WSTAGEDIR}/${pkgname}.ucl @if [ "${pkgname}" == "runtime" ]; then \ - sed -i '' -e "s/%KERNCONF%/${INSTALLKERNEL:tl}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ + sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \ fi ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ create -M ${WSTAGEDIR}/${pkgname}.ucl \ @@ -1632,7 +1646,10 @@ create-world-package-${pkgname}: .PHONY create-kernel-packages: .PHONY _default_flavor= -default .if exists(${KSTAGEDIR}/kernel.meta) -. for flavor in "" -debug +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},} create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/${DISTDIR} ; \ @@ -1647,6 +1664,7 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul -e "s/%DESC%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ awk -F\" ' \ @@ -1663,7 +1681,10 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" . for _kernel in ${BUILDKERNELS:[2..-1]} . if exists(${KSTAGEDIR}/kernel.${_kernel}.meta) -. for flavor in "" -debug +. if ${MK_DEBUG_FILES} != "no" +_debug=-debug +. endif +. for flavor in "" ${_debug} create-kernel-packages: create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel} create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel}: _pkgbootstrap .PHONY @cd ${KSTAGEDIR}/kernel.${_kernel} ; \ @@ -1678,6 +1699,7 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ -e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \ -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \ ${SRCDIR}/release/packages/kernel.ucl \ > ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ awk -F\" ' \ Modified: projects/bsd_rdma_4_9/Makefile.libcompat ============================================================================== --- projects/bsd_rdma_4_9/Makefile.libcompat Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/Makefile.libcompat Mon Aug 21 11:56:47 2017 (r322747) @@ -179,7 +179,7 @@ build${libcompat}: .PHONY .endfor ${_+_}cd ${.CURDIR}; \ ${LIBCOMPATWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) .for _t in ${_obj} all ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIBCOMPATWMAKE} \ -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t} @@ -192,7 +192,7 @@ distribute${libcompat} install${libcompat}: .PHONY .for _dir in ${_LC_LIBDIRS.yes} ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATIMAKE} ${.TARGET:S/${libcompat}$//} .endfor -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \ PROG=ld-elf32.so.1 ${LIBCOMPATIMAKE} ${.TARGET:S/32$//} ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIBCOMPATIMAKE} \ Modified: projects/bsd_rdma_4_9/UPDATING ============================================================================== --- projects/bsd_rdma_4_9/UPDATING Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/UPDATING Mon Aug 21 11:56:47 2017 (r322747) @@ -51,6 +51,27 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170814: + "make check" behavior (made in ^/head@r295380) has been changed to + execute from a limited sandbox, as opposed to executing from + ${TESTSDIR}. + + Behavioral changes: + - The "beforecheck" and "aftercheck" targets are now specified. + - ${CHECKDIR} (added in commit noted above) has been removed. + - Legacy behavior can be enabled by setting + WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment. + + If the limited sandbox mode is enabled, "make check" will execute + "make distribution", then install, execute the tests, and clean up the + sandbox if successful. + + The "make distribution" and "make install" targets are typically run as + root to set appropriate permissions and ownership at installation time. + The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the + environment if executing "make check" with limited sandbox mode using + an unprivileged user. + 20170808: Since the switch to GPT disk labels, fsck for UFS/FFS has been unable to automatically find alternate superblocks. As of r322297, Modified: projects/bsd_rdma_4_9/bin/cat/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/cat/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/cat/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= cat +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/chmod/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/chmod/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/chmod/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= chmod +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/date/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/date/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/date/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -7,6 +7,7 @@ PACKAGE=runtime PROG= date SRCS= date.c netdate.c vary.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/dd/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/dd/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/dd/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -38,6 +38,7 @@ test: ${PROG} gen @rm -f gen 1M_zeroes* obs_zeroes +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/echo/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/echo/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/echo/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= echo +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/expr/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/expr/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/expr/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -12,6 +12,7 @@ CFLAGS+= -fwrapv NO_WMISSING_VARIABLE_DECLARATIONS= +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/ln/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/ln/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/ln/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -10,6 +10,7 @@ MAN= ln.1 symlink.7 LINKS= ${BINDIR}/ln ${BINDIR}/link MLINKS= ln.1 link.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/ls/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/ls/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/ls/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -14,6 +14,7 @@ CFLAGS+= -DCOLORLS LIBADD+= termcapw .endif +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/mv/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/mv/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/mv/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= mv +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/pax/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/pax/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/pax/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -33,6 +33,7 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \ tables.c tar.c tty_subs.c +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/pkill/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/pkill/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/pkill/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -19,6 +19,7 @@ MLINKS= pkill.1 pgrep.1 SYMLINKS= ../..${BINDIR}/pkill /usr/bin/pkill SYMLINKS+= ../..${BINDIR}/pgrep /usr/bin/pgrep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/pkill/pkill.c ============================================================================== --- projects/bsd_rdma_4_9/bin/pkill/pkill.c Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/pkill/pkill.c Mon Aug 21 11:56:47 2017 (r322747) @@ -568,6 +568,8 @@ main(int argc, char **argv) continue; rv |= (*action)(kp); } + if (rv && pgrep) + putchar('\n'); if (!did_action && !pgrep && longfmt) fprintf(stderr, "No matching processes belonging to you were found\n"); Modified: projects/bsd_rdma_4_9/bin/pwait/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/pwait/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/pwait/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -5,6 +5,7 @@ PACKAGE=runtime PROG= pwait +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/sh/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/sh/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/sh/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -64,6 +64,7 @@ syntax.c syntax.h: mksyntax token.h: mktokens sh ${.CURDIR}/mktokens +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/sh/tests/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/sh/tests/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/sh/tests/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ TESTS_SUBDIRS+= builtins TESTS_SUBDIRS+= errors TESTS_SUBDIRS+= execution TESTS_SUBDIRS+= expansion +TESTS_SUBDIRS+= invocation TESTS_SUBDIRS+= parameters TESTS_SUBDIRS+= parser TESTS_SUBDIRS+= set-e Modified: projects/bsd_rdma_4_9/bin/sleep/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/sleep/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/sleep/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -6,6 +6,7 @@ PACKAGE=runtime PROG= sleep +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/bin/test/Makefile ============================================================================== --- projects/bsd_rdma_4_9/bin/test/Makefile Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/bin/test/Makefile Mon Aug 21 11:56:47 2017 (r322747) @@ -8,6 +8,7 @@ PROG= test LINKS= ${BINDIR}/test ${BINDIR}/[ MLINKS= test.1 [.1 +HAS_TESTS= SUBDIR.${MK_TESTS}+= tests .include Modified: projects/bsd_rdma_4_9/contrib/binutils/bfd/ecoff.c ============================================================================== --- projects/bsd_rdma_4_9/contrib/binutils/bfd/ecoff.c Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/binutils/bfd/ecoff.c Mon Aug 21 11:56:47 2017 (r322747) @@ -1878,7 +1878,7 @@ _bfd_ecoff_sizeof_headers (bfd *abfd, ret = (bfd_coff_filhsz (abfd) + bfd_coff_aoutsz (abfd) + c * bfd_coff_scnhsz (abfd)); - return BFD_ALIGN (ret, 16); + return (int) BFD_ALIGN (ret, 16); } /* Get the contents of a section. */ Modified: projects/bsd_rdma_4_9/contrib/binutils/gas/config/tc-mips.c ============================================================================== --- projects/bsd_rdma_4_9/contrib/binutils/gas/config/tc-mips.c Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/binutils/gas/config/tc-mips.c Mon Aug 21 11:56:47 2017 (r322747) @@ -2920,7 +2920,7 @@ append_insn (struct mips_cl_insn *ip, expressionS *add instruction. May want to add this support in the future. */ } /* Never set the bit for $0, which is always zero. */ - mips_gprmask &= ~1 << 0; + mips_gprmask &= ~(1 << 0); } else { @@ -3310,7 +3310,7 @@ macro_end (void) warning now. */ const char *msg = macro_warning (subtype); if (msg != 0) - as_warn (msg); + as_warn ("%s", msg); } else { @@ -14463,7 +14463,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec { const char *msg = macro_warning (fragp->fr_subtype); if (msg != 0) - as_warn_where (fragp->fr_file, fragp->fr_line, msg); + as_warn_where (fragp->fr_file, fragp->fr_line, "%s", msg); } /* Go through all the fixups for the first sequence. Disable them Modified: projects/bsd_rdma_4_9/contrib/libc++/include/string ============================================================================== --- projects/bsd_rdma_4_9/contrib/libc++/include/string Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/libc++/include/string Mon Aug 21 11:56:47 2017 (r322747) @@ -556,6 +556,8 @@ template operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) + template class _LIBCPP_TEMPLATE_VIS __basic_string_common { @@ -3999,7 +4001,6 @@ basic_string<_CharT, _Traits, _Allocator>::__subscript _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) #if _LIBCPP_STD_VER > 11 // Literal suffixes for basic_string [basic.string.literals] Modified: projects/bsd_rdma_4_9/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Aug 21 11:56:47 2017 (r322747) @@ -1220,8 +1220,9 @@ class SelectionDAG { (public) /// If an existing load has uses of its chain, create a token factor node with /// that chain and the new memory node's chain and update users of the old /// chain to the token factor. This ensures that the new memory node will have - /// the same relative memory dependency position as the old load. - void makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); + /// the same relative memory dependency position as the old load. Returns the + /// new merged load chain. + SDValue makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); /// Topological-sort the AllNodes list and a /// assign a unique node id for each node in the DAG based on their Modified: projects/bsd_rdma_4_9/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Mon Aug 21 11:56:47 2017 (r322747) @@ -94,9 +94,9 @@ template class LazyEmittingLayer llvm_unreachable("Invalid emit-state."); } - void removeModuleFromBaseLayer(BaseLayerT &BaseLayer) { - if (EmitState != NotEmitted) - BaseLayer.removeModule(Handle); + Error removeModuleFromBaseLayer(BaseLayerT& BaseLayer) { + return EmitState != NotEmitted ? BaseLayer.removeModule(Handle) + : Error::success(); } void emitAndFinalize(BaseLayerT &BaseLayer) { @@ -226,9 +226,9 @@ template class LazyEmittingLayer /// This method will free the memory associated with the given module, both /// in this layer, and the base layer. Error removeModule(ModuleHandleT H) { - (*H)->removeModuleFromBaseLayer(BaseLayer); + Error Err = (*H)->removeModuleFromBaseLayer(BaseLayer); ModuleList.erase(H); - return Error::success(); + return Err; } /// @brief Search for the given named symbol. Modified: projects/bsd_rdma_4_9/contrib/llvm/include/llvm/Object/COFFImportFile.h ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/include/llvm/Object/COFFImportFile.h Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/include/llvm/Object/COFFImportFile.h Mon Aug 21 11:56:47 2017 (r322747) @@ -73,6 +73,7 @@ class COFFImportFile : public SymbolicFile { (private) struct COFFShortExport { std::string Name; std::string ExtName; + std::string SymbolName; uint16_t Ordinal = 0; bool Noname = false; @@ -98,7 +99,8 @@ struct COFFShortExport { std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - COFF::MachineTypes Machine); + COFF::MachineTypes Machine, + bool MakeWeakAliases); } // namespace object } // namespace llvm Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ScalarEvolution.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -162,6 +162,11 @@ static cl::opt cl::desc("Maximum depth of recursive SExt/ZExt"), cl::init(8)); +static cl::opt + MaxAddRecSize("scalar-evolution-max-add-rec-size", cl::Hidden, + cl::desc("Max coefficients in AddRec during evolving"), + cl::init(16)); + //===----------------------------------------------------------------------===// // SCEV class definitions //===----------------------------------------------------------------------===// @@ -2878,6 +2883,12 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImp if (!OtherAddRec || OtherAddRec->getLoop() != AddRecLoop) continue; + // Limit max number of arguments to avoid creation of unreasonably big + // SCEVAddRecs with very complex operands. + if (AddRec->getNumOperands() + OtherAddRec->getNumOperands() - 1 > + MaxAddRecSize) + continue; + bool Overflow = false; Type *Ty = AddRec->getType(); bool LargerThan64Bits = getTypeSizeInBits(Ty) > 64; @@ -7582,6 +7593,25 @@ const SCEV *ScalarEvolution::computeSCEVAtScope(const const SCEV *BackedgeTakenCount = getBackedgeTakenCount(LI); if (const SCEVConstant *BTCC = dyn_cast(BackedgeTakenCount)) { + + // This trivial case can show up in some degenerate cases where + // the incoming IR has not yet been fully simplified. + if (BTCC->getValue()->isZero()) { + Value *InitValue = nullptr; + bool MultipleInitValues = false; + for (unsigned i = 0; i < PN->getNumIncomingValues(); i++) { + if (!LI->contains(PN->getIncomingBlock(i))) { + if (!InitValue) + InitValue = PN->getIncomingValue(i); + else if (InitValue != PN->getIncomingValue(i)) { + MultipleInitValues = true; + break; + } + } + if (!MultipleInitValues && InitValue) + return getSCEV(InitValue); + } + } // Okay, we know how many times the containing loop executes. If // this is a constant evolving PHI node, get the final value at // the specified iteration number. Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ValueTracking.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ValueTracking.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Analysis/ValueTracking.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -4458,6 +4458,10 @@ Optional llvm::isImpliedCondition(const Value *L unsigned Depth, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT) { + // Bail out when we hit the limit. + if (Depth == MaxDepth) + return None; + // A mismatch occurs when we compare a scalar cmp to a vector cmp, for example. if (LHS->getType() != RHS->getType()) return None; Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -302,7 +302,21 @@ SDValue DAGTypeLegalizer::ScalarizeVecRes_SCALAR_TO_VE } SDValue DAGTypeLegalizer::ScalarizeVecRes_VSELECT(SDNode *N) { - SDValue Cond = GetScalarizedVector(N->getOperand(0)); + SDValue Cond = N->getOperand(0); + EVT OpVT = Cond.getValueType(); + SDLoc DL(N); + // The vselect result and true/value operands needs scalarizing, but it's + // not a given that the Cond does. For instance, in AVX512 v1i1 is legal. + // See the similar logic in ScalarizeVecRes_VSETCC + if (getTypeAction(OpVT) == TargetLowering::TypeScalarizeVector) { + Cond = GetScalarizedVector(Cond); + } else { + EVT VT = OpVT.getVectorElementType(); + Cond = DAG.getNode( + ISD::EXTRACT_VECTOR_ELT, DL, VT, Cond, + DAG.getConstant(0, DL, TLI.getVectorIdxTy(DAG.getDataLayout()))); + } + SDValue LHS = GetScalarizedVector(N->getOperand(1)); TargetLowering::BooleanContent ScalarBool = TLI.getBooleanContents(false, false); Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -7262,22 +7262,23 @@ void SelectionDAG::TransferDbgValues(SDValue From, SDV AddDbgValue(I, ToNode, false); } -void SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, - SDValue NewMemOp) { +SDValue SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, + SDValue NewMemOp) { assert(isa(NewMemOp.getNode()) && "Expected a memop node"); - if (!OldLoad->hasAnyUseOfValue(1)) - return; - // The new memory operation must have the same position as the old load in // terms of memory dependency. Create a TokenFactor for the old load and new // memory operation and update uses of the old load's output chain to use that // TokenFactor. SDValue OldChain = SDValue(OldLoad, 1); SDValue NewChain = SDValue(NewMemOp.getNode(), 1); + if (!OldLoad->hasAnyUseOfValue(1)) + return NewChain; + SDValue TokenFactor = getNode(ISD::TokenFactor, SDLoc(OldLoad), MVT::Other, OldChain, NewChain); ReplaceAllUsesOfValueWith(OldChain, TokenFactor); UpdateNodeOperands(TokenFactor.getNode(), OldChain, NewChain); + return TokenFactor; } //===----------------------------------------------------------------------===// Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/VirtRegMap.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -180,6 +180,7 @@ class VirtRegRewriter : public MachineFunctionPass { void addLiveInsForSubRanges(const LiveInterval &LI, unsigned PhysReg) const; void handleIdentityCopy(MachineInstr &MI) const; void expandCopyBundle(MachineInstr &MI) const; + bool subRegLiveThrough(const MachineInstr &MI, unsigned SuperPhysReg) const; public: static char ID; @@ -415,6 +416,32 @@ void VirtRegRewriter::expandCopyBundle(MachineInstr &M } } +/// Check whether (part of) \p SuperPhysReg is live through \p MI. +/// \pre \p MI defines a subregister of a virtual register that +/// has been assigned to \p SuperPhysReg. +bool VirtRegRewriter::subRegLiveThrough(const MachineInstr &MI, + unsigned SuperPhysReg) const { + SlotIndex MIIndex = LIS->getInstructionIndex(MI); + SlotIndex BeforeMIUses = MIIndex.getBaseIndex(); + SlotIndex AfterMIDefs = MIIndex.getBoundaryIndex(); + for (MCRegUnitIterator Unit(SuperPhysReg, TRI); Unit.isValid(); ++Unit) { + const LiveRange &UnitRange = LIS->getRegUnit(*Unit); + // If the regunit is live both before and after MI, + // we assume it is live through. + // Generally speaking, this is not true, because something like + // "RU = op RU" would match that description. + // However, we know that we are trying to assess whether + // a def of a virtual reg, vreg, is live at the same time of RU. + // If we are in the "RU = op RU" situation, that means that vreg + // is defined at the same time as RU (i.e., "vreg, RU = op RU"). + // Thus, vreg and RU interferes and vreg cannot be assigned to + // SuperPhysReg. Therefore, this situation cannot happen. + if (UnitRange.liveAt(AfterMIDefs) && UnitRange.liveAt(BeforeMIUses)) + return true; + } + return false; +} + void VirtRegRewriter::rewrite() { bool NoSubRegLiveness = !MRI->subRegLivenessEnabled(); SmallVector SuperDeads; @@ -452,7 +479,8 @@ void VirtRegRewriter::rewrite() { // A virtual register kill refers to the whole register, so we may // have to add operands for the super-register. A // partial redef always kills and redefines the super-register. - if (MO.readsReg() && (MO.isDef() || MO.isKill())) + if ((MO.readsReg() && (MO.isDef() || MO.isKill())) || + (MO.isDef() && subRegLiveThrough(*MI, PhysReg))) SuperKills.push_back(PhysReg); if (MO.isDef()) { Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -134,13 +134,13 @@ dumpDWARFv5StringOffsetsSection(raw_ostream &OS, Strin uint64_t StringOffset = StrOffsetExt.getRelocatedValue(EntrySize, &Offset); if (Format == DWARF32) { - OS << format("%8.8x ", StringOffset); uint32_t StringOffset32 = (uint32_t)StringOffset; + OS << format("%8.8x ", StringOffset32); const char *S = StrData.getCStr(&StringOffset32); if (S) OS << format("\"%s\"", S); } else - OS << format("%16.16x ", StringOffset); + OS << format("%16.16" PRIx64 " ", StringOffset); OS << "\n"; } } Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -196,7 +196,7 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const ++NumErrors; OS << "error: DW_AT_stmt_list offset is beyond .debug_line " "bounds: " - << format("0x%08" PRIx32, *SectionOffset) << "\n"; + << format("0x%08" PRIx64, *SectionOffset) << "\n"; Die.dump(OS, 0); OS << "\n"; } @@ -234,7 +234,7 @@ unsigned DWARFVerifier::verifyDebugInfoForm(const DWAR if (CUOffset >= CUSize) { ++NumErrors; OS << "error: " << FormEncodingString(Form) << " CU offset " - << format("0x%08" PRIx32, CUOffset) + << format("0x%08" PRIx64, CUOffset) << " is invalid (must be less than CU size of " << format("0x%08" PRIx32, CUSize) << "):\n"; Die.dump(OS, 0); @@ -366,7 +366,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.Address < PrevAddress) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "] row[" << RowIndex << "] decreases in address from previous row:\n"; @@ -381,7 +381,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.File > MaxFileIndex) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "][" << RowIndex << "] has invalid file index " << Row.File << " (valid values are [1," << MaxFileIndex << "]):\n"; Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Object/COFFImportFile.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Object/COFFImportFile.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Object/COFFImportFile.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -557,7 +557,7 @@ NewArchiveMember ObjectFactory::createWeakExternal(Str std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - MachineTypes Machine) { + MachineTypes Machine, bool MakeWeakAliases) { std::vector Members; ObjectFactory OF(llvm::sys::path::filename(ImportName), Machine); @@ -575,7 +575,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Private) continue; - if (E.isWeak()) { + if (E.isWeak() && MakeWeakAliases) { Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, false)); Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, true)); continue; @@ -587,7 +587,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Constant) ImportType = IMPORT_CONST; - StringRef SymbolName = E.isWeak() ? E.ExtName : E.Name; + StringRef SymbolName = E.SymbolName.empty() ? E.Name : E.SymbolName; ImportNameType NameType = getNameType(SymbolName, E.Name, Machine); Expected Name = E.ExtName.empty() ? SymbolName Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -388,6 +388,10 @@ static unsigned isMatchingStore(MachineInstr &LoadInst } static unsigned getPreIndexedOpcode(unsigned Opc) { + // FIXME: We don't currently support creating pre-indexed loads/stores when + // the load or store is the unscaled version. If we decide to perform such an + // optimization in the future the cases for the unscaled loads/stores will + // need to be added here. switch (Opc) { default: llvm_unreachable("Opcode has no pre-indexed equivalent!"); @@ -451,32 +455,42 @@ static unsigned getPostIndexedOpcode(unsigned Opc) { default: llvm_unreachable("Opcode has no post-indexed wise equivalent!"); case AArch64::STRSui: + case AArch64::STURSi: return AArch64::STRSpost; case AArch64::STRDui: + case AArch64::STURDi: return AArch64::STRDpost; case AArch64::STRQui: + case AArch64::STURQi: return AArch64::STRQpost; case AArch64::STRBBui: return AArch64::STRBBpost; case AArch64::STRHHui: return AArch64::STRHHpost; case AArch64::STRWui: + case AArch64::STURWi: return AArch64::STRWpost; case AArch64::STRXui: + case AArch64::STURXi: return AArch64::STRXpost; case AArch64::LDRSui: + case AArch64::LDURSi: return AArch64::LDRSpost; case AArch64::LDRDui: + case AArch64::LDURDi: return AArch64::LDRDpost; case AArch64::LDRQui: + case AArch64::LDURQi: return AArch64::LDRQpost; case AArch64::LDRBBui: return AArch64::LDRBBpost; case AArch64::LDRHHui: return AArch64::LDRHHpost; case AArch64::LDRWui: + case AArch64::LDURWi: return AArch64::LDRWpost; case AArch64::LDRXui: + case AArch64::LDURXi: return AArch64::LDRXpost; case AArch64::LDRSWui: return AArch64::LDRSWpost; @@ -1694,8 +1708,9 @@ bool AArch64LoadStoreOpt::optimizeBlock(MachineBasicBl ++NumPostFolded; break; } - // Don't know how to handle pre/post-index versions, so move to the next - // instruction. + + // Don't know how to handle unscaled pre/post-index versions below, so + // move to the next instruction. if (TII->isUnscaledLdSt(Opc)) { ++MBBI; break; Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -769,8 +769,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); const MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -797,23 +796,9 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock } // .Lloadcmp: - // mov wStatus, #0 // ldrex rDest, [rAddr] // cmp rDest, rDesired // bne .Ldone - if (!StatusDead) { - if (IsThumb) { - BuildMI(LoadCmpBB, DL, TII->get(ARM::tMOVi8), StatusReg) - .addDef(ARM::CPSR, RegState::Dead) - .addImm(0) - .add(predOps(ARMCC::AL)); - } else { - BuildMI(LoadCmpBB, DL, TII->get(ARM::MOVi), StatusReg) - .addImm(0) - .add(predOps(ARMCC::AL)) - .add(condCodeOp()); - } - } MachineInstrBuilder MIB; MIB = BuildMI(LoadCmpBB, DL, TII->get(LdrexOp), Dest.getReg()); @@ -836,10 +821,10 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strex rStatus, rNew, [rAddr] - // cmp rStatus, #0 + // strex rTempReg, rNew, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp - MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), StatusReg) + MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), TempReg) .addReg(NewReg) .addReg(AddrReg); if (StrexOp == ARM::t2STREX) @@ -848,7 +833,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) @@ -904,8 +889,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -931,7 +915,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl // .Lloadcmp: // ldrexd rDestLo, rDestHi, [rAddr] // cmp rDestLo, rDesiredLo - // sbcs rStatus, rDestHi, rDesiredHi + // sbcs rTempReg, rDestHi, rDesiredHi // bne .Ldone unsigned LDREXD = IsThumb ? ARM::t2LDREXD : ARM::LDREXD; MachineInstrBuilder MIB; @@ -959,17 +943,17 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strexd rStatus, rNewLo, rNewHi, [rAddr] - // cmp rStatus, #0 + // strexd rTempReg, rNewLo, rNewHi, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp unsigned STREXD = IsThumb ? ARM::t2STREXD : ARM::STREXD; - MIB = BuildMI(StoreBB, DL, TII->get(STREXD), StatusReg); + MIB = BuildMI(StoreBB, DL, TII->get(STREXD), TempReg); addExclusiveRegPair(MIB, New, 0, IsThumb, TRI); MIB.addReg(AddrReg).add(predOps(ARMCC::AL)); unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td Mon Aug 21 11:56:47 2017 (r322747) @@ -6053,21 +6053,21 @@ def SPACE : PseudoInst<(outs GPR:$Rd), (ins i32imm:$si // significantly more naive than the standard expansion: we conservatively // assume seq_cst, strong cmpxchg and omit clrex on failure. -let Constraints = "@earlyclobber $Rd,@earlyclobber $status", +let Constraints = "@earlyclobber $Rd,@earlyclobber $temp", mayLoad = 1, mayStore = 1 in { -def CMP_SWAP_8 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_8 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_16 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_16 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_32 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_32 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_64 : PseudoInst<(outs GPRPair:$Rd, GPR:$status), +def CMP_SWAP_64 : PseudoInst<(outs GPRPair:$Rd, GPR:$temp), (ins GPR:$addr, GPRPair:$desired, GPRPair:$new), NoItinerary, []>, Sched<[]>; } Modified: projects/bsd_rdma_4_9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp ============================================================================== --- projects/bsd_rdma_4_9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Aug 21 11:51:40 2017 (r322746) +++ projects/bsd_rdma_4_9/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Aug 21 11:56:47 2017 (r322747) @@ -419,6 +419,11 @@ X86TargetLowering::X86TargetLowering(const X86TargetMa setOperationAction(ISD::SELECT, VT, Custom); setOperationAction(ISD::SETCC, VT, Custom); } + + // Custom action for SELECT MMX and expand action for SELECT_CC MMX + setOperationAction(ISD::SELECT, MVT::x86mmx, Custom); + setOperationAction(ISD::SELECT_CC, MVT::x86mmx, Expand); + setOperationAction(ISD::EH_RETURN , MVT::Other, Custom); // NOTE: EH_SJLJ_SETJMP/_LONGJMP supported here is NOT intended to support // SjLj exception handling but a light-weight setjmp/longjmp replacement to @@ -1383,7 +1388,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMa // (result) is 256-bit but the source is 512-bit wide. // 128-bit was made Custom under AVX1. for (auto VT : { MVT::v32i8, MVT::v16i16, MVT::v8i32, MVT::v4i64, - MVT::v8f32, MVT::v4f64 }) + MVT::v8f32, MVT::v4f64, MVT::v1i1 }) setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom); for (auto VT : { MVT::v2i1, MVT::v4i1, MVT::v8i1, MVT::v16i1, MVT::v32i1, MVT::v64i1 }) @@ -14570,6 +14575,21 @@ static SDValue LowerEXTRACT_SUBVECTOR(SDValue Op, cons unsigned IdxVal = cast(Idx)->getZExtValue(); MVT ResVT = Op.getSimpleValueType(); + // When v1i1 is legal a scalarization of a vselect with a vXi1 Cond + // would result with: v1i1 = extract_subvector(vXi1, idx). + // Lower these into extract_vector_elt which is already selectable. + if (ResVT == MVT::v1i1) { + assert(Subtarget.hasAVX512() && + "Boolean EXTRACT_SUBVECTOR requires AVX512"); + + MVT EltVT = ResVT.getVectorElementType(); + const TargetLowering &TLI = DAG.getTargetLoweringInfo(); + MVT LegalVT = + (TLI.getTypeToTransformTo(*DAG.getContext(), EltVT)).getSimpleVT(); + SDValue Res = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, LegalVT, In, Idx); + return DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, ResVT, Res); + } + assert((In.getSimpleValueType().is256BitVector() || In.getSimpleValueType().is512BitVector()) && "Can only extract from 256-bit or 512-bit vectors"); @@ -20651,8 +20671,8 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, cons } // ADC/ADCX/SBB case ADX: { - SDVTList CFVTs = DAG.getVTList(Op->getValueType(0), MVT::Other); - SDVTList VTs = DAG.getVTList(Op.getOperand(3)->getValueType(0), MVT::Other); + SDVTList CFVTs = DAG.getVTList(Op->getValueType(0), MVT::i32); + SDVTList VTs = DAG.getVTList(Op.getOperand(3)->getValueType(0), MVT::i32); SDValue GenCF = DAG.getNode(X86ISD::ADD, dl, CFVTs, Op.getOperand(2), DAG.getConstant(-1, dl, MVT::i8)); SDValue Res = DAG.getNode(IntrData->Opc0, dl, VTs, Op.getOperand(3), @@ -30663,6 +30683,14 @@ static SDValue combineSelect(SDNode *N, SelectionDAG & *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Mon Aug 21 15:39:54 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 11C94DE33E2 for ; Mon, 21 Aug 2017 15:39:54 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id AB37974918; Mon, 21 Aug 2017 15:39:53 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7LFdqXn074749; Mon, 21 Aug 2017 15:39:52 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7LFdnlr074719; Mon, 21 Aug 2017 15:39:49 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201708211539.v7LFdnlr074719@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 21 Aug 2017 15:39:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322754 - in projects/krb5: . bin/pkill contrib/binutils/bfd contrib/binutils/gas/config contrib/libc++/include contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/ExecutionEngi... X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5: . bin/pkill contrib/binutils/bfd contrib/binutils/gas/config contrib/libc++/include contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/ExecutionEngine/Orc contrib/llvm/inclu... X-SVN-Commit-Revision: 322754 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Mon, 21 Aug 2017 15:39:54 -0000 Author: cy Date: Mon Aug 21 15:39:48 2017 New Revision: 322754 URL: https://svnweb.freebsd.org/changeset/base/322754 Log: MFH r322589-r322753, specifically importing r322749 from HEAD. Added: projects/krb5/share/man/man4/wmt.4 - copied unchanged from r322753, head/share/man/man4/wmt.4 projects/krb5/sys/compat/linuxkpi/common/include/asm/msr.h - copied unchanged from r322753, head/sys/compat/linuxkpi/common/include/asm/msr.h projects/krb5/sys/compat/linuxkpi/common/include/linux/atomic.h - copied unchanged from r322753, head/sys/compat/linuxkpi/common/include/linux/atomic.h projects/krb5/sys/dev/usb/input/wmt.c - copied unchanged from r322753, head/sys/dev/usb/input/wmt.c projects/krb5/sys/modules/usb/wmt/ - copied from r322753, head/sys/modules/usb/wmt/ Deleted: projects/krb5/contrib/zstd/examples/ Modified: projects/krb5/Makefile.libcompat projects/krb5/bin/pkill/pkill.c projects/krb5/contrib/binutils/bfd/ecoff.c projects/krb5/contrib/binutils/gas/config/tc-mips.c projects/krb5/contrib/libc++/include/string projects/krb5/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/krb5/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h projects/krb5/contrib/llvm/include/llvm/Object/COFFImportFile.h projects/krb5/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/krb5/contrib/llvm/lib/CodeGen/VirtRegMap.cpp projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp projects/krb5/contrib/llvm/lib/Object/COFFImportFile.cpp projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp projects/krb5/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp projects/krb5/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/krb5/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/krb5/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/krb5/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp projects/krb5/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp projects/krb5/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp projects/krb5/contrib/llvm/tools/clang/include/clang-c/Index.h projects/krb5/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/krb5/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/krb5/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/krb5/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/krb5/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp projects/krb5/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp projects/krb5/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/krb5/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/krb5/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.cpp projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.h projects/krb5/contrib/llvm/tools/clang/lib/Driver/ToolChains/NetBSD.h projects/krb5/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/krb5/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaCast.cpp projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/krb5/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/krb5/contrib/llvm/tools/lld/COFF/Driver.cpp projects/krb5/contrib/llvm/tools/lld/ELF/Driver.cpp projects/krb5/contrib/llvm/tools/lld/ELF/Options.td projects/krb5/contrib/llvm/tools/llvm-objdump/llvm-objdump.cpp projects/krb5/contrib/mdocml/lib.in projects/krb5/etc/periodic/daily/200.backup-passwd projects/krb5/kerberos5/libexec/kpasswdd/Makefile projects/krb5/lib/clang/include/clang/Basic/Version.inc projects/krb5/lib/clang/include/lld/Config/Version.inc projects/krb5/lib/clang/include/llvm/Support/VCSRevision.h projects/krb5/lib/libfetch/common.c projects/krb5/lib/libutil/kinfo_getvmmap.3 projects/krb5/share/man/man4/Makefile projects/krb5/share/man/man4/bge.4 projects/krb5/share/man/man4/ena.4 projects/krb5/share/man/man4/pfsync.4 projects/krb5/share/man/man4/sa.4 projects/krb5/share/man/man4/usb_quirk.4 projects/krb5/share/man/man7/tests.7 projects/krb5/share/man/man9/sbuf.9 projects/krb5/share/misc/bsd-family-tree projects/krb5/sys/amd64/amd64/minidump_machdep.c projects/krb5/sys/amd64/amd64/trap.c projects/krb5/sys/arm/arm/minidump_machdep.c projects/krb5/sys/arm/arm/sc_machdep.c projects/krb5/sys/arm64/arm64/machdep.c projects/krb5/sys/arm64/arm64/minidump_machdep.c projects/krb5/sys/boot/common/part.c projects/krb5/sys/boot/efi/include/efi.h projects/krb5/sys/boot/fdt/dts/arm/bcm2835.dtsi projects/krb5/sys/boot/fdt/dts/arm/bcm2836.dtsi projects/krb5/sys/cam/cam_iosched.c projects/krb5/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/abd.h projects/krb5/sys/compat/linuxkpi/common/include/linux/list.h projects/krb5/sys/compat/linuxkpi/common/src/linux_rcu.c projects/krb5/sys/compat/linuxkpi/common/src/linux_tasklet.c projects/krb5/sys/compat/linuxkpi/common/src/linux_work.c projects/krb5/sys/conf/files projects/krb5/sys/conf/files.arm64 projects/krb5/sys/crypto/aesni/aesni_ghash.c projects/krb5/sys/crypto/aesni/aesni_wrap.c projects/krb5/sys/ddb/db_textdump.c projects/krb5/sys/dev/extres/hwreset/hwreset.h projects/krb5/sys/dev/pci/pci_host_generic.h projects/krb5/sys/dev/safe/safe.c projects/krb5/sys/dev/syscons/scterm-teken.c projects/krb5/sys/dev/syscons/syscons.c projects/krb5/sys/dev/syscons/syscons.h projects/krb5/sys/dev/usb/quirk/usb_quirk.c projects/krb5/sys/dev/usb/quirk/usb_quirk.h projects/krb5/sys/dev/usb/usb_hid.c projects/krb5/sys/dev/usb/usbhid.h projects/krb5/sys/dev/vt/vt_core.c projects/krb5/sys/fs/nfsclient/nfs_clbio.c projects/krb5/sys/fs/nfsclient/nfs_clnode.c projects/krb5/sys/fs/nfsclient/nfs_clport.c projects/krb5/sys/fs/nfsclient/nfs_clsubs.c projects/krb5/sys/fs/nfsclient/nfs_clvnops.c projects/krb5/sys/fs/nfsclient/nfsnode.h projects/krb5/sys/i386/i386/exception.s projects/krb5/sys/i386/i386/minidump_machdep.c projects/krb5/sys/isa/syscons_isa.c projects/krb5/sys/kern/kern_dump.c projects/krb5/sys/kern/kern_shutdown.c projects/krb5/sys/kern/subr_sbuf.c projects/krb5/sys/kern/vfs_subr.c projects/krb5/sys/mips/mips/minidump_machdep.c projects/krb5/sys/mips/mips/sc_machdep.c projects/krb5/sys/modules/Makefile projects/krb5/sys/modules/armv8crypto/Makefile projects/krb5/sys/modules/dtb/rpi/Makefile projects/krb5/sys/modules/usb/Makefile projects/krb5/sys/net/bpf.c projects/krb5/sys/netinet/tcp_usrreq.c projects/krb5/sys/netipsec/ipsec.c projects/krb5/sys/netipsec/ipsec.h projects/krb5/sys/netipsec/ipsec6.h projects/krb5/sys/netipsec/ipsec_output.c projects/krb5/sys/powerpc/powerpc/sc_machdep.c projects/krb5/sys/sparc64/sparc64/dump_machdep.c projects/krb5/sys/sys/conf.h projects/krb5/sys/sys/consio.h projects/krb5/sys/sys/gtaskqueue.h projects/krb5/sys/sys/kernel.h projects/krb5/sys/sys/kerneldump.h projects/krb5/sys/sys/sbuf.h projects/krb5/sys/sys/taskqueue.h projects/krb5/sys/sys/vnode.h projects/krb5/sys/teken/sequences projects/krb5/sys/teken/teken.h projects/krb5/sys/teken/teken_subr_compat.h projects/krb5/sys/x86/cpufreq/hwpstate.c projects/krb5/sys/x86/x86/intr_machdep.c projects/krb5/sys/x86/x86/mp_x86.c projects/krb5/usr.bin/calendar/calendars/calendar.freebsd projects/krb5/usr.bin/grep/util.c projects/krb5/usr.sbin/bootparamd/bootparamd/bootparamd.c projects/krb5/usr.sbin/bootparamd/callbootd/callbootd.c projects/krb5/usr.sbin/pw/pw_user.c projects/krb5/usr.sbin/pw/tests/pw_useradd_test.sh projects/krb5/usr.sbin/pw/tests/pw_usermod_test.sh projects/krb5/usr.sbin/vidcontrol/vidcontrol.1 projects/krb5/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/krb5/ (props changed) projects/krb5/contrib/binutils/ (props changed) projects/krb5/contrib/compiler-rt/ (props changed) projects/krb5/contrib/libc++/ (props changed) projects/krb5/contrib/llvm/ (props changed) projects/krb5/contrib/llvm/tools/clang/ (props changed) projects/krb5/contrib/llvm/tools/lld/ (props changed) projects/krb5/contrib/llvm/tools/lldb/ (props changed) projects/krb5/contrib/mdocml/ (props changed) projects/krb5/contrib/zstd/ (props changed) projects/krb5/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/krb5/Makefile.libcompat ============================================================================== --- projects/krb5/Makefile.libcompat Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/Makefile.libcompat Mon Aug 21 15:39:48 2017 (r322754) @@ -179,7 +179,7 @@ build${libcompat}: .PHONY .endfor ${_+_}cd ${.CURDIR}; \ ${LIBCOMPATWMAKE} -f Makefile.inc1 -DNO_FSCHG libraries -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) .for _t in ${_obj} all ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIBCOMPATWMAKE} \ -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t} @@ -192,7 +192,7 @@ distribute${libcompat} install${libcompat}: .PHONY .for _dir in ${_LC_LIBDIRS.yes} ${_+_}cd ${.CURDIR}/${_dir}; ${LIBCOMPATIMAKE} ${.TARGET:S/${libcompat}$//} .endfor -.if ${libcompat} == "32" +.if ${libcompat} == "32" && !defined(NO_RTLD) ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \ PROG=ld-elf32.so.1 ${LIBCOMPATIMAKE} ${.TARGET:S/32$//} ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIBCOMPATIMAKE} \ Modified: projects/krb5/bin/pkill/pkill.c ============================================================================== --- projects/krb5/bin/pkill/pkill.c Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/bin/pkill/pkill.c Mon Aug 21 15:39:48 2017 (r322754) @@ -568,6 +568,8 @@ main(int argc, char **argv) continue; rv |= (*action)(kp); } + if (rv && pgrep) + putchar('\n'); if (!did_action && !pgrep && longfmt) fprintf(stderr, "No matching processes belonging to you were found\n"); Modified: projects/krb5/contrib/binutils/bfd/ecoff.c ============================================================================== --- projects/krb5/contrib/binutils/bfd/ecoff.c Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/binutils/bfd/ecoff.c Mon Aug 21 15:39:48 2017 (r322754) @@ -1878,7 +1878,7 @@ _bfd_ecoff_sizeof_headers (bfd *abfd, ret = (bfd_coff_filhsz (abfd) + bfd_coff_aoutsz (abfd) + c * bfd_coff_scnhsz (abfd)); - return BFD_ALIGN (ret, 16); + return (int) BFD_ALIGN (ret, 16); } /* Get the contents of a section. */ Modified: projects/krb5/contrib/binutils/gas/config/tc-mips.c ============================================================================== --- projects/krb5/contrib/binutils/gas/config/tc-mips.c Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/binutils/gas/config/tc-mips.c Mon Aug 21 15:39:48 2017 (r322754) @@ -2920,7 +2920,7 @@ append_insn (struct mips_cl_insn *ip, expressionS *add instruction. May want to add this support in the future. */ } /* Never set the bit for $0, which is always zero. */ - mips_gprmask &= ~1 << 0; + mips_gprmask &= ~(1 << 0); } else { @@ -3310,7 +3310,7 @@ macro_end (void) warning now. */ const char *msg = macro_warning (subtype); if (msg != 0) - as_warn (msg); + as_warn ("%s", msg); } else { @@ -14463,7 +14463,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec { const char *msg = macro_warning (fragp->fr_subtype); if (msg != 0) - as_warn_where (fragp->fr_file, fragp->fr_line, msg); + as_warn_where (fragp->fr_file, fragp->fr_line, "%s", msg); } /* Go through all the fixups for the first sequence. Disable them Modified: projects/krb5/contrib/libc++/include/string ============================================================================== --- projects/krb5/contrib/libc++/include/string Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/libc++/include/string Mon Aug 21 15:39:48 2017 (r322754) @@ -556,6 +556,8 @@ template operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) + template class _LIBCPP_TEMPLATE_VIS __basic_string_common { @@ -3999,7 +4001,6 @@ basic_string<_CharT, _Traits, _Allocator>::__subscript _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) #if _LIBCPP_STD_VER > 11 // Literal suffixes for basic_string [basic.string.literals] Modified: projects/krb5/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Aug 21 15:39:48 2017 (r322754) @@ -1220,8 +1220,9 @@ class SelectionDAG { (public) /// If an existing load has uses of its chain, create a token factor node with /// that chain and the new memory node's chain and update users of the old /// chain to the token factor. This ensures that the new memory node will have - /// the same relative memory dependency position as the old load. - void makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); + /// the same relative memory dependency position as the old load. Returns the + /// new merged load chain. + SDValue makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); /// Topological-sort the AllNodes list and a /// assign a unique node id for each node in the DAG based on their Modified: projects/krb5/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Mon Aug 21 15:39:48 2017 (r322754) @@ -94,9 +94,9 @@ template class LazyEmittingLayer llvm_unreachable("Invalid emit-state."); } - void removeModuleFromBaseLayer(BaseLayerT &BaseLayer) { - if (EmitState != NotEmitted) - BaseLayer.removeModule(Handle); + Error removeModuleFromBaseLayer(BaseLayerT& BaseLayer) { + return EmitState != NotEmitted ? BaseLayer.removeModule(Handle) + : Error::success(); } void emitAndFinalize(BaseLayerT &BaseLayer) { @@ -226,9 +226,9 @@ template class LazyEmittingLayer /// This method will free the memory associated with the given module, both /// in this layer, and the base layer. Error removeModule(ModuleHandleT H) { - (*H)->removeModuleFromBaseLayer(BaseLayer); + Error Err = (*H)->removeModuleFromBaseLayer(BaseLayer); ModuleList.erase(H); - return Error::success(); + return Err; } /// @brief Search for the given named symbol. Modified: projects/krb5/contrib/llvm/include/llvm/Object/COFFImportFile.h ============================================================================== --- projects/krb5/contrib/llvm/include/llvm/Object/COFFImportFile.h Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/include/llvm/Object/COFFImportFile.h Mon Aug 21 15:39:48 2017 (r322754) @@ -73,6 +73,7 @@ class COFFImportFile : public SymbolicFile { (private) struct COFFShortExport { std::string Name; std::string ExtName; + std::string SymbolName; uint16_t Ordinal = 0; bool Noname = false; @@ -98,7 +99,8 @@ struct COFFShortExport { std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - COFF::MachineTypes Machine); + COFF::MachineTypes Machine, + bool MakeWeakAliases); } // namespace object } // namespace llvm Modified: projects/krb5/contrib/llvm/lib/Analysis/ScalarEvolution.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -162,6 +162,11 @@ static cl::opt cl::desc("Maximum depth of recursive SExt/ZExt"), cl::init(8)); +static cl::opt + MaxAddRecSize("scalar-evolution-max-add-rec-size", cl::Hidden, + cl::desc("Max coefficients in AddRec during evolving"), + cl::init(16)); + //===----------------------------------------------------------------------===// // SCEV class definitions //===----------------------------------------------------------------------===// @@ -2878,6 +2883,12 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImp if (!OtherAddRec || OtherAddRec->getLoop() != AddRecLoop) continue; + // Limit max number of arguments to avoid creation of unreasonably big + // SCEVAddRecs with very complex operands. + if (AddRec->getNumOperands() + OtherAddRec->getNumOperands() - 1 > + MaxAddRecSize) + continue; + bool Overflow = false; Type *Ty = AddRec->getType(); bool LargerThan64Bits = getTypeSizeInBits(Ty) > 64; @@ -7582,6 +7593,25 @@ const SCEV *ScalarEvolution::computeSCEVAtScope(const const SCEV *BackedgeTakenCount = getBackedgeTakenCount(LI); if (const SCEVConstant *BTCC = dyn_cast(BackedgeTakenCount)) { + + // This trivial case can show up in some degenerate cases where + // the incoming IR has not yet been fully simplified. + if (BTCC->getValue()->isZero()) { + Value *InitValue = nullptr; + bool MultipleInitValues = false; + for (unsigned i = 0; i < PN->getNumIncomingValues(); i++) { + if (!LI->contains(PN->getIncomingBlock(i))) { + if (!InitValue) + InitValue = PN->getIncomingValue(i); + else if (InitValue != PN->getIncomingValue(i)) { + MultipleInitValues = true; + break; + } + } + if (!MultipleInitValues && InitValue) + return getSCEV(InitValue); + } + } // Okay, we know how many times the containing loop executes. If // this is a constant evolving PHI node, get the final value at // the specified iteration number. Modified: projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Analysis/ValueTracking.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -4458,6 +4458,10 @@ Optional llvm::isImpliedCondition(const Value *L unsigned Depth, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT) { + // Bail out when we hit the limit. + if (Depth == MaxDepth) + return None; + // A mismatch occurs when we compare a scalar cmp to a vector cmp, for example. if (LHS->getType() != RHS->getType()) return None; Modified: projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -302,7 +302,21 @@ SDValue DAGTypeLegalizer::ScalarizeVecRes_SCALAR_TO_VE } SDValue DAGTypeLegalizer::ScalarizeVecRes_VSELECT(SDNode *N) { - SDValue Cond = GetScalarizedVector(N->getOperand(0)); + SDValue Cond = N->getOperand(0); + EVT OpVT = Cond.getValueType(); + SDLoc DL(N); + // The vselect result and true/value operands needs scalarizing, but it's + // not a given that the Cond does. For instance, in AVX512 v1i1 is legal. + // See the similar logic in ScalarizeVecRes_VSETCC + if (getTypeAction(OpVT) == TargetLowering::TypeScalarizeVector) { + Cond = GetScalarizedVector(Cond); + } else { + EVT VT = OpVT.getVectorElementType(); + Cond = DAG.getNode( + ISD::EXTRACT_VECTOR_ELT, DL, VT, Cond, + DAG.getConstant(0, DL, TLI.getVectorIdxTy(DAG.getDataLayout()))); + } + SDValue LHS = GetScalarizedVector(N->getOperand(1)); TargetLowering::BooleanContent ScalarBool = TLI.getBooleanContents(false, false); Modified: projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -7262,22 +7262,23 @@ void SelectionDAG::TransferDbgValues(SDValue From, SDV AddDbgValue(I, ToNode, false); } -void SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, - SDValue NewMemOp) { +SDValue SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, + SDValue NewMemOp) { assert(isa(NewMemOp.getNode()) && "Expected a memop node"); - if (!OldLoad->hasAnyUseOfValue(1)) - return; - // The new memory operation must have the same position as the old load in // terms of memory dependency. Create a TokenFactor for the old load and new // memory operation and update uses of the old load's output chain to use that // TokenFactor. SDValue OldChain = SDValue(OldLoad, 1); SDValue NewChain = SDValue(NewMemOp.getNode(), 1); + if (!OldLoad->hasAnyUseOfValue(1)) + return NewChain; + SDValue TokenFactor = getNode(ISD::TokenFactor, SDLoc(OldLoad), MVT::Other, OldChain, NewChain); ReplaceAllUsesOfValueWith(OldChain, TokenFactor); UpdateNodeOperands(TokenFactor.getNode(), OldChain, NewChain); + return TokenFactor; } //===----------------------------------------------------------------------===// Modified: projects/krb5/contrib/llvm/lib/CodeGen/VirtRegMap.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -180,6 +180,7 @@ class VirtRegRewriter : public MachineFunctionPass { void addLiveInsForSubRanges(const LiveInterval &LI, unsigned PhysReg) const; void handleIdentityCopy(MachineInstr &MI) const; void expandCopyBundle(MachineInstr &MI) const; + bool subRegLiveThrough(const MachineInstr &MI, unsigned SuperPhysReg) const; public: static char ID; @@ -415,6 +416,32 @@ void VirtRegRewriter::expandCopyBundle(MachineInstr &M } } +/// Check whether (part of) \p SuperPhysReg is live through \p MI. +/// \pre \p MI defines a subregister of a virtual register that +/// has been assigned to \p SuperPhysReg. +bool VirtRegRewriter::subRegLiveThrough(const MachineInstr &MI, + unsigned SuperPhysReg) const { + SlotIndex MIIndex = LIS->getInstructionIndex(MI); + SlotIndex BeforeMIUses = MIIndex.getBaseIndex(); + SlotIndex AfterMIDefs = MIIndex.getBoundaryIndex(); + for (MCRegUnitIterator Unit(SuperPhysReg, TRI); Unit.isValid(); ++Unit) { + const LiveRange &UnitRange = LIS->getRegUnit(*Unit); + // If the regunit is live both before and after MI, + // we assume it is live through. + // Generally speaking, this is not true, because something like + // "RU = op RU" would match that description. + // However, we know that we are trying to assess whether + // a def of a virtual reg, vreg, is live at the same time of RU. + // If we are in the "RU = op RU" situation, that means that vreg + // is defined at the same time as RU (i.e., "vreg, RU = op RU"). + // Thus, vreg and RU interferes and vreg cannot be assigned to + // SuperPhysReg. Therefore, this situation cannot happen. + if (UnitRange.liveAt(AfterMIDefs) && UnitRange.liveAt(BeforeMIUses)) + return true; + } + return false; +} + void VirtRegRewriter::rewrite() { bool NoSubRegLiveness = !MRI->subRegLivenessEnabled(); SmallVector SuperDeads; @@ -452,7 +479,8 @@ void VirtRegRewriter::rewrite() { // A virtual register kill refers to the whole register, so we may // have to add operands for the super-register. A // partial redef always kills and redefines the super-register. - if (MO.readsReg() && (MO.isDef() || MO.isKill())) + if ((MO.readsReg() && (MO.isDef() || MO.isKill())) || + (MO.isDef() && subRegLiveThrough(*MI, PhysReg))) SuperKills.push_back(PhysReg); if (MO.isDef()) { Modified: projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -134,13 +134,13 @@ dumpDWARFv5StringOffsetsSection(raw_ostream &OS, Strin uint64_t StringOffset = StrOffsetExt.getRelocatedValue(EntrySize, &Offset); if (Format == DWARF32) { - OS << format("%8.8x ", StringOffset); uint32_t StringOffset32 = (uint32_t)StringOffset; + OS << format("%8.8x ", StringOffset32); const char *S = StrData.getCStr(&StringOffset32); if (S) OS << format("\"%s\"", S); } else - OS << format("%16.16x ", StringOffset); + OS << format("%16.16" PRIx64 " ", StringOffset); OS << "\n"; } } Modified: projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -196,7 +196,7 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const ++NumErrors; OS << "error: DW_AT_stmt_list offset is beyond .debug_line " "bounds: " - << format("0x%08" PRIx32, *SectionOffset) << "\n"; + << format("0x%08" PRIx64, *SectionOffset) << "\n"; Die.dump(OS, 0); OS << "\n"; } @@ -234,7 +234,7 @@ unsigned DWARFVerifier::verifyDebugInfoForm(const DWAR if (CUOffset >= CUSize) { ++NumErrors; OS << "error: " << FormEncodingString(Form) << " CU offset " - << format("0x%08" PRIx32, CUOffset) + << format("0x%08" PRIx64, CUOffset) << " is invalid (must be less than CU size of " << format("0x%08" PRIx32, CUSize) << "):\n"; Die.dump(OS, 0); @@ -366,7 +366,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.Address < PrevAddress) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "] row[" << RowIndex << "] decreases in address from previous row:\n"; @@ -381,7 +381,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.File > MaxFileIndex) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "][" << RowIndex << "] has invalid file index " << Row.File << " (valid values are [1," << MaxFileIndex << "]):\n"; Modified: projects/krb5/contrib/llvm/lib/Object/COFFImportFile.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Object/COFFImportFile.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Object/COFFImportFile.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -557,7 +557,7 @@ NewArchiveMember ObjectFactory::createWeakExternal(Str std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - MachineTypes Machine) { + MachineTypes Machine, bool MakeWeakAliases) { std::vector Members; ObjectFactory OF(llvm::sys::path::filename(ImportName), Machine); @@ -575,7 +575,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Private) continue; - if (E.isWeak()) { + if (E.isWeak() && MakeWeakAliases) { Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, false)); Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, true)); continue; @@ -587,7 +587,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Constant) ImportType = IMPORT_CONST; - StringRef SymbolName = E.isWeak() ? E.ExtName : E.Name; + StringRef SymbolName = E.SymbolName.empty() ? E.Name : E.SymbolName; ImportNameType NameType = getNameType(SymbolName, E.Name, Machine); Expected Name = E.ExtName.empty() ? SymbolName Modified: projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -388,6 +388,10 @@ static unsigned isMatchingStore(MachineInstr &LoadInst } static unsigned getPreIndexedOpcode(unsigned Opc) { + // FIXME: We don't currently support creating pre-indexed loads/stores when + // the load or store is the unscaled version. If we decide to perform such an + // optimization in the future the cases for the unscaled loads/stores will + // need to be added here. switch (Opc) { default: llvm_unreachable("Opcode has no pre-indexed equivalent!"); @@ -451,32 +455,42 @@ static unsigned getPostIndexedOpcode(unsigned Opc) { default: llvm_unreachable("Opcode has no post-indexed wise equivalent!"); case AArch64::STRSui: + case AArch64::STURSi: return AArch64::STRSpost; case AArch64::STRDui: + case AArch64::STURDi: return AArch64::STRDpost; case AArch64::STRQui: + case AArch64::STURQi: return AArch64::STRQpost; case AArch64::STRBBui: return AArch64::STRBBpost; case AArch64::STRHHui: return AArch64::STRHHpost; case AArch64::STRWui: + case AArch64::STURWi: return AArch64::STRWpost; case AArch64::STRXui: + case AArch64::STURXi: return AArch64::STRXpost; case AArch64::LDRSui: + case AArch64::LDURSi: return AArch64::LDRSpost; case AArch64::LDRDui: + case AArch64::LDURDi: return AArch64::LDRDpost; case AArch64::LDRQui: + case AArch64::LDURQi: return AArch64::LDRQpost; case AArch64::LDRBBui: return AArch64::LDRBBpost; case AArch64::LDRHHui: return AArch64::LDRHHpost; case AArch64::LDRWui: + case AArch64::LDURWi: return AArch64::LDRWpost; case AArch64::LDRXui: + case AArch64::LDURXi: return AArch64::LDRXpost; case AArch64::LDRSWui: return AArch64::LDRSWpost; @@ -1694,8 +1708,9 @@ bool AArch64LoadStoreOpt::optimizeBlock(MachineBasicBl ++NumPostFolded; break; } - // Don't know how to handle pre/post-index versions, so move to the next - // instruction. + + // Don't know how to handle unscaled pre/post-index versions below, so + // move to the next instruction. if (TII->isUnscaledLdSt(Opc)) { ++MBBI; break; Modified: projects/krb5/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -769,8 +769,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); const MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -797,23 +796,9 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock } // .Lloadcmp: - // mov wStatus, #0 // ldrex rDest, [rAddr] // cmp rDest, rDesired // bne .Ldone - if (!StatusDead) { - if (IsThumb) { - BuildMI(LoadCmpBB, DL, TII->get(ARM::tMOVi8), StatusReg) - .addDef(ARM::CPSR, RegState::Dead) - .addImm(0) - .add(predOps(ARMCC::AL)); - } else { - BuildMI(LoadCmpBB, DL, TII->get(ARM::MOVi), StatusReg) - .addImm(0) - .add(predOps(ARMCC::AL)) - .add(condCodeOp()); - } - } MachineInstrBuilder MIB; MIB = BuildMI(LoadCmpBB, DL, TII->get(LdrexOp), Dest.getReg()); @@ -836,10 +821,10 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strex rStatus, rNew, [rAddr] - // cmp rStatus, #0 + // strex rTempReg, rNew, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp - MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), StatusReg) + MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), TempReg) .addReg(NewReg) .addReg(AddrReg); if (StrexOp == ARM::t2STREX) @@ -848,7 +833,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) @@ -904,8 +889,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -931,7 +915,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl // .Lloadcmp: // ldrexd rDestLo, rDestHi, [rAddr] // cmp rDestLo, rDesiredLo - // sbcs rStatus, rDestHi, rDesiredHi + // sbcs rTempReg, rDestHi, rDesiredHi // bne .Ldone unsigned LDREXD = IsThumb ? ARM::t2LDREXD : ARM::LDREXD; MachineInstrBuilder MIB; @@ -959,17 +943,17 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strexd rStatus, rNewLo, rNewHi, [rAddr] - // cmp rStatus, #0 + // strexd rTempReg, rNewLo, rNewHi, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp unsigned STREXD = IsThumb ? ARM::t2STREXD : ARM::STREXD; - MIB = BuildMI(StoreBB, DL, TII->get(STREXD), StatusReg); + MIB = BuildMI(StoreBB, DL, TII->get(STREXD), TempReg); addExclusiveRegPair(MIB, New, 0, IsThumb, TRI); MIB.addReg(AddrReg).add(predOps(ARMCC::AL)); unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) Modified: projects/krb5/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td ============================================================================== --- projects/krb5/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td Mon Aug 21 15:39:48 2017 (r322754) @@ -6053,21 +6053,21 @@ def SPACE : PseudoInst<(outs GPR:$Rd), (ins i32imm:$si // significantly more naive than the standard expansion: we conservatively // assume seq_cst, strong cmpxchg and omit clrex on failure. -let Constraints = "@earlyclobber $Rd,@earlyclobber $status", +let Constraints = "@earlyclobber $Rd,@earlyclobber $temp", mayLoad = 1, mayStore = 1 in { -def CMP_SWAP_8 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_8 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_16 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_16 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_32 : PseudoInst<(outs GPR:$Rd, GPR:$status), +def CMP_SWAP_32 : PseudoInst<(outs GPR:$Rd, GPR:$temp), (ins GPR:$addr, GPR:$desired, GPR:$new), NoItinerary, []>, Sched<[]>; -def CMP_SWAP_64 : PseudoInst<(outs GPRPair:$Rd, GPR:$status), +def CMP_SWAP_64 : PseudoInst<(outs GPRPair:$Rd, GPR:$temp), (ins GPR:$addr, GPRPair:$desired, GPRPair:$new), NoItinerary, []>, Sched<[]>; } Modified: projects/krb5/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -419,6 +419,11 @@ X86TargetLowering::X86TargetLowering(const X86TargetMa setOperationAction(ISD::SELECT, VT, Custom); setOperationAction(ISD::SETCC, VT, Custom); } + + // Custom action for SELECT MMX and expand action for SELECT_CC MMX + setOperationAction(ISD::SELECT, MVT::x86mmx, Custom); + setOperationAction(ISD::SELECT_CC, MVT::x86mmx, Expand); + setOperationAction(ISD::EH_RETURN , MVT::Other, Custom); // NOTE: EH_SJLJ_SETJMP/_LONGJMP supported here is NOT intended to support // SjLj exception handling but a light-weight setjmp/longjmp replacement to @@ -1383,7 +1388,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMa // (result) is 256-bit but the source is 512-bit wide. // 128-bit was made Custom under AVX1. for (auto VT : { MVT::v32i8, MVT::v16i16, MVT::v8i32, MVT::v4i64, - MVT::v8f32, MVT::v4f64 }) + MVT::v8f32, MVT::v4f64, MVT::v1i1 }) setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Custom); for (auto VT : { MVT::v2i1, MVT::v4i1, MVT::v8i1, MVT::v16i1, MVT::v32i1, MVT::v64i1 }) @@ -14570,6 +14575,21 @@ static SDValue LowerEXTRACT_SUBVECTOR(SDValue Op, cons unsigned IdxVal = cast(Idx)->getZExtValue(); MVT ResVT = Op.getSimpleValueType(); + // When v1i1 is legal a scalarization of a vselect with a vXi1 Cond + // would result with: v1i1 = extract_subvector(vXi1, idx). + // Lower these into extract_vector_elt which is already selectable. + if (ResVT == MVT::v1i1) { + assert(Subtarget.hasAVX512() && + "Boolean EXTRACT_SUBVECTOR requires AVX512"); + + MVT EltVT = ResVT.getVectorElementType(); + const TargetLowering &TLI = DAG.getTargetLoweringInfo(); + MVT LegalVT = + (TLI.getTypeToTransformTo(*DAG.getContext(), EltVT)).getSimpleVT(); + SDValue Res = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl, LegalVT, In, Idx); + return DAG.getNode(ISD::SCALAR_TO_VECTOR, dl, ResVT, Res); + } + assert((In.getSimpleValueType().is256BitVector() || In.getSimpleValueType().is512BitVector()) && "Can only extract from 256-bit or 512-bit vectors"); @@ -20651,8 +20671,8 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, cons } // ADC/ADCX/SBB case ADX: { - SDVTList CFVTs = DAG.getVTList(Op->getValueType(0), MVT::Other); - SDVTList VTs = DAG.getVTList(Op.getOperand(3)->getValueType(0), MVT::Other); + SDVTList CFVTs = DAG.getVTList(Op->getValueType(0), MVT::i32); + SDVTList VTs = DAG.getVTList(Op.getOperand(3)->getValueType(0), MVT::i32); SDValue GenCF = DAG.getNode(X86ISD::ADD, dl, CFVTs, Op.getOperand(2), DAG.getConstant(-1, dl, MVT::i8)); SDValue Res = DAG.getNode(IntrData->Opc0, dl, VTs, Op.getOperand(3), @@ -30663,6 +30683,14 @@ static SDValue combineSelect(SDNode *N, SelectionDAG & return SDValue(N, 0); } + // Custom action for SELECT MMX + if (VT == MVT::x86mmx) { + LHS = DAG.getBitcast(MVT::i64, LHS); + RHS = DAG.getBitcast(MVT::i64, RHS); + SDValue newSelect = DAG.getNode(ISD::SELECT, DL, MVT::i64, Cond, LHS, RHS); + return DAG.getBitcast(VT, newSelect); + } + return SDValue(); } @@ -33358,7 +33386,8 @@ static SDValue combineStore(SDNode *N, SelectionDAG &D SDValue NewLd = DAG.getLoad(LdVT, LdDL, Ld->getChain(), Ld->getBasePtr(), Ld->getPointerInfo(), Ld->getAlignment(), Ld->getMemOperand()->getFlags()); - SDValue NewChain = NewLd.getValue(1); + // Make sure new load is placed in same chain order. + SDValue NewChain = DAG.makeEquivalentMemoryOrdering(Ld, NewLd); if (TokenFactorIndex >= 0) { Ops.push_back(NewChain); NewChain = DAG.getNode(ISD::TokenFactor, LdDL, MVT::Other, Ops); @@ -33379,11 +33408,12 @@ static SDValue combineStore(SDNode *N, SelectionDAG &D Ld->getPointerInfo().getWithOffset(4), MinAlign(Ld->getAlignment(), 4), Ld->getMemOperand()->getFlags()); + // Make sure new loads are placed in same chain order. + SDValue NewChain = DAG.makeEquivalentMemoryOrdering(Ld, LoLd); + NewChain = DAG.makeEquivalentMemoryOrdering(Ld, HiLd); - SDValue NewChain = LoLd.getValue(1); if (TokenFactorIndex >= 0) { - Ops.push_back(LoLd); - Ops.push_back(HiLd); + Ops.push_back(NewChain); NewChain = DAG.getNode(ISD::TokenFactor, LdDL, MVT::Other, Ops); } Modified: projects/krb5/contrib/llvm/lib/Target/X86/X86InstrAVX512.td ============================================================================== --- projects/krb5/contrib/llvm/lib/Target/X86/X86InstrAVX512.td Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Target/X86/X86InstrAVX512.td Mon Aug 21 15:39:48 2017 (r322754) @@ -978,6 +978,44 @@ multiclass avx512_int_broadcast_reg opc, X86Ve (_.VT (OpNode SrcRC:$src))>, T8PD, EVEX; } +multiclass avx512_int_broadcastbw_reg opc, string Name, + X86VectorVTInfo _, SDPatternOperator OpNode, + RegisterClass SrcRC, SubRegIndex Subreg> { + let ExeDomain = _.ExeDomain in + defm r : AVX512_maskable_custom, T8PD, EVEX; + + def : Pat <(_.VT (OpNode SrcRC:$src)), + (!cast(Name#r) + (i32 (INSERT_SUBREG (i32 (IMPLICIT_DEF)), SrcRC:$src, Subreg)))>; + + def : Pat <(vselect _.KRCWM:$mask, (_.VT (OpNode SrcRC:$src)), _.RC:$src0), + (!cast(Name#rk) _.RC:$src0, _.KRCWM:$mask, + (i32 (INSERT_SUBREG (i32 (IMPLICIT_DEF)), SrcRC:$src, Subreg)))>; + + def : Pat <(vselect _.KRCWM:$mask, (_.VT (OpNode SrcRC:$src)), _.ImmAllZerosV), + (!cast(Name#rkz) _.KRCWM:$mask, + (i32 (INSERT_SUBREG (i32 (IMPLICIT_DEF)), SrcRC:$src, Subreg)))>; +} + +multiclass avx512_int_broadcastbw_reg_vl opc, string Name, + AVX512VLVectorVTInfo _, SDPatternOperator OpNode, + RegisterClass SrcRC, SubRegIndex Subreg, Predicate prd> { + let Predicates = [prd] in + defm Z : avx512_int_broadcastbw_reg, EVEX_V512; + let Predicates = [prd, HasVLX] in { + defm Z256 : avx512_int_broadcastbw_reg, EVEX_V256; + defm Z128 : avx512_int_broadcastbw_reg, EVEX_V128; + } +} + multiclass avx512_int_broadcast_reg_vl opc, AVX512VLVectorVTInfo _, SDPatternOperator OpNode, RegisterClass SrcRC, Predicate prd> { @@ -989,18 +1027,11 @@ multiclass avx512_int_broadcast_reg_vl opc, AV } } -let isCodeGenOnly = 1 in { -defm VPBROADCASTBr : avx512_int_broadcast_reg_vl<0x7A, avx512vl_i8_info, - X86VBroadcast, GR8, HasBWI>; -defm VPBROADCASTWr : avx512_int_broadcast_reg_vl<0x7B, avx512vl_i16_info, - X86VBroadcast, GR16, HasBWI>; -} -let isAsmParserOnly = 1 in { - defm VPBROADCASTBr_Alt : avx512_int_broadcast_reg_vl<0x7A, avx512vl_i8_info, - null_frag, GR32, HasBWI>; - defm VPBROADCASTWr_Alt : avx512_int_broadcast_reg_vl<0x7B, avx512vl_i16_info, - null_frag, GR32, HasBWI>; -} +defm VPBROADCASTBr : avx512_int_broadcastbw_reg_vl<0x7A, "VPBROADCASTBr", + avx512vl_i8_info, X86VBroadcast, GR8, sub_8bit, HasBWI>; +defm VPBROADCASTWr : avx512_int_broadcastbw_reg_vl<0x7B, "VPBROADCASTWr", + avx512vl_i16_info, X86VBroadcast, GR16, sub_16bit, + HasBWI>; defm VPBROADCASTDr : avx512_int_broadcast_reg_vl<0x7C, avx512vl_i32_info, X86VBroadcast, GR32, HasAVX512>; defm VPBROADCASTQr : avx512_int_broadcast_reg_vl<0x7C, avx512vl_i64_info, Modified: projects/krb5/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -60,11 +60,13 @@ std::vector> OwningMBs; // Opens a file. Path has to be resolved already. // Newly created memory buffers are owned by this driver. -MemoryBufferRef openFile(StringRef Path) { +Optional openFile(StringRef Path) { ErrorOr> MB = MemoryBuffer::getFile(Path); - if (std::error_code EC = MB.getError()) + if (std::error_code EC = MB.getError()) { llvm::errs() << "fail openFile: " << EC.message() << "\n"; + return None; + } MemoryBufferRef MBRef = MB.get()->getMemBufferRef(); OwningMBs.push_back(std::move(MB.get())); // take ownership @@ -114,11 +116,16 @@ int llvm::dlltoolDriverMain(llvm::ArrayRefgetSpelling() << "\n"; - MemoryBufferRef MB; - if (auto *Arg = Args.getLastArg(OPT_d)) - MB = openFile(Arg->getValue()); + if (!Args.hasArg(OPT_d)) { + llvm::errs() << "no definition file specified\n"; + return 1; + } - if (!MB.getBufferSize()) { + Optional MB = openFile(Args.getLastArg(OPT_d)->getValue()); + if (!MB) + return 1; + + if (!MB->getBufferSize()) { llvm::errs() << "definition file empty\n"; return 1; } @@ -133,7 +140,7 @@ int llvm::dlltoolDriverMain(llvm::ArrayRef Def = - parseCOFFModuleDefinition(MB, Machine, true); + parseCOFFModuleDefinition(*MB, Machine, true); if (!Def) { llvm::errs() << "error parsing definition\n" @@ -154,7 +161,7 @@ int llvm::dlltoolDriverMain(llvm::ArrayRefOutputFile); - if (writeImportLibrary(Def->OutputFile, Path, Def->Exports, Machine)) + if (writeImportLibrary(Def->OutputFile, Path, Def->Exports, Machine, true)) return 1; return 0; } Modified: projects/krb5/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -1470,6 +1470,7 @@ void DFSanVisitor::visitCallSite(CallSite CS) { } i = CS.arg_begin(); + const unsigned ShadowArgStart = Args.size(); for (unsigned n = FT->getNumParams(); n != 0; ++i, --n) Args.push_back(DFSF.getShadow(*i)); @@ -1504,6 +1505,15 @@ void DFSanVisitor::visitCallSite(CallSite CS) { CallInst *CustomCI = IRB.CreateCall(CustomF, Args); CustomCI->setCallingConv(CI->getCallingConv()); CustomCI->setAttributes(CI->getAttributes()); + + // Update the parameter attributes of the custom call instruction to + // zero extend the shadow parameters. This is required for targets + // which consider ShadowTy an illegal type. + for (unsigned n = 0; n < FT->getNumParams(); n++) { + const unsigned ArgNo = ShadowArgStart + n; + if (CustomCI->getArgOperand(ArgNo)->getType() == DFSF.DFS.ShadowTy) + CustomCI->addParamAttr(ArgNo, Attribute::ZExt); + } if (!FT->getReturnType()->isVoidTy()) { LoadInst *LabelLoad = IRB.CreateLoad(DFSF.LabelReturnAlloca); Modified: projects/krb5/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp ============================================================================== --- projects/krb5/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp Mon Aug 21 15:39:48 2017 (r322754) @@ -15,6 +15,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Transforms/Scalar/BDCE.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/DemandedBits.h" @@ -35,6 +36,46 @@ using namespace llvm; STATISTIC(NumRemoved, "Number of instructions removed (unused)"); STATISTIC(NumSimplified, "Number of instructions trivialized (dead bits)"); +/// If an instruction is trivialized (dead), then the chain of users of that +/// instruction may need to be cleared of assumptions that can no longer be +/// guaranteed correct. +static void clearAssumptionsOfUsers(Instruction *I, DemandedBits &DB) { + assert(I->getType()->isIntegerTy() && "Trivializing a non-integer value?"); + + // Initialize the worklist with eligible direct users. + SmallVector WorkList; + for (User *JU : I->users()) { + // If all bits of a user are demanded, then we know that nothing below that + // in the def-use chain needs to be changed. + auto *J = dyn_cast(JU); + if (J && !DB.getDemandedBits(J).isAllOnesValue()) + WorkList.push_back(J); + } + + // DFS through subsequent users while tracking visits to avoid cycles. + SmallPtrSet Visited; + while (!WorkList.empty()) { + Instruction *J = WorkList.pop_back_val(); + + // NSW, NUW, and exact are based on operands that might have changed. + J->dropPoisonGeneratingFlags(); + + // We do not have to worry about llvm.assume or range metadata: + // 1. llvm.assume demands its operand, so trivializing can't change it. + // 2. range metadata only applies to memory accesses which demand all bits. + + Visited.insert(J); + + for (User *KU : J->users()) { + // If all bits of a user are demanded, then we know that nothing below + // that in the def-use chain needs to be changed. + auto *K = dyn_cast(KU); + if (K && !Visited.count(K) && !DB.getDemandedBits(K).isAllOnesValue()) + WorkList.push_back(K); + } + } +} + static bool bitTrackingDCE(Function &F, DemandedBits &DB) { SmallVector Worklist; bool Changed = false; @@ -51,6 +92,9 @@ static bool bitTrackingDCE(Function &F, DemandedBits & // replacing all uses with something else. Then, if they don't need to // remain live (because they have side effects, etc.) we can remove them. DEBUG(dbgs() << "BDCE: Trivializing: " << I << " (all bits dead)\n"); + + clearAssumptionsOfUsers(&I, DB); + // FIXME: In theory we could substitute undef here instead of zero. // This should be reconsidered once we settle on the semantics of // undef, poison, etc. Modified: projects/krb5/contrib/llvm/tools/clang/include/clang-c/Index.h ============================================================================== --- projects/krb5/contrib/llvm/tools/clang/include/clang-c/Index.h Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/tools/clang/include/clang-c/Index.h Mon Aug 21 15:39:48 2017 (r322754) @@ -3206,6 +3206,8 @@ enum CXCallingConv { CXCallingConv_X86RegCall = 8, CXCallingConv_IntelOclBicc = 9, CXCallingConv_Win64 = 10, + /* Alias for compatibility with older versions of API. */ + CXCallingConv_X86_64Win64 = CXCallingConv_Win64, CXCallingConv_X86_64SysV = 11, CXCallingConv_X86VectorCall = 12, CXCallingConv_Swift = 13, Modified: projects/krb5/contrib/llvm/tools/clang/include/clang/AST/Decl.h ============================================================================== --- projects/krb5/contrib/llvm/tools/clang/include/clang/AST/Decl.h Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/tools/clang/include/clang/AST/Decl.h Mon Aug 21 15:39:48 2017 (r322754) @@ -1666,8 +1666,7 @@ class FunctionDecl : public DeclaratorDecl, public Dec unsigned HasSkippedBody : 1; /// Indicates if the function declaration will have a body, once we're done - /// parsing it. (We don't set it to false when we're done parsing, in the - /// hopes this is simpler.) + /// parsing it. unsigned WillHaveBody : 1; /// \brief End part of this FunctionDecl's source range. Modified: projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td ============================================================================== --- projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td Mon Aug 21 15:39:48 2017 (r322754) @@ -138,9 +138,10 @@ def err_drv_cc_print_options_failure : Error< def err_drv_lto_without_lld : Error<"LTO requires -fuse-ld=lld">; def err_drv_preamble_format : Error< "incorrect format for -preamble-bytes=N,END">; -def err_invalid_ios_deployment_target : Error< +def warn_invalid_ios_deployment_target : Warning< "invalid iOS deployment version '%0', iOS 10 is the maximum deployment " - "target for 32-bit targets">; + "target for 32-bit targets">, InGroup, + DefaultError; def err_drv_conflicting_deployment_targets : Error< "conflicting deployment targets, both '%0' and '%1' are present in environment">; def err_arc_unsupported_on_runtime : Error< Modified: projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td ============================================================================== --- projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td Mon Aug 21 15:11:58 2017 (r322753) +++ projects/krb5/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td Mon Aug 21 15:39:48 2017 (r322754) @@ -151,9 +151,13 @@ def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexi def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">; def FormatExtraArgs : DiagGroup<"format-extra-args">; def FormatZeroLength : DiagGroup<"format-zero-length">; -def CXX1zCompatMangling : DiagGroup<"c++1z-compat-mangling">; + +def InvalidIOSDeploymentTarget : DiagGroup<"invalid-ios-deployment-target">; + +def CXX17CompatMangling : DiagGroup<"c++17-compat-mangling">; +def : DiagGroup<"c++1z-compat-mangling", [CXX17CompatMangling]>; // Name of this warning in GCC. -def NoexceptType : DiagGroup<"noexcept-type", [CXX1zCompatMangling]>; +def NoexceptType : DiagGroup<"noexcept-type", [CXX17CompatMangling]>; // Warnings for C++1y code which is not compatible with prior C++ standards. def CXXPre14Compat : DiagGroup<"c++98-c++11-compat">; @@ -215,9 +219,10 @@ def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zC def CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic", [CXXPre1zCompatPedantic]>; -def CXX1zCompat : DiagGroup<"c++1z-compat", [DeprecatedRegister, +def CXX17Compat : DiagGroup<"c++17-compat", [DeprecatedRegister, DeprecatedIncrementBool, - CXX1zCompatMangling]>; + CXX17CompatMangling]>; +def : DiagGroup<"c++1z-compat", [CXX17Compat]>; def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; @@ -769,10 +774,11 @@ def CXX14 : DiagGroup<"c++14-extensions", [CXX14Binary // A warning group for warnings about using C++1z features as extensions in // earlier C++ versions. -def CXX1z : DiagGroup<"c++1z-extensions">; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Mon Aug 21 17:05:46 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 34806DE8522 for ; Mon, 21 Aug 2017 17:05:46 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id E22C077B6A; Mon, 21 Aug 2017 17:05:45 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7LH5j8P011298; Mon, 21 Aug 2017 17:05:45 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7LH5hw1011280; Mon, 21 Aug 2017 17:05:43 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201708211705.v7LH5hw1011280@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 21 Aug 2017 17:05:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322758 - in projects/krb5: . lib/libc/i386 share/mk sys/amd64/include sys/amd64/sgx sys/conf sys/dev/syscons sys/i386/include sys/kern sys/modules sys/modules/sgx sys/modules/sgx_linux... X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5: . lib/libc/i386 share/mk sys/amd64/include sys/amd64/sgx sys/conf sys/dev/syscons sys/i386/include sys/kern sys/modules sys/modules/sgx sys/modules/sgx_linux sys/sys sys/vm sys/x86/x... X-SVN-Commit-Revision: 322758 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Mon, 21 Aug 2017 17:05:46 -0000 Author: cy Date: Mon Aug 21 17:05:43 2017 New Revision: 322758 URL: https://svnweb.freebsd.org/changeset/base/322758 Log: MFH r322589-r322753. Added: projects/krb5/sys/amd64/include/sgx.h - copied unchanged from r322589, head/sys/amd64/include/sgx.h projects/krb5/sys/amd64/include/sgxreg.h - copied unchanged from r322589, head/sys/amd64/include/sgxreg.h projects/krb5/sys/amd64/sgx/ - copied from r322589, head/sys/amd64/sgx/ projects/krb5/sys/modules/sgx/ - copied from r322589, head/sys/modules/sgx/ projects/krb5/sys/modules/sgx_linux/ - copied from r322589, head/sys/modules/sgx_linux/ Modified: projects/krb5/Makefile projects/krb5/lib/libc/i386/Makefile.inc projects/krb5/share/mk/bsd.crunchgen.mk projects/krb5/sys/amd64/include/cpufunc.h projects/krb5/sys/amd64/include/intr_machdep.h projects/krb5/sys/conf/kern.post.mk projects/krb5/sys/dev/syscons/syscons.c projects/krb5/sys/i386/include/intr_machdep.h projects/krb5/sys/kern/subr_intr.c projects/krb5/sys/modules/Makefile projects/krb5/sys/sys/consio.h projects/krb5/sys/vm/vm_object.c projects/krb5/sys/vm/vm_object.h projects/krb5/sys/x86/x86/intr_machdep.c projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc projects/krb5/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/krb5/ (props changed) Modified: projects/krb5/Makefile ============================================================================== --- projects/krb5/Makefile Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/Makefile Mon Aug 21 17:05:43 2017 (r322758) @@ -221,7 +221,7 @@ SUB_MAKE= `test -x ${MYMAKE} && echo ${MYMAKE} || echo SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk .endif -_MAKE= PATH=${PATH} MAKE_CMD=${MAKE} ${SUB_MAKE} -f Makefile.inc1 \ +_MAKE= PATH=${PATH} MAKE_CMD="${MAKE}" ${SUB_MAKE} -f Makefile.inc1 \ TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Only allow meta mode for the whitelisted targets. See META_TGT_WHITELIST Modified: projects/krb5/lib/libc/i386/Makefile.inc ============================================================================== --- projects/krb5/lib/libc/i386/Makefile.inc Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/lib/libc/i386/Makefile.inc Mon Aug 21 17:05:43 2017 (r322758) @@ -4,3 +4,13 @@ GDTOASRCS+=strtorx.c SRCS+=machdep_ldisx.c SYM_MAPS+=${LIBC_SRCTOP}/i386/Symbol.map + +# XXX force use of ld.bfd for linking i386 libc +# +# lld can successfully link most of a working i386 userland and kernel, +# but produces a broken libc. For now if we're otherwise using lld, and +# ld.bfd is available, explicitly use it for libc. +.include +.if ${LINKER_TYPE} == "lld" && ${MK_BINUTILS_BOOTSTRAP} != "no" +LDFLAGS+=-fuse-ld=bfd +.endif Modified: projects/krb5/share/mk/bsd.crunchgen.mk ============================================================================== --- projects/krb5/share/mk/bsd.crunchgen.mk Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/share/mk/bsd.crunchgen.mk Mon Aug 21 17:05:43 2017 (r322758) @@ -114,7 +114,7 @@ CRUNCHENV+= MK_TESTS=no \ ${OUTPUTS:[1]}: .META ${OUTPUTS:[2..-1]}: .NOMETA ${OUTPUTS}: ${CONF} - MAKE=${MAKE} ${CRUNCHENV:NMK_AUTO_OBJ=*} MAKEOBJDIRPREFIX=${CRUNCHOBJS} \ + MAKE="${MAKE}" ${CRUNCHENV:NMK_AUTO_OBJ=*} MAKEOBJDIRPREFIX=${CRUNCHOBJS} \ MK_AUTO_OBJ=${MK_AUTO_OBJ} \ ${CRUNCHGEN} -fq -m ${OUTMK} -c ${OUTC} ${CONF} # Avoid redundantly calling 'make objs' which we've done by our Modified: projects/krb5/sys/amd64/include/cpufunc.h ============================================================================== --- projects/krb5/sys/amd64/include/cpufunc.h Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/amd64/include/cpufunc.h Mon Aug 21 17:05:43 2017 (r322758) @@ -834,6 +834,85 @@ intr_restore(register_t rflags) write_rflags(rflags); } +enum { + SGX_ECREATE = 0x0, + SGX_EADD = 0x1, + SGX_EINIT = 0x2, + SGX_EREMOVE = 0x3, + SGX_EDGBRD = 0x4, + SGX_EDGBWR = 0x5, + SGX_EEXTEND = 0x6, + SGX_ELDU = 0x8, + SGX_EBLOCK = 0x9, + SGX_EPA = 0xA, + SGX_EWB = 0xB, + SGX_ETRACK = 0xC, +}; + +enum { + SGX_PT_SECS = 0x00, + SGX_PT_TCS = 0x01, + SGX_PT_REG = 0x02, + SGX_PT_VA = 0x03, + SGX_PT_TRIM = 0x04, +}; + +int sgx_encls(uint32_t eax, uint64_t rbx, uint64_t rcx, uint64_t rdx); + +static __inline int +sgx_ecreate(void *pginfo, void *secs) +{ + + return (sgx_encls(SGX_ECREATE, (uint64_t)pginfo, + (uint64_t)secs, 0)); +} + +static __inline int +sgx_eadd(void *pginfo, void *epc) +{ + + return (sgx_encls(SGX_EADD, (uint64_t)pginfo, + (uint64_t)epc, 0)); +} + +static __inline int +sgx_einit(void *sigstruct, void *secs, void *einittoken) +{ + + return (sgx_encls(SGX_EINIT, (uint64_t)sigstruct, + (uint64_t)secs, (uint64_t)einittoken)); +} + +static __inline int +sgx_eextend(void *secs, void *epc) +{ + + return (sgx_encls(SGX_EEXTEND, (uint64_t)secs, + (uint64_t)epc, 0)); +} + +static __inline int +sgx_epa(void *epc) +{ + + return (sgx_encls(SGX_EPA, SGX_PT_VA, (uint64_t)epc, 0)); +} + +static __inline int +sgx_eldu(uint64_t rbx, uint64_t rcx, + uint64_t rdx) +{ + + return (sgx_encls(SGX_ELDU, rbx, rcx, rdx)); +} + +static __inline int +sgx_eremove(void *epc) +{ + + return (sgx_encls(SGX_EREMOVE, 0, (uint64_t)epc, 0)); +} + #else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ int breakpoint(void); Modified: projects/krb5/sys/amd64/include/intr_machdep.h ============================================================================== --- projects/krb5/sys/amd64/include/intr_machdep.h Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/amd64/include/intr_machdep.h Mon Aug 21 17:05:43 2017 (r322758) @@ -130,6 +130,7 @@ struct intsrc { u_long *is_straycount; u_int is_index; u_int is_handlers; + u_int is_cpu; }; struct trapframe; Copied: projects/krb5/sys/amd64/include/sgx.h (from r322589, head/sys/amd64/include/sgx.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/amd64/include/sgx.h Mon Aug 21 17:05:43 2017 (r322758, copy of r322589, head/sys/amd64/include/sgx.h) @@ -0,0 +1,64 @@ +/*- + * Copyright (c) 2017 Ruslan Bukin + * All rights reserved. + * + * This software was developed by BAE Systems, the University of Cambridge + * Computer Laboratory, and Memorial University under DARPA/AFRL contract + * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing + * (TC) research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* User-visible header. */ + +#ifndef _MACHINE_SGX_H_ +#define _MACHINE_SGX_H_ + +#define SGX_MAGIC 0xA4 +#define SGX_IOC_ENCLAVE_CREATE \ + _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create) +#define SGX_IOC_ENCLAVE_ADD_PAGE \ + _IOW(SGX_MAGIC, 0x01, struct sgx_enclave_add_page) +#define SGX_IOC_ENCLAVE_INIT \ + _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init) + +struct sgx_enclave_create { + uint64_t src; +} __packed; + +struct sgx_enclave_add_page { + uint64_t addr; + uint64_t src; + uint64_t secinfo; + uint16_t mrmask; +} __packed; + +struct sgx_enclave_init { + uint64_t addr; + uint64_t sigstruct; + uint64_t einittoken; +} __packed; + +#endif /* !_MACHINE_SGX_H_ */ Copied: projects/krb5/sys/amd64/include/sgxreg.h (from r322589, head/sys/amd64/include/sgxreg.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/amd64/include/sgxreg.h Mon Aug 21 17:05:43 2017 (r322758, copy of r322589, head/sys/amd64/include/sgxreg.h) @@ -0,0 +1,155 @@ +/*- + * Copyright (c) 2017 Ruslan Bukin + * All rights reserved. + * + * This software was developed by BAE Systems, the University of Cambridge + * Computer Laboratory, and Memorial University under DARPA/AFRL contract + * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing + * (TC) research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* Machine-defined variables. */ + +#ifndef _MACHINE_SGXREG_H_ +#define _MACHINE_SGXREG_H_ + +/* Error codes. */ +#define SGX_SUCCESS 0 +#define SGX_INVALID_SIG_STRUCT 1 /* EINIT */ +#define SGX_INVALID_ATTRIBUTE 2 /* EINIT, EGETKEY */ +#define SGX_BLSTATE 3 /* EBLOCK */ +#define SGX_INVALID_MEASUREMENT 4 /* EINIT */ +#define SGX_NOTBLOCKABLE 5 /* EBLOCK */ +#define SGX_PG_INVLD 6 /* EBLOCK */ +#define SGX_LOCKFAIL 7 /* EBLOCK, EMODPR, EMODT */ +#define SGX_INVALID_SIGNATURE 8 /* EINIT */ +#define SGX_MAC_COMPARE_FAIL 9 /* ELDB, ELDU */ +#define SGX_PAGE_NOT_BLOCKED 10 /* EWB */ +#define SGX_NOT_TRACKED 11 /* EWB, EACCEPT */ +#define SGX_VA_SLOT_OCCUPIED 12 /* EWB */ +#define SGX_CHILD_PRESENT 13 /* EWB, EREMOVE */ +#define SGX_ENCLAVE_ACT 14 /* EREMOVE */ +#define SGX_ENTRYEPOCH_LOCKED 15 /* EBLOCK */ +#define SGX_INVALID_EINIT_TOKEN 16 /* EINIT */ +#define SGX_PREV_TRK_INCMPL 17 /* ETRACK */ +#define SGX_PG_IS_SECS 18 /* EBLOCK */ +#define SGX_PAGE_ATTRIBUTES_MISMATCH 19 /* EACCEPT, EACCEPTCOPY */ +#define SGX_PAGE_NOT_MODIFIABLE 20 /* EMODPR, EMODT */ +#define SGX_INVALID_CPUSVN 32 /* EINIT, EGETKEY */ +#define SGX_INVALID_ISVSVN 64 /* EGETKEY */ +#define SGX_UNMASKED_EVENT 128 /* EINIT */ +#define SGX_INVALID_KEYNAME 256 /* EGETKEY */ + +/* + * 2.10 Page Information (PAGEINFO) + * PAGEINFO is an architectural data structure that is used as a parameter + * to the EPC-management instructions. It requires 32-Byte alignment. + */ +struct page_info { + uint64_t linaddr; + uint64_t srcpge; + union { + struct secinfo *secinfo; + uint64_t pcmd; + }; + uint64_t secs; +} __aligned(32); + +/* + * 2.11 Security Information (SECINFO) + * The SECINFO data structure holds meta-data about an enclave page. + */ +struct secinfo { + uint64_t flags; +#define SECINFO_FLAGS_PT_S 8 /* Page type shift */ +#define SECINFO_FLAGS_PT_M (0xff << SECINFO_FLAGS_PT_S) + uint64_t reserved[7]; +} __aligned(64); + +/* + * 2.7.1 ATTRIBUTES + * The ATTRIBUTES data structure is comprised of bit-granular fields that + * are used in the SECS, CPUID enumeration, the REPORT and the KEYREQUEST + * structures. + */ +struct secs_attr { + uint8_t reserved1: 1; + uint8_t debug: 1; + uint8_t mode64bit: 1; + uint8_t reserved2: 1; + uint8_t provisionkey: 1; + uint8_t einittokenkey: 1; + uint8_t reserved3: 2; +#define SECS_ATTR_RSV4_SIZE 7 + uint8_t reserved4[SECS_ATTR_RSV4_SIZE]; + uint64_t xfrm; /* X-Feature Request Mask */ +}; + +/* + * 2.7 SGX Enclave Control Structure (SECS) + * The SECS data structure requires 4K-Bytes alignment. + */ +struct secs { + uint64_t size; + uint64_t base; + uint32_t ssa_frame_size; + uint32_t misc_select; +#define SECS_RSV1_SIZE 24 + uint8_t reserved1[SECS_RSV1_SIZE]; + struct secs_attr attributes; + uint8_t mr_enclave[32]; +#define SECS_RSV2_SIZE 32 + uint8_t reserved2[SECS_RSV2_SIZE]; + uint8_t mr_signer[32]; +#define SECS_RSV3_SIZE 96 + uint8_t reserved3[SECS_RSV3_SIZE]; + uint16_t isv_prod_id; + uint16_t isv_svn; +#define SECS_RSV4_SIZE 3836 + uint8_t reserved4[SECS_RSV4_SIZE]; +}; + +/* + * 2.8 Thread Control Structure (TCS) + * Each executing thread in the enclave is associated with a + * Thread Control Structure. It requires 4K-Bytes alignment. + */ +struct tcs { + uint64_t reserved1; + uint64_t flags; + uint64_t ossa; + uint32_t cssa; + uint32_t nssa; + uint64_t oentry; + uint64_t reserved2; + uint64_t ofsbasgx; + uint64_t ogsbasgx; + uint32_t fslimit; + uint32_t gslimit; + uint64_t reserved3[503]; +}; + +#endif /* !_MACHINE_SGXREG_H_ */ Modified: projects/krb5/sys/conf/kern.post.mk ============================================================================== --- projects/krb5/sys/conf/kern.post.mk Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/conf/kern.post.mk Mon Aug 21 17:05:43 2017 (r322758) @@ -372,7 +372,7 @@ config.ln env.ln hints.ln vers.ln vnode_if.ln: REPRO_FLAG="-r" .endif vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} - MAKE=${MAKE} sh $S/conf/newvers.sh ${REPRO_FLAG} ${KERN_IDENT} + MAKE="${MAKE}" sh $S/conf/newvers.sh ${REPRO_FLAG} ${KERN_IDENT} vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src ${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -c Modified: projects/krb5/sys/dev/syscons/syscons.c ============================================================================== --- projects/krb5/sys/dev/syscons/syscons.c Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/dev/syscons/syscons.c Mon Aug 21 17:05:43 2017 (r322758) @@ -935,7 +935,7 @@ sctty_ioctl(struct tty *tp, u_long cmd, caddr_t data, splx(s); return 0; - case CONS_CURSORTYPE: /* set cursor type (obsolete) */ + case CONS_CURSORTYPE: /* set cursor type (old interface + HIDDEN) */ s = spltty(); *(int *)data &= CONS_CURSOR_ATTRS; sc_change_cursor_shape(scp, *(int *)data, -1, -1); Modified: projects/krb5/sys/i386/include/intr_machdep.h ============================================================================== --- projects/krb5/sys/i386/include/intr_machdep.h Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/i386/include/intr_machdep.h Mon Aug 21 17:05:43 2017 (r322758) @@ -130,6 +130,7 @@ struct intsrc { u_long *is_straycount; u_int is_index; u_int is_handlers; + u_int is_cpu; }; struct trapframe; Modified: projects/krb5/sys/kern/subr_intr.c ============================================================================== --- projects/krb5/sys/kern/subr_intr.c Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/kern/subr_intr.c Mon Aug 21 17:05:43 2017 (r322758) @@ -1031,14 +1031,14 @@ intr_setup_irq(device_t dev, struct resource *res, dri if (flags & INTR_SOLO) { error = iscr_setup_filter(isrc, name, (intr_irq_filter_t *)filt, arg, cookiep); - debugf("irq %u setup filter error %d on %s\n", irq, error, + debugf("irq %u setup filter error %d on %s\n", isrc->isrc_irq, error, name); } else #endif { error = isrc_add_handler(isrc, name, filt, hand, arg, flags, cookiep); - debugf("irq %u add handler error %d on %s\n", irq, error, name); + debugf("irq %u add handler error %d on %s\n", isrc->isrc_irq, error, name); } if (error != 0) return (error); Modified: projects/krb5/sys/modules/Makefile ============================================================================== --- projects/krb5/sys/modules/Makefile Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/modules/Makefile Mon Aug 21 17:05:43 2017 (r322758) @@ -346,6 +346,8 @@ SUBDIR= \ ${_sf} \ ${_sfxge} \ sge \ + ${_sgx} \ + ${_sgx_linux} \ siba_bwn \ siftr \ siis \ @@ -713,6 +715,8 @@ _qlxgbe= qlxgbe .endif _qlnx= qlnx _sfxge= sfxge +_sgx= sgx +_sgx_linux= sgx_linux .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) _vmm= vmm Modified: projects/krb5/sys/sys/consio.h ============================================================================== --- projects/krb5/sys/sys/consio.h Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/sys/consio.h Mon Aug 21 17:05:43 2017 (r322758) @@ -103,11 +103,15 @@ typedef struct ssaver ssaver_t; #define CONS_SSAVER _IOW('c', 5, ssaver_t) #define CONS_GSAVER _IOWR('c', 6, ssaver_t) -/* set the text cursor type (obsolete, see CONS_CURSORSHAPE below) */ /* -#define CONS_BLINK_CURSOR (1 << 0) -#define CONS_CHAR_CURSOR (1 << 1) -*/ + * Set the text cursor type. + * + * This is an old interface extended to support the CONS_HIDDEN_CURSOR bit. + * New code should use CONS_CURSORSHAPE. CONS_CURSOR_ATTRS gives the 3 + * bits supported by the (extended) old interface. The old interface is + * especially unusable for hiding the cursor (even with its extension) + * since it changes the cursor on all vtys. + */ #define CONS_CURSORTYPE _IOW('c', 7, int) /* set the bell type to audible or visual */ Modified: projects/krb5/sys/vm/vm_object.c ============================================================================== --- projects/krb5/sys/vm/vm_object.c Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/vm/vm_object.c Mon Aug 21 17:05:43 2017 (r322758) @@ -694,6 +694,54 @@ vm_object_destroy(vm_object_t object) } /* + * vm_object_terminate_pages removes any remaining pageable pages + * from the object and resets the object to an empty state. + */ +static void +vm_object_terminate_pages(vm_object_t object) +{ + vm_page_t p, p_next; + + VM_OBJECT_ASSERT_WLOCKED(object); + + /* + * Free any remaining pageable pages. This also removes them from the + * paging queues. However, don't free wired pages, just remove them + * from the object. Rather than incrementally removing each page from + * the object, the page and object are reset to any empty state. + */ + TAILQ_FOREACH_SAFE(p, &object->memq, listq, p_next) { + vm_page_assert_unbusied(p); + vm_page_lock(p); + /* + * Optimize the page's removal from the object by resetting + * its "object" field. Specifically, if the page is not + * wired, then the effect of this assignment is that + * vm_page_free()'s call to vm_page_remove() will return + * immediately without modifying the page or the object. + */ + p->object = NULL; + if (p->wire_count == 0) { + vm_page_free(p); + VM_CNT_INC(v_pfree); + } + vm_page_unlock(p); + } + /* + * If the object contained any pages, then reset it to an empty state. + * None of the object's fields, including "resident_page_count", were + * modified by the preceding loop. + */ + if (object->resident_page_count != 0) { + vm_radix_reclaim_allnodes(&object->rtree); + TAILQ_INIT(&object->memq); + object->resident_page_count = 0; + if (object->type == OBJT_VNODE) + vdrop(object->handle); + } +} + +/* * vm_object_terminate actually destroys the specified object, freeing * up all previously used resources. * @@ -703,7 +751,6 @@ vm_object_destroy(vm_object_t object) void vm_object_terminate(vm_object_t object) { - vm_page_t p, p_next; VM_OBJECT_ASSERT_WLOCKED(object); @@ -746,41 +793,8 @@ vm_object_terminate(vm_object_t object) ("vm_object_terminate: object with references, ref_count=%d", object->ref_count)); - /* - * Free any remaining pageable pages. This also removes them from the - * paging queues. However, don't free wired pages, just remove them - * from the object. Rather than incrementally removing each page from - * the object, the page and object are reset to any empty state. - */ - TAILQ_FOREACH_SAFE(p, &object->memq, listq, p_next) { - vm_page_assert_unbusied(p); - vm_page_lock(p); - /* - * Optimize the page's removal from the object by resetting - * its "object" field. Specifically, if the page is not - * wired, then the effect of this assignment is that - * vm_page_free()'s call to vm_page_remove() will return - * immediately without modifying the page or the object. - */ - p->object = NULL; - if (p->wire_count == 0) { - vm_page_free(p); - VM_CNT_INC(v_pfree); - } - vm_page_unlock(p); - } - /* - * If the object contained any pages, then reset it to an empty state. - * None of the object's fields, including "resident_page_count", were - * modified by the preceding loop. - */ - if (object->resident_page_count != 0) { - vm_radix_reclaim_allnodes(&object->rtree); - TAILQ_INIT(&object->memq); - object->resident_page_count = 0; - if (object->type == OBJT_VNODE) - vdrop(object->handle); - } + if ((object->flags & OBJ_PG_DTOR) == 0) + vm_object_terminate_pages(object); #if VM_NRESERVLEVEL > 0 if (__predict_false(!LIST_EMPTY(&object->rvq))) Modified: projects/krb5/sys/vm/vm_object.h ============================================================================== --- projects/krb5/sys/vm/vm_object.h Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/vm/vm_object.h Mon Aug 21 17:05:43 2017 (r322758) @@ -175,6 +175,7 @@ struct vm_object { #define OBJ_NOSPLIT 0x0010 /* dont split this object */ #define OBJ_UMTXDEAD 0x0020 /* umtx pshared was terminated */ #define OBJ_PIPWNT 0x0040 /* paging in progress wanted */ +#define OBJ_PG_DTOR 0x0080 /* dont reset object, leave that for dtor */ #define OBJ_MIGHTBEDIRTY 0x0100 /* object might be dirty, only for vnode */ #define OBJ_TMPFS_NODE 0x0200 /* object belongs to tmpfs VREG node */ #define OBJ_TMPFS_DIRTY 0x0400 /* dirty tmpfs obj */ Modified: projects/krb5/sys/x86/x86/intr_machdep.c ============================================================================== --- projects/krb5/sys/x86/x86/intr_machdep.c Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/sys/x86/x86/intr_machdep.c Mon Aug 21 17:05:43 2017 (r322758) @@ -75,14 +75,12 @@ typedef void (*mask_fn)(void *); static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; -#ifdef SMP static struct intsrc *interrupt_sorted[NUM_IO_INTS]; CTASSERT(sizeof(interrupt_sources) == sizeof(interrupt_sorted)); static int intrbalance; SYSCTL_INT(_hw, OID_AUTO, intrbalance, CTLFLAG_RW, &intrbalance, 0, "Interrupt auto-balance interval (seconds). Zero disables."); static struct timeout_task intrbalance_task; -#endif static struct sx intrsrc_lock; static struct mtx intrpic_lock; static struct mtx intrcnt_lock; Modified: projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/tools/build/mk/OptionalObsoleteFiles.inc Mon Aug 21 17:05:43 2017 (r322758) @@ -1557,6 +1557,22 @@ OLD_FILES+=usr/bin/g++ OLD_FILES+=usr/libexec/cc1plus .endif +.if ${MK_DEBUG_FILES} == no +.if exists(${DESTDIR}/usr/lib/debug) +DEBUG_DIRS!=find ${DESTDIR}/usr/lib/debug -mindepth 1 \ + -type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \ + | sed -e 's,^${DESTDIR}/,,'; echo +DEBUG_FILES!=find ${DESTDIR}/usr/lib/debug \ + \! -type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \! -name "lib*.so*" \ + | sed -e 's,^${DESTDIR}/,,'; echo +DEBUG_LIBS!=find ${DESTDIR}/usr/lib/debug \! -type d -name "lib*.so*" \ + | sed -e 's,^${DESTDIR}/,,'; echo +OLD_DIRS+=${DEBUG_DIRS} +OLD_FILES+=${DEBUG_FILES} +OLD_LIBS+=${DEBUG_LIBS} +.endif +.endif + .if ${MK_DIALOG} == no OLD_FILES+=usr/bin/dialog OLD_FILES+=usr/bin/dpv Modified: projects/krb5/usr.sbin/vidcontrol/vidcontrol.c ============================================================================== --- projects/krb5/usr.sbin/vidcontrol/vidcontrol.c Mon Aug 21 16:23:44 2017 (r322757) +++ projects/krb5/usr.sbin/vidcontrol/vidcontrol.c Mon Aug 21 17:05:43 2017 (r322758) @@ -154,7 +154,7 @@ revert(void) ioctl(0, VT_ACTIVATE, cur_info.active_vty); - fprintf(stderr, "\033[=%dA", cur_info.console_info.mv_ovscan); + ioctl(0, KDSBORDER, cur_info.console_info.mv_ovscan); fprintf(stderr, "\033[=%dH", cur_info.console_info.mv_rev.fore); fprintf(stderr, "\033[=%dI", cur_info.console_info.mv_rev.back); @@ -957,11 +957,15 @@ set_border_color(char *arg) { int color; - if ((color = get_color_number(arg)) != -1) { - fprintf(stderr, "\033[=%dA", color); + color = get_color_number(arg); + if (color == -1) { + revert(); + errx(1, "invalid color '%s'", arg); } - else - usage(); + if (ioctl(0, KDSBORDER, color) != 0) { + revert(); + err(1, "ioctl(KD_SBORDER)"); + } } static void From owner-svn-src-projects@freebsd.org Tue Aug 22 05:02:44 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 034B2DCC0D4 for ; Tue, 22 Aug 2017 05:02:44 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 62A6571E94; Tue, 22 Aug 2017 05:02:43 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7M52gZ9006452; Tue, 22 Aug 2017 05:02:42 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7M52gO9006450; Tue, 22 Aug 2017 05:02:42 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201708220502.v7M52gO9006450@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Tue, 22 Aug 2017 05:02:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322778 - in projects/krb5/sys: amd64/sgx ufs/ffs x86/x86 X-SVN-Group: projects X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in projects/krb5/sys: amd64/sgx ufs/ffs x86/x86 X-SVN-Commit-Revision: 322778 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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, 22 Aug 2017 05:02:44 -0000 Author: cy Date: Tue Aug 22 05:02:42 2017 New Revision: 322778 URL: https://svnweb.freebsd.org/changeset/base/322778 Log: Fixup mismerges. Replaced: projects/krb5/sys/amd64/sgx/sgx.c - copied unchanged from r322761, head/sys/amd64/sgx/sgx.c projects/krb5/sys/ufs/ffs/ffs_softdep.c - copied unchanged from r322761, head/sys/ufs/ffs/ffs_softdep.c projects/krb5/sys/x86/x86/intr_machdep.c - copied unchanged from r322761, head/sys/x86/x86/intr_machdep.c Copied: projects/krb5/sys/amd64/sgx/sgx.c (from r322761, head/sys/amd64/sgx/sgx.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/krb5/sys/amd64/sgx/sgx.c Tue Aug 22 05:02:42 2017 (r322778, copy of r322761, head/sys/amd64/sgx/sgx.c) @@ -0,0 +1,1214 @@ +/*- + * Copyright (c) 2017 Ruslan Bukin + * All rights reserved. + * + * This software was developed by BAE Systems, the University of Cambridge + * Computer Laboratory, and Memorial University under DARPA/AFRL contract + * FA8650-15-C-7558 ("CADETS"), as part of the DARPA Transparent Computing + * (TC) research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Design overview. + * + * The driver provides character device for mmap(2) and ioctl(2) system calls + * allowing user to manage isolated compartments ("enclaves") in user VA space. + * + * The driver duties is EPC pages management, enclave management, user data + * validation. + * + * This driver requires Intel SGX support from hardware. + * + * /dev/sgx: + * .mmap: + * sgx_mmap_single() allocates VM object with following pager + * operations: + * a) sgx_pg_ctor(): + * VM object constructor does nothing + * b) sgx_pg_dtor(): + * VM object destructor destroys the SGX enclave associated + * with the object: it frees all the EPC pages allocated for + * enclave and removes the enclave. + * c) sgx_pg_fault(): + * VM object fault handler does nothing + * + * .ioctl: + * sgx_ioctl(): + * a) SGX_IOC_ENCLAVE_CREATE + * Adds Enclave SECS page: initial step of enclave creation. + * b) SGX_IOC_ENCLAVE_ADD_PAGE + * Adds TCS, REG pages to the enclave. + * c) SGX_IOC_ENCLAVE_INIT + * Finalizes enclave creation. + * + * Enclave lifecycle: + * .-- ECREATE -- Add SECS page + * Kernel | EADD -- Add TCS, REG pages + * space | EEXTEND -- Measure the page (take unique hash) + * ENCLS | EPA -- Allocate version array page + * '-- EINIT -- Finalize enclave creation + * User .-- EENTER -- Go to entry point of enclave + * space | EEXIT -- Exit back to main application + * ENCLU '-- ERESUME -- Resume enclave execution (e.g. after exception) + * + * Enclave lifecycle from driver point of view: + * 1) User calls mmap() on /dev/sgx: we allocate a VM object + * 2) User calls ioctl SGX_IOC_ENCLAVE_CREATE: we look for the VM object + * associated with user process created on step 1, create SECS physical + * page and store it in enclave's VM object queue by special index + * SGX_SECS_VM_OBJECT_INDEX. + * 3) User calls ioctl SGX_IOC_ENCLAVE_ADD_PAGE: we look for enclave created + * on step 2, create TCS or REG physical page and map it to specified by + * user address of enclave VM object. + * 4) User finalizes enclave creation with ioctl SGX_IOC_ENCLAVE_INIT call. + * 5) User can freely enter to and exit from enclave using ENCLU instructions + * from userspace: the driver does nothing here. + * 6) User proceed munmap(2) system call (or the process with enclave dies): + * we destroy the enclave associated with the object. + * + * EPC page types and their indexes in VM object queue: + * - PT_SECS index is special and equals SGX_SECS_VM_OBJECT_INDEX (-1); + * - PT_TCS and PT_REG indexes are specified by user in addr field of ioctl + * request data and determined as follows: + * pidx = OFF_TO_IDX(addp->addr - vmh->base); + * - PT_VA index is special, created for PT_REG, PT_TCS and PT_SECS pages + * and determined by formula: + * va_page_idx = - SGX_VA_PAGES_OFFS - (page_idx / SGX_VA_PAGE_SLOTS); + * PT_VA page can hold versions of up to 512 pages, and slot for each + * page in PT_VA page is determined as follows: + * va_slot_idx = page_idx % SGX_VA_PAGE_SLOTS; + * - PT_TRIM is unused. + * + * Locking: + * SGX ENCLS set of instructions have limitations on concurrency: + * some instructions can't be executed same time on different CPUs. + * We use sc->mtx_encls lock around them to prevent concurrent execution. + * sc->mtx lock is used to manage list of created enclaves and the state of + * SGX driver. + * + * Eviction of EPC pages: + * Eviction support is not implemented in this driver, however the driver + * manages VA (version array) pages: it allocates a VA slot for each EPC + * page. This will be required for eviction support in future. + * VA pages and slots are currently unused. + * + * Intel® 64 and IA-32 Architectures Software Developer's Manual + * https://software.intel.com/en-us/articles/intel-sdm + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#define SGX_DEBUG +#undef SGX_DEBUG + +#ifdef SGX_DEBUG +#define dprintf(fmt, ...) printf(fmt, ##__VA_ARGS__) +#else +#define dprintf(fmt, ...) +#endif + +static struct cdev_pager_ops sgx_pg_ops; +struct sgx_softc sgx_sc; + +static int +sgx_get_epc_page(struct sgx_softc *sc, struct epc_page **epc) +{ + vmem_addr_t addr; + int i; + + if (vmem_alloc(sc->vmem_epc, PAGE_SIZE, M_FIRSTFIT | M_NOWAIT, + &addr) == 0) { + i = (addr - sc->epc_base) / PAGE_SIZE; + *epc = &sc->epc_pages[i]; + return (0); + } + + return (ENOMEM); +} + +static void +sgx_put_epc_page(struct sgx_softc *sc, struct epc_page *epc) +{ + vmem_addr_t addr; + + if (epc == NULL) + return; + + addr = (epc->index * PAGE_SIZE) + sc->epc_base; + vmem_free(sc->vmem_epc, addr, PAGE_SIZE); +} + +static int +sgx_va_slot_init_by_index(struct sgx_softc *sc, vm_object_t object, + uint64_t idx) +{ + struct epc_page *epc; + vm_page_t page; + vm_page_t p; + int ret; + + VM_OBJECT_ASSERT_WLOCKED(object); + + p = vm_page_lookup(object, idx); + if (p == NULL) { + ret = sgx_get_epc_page(sc, &epc); + if (ret) { + dprintf("%s: No free EPC pages available.\n", + __func__); + return (ret); + } + + mtx_lock(&sc->mtx_encls); + sgx_epa((void *)epc->base); + mtx_unlock(&sc->mtx_encls); + + page = PHYS_TO_VM_PAGE(epc->phys); + + vm_page_insert(page, object, idx); + page->valid = VM_PAGE_BITS_ALL; + } + + return (0); +} + +static int +sgx_va_slot_init(struct sgx_softc *sc, + struct sgx_enclave *enclave, + uint64_t addr) +{ + vm_pindex_t pidx; + uint64_t va_page_idx; + uint64_t idx; + vm_object_t object; + int va_slot; + int ret; + + object = enclave->object; + + VM_OBJECT_ASSERT_WLOCKED(object); + + pidx = OFF_TO_IDX(addr); + + va_slot = pidx % SGX_VA_PAGE_SLOTS; + va_page_idx = pidx / SGX_VA_PAGE_SLOTS; + idx = - SGX_VA_PAGES_OFFS - va_page_idx; + + ret = sgx_va_slot_init_by_index(sc, object, idx); + + return (ret); +} + +static int +sgx_mem_find(struct sgx_softc *sc, uint64_t addr, + vm_map_entry_t *entry0, vm_object_t *object0) +{ + vm_map_t map; + vm_map_entry_t entry; + vm_object_t object; + + map = &curproc->p_vmspace->vm_map; + + vm_map_lock_read(map); + if (!vm_map_lookup_entry(map, addr, &entry)) { + vm_map_unlock_read(map); + dprintf("%s: Can't find enclave.\n", __func__); + return (EINVAL); + } + + object = entry->object.vm_object; + if (object == NULL || object->handle == NULL) { + vm_map_unlock_read(map); + return (EINVAL); + } + + if (object->type != OBJT_MGTDEVICE || + object->un_pager.devp.ops != &sgx_pg_ops) { + vm_map_unlock_read(map); + return (EINVAL); + } + + vm_object_reference(object); + + *object0 = object; + *entry0 = entry; + vm_map_unlock_read(map); + + return (0); +} + +static int +sgx_enclave_find(struct sgx_softc *sc, uint64_t addr, + struct sgx_enclave **encl) +{ + struct sgx_vm_handle *vmh; + struct sgx_enclave *enclave; + vm_map_entry_t entry; + vm_object_t object; + int ret; + + ret = sgx_mem_find(sc, addr, &entry, &object); + if (ret) + return (ret); + + vmh = object->handle; + if (vmh == NULL) { + vm_object_deallocate(object); + return (EINVAL); + } + + enclave = vmh->enclave; + if (enclave == NULL || enclave->object == NULL) { + vm_object_deallocate(object); + return (EINVAL); + } + + *encl = enclave; + + return (0); +} + +static int +sgx_enclave_alloc(struct sgx_softc *sc, struct secs *secs, + struct sgx_enclave **enclave0) +{ + struct sgx_enclave *enclave; + + enclave = malloc(sizeof(struct sgx_enclave), + M_SGX, M_WAITOK | M_ZERO); + + enclave->base = secs->base; + enclave->size = secs->size; + + *enclave0 = enclave; + + return (0); +} + +static void +sgx_epc_page_remove(struct sgx_softc *sc, + struct epc_page *epc) +{ + + mtx_lock(&sc->mtx_encls); + sgx_eremove((void *)epc->base); + mtx_unlock(&sc->mtx_encls); +} + +static void +sgx_page_remove(struct sgx_softc *sc, vm_page_t p) +{ + struct epc_page *epc; + vm_paddr_t pa; + uint64_t offs; + + vm_page_lock(p); + vm_page_remove(p); + vm_page_unlock(p); + + dprintf("%s: p->pidx %ld\n", __func__, p->pindex); + + pa = VM_PAGE_TO_PHYS(p); + epc = &sc->epc_pages[0]; + offs = (pa - epc->phys) / PAGE_SIZE; + epc = &sc->epc_pages[offs]; + + sgx_epc_page_remove(sc, epc); + sgx_put_epc_page(sc, epc); +} + +static void +sgx_enclave_remove(struct sgx_softc *sc, + struct sgx_enclave *enclave) +{ + vm_object_t object; + vm_page_t p, p_secs, p_next; + + mtx_lock(&sc->mtx); + TAILQ_REMOVE(&sc->enclaves, enclave, next); + mtx_unlock(&sc->mtx); + + object = enclave->object; + + VM_OBJECT_WLOCK(object); + + /* + * First remove all the pages except SECS, + * then remove SECS page. + */ + p_secs = NULL; + TAILQ_FOREACH_SAFE(p, &object->memq, listq, p_next) { + if (p->pindex == SGX_SECS_VM_OBJECT_INDEX) { + p_secs = p; + continue; + } + sgx_page_remove(sc, p); + } + /* Now remove SECS page */ + if (p_secs != NULL) + sgx_page_remove(sc, p_secs); + + KASSERT(TAILQ_EMPTY(&object->memq) == 1, ("not empty")); + KASSERT(object->resident_page_count == 0, ("count")); + + VM_OBJECT_WUNLOCK(object); +} + +static int +sgx_measure_page(struct sgx_softc *sc, struct epc_page *secs, + struct epc_page *epc, uint16_t mrmask) +{ + int i, j; + int ret; + + mtx_lock(&sc->mtx_encls); + + for (i = 0, j = 1; i < PAGE_SIZE; i += 0x100, j <<= 1) { + if (!(j & mrmask)) + continue; + + ret = sgx_eextend((void *)secs->base, + (void *)(epc->base + i)); + if (ret == SGX_EFAULT) { + mtx_unlock(&sc->mtx_encls); + return (ret); + } + } + + mtx_unlock(&sc->mtx_encls); + + return (0); +} + +static int +sgx_secs_validate(struct sgx_softc *sc, struct secs *secs) +{ + struct secs_attr *attr; + int i; + + if (secs->size == 0) + return (EINVAL); + + /* BASEADDR must be naturally aligned on an SECS.SIZE boundary. */ + if (secs->base & (secs->size - 1)) + return (EINVAL); + + /* SECS.SIZE must be at least 2 pages. */ + if (secs->size < 2 * PAGE_SIZE) + return (EINVAL); + + if ((secs->size & (secs->size - 1)) != 0) + return (EINVAL); + + attr = &secs->attributes; + + if (attr->reserved1 != 0 || + attr->reserved2 != 0 || + attr->reserved3 != 0) + return (EINVAL); + + for (i = 0; i < SECS_ATTR_RSV4_SIZE; i++) + if (attr->reserved4[i]) + return (EINVAL); + + /* + * Intel® Software Guard Extensions Programming Reference + * 6.7.2 Relevant Fields in Various Data Structures + * 6.7.2.1 SECS.ATTRIBUTES.XFRM + * XFRM[1:0] must be set to 0x3. + */ + if ((attr->xfrm & 0x3) != 0x3) + return (EINVAL); + + if (!attr->mode64bit) + return (EINVAL); + + if (secs->size > sc->enclave_size_max) + return (EINVAL); + + for (i = 0; i < SECS_RSV1_SIZE; i++) + if (secs->reserved1[i]) + return (EINVAL); + + for (i = 0; i < SECS_RSV2_SIZE; i++) + if (secs->reserved2[i]) + return (EINVAL); + + for (i = 0; i < SECS_RSV3_SIZE; i++) + if (secs->reserved3[i]) + return (EINVAL); + + for (i = 0; i < SECS_RSV4_SIZE; i++) + if (secs->reserved4[i]) + return (EINVAL); + + return (0); +} + +static int +sgx_tcs_validate(struct tcs *tcs) +{ + int i; + + if ((tcs->flags) || + (tcs->ossa & (PAGE_SIZE - 1)) || + (tcs->ofsbasgx & (PAGE_SIZE - 1)) || + (tcs->ogsbasgx & (PAGE_SIZE - 1)) || + ((tcs->fslimit & 0xfff) != 0xfff) || + ((tcs->gslimit & 0xfff) != 0xfff)) + return (EINVAL); + + for (i = 0; i < nitems(tcs->reserved3); i++) + if (tcs->reserved3[i]) + return (EINVAL); + + return (0); +} + +static void +sgx_tcs_dump(struct sgx_softc *sc, struct tcs *t) +{ + + dprintf("t->flags %lx\n", t->flags); + dprintf("t->ossa %lx\n", t->ossa); + dprintf("t->cssa %x\n", t->cssa); + dprintf("t->nssa %x\n", t->nssa); + dprintf("t->oentry %lx\n", t->oentry); + dprintf("t->ofsbasgx %lx\n", t->ofsbasgx); + dprintf("t->ogsbasgx %lx\n", t->ogsbasgx); + dprintf("t->fslimit %x\n", t->fslimit); + dprintf("t->gslimit %x\n", t->gslimit); +} + +static int +sgx_pg_ctor(void *handle, vm_ooffset_t size, vm_prot_t prot, + vm_ooffset_t foff, struct ucred *cred, u_short *color) +{ + struct sgx_vm_handle *vmh; + + vmh = handle; + if (vmh == NULL) { + dprintf("%s: vmh not found.\n", __func__); + return (0); + } + + dprintf("%s: vmh->base %lx foff 0x%lx size 0x%lx\n", + __func__, vmh->base, foff, size); + + return (0); +} + +static void +sgx_pg_dtor(void *handle) +{ + struct sgx_vm_handle *vmh; + struct sgx_softc *sc; + + vmh = handle; + if (vmh == NULL) { + dprintf("%s: vmh not found.\n", __func__); + return; + } + + sc = vmh->sc; + if (sc == NULL) { + dprintf("%s: sc is NULL\n", __func__); + return; + } + + if (vmh->enclave == NULL) { + dprintf("%s: Enclave not found.\n", __func__); + return; + } + + sgx_enclave_remove(sc, vmh->enclave); + + free(vmh->enclave, M_SGX); + free(vmh, M_SGX); +} + +static int +sgx_pg_fault(vm_object_t object, vm_ooffset_t offset, + int prot, vm_page_t *mres) +{ + + /* + * The purpose of this trivial handler is to handle the race + * when user tries to access mmaped region before or during + * enclave creation ioctl calls. + */ + + dprintf("%s: offset 0x%lx\n", __func__, offset); + + return (VM_PAGER_FAIL); +} + +static struct cdev_pager_ops sgx_pg_ops = { + .cdev_pg_ctor = sgx_pg_ctor, + .cdev_pg_dtor = sgx_pg_dtor, + .cdev_pg_fault = sgx_pg_fault, +}; + + +static void +sgx_insert_epc_page_by_index(vm_page_t page, vm_object_t object, + vm_pindex_t pidx) +{ + + VM_OBJECT_ASSERT_WLOCKED(object); + + vm_page_insert(page, object, pidx); + page->valid = VM_PAGE_BITS_ALL; +} + +static void +sgx_insert_epc_page(struct sgx_enclave *enclave, + struct epc_page *epc, uint64_t addr) +{ + vm_pindex_t pidx; + vm_page_t page; + + VM_OBJECT_ASSERT_WLOCKED(enclave->object); + + pidx = OFF_TO_IDX(addr); + page = PHYS_TO_VM_PAGE(epc->phys); + + sgx_insert_epc_page_by_index(page, enclave->object, pidx); +} + +static int +sgx_ioctl_create(struct sgx_softc *sc, struct sgx_enclave_create *param) +{ + struct sgx_vm_handle *vmh; + vm_map_entry_t entry; + vm_page_t p; + struct page_info pginfo; + struct secinfo secinfo; + struct sgx_enclave *enclave; + struct epc_page *epc; + struct secs *secs; + vm_object_t object; + vm_page_t page; + int ret; + + epc = NULL; + secs = NULL; + enclave = NULL; + object = NULL; + + /* SGX Enclave Control Structure (SECS) */ + secs = malloc(PAGE_SIZE, M_SGX, M_WAITOK | M_ZERO); + ret = copyin((void *)param->src, secs, sizeof(struct secs)); + if (ret) { + dprintf("%s: Can't copy SECS.\n", __func__); + goto error; + } + + ret = sgx_secs_validate(sc, secs); + if (ret) { + dprintf("%s: SECS validation failed.\n", __func__); + goto error; + } + + ret = sgx_mem_find(sc, secs->base, &entry, &object); + if (ret) { + dprintf("%s: Can't find vm_map.\n", __func__); + goto error; + } + + vmh = object->handle; + if (!vmh) { + dprintf("%s: Can't find vmh.\n", __func__); + ret = ENXIO; + goto error; + } + + dprintf("%s: entry start %lx offset %lx\n", + __func__, entry->start, entry->offset); + vmh->base = (entry->start - entry->offset); + + ret = sgx_enclave_alloc(sc, secs, &enclave); + if (ret) { + dprintf("%s: Can't alloc enclave.\n", __func__); + goto error; + } + enclave->object = object; + enclave->vmh = vmh; + + memset(&secinfo, 0, sizeof(struct secinfo)); + memset(&pginfo, 0, sizeof(struct page_info)); + pginfo.linaddr = 0; + pginfo.srcpge = (uint64_t)secs; + pginfo.secinfo = &secinfo; + pginfo.secs = 0; + + ret = sgx_get_epc_page(sc, &epc); + if (ret) { + dprintf("%s: Failed to get free epc page.\n", __func__); + goto error; + } + enclave->secs_epc_page = epc; + + VM_OBJECT_WLOCK(object); + p = vm_page_lookup(object, SGX_SECS_VM_OBJECT_INDEX); + if (p) { + VM_OBJECT_WUNLOCK(object); + /* SECS page already added. */ + ret = ENXIO; + goto error; + } + + ret = sgx_va_slot_init_by_index(sc, object, + - SGX_VA_PAGES_OFFS - SGX_SECS_VM_OBJECT_INDEX); + if (ret) { + VM_OBJECT_WUNLOCK(object); + dprintf("%s: Can't init va slot.\n", __func__); + goto error; + } + + mtx_lock(&sc->mtx); + if ((sc->state & SGX_STATE_RUNNING) == 0) { + mtx_unlock(&sc->mtx); + /* Remove VA page that was just created for SECS page. */ + p = vm_page_lookup(enclave->object, + - SGX_VA_PAGES_OFFS - SGX_SECS_VM_OBJECT_INDEX); + sgx_page_remove(sc, p); + VM_OBJECT_WUNLOCK(object); + goto error; + } + mtx_lock(&sc->mtx_encls); + ret = sgx_ecreate(&pginfo, (void *)epc->base); + mtx_unlock(&sc->mtx_encls); + if (ret == SGX_EFAULT) { + dprintf("%s: gp fault\n", __func__); + mtx_unlock(&sc->mtx); + /* Remove VA page that was just created for SECS page. */ + p = vm_page_lookup(enclave->object, + - SGX_VA_PAGES_OFFS - SGX_SECS_VM_OBJECT_INDEX); + sgx_page_remove(sc, p); + VM_OBJECT_WUNLOCK(object); + goto error; + } + + TAILQ_INSERT_TAIL(&sc->enclaves, enclave, next); + mtx_unlock(&sc->mtx); + + vmh->enclave = enclave; + + page = PHYS_TO_VM_PAGE(epc->phys); + sgx_insert_epc_page_by_index(page, enclave->object, + SGX_SECS_VM_OBJECT_INDEX); + + VM_OBJECT_WUNLOCK(object); + + /* Release the reference. */ + vm_object_deallocate(object); + + free(secs, M_SGX); + + return (0); + +error: + free(secs, M_SGX); + sgx_put_epc_page(sc, epc); + free(enclave, M_SGX); + vm_object_deallocate(object); + + return (ret); +} + +static int +sgx_ioctl_add_page(struct sgx_softc *sc, + struct sgx_enclave_add_page *addp) +{ + struct epc_page *secs_epc_page; + struct sgx_enclave *enclave; + struct sgx_vm_handle *vmh; + struct epc_page *epc; + struct page_info pginfo; + struct secinfo secinfo; + vm_object_t object; + void *tmp_vaddr; + uint64_t page_type; + struct tcs *t; + uint64_t addr; + uint64_t pidx; + vm_page_t p; + int ret; + + tmp_vaddr = NULL; + epc = NULL; + object = NULL; + + /* Find and get reference to VM object. */ + ret = sgx_enclave_find(sc, addp->addr, &enclave); + if (ret) { + dprintf("%s: Failed to find enclave.\n", __func__); + goto error; + } + + object = enclave->object; + KASSERT(object != NULL, ("vm object is NULL\n")); + vmh = object->handle; + + ret = sgx_get_epc_page(sc, &epc); + if (ret) { + dprintf("%s: Failed to get free epc page.\n", __func__); + goto error; + } + + memset(&secinfo, 0, sizeof(struct secinfo)); + ret = copyin((void *)addp->secinfo, &secinfo, + sizeof(struct secinfo)); + if (ret) { + dprintf("%s: Failed to copy secinfo.\n", __func__); + goto error; + } + + tmp_vaddr = malloc(PAGE_SIZE, M_SGX, M_WAITOK | M_ZERO); + ret = copyin((void *)addp->src, tmp_vaddr, PAGE_SIZE); + if (ret) { + dprintf("%s: Failed to copy page.\n", __func__); + goto error; + } + + page_type = (secinfo.flags & SECINFO_FLAGS_PT_M) >> + SECINFO_FLAGS_PT_S; + if (page_type != SGX_PT_TCS && page_type != SGX_PT_REG) { + dprintf("%s: page can't be added.\n", __func__); + goto error; + } + if (page_type == SGX_PT_TCS) { + t = (struct tcs *)tmp_vaddr; + ret = sgx_tcs_validate(t); + if (ret) { + dprintf("%s: TCS page validation failed.\n", + __func__); + goto error; + } + sgx_tcs_dump(sc, t); + } + + addr = (addp->addr - vmh->base); + pidx = OFF_TO_IDX(addr); + + VM_OBJECT_WLOCK(object); + p = vm_page_lookup(object, pidx); + if (p) { + VM_OBJECT_WUNLOCK(object); + /* Page already added. */ + ret = ENXIO; + goto error; + } + + ret = sgx_va_slot_init(sc, enclave, addr); + if (ret) { + VM_OBJECT_WUNLOCK(object); + dprintf("%s: Can't init va slot.\n", __func__); + goto error; + } + + secs_epc_page = enclave->secs_epc_page; + memset(&pginfo, 0, sizeof(struct page_info)); + pginfo.linaddr = (uint64_t)addp->addr; + pginfo.srcpge = (uint64_t)tmp_vaddr; + pginfo.secinfo = &secinfo; + pginfo.secs = (uint64_t)secs_epc_page->base; + + mtx_lock(&sc->mtx_encls); + ret = sgx_eadd(&pginfo, (void *)epc->base); + if (ret == SGX_EFAULT) { + dprintf("%s: gp fault on eadd\n", __func__); + mtx_unlock(&sc->mtx_encls); + VM_OBJECT_WUNLOCK(object); + goto error; + } + mtx_unlock(&sc->mtx_encls); + + ret = sgx_measure_page(sc, enclave->secs_epc_page, epc, addp->mrmask); + if (ret == SGX_EFAULT) { + dprintf("%s: gp fault on eextend\n", __func__); + sgx_epc_page_remove(sc, epc); + VM_OBJECT_WUNLOCK(object); + goto error; + } + + sgx_insert_epc_page(enclave, epc, addr); + + VM_OBJECT_WUNLOCK(object); + + /* Release the reference. */ + vm_object_deallocate(object); + + free(tmp_vaddr, M_SGX); + + return (0); + +error: + free(tmp_vaddr, M_SGX); + sgx_put_epc_page(sc, epc); + vm_object_deallocate(object); + + return (ret); +} + +static int +sgx_ioctl_init(struct sgx_softc *sc, struct sgx_enclave_init *initp) +{ + struct epc_page *secs_epc_page; + struct sgx_enclave *enclave; + struct thread *td; + void *tmp_vaddr; + void *einittoken; + void *sigstruct; + vm_object_t object; + int retry; + int ret; + + td = curthread; + tmp_vaddr = NULL; + object = NULL; + + dprintf("%s: addr %lx, sigstruct %lx, einittoken %lx\n", + __func__, initp->addr, initp->sigstruct, initp->einittoken); + + /* Find and get reference to VM object. */ + ret = sgx_enclave_find(sc, initp->addr, &enclave); + if (ret) { + dprintf("%s: Failed to find enclave.\n", __func__); + goto error; + } + + object = enclave->object; + + tmp_vaddr = malloc(PAGE_SIZE, M_SGX, M_WAITOK | M_ZERO); + sigstruct = tmp_vaddr; + einittoken = (void *)((uint64_t)sigstruct + PAGE_SIZE / 2); + + ret = copyin((void *)initp->sigstruct, sigstruct, + SGX_SIGSTRUCT_SIZE); + if (ret) { + dprintf("%s: Failed to copy SIGSTRUCT page.\n", __func__); + goto error; + } + + ret = copyin((void *)initp->einittoken, einittoken, + SGX_EINITTOKEN_SIZE); + if (ret) { + dprintf("%s: Failed to copy EINITTOKEN page.\n", __func__); + goto error; + } + + secs_epc_page = enclave->secs_epc_page; + retry = 16; + do { + mtx_lock(&sc->mtx_encls); + ret = sgx_einit(sigstruct, (void *)secs_epc_page->base, + einittoken); + mtx_unlock(&sc->mtx_encls); + dprintf("%s: sgx_einit returned %d\n", __func__, ret); + } while (ret == SGX_UNMASKED_EVENT && retry--); + + if (ret) { + dprintf("%s: Failed init enclave: %d\n", __func__, ret); + td->td_retval[0] = ret; + ret = 0; + } + +error: + free(tmp_vaddr, M_SGX); + + /* Release the reference. */ + vm_object_deallocate(object); + + return (ret); +} + +static int +sgx_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flags, + struct thread *td) +{ + struct sgx_enclave_add_page *addp; + struct sgx_enclave_create *param; + struct sgx_enclave_init *initp; + struct sgx_softc *sc; + int ret; + int len; + + sc = &sgx_sc; + + len = IOCPARM_LEN(cmd); + + dprintf("%s: cmd %lx, addr %lx, len %d\n", *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Aug 22 14:06:44 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ACC48DED699 for ; Tue, 22 Aug 2017 14:06:44 +0000 (UTC) (envelope-from brd@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 mx1.freebsd.org (Postfix) with ESMTPS id 7AE21390A; Tue, 22 Aug 2017 14:06:44 +0000 (UTC) (envelope-from brd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7ME6hTJ026648; Tue, 22 Aug 2017 14:06:43 GMT (envelope-from brd@FreeBSD.org) Received: (from brd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7ME6h6f026647; Tue, 22 Aug 2017 14:06:43 GMT (envelope-from brd@FreeBSD.org) Message-Id: <201708221406.v7ME6h6f026647@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: brd set sender to brd@FreeBSD.org using -f From: Brad Davis Date: Tue, 22 Aug 2017 14:06:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322789 - projects/zfsd/head/tests/sys X-SVN-Group: projects X-SVN-Commit-Author: brd X-SVN-Commit-Paths: projects/zfsd/head/tests/sys X-SVN-Commit-Revision: 322789 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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, 22 Aug 2017 14:06:44 -0000 Author: brd (doc,ports committer) Date: Tue Aug 22 14:06:43 2017 New Revision: 322789 URL: https://svnweb.freebsd.org/changeset/base/322789 Log: Fix build Approved by: will Modified: projects/zfsd/head/tests/sys/Makefile Modified: projects/zfsd/head/tests/sys/Makefile ============================================================================== --- projects/zfsd/head/tests/sys/Makefile Tue Aug 22 13:59:50 2017 (r322788) +++ projects/zfsd/head/tests/sys/Makefile Tue Aug 22 14:06:43 2017 (r322789) @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + TESTSDIR= ${TESTSBASE}/sys TESTS_SUBDIRS+= acl From owner-svn-src-projects@freebsd.org Wed Aug 23 03:54:35 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9DF37DD7E7C for ; Wed, 23 Aug 2017 03:54:35 +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 mx1.freebsd.org (Postfix) with ESMTPS id 6D8DA98E; Wed, 23 Aug 2017 03:54:35 +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 v7N3sYUt070213; Wed, 23 Aug 2017 03:54:34 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7N3sYfu070212; Wed, 23 Aug 2017 03:54:34 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708230354.v7N3sYfu070212@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Wed, 23 Aug 2017 03:54:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322805 - projects/runtime-coverage/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage/share/mk X-SVN-Commit-Revision: 322805 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Wed, 23 Aug 2017 03:54:35 -0000 Author: ngie Date: Wed Aug 23 03:54:34 2017 New Revision: 322805 URL: https://svnweb.freebsd.org/changeset/base/322805 Log: Only populate GCNOS if running clean or install targets Modified: projects/runtime-coverage/share/mk/bsd.cov.mk Modified: projects/runtime-coverage/share/mk/bsd.cov.mk ============================================================================== --- projects/runtime-coverage/share/mk/bsd.cov.mk Tue Aug 22 23:55:09 2017 (r322804) +++ projects/runtime-coverage/share/mk/bsd.cov.mk Wed Aug 23 03:54:34 2017 (r322805) @@ -2,6 +2,8 @@ .include +.if make(*clean) || make(*install) + FILESGROUPS?= FILES cov_objs_no_suffixes= ${COV_OBJS:R} @@ -25,4 +27,6 @@ ${DESTDIR}${_gcno_dir}: ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${.TARGET} .endif .endfor +.endif + .endif From owner-svn-src-projects@freebsd.org Wed Aug 23 20:28:28 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DA0D2DEE62F for ; Wed, 23 Aug 2017 20:28:28 +0000 (UTC) (envelope-from asomers@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 mx1.freebsd.org (Postfix) with ESMTPS id 5917C80B73; Wed, 23 Aug 2017 20:28:28 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7NKSR42077789; Wed, 23 Aug 2017 20:28:27 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7NKSPkv077763; Wed, 23 Aug 2017 20:28:25 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201708232028.v7NKSPkv077763@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Wed, 23 Aug 2017 20:28:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322822 - in projects/zfsd/head/tests/sys/cddl/zfs: bin include tests/bootfs tests/cache tests/cachefile tests/cli_root/zfs_copies tests/cli_root/zfs_get tests/cli_root/zfs_mount tests/... X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/zfsd/head/tests/sys/cddl/zfs: bin include tests/bootfs tests/cache tests/cachefile tests/cli_root/zfs_copies tests/cli_root/zfs_get tests/cli_root/zfs_mount tests/cli_root/zfs_promote test... X-SVN-Commit-Revision: 322822 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Wed, 23 Aug 2017 20:28:29 -0000 Author: asomers Date: Wed Aug 23 20:28:25 2017 New Revision: 322822 URL: https://svnweb.freebsd.org/changeset/base/322822 Log: Remove the ZFS test suite's dependency on sysutils/mkfile mkfile is so small (7.6KB) that it makes more sense to import its source directly than to manage it through ports. tests/sys/cddl/zfs/bin/Makefile tests/sys/cddl/zfs/bin/mkfile.c tests/sys/cddl/zfs/include/commands.txt Import mkfile, add it to the build, and make it available to the ZFS test suite. tests/sys/cddl/zfs/tests/**/*_test.sh Remove the "require.progs" check for mkfile tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_005_neg.ksh tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_missing_005_pos.ksh tests/sys/cddl/zfs/tests/hotplug/setup.ksh tests/sys/cddl/zfs/tests/remote/cross_endian/cross_endian_001_pos.ksh tests/sys/cddl/zfs/tests/remote/cross_endian/setup.ksh tests/sys/cddl/zfs/tests/rsend/rsend_009_pos.ksh tests/sys/cddl/zfs/tests/userquota/groupspace_002_pos.ksh tests/sys/cddl/zfs/tests/userquota/userquota_001_pos.ksh tests/sys/cddl/zfs/tests/userquota/userquota_004_pos.ksh Use truncate instead of mkfile to create file-backed vdevs. Truncate is faster because it creates sparse files. MFC after: 3 weeks Obtained from: http://www.infolab.ne.jp/~hatanou/freebsd/mkfile Sponsored by: Spectra Logic Corp Added: projects/zfsd/head/tests/sys/cddl/zfs/bin/mkfile.c (contents, props changed) Modified: projects/zfsd/head/tests/sys/cddl/zfs/bin/Makefile projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt projects/zfsd/head/tests/sys/cddl/zfs/include/constants.cfg projects/zfsd/head/tests/sys/cddl/zfs/tests/bootfs/bootfs_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cache/cache_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cachefile/cachefile_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_copies/zfs_copies_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_get/zfs_get_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_mount/zfs_mount_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_promote/zfs_promote_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_receive/zfs_receive_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_005_neg.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool/zpool_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_clear/zpool_clear_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_export/zpool_export_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_missing_005_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_scrub/zpool_scrub_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_set/zpool_set_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_user/misc/misc_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/compression/compression_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/history/history_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/hotplug/hotplug_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/hotplug/setup.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/hotspare/hotspare_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/refquota/refquota_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/refreserv/refreserv_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/remote/cross_endian/cross_endian_001_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/remote/cross_endian/cross_endian_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/remote/cross_endian/setup.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/rsend/rsend_009_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/rsend/rsend_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/slog/slog_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/snapshot/snapshot_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/snapused/snapused_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/userquota/groupspace_002_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/userquota/userquota_001_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/userquota/userquota_004_pos.ksh projects/zfsd/head/tests/sys/cddl/zfs/tests/userquota/userquota_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/xattr/xattr_test.sh projects/zfsd/head/tests/sys/cddl/zfs/tests/zfsd/zfsd_test.sh Modified: projects/zfsd/head/tests/sys/cddl/zfs/bin/Makefile ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/bin/Makefile Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/bin/Makefile Wed Aug 23 20:28:25 2017 (r322822) @@ -44,6 +44,7 @@ PROGS+= file_check PROGS+= file_trunc PROGS+= file_write PROGS+= largest_file +PROGS+= mkfile PROGS+= mktree PROGS+= mmapwrite PROGS+= randfree_file Added: projects/zfsd/head/tests/sys/cddl/zfs/bin/mkfile.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/zfsd/head/tests/sys/cddl/zfs/bin/mkfile.c Wed Aug 23 20:28:25 2017 (r322822) @@ -0,0 +1,213 @@ +/*- + * Copyright (c) 2001-2013 + * HATANO Tomomi. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char rcsid[] = "$Id: mkfile.c,v 1.5 2013-10-26 10:11:34+09 hatanou Exp $"; +#endif /* !lint */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MKFILE_WBUF ((size_t)(1048576)) /* Is 1M a reasonable value? */ + +/* SunOS's mkfile(8) sets "sticky bit." */ +#define MKFILE_FLAG (O_WRONLY | O_CREAT | O_TRUNC) +#define MKFILE_MODE (S_IRUSR | S_IWUSR | S_ISVTX) + +static char buf[MKFILE_WBUF]; +static int nofill = 0; +static int verbose = 0; + +static void +usage() +{ + fprintf(stderr, + "Usage: mkfile [-nv] [e|p|t|g|m|k|b] ...\n"); +} + +static unsigned long long +getsize(char *s) +{ + int sh; + unsigned long long length; + char *suffix; + + /* + * NOTE: We don't handle 'Z' (zetta) or 'Y' (yotta) suffixes yet. + * These are too large to store in unsigned long long (64bits). + * In the future, we'll have to use larger type, + * something like uint128_t. + */ + length = strtoull(s, &suffix, 10); + sh = 0; + switch (tolower(*suffix)) { + case 'e': /* Exabytes. */ + sh = 60; + break; + case 'p': /* Petabytes. */ + sh = 50; + break; + case 't': /* Terabytes. */ + sh = 40; + break; + case 'g': /* Gigabytes. */ + sh = 30; + break; + case 'm': /* Megabytes. */ + sh = 20; + break; + case 'k': /* Kilobytes. */ + sh = 10; + break; + case 'b': /* Blocks. */ + sh = 9; + break; + case '\0': /* Bytes. */ + break; + default: /* Unknown... */ + errno = EINVAL; + return 0; + } + if (sh) { + unsigned long long l; + + l = length; + length <<= sh; + /* Check overflow. */ + if ((length >> sh) != l) { + errno = ERANGE; + return 0; + } + } + + return length; +} + +static int +create_file(char *f, unsigned long long s) +{ + int fd; + size_t w; + ssize_t ws; + + if (verbose) { + fprintf(stdout, "%s %llu bytes\n", f, s); + fflush(stdout); + } + + /* Open file to create. */ + if ((fd = open(f, MKFILE_FLAG, MKFILE_MODE)) < 0) { + return -1; + } + + /* Seek to the end and write 1 byte. */ + if ((lseek(fd, (off_t)(s - 1LL), SEEK_SET) == (off_t)-1) || + (write(fd, buf, (size_t)1) == (ssize_t)-1)) { + /* + * We don't close(fd) here to avoid overwriting errno. + * This is fd-leak, but is not harmful + * because returning error causes mkfile(8) to exit. + */ + return -1; + } + + /* Fill. */ + if (!nofill) { + if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) { + /* Same as above. */ + return -1; + } + while (s) { + w = (s > MKFILE_WBUF) ? MKFILE_WBUF : s; + if ((ws = write(fd, buf, w)) == (ssize_t)-1) { + /* Same as above. */ + return -1; + } + s -= ws; + } + } + close(fd); + + return 0; +} + +int +main(int argc, char *argv[]) +{ + unsigned long long fsize; + char ch; + + /* We have at least 2 arguments. */ + if (argc < 3) { + usage(); + return EXIT_FAILURE; + } + + /* Options. */ + while ((ch = getopt(argc, argv, "nv")) != -1) { + switch (ch) { + case 'n': + nofill = 1; + break; + case 'v': + verbose = 1; + break; + default: + usage(); + return EXIT_FAILURE; + } + } + argc -= optind; + argv += optind; + + /* File size to create. */ + if ((fsize = getsize(*argv)) == 0) { + perror(*argv); + return EXIT_FAILURE; + } + + /* Filenames to create. */ + bzero(buf, MKFILE_WBUF); + while (++argv, --argc) { + if (create_file(*argv, fsize) == -1) { + perror(*argv); + unlink(*argv); + return EXIT_FAILURE; + } + } + + return EXIT_SUCCESS; +} Modified: projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/include/commands.txt Wed Aug 23 20:28:25 2017 (r322822) @@ -108,7 +108,6 @@ #/usr/sbin/metainit #/usr/sbin/metastat /bin/mkdir -/usr/local/sbin/mkfile /sbin/mknod #/usr/sbin/modinfo #/usr/sbin/modunload @@ -154,6 +153,7 @@ /usr/bin/touch /usr/bin/tr /usr/bin/true +/usr/bin/truncate /sbin/tunefs #/usr/sbin/ufsdump #/usr/sbin/ufsrestore Modified: projects/zfsd/head/tests/sys/cddl/zfs/include/constants.cfg ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/include/constants.cfg Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/include/constants.cfg Wed Aug 23 20:28:25 2017 (r322822) @@ -22,6 +22,7 @@ export FILE_WRITE="file_write" export FILE_CHECK="file_check" export LARGEST_FILE="largest_file" export MMAPWRITE="mmapwrite" +export MKFILE="mkfile" export READMMAP="readmmap" export FILE_TRUNC="file_trunc" export CHG_USR_EXEC="chg_usr_exec" Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/bootfs/bootfs_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/bootfs/bootfs_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/bootfs/bootfs_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -28,7 +28,7 @@ atf_test_case bootfs_001_pos bootfs_001_pos_head() { atf_set "descr" "Valid datasets are accepted as bootfs property values" - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs } bootfs_001_pos_body() { @@ -60,7 +60,7 @@ atf_test_case bootfs_003_pos bootfs_003_pos_head() { atf_set "descr" "Valid pool names are accepted by zpool set bootfs" - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs } bootfs_003_pos_body() { @@ -76,7 +76,7 @@ atf_test_case bootfs_004_neg bootfs_004_neg_head() { atf_set "descr" "Invalid pool names are rejected by zpool set bootfs" - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs } bootfs_004_neg_body() { @@ -108,7 +108,7 @@ atf_test_case bootfs_006_pos bootfs_006_pos_head() { atf_set "descr" "Pools of correct vdev types accept boot property" - atf_set "require.progs" zfs zpool mkfile + atf_set "require.progs" zfs zpool } bootfs_006_pos_body() { @@ -140,7 +140,7 @@ atf_test_case bootfs_008_neg bootfs_008_neg_head() { atf_set "descr" "setting bootfs on a dataset which has gzip compression enabled will fail" - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs } bootfs_008_neg_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cache/cache_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cache/cache_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cache/cache_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -28,7 +28,7 @@ atf_test_case cache_001_pos cleanup cache_001_pos_head() { atf_set "descr" "Creating a pool with a cache device succeeds." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_001_pos_body() @@ -56,7 +56,7 @@ atf_test_case cache_002_pos cleanup cache_002_pos_head() { atf_set "descr" "Adding a cache device to normal pool works." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_002_pos_body() @@ -84,7 +84,7 @@ atf_test_case cache_003_pos cleanup cache_003_pos_head() { atf_set "descr" "Adding an extra cache device works." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_003_pos_body() @@ -112,7 +112,7 @@ atf_test_case cache_004_neg cleanup cache_004_neg_head() { atf_set "descr" "Attaching a cache device fails." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_004_neg_body() @@ -140,7 +140,7 @@ atf_test_case cache_005_neg cleanup cache_005_neg_head() { atf_set "descr" "Replacing a cache device fails." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_005_neg_body() @@ -168,7 +168,7 @@ atf_test_case cache_006_pos cleanup cache_006_pos_head() { atf_set "descr" "Exporting and importing pool with cache devices passes." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_006_pos_body() @@ -196,7 +196,7 @@ atf_test_case cache_007_neg cleanup cache_007_neg_head() { atf_set "descr" "A mirror/raidz/raidz2 cache is not supported." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_007_neg_body() @@ -224,7 +224,7 @@ atf_test_case cache_008_neg cleanup cache_008_neg_head() { atf_set "descr" "A raidz/raidz2 cache can not be added to existed pool." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_008_neg_body() @@ -252,7 +252,7 @@ atf_test_case cache_009_pos cleanup cache_009_pos_head() { atf_set "descr" "Offline and online a cache device succeed." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_009_pos_body() @@ -280,7 +280,7 @@ atf_test_case cache_010_neg cleanup cache_010_neg_head() { atf_set "descr" "Cache device can only be disk or slice." - atf_set "require.progs" zfs zpool mkfile + atf_set "require.progs" zfs zpool atf_set "timeout" 1200 } cache_010_neg_body() @@ -308,7 +308,7 @@ atf_test_case cache_011_pos cleanup cache_011_pos_head() { atf_set "descr" "Remove cache device from pool with spare device should succeed" - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 1200 } cache_011_pos_body() Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cachefile/cachefile_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cachefile/cachefile_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cachefile/cachefile_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -79,7 +79,7 @@ atf_test_case cachefile_004_pos cachefile_004_pos_head() { atf_set "descr" "Verify set, export and destroy when cachefile is set on pool." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } cachefile_004_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_copies/zfs_copies_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_copies/zfs_copies_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_copies/zfs_copies_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -55,7 +55,7 @@ atf_test_case zfs_copies_002_pos cleanup zfs_copies_002_pos_head() { atf_set "descr" "Verify that the space used by multiple copies is charged correctly." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_copies_002_pos_body() { @@ -164,7 +164,7 @@ atf_test_case zfs_copies_006_pos cleanup zfs_copies_006_pos_head() { atf_set "descr" "Verify that ZFS volume space used by multiple copies is charged correctly." - atf_set "require.progs" mkfile zfs + atf_set "require.progs" zfs } zfs_copies_006_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_get/zfs_get_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_get/zfs_get_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_get/zfs_get_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -116,7 +116,7 @@ atf_test_case zfs_get_004_pos cleanup zfs_get_004_pos_head() { atf_set "descr" "Verify the functions of 'zfs get all' work." - atf_set "require.progs" zfs zpool mkfile + atf_set "require.progs" zfs zpool } zfs_get_004_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_mount/zfs_mount_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_mount/zfs_mount_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_mount/zfs_mount_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -220,7 +220,7 @@ atf_test_case zfs_mount_008_pos cleanup zfs_mount_008_pos_head() { atf_set "descr" "Verify 'zfs mount -O' will override existing mount point." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_mount_008_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_promote/zfs_promote_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_promote/zfs_promote_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_promote/zfs_promote_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -28,7 +28,7 @@ atf_test_case zfs_promote_001_pos cleanup zfs_promote_001_pos_head() { atf_set "descr" "'zfs promote' can promote a clone filesystem." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_promote_001_pos_body() { @@ -55,7 +55,7 @@ atf_test_case zfs_promote_002_pos cleanup zfs_promote_002_pos_head() { atf_set "descr" "'zfs promote' can deal with multiple snapshots in a filesystem." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_promote_002_pos_body() { @@ -82,7 +82,7 @@ atf_test_case zfs_promote_003_pos cleanup zfs_promote_003_pos_head() { atf_set "descr" "'zfs promote' can deal with multi-point snapshots." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_promote_003_pos_body() { @@ -109,7 +109,7 @@ atf_test_case zfs_promote_004_pos cleanup zfs_promote_004_pos_head() { atf_set "descr" "'zfs promote' can deal with multi-level clone." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_promote_004_pos_body() { @@ -190,7 +190,7 @@ atf_test_case zfs_promote_007_neg cleanup zfs_promote_007_neg_head() { atf_set "descr" "'zfs promote' can deal with name conflicts." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_promote_007_neg_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_receive/zfs_receive_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_receive/zfs_receive_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_receive/zfs_receive_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -78,7 +78,7 @@ atf_test_case zfs_receive_003_pos cleanup zfs_receive_003_pos_head() { atf_set "descr" "'zfs recv -F' to force rollback." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_receive_003_pos_body() { @@ -153,7 +153,7 @@ atf_test_case zfs_receive_006_pos cleanup zfs_receive_006_pos_head() { atf_set "descr" "'zfs recv -d ' should succeed no matter ancestor filesystemexists." - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_receive_006_pos_body() { @@ -178,7 +178,7 @@ atf_test_case zfs_receive_007_neg cleanup zfs_receive_007_neg_head() { atf_set "descr" "'zfs recv -F' should fail if the incremental stream does not match" - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_receive_007_neg_body() { @@ -203,7 +203,7 @@ atf_test_case zfs_receive_008_pos cleanup zfs_receive_008_pos_head() { atf_set "descr" "Verifying 'zfs receive -vn []and zfs receive -vn -d '" - atf_set "require.progs" zfs mkfile + atf_set "require.progs" zfs } zfs_receive_008_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_005_neg.ksh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_005_neg.ksh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_005_neg.ksh Wed Aug 23 20:28:25 2017 (r322822) @@ -80,7 +80,7 @@ log_assert "'zfs rename' should fail while datasets ar additional_setup typeset FILESIZE=64m -log_must $MKFILE $FILESIZE $TESTDIR/$TESTFILE1 +log_must $TRUNCATE -s $FILESIZE $TESTDIR/$TESTFILE1 create_pool $TESTPOOL1 $TESTDIR/$TESTFILE1 for src in ${src_dataset[@]} ; do Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zfs_rename/zfs_rename_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -136,7 +136,7 @@ atf_test_case zfs_rename_005_neg cleanup zfs_rename_005_neg_head() { atf_set "descr" "'zfs rename' should fail while datasets are within different pool." - atf_set "require.progs" mkfile zfs + atf_set "require.progs" zfs } zfs_rename_005_neg_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool/zpool_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool/zpool_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool/zpool_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -53,7 +53,7 @@ atf_test_case zpool_002_pos cleanup zpool_002_pos_head() { atf_set "descr" "With ZFS_ABORT set, all zpool commands can abort and generate a core file." - atf_set "require.progs" mkfile zpool coreadm + atf_set "require.progs" zpool coreadm } zpool_002_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_add/zpool_add_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -175,7 +175,7 @@ zpool_add_006_pos_head() { atf_set "descr" "'zpool add [-f]' can add large numbers of vdevs to the specified pool without any errors." atf_set "require.config" disks_are_physical - atf_set "require.progs" zfs mkfile zpool + atf_set "require.progs" zfs zpool atf_set "timeout" 2400 } zpool_add_006_pos_body() Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_clear/zpool_clear_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_clear/zpool_clear_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_clear/zpool_clear_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -28,7 +28,7 @@ atf_test_case zpool_clear_001_pos cleanup zpool_clear_001_pos_head() { atf_set "descr" "Verify 'zpool clear' can clear errors of a storage pool." - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs atf_set "timeout" 2100 } zpool_clear_001_pos_body() @@ -54,7 +54,7 @@ atf_test_case zpool_clear_002_neg cleanup zpool_clear_002_neg_head() { atf_set "descr" "Execute 'zpool clear' using invalid parameters." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2100 } zpool_clear_002_neg_body() @@ -80,7 +80,7 @@ atf_test_case zpool_clear_003_neg cleanup zpool_clear_003_neg_head() { atf_set "descr" "Verify 'zpool clear' cannot clear error for available spare devices." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2100 } zpool_clear_003_neg_body() @@ -105,7 +105,7 @@ atf_test_case zpool_clear_004_pos cleanup zpool_clear_004_pos_head() { atf_set "descr" "Verify 'zpool clear' can work on spare vdevs" - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2100 } zpool_clear_004_pos_body() Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -29,7 +29,7 @@ zpool_create_001_pos_head() { atf_set "descr" "'zpool create ...' can successfully createa new pool with a name in ZFS namespace." atf_set "require.config" disks_are_physical - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2400 } zpool_create_001_pos_body() @@ -58,7 +58,7 @@ zpool_create_002_pos_head() { atf_set "descr" "'zpool create -f ...' can successfully createa new pool in some cases." atf_set "require.config" disks_are_physical - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2400 } zpool_create_002_pos_body() @@ -116,7 +116,7 @@ zpool_create_004_pos_head() { atf_set "descr" "'zpool create [-f]' can create a storage pool with large numbers of vdevswithout any errors." atf_set "require.config" disks_are_physical - atf_set "require.progs" zfs mkfile zpool + atf_set "require.progs" zfs zpool atf_set "timeout" 2400 } zpool_create_004_pos_body() @@ -145,7 +145,7 @@ zpool_create_005_pos_head() { atf_set "descr" "'zpool create [-R root][-m mountpoint] ...' can createan alternate pool or a new pool mounted at the specified mountpoint." atf_set "require.config" disks_are_physical - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs atf_set "timeout" 2400 } zpool_create_005_pos_body() @@ -174,7 +174,7 @@ zpool_create_006_pos_head() { atf_set "descr" "Verify 'zpool create' succeed with keywords combination." atf_set "require.config" disks_are_physical - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool atf_set "timeout" 2400 } zpool_create_006_pos_body() @@ -290,7 +290,7 @@ zpool_create_010_neg_head() { atf_set "descr" "'zpool create' should return an error with VDEVs <64mb" atf_set "require.config" disks_are_physical - atf_set "require.progs" zfs mkfile zpool + atf_set "require.progs" zfs zpool atf_set "timeout" 2400 } zpool_create_010_neg_body() @@ -406,7 +406,7 @@ zpool_create_014_neg_head() { atf_set "descr" "'zpool create' should fail with regular file in swap." atf_set "require.config" disks_are_physical - atf_set "require.progs" zfs mkfile swap zpool + atf_set "require.progs" zfs swap zpool atf_set "timeout" 2400 } zpool_create_014_neg_body() Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_export/zpool_export_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_export/zpool_export_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_export/zpool_export_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -103,7 +103,7 @@ atf_test_case zpool_export_004_pos cleanup zpool_export_004_pos_head() { atf_set "descr" "Verify zpool export succeed or fail with spare." - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_export_004_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_missing_005_pos.ksh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_missing_005_pos.ksh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_missing_005_pos.ksh Wed Aug 23 20:28:25 2017 (r322822) @@ -91,10 +91,10 @@ function cleanup } log_onexit cleanup -log_must $MKFILE 64m $REGULAR -log_must $MKFILE 64m $LOG -log_must $MKFILE 64m $CACHE -log_must $MKFILE 64m $SPARE +log_must $TRUNCATE -s 64m $REGULAR +log_must $TRUNCATE -s 64m $LOG +log_must $TRUNCATE -s 64m $CACHE +log_must $TRUNCATE -s 64m $SPARE log_must $MDCONFIG -t vnode -a -f $REGULAR -u $REGULAR_U log_must $MDCONFIG -t vnode -a -f $LOG -u $LOG_U log_must $MDCONFIG -t vnode -a -f $CACHE -u $CACHE_U Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_import/zpool_import_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -29,7 +29,7 @@ zpool_import_002_pos_head() { atf_set "descr" "Verify that an exported pool can be imported and cannot be imported more than once." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool sum mkfile zdb + atf_set "require.progs" zfs zpool sum zdb atf_set "timeout" 2400 } zpool_import_002_pos_body() @@ -56,7 +56,7 @@ zpool_import_003_pos_head() { atf_set "descr" "Destroyed pools are not listed unless with -D option is specified." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs atf_set "timeout" 2400 } zpool_import_003_pos_body() @@ -83,7 +83,7 @@ zpool_import_004_pos_head() { atf_set "descr" "Destroyed pools devices was moved to another directory,it still can be imported correctly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_004_pos_body() @@ -110,7 +110,7 @@ zpool_import_005_pos_head() { atf_set "descr" "Destroyed pools devices was renamed, it still can be importedcorrectly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_005_pos_body() @@ -137,7 +137,7 @@ zpool_import_006_pos_head() { atf_set "descr" "For mirror, N-1 destroyed pools devices was removed or usedby other pool, it still can be imported correctly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_006_pos_body() @@ -164,7 +164,7 @@ zpool_import_007_pos_head() { atf_set "descr" "For raidz, one destroyed pools devices was removed or used byother pool, it still can be imported correctly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_007_pos_body() @@ -191,7 +191,7 @@ zpool_import_008_pos_head() { atf_set "descr" "For raidz2, two destroyed pools devices was removed or used byother pool, it still can be imported correctly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_008_pos_body() @@ -218,7 +218,7 @@ zpool_import_009_neg_head() { atf_set "descr" "Badly-formed 'zpool import' with inapplicable scenariosshould return an error." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool mkfile + atf_set "require.progs" zfs zpool atf_set "timeout" 2400 } zpool_import_009_neg_body() @@ -245,7 +245,7 @@ zpool_import_010_pos_head() { atf_set "descr" "'zpool -D -a' can import all the specified directoriesdestroyed pools." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs atf_set "timeout" 2400 } zpool_import_010_pos_body() @@ -272,7 +272,7 @@ zpool_import_011_neg_head() { atf_set "descr" "For strip pool, any destroyed pool devices was demaged,zpool import -D will failed." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_011_neg_body() @@ -299,7 +299,7 @@ zpool_import_012_pos_head() { atf_set "descr" "Verify all mount & share status of sub-filesystems within a poolcan be restored after import [-Df]." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool mkfile zdb share + atf_set "require.progs" zfs zpool zdb share atf_set "timeout" 2400 } zpool_import_012_pos_body() @@ -326,7 +326,7 @@ zpool_import_013_neg_head() { atf_set "descr" "'zpool import' fail while pool may be in use from other system,it need import forcefully." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool mkfile + atf_set "require.progs" zfs zpool atf_set "timeout" 2400 } zpool_import_013_neg_body() @@ -379,7 +379,7 @@ zpool_import_all_001_pos_head() { atf_set "descr" "Verify that 'zpool import -a' succeeds as root." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool sum mkfile + atf_set "require.progs" zfs zpool sum atf_set "timeout" 2400 } zpool_import_all_001_pos_body() @@ -407,7 +407,7 @@ zpool_import_missing_001_pos_head() { atf_set "descr" "Verify that import could handle damaged or missing device." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zfs sum zpool zdb + atf_set "require.progs" zfs sum zpool zdb atf_set "timeout" 2400 } zpool_import_missing_001_pos_body() @@ -434,7 +434,7 @@ zpool_import_missing_002_pos_head() { atf_set "descr" "Verify that import could handle moving device." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool zfs zdb + atf_set "require.progs" zpool zfs zdb atf_set "timeout" 2400 } zpool_import_missing_002_pos_body() @@ -461,7 +461,7 @@ zpool_import_missing_003_pos_head() { atf_set "descr" "Verify that import could handle device overlapped." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool sum zfs + atf_set "require.progs" zpool sum zfs atf_set "timeout" 2400 } zpool_import_missing_003_pos_body() @@ -486,7 +486,7 @@ atf_test_case zpool_import_missing_004_pos zpool_import_missing_004_pos_head() { atf_set "descr" "Verify that zpool import succeeds when devices are missing" - atf_set "require.progs" mkfile zfs zpool + atf_set "require.progs" zfs zpool atf_set "timeout" 300 } zpool_import_missing_004_pos_body() @@ -502,7 +502,7 @@ atf_test_case zpool_import_missing_005_pos zpool_import_missing_005_pos_head() { atf_set "descr" "Verify that zpool import succeeds when devices of all types have been renamed" - atf_set "require.progs" mkfile mdconfig zfs zpool + atf_set "require.progs" mdconfig zfs zpool atf_set "timeout" 300 } zpool_import_missing_005_pos_body() @@ -520,7 +520,7 @@ zpool_import_rename_001_pos_head() { atf_set "descr" "Verify that an imported pool can be renamed." atf_set "require.config" at_least_2_disks - atf_set "require.progs" zfs zpool sum mkfile zdb + atf_set "require.progs" zfs zpool sum zdb atf_set "timeout" 2400 } zpool_import_rename_001_pos_body() Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_scrub/zpool_scrub_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_scrub/zpool_scrub_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_scrub/zpool_scrub_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -29,7 +29,7 @@ zpool_scrub_001_neg_head() { atf_set "descr" "Execute 'zpool scrub' using invalid parameters." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_scrub_001_neg_body() { @@ -55,7 +55,7 @@ zpool_scrub_002_pos_head() { atf_set "descr" "Verify scrub -s works correctly." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_scrub_002_pos_body() { @@ -81,7 +81,7 @@ zpool_scrub_003_pos_head() { atf_set "descr" "scrub command terminates the existing scrub process and starts a new scrub." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_scrub_003_pos_body() { @@ -107,7 +107,7 @@ zpool_scrub_004_pos_head() { atf_set "descr" "Resilver prevent scrub from starting until the resilver completes" atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_scrub_004_pos_body() { @@ -133,7 +133,7 @@ zpool_scrub_005_pos_head() { atf_set "descr" "When scrubbing, detach device should not break system." atf_set "require.config" at_least_2_disks - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_scrub_005_pos_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_set/zpool_set_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_set/zpool_set_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_root/zpool_set/zpool_set_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -43,7 +43,7 @@ atf_test_case zpool_set_002_neg zpool_set_002_neg_head() { atf_set "descr" "Malformed zpool set commands are rejected" - atf_set "require.progs" mkfile zpool zfs + atf_set "require.progs" zpool zfs } zpool_set_002_neg_body() { @@ -58,7 +58,7 @@ atf_test_case zpool_set_003_neg zpool_set_003_neg_head() { atf_set "descr" "zpool set cannot set a readonly property" - atf_set "require.progs" mkfile zpool + atf_set "require.progs" zpool } zpool_set_003_neg_body() { Modified: projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_user/misc/misc_test.sh ============================================================================== --- projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_user/misc/misc_test.sh Wed Aug 23 19:00:06 2017 (r322821) +++ projects/zfsd/head/tests/sys/cddl/zfs/tests/cli_user/misc/misc_test.sh Wed Aug 23 20:28:25 2017 (r322822) @@ -28,7 +28,7 @@ atf_test_case zdb_001_neg cleanup zdb_001_neg_head() { atf_set "descr" "zdb can't run as a user on datasets, but can run without arguments" - atf_set "require.progs" zfs mkfile fgrep zpool zdb + atf_set "require.progs" zfs fgrep zpool zdb atf_set "require.user" root } zdb_001_neg_body() @@ -54,7 +54,7 @@ atf_test_case zfs_001_neg cleanup zfs_001_neg_head() { atf_set "descr" "zfs shows a usage message when run as a user" - atf_set "require.progs" zfs mkfile fgrep zpool + atf_set "require.progs" zfs fgrep zpool atf_set "require.user" root } zfs_001_neg_body() @@ -80,7 +80,7 @@ atf_test_case zfs_allow_001_neg cleanup zfs_allow_001_neg_head() { atf_set "descr" "zfs allow returns an error when run as a user" - atf_set "require.progs" zfs mkfile fgrep logname zpool + atf_set "require.progs" zfs fgrep logname zpool atf_set "require.user" root } zfs_allow_001_neg_body() @@ -106,7 +106,7 @@ atf_test_case zfs_clone_001_neg cleanup zfs_clone_001_neg_head() { atf_set "descr" "zfs clone returns an error when run as a user" - atf_set "require.progs" zfs mkfile fgrep zpool + atf_set "require.progs" zfs fgrep zpool atf_set "require.user" root } zfs_clone_001_neg_body() @@ -132,7 +132,7 @@ atf_test_case zfs_create_001_neg cleanup zfs_create_001_neg_head() { atf_set "descr" "Verify zfs create without parameters fails." - atf_set "require.progs" zfs mkfile fgrep zpool + atf_set "require.progs" zfs fgrep zpool atf_set "require.user" root *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Fri Aug 25 02:48:36 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5340DDED91A for ; Fri, 25 Aug 2017 02:48:36 +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 mx1.freebsd.org (Postfix) with ESMTPS id CF5236F93B; Fri, 25 Aug 2017 02:48:35 +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 v7P2mZtn023523; Fri, 25 Aug 2017 02:48:35 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7P2mVTV023490; Fri, 25 Aug 2017 02:48:31 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708250248.v7P2mVTV023490@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Fri, 25 Aug 2017 02:48:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322871 - in projects/runtime-coverage: . bin/pkill cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: . bin/pkill cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris/lib/libzfs/common cddl/u... X-SVN-Commit-Revision: 322871 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 25 Aug 2017 02:48:36 -0000 Author: ngie Date: Fri Aug 25 02:48:31 2017 New Revision: 322871 URL: https://svnweb.freebsd.org/changeset/base/322871 Log: MFhead@r322870 Added: projects/runtime-coverage/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d - copied unchanged from r322870, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d projects/runtime-coverage/contrib/zstd/lib/common/compiler.h - copied unchanged from r322870, head/contrib/zstd/lib/common/compiler.h projects/runtime-coverage/contrib/zstd/tests/files/ - copied from r322870, head/contrib/zstd/tests/files/ projects/runtime-coverage/contrib/zstd/tests/fuzz/ - copied from r322870, head/contrib/zstd/tests/fuzz/ projects/runtime-coverage/contrib/zstd/tests/poolTests.c - copied unchanged from r322870, head/contrib/zstd/tests/poolTests.c projects/runtime-coverage/lib/clang/Makefile.inc - copied unchanged from r322870, head/lib/clang/Makefile.inc projects/runtime-coverage/lib/libc/amd64/sys/amd64_detect_rdfsgsbase.c - copied unchanged from r322870, head/lib/libc/amd64/sys/amd64_detect_rdfsgsbase.c projects/runtime-coverage/lib/libc/amd64/sys/amd64_detect_rdfsgsbase.h - copied unchanged from r322870, head/lib/libc/amd64/sys/amd64_detect_rdfsgsbase.h projects/runtime-coverage/share/man/man4/mlx5ib.4 - copied unchanged from r322870, head/share/man/man4/mlx5ib.4 projects/runtime-coverage/sys/compat/linuxkpi/common/include/asm/msr.h - copied unchanged from r322870, head/sys/compat/linuxkpi/common/include/asm/msr.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/atomic.h - copied unchanged from r322870, head/sys/compat/linuxkpi/common/include/linux/atomic.h projects/runtime-coverage/sys/dev/mlx5/mlx5_ib/ - copied from r322870, head/sys/dev/mlx5/mlx5_ib/ projects/runtime-coverage/sys/modules/mlx5ib/ - copied from r322870, head/sys/modules/mlx5ib/ Deleted: projects/runtime-coverage/contrib/zstd/PATENTS projects/runtime-coverage/contrib/zstd/tests/pool.c Modified: projects/runtime-coverage/Makefile.inc1 projects/runtime-coverage/bin/pkill/pkill.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c projects/runtime-coverage/cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile projects/runtime-coverage/cddl/usr.sbin/zfsd/zfsd_event.cc projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S projects/runtime-coverage/contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp projects/runtime-coverage/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c projects/runtime-coverage/contrib/libc++/include/string projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h projects/runtime-coverage/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h projects/runtime-coverage/contrib/llvm/include/llvm/Object/COFFImportFile.h projects/runtime-coverage/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/runtime-coverage/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/runtime-coverage/contrib/llvm/lib/CodeGen/VirtRegMap.cpp projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp projects/runtime-coverage/contrib/llvm/lib/IR/AutoUpgrade.cpp projects/runtime-coverage/contrib/llvm/lib/Object/COFFImportFile.cpp projects/runtime-coverage/contrib/llvm/lib/Object/COFFModuleDefinition.cpp projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/runtime-coverage/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/runtime-coverage/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/runtime-coverage/contrib/llvm/lib/Target/X86/X86SchedSandyBridge.td projects/runtime-coverage/contrib/llvm/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp projects/runtime-coverage/contrib/llvm/lib/ToolDrivers/llvm-dlltool/Options.td projects/runtime-coverage/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Scalar/BDCE.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp projects/runtime-coverage/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp projects/runtime-coverage/contrib/llvm/tools/clang/include/clang-c/Index.h projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/runtime-coverage/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/Mips.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/MSVC.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/MinGW.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Driver/ToolChains/NetBSD.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Headers/unwind.h projects/runtime-coverage/contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaCast.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/runtime-coverage/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp projects/runtime-coverage/contrib/llvm/tools/lld/COFF/Driver.cpp projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Driver.cpp projects/runtime-coverage/contrib/llvm/tools/lld/ELF/Options.td projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp projects/runtime-coverage/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContext_x86.h projects/runtime-coverage/contrib/llvm/tools/llvm-objdump/llvm-objdump.cpp projects/runtime-coverage/contrib/netbsd-tests/usr.bin/grep/t_grep.sh projects/runtime-coverage/contrib/top/loadavg.h projects/runtime-coverage/contrib/zstd/CONTRIBUTING.md projects/runtime-coverage/contrib/zstd/Makefile projects/runtime-coverage/contrib/zstd/NEWS projects/runtime-coverage/contrib/zstd/README.md projects/runtime-coverage/contrib/zstd/circle.yml projects/runtime-coverage/contrib/zstd/doc/educational_decoder/harness.c projects/runtime-coverage/contrib/zstd/doc/educational_decoder/zstd_decompress.c projects/runtime-coverage/contrib/zstd/doc/educational_decoder/zstd_decompress.h projects/runtime-coverage/contrib/zstd/doc/zstd_compression_format.md projects/runtime-coverage/contrib/zstd/doc/zstd_manual.html projects/runtime-coverage/contrib/zstd/lib/common/bitstream.h projects/runtime-coverage/contrib/zstd/lib/common/error_private.c projects/runtime-coverage/contrib/zstd/lib/common/error_private.h projects/runtime-coverage/contrib/zstd/lib/common/fse.h projects/runtime-coverage/contrib/zstd/lib/common/fse_decompress.c projects/runtime-coverage/contrib/zstd/lib/common/huf.h projects/runtime-coverage/contrib/zstd/lib/common/mem.h projects/runtime-coverage/contrib/zstd/lib/common/pool.c projects/runtime-coverage/contrib/zstd/lib/common/pool.h projects/runtime-coverage/contrib/zstd/lib/common/threading.h projects/runtime-coverage/contrib/zstd/lib/common/xxhash.c projects/runtime-coverage/contrib/zstd/lib/common/zstd_common.c projects/runtime-coverage/contrib/zstd/lib/common/zstd_errors.h projects/runtime-coverage/contrib/zstd/lib/common/zstd_internal.h projects/runtime-coverage/contrib/zstd/lib/compress/fse_compress.c projects/runtime-coverage/contrib/zstd/lib/compress/huf_compress.c projects/runtime-coverage/contrib/zstd/lib/compress/zstd_compress.c projects/runtime-coverage/contrib/zstd/lib/compress/zstd_opt.h projects/runtime-coverage/contrib/zstd/lib/compress/zstdmt_compress.c projects/runtime-coverage/contrib/zstd/lib/compress/zstdmt_compress.h projects/runtime-coverage/contrib/zstd/lib/decompress/huf_decompress.c projects/runtime-coverage/contrib/zstd/lib/decompress/zstd_decompress.c projects/runtime-coverage/contrib/zstd/lib/deprecated/zbuff.h projects/runtime-coverage/contrib/zstd/lib/deprecated/zbuff_common.c projects/runtime-coverage/contrib/zstd/lib/deprecated/zbuff_compress.c projects/runtime-coverage/contrib/zstd/lib/deprecated/zbuff_decompress.c projects/runtime-coverage/contrib/zstd/lib/dictBuilder/cover.c projects/runtime-coverage/contrib/zstd/lib/dictBuilder/zdict.c projects/runtime-coverage/contrib/zstd/lib/dictBuilder/zdict.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_legacy.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v01.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v01.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v02.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v02.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v03.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v03.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v04.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v04.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v05.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v05.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v06.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v06.h projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v07.c projects/runtime-coverage/contrib/zstd/lib/legacy/zstd_v07.h projects/runtime-coverage/contrib/zstd/lib/zstd.h projects/runtime-coverage/contrib/zstd/programs/.gitignore projects/runtime-coverage/contrib/zstd/programs/Makefile projects/runtime-coverage/contrib/zstd/programs/README.md projects/runtime-coverage/contrib/zstd/programs/bench.c projects/runtime-coverage/contrib/zstd/programs/bench.h projects/runtime-coverage/contrib/zstd/programs/datagen.c projects/runtime-coverage/contrib/zstd/programs/datagen.h projects/runtime-coverage/contrib/zstd/programs/dibio.c projects/runtime-coverage/contrib/zstd/programs/dibio.h projects/runtime-coverage/contrib/zstd/programs/fileio.c projects/runtime-coverage/contrib/zstd/programs/fileio.h projects/runtime-coverage/contrib/zstd/programs/platform.h projects/runtime-coverage/contrib/zstd/programs/util.h projects/runtime-coverage/contrib/zstd/programs/zstd.1 projects/runtime-coverage/contrib/zstd/programs/zstd.1.md projects/runtime-coverage/contrib/zstd/programs/zstdcli.c projects/runtime-coverage/contrib/zstd/tests/Makefile projects/runtime-coverage/contrib/zstd/tests/datagencli.c projects/runtime-coverage/contrib/zstd/tests/decodecorpus.c projects/runtime-coverage/contrib/zstd/tests/fullbench.c projects/runtime-coverage/contrib/zstd/tests/fuzzer.c projects/runtime-coverage/contrib/zstd/tests/invalidDictionaries.c projects/runtime-coverage/contrib/zstd/tests/legacy.c projects/runtime-coverage/contrib/zstd/tests/longmatch.c projects/runtime-coverage/contrib/zstd/tests/namespaceTest.c projects/runtime-coverage/contrib/zstd/tests/paramgrill.c projects/runtime-coverage/contrib/zstd/tests/playTests.sh projects/runtime-coverage/contrib/zstd/tests/roundTripCrash.c projects/runtime-coverage/contrib/zstd/tests/symbols.c projects/runtime-coverage/contrib/zstd/tests/zbufftest.c projects/runtime-coverage/contrib/zstd/tests/zstreamtest.c projects/runtime-coverage/contrib/zstd/zlibWrapper/examples/zwrapbench.c projects/runtime-coverage/contrib/zstd/zlibWrapper/gzcompatibility.h projects/runtime-coverage/contrib/zstd/zlibWrapper/gzlib.c projects/runtime-coverage/contrib/zstd/zlibWrapper/gzread.c projects/runtime-coverage/contrib/zstd/zlibWrapper/gzwrite.c projects/runtime-coverage/contrib/zstd/zlibWrapper/zstd_zlibwrapper.c projects/runtime-coverage/contrib/zstd/zlibWrapper/zstd_zlibwrapper.h projects/runtime-coverage/etc/periodic/daily/200.backup-passwd projects/runtime-coverage/etc/periodic/security/100.chksetuid projects/runtime-coverage/etc/periodic/security/110.neggrpperm projects/runtime-coverage/etc/periodic/security/security.functions projects/runtime-coverage/kerberos5/libexec/kpasswdd/Makefile projects/runtime-coverage/lib/clang/include/clang/Basic/Version.inc projects/runtime-coverage/lib/clang/include/lld/Config/Version.inc projects/runtime-coverage/lib/clang/include/llvm/Support/VCSRevision.h projects/runtime-coverage/lib/libc/amd64/sys/Makefile.inc projects/runtime-coverage/lib/libc/amd64/sys/amd64_get_fsbase.c projects/runtime-coverage/lib/libc/amd64/sys/amd64_get_gsbase.c projects/runtime-coverage/lib/libc/amd64/sys/amd64_set_fsbase.c projects/runtime-coverage/lib/libc/amd64/sys/amd64_set_gsbase.c projects/runtime-coverage/lib/libc/mips/Symbol.map projects/runtime-coverage/lib/libcompiler_rt/Makefile.inc projects/runtime-coverage/release/tools/gce.conf projects/runtime-coverage/share/man/man4/Makefile projects/runtime-coverage/share/man/man4/ddb.4 projects/runtime-coverage/share/man/man7/tests.7 projects/runtime-coverage/share/mk/bsd.lib.mk projects/runtime-coverage/share/mk/bsd.prog.mk projects/runtime-coverage/share/mk/bsd.sys.mk projects/runtime-coverage/sys/amd64/amd64/cpu_switch.S projects/runtime-coverage/sys/amd64/amd64/exception.S projects/runtime-coverage/sys/amd64/amd64/machdep.c projects/runtime-coverage/sys/amd64/amd64/ptrace_machdep.c projects/runtime-coverage/sys/amd64/amd64/sys_machdep.c projects/runtime-coverage/sys/amd64/amd64/trap.c projects/runtime-coverage/sys/amd64/amd64/vm_machdep.c projects/runtime-coverage/sys/amd64/include/asmacros.h projects/runtime-coverage/sys/amd64/include/pcb.h projects/runtime-coverage/sys/amd64/vmm/intel/vmx_msr.c projects/runtime-coverage/sys/arm/arm/sc_machdep.c projects/runtime-coverage/sys/arm64/arm64/genassym.c projects/runtime-coverage/sys/arm64/arm64/pmap.c projects/runtime-coverage/sys/arm64/arm64/swtch.S projects/runtime-coverage/sys/arm64/arm64/vm_machdep.c projects/runtime-coverage/sys/arm64/include/pcb.h projects/runtime-coverage/sys/arm64/include/proc.h projects/runtime-coverage/sys/boot/fdt/dts/arm/zedboard.dts projects/runtime-coverage/sys/boot/fdt/dts/arm/zybo.dts projects/runtime-coverage/sys/cam/cam_iosched.c projects/runtime-coverage/sys/cam/cam_iosched.h projects/runtime-coverage/sys/cam/cam_xpt.c projects/runtime-coverage/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/device.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/fs.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/kobject.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/list.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/lockdep.h projects/runtime-coverage/sys/compat/linuxkpi/common/include/linux/module.h projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_pci.c projects/runtime-coverage/sys/compat/linuxkpi/common/src/linux_rcu.c projects/runtime-coverage/sys/conf/files projects/runtime-coverage/sys/conf/newvers.sh projects/runtime-coverage/sys/dev/isp/isp_freebsd.c projects/runtime-coverage/sys/dev/ixgbe/if_ixv.c projects/runtime-coverage/sys/dev/qlnx/qlnxe/qlnx_os.c projects/runtime-coverage/sys/dev/qlxgbe/README.txt projects/runtime-coverage/sys/dev/qlxgbe/ql_boot.c projects/runtime-coverage/sys/dev/qlxgbe/ql_def.h projects/runtime-coverage/sys/dev/qlxgbe/ql_fw.c projects/runtime-coverage/sys/dev/qlxgbe/ql_glbl.h projects/runtime-coverage/sys/dev/qlxgbe/ql_hw.c projects/runtime-coverage/sys/dev/qlxgbe/ql_hw.h projects/runtime-coverage/sys/dev/qlxgbe/ql_inline.h projects/runtime-coverage/sys/dev/qlxgbe/ql_ioctl.c projects/runtime-coverage/sys/dev/qlxgbe/ql_isr.c projects/runtime-coverage/sys/dev/qlxgbe/ql_minidump.c projects/runtime-coverage/sys/dev/qlxgbe/ql_os.c projects/runtime-coverage/sys/dev/qlxgbe/ql_os.h projects/runtime-coverage/sys/dev/qlxgbe/ql_reset.c projects/runtime-coverage/sys/dev/qlxgbe/ql_ver.h projects/runtime-coverage/sys/dev/syscons/scterm-teken.c projects/runtime-coverage/sys/dev/syscons/syscons.c projects/runtime-coverage/sys/dev/syscons/syscons.h projects/runtime-coverage/sys/fs/nfsclient/nfs_clbio.c projects/runtime-coverage/sys/fs/nfsclient/nfs_clnode.c projects/runtime-coverage/sys/fs/nfsclient/nfs_clport.c projects/runtime-coverage/sys/fs/nfsclient/nfs_clsubs.c projects/runtime-coverage/sys/fs/nfsclient/nfs_clvnops.c projects/runtime-coverage/sys/fs/nfsclient/nfsnode.h projects/runtime-coverage/sys/i386/i386/exception.s projects/runtime-coverage/sys/isa/syscons_isa.c projects/runtime-coverage/sys/kern/kern_cpuset.c projects/runtime-coverage/sys/kern/subr_smp.c projects/runtime-coverage/sys/kern/subr_turnstile.c projects/runtime-coverage/sys/kern/uipc_sockbuf.c projects/runtime-coverage/sys/kern/uipc_socket.c projects/runtime-coverage/sys/kern/vfs_subr.c projects/runtime-coverage/sys/mips/mips/exception.S projects/runtime-coverage/sys/mips/mips/sc_machdep.c projects/runtime-coverage/sys/modules/Makefile projects/runtime-coverage/sys/modules/qlxgbe/Makefile projects/runtime-coverage/sys/net/iflib.c projects/runtime-coverage/sys/net/route.h projects/runtime-coverage/sys/netinet/tcp_input.c projects/runtime-coverage/sys/netinet/tcp_stacks/fastpath.c projects/runtime-coverage/sys/netipsec/ipsec.c projects/runtime-coverage/sys/netipsec/ipsec.h projects/runtime-coverage/sys/netipsec/ipsec6.h projects/runtime-coverage/sys/netipsec/ipsec_output.c projects/runtime-coverage/sys/powerpc/powerpc/sc_machdep.c projects/runtime-coverage/sys/sys/consio.h projects/runtime-coverage/sys/sys/param.h projects/runtime-coverage/sys/sys/smp.h projects/runtime-coverage/sys/sys/vnode.h projects/runtime-coverage/sys/ufs/ffs/ffs_softdep.c projects/runtime-coverage/sys/x86/acpica/srat.c projects/runtime-coverage/sys/x86/cpufreq/hwpstate.c projects/runtime-coverage/sys/x86/x86/identcpu.c projects/runtime-coverage/sys/x86/x86/mp_x86.c projects/runtime-coverage/tools/regression/sockets/accf_data_attach/accf_data_attach.c projects/runtime-coverage/usr.bin/clang/Makefile.inc projects/runtime-coverage/usr.bin/grep/grep.c projects/runtime-coverage/usr.bin/grep/grep.h projects/runtime-coverage/usr.bin/grep/util.c projects/runtime-coverage/usr.sbin/camdd/camdd.c projects/runtime-coverage/usr.sbin/chown/tests/chown_test.sh projects/runtime-coverage/usr.sbin/ctladm/ctladm.c Directory Properties: projects/runtime-coverage/ (props changed) projects/runtime-coverage/cddl/ (props changed) projects/runtime-coverage/cddl/contrib/opensolaris/ (props changed) projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/runtime-coverage/contrib/compiler-rt/ (props changed) projects/runtime-coverage/contrib/libc++/ (props changed) projects/runtime-coverage/contrib/llvm/ (props changed) projects/runtime-coverage/contrib/llvm/tools/clang/ (props changed) projects/runtime-coverage/contrib/llvm/tools/lld/ (props changed) projects/runtime-coverage/contrib/llvm/tools/lldb/ (props changed) projects/runtime-coverage/contrib/netbsd-tests/ (props changed) projects/runtime-coverage/contrib/top/ (props changed) projects/runtime-coverage/contrib/zstd/ (props changed) projects/runtime-coverage/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/runtime-coverage/Makefile.inc1 ============================================================================== --- projects/runtime-coverage/Makefile.inc1 Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/Makefile.inc1 Fri Aug 25 02:48:31 2017 (r322871) @@ -558,7 +558,7 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_TESTS=no + MK_GDB=no MK_LLD_IS_LD=${MK_LLD_BOOTSTRAP} MK_TESTS=no # kernel-tools stage KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ Modified: projects/runtime-coverage/bin/pkill/pkill.c ============================================================================== --- projects/runtime-coverage/bin/pkill/pkill.c Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/bin/pkill/pkill.c Fri Aug 25 02:48:31 2017 (r322871) @@ -568,7 +568,7 @@ main(int argc, char **argv) continue; rv |= (*action)(kp); } - if (rv && pgrep) + if (rv && pgrep && !quiet) putchar('\n'); if (!did_action && !pgrep && longfmt) fprintf(stderr, Copied: projects/runtime-coverage/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d (from r322870, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d Fri Aug 25 02:48:31 2017 (r322871, copy of r322870, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/llquantize/err.D_LLQUANT_MAGTOOBIG.offbyone.d) @@ -0,0 +1,25 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2017 Mark Johnston + */ + +/* + * A regression test for FreeBSD r322773. 100^9 fits in 64 bits, but + * llquantize() will create buckets up to 100^{10}, which does not fit. + */ + +BEGIN +{ + @ = llquantize(0, 100, 0, 9, 100); + exit(0); +} Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c Fri Aug 25 02:48:31 2017 (r322871) @@ -1503,7 +1503,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtra "divide a power of the factor\n"); } - for (i = 0, order = 1; i < args[2].value; i++) { + for (i = 0, order = 1; i <= args[2].value + 1; i++) { if (order * args[0].value > order) { order *= args[0].value; continue; @@ -1511,7 +1511,7 @@ dt_compile_agg(dtrace_hdl_t *dtp, dt_node_t *dnp, dtra dnerror(dnp, D_LLQUANT_MAGTOOBIG, "llquantize( ) " "factor (%d) raised to power of high magnitude " - "(%d) overflows 64-bits\n", args[0].value, + "(%d) plus 1 overflows 64-bits\n", args[0].value, args[2].value); } Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Fri Aug 25 02:48:31 2017 (r322871) @@ -772,6 +772,7 @@ extern int zpool_in_use(libzfs_handle_t *, int, pool_s * Label manipulation. */ extern int zpool_read_label(int, nvlist_t **); +extern int zpool_read_all_labels(int, nvlist_t **); extern int zpool_clear_label(int); /* is this zvol valid for use as a dump device? */ Modified: projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c ============================================================================== --- projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Fri Aug 25 02:48:31 2017 (r322871) @@ -914,6 +914,65 @@ zpool_read_label(int fd, nvlist_t **config) return (0); } +/* + * Given a file descriptor, read the label information and return an nvlist + * describing the configuration, if there is one. + * returns the number of valid labels found + */ +int +zpool_read_all_labels(int fd, nvlist_t **config) +{ + struct stat64 statbuf; + int l; + vdev_label_t *label; + uint64_t state, txg, size; + int nlabels = 0; + + *config = NULL; + + if (fstat64(fd, &statbuf) == -1) + return (0); + size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t); + + if ((label = malloc(sizeof (vdev_label_t))) == NULL) + return (0); + + for (l = 0; l < VDEV_LABELS; l++) { + nvlist_t *temp = NULL; + + /* TODO: use aio_read so we can read al 4 labels in parallel */ + if (pread64(fd, label, sizeof (vdev_label_t), + label_offset(size, l)) != sizeof (vdev_label_t)) + continue; + + if (nvlist_unpack(label->vl_vdev_phys.vp_nvlist, + sizeof (label->vl_vdev_phys.vp_nvlist), &temp, 0) != 0) + continue; + + if (nvlist_lookup_uint64(temp, ZPOOL_CONFIG_POOL_STATE, + &state) != 0 || state > POOL_STATE_L2CACHE) { + nvlist_free(temp); + temp = NULL; + continue; + } + + if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && + (nvlist_lookup_uint64(temp, ZPOOL_CONFIG_POOL_TXG, + &txg) != 0 || txg == 0)) { + nvlist_free(temp); + temp = NULL; + continue; + } + if (temp) + *config = temp; + + nlabels++; + } + + free(label); + return (nlabels); +} + typedef struct rdsk_node { char *rn_name; int rn_dfd; Modified: projects/runtime-coverage/cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile ============================================================================== --- projects/runtime-coverage/cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/cddl/usr.sbin/dtrace/tests/common/llquantize/Makefile Fri Aug 25 02:48:31 2017 (r322871) @@ -22,6 +22,7 @@ ${PACKAGE}FILES= \ err.D_LLQUANT_LOWVAL.d \ err.D_LLQUANT_MAGRANGE.d \ err.D_LLQUANT_MAGTOOBIG.d \ + err.D_LLQUANT_MAGTOOBIG.offbyone.d \ err.D_LLQUANT_NSTEPMATCH.d \ err.D_LLQUANT_NSTEPTYPE.d \ err.D_LLQUANT_NSTEPVAL.d \ Modified: projects/runtime-coverage/cddl/usr.sbin/zfsd/zfsd_event.cc ============================================================================== --- projects/runtime-coverage/cddl/usr.sbin/zfsd/zfsd_event.cc Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/cddl/usr.sbin/zfsd/zfsd_event.cc Fri Aug 25 02:48:31 2017 (r322871) @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -93,6 +94,7 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &de pool_state_t poolState; char *poolName; boolean_t b_inuse; + int nlabels; inUse = false; degraded = false; @@ -105,8 +107,16 @@ DevfsEvent::ReadLabel(int devFd, bool &inUse, bool &de if (poolName != NULL) free(poolName); - if (zpool_read_label(devFd, &devLabel) != 0 - || devLabel == NULL) + nlabels = zpool_read_all_labels(devFd, &devLabel); + /* + * If we find a disk with fewer than the maximum number of + * labels, it might be the whole disk of a partitioned disk + * where ZFS resides on a partition. In that case, we should do + * nothing and wait for the partition to appear. Or, the disk + * might be damaged. In that case, zfsd should do nothing and + * wait for the sysadmin to decide. + */ + if (nlabels != VDEV_LABELS || devLabel == NULL) return (NULL); try { Modified: projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_dcmp.S Fri Aug 25 02:48:31 2017 (r322871) @@ -18,11 +18,20 @@ // } // } +#if defined(COMPILER_RT_ARMHF_TARGET) +# define CONVERT_DCMP_ARGS_TO_DF2_ARGS \ + vmov d0, r0, r1 SEPARATOR \ + vmov d1, r2, r3 +#else +# define CONVERT_DCMP_ARGS_TO_DF2_ARGS +#endif + #define DEFINE_AEABI_DCMP(cond) \ .syntax unified SEPARATOR \ .p2align 2 SEPARATOR \ DEFINE_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond) \ push { r4, lr } SEPARATOR \ + CONVERT_DCMP_ARGS_TO_DF2_ARGS SEPARATOR \ bl SYMBOL_NAME(__ ## cond ## df2) SEPARATOR \ cmp r0, #0 SEPARATOR \ b ## cond 1f SEPARATOR \ Modified: projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S Fri Aug 25 02:48:31 2017 (r322871) @@ -18,11 +18,20 @@ // } // } +#if defined(COMPILER_RT_ARMHF_TARGET) +# define CONVERT_FCMP_ARGS_TO_SF2_ARGS \ + vmov s0, r0 SEPARATOR \ + vmov s1, r1 +#else +# define CONVERT_FCMP_ARGS_TO_SF2_ARGS +#endif + #define DEFINE_AEABI_FCMP(cond) \ .syntax unified SEPARATOR \ .p2align 2 SEPARATOR \ DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond) \ push { r4, lr } SEPARATOR \ + CONVERT_FCMP_ARGS_TO_SF2_ARGS SEPARATOR \ bl SYMBOL_NAME(__ ## cond ## sf2) SEPARATOR \ cmp r0, #0 SEPARATOR \ b ## cond 1f SEPARATOR \ Modified: projects/runtime-coverage/contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/compiler-rt/lib/esan/esan_sideline_linux.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -70,7 +70,7 @@ int SidelineThread::runSideline(void *Arg) { // Set up a signal handler on an alternate stack for safety. InternalScopedBuffer StackMap(SigAltStackSize); - struct sigaltstack SigAltStack; + stack_t SigAltStack; SigAltStack.ss_sp = StackMap.data(); SigAltStack.ss_size = SigAltStackSize; SigAltStack.ss_flags = 0; Modified: projects/runtime-coverage/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c Fri Aug 25 02:48:31 2017 (r322871) @@ -1,11 +1,11 @@ -//===- InstrProfilingNameVar.c - profile name variable setup --------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// +/*===- InstrProfilingNameVar.c - profile name variable setup -------------===*\ +|* +|* The LLVM Compiler Infrastructure +|* +|* This file is distributed under the University of Illinois Open Source +|* License. See LICENSE.TXT for details. +|* +\*===----------------------------------------------------------------------===*/ #include "InstrProfiling.h" Modified: projects/runtime-coverage/contrib/libc++/include/string ============================================================================== --- projects/runtime-coverage/contrib/libc++/include/string Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/libc++/include/string Fri Aug 25 02:48:31 2017 (r322871) @@ -556,6 +556,8 @@ template operator+(const basic_string<_CharT, _Traits, _Allocator>& __x, _CharT __y); +_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) + template class _LIBCPP_TEMPLATE_VIS __basic_string_common { @@ -3999,7 +4001,6 @@ basic_string<_CharT, _Traits, _Allocator>::__subscript _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_string) -_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS string operator+, allocator >(char const*, string const&)) #if _LIBCPP_STD_VER > 11 // Literal suffixes for basic_string [basic.string.literals] Modified: projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h ============================================================================== --- projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Fri Aug 25 02:48:31 2017 (r322871) @@ -1220,8 +1220,9 @@ class SelectionDAG { (public) /// If an existing load has uses of its chain, create a token factor node with /// that chain and the new memory node's chain and update users of the old /// chain to the token factor. This ensures that the new memory node will have - /// the same relative memory dependency position as the old load. - void makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); + /// the same relative memory dependency position as the old load. Returns the + /// new merged load chain. + SDValue makeEquivalentMemoryOrdering(LoadSDNode *Old, SDValue New); /// Topological-sort the AllNodes list and a /// assign a unique node id for each node in the DAG based on their Modified: projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h ============================================================================== --- projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h Fri Aug 25 02:48:31 2017 (r322871) @@ -85,7 +85,10 @@ namespace ISD { /// If N is a BUILD_VECTOR node whose elements are all the same constant or /// undefined, return true and return the constant value in \p SplatValue. - bool isConstantSplatVector(const SDNode *N, APInt &SplatValue); + /// This sets \p SplatValue to the smallest possible splat unless AllowShrink + /// is set to false. + bool isConstantSplatVector(const SDNode *N, APInt &SplatValue, + bool AllowShrink = true); /// Return true if the specified node is a BUILD_VECTOR where all of the /// elements are ~0 or undef. Modified: projects/runtime-coverage/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h ============================================================================== --- projects/runtime-coverage/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h Fri Aug 25 02:48:31 2017 (r322871) @@ -94,9 +94,9 @@ template class LazyEmittingLayer llvm_unreachable("Invalid emit-state."); } - void removeModuleFromBaseLayer(BaseLayerT &BaseLayer) { - if (EmitState != NotEmitted) - BaseLayer.removeModule(Handle); + Error removeModuleFromBaseLayer(BaseLayerT& BaseLayer) { + return EmitState != NotEmitted ? BaseLayer.removeModule(Handle) + : Error::success(); } void emitAndFinalize(BaseLayerT &BaseLayer) { @@ -226,9 +226,9 @@ template class LazyEmittingLayer /// This method will free the memory associated with the given module, both /// in this layer, and the base layer. Error removeModule(ModuleHandleT H) { - (*H)->removeModuleFromBaseLayer(BaseLayer); + Error Err = (*H)->removeModuleFromBaseLayer(BaseLayer); ModuleList.erase(H); - return Error::success(); + return Err; } /// @brief Search for the given named symbol. Modified: projects/runtime-coverage/contrib/llvm/include/llvm/Object/COFFImportFile.h ============================================================================== --- projects/runtime-coverage/contrib/llvm/include/llvm/Object/COFFImportFile.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/include/llvm/Object/COFFImportFile.h Fri Aug 25 02:48:31 2017 (r322871) @@ -73,6 +73,7 @@ class COFFImportFile : public SymbolicFile { (private) struct COFFShortExport { std::string Name; std::string ExtName; + std::string SymbolName; uint16_t Ordinal = 0; bool Noname = false; @@ -98,7 +99,8 @@ struct COFFShortExport { std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - COFF::MachineTypes Machine); + COFF::MachineTypes Machine, + bool MakeWeakAliases); } // namespace object } // namespace llvm Modified: projects/runtime-coverage/contrib/llvm/lib/Analysis/ScalarEvolution.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Analysis/ScalarEvolution.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -162,6 +162,11 @@ static cl::opt cl::desc("Maximum depth of recursive SExt/ZExt"), cl::init(8)); +static cl::opt + MaxAddRecSize("scalar-evolution-max-add-rec-size", cl::Hidden, + cl::desc("Max coefficients in AddRec during evolving"), + cl::init(16)); + //===----------------------------------------------------------------------===// // SCEV class definitions //===----------------------------------------------------------------------===// @@ -2878,6 +2883,12 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImp if (!OtherAddRec || OtherAddRec->getLoop() != AddRecLoop) continue; + // Limit max number of arguments to avoid creation of unreasonably big + // SCEVAddRecs with very complex operands. + if (AddRec->getNumOperands() + OtherAddRec->getNumOperands() - 1 > + MaxAddRecSize) + continue; + bool Overflow = false; Type *Ty = AddRec->getType(); bool LargerThan64Bits = getTypeSizeInBits(Ty) > 64; @@ -7582,6 +7593,25 @@ const SCEV *ScalarEvolution::computeSCEVAtScope(const const SCEV *BackedgeTakenCount = getBackedgeTakenCount(LI); if (const SCEVConstant *BTCC = dyn_cast(BackedgeTakenCount)) { + + // This trivial case can show up in some degenerate cases where + // the incoming IR has not yet been fully simplified. + if (BTCC->getValue()->isZero()) { + Value *InitValue = nullptr; + bool MultipleInitValues = false; + for (unsigned i = 0; i < PN->getNumIncomingValues(); i++) { + if (!LI->contains(PN->getIncomingBlock(i))) { + if (!InitValue) + InitValue = PN->getIncomingValue(i); + else if (InitValue != PN->getIncomingValue(i)) { + MultipleInitValues = true; + break; + } + } + if (!MultipleInitValues && InitValue) + return getSCEV(InitValue); + } + } // Okay, we know how many times the containing loop executes. If // this is a constant evolving PHI node, get the final value at // the specified iteration number. Modified: projects/runtime-coverage/contrib/llvm/lib/Analysis/ValueTracking.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Analysis/ValueTracking.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Analysis/ValueTracking.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -4458,6 +4458,10 @@ Optional llvm::isImpliedCondition(const Value *L unsigned Depth, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT) { + // Bail out when we hit the limit. + if (Depth == MaxDepth) + return None; + // A mismatch occurs when we compare a scalar cmp to a vector cmp, for example. if (LHS->getType() != RHS->getType()) return None; Modified: projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h Fri Aug 25 02:48:31 2017 (r322871) @@ -627,6 +627,7 @@ class LLVM_LIBRARY_VISIBILITY DAGTypeLegalizer { (priv SDValue ScalarizeVecOp_CONCAT_VECTORS(SDNode *N); SDValue ScalarizeVecOp_EXTRACT_VECTOR_ELT(SDNode *N); SDValue ScalarizeVecOp_VSELECT(SDNode *N); + SDValue ScalarizeVecOp_VSETCC(SDNode *N); SDValue ScalarizeVecOp_STORE(StoreSDNode *N, unsigned OpNo); SDValue ScalarizeVecOp_FP_ROUND(SDNode *N, unsigned OpNo); Modified: projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -302,7 +302,21 @@ SDValue DAGTypeLegalizer::ScalarizeVecRes_SCALAR_TO_VE } SDValue DAGTypeLegalizer::ScalarizeVecRes_VSELECT(SDNode *N) { - SDValue Cond = GetScalarizedVector(N->getOperand(0)); + SDValue Cond = N->getOperand(0); + EVT OpVT = Cond.getValueType(); + SDLoc DL(N); + // The vselect result and true/value operands needs scalarizing, but it's + // not a given that the Cond does. For instance, in AVX512 v1i1 is legal. + // See the similar logic in ScalarizeVecRes_VSETCC + if (getTypeAction(OpVT) == TargetLowering::TypeScalarizeVector) { + Cond = GetScalarizedVector(Cond); + } else { + EVT VT = OpVT.getVectorElementType(); + Cond = DAG.getNode( + ISD::EXTRACT_VECTOR_ELT, DL, VT, Cond, + DAG.getConstant(0, DL, TLI.getVectorIdxTy(DAG.getDataLayout()))); + } + SDValue LHS = GetScalarizedVector(N->getOperand(1)); TargetLowering::BooleanContent ScalarBool = TLI.getBooleanContents(false, false); @@ -470,6 +484,9 @@ bool DAGTypeLegalizer::ScalarizeVectorOperand(SDNode * case ISD::VSELECT: Res = ScalarizeVecOp_VSELECT(N); break; + case ISD::SETCC: + Res = ScalarizeVecOp_VSETCC(N); + break; case ISD::STORE: Res = ScalarizeVecOp_STORE(cast(N), OpNo); break; @@ -544,6 +561,36 @@ SDValue DAGTypeLegalizer::ScalarizeVecOp_VSELECT(SDNod return DAG.getNode(ISD::SELECT, SDLoc(N), VT, ScalarCond, N->getOperand(1), N->getOperand(2)); +} + +/// If the operand is a vector that needs to be scalarized then the +/// result must be v1i1, so just convert to a scalar SETCC and wrap +/// with a scalar_to_vector since the res type is legal if we got here +SDValue DAGTypeLegalizer::ScalarizeVecOp_VSETCC(SDNode *N) { + assert(N->getValueType(0).isVector() && + N->getOperand(0).getValueType().isVector() && + "Operand types must be vectors"); + assert(N->getValueType(0) == MVT::v1i1 && "Expected v1i1 type"); + + EVT VT = N->getValueType(0); + SDValue LHS = GetScalarizedVector(N->getOperand(0)); + SDValue RHS = GetScalarizedVector(N->getOperand(1)); + + EVT OpVT = N->getOperand(0).getValueType(); + EVT NVT = VT.getVectorElementType(); + SDLoc DL(N); + // Turn it into a scalar SETCC. + SDValue Res = DAG.getNode(ISD::SETCC, DL, MVT::i1, LHS, RHS, + N->getOperand(2)); + + // Vectors may have a different boolean contents to scalars. Promote the + // value appropriately. + ISD::NodeType ExtendCode = + TargetLowering::getExtendForContent(TLI.getBooleanContents(OpVT)); + + Res = DAG.getNode(ExtendCode, DL, NVT, Res); + + return DAG.getNode(ISD::SCALAR_TO_VECTOR, DL, VT, Res); } /// If the value to store is a vector that needs to be scalarized, it must be Modified: projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -116,7 +116,8 @@ bool ConstantFPSDNode::isValueValidForType(EVT VT, // ISD Namespace //===----------------------------------------------------------------------===// -bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal) { +bool ISD::isConstantSplatVector(const SDNode *N, APInt &SplatVal, + bool AllowShrink) { auto *BV = dyn_cast(N); if (!BV) return false; @@ -124,9 +125,11 @@ bool ISD::isConstantSplatVector(const SDNode *N, APInt APInt SplatUndef; unsigned SplatBitSize; bool HasUndefs; - EVT EltVT = N->getValueType(0).getVectorElementType(); - return BV->isConstantSplat(SplatVal, SplatUndef, SplatBitSize, HasUndefs) && - EltVT.getSizeInBits() >= SplatBitSize; + unsigned EltSize = N->getValueType(0).getVectorElementType().getSizeInBits(); + unsigned MinSplatBits = AllowShrink ? 0 : EltSize; + return BV->isConstantSplat(SplatVal, SplatUndef, SplatBitSize, HasUndefs, + MinSplatBits) && + EltSize >= SplatBitSize; } // FIXME: AllOnes and AllZeros duplicate a lot of code. Could these be @@ -7262,22 +7265,23 @@ void SelectionDAG::TransferDbgValues(SDValue From, SDV AddDbgValue(I, ToNode, false); } -void SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, - SDValue NewMemOp) { +SDValue SelectionDAG::makeEquivalentMemoryOrdering(LoadSDNode *OldLoad, + SDValue NewMemOp) { assert(isa(NewMemOp.getNode()) && "Expected a memop node"); - if (!OldLoad->hasAnyUseOfValue(1)) - return; - // The new memory operation must have the same position as the old load in // terms of memory dependency. Create a TokenFactor for the old load and new // memory operation and update uses of the old load's output chain to use that // TokenFactor. SDValue OldChain = SDValue(OldLoad, 1); SDValue NewChain = SDValue(NewMemOp.getNode(), 1); + if (!OldLoad->hasAnyUseOfValue(1)) + return NewChain; + SDValue TokenFactor = getNode(ISD::TokenFactor, SDLoc(OldLoad), MVT::Other, OldChain, NewChain); ReplaceAllUsesOfValueWith(OldChain, TokenFactor); UpdateNodeOperands(TokenFactor.getNode(), OldChain, NewChain); + return TokenFactor; } //===----------------------------------------------------------------------===// Modified: projects/runtime-coverage/contrib/llvm/lib/CodeGen/VirtRegMap.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/CodeGen/VirtRegMap.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -180,6 +180,7 @@ class VirtRegRewriter : public MachineFunctionPass { void addLiveInsForSubRanges(const LiveInterval &LI, unsigned PhysReg) const; void handleIdentityCopy(MachineInstr &MI) const; void expandCopyBundle(MachineInstr &MI) const; + bool subRegLiveThrough(const MachineInstr &MI, unsigned SuperPhysReg) const; public: static char ID; @@ -415,6 +416,32 @@ void VirtRegRewriter::expandCopyBundle(MachineInstr &M } } +/// Check whether (part of) \p SuperPhysReg is live through \p MI. +/// \pre \p MI defines a subregister of a virtual register that +/// has been assigned to \p SuperPhysReg. +bool VirtRegRewriter::subRegLiveThrough(const MachineInstr &MI, + unsigned SuperPhysReg) const { + SlotIndex MIIndex = LIS->getInstructionIndex(MI); + SlotIndex BeforeMIUses = MIIndex.getBaseIndex(); + SlotIndex AfterMIDefs = MIIndex.getBoundaryIndex(); + for (MCRegUnitIterator Unit(SuperPhysReg, TRI); Unit.isValid(); ++Unit) { + const LiveRange &UnitRange = LIS->getRegUnit(*Unit); + // If the regunit is live both before and after MI, + // we assume it is live through. + // Generally speaking, this is not true, because something like + // "RU = op RU" would match that description. + // However, we know that we are trying to assess whether + // a def of a virtual reg, vreg, is live at the same time of RU. + // If we are in the "RU = op RU" situation, that means that vreg + // is defined at the same time as RU (i.e., "vreg, RU = op RU"). + // Thus, vreg and RU interferes and vreg cannot be assigned to + // SuperPhysReg. Therefore, this situation cannot happen. + if (UnitRange.liveAt(AfterMIDefs) && UnitRange.liveAt(BeforeMIUses)) + return true; + } + return false; +} + void VirtRegRewriter::rewrite() { bool NoSubRegLiveness = !MRI->subRegLivenessEnabled(); SmallVector SuperDeads; @@ -452,7 +479,8 @@ void VirtRegRewriter::rewrite() { // A virtual register kill refers to the whole register, so we may // have to add operands for the super-register. A // partial redef always kills and redefines the super-register. - if (MO.readsReg() && (MO.isDef() || MO.isKill())) + if ((MO.readsReg() && (MO.isDef() || MO.isKill())) || + (MO.isDef() && subRegLiveThrough(*MI, PhysReg))) SuperKills.push_back(PhysReg); if (MO.isDef()) { Modified: projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -134,13 +134,13 @@ dumpDWARFv5StringOffsetsSection(raw_ostream &OS, Strin uint64_t StringOffset = StrOffsetExt.getRelocatedValue(EntrySize, &Offset); if (Format == DWARF32) { - OS << format("%8.8x ", StringOffset); uint32_t StringOffset32 = (uint32_t)StringOffset; + OS << format("%8.8x ", StringOffset32); const char *S = StrData.getCStr(&StringOffset32); if (S) OS << format("\"%s\"", S); } else - OS << format("%16.16x ", StringOffset); + OS << format("%16.16" PRIx64 " ", StringOffset); OS << "\n"; } } Modified: projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -196,7 +196,7 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const ++NumErrors; OS << "error: DW_AT_stmt_list offset is beyond .debug_line " "bounds: " - << format("0x%08" PRIx32, *SectionOffset) << "\n"; + << format("0x%08" PRIx64, *SectionOffset) << "\n"; Die.dump(OS, 0); OS << "\n"; } @@ -234,7 +234,7 @@ unsigned DWARFVerifier::verifyDebugInfoForm(const DWAR if (CUOffset >= CUSize) { ++NumErrors; OS << "error: " << FormEncodingString(Form) << " CU offset " - << format("0x%08" PRIx32, CUOffset) + << format("0x%08" PRIx64, CUOffset) << " is invalid (must be less than CU size of " << format("0x%08" PRIx32, CUSize) << "):\n"; Die.dump(OS, 0); @@ -366,7 +366,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.Address < PrevAddress) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "] row[" << RowIndex << "] decreases in address from previous row:\n"; @@ -381,7 +381,7 @@ void DWARFVerifier::verifyDebugLineRows() { if (Row.File > MaxFileIndex) { ++NumDebugLineErrors; OS << "error: .debug_line[" - << format("0x%08" PRIx32, + << format("0x%08" PRIx64, *toSectionOffset(Die.find(DW_AT_stmt_list))) << "][" << RowIndex << "] has invalid file index " << Row.File << " (valid values are [1," << MaxFileIndex << "]):\n"; Modified: projects/runtime-coverage/contrib/llvm/lib/IR/AutoUpgrade.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/IR/AutoUpgrade.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/IR/AutoUpgrade.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -2239,14 +2239,14 @@ bool llvm::UpgradeDebugInfo(Module &M) { } bool llvm::UpgradeModuleFlags(Module &M) { - const NamedMDNode *ModFlags = M.getModuleFlagsMetadata(); + NamedMDNode *ModFlags = M.getModuleFlagsMetadata(); if (!ModFlags) return false; - bool HasObjCFlag = false, HasClassProperties = false; + bool HasObjCFlag = false, HasClassProperties = false, Changed = false; for (unsigned I = 0, E = ModFlags->getNumOperands(); I != E; ++I) { MDNode *Op = ModFlags->getOperand(I); - if (Op->getNumOperands() < 2) + if (Op->getNumOperands() != 3) continue; MDString *ID = dyn_cast_or_null(Op->getOperand(1)); if (!ID) @@ -2255,7 +2255,24 @@ bool llvm::UpgradeModuleFlags(Module &M) { HasObjCFlag = true; if (ID->getString() == "Objective-C Class Properties") HasClassProperties = true; + // Upgrade PIC/PIE Module Flags. The module flag behavior for these two + // field was Error and now they are Max. + if (ID->getString() == "PIC Level" || ID->getString() == "PIE Level") { + if (auto *Behavior = + mdconst::dyn_extract_or_null(Op->getOperand(0))) { + if (Behavior->getLimitedValue() == Module::Error) { + Type *Int32Ty = Type::getInt32Ty(M.getContext()); + Metadata *Ops[3] = { + ConstantAsMetadata::get(ConstantInt::get(Int32Ty, Module::Max)), + MDString::get(M.getContext(), ID->getString()), + Op->getOperand(2)}; + ModFlags->setOperand(I, MDNode::get(M.getContext(), Ops)); + Changed = true; + } + } + } } + // "Objective-C Class Properties" is recently added for Objective-C. We // upgrade ObjC bitcodes to contain a "Objective-C Class Properties" module // flag of value 0, so we can correclty downgrade this flag when trying to @@ -2264,9 +2281,10 @@ bool llvm::UpgradeModuleFlags(Module &M) { if (HasObjCFlag && !HasClassProperties) { M.addModuleFlag(llvm::Module::Override, "Objective-C Class Properties", (uint32_t)0); - return true; + Changed = true; } - return false; + + return Changed; } static bool isOldLoopArgument(Metadata *MD) { Modified: projects/runtime-coverage/contrib/llvm/lib/Object/COFFImportFile.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Object/COFFImportFile.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Object/COFFImportFile.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -557,7 +557,7 @@ NewArchiveMember ObjectFactory::createWeakExternal(Str std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ArrayRef Exports, - MachineTypes Machine) { + MachineTypes Machine, bool MakeWeakAliases) { std::vector Members; ObjectFactory OF(llvm::sys::path::filename(ImportName), Machine); @@ -575,7 +575,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Private) continue; - if (E.isWeak()) { + if (E.isWeak() && MakeWeakAliases) { Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, false)); Members.push_back(OF.createWeakExternal(E.Name, E.ExtName, true)); continue; @@ -587,7 +587,7 @@ std::error_code writeImportLibrary(StringRef ImportNam if (E.Constant) ImportType = IMPORT_CONST; - StringRef SymbolName = E.isWeak() ? E.ExtName : E.Name; + StringRef SymbolName = E.SymbolName.empty() ? E.Name : E.SymbolName; ImportNameType NameType = getNameType(SymbolName, E.Name, Machine); Expected Name = E.ExtName.empty() ? SymbolName Modified: projects/runtime-coverage/contrib/llvm/lib/Object/COFFModuleDefinition.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Object/COFFModuleDefinition.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Object/COFFModuleDefinition.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -232,7 +232,13 @@ class Parser { (private) for (;;) { read(); if (Tok.K == Identifier && Tok.Value[0] == '@') { - Tok.Value.drop_front().getAsInteger(10, E.Ordinal); + if (Tok.Value.drop_front().getAsInteger(10, E.Ordinal)) { + // Not an ordinal modifier at all, but the next export (fastcall + // decorated) - complete the current one. + unget(); + Info.Exports.push_back(E); + return Error::success(); + } read(); if (Tok.K == KwNoname) { E.Noname = true; Modified: projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -388,6 +388,10 @@ static unsigned isMatchingStore(MachineInstr &LoadInst } static unsigned getPreIndexedOpcode(unsigned Opc) { + // FIXME: We don't currently support creating pre-indexed loads/stores when + // the load or store is the unscaled version. If we decide to perform such an + // optimization in the future the cases for the unscaled loads/stores will + // need to be added here. switch (Opc) { default: llvm_unreachable("Opcode has no pre-indexed equivalent!"); @@ -451,32 +455,42 @@ static unsigned getPostIndexedOpcode(unsigned Opc) { default: llvm_unreachable("Opcode has no post-indexed wise equivalent!"); case AArch64::STRSui: + case AArch64::STURSi: return AArch64::STRSpost; case AArch64::STRDui: + case AArch64::STURDi: return AArch64::STRDpost; case AArch64::STRQui: + case AArch64::STURQi: return AArch64::STRQpost; case AArch64::STRBBui: return AArch64::STRBBpost; case AArch64::STRHHui: return AArch64::STRHHpost; case AArch64::STRWui: + case AArch64::STURWi: return AArch64::STRWpost; case AArch64::STRXui: + case AArch64::STURXi: return AArch64::STRXpost; case AArch64::LDRSui: + case AArch64::LDURSi: return AArch64::LDRSpost; case AArch64::LDRDui: + case AArch64::LDURDi: return AArch64::LDRDpost; case AArch64::LDRQui: + case AArch64::LDURQi: return AArch64::LDRQpost; case AArch64::LDRBBui: return AArch64::LDRBBpost; case AArch64::LDRHHui: return AArch64::LDRHHpost; case AArch64::LDRWui: + case AArch64::LDURWi: return AArch64::LDRWpost; case AArch64::LDRXui: + case AArch64::LDURXi: return AArch64::LDRXpost; case AArch64::LDRSWui: return AArch64::LDRSWpost; @@ -1694,8 +1708,9 @@ bool AArch64LoadStoreOpt::optimizeBlock(MachineBasicBl ++NumPostFolded; break; } - // Don't know how to handle pre/post-index versions, so move to the next - // instruction. + + // Don't know how to handle unscaled pre/post-index versions below, so + // move to the next instruction. if (TII->isUnscaledLdSt(Opc)) { ++MBBI; break; Modified: projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -769,8 +769,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); const MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -797,23 +796,9 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock } // .Lloadcmp: - // mov wStatus, #0 // ldrex rDest, [rAddr] // cmp rDest, rDesired // bne .Ldone - if (!StatusDead) { - if (IsThumb) { - BuildMI(LoadCmpBB, DL, TII->get(ARM::tMOVi8), StatusReg) - .addDef(ARM::CPSR, RegState::Dead) - .addImm(0) - .add(predOps(ARMCC::AL)); - } else { - BuildMI(LoadCmpBB, DL, TII->get(ARM::MOVi), StatusReg) - .addImm(0) - .add(predOps(ARMCC::AL)) - .add(condCodeOp()); - } - } MachineInstrBuilder MIB; MIB = BuildMI(LoadCmpBB, DL, TII->get(LdrexOp), Dest.getReg()); @@ -836,10 +821,10 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strex rStatus, rNew, [rAddr] - // cmp rStatus, #0 + // strex rTempReg, rNew, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp - MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), StatusReg) + MIB = BuildMI(StoreBB, DL, TII->get(StrexOp), TempReg) .addReg(NewReg) .addReg(AddrReg); if (StrexOp == ARM::t2STREX) @@ -848,7 +833,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP(MachineBasicBlock unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) @@ -904,8 +889,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl MachineInstr &MI = *MBBI; DebugLoc DL = MI.getDebugLoc(); MachineOperand &Dest = MI.getOperand(0); - unsigned StatusReg = MI.getOperand(1).getReg(); - bool StatusDead = MI.getOperand(1).isDead(); + unsigned TempReg = MI.getOperand(1).getReg(); // Duplicating undef operands into 2 instructions does not guarantee the same // value on both; However undef should be replaced by xzr anyway. assert(!MI.getOperand(2).isUndef() && "cannot handle undef"); @@ -931,7 +915,7 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl // .Lloadcmp: // ldrexd rDestLo, rDestHi, [rAddr] // cmp rDestLo, rDesiredLo - // sbcs rStatus, rDestHi, rDesiredHi + // sbcs rTempReg, rDestHi, rDesiredHi // bne .Ldone unsigned LDREXD = IsThumb ? ARM::t2LDREXD : ARM::LDREXD; MachineInstrBuilder MIB; @@ -959,17 +943,17 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(MachineBasicBl LoadCmpBB->addSuccessor(StoreBB); // .Lstore: - // strexd rStatus, rNewLo, rNewHi, [rAddr] - // cmp rStatus, #0 + // strexd rTempReg, rNewLo, rNewHi, [rAddr] + // cmp rTempReg, #0 // bne .Lloadcmp unsigned STREXD = IsThumb ? ARM::t2STREXD : ARM::STREXD; - MIB = BuildMI(StoreBB, DL, TII->get(STREXD), StatusReg); + MIB = BuildMI(StoreBB, DL, TII->get(STREXD), TempReg); addExclusiveRegPair(MIB, New, 0, IsThumb, TRI); MIB.addReg(AddrReg).add(predOps(ARMCC::AL)); unsigned CMPri = IsThumb ? ARM::t2CMPri : ARM::CMPri; BuildMI(StoreBB, DL, TII->get(CMPri)) - .addReg(StatusReg, getKillRegState(StatusDead)) + .addReg(TempReg, RegState::Kill) .addImm(0) .add(predOps(ARMCC::AL)); BuildMI(StoreBB, DL, TII->get(Bcc)) Modified: projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp ============================================================================== --- projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Fri Aug 25 02:41:01 2017 (r322870) +++ projects/runtime-coverage/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Fri Aug 25 02:48:31 2017 (r322871) @@ -5901,7 +5901,10 @@ static bool isVUZPMask(ArrayRef M, EVT VT, unsign return false; for (unsigned i = 0; i < M.size(); i += NumElts) { - WhichResult = M[i] == 0 ? 0 : 1; + if (M.size() == NumElts * 2) + WhichResult = i / NumElts; + else + WhichResult = M[i] == 0 ? 0 : 1; for (unsigned j = 0; j < NumElts; ++j) { if (M[i+j] >= 0 && (unsigned) M[i+j] != 2 * j + WhichResult) return false; @@ -5932,7 +5935,10 @@ static bool isVUZP_v_undef_Mask(ArrayRef M, EVT V unsigned Half = NumElts / 2; for (unsigned i = 0; i < M.size(); i += NumElts) { - WhichResult = M[i] == 0 ? 0 : 1; + if (M.size() == NumElts * 2) + WhichResult = i / NumElts; + else + WhichResult = M[i] == 0 ? 0 : 1; for (unsigned j = 0; j < NumElts; j += Half) { unsigned Idx = WhichResult; for (unsigned k = 0; k < Half; ++k) { @@ -5972,7 +5978,10 @@ static bool isVZIPMask(ArrayRef M, EVT VT, unsign return false; for (unsigned i = 0; i < M.size(); i += NumElts) { - WhichResult = M[i] == 0 ? 0 : 1; + if (M.size() == NumElts * 2) + WhichResult = i / NumElts; + else + WhichResult = M[i] == 0 ? 0 : 1; unsigned Idx = WhichResult * NumElts / 2; for (unsigned j = 0; j < NumElts; j += 2) { if ((M[i+j] >= 0 && (unsigned) M[i+j] != Idx) || @@ -6005,7 +6014,10 @@ static bool isVZIP_v_undef_Mask(ArrayRef M, EVT V return false; for (unsigned i = 0; i < M.size(); i += NumElts) { - WhichResult = M[i] == 0 ? 0 : 1; + if (M.size() == NumElts * 2) + WhichResult = i / NumElts; + else + WhichResult = M[i] == 0 ? 0 : 1; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Fri Aug 25 21:42:58 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B629DE2508 for ; Fri, 25 Aug 2017 21:42:58 +0000 (UTC) (envelope-from rmacklem@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 mx1.freebsd.org (Postfix) with ESMTPS id 32C4E71FE0; Fri, 25 Aug 2017 21:42:57 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7PLgvlM092434; Fri, 25 Aug 2017 21:42:57 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7PLguxx092430; Fri, 25 Aug 2017 21:42:56 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708252142.v7PLguxx092430@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 25 Aug 2017 21:42:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322904 - in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322904 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 25 Aug 2017 21:42:58 -0000 Author: rmacklem Date: Fri Aug 25 21:42:56 2017 New Revision: 322904 URL: https://svnweb.freebsd.org/changeset/base/322904 Log: Fix a few things related to Flex File Layout. The XDR needed to be fixed for the DeviceInfo. The layout was changed to provide non-empty string for uid/gid. These aren't used by the client, but the Linux client doesn't like empty strings. Also, get rid of the No_IO_through_MDS flag, since this makes the Linux client loop internally. It is just a hint, so I believe that is a Linux Flex File Layout driver bug. The Linux client still doesn't like the Flex File Layout for some reason, but the XDR looks ok on the wire and Linux falls back to I/O through the MDS, so at least the Linux mounts work now. Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonsubs.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsproto.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdserv.c projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonsubs.c Fri Aug 25 21:38:43 2017 (r322903) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonsubs.c Fri Aug 25 21:42:56 2017 (r322904) @@ -69,6 +69,7 @@ int nfsrv_lease = NFSRV_LEASE; int ncl_mbuf_mlen = MLEN; int nfsd_enable_stringtouid = 0; int nfsrv_doflexfile = 0; +int nfsrv_maxpnfsmirror = 1; static int nfs_enable_uidtostring = 0; NFSNAMEIDMUTEX; NFSSOCKMUTEX; @@ -1803,18 +1804,17 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, attrsum += NFSX_UNSIGNED; i = fxdr_unsigned(int, *tl); if (i > 0) { - if (nfsrv_doflexfile != 0) - m = NFSLAYOUT_FLEXFILE; - else - m = NFSLAYOUT_NFSV4_1_FILES; NFSM_DISSECT(tl, u_int32_t *, i * NFSX_UNSIGNED); attrsum += i * NFSX_UNSIGNED; - for (j = 0; j < i; j++) { - k = fxdr_unsigned(int, *tl++); - if (compare && !(*retcmpp) && k != m) - *retcmpp = NFSERR_NOTSAME; - } + j = fxdr_unsigned(int, *tl); + if (i == 1 && compare && !(*retcmpp) && + (((nfsrv_doflexfile != 0 || + nfsrv_maxpnfsmirror > 1) && + j != NFSLAYOUT_FLEXFILE) || + (nfsrv_doflexfile == 0 && + j != NFSLAYOUT_NFSV4_1_FILES))) + *retcmpp = NFSERR_NOTSAME; } NFSDDSLOCK(); if (TAILQ_EMPTY(&nfsrv_devidhead)) { @@ -2591,7 +2591,8 @@ nfsv4_fillattr(struct nfsrv_descript *nd, struct mount if (siz == 2) { NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED); *tl++ = txdr_unsigned(1); /* One entry. */ - if (nfsrv_doflexfile != 0) + if (nfsrv_doflexfile != 0 || + nfsrv_maxpnfsmirror > 1) *tl = txdr_unsigned(NFSLAYOUT_FLEXFILE); else *tl = txdr_unsigned( Modified: projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsproto.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsproto.h Fri Aug 25 21:38:43 2017 (r322903) +++ projects/pnfs-planb-server-stable11/sys/fs/nfs/nfsproto.h Fri Aug 25 21:42:56 2017 (r322904) @@ -263,7 +263,7 @@ NFSX_HYPER + NFSM_RNDUP(NFSX_V4PNFSFH)) #define NFSX_V4FLEXLAYOUT(m) (NFSX_HYPER + 3 * NFSX_UNSIGNED + \ ((m) * (NFSX_V4DEVICEID + NFSX_STATEID + NFSM_RNDUP(NFSX_V4PNFSFH) + \ - 6 * NFSX_UNSIGNED))) + 8 * NFSX_UNSIGNED))) /* sizes common to multiple NFS versions */ #define NFSX_FHMAX (NFSX_V4FHMAX) Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdserv.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdserv.c Fri Aug 25 21:38:43 2017 (r322903) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdserv.c Fri Aug 25 21:42:56 2017 (r322904) @@ -68,8 +68,8 @@ SYSCTL_DECL(_vfs_nfsd); SYSCTL_INT(_vfs_nfsd, OID_AUTO, async, CTLFLAG_RW, &nfs_async, 0, "Tell client that writes were synced even though they were not"); extern int nfsrv_doflexfile; -SYSCTL_INT(_vfs_nfsd, OID_AUTO, enable_flexfile, CTLFLAG_RW, - &nfsrv_doflexfile, 0, "Enable generation of Flex File Layouts for pNFS"); +SYSCTL_INT(_vfs_nfsd, OID_AUTO, default_flexfile, CTLFLAG_RW, + &nfsrv_doflexfile, 0, "Make Flex File Layout the default for pNFS"); /* * This list defines the GSS mechanisms supported. @@ -4373,9 +4373,9 @@ nfsrvd_layoutget(struct nfsrv_descript *nd, __unused i } layp = NULL; - if (layouttype == NFSLAYOUT_NFSV4_1_FILES && nfsrv_doflexfile == 0) + if (layouttype == NFSLAYOUT_NFSV4_1_FILES && nfsrv_maxpnfsmirror == 1) layp = malloc(NFSX_V4FILELAYOUT, M_TEMP, M_WAITOK); - else if (layouttype == NFSLAYOUT_FLEXFILE && nfsrv_doflexfile != 0) + else if (layouttype == NFSLAYOUT_FLEXFILE) layp = malloc(NFSX_V4FLEXLAYOUT(nfsrv_maxpnfsmirror), M_TEMP, M_WAITOK); else @@ -4610,13 +4610,17 @@ nfsrvd_getdevinfo(struct nfsrv_descript *nd, __unused cnt = fxdr_unsigned(int, *tl); NFSD_DEBUG(4, "getdevinfo ltyp=%d maxcnt=%u bitcnt=%d\n", layouttype, maxcnt, cnt); - if (cnt > NFSV4_NOTIFYBITMAP) { + if (cnt > NFSV4_NOTIFYBITMAP || cnt < 0) { nd->nd_repstat = NFSERR_INVAL; goto nfsmout; } - NFSM_DISSECT(tl, uint32_t *, cnt * NFSX_UNSIGNED); - for (i = 0; i < cnt; i++) - notify[i] = fxdr_unsigned(uint32_t, *tl++); + if (cnt > 0) { + NFSM_DISSECT(tl, uint32_t *, cnt * NFSX_UNSIGNED); + for (i = 0; i < cnt; i++) + notify[i] = fxdr_unsigned(uint32_t, *tl++); + } + for (i = cnt; i < NFSV4_NOTIFYBITMAP; i++) + notify[i] = 0; /* * Check that the device id is not stale. Device ids are recreated Modified: projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 25 21:38:43 2017 (r322903) +++ projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 25 21:42:56 2017 (r322904) @@ -36,7 +36,6 @@ int nfsrv_issuedelegs = 0; int nfsrv_dolocallocks = 0; struct nfsv4lock nfsv4rootfs_lock; time_t nfsdev_time = 0; -int nfsrv_maxpnfsmirror = 1; extern int newnfs_numnfsd; extern struct nfsstatsv1 nfsstatsv1; @@ -48,6 +47,7 @@ extern int nfsd_debuglevel; extern u_int nfsrv_dsdirsize; extern struct nfsdevicehead nfsrv_devidhead; extern int nfsrv_doflexfile; +extern int nfsrv_maxpnfsmirror; NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; @@ -6369,8 +6369,14 @@ nfsrv_filelayout(struct nfsrv_descript *nd, int iomode return (lyp); } +#define FLEX_OWNERID "999" /* * Generate a Flex File Layout. + * The FLEX_OWNERID can be any string of 3 decimal digits. Although this + * string goes on the wire, it isn't supposed to be used by the client, + * since this server uses tight coupling. + * The Linux Flexible File Layout client driver doesn't like a Null string + * for these. */ static struct nfslayout * nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode, int mirrorcnt, @@ -6411,10 +6417,12 @@ nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode NFSBCOPY(dsfhp, tl, sizeof(*dsfhp)); tl += (NFSM_RNDUP(NFSX_V4PNFSFH) / NFSX_UNSIGNED); dsfhp++; - *tl++ = 0; /* Nil Owner. */ - *tl++ = 0; /* Nil Owner_group. */ + *tl++ = txdr_unsigned(strlen(FLEX_OWNERID)); /* Any uid. */ + NFSBCOPY(FLEX_OWNERID, tl++, NFSX_UNSIGNED); + *tl++ = txdr_unsigned(strlen(FLEX_OWNERID)); /* Any gid. */ + NFSBCOPY(FLEX_OWNERID, tl++, NFSX_UNSIGNED); } - *tl++ = txdr_unsigned(NFSFLEXFLAG_NOIO_MDS); /* ff_flags. */ + *tl++ = txdr_unsigned(0); /* ff_flags. */ *tl = txdr_unsigned(60); /* Status interval hint. */ lyp->lay_layoutlen = NFSX_V4FLEXLAYOUT(mirrorcnt); return (lyp); @@ -6598,9 +6606,11 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t uint32_t *notify, int *devaddrlen, char **devaddr) { struct nfsdevice *ds, *mds; - int done, i; + int done; - if (layouttype != NFSLAYOUT_NFSV4_1_FILES) + if ((layouttype != NFSLAYOUT_NFSV4_1_FILES && layouttype != + NFSLAYOUT_FLEXFILE) || + (nfsrv_maxpnfsmirror > 1 && layouttype == NFSLAYOUT_NFSV4_1_FILES)) return (NFSERR_UNKNLAYOUTTYPE); /* @@ -6651,10 +6661,6 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t *maxcnt = NFSM_RNDUP(*devaddrlen) + 3 * NFSX_UNSIGNED; return (NFSERR_TOOSMALL); } - - /* No notifies for now. */ - for (i = 0; i < NFSV4_NOTIFYBITMAP; i++) - *notify++ = 0; return (0); } @@ -6912,12 +6918,11 @@ nfsrv_allocdevid(struct nfsdevice *ds, char *addr, cha * as defined for Flexible File Layout) in XDR. */ addrlen = NFSM_RNDUP(strlen(addr)) + NFSM_RNDUP(strlen(netprot)) + - 10 * NFSX_UNSIGNED; + 9 * NFSX_UNSIGNED; ds->nfsdev_flexaddrlen = addrlen; tl = malloc(addrlen, M_NFSDSTATE, M_WAITOK | M_ZERO); ds->nfsdev_flexaddr = (char *)tl; - *tl++ = txdr_unsigned(1); /* One multipath list */ - *tl++ = txdr_unsigned(1); /* with one entry in it. */ + *tl++ = txdr_unsigned(1); /* One multipath entry. */ /* The netaddr for this one entry. */ *tl++ = txdr_unsigned(strlen(netprot)); NFSBCOPY(netprot, tl, strlen(netprot)); From owner-svn-src-projects@freebsd.org Fri Aug 25 21:53:54 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1CD1ADE2720 for ; Fri, 25 Aug 2017 21:53:54 +0000 (UTC) (envelope-from rmacklem@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 mx1.freebsd.org (Postfix) with ESMTPS id D9943723F0; Fri, 25 Aug 2017 21:53:53 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7PLrqIu096370; Fri, 25 Aug 2017 21:53:52 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7PLrqJV096365; Fri, 25 Aug 2017 21:53:52 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708252153.v7PLrqJV096365@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 25 Aug 2017 21:53:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322905 - in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server/sys/fs: nfs nfsserver X-SVN-Commit-Revision: 322905 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 25 Aug 2017 21:53:54 -0000 Author: rmacklem Date: Fri Aug 25 21:53:51 2017 New Revision: 322905 URL: https://svnweb.freebsd.org/changeset/base/322905 Log: Fix a few things related to Flex File Layout. The XDR needed to be fixed for the DeviceInfo. The layout was changed to provide non-empty string for uid/gid. These aren't used by the client, but the Linux client doesn't like empty strings. Also, get rid of the No_IO_through_MDS flag, since this makes the Linux client loop internally. It is just a hint, so I believe that is a Linux Flex File Layout driver bug. The Linux client still doesn't like the Flex File Layout for some reason, but the XDR looks ok on the wire and Linux falls back to I/O through the MDS, so at least the Linux mounts work now. Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c projects/pnfs-planb-server/sys/fs/nfs/nfsproto.h projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdserv.c projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Modified: projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Fri Aug 25 21:42:56 2017 (r322904) +++ projects/pnfs-planb-server/sys/fs/nfs/nfs_commonsubs.c Fri Aug 25 21:53:51 2017 (r322905) @@ -69,6 +69,7 @@ int nfsrv_lease = NFSRV_LEASE; int ncl_mbuf_mlen = MLEN; int nfsd_enable_stringtouid = 0; int nfsrv_doflexfile = 0; +int nfsrv_maxpnfsmirror = 1; static int nfs_enable_uidtostring = 0; NFSNAMEIDMUTEX; NFSSOCKMUTEX; @@ -1776,18 +1777,17 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, attrsum += NFSX_UNSIGNED; i = fxdr_unsigned(int, *tl); if (i > 0) { - if (nfsrv_doflexfile != 0) - m = NFSLAYOUT_FLEXFILE; - else - m = NFSLAYOUT_NFSV4_1_FILES; NFSM_DISSECT(tl, u_int32_t *, i * NFSX_UNSIGNED); attrsum += i * NFSX_UNSIGNED; - for (j = 0; j < i; j++) { - k = fxdr_unsigned(int, *tl++); - if (compare && !(*retcmpp) && k != m) - *retcmpp = NFSERR_NOTSAME; - } + j = fxdr_unsigned(int, *tl); + if (i == 1 && compare && !(*retcmpp) && + (((nfsrv_doflexfile != 0 || + nfsrv_maxpnfsmirror > 1) && + j != NFSLAYOUT_FLEXFILE) || + (nfsrv_doflexfile == 0 && + j != NFSLAYOUT_NFSV4_1_FILES))) + *retcmpp = NFSERR_NOTSAME; } NFSDDSLOCK(); if (TAILQ_EMPTY(&nfsrv_devidhead)) { @@ -2564,7 +2564,8 @@ nfsv4_fillattr(struct nfsrv_descript *nd, struct mount if (siz == 2) { NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED); *tl++ = txdr_unsigned(1); /* One entry. */ - if (nfsrv_doflexfile != 0) + if (nfsrv_doflexfile != 0 || + nfsrv_maxpnfsmirror > 1) *tl = txdr_unsigned(NFSLAYOUT_FLEXFILE); else *tl = txdr_unsigned( Modified: projects/pnfs-planb-server/sys/fs/nfs/nfsproto.h ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfs/nfsproto.h Fri Aug 25 21:42:56 2017 (r322904) +++ projects/pnfs-planb-server/sys/fs/nfs/nfsproto.h Fri Aug 25 21:53:51 2017 (r322905) @@ -263,7 +263,7 @@ NFSX_HYPER + NFSM_RNDUP(NFSX_V4PNFSFH)) #define NFSX_V4FLEXLAYOUT(m) (NFSX_HYPER + 3 * NFSX_UNSIGNED + \ ((m) * (NFSX_V4DEVICEID + NFSX_STATEID + NFSM_RNDUP(NFSX_V4PNFSFH) + \ - 6 * NFSX_UNSIGNED))) + 8 * NFSX_UNSIGNED))) /* sizes common to multiple NFS versions */ #define NFSX_FHMAX (NFSX_V4FHMAX) Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdserv.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdserv.c Fri Aug 25 21:42:56 2017 (r322904) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdserv.c Fri Aug 25 21:53:51 2017 (r322905) @@ -68,8 +68,8 @@ SYSCTL_DECL(_vfs_nfsd); SYSCTL_INT(_vfs_nfsd, OID_AUTO, async, CTLFLAG_RW, &nfs_async, 0, "Tell client that writes were synced even though they were not"); extern int nfsrv_doflexfile; -SYSCTL_INT(_vfs_nfsd, OID_AUTO, enable_flexfile, CTLFLAG_RW, - &nfsrv_doflexfile, 0, "Enable generation of Flex File Layouts for pNFS"); +SYSCTL_INT(_vfs_nfsd, OID_AUTO, default_flexfile, CTLFLAG_RW, + &nfsrv_doflexfile, 0, "Make Flex File Layout the default for pNFS"); /* * This list defines the GSS mechanisms supported. @@ -4373,9 +4373,9 @@ nfsrvd_layoutget(struct nfsrv_descript *nd, __unused i } layp = NULL; - if (layouttype == NFSLAYOUT_NFSV4_1_FILES && nfsrv_doflexfile == 0) + if (layouttype == NFSLAYOUT_NFSV4_1_FILES && nfsrv_maxpnfsmirror == 1) layp = malloc(NFSX_V4FILELAYOUT, M_TEMP, M_WAITOK); - else if (layouttype == NFSLAYOUT_FLEXFILE && nfsrv_doflexfile != 0) + else if (layouttype == NFSLAYOUT_FLEXFILE) layp = malloc(NFSX_V4FLEXLAYOUT(nfsrv_maxpnfsmirror), M_TEMP, M_WAITOK); else @@ -4610,13 +4610,17 @@ nfsrvd_getdevinfo(struct nfsrv_descript *nd, __unused cnt = fxdr_unsigned(int, *tl); NFSD_DEBUG(4, "getdevinfo ltyp=%d maxcnt=%u bitcnt=%d\n", layouttype, maxcnt, cnt); - if (cnt > NFSV4_NOTIFYBITMAP) { + if (cnt > NFSV4_NOTIFYBITMAP || cnt < 0) { nd->nd_repstat = NFSERR_INVAL; goto nfsmout; } - NFSM_DISSECT(tl, uint32_t *, cnt * NFSX_UNSIGNED); - for (i = 0; i < cnt; i++) - notify[i] = fxdr_unsigned(uint32_t, *tl++); + if (cnt > 0) { + NFSM_DISSECT(tl, uint32_t *, cnt * NFSX_UNSIGNED); + for (i = 0; i < cnt; i++) + notify[i] = fxdr_unsigned(uint32_t, *tl++); + } + for (i = cnt; i < NFSV4_NOTIFYBITMAP; i++) + notify[i] = 0; /* * Check that the device id is not stale. Device ids are recreated Modified: projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 25 21:42:56 2017 (r322904) +++ projects/pnfs-planb-server/sys/fs/nfsserver/nfs_nfsdstate.c Fri Aug 25 21:53:51 2017 (r322905) @@ -36,7 +36,6 @@ int nfsrv_issuedelegs = 0; int nfsrv_dolocallocks = 0; struct nfsv4lock nfsv4rootfs_lock; time_t nfsdev_time = 0; -int nfsrv_maxpnfsmirror = 1; extern int newnfs_numnfsd; extern struct nfsstatsv1 nfsstatsv1; @@ -48,6 +47,7 @@ extern int nfsd_debuglevel; extern u_int nfsrv_dsdirsize; extern struct nfsdevicehead nfsrv_devidhead; extern int nfsrv_doflexfile; +extern int nfsrv_maxpnfsmirror; NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; @@ -6369,8 +6369,14 @@ nfsrv_filelayout(struct nfsrv_descript *nd, int iomode return (lyp); } +#define FLEX_OWNERID "999" /* * Generate a Flex File Layout. + * The FLEX_OWNERID can be any string of 3 decimal digits. Although this + * string goes on the wire, it isn't supposed to be used by the client, + * since this server uses tight coupling. + * The Linux Flexible File Layout client driver doesn't like a Null string + * for these. */ static struct nfslayout * nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode, int mirrorcnt, @@ -6411,10 +6417,12 @@ nfsrv_flexlayout(struct nfsrv_descript *nd, int iomode NFSBCOPY(dsfhp, tl, sizeof(*dsfhp)); tl += (NFSM_RNDUP(NFSX_V4PNFSFH) / NFSX_UNSIGNED); dsfhp++; - *tl++ = 0; /* Nil Owner. */ - *tl++ = 0; /* Nil Owner_group. */ + *tl++ = txdr_unsigned(strlen(FLEX_OWNERID)); /* Any uid. */ + NFSBCOPY(FLEX_OWNERID, tl++, NFSX_UNSIGNED); + *tl++ = txdr_unsigned(strlen(FLEX_OWNERID)); /* Any gid. */ + NFSBCOPY(FLEX_OWNERID, tl++, NFSX_UNSIGNED); } - *tl++ = txdr_unsigned(NFSFLEXFLAG_NOIO_MDS); /* ff_flags. */ + *tl++ = txdr_unsigned(0); /* ff_flags. */ *tl = txdr_unsigned(60); /* Status interval hint. */ lyp->lay_layoutlen = NFSX_V4FLEXLAYOUT(mirrorcnt); return (lyp); @@ -6598,9 +6606,11 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t uint32_t *notify, int *devaddrlen, char **devaddr) { struct nfsdevice *ds, *mds; - int done, i; + int done; - if (layouttype != NFSLAYOUT_NFSV4_1_FILES) + if ((layouttype != NFSLAYOUT_NFSV4_1_FILES && layouttype != + NFSLAYOUT_FLEXFILE) || + (nfsrv_maxpnfsmirror > 1 && layouttype == NFSLAYOUT_NFSV4_1_FILES)) return (NFSERR_UNKNLAYOUTTYPE); /* @@ -6651,10 +6661,6 @@ nfsrv_getdevinfo(char *devid, int layouttype, uint32_t *maxcnt = NFSM_RNDUP(*devaddrlen) + 3 * NFSX_UNSIGNED; return (NFSERR_TOOSMALL); } - - /* No notifies for now. */ - for (i = 0; i < NFSV4_NOTIFYBITMAP; i++) - *notify++ = 0; return (0); } @@ -6912,12 +6918,11 @@ nfsrv_allocdevid(struct nfsdevice *ds, char *addr, cha * as defined for Flexible File Layout) in XDR. */ addrlen = NFSM_RNDUP(strlen(addr)) + NFSM_RNDUP(strlen(netprot)) + - 10 * NFSX_UNSIGNED; + 9 * NFSX_UNSIGNED; ds->nfsdev_flexaddrlen = addrlen; tl = malloc(addrlen, M_NFSDSTATE, M_WAITOK | M_ZERO); ds->nfsdev_flexaddr = (char *)tl; - *tl++ = txdr_unsigned(1); /* One multipath list */ - *tl++ = txdr_unsigned(1); /* with one entry in it. */ + *tl++ = txdr_unsigned(1); /* One multipath entry. */ /* The netaddr for this one entry. */ *tl++ = txdr_unsigned(strlen(netprot)); NFSBCOPY(netprot, tl, strlen(netprot)); From owner-svn-src-projects@freebsd.org Fri Aug 25 23:09:15 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BDDF6DE3734 for ; Fri, 25 Aug 2017 23:09:15 +0000 (UTC) (envelope-from rmacklem@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 mx1.freebsd.org (Postfix) with ESMTPS id 2196D744B8; Fri, 25 Aug 2017 23:09:15 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v7PN9Ena025282; Fri, 25 Aug 2017 23:09:14 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7PN9CC3025259; Fri, 25 Aug 2017 23:09:12 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201708252309.v7PN9CC3025259@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 25 Aug 2017 23:09:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322911 - in projects/pnfs-planb-server-stable11/sys: amd64/amd64 amd64/cloudabi64 amd64/include amd64/linux arm64/arm64 arm64/include boot/forth boot/geli cam/ata cam/ctl compat/linuxk... X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/pnfs-planb-server-stable11/sys: amd64/amd64 amd64/cloudabi64 amd64/include amd64/linux arm64/arm64 arm64/include boot/forth boot/geli cam/ata cam/ctl compat/linuxkpi/common/include/linux c... X-SVN-Commit-Revision: 322911 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Fri, 25 Aug 2017 23:09:15 -0000 Author: rmacklem Date: Fri Aug 25 23:09:11 2017 New Revision: 322911 URL: https://svnweb.freebsd.org/changeset/base/322911 Log: Update the kernel to stable/11/sys. Added: projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmswitch.c - copied unchanged from r322910, stable/11/sys/contrib/dev/acpica/common/dmswitch.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslparseop.c - copied unchanged from r322910, stable/11/sys/contrib/dev/acpica/compiler/aslparseop.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c - copied unchanged from r322910, stable/11/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utresdecode.c - copied unchanged from r322910, stable/11/sys/contrib/dev/acpica/components/utilities/utresdecode.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/diagnostics.h - copied unchanged from r322910, stable/11/sys/dev/mlx5/diagnostics.h projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_diagnostics.c - copied unchanged from r322910, stable/11/sys/dev/mlx5/mlx5_core/mlx5_diagnostics.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_acl.c - copied unchanged from r322910, stable/11/sys/fs/ext2fs/ext2_acl.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_acl.h - copied unchanged from r322910, stable/11/sys/fs/ext2fs/ext2_acl.h projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_csum.c - copied unchanged from r322910, stable/11/sys/fs/ext2fs/ext2_csum.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_extattr.c - copied unchanged from r322910, stable/11/sys/fs/ext2fs/ext2_extattr.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_extattr.h - copied unchanged from r322910, stable/11/sys/fs/ext2fs/ext2_extattr.h Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/elf_machdep.c projects/pnfs-planb-server-stable11/sys/amd64/amd64/genassym.c projects/pnfs-planb-server-stable11/sys/amd64/amd64/initcpu.c projects/pnfs-planb-server-stable11/sys/amd64/amd64/machdep.c projects/pnfs-planb-server-stable11/sys/amd64/amd64/pmap.c projects/pnfs-planb-server-stable11/sys/amd64/amd64/trap.c projects/pnfs-planb-server-stable11/sys/amd64/cloudabi64/cloudabi64_sysvec.c projects/pnfs-planb-server-stable11/sys/amd64/include/cpufunc.h projects/pnfs-planb-server-stable11/sys/amd64/include/md_var.h projects/pnfs-planb-server-stable11/sys/amd64/linux/linux_sysvec.c projects/pnfs-planb-server-stable11/sys/arm64/arm64/debug_monitor.c projects/pnfs-planb-server-stable11/sys/arm64/arm64/machdep.c projects/pnfs-planb-server-stable11/sys/arm64/arm64/mp_machdep.c projects/pnfs-planb-server-stable11/sys/arm64/include/machdep.h projects/pnfs-planb-server-stable11/sys/boot/forth/loader.conf projects/pnfs-planb-server-stable11/sys/boot/geli/Makefile projects/pnfs-planb-server-stable11/sys/cam/ata/ata_da.c projects/pnfs-planb-server-stable11/sys/cam/ctl/scsi_ctl.c projects/pnfs-planb-server-stable11/sys/compat/linuxkpi/common/include/linux/compiler.h projects/pnfs-planb-server-stable11/sys/conf/files projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/changes.txt projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/acfileio.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/adfile.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/adisasm.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/adwalk.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/ahids.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/ahpredef.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/ahtable.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/ahuuids.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmextern.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmrestag.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmtable.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmtbdump.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/dmtbinfo.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslascii.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslbtypes.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslcompile.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslcstyle.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asldefine.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslerror.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslexternal.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslfold.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslglobal.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslhelp.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslhelpers.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslkeywords.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asllength.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asllisting.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslload.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asllookup.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmain.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmap.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmapoutput.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmessages.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmessages.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslmethod.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asloffset.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslopcodes.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslopt.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asloptions.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslparser.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslpld.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslpredef.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslprimaries.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslprintf.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslresource.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslresources.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslrestype2s.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslrules.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslstartup.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslsupport.l projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslsupport.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asltokens.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asltransform.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asltree.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asltypes.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/asltypes.y projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslutils.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslwalks.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/aslxref.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/cvcompiler.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/cvdisasm.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/cvparser.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dtcompile.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dtcompiler.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dtfield.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dttable1.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dttable2.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dttemplate.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/dtutils.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/compiler/prmacros.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/debugger/dbdisply.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/debugger/dbexec.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/debugger/dbobject.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/debugger/dbxface.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmopcode.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmresrc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/disassembler/dmwalk.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsargs.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsdebug.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsfield.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsobject.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dsutils.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dswexec.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dswload.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/dispatcher/dswload2.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/events/evxfevnt.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/excreate.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exdebug.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exdump.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exmisc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exoparg1.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exoparg2.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/executer/exresolv.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/hardware/hwregs.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsaccess.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsarguments.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsinit.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsnames.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsprepkg.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsutils.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/namespace/nsxfeval.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/parser/psloop.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/parser/psobject.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/parser/psopcode.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/parser/psparse.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rscalc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsdump.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsdumpinfo.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsinfo.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsmisc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsserial.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/resources/rsxface.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbdata.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbfadt.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbinstal.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbutils.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbxface.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/tables/tbxfload.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utdecode.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/uthex.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utmath.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utmisc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utobject.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utownerid.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utresrc.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utstate.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utstrtoul64.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/uttrack.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/components/utilities/utxfmutex.c projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acapps.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acdisasm.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acdispat.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acglobal.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/aclocal.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acnames.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acobject.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acopcode.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acpi.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acpixf.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acpredef.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acresrc.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acrestyp.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actables.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actbl.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actbl1.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actbl2.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actbl3.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/actypes.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acutils.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/acuuid.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/amlcode.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/amlresrc.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/platform/acenv.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/platform/acfreebsd.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/include/platform/acgcc.h projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c projects/pnfs-planb-server-stable11/sys/dev/acpica/acpi.c projects/pnfs-planb-server-stable11/sys/dev/ahci/ahci_pci.c projects/pnfs-planb-server-stable11/sys/dev/ata/ata-pci.h projects/pnfs-planb-server-stable11/sys/dev/ata/chipsets/ata-intel.c projects/pnfs-planb-server-stable11/sys/dev/hwpmc/hwpmc_piv.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/include/hyperv.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/hn_nvs.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/hn_nvs.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/hn_rndis.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/hn_rndis.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/if_hn.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/if_hnreg.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/netvsc/if_hnvar.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/pcib/vmbus_pcib.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/storvsc/hv_vstorage.h projects/pnfs-planb-server-stable11/sys/dev/hyperv/utilities/hv_kvp.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/utilities/vmbus_timesync.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/vmbus/hyperv.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/vmbus/vmbus.c projects/pnfs-planb-server-stable11/sys/dev/hyperv/vmbus/vmbus_et.c projects/pnfs-planb-server-stable11/sys/dev/ichwd/ichwd.c projects/pnfs-planb-server-stable11/sys/dev/isp/isp.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/cq.h projects/pnfs-planb-server-stable11/sys/dev/mlx5/device.h projects/pnfs-planb-server-stable11/sys/dev/mlx5/driver.h projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_alloc.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_cmd.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_cq.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_health.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_main.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_core/mlx5_pagealloc.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_en/en.h projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_en/mlx5_en_main.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_en/mlx5_en_rx.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c projects/pnfs-planb-server-stable11/sys/dev/mlx5/mlx5_ifc.h projects/pnfs-planb-server-stable11/sys/dev/mmc/bridge.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmc.c projects/pnfs-planb-server-stable11/sys/dev/mmc/mmc_ioctl.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmc_private.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmc_subr.c projects/pnfs-planb-server-stable11/sys/dev/mmc/mmc_subr.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcbr_if.m projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcbrvar.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcbus_if.m projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcreg.h projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcsd.c projects/pnfs-planb-server-stable11/sys/dev/mmc/mmcvar.h projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_config.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_pci.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_sas.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_sas_lsi.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_table.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_table.h projects/pnfs-planb-server-stable11/sys/dev/mpr/mpr_user.c projects/pnfs-planb-server-stable11/sys/dev/mpr/mprvar.h projects/pnfs-planb-server-stable11/sys/dev/mps/mps.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_config.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_pci.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_sas.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_sas_lsi.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_table.c projects/pnfs-planb-server-stable11/sys/dev/mps/mps_table.h projects/pnfs-planb-server-stable11/sys/dev/mps/mps_user.c projects/pnfs-planb-server-stable11/sys/dev/mps/mpsvar.h projects/pnfs-planb-server-stable11/sys/dev/qlnx/qlnxe/qlnx_def.h projects/pnfs-planb-server-stable11/sys/dev/qlnx/qlnxe/qlnx_os.c projects/pnfs-planb-server-stable11/sys/dev/qlnx/qlnxe/qlnx_ver.h projects/pnfs-planb-server-stable11/sys/dev/sdhci/sdhci.c projects/pnfs-planb-server-stable11/sys/dev/sdhci/sdhci.h projects/pnfs-planb-server-stable11/sys/dev/sdhci/sdhci_acpi.c projects/pnfs-planb-server-stable11/sys/dev/sdhci/sdhci_if.m projects/pnfs-planb-server-stable11/sys/dev/sdhci/sdhci_pci.c projects/pnfs-planb-server-stable11/sys/dev/sound/pci/hda/hdac.c projects/pnfs-planb-server-stable11/sys/dev/sound/pci/hda/hdac.h projects/pnfs-planb-server-stable11/sys/dev/uart/uart_bus_pci.c projects/pnfs-planb-server-stable11/sys/dev/usb/controller/saf1761_otg.c projects/pnfs-planb-server-stable11/sys/dev/usb/controller/xhci_pci.c projects/pnfs-planb-server-stable11/sys/dev/usb/wlan/if_rsu.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_alloc.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_extern.h projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_inode.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_inode_cnv.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_vfsops.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2_vnops.c projects/pnfs-planb-server-stable11/sys/fs/ext2fs/ext2fs.h projects/pnfs-planb-server-stable11/sys/fs/ext2fs/inode.h projects/pnfs-planb-server-stable11/sys/fs/fdescfs/fdesc.h projects/pnfs-planb-server-stable11/sys/fs/fdescfs/fdesc_vfsops.c projects/pnfs-planb-server-stable11/sys/fs/fdescfs/fdesc_vnops.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonkrpc.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfs_commonsubs.c projects/pnfs-planb-server-stable11/sys/fs/nfs/nfscl.h projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfs_clbio.c projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfs_clport.c projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfs_clstate.c projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfs_clvfsops.c projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfs_clvnops.c projects/pnfs-planb-server-stable11/sys/fs/nfsclient/nfsmount.h projects/pnfs-planb-server-stable11/sys/fs/nfsserver/nfs_fha_new.c projects/pnfs-planb-server-stable11/sys/geom/geom_vfs.c projects/pnfs-planb-server-stable11/sys/geom/journal/g_journal.c projects/pnfs-planb-server-stable11/sys/geom/journal/g_journal.h projects/pnfs-planb-server-stable11/sys/i386/i386/exception.s projects/pnfs-planb-server-stable11/sys/i386/i386/genassym.c projects/pnfs-planb-server-stable11/sys/i386/i386/machdep.c projects/pnfs-planb-server-stable11/sys/i386/i386/pmap.c projects/pnfs-planb-server-stable11/sys/i386/i386/trap.c projects/pnfs-planb-server-stable11/sys/i386/include/md_var.h projects/pnfs-planb-server-stable11/sys/kern/kern_cpuset.c projects/pnfs-planb-server-stable11/sys/kern/kern_mutex.c projects/pnfs-planb-server-stable11/sys/kern/kern_sendfile.c projects/pnfs-planb-server-stable11/sys/kern/kern_sig.c projects/pnfs-planb-server-stable11/sys/kern/subr_pctrie.c projects/pnfs-planb-server-stable11/sys/kern/subr_witness.c projects/pnfs-planb-server-stable11/sys/kern/vfs_bio.c projects/pnfs-planb-server-stable11/sys/kern/vfs_syscalls.c projects/pnfs-planb-server-stable11/sys/mips/atheros/if_arge.c projects/pnfs-planb-server-stable11/sys/modules/ext2fs/Makefile projects/pnfs-planb-server-stable11/sys/modules/mlx5/Makefile projects/pnfs-planb-server-stable11/sys/modules/qlnx/qlnxe/Makefile projects/pnfs-planb-server-stable11/sys/net/if_enc.c projects/pnfs-planb-server-stable11/sys/net/if_enc.h projects/pnfs-planb-server-stable11/sys/net80211/ieee80211_ioctl.c projects/pnfs-planb-server-stable11/sys/net80211/ieee80211_mesh.c projects/pnfs-planb-server-stable11/sys/netipsec/ipsec.h projects/pnfs-planb-server-stable11/sys/netipsec/ipsec_input.c projects/pnfs-planb-server-stable11/sys/netipsec/ipsec_output.c projects/pnfs-planb-server-stable11/sys/netipsec/key.c projects/pnfs-planb-server-stable11/sys/netpfil/pf/pf_lb.c projects/pnfs-planb-server-stable11/sys/nfs/nfs_fha.c projects/pnfs-planb-server-stable11/sys/nfs/nfs_fha.h projects/pnfs-planb-server-stable11/sys/nfs/nfs_nfssvc.c projects/pnfs-planb-server-stable11/sys/nfs/nfssvc.h projects/pnfs-planb-server-stable11/sys/ofed/drivers/infiniband/core/addr.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/infiniband/core/cm.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/infiniband/hw/mlx4/mad.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/infiniband/hw/mlx4/main.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/en_netdev.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/en_port.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/en_tx.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/main.c projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/mlx4_en.h projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/mlx4_stats.h projects/pnfs-planb-server-stable11/sys/ofed/drivers/net/mlx4/port.c projects/pnfs-planb-server-stable11/sys/ofed/include/linux/mlx4/device.h projects/pnfs-planb-server-stable11/sys/sys/_termios.h projects/pnfs-planb-server-stable11/sys/sys/ata.h projects/pnfs-planb-server-stable11/sys/sys/param.h projects/pnfs-planb-server-stable11/sys/sys/pctrie.h projects/pnfs-planb-server-stable11/sys/sys/vnode.h projects/pnfs-planb-server-stable11/sys/ufs/ffs/ffs_snapshot.c projects/pnfs-planb-server-stable11/sys/ufs/ffs/ffs_softdep.c projects/pnfs-planb-server-stable11/sys/ufs/ffs/fs.h projects/pnfs-planb-server-stable11/sys/vm/vm_kern.c projects/pnfs-planb-server-stable11/sys/vm/vm_page.c projects/pnfs-planb-server-stable11/sys/x86/include/x86_var.h projects/pnfs-planb-server-stable11/sys/x86/x86/identcpu.c projects/pnfs-planb-server-stable11/sys/x86/x86/stack_machdep.c Directory Properties: projects/pnfs-planb-server-stable11/sys/ (props changed) Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/elf_machdep.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/elf_machdep.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/elf_machdep.c Fri Aug 25 23:09:11 2017 (r322911) @@ -84,6 +84,25 @@ struct sysentvec elf64_freebsd_sysvec = { }; INIT_SYSENTVEC(elf64_sysvec, &elf64_freebsd_sysvec); +void +amd64_lower_shared_page(struct sysentvec *sv) +{ + if (hw_lower_amd64_sharedpage != 0) { + sv->sv_maxuser -= PAGE_SIZE; + sv->sv_shared_page_base -= PAGE_SIZE; + sv->sv_usrstack -= PAGE_SIZE; + sv->sv_psstrings -= PAGE_SIZE; + } +} + +/* + * Do this fixup before INIT_SYSENTVEC (SI_ORDER_ANY) because the latter + * uses the value of sv_shared_page_base. + */ +SYSINIT(elf64_sysvec_fixup, SI_SUB_EXEC, SI_ORDER_FIRST, + (sysinit_cfunc_t) amd64_lower_shared_page, + &elf64_freebsd_sysvec); + static Elf64_Brandinfo freebsd_brand_info = { .brand = ELFOSABI_FREEBSD, .machine = EM_X86_64, Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/genassym.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/genassym.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/genassym.c Fri Aug 25 23:09:11 2017 (r322911) @@ -111,12 +111,10 @@ ASSYM(PML4SHIFT, PML4SHIFT); ASSYM(val_KPDPI, KPDPI); ASSYM(val_KPML4I, KPML4I); ASSYM(val_PML4PML4I, PML4PML4I); -ASSYM(USRSTACK, USRSTACK); ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADDRESS); ASSYM(KERNBASE, KERNBASE); ASSYM(DMAP_MIN_ADDRESS, DMAP_MIN_ADDRESS); ASSYM(DMAP_MAX_ADDRESS, DMAP_MAX_ADDRESS); -ASSYM(MCLBYTES, MCLBYTES); ASSYM(PCB_R15, offsetof(struct pcb, pcb_r15)); ASSYM(PCB_R14, offsetof(struct pcb, pcb_r14)); Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/initcpu.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/initcpu.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/initcpu.c Fri Aug 25 23:09:11 2017 (r322911) @@ -48,6 +48,11 @@ __FBSDID("$FreeBSD$"); static int hw_instruction_sse; SYSCTL_INT(_hw, OID_AUTO, instruction_sse, CTLFLAG_RD, &hw_instruction_sse, 0, "SIMD/MMX2 instructions available in CPU"); +static int lower_sharedpage_init; +int hw_lower_amd64_sharedpage; +SYSCTL_INT(_hw, OID_AUTO, lower_amd64_sharedpage, CTLFLAG_RDTUN, + &hw_lower_amd64_sharedpage, 0, + "Lower sharedpage to work around Ryzen issue with executing code near the top of user memory"); /* * -1: automatic (default) * 0: keep enable CLFLUSH @@ -120,6 +125,28 @@ init_amd(void) msr = rdmsr(0xc0011020); msr |= (uint64_t)1 << 15; wrmsr(0xc0011020, msr); + } + } + + /* + * Work around a problem on Ryzen that is triggered by executing + * code near the top of user memory, in our case the signal + * trampoline code in the shared page on amd64. + * + * This function is executed once for the BSP before tunables take + * effect so the value determined here can be overridden by the + * tunable. This function is then executed again for each AP and + * also on resume. Set a flag the first time so that value set by + * the tunable is not overwritten. + * + * The stepping and/or microcode versions should be checked after + * this issue is fixed by AMD so that we don't use this mode if not + * needed. + */ + if (lower_sharedpage_init == 0) { + lower_sharedpage_init = 1; + if (CPUID_TO_FAMILY(cpu_id) == 0x17) { + hw_lower_amd64_sharedpage = 1; } } } Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/machdep.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/machdep.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/machdep.c Fri Aug 25 23:09:11 2017 (r322911) @@ -1544,6 +1544,9 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) kmdp = init_ops.parse_preload_data(modulep); + identify_cpu(); + identify_hypervisor(); + /* Init basic tunables, hz etc */ init_param1(); @@ -1648,7 +1651,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) != NULL) vty_set_preferred(VTY_VT); - identify_cpu(); /* Final stage of CPU initialization */ + finishidentcpu(); /* Final stage of CPU initialization */ initializecpu(); /* Initialize CPU registers */ initializecpucache(); Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/pmap.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/pmap.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/pmap.c Fri Aug 25 23:09:11 2017 (r322911) @@ -430,8 +430,15 @@ static struct lock_object invl_gen_ts = { .lo_name = "invlts", }; +static bool +pmap_not_in_di(void) +{ + + return (curthread->td_md.md_invl_gen.gen == 0); +} + #define PMAP_ASSERT_NOT_IN_DI() \ - KASSERT(curthread->td_md.md_invl_gen.gen == 0, ("DI already started")) + KASSERT(pmap_not_in_di(), ("DI already started")) /* * Start a new Delayed Invalidation (DI) block of code, executed by @@ -2200,12 +2207,14 @@ static __inline void pmap_free_zero_pages(struct spglist *free) { vm_page_t m; + int count; - while ((m = SLIST_FIRST(free)) != NULL) { + for (count = 0; (m = SLIST_FIRST(free)) != NULL; count++) { SLIST_REMOVE_HEAD(free, plinks.s.ss); /* Preserve the page's PG_ZERO setting. */ vm_page_free_toq(m); } + atomic_subtract_int(&vm_cnt.v_wire_count, count); } /* @@ -2311,13 +2320,6 @@ _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_ pmap_unwire_ptp(pmap, va, pdppg, free); } - /* - * This is a release store so that the ordinary store unmapping - * the page table page is globally performed before TLB shoot- - * down is begun. - */ - atomic_subtract_rel_int(&vm_cnt.v_wire_count, 1); - /* * Put page on a list so that it is released after * *ALL* TLB shootdown is done @@ -2852,6 +2854,19 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, pv_entry_spare, CTLFLAG "Current number of spare pv entries"); #endif +static void +reclaim_pv_chunk_leave_pmap(pmap_t pmap, pmap_t locked_pmap, bool start_di) +{ + + if (pmap == NULL) + return; + pmap_invalidate_all(pmap); + if (pmap != locked_pmap) + PMAP_UNLOCK(pmap); + if (start_di) + pmap_delayed_invl_finished(); +} + /* * We are in a serious low memory condition. Resort to * drastic measures to free some pages so we can allocate @@ -2879,6 +2894,7 @@ reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **l struct spglist free; uint64_t inuse; int bit, field, freed; + bool start_di; PMAP_LOCK_ASSERT(locked_pmap, MA_OWNED); KASSERT(lockp != NULL, ("reclaim_pv_chunk: lockp is NULL")); @@ -2887,19 +2903,21 @@ reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **l PG_G = PG_A = PG_M = PG_RW = 0; SLIST_INIT(&free); TAILQ_INIT(&new_tail); - pmap_delayed_invl_started(); + + /* + * A delayed invalidation block should already be active if + * pmap_advise() or pmap_remove() called this function by way + * of pmap_demote_pde_locked(). + */ + start_di = pmap_not_in_di(); + mtx_lock(&pv_chunks_mutex); while ((pc = TAILQ_FIRST(&pv_chunks)) != NULL && SLIST_EMPTY(&free)) { TAILQ_REMOVE(&pv_chunks, pc, pc_lru); mtx_unlock(&pv_chunks_mutex); if (pmap != pc->pc_pmap) { - if (pmap != NULL) { - pmap_invalidate_all(pmap); - if (pmap != locked_pmap) - PMAP_UNLOCK(pmap); - } - pmap_delayed_invl_finished(); - pmap_delayed_invl_started(); + reclaim_pv_chunk_leave_pmap(pmap, locked_pmap, + start_di); pmap = pc->pc_pmap; /* Avoid deadlock and lock recursion. */ if (pmap > locked_pmap) { @@ -2916,6 +2934,8 @@ reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **l PG_A = pmap_accessed_bit(pmap); PG_M = pmap_modified_bit(pmap); PG_RW = pmap_rw_bit(pmap); + if (start_di) + pmap_delayed_invl_started(); } /* @@ -2990,18 +3010,12 @@ reclaim_pv_chunk(pmap_t locked_pmap, struct rwlock **l } TAILQ_CONCAT(&pv_chunks, &new_tail, pc_lru); mtx_unlock(&pv_chunks_mutex); - if (pmap != NULL) { - pmap_invalidate_all(pmap); - if (pmap != locked_pmap) - PMAP_UNLOCK(pmap); - } - pmap_delayed_invl_finished(); + reclaim_pv_chunk_leave_pmap(pmap, locked_pmap, start_di); if (m_pc == NULL && !SLIST_EMPTY(&free)) { m_pc = SLIST_FIRST(&free); SLIST_REMOVE_HEAD(&free, plinks.s.ss); /* Recycle a freed page table page. */ m_pc->wire_count = 1; - atomic_add_int(&vm_cnt.v_wire_count, 1); } pmap_free_zero_pages(&free); return (m_pc); @@ -3666,7 +3680,6 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t *pdq, vm_offse ("pmap_remove_pde: pte page wire count error")); mpte->wire_count = 0; pmap_add_delayed_free_list(mpte, free, FALSE); - atomic_subtract_int(&vm_cnt.v_wire_count, 1); } } return (pmap_unuse_pt(pmap, sva, *pmap_pdpe(pmap, sva), free)); @@ -4062,6 +4075,26 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t PG_RW = pmap_rw_bit(pmap); anychanged = FALSE; + /* + * Although this function delays and batches the invalidation + * of stale TLB entries, it does not need to call + * pmap_delayed_invl_started() and + * pmap_delayed_invl_finished(), because it does not + * ordinarily destroy mappings. Stale TLB entries from + * protection-only changes need only be invalidated before the + * pmap lock is released, because protection-only changes do + * not destroy PV entries. Even operations that iterate over + * a physical page's PV list of mappings, like + * pmap_remove_write(), acquire the pmap lock for each + * mapping. Consequently, for protection-only changes, the + * pmap lock suffices to synchronize both page table and TLB + * updates. + * + * This function only destroys a mapping if pmap_demote_pde() + * fails. In that case, stale TLB entries are immediately + * invalidated. + */ + PMAP_LOCK(pmap); for (; sva < eva; sva = va_next) { @@ -5385,6 +5418,15 @@ pmap_page_is_mapped(vm_page_t m) * no processor is currently accessing the user address space. In * particular, a page table entry's dirty bit won't change state once * this function starts. + * + * Although this function destroys all of the pmap's managed, + * non-wired mappings, it can delay and batch the invalidation of TLB + * entries without calling pmap_delayed_invl_started() and + * pmap_delayed_invl_finished(). Because the pmap is not active on + * any other processor, none of these TLB entries will ever be used + * before their eventual invalidation. Consequently, there is no need + * for either pmap_remove_all() or pmap_remove_write() to wait for + * that eventual TLB invalidation. */ void pmap_remove_pages(pmap_t pmap) @@ -5531,7 +5573,6 @@ pmap_remove_pages(pmap_t pmap) ("pmap_remove_pages: pte page wire count error")); mpte->wire_count = 0; pmap_add_delayed_free_list(mpte, &free, FALSE); - atomic_subtract_int(&vm_cnt.v_wire_count, 1); } } else { pmap_resident_count_dec(pmap, 1); Modified: projects/pnfs-planb-server-stable11/sys/amd64/amd64/trap.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/amd64/trap.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/amd64/trap.c Fri Aug 25 23:09:11 2017 (r322911) @@ -166,16 +166,22 @@ trap(struct trapframe *frame) #ifdef KDTRACE_HOOKS struct reg regs; #endif - struct thread *td = curthread; - struct proc *p = td->td_proc; + ksiginfo_t ksi; + struct thread *td; + struct proc *p; + register_t addr; #ifdef KDB register_t dr6; #endif - int i = 0, ucode = 0; + int i, ucode; u_int type; - register_t addr = 0; - ksiginfo_t ksi; + td = curthread; + p = td->td_proc; + i = 0; + ucode = 0; + addr = 0; + PCPU_INC(cnt.v_trap); type = frame->tf_trapno; @@ -370,7 +376,7 @@ trap(struct trapframe *frame) #ifdef DEV_ISA case T_NMI: nmi_handle_intr(type, frame); - break; + goto out; #endif /* DEV_ISA */ case T_OFLOW: /* integer overflow fault */ @@ -408,7 +414,7 @@ trap(struct trapframe *frame) if (dtrace_return_probe_ptr != NULL && dtrace_return_probe_ptr(®s) == 0) goto out; - break; + goto userout; #endif } } else { @@ -816,10 +822,24 @@ dblfault_handler(struct trapframe *frame) if (dtrace_doubletrap_func != NULL) (*dtrace_doubletrap_func)(); #endif - printf("\nFatal double fault\n"); - printf("rip = 0x%lx\n", frame->tf_rip); - printf("rsp = 0x%lx\n", frame->tf_rsp); - printf("rbp = 0x%lx\n", frame->tf_rbp); + printf("\nFatal double fault\n" + "rip %#lx rsp %#lx rbp %#lx\n" + "rax %#lx rdx %#lx rbx %#lx\n" + "rcx %#lx rsi %#lx rdi %#lx\n" + "r8 %#lx r9 %#lx r10 %#lx\n" + "r11 %#lx r12 %#lx r13 %#lx\n" + "r14 %#lx r15 %#lx rflags %#lx\n" + "cs %#lx ss %#lx ds %#hx es %#hx fs %#hx gs %#hx\n" + "fsbase %#lx gsbase %#lx kgsbase %#lx\n", + frame->tf_rip, frame->tf_rsp, frame->tf_rbp, + frame->tf_rax, frame->tf_rdx, frame->tf_rbx, + frame->tf_rcx, frame->tf_rdi, frame->tf_rsi, + frame->tf_r8, frame->tf_r9, frame->tf_r10, + frame->tf_r11, frame->tf_r12, frame->tf_r13, + frame->tf_r14, frame->tf_r15, frame->tf_rflags, + frame->tf_cs, frame->tf_ss, frame->tf_ds, frame->tf_es, + frame->tf_fs, frame->tf_gs, + rdmsr(MSR_FSBASE), rdmsr(MSR_GSBASE), rdmsr(MSR_KGSBASE)); #ifdef SMP /* two separate prints in case of a trap on an unmapped page */ printf("cpuid = %d; ", PCPU_GET(cpuid)); Modified: projects/pnfs-planb-server-stable11/sys/amd64/cloudabi64/cloudabi64_sysvec.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/cloudabi64/cloudabi64_sysvec.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/cloudabi64/cloudabi64_sysvec.c Fri Aug 25 23:09:11 2017 (r322911) @@ -199,7 +199,8 @@ static struct sysentvec cloudabi64_elf_sysvec = { .sv_coredump = elf64_coredump, .sv_pagesize = PAGE_SIZE, .sv_minuser = VM_MIN_ADDRESS, - .sv_maxuser = VM_MAXUSER_ADDRESS, + /* Keep top page reserved to work around AMD Ryzen stability issues. */ + .sv_maxuser = VM_MAXUSER_ADDRESS - PAGE_SIZE, .sv_stackprot = VM_PROT_READ | VM_PROT_WRITE, .sv_copyout_strings = cloudabi64_copyout_strings, .sv_setregs = cloudabi64_proc_setregs, Modified: projects/pnfs-planb-server-stable11/sys/amd64/include/cpufunc.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/include/cpufunc.h Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/include/cpufunc.h Fri Aug 25 23:09:11 2017 (r322911) @@ -651,6 +651,38 @@ load_gs(u_short sel) } #endif +static __inline uint64_t +rdfsbase(void) +{ + uint64_t x; + + __asm __volatile("rdfsbase %0" : "=r" (x)); + return (x); +} + +static __inline void +wrfsbase(uint64_t x) +{ + + __asm __volatile("wrfsbase %0" : : "r" (x)); +} + +static __inline uint64_t +rdgsbase(void) +{ + uint64_t x; + + __asm __volatile("rdgsbase %0" : "=r" (x)); + return (x); +} + +static __inline void +wrgsbase(uint64_t x) +{ + + __asm __volatile("wrgsbase %0" : : "r" (x)); +} + static __inline void bare_lgdt(struct region_descriptor *addr) { Modified: projects/pnfs-planb-server-stable11/sys/amd64/include/md_var.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/include/md_var.h Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/include/md_var.h Fri Aug 25 23:09:11 2017 (r322911) @@ -34,11 +34,14 @@ #include -extern uint64_t *vm_page_dump; +extern uint64_t *vm_page_dump; +extern int hw_lower_amd64_sharedpage; struct savefpu; +struct sysentvec; void amd64_db_resume_dbreg(void); +void amd64_lower_shared_page(struct sysentvec *); void amd64_syscall(struct thread *td, int traced); void doreti_iret(void) __asm(__STRING(doreti_iret)); void doreti_iret_fault(void) __asm(__STRING(doreti_iret_fault)); Modified: projects/pnfs-planb-server-stable11/sys/amd64/linux/linux_sysvec.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/amd64/linux/linux_sysvec.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/amd64/linux/linux_sysvec.c Fri Aug 25 23:09:11 2017 (r322911) @@ -833,6 +833,8 @@ static void linux_vdso_install(void *param) { + amd64_lower_shared_page(&elf_linux_sysvec); + linux_szsigcode = (&_binary_linux_locore_o_end - &_binary_linux_locore_o_start); Modified: projects/pnfs-planb-server-stable11/sys/arm64/arm64/debug_monitor.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/arm64/arm64/debug_monitor.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/arm64/arm64/debug_monitor.c Fri Aug 25 23:09:11 2017 (r322911) @@ -453,15 +453,12 @@ dbg_monitor_init(void) { u_int i; - /* Clear OS lock */ - WRITE_SPECIALREG(OSLAR_EL1, 0); - /* Find out many breakpoints and watchpoints we can use */ dbg_watchpoint_num = ((READ_SPECIALREG(ID_AA64DFR0_EL1) >> 20) & 0xf) + 1; dbg_breakpoint_num = ((READ_SPECIALREG(ID_AA64DFR0_EL1) >> 12) & 0xf) + 1; if (bootverbose && PCPU_GET(cpuid) == 0) { - db_printf("%d watchpoints and %d breakpoints supported\n", + printf("%d watchpoints and %d breakpoints supported\n", dbg_watchpoint_num, dbg_breakpoint_num); } Modified: projects/pnfs-planb-server-stable11/sys/arm64/arm64/machdep.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/arm64/arm64/machdep.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/arm64/arm64/machdep.c Fri Aug 25 23:09:11 2017 (r322911) @@ -213,7 +213,8 @@ fill_fpregs(struct thread *td, struct fpreg *regs) * If we have just been running VFP instructions we will * need to save the state to memcpy it below. */ - vfp_save_state(td, pcb); + if (td == curthread) + vfp_save_state(td, pcb); memcpy(regs->fp_q, pcb->pcb_vfp, sizeof(regs->fp_q)); regs->fp_cr = pcb->pcb_fpcr; @@ -242,22 +243,24 @@ int fill_dbregs(struct thread *td, struct dbreg *regs) { - panic("ARM64TODO: fill_dbregs"); + printf("ARM64TODO: fill_dbregs"); + return (EDOOFUS); } int set_dbregs(struct thread *td, struct dbreg *regs) { - panic("ARM64TODO: set_dbregs"); + printf("ARM64TODO: set_dbregs"); + return (EDOOFUS); } int ptrace_set_pc(struct thread *td, u_long addr) { - panic("ARM64TODO: ptrace_set_pc"); - return (0); + printf("ARM64TODO: ptrace_set_pc"); + return (EDOOFUS); } int @@ -967,11 +970,24 @@ initarm(struct arm64_bootparams *abp) mutex_init(); init_param2(physmem); - dbg_monitor_init(); + dbg_init(); kdb_init(); pan_enable(); early_boot = 0; +} + +void +dbg_init(void) +{ + + /* Clear OS lock */ + WRITE_SPECIALREG(OSLAR_EL1, 0); + + /* This permits DDB to use debug registers for watchpoints. */ + dbg_monitor_init(); + + /* TODO: Eventually will need to initialize debug registers here. */ } #ifdef DDB Modified: projects/pnfs-planb-server-stable11/sys/arm64/arm64/mp_machdep.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/arm64/arm64/mp_machdep.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/arm64/arm64/mp_machdep.c Fri Aug 25 23:09:11 2017 (r322911) @@ -51,7 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include #ifdef VFP @@ -277,7 +277,7 @@ init_secondary(uint64_t cpu) vfp_init(); #endif - dbg_monitor_init(); + dbg_init(); pan_enable(); /* Enable interrupts */ Modified: projects/pnfs-planb-server-stable11/sys/arm64/include/machdep.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/arm64/include/machdep.h Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/arm64/include/machdep.h Fri Aug 25 23:09:11 2017 (r322911) @@ -40,6 +40,7 @@ struct arm64_bootparams { extern vm_paddr_t physmap[]; extern u_int physmap_idx; +void dbg_init(void); void initarm(struct arm64_bootparams *); extern void (*pagezero)(void *); Modified: projects/pnfs-planb-server-stable11/sys/boot/forth/loader.conf ============================================================================== --- projects/pnfs-planb-server-stable11/sys/boot/forth/loader.conf Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/boot/forth/loader.conf Fri Aug 25 23:09:11 2017 (r322911) @@ -70,9 +70,9 @@ ram_blacklist_type="ram_blacklist" # Required for the ### Initial memory disk settings ########################### ############################################################## -#initmd_load="YES" # The "initmd" prefix is arbitrary. -#initmd_type="md_image" # Create md(4) disk at boot. -#initmd_name="/boot/root.img" # Path to a file containing the image. +#mdroot_load="YES" # The "mdroot" prefix is arbitrary. +#mdroot_type="md_image" # Create md(4) disk at boot. +#mdroot_name="/boot/root.img" # Path to a file containing the image. #rootdev="ufs:/dev/md0" # Set the root filesystem to md(4) device. Modified: projects/pnfs-planb-server-stable11/sys/boot/geli/Makefile ============================================================================== --- projects/pnfs-planb-server-stable11/sys/boot/geli/Makefile Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/boot/geli/Makefile Fri Aug 25 23:09:11 2017 (r322911) @@ -28,23 +28,23 @@ SRCS+= bcmp.c bcopy.c bzero.c SRCS+= pwgets.c # sha256 and sha512 from sys/crypto -.PATH: ${.CURDIR}/../../crypto/sha2 +.PATH: ${SRCTOP}/sys/crypto/sha2 CFLAGS+= -DWEAK_REFS SRCS+= sha256c.c sha512c.c # md5 from libmd -.PATH: ${.CURDIR}/../../../lib/libmd +.PATH: ${SRCTOP}/lib/libmd SRCS+= md5c.c # AES implementation from sys/crypto -.PATH: ${.CURDIR}/../../crypto/rijndael +.PATH: ${SRCTOP}/sys/crypto/rijndael CFLAGS+= -I${.CURDIR}/../../ # Remove asserts CFLAGS+= -DNDEBUG SRCS+= rijndael-alg-fst.c rijndael-api-fst.c rijndael-api.c # local GELI Implementation -.PATH: ${.CURDIR}/../../geom/eli +.PATH: ${SRCTOP}/sys/geom/eli CFLAGS+= -D_STAND SRCS+= geliboot_crypto.c g_eli_hmac.c g_eli_key.c g_eli_key_cache.c pkcs5v2.c Modified: projects/pnfs-planb-server-stable11/sys/cam/ata/ata_da.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/cam/ata/ata_da.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/cam/ata/ata_da.c Fri Aug 25 23:09:11 2017 (r322911) @@ -1288,7 +1288,7 @@ adaasync(void *callback_arg, u_int32_t code, xpt_action((union ccb *)&cgd); if (ADA_RA >= 0 && softc->flags & ADA_FLAG_CAN_RAHEAD) softc->state = ADA_STATE_RAHEAD; - else if (ADA_WC >= 0 && softc->flags & ADA_FLAG_CAN_RAHEAD) + else if (ADA_WC >= 0 && softc->flags & ADA_FLAG_CAN_WCACHE) softc->state = ADA_STATE_WCACHE; else if ((softc->flags & ADA_FLAG_CAN_LOG) && (softc->zone_mode != ADA_ZONE_NONE)) Modified: projects/pnfs-planb-server-stable11/sys/cam/ctl/scsi_ctl.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/cam/ctl/scsi_ctl.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/cam/ctl/scsi_ctl.c Fri Aug 25 23:09:11 2017 (r322911) @@ -1009,7 +1009,8 @@ ctlfe_requeue_ccb(struct cam_periph *periph, union ccb * target/lun. Reset the target and LUN fields back to the wildcard * values before we send them back down to the SIM. */ - xpt_setup_ccb(&ccb->ccb_h, periph->path, CAM_PRIORITY_NONE); + xpt_setup_ccb_flags(&ccb->ccb_h, periph->path, CAM_PRIORITY_NONE, + ccb->ccb_h.flags); xpt_action(ccb); } Modified: projects/pnfs-planb-server-stable11/sys/compat/linuxkpi/common/include/linux/compiler.h ============================================================================== --- projects/pnfs-planb-server-stable11/sys/compat/linuxkpi/common/include/linux/compiler.h Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/compat/linuxkpi/common/include/linux/compiler.h Fri Aug 25 23:09:11 2017 (r322911) @@ -86,9 +86,10 @@ } while (0) #define READ_ONCE(x) ({ \ - __typeof(x) __var; \ - barrier(); \ - __var = ACCESS_ONCE(x); \ + __typeof(x) __var = ({ \ + barrier(); \ + ACCESS_ONCE(x); \ + }); \ barrier(); \ __var; \ }) Modified: projects/pnfs-planb-server-stable11/sys/conf/files ============================================================================== --- projects/pnfs-planb-server-stable11/sys/conf/files Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/conf/files Fri Aug 25 23:09:11 2017 (r322911) @@ -340,6 +340,7 @@ contrib/dev/acpica/components/dispatcher/dsmethod.c op contrib/dev/acpica/components/dispatcher/dsmthdat.c optional acpi contrib/dev/acpica/components/dispatcher/dsobject.c optional acpi contrib/dev/acpica/components/dispatcher/dsopcode.c optional acpi +contrib/dev/acpica/components/dispatcher/dspkginit.c optional acpi contrib/dev/acpica/components/dispatcher/dsutils.c optional acpi contrib/dev/acpica/components/dispatcher/dswexec.c optional acpi contrib/dev/acpica/components/dispatcher/dswload.c optional acpi @@ -477,6 +478,7 @@ contrib/dev/acpica/components/utilities/utobject.c opt contrib/dev/acpica/components/utilities/utosi.c optional acpi contrib/dev/acpica/components/utilities/utownerid.c optional acpi contrib/dev/acpica/components/utilities/utpredef.c optional acpi +contrib/dev/acpica/components/utilities/utresdecode.c optional acpi acpi_debug contrib/dev/acpica/components/utilities/utresrc.c optional acpi contrib/dev/acpica/components/utilities/utstate.c optional acpi contrib/dev/acpica/components/utilities/utstring.c optional acpi @@ -3329,9 +3331,12 @@ geom/virstor/binstream.c optional geom_virstor geom/virstor/g_virstor.c optional geom_virstor geom/virstor/g_virstor_md.c optional geom_virstor geom/zero/g_zero.c optional geom_zero +fs/ext2fs/ext2_acl.c optional ext2fs fs/ext2fs/ext2_alloc.c optional ext2fs fs/ext2fs/ext2_balloc.c optional ext2fs fs/ext2fs/ext2_bmap.c optional ext2fs +fs/ext2fs/ext2_csum.c optional ext2fs +fs/ext2fs/ext2_extattr.c optional ext2fs fs/ext2fs/ext2_extents.c optional ext2fs fs/ext2fs/ext2_inode.c optional ext2fs fs/ext2fs/ext2_inode_cnv.c optional ext2fs @@ -4287,6 +4292,8 @@ dev/mlx5/mlx5_core/mlx5_alloc.c optional mlx5 pci \ dev/mlx5/mlx5_core/mlx5_cmd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_cq.c optional mlx5 pci \ + compile-with "${OFED_C}" +dev/mlx5/mlx5_core/mlx5_diagnostics.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_eq.c optional mlx5 pci \ compile-with "${OFED_C}" Modified: projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/changes.txt ============================================================================== --- projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/changes.txt Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/changes.txt Fri Aug 25 23:09:11 2017 (r322911) @@ -1,4 +1,286 @@ ---------------------------------------- +28 July 2017. Summary of changes for version 20170728: + + +1) ACPICA kernel-resident subsystem: + +Fixed a regression seen with small resource descriptors that could cause +an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. + +AML interpreter: Implemented a new feature that allows forward references +from individual named references within package objects that are +contained within blocks of "module-level code". This provides +compatibility with other ACPI implementations and supports existing +firmware that depends on this feature. Example: + + Name (ABCD, 1) + If (ABCD) /* An If() at module-level */ + { + Name (PKG1, Package() + { + INT1 /* Forward reference to object INT1 +*/ + }) + Name (INT1, 0x1234) + } + +AML Interpreter: Fixed a problem with the Alias() operator where aliases +to some ASL objects were not handled properly. Objects affected are: +Mutex, Event, and OperationRegion. + +AML Debugger: Enhanced to properly handle AML Alias objects. These +objects have one level of indirection which was not fully supported by +the debugger. + +Table Manager: Added support to detect and ignore duplicate SSDTs within +the XSDT/RSDT. This error in the XSDT has been seen in the field. + +EFI and EDK2 support: + Enabled /WX flag for MSVC builds + Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer + Added local support for 64-bit multiply and shift operations + Added support to compile acpidump.efi on Windows + Added OSL function stubs for interfaces not used under EFI + +Added additional support for the _DMA predefined name. _DMA returns a +buffer containing a resource template. This change add support within the +resource manager (AcpiWalkResourceBuffer) to walk and parse this list of +resource descriptors. Lorenzo Pieralisi + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem where the internal input line buffer(s) could +overflow if there are very long lines in the input ASL source code file. +Implemented buffer management that automatically increases the size of +the buffers as necessary. + +iASL: Added an option (-vx) to "expect" particular remarks, warnings and +errors. If the specified exception is not raised during compilation, the +compiler emits an error. This is intended to support the ASL test suite, +but may be useful in other contexts. + +iASL: Implemented a new predefined macro, __METHOD__, which returns a +string containing the name of the current control method that is being +compiled. + +iASL: Implemented debugger and table compiler support for the SDEI ACPI +table (Software Delegated Exception Interface). James Morse + + +Unix/Linux makefiles: Added an option to disable compile optimizations. +The disable occurs when the NOOPT flag is set to TRUE. +theracermaster@gmail.com + +Acpidump: Added support for multiple DSDT and FACS tables. This can occur +when there are different tables for 32-bit versus 64-bit. + +Enhanced error reporting for the ASL test suite (ASLTS) by removing +unnecessary/verbose text, and emit the actual line number where an error +has occurred. These changes are intended to improve the usefulness of the +test suite. + +---------------------------------------- +29 June 2017. Summary of changes for version 20170629: + + +1) ACPICA kernel-resident subsystem: + +Tables: Implemented a deferred ACPI table verification. This is useful +for operating systems where the tables cannot be verified in the early +initialization stage due to early memory mapping limitations on some +architectures. Lv Zheng. + +Tables: Removed the signature validation for dynamically loaded tables. +Provides compatibility with other ACPI implementations. Previously, only +SSDT tables were allowed, as per the ACPI specification. Now, any table +signature can be used via the Load() operator. Lv Zheng. + +Tables: Fixed several mutex issues that could cause errors during table +acquisition. Lv Zheng. + +Tables: Fixed a problem where an ACPI warning could be generated if a +null pointer was passed to the AcpiPutTable interface. Lv Zheng. + +Tables: Added a mechanism to handle imbalances for the AcpiGetTable and +AcpiPutTable interfaces. This applies to the "late stage" table loading +when the use of AcpiPutTable is no longer required (since the system +memory manager is fully running and available). Lv Zheng. + +Fixed/Reverted a regression during processing of resource descriptors +that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG +exception in this case. + +Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the +I/O Remapping specification. Robin Murphy + +Interpreter: Fixed a possible fault if an Alias operator with an invalid +or duplicate target is encountered during Alias creation in +AcpiExCreateAlias. Alex James + +Added an option to use designated initializers for function pointers. +Kees Cook + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Allow compilation of External declarations with target pathnames +that refer to existing named objects within the table. Erik Schmauss. + +iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a +FieldUnit name also is declared via External in the same table. Erik +Schmauss. + +iASL: Allow existing scope names within pathnames used in External +statements. For example: + External (ABCD.EFGH) // ABCD exists, but EFGH is truly external + Device (ABCD) + +iASL: IORT ACPI table: Implemented changes required to decode the new +Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table +compiler. Ganapatrao Kulkarni + +Disassembler: Don't abort disassembly on errors from External() +statements. Erik Schmauss. + +Disassembler: fixed a possible fault when one of the Create*Field +operators references a Resource Template. ACPICA Bugzilla 1396. + +iASL: In the source code, resolved some naming inconsistences across the +parsing support. Fixes confusion between "Parse Op" and "Parse Node". +Adds a new file, aslparseop.c + +---------------------------------------- +31 May 2017. Summary of changes for version 20170531: + + +0) ACPI 6.2 support: + +The ACPI specification version 6.2 has been released and is available at +http://uefi.org/specifications + +This version of ACPICA fully supports the ACPI 6.2 specification. Changes +are summarized below. + +New ACPI tables (Table Compiler/Disassembler/Templates): + HMAT (Heterogeneous Memory Attributes Table) + WSMT (Windows SMM Security Mitigation Table) + PPTT (Processor Properties Topology Table) + +New subtables for existing ACPI tables: + HEST (New subtable, Arch-deferred machine check) + SRAT (New subtable, Arch-specific affinity structure) + PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) + +Simple updates for existing ACPI tables: + BGRT (two new flag bits) + HEST (New bit defined for several subtables, GHES_ASSIST) + +New Resource Descriptors and Resource macros (Compiler/Disassembler): + PinConfig() + PinFunction() + PinGroup() + PinGroupConfig() + PinGroupFunction() + New type for hardware error notification (section 18.3.2.9) + +New predefined names/methods (Compiler/Interpreter): + _HMA (Heterogeneous Memory Attributes) + _LSI (Label Storage Information) + _LSR (Label Storage Read) + _LSW (Label Storage Write) + +ASL grammar/macro changes (Compiler): + For() ASL macro, implemented with the AML while operator + Extensions to Concatenate operator + Support for multiple definition blocks in same ASL file + Clarification for Buffer operator + Allow executable AML code underneath all scopes (Devices, etc.) + Clarification/change for the _OSI return value + ASL grammar update for reference operators + Allow a zero-length string for AML filename in DefinitionBlock + +Miscellaneous: + New device object notification value + Remove a notify value (0x0C) for graceful shutdown + New UUIDs for processor/cache properties and + physical package property + New _HID, ACPI0014 (Wireless Power Calibration Device) + + +1) ACPICA kernel-resident subsystem: + +Added support to disable ACPI events on hardware-reduced platforms. +Eliminates error messages of the form "Could not enable fixed event". Lv +Zheng + +Fixed a problem using Device/Thermal objects with the ObjectType and +DerefOf ASL operators. This support had not been fully/properly +implemented. + +Fixed a problem where if a Buffer object containing a resource template +was longer than the actual resource template, an error was generated -- +even though the AML is legal. This case has been seen in the field. + +Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. +The values for DUAL_PIC and MULTIPLE_APIC were reversed. + +Added header file changes for the TPM2 ACPI table. Update to new version +of the TCG specification. Adds a new TPM2 subtable for ARM SMC. + +Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. +These interfaces are intended to be used only in conjunction with the +predefined _DLM method (Device Lock Method). "This object appears in a +device scope when AML access to the device must be synchronized with the +OS environment". + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total + Debug Version: 204.0K Code, 84.3K Data, 288.3K Total + Previous Release: + Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total + Debug Version: 207.5K Code, 82.7K Data, 290.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a problem where an External() declaration could not refer to +a Field Unit. Erik Schmauss. + +Disassembler: Improved support for the Switch/Case operators. This +feature will disassemble AML code back to the original Switch operators +when possible, instead of an If..Else sequence. David Box + +iASL and disassembler: Improved the handling of multiple extraneous +parentheses for both ASL input and disassembled ASL output. + +Improved the behavior of the iASL compiler and disassembler to detect +improper use of external declarations + +Disassembler: Now aborts immediately upon detection of an unknown AML +opcode. The AML parser has no real way to recover from this, and can +result in the creation of an ill-formed parse tree that causes errors +later during the disassembly. + +All tools: Fixed a problem where the Unix application OSL did not handle +control-c correctly. For example, a control-c could incorrectly wake the +debugger. + +AcpiExec: Improved the Control-C handling and added a handler for +segmentation faults (SIGSEGV). Supports both Windows and Unix-like +environments. + +Reduced the verbosity of the generic unix makefiles. Previously, each +compilation displayed the full set of compiler options. This has been +eliminated as the options are easily inspected within the makefiles. Each +compilation now results in a single line of output. + +---------------------------------------- 03 March 2017. Summary of changes for version 20170303: Modified: projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/acfileio.c ============================================================================== --- projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/acfileio.c Fri Aug 25 22:58:54 2017 (r322910) +++ projects/pnfs-planb-server-stable11/sys/contrib/dev/acpica/common/acfileio.c Fri Aug 25 23:09:11 2017 (r322911) @@ -175,6 +175,36 @@ AcCheckTextModeCorruption ( /******************************************************************************* * + * FUNCTION: AcDeleteTableList + * + * PARAMETERS: ListHead - List to delete + * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sat Aug 26 07:05:33 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6FF16DEFF22 for ; Sat, 26 Aug 2017 07:05:33 +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 mx1.freebsd.org (Postfix) with ESMTPS id 194DB2283; Sat, 26 Aug 2017 07:05:33 +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 v7Q75W89021168; Sat, 26 Aug 2017 07:05:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v7Q75UlS021144; Sat, 26 Aug 2017 07:05:30 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201708260705.v7Q75UlS021144@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Ngie Cooper Date: Sat, 26 Aug 2017 07:05:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r322922 - in projects/runtime-coverage: . bin/dd contrib/compiler-rt/lib/builtins lib/libc/gen lib/libc/tests/gen lib/msun/tests sys/boot/efi/loader sys/boot/efi/loader/arch/amd64 sys/b... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage: . bin/dd contrib/compiler-rt/lib/builtins lib/libc/gen lib/libc/tests/gen lib/msun/tests sys/boot/efi/loader sys/boot/efi/loader/arch/amd64 sys/boot/efi/loader/arch/i386 ... X-SVN-Commit-Revision: 322922 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 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: Sat, 26 Aug 2017 07:05:33 -0000 Author: ngie Date: Sat Aug 26 07:05:29 2017 New Revision: 322922 URL: https://svnweb.freebsd.org/changeset/base/322922 Log: MFhead@r322921 Added: projects/runtime-coverage/lib/libc/tests/gen/getmntinfo_test.c - copied unchanged from r322921, head/lib/libc/tests/gen/getmntinfo_test.c Modified: projects/runtime-coverage/UPDATING projects/runtime-coverage/bin/dd/args.c projects/runtime-coverage/bin/dd/conv.c projects/runtime-coverage/bin/dd/dd.c projects/runtime-coverage/bin/dd/dd.h projects/runtime-coverage/bin/dd/position.c projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h projects/runtime-coverage/lib/libc/gen/getmntinfo.c projects/runtime-coverage/lib/libc/tests/gen/Makefile projects/runtime-coverage/lib/msun/tests/trig_test.c projects/runtime-coverage/sys/boot/efi/loader/arch/amd64/Makefile.inc projects/runtime-coverage/sys/boot/efi/loader/arch/i386/Makefile.inc projects/runtime-coverage/sys/boot/efi/loader/conf.c projects/runtime-coverage/sys/boot/i386/libi386/spinconsole.c projects/runtime-coverage/sys/compat/cloudabi/cloudabi_fd.c projects/runtime-coverage/sys/compat/cloudabi/cloudabi_sock.c projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_proto.h projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscall.h projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscalls.c projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_sysent.c projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_systrace_args.c projects/runtime-coverage/sys/compat/cloudabi64/cloudabi64_proto.h projects/runtime-coverage/sys/compat/cloudabi64/cloudabi64_syscall.h projects/runtime-coverage/sys/compat/cloudabi64/cloudabi64_syscalls.c projects/runtime-coverage/sys/compat/cloudabi64/cloudabi64_sysent.c projects/runtime-coverage/sys/compat/cloudabi64/cloudabi64_systrace_args.c projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_types_common.h projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_vdso_aarch64.S projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_vdso_armv6.S projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_vdso_i686.S projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_vdso_i686_on_64bit.S projects/runtime-coverage/sys/contrib/cloudabi/cloudabi_vdso_x86_64.S projects/runtime-coverage/sys/contrib/cloudabi/syscalls32.master projects/runtime-coverage/sys/contrib/cloudabi/syscalls64.master projects/runtime-coverage/sys/dev/cxgbe/common/t4_hw.c projects/runtime-coverage/sys/dev/e1000/if_em.c projects/runtime-coverage/sys/dev/e1000/if_em.h projects/runtime-coverage/sys/dev/nvme/nvme.c projects/runtime-coverage/sys/dev/nvme/nvme.h projects/runtime-coverage/sys/dev/nvme/nvme_ctrlr.c projects/runtime-coverage/sys/dev/nvme/nvme_ctrlr_cmd.c projects/runtime-coverage/sys/dev/nvme/nvme_ns.c projects/runtime-coverage/sys/dev/nvme/nvme_private.h projects/runtime-coverage/sys/dev/syscons/scvgarndr.c projects/runtime-coverage/sys/dev/syscons/syscons.c projects/runtime-coverage/sys/dev/syscons/syscons.h projects/runtime-coverage/sys/kern/subr_blist.c projects/runtime-coverage/sys/kern/sys_socket.c projects/runtime-coverage/sys/mips/include/_limits.h projects/runtime-coverage/sys/netinet/tcp_timer.c projects/runtime-coverage/sys/netinet/tcp_var.h projects/runtime-coverage/sys/sys/consio.h projects/runtime-coverage/sys/sys/param.h projects/runtime-coverage/sys/ufs/ffs/ffs_softdep.c projects/runtime-coverage/sys/vm/swap_pager.c projects/runtime-coverage/sys/vm/vm_object.c projects/runtime-coverage/sys/vm/vm_object.h projects/runtime-coverage/usr.bin/calendar/calendars/calendar.freebsd projects/runtime-coverage/usr.bin/netstat/inet.c projects/runtime-coverage/usr.bin/truss/syscalls.c projects/runtime-coverage/usr.sbin/makefs/mtree.c projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.1 projects/runtime-coverage/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/runtime-coverage/ (props changed) projects/runtime-coverage/contrib/compiler-rt/ (props changed) Modified: projects/runtime-coverage/UPDATING ============================================================================== --- projects/runtime-coverage/UPDATING Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/UPDATING Sat Aug 26 07:05:29 2017 (r322922) @@ -51,6 +51,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW: ****************************** SPECIAL WARNING: ****************************** +20170825: + Move PMTUD blackhole counters to TCPSTATS and remove them from bare + sysctl values. Minor nit, but requires a rebuild of both world/kernel + to complete. + 20170814: "make check" behavior (made in ^/head@r295380) has been changed to execute from a limited sandbox, as opposed to executing from Modified: projects/runtime-coverage/bin/dd/args.c ============================================================================== --- projects/runtime-coverage/bin/dd/args.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/bin/dd/args.c Sat Aug 26 07:05:29 2017 (r322922) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -184,7 +185,7 @@ f_bs(char *arg) res = get_num(arg); if (res < 1 || res > SSIZE_MAX) - errx(1, "bs must be between 1 and %jd", (intmax_t)SSIZE_MAX); + errx(1, "bs must be between 1 and %zd", (ssize_t)SSIZE_MAX); in.dbsz = out.dbsz = (size_t)res; } @@ -195,22 +196,22 @@ f_cbs(char *arg) res = get_num(arg); if (res < 1 || res > SSIZE_MAX) - errx(1, "cbs must be between 1 and %jd", (intmax_t)SSIZE_MAX); + errx(1, "cbs must be between 1 and %zd", (ssize_t)SSIZE_MAX); cbsz = (size_t)res; } static void f_count(char *arg) { - intmax_t res; + uintmax_t res; - res = (intmax_t)get_num(arg); - if (res < 0) - errx(1, "count cannot be negative"); + res = get_num(arg); + if (res == UINTMAX_MAX) + errc(1, ERANGE, "%s", oper); if (res == 0) - cpy_cnt = (uintmax_t)-1; + cpy_cnt = UINTMAX_MAX; else - cpy_cnt = (uintmax_t)res; + cpy_cnt = res; } static void @@ -219,7 +220,7 @@ f_files(char *arg) files_cnt = get_num(arg); if (files_cnt < 1) - errx(1, "files must be between 1 and %jd", (uintmax_t)-1); + errx(1, "files must be between 1 and %zu", SIZE_MAX); } static void @@ -240,8 +241,8 @@ f_ibs(char *arg) if (!(ddflags & C_BS)) { res = get_num(arg); if (res < 1 || res > SSIZE_MAX) - errx(1, "ibs must be between 1 and %jd", - (intmax_t)SSIZE_MAX); + errx(1, "ibs must be between 1 and %zd", + (ssize_t)SSIZE_MAX); in.dbsz = (size_t)res; } } @@ -261,8 +262,8 @@ f_obs(char *arg) if (!(ddflags & C_BS)) { res = get_num(arg); if (res < 1 || res > SSIZE_MAX) - errx(1, "obs must be between 1 and %jd", - (intmax_t)SSIZE_MAX); + errx(1, "obs must be between 1 and %zd", + (ssize_t)SSIZE_MAX); out.dbsz = (size_t)res; } } Modified: projects/runtime-coverage/bin/dd/conv.c ============================================================================== --- projects/runtime-coverage/bin/dd/conv.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/bin/dd/conv.c Sat Aug 26 07:05:29 2017 (r322922) @@ -133,7 +133,7 @@ block(void) */ ch = 0; for (inp = in.dbp - in.dbcnt, outp = out.dbp; in.dbcnt;) { - maxlen = MIN(cbsz, in.dbcnt); + maxlen = MIN(cbsz, (size_t)in.dbcnt); if ((t = ctab) != NULL) for (cnt = 0; cnt < maxlen && (ch = *inp++) != '\n'; ++cnt) @@ -146,7 +146,7 @@ block(void) * Check for short record without a newline. Reassemble the * input block. */ - if (ch != '\n' && in.dbcnt < cbsz) { + if (ch != '\n' && (size_t)in.dbcnt < cbsz) { (void)memmove(in.db, in.dbp - in.dbcnt, in.dbcnt); break; } @@ -228,7 +228,7 @@ unblock(void) * translation has to already be done or we might not recognize the * spaces. */ - for (inp = in.db; in.dbcnt >= cbsz; inp += cbsz, in.dbcnt -= cbsz) { + for (inp = in.db; (size_t)in.dbcnt >= cbsz; inp += cbsz, in.dbcnt -= cbsz) { for (t = inp + cbsz - 1; t >= inp && *t == ' '; --t) ; if (t >= inp) { Modified: projects/runtime-coverage/bin/dd/dd.c ============================================================================== --- projects/runtime-coverage/bin/dd/dd.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/bin/dd/dd.c Sat Aug 26 07:05:29 2017 (r322922) @@ -204,10 +204,10 @@ setup(void) * record oriented I/O, only need a single buffer. */ if (!(ddflags & (C_BLOCK | C_UNBLOCK))) { - if ((in.db = malloc(out.dbsz + in.dbsz - 1)) == NULL) + if ((in.db = malloc((size_t)out.dbsz + in.dbsz - 1)) == NULL) err(1, "input buffer"); out.db = in.db; - } else if ((in.db = malloc(MAX(in.dbsz, cbsz) + cbsz)) == NULL || + } else if ((in.db = malloc(MAX((size_t)in.dbsz, cbsz) + cbsz)) == NULL || (out.db = malloc(out.dbsz + cbsz)) == NULL) err(1, "output buffer"); @@ -405,7 +405,7 @@ dd_in(void) ++st.in_full; /* Handle full input blocks. */ - } else if ((size_t)n == in.dbsz) { + } else if ((size_t)n == (size_t)in.dbsz) { in.dbcnt += in.dbrcnt = n; ++st.in_full; @@ -562,7 +562,7 @@ dd_out(int force) outp += nw; st.bytes += nw; - if ((size_t)nw == n && n == out.dbsz) + if ((size_t)nw == n && n == (size_t)out.dbsz) ++st.out_full; else ++st.out_part; Modified: projects/runtime-coverage/bin/dd/dd.h ============================================================================== --- projects/runtime-coverage/bin/dd/dd.h Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/bin/dd/dd.h Sat Aug 26 07:05:29 2017 (r322922) @@ -38,10 +38,9 @@ typedef struct { u_char *db; /* buffer address */ u_char *dbp; /* current buffer I/O address */ - /* XXX ssize_t? */ - size_t dbcnt; /* current buffer byte count */ - size_t dbrcnt; /* last read byte count */ - size_t dbsz; /* block size */ + ssize_t dbcnt; /* current buffer byte count */ + ssize_t dbrcnt; /* last read byte count */ + ssize_t dbsz; /* block size */ #define ISCHR 0x01 /* character device (warn on short) */ #define ISPIPE 0x02 /* pipe-like (see position.c) */ Modified: projects/runtime-coverage/bin/dd/position.c ============================================================================== --- projects/runtime-coverage/bin/dd/position.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/bin/dd/position.c Sat Aug 26 07:05:29 2017 (r322922) @@ -207,7 +207,7 @@ pos_out(void) n = write(out.fd, out.db, out.dbsz); if (n == -1) err(1, "%s", out.name); - if ((size_t)n != out.dbsz) + if (n != out.dbsz) errx(1, "%s: write failure", out.name); } break; Modified: projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h ============================================================================== --- projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/contrib/compiler-rt/lib/builtins/int_lib.h Sat Aug 26 07:05:29 2017 (r322922) @@ -92,12 +92,13 @@ * does not have dedicated bit counting instructions. */ #if defined(__FreeBSD__) && (defined(__sparc64__) || \ - defined(__mips_n64) || defined(__mips_o64) || defined(__riscv)) + defined(__mips_n32) || defined(__mips_n64) || defined(__mips_o64) || \ + defined(__riscv)) si_int __clzsi2(si_int); si_int __ctzsi2(si_int); #define __builtin_clz __clzsi2 #define __builtin_ctz __ctzsi2 -#endif /* FreeBSD && (sparc64 || mips_n64 || mips_o64) */ +#endif /* FreeBSD && (sparc64 || mips_n32 || mips_n64 || mips_o64 || riscv) */ COMPILER_RT_ABI si_int __paritysi2(si_int a); COMPILER_RT_ABI si_int __paritydi2(di_int a); Modified: projects/runtime-coverage/lib/libc/gen/getmntinfo.c ============================================================================== --- projects/runtime-coverage/lib/libc/gen/getmntinfo.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/lib/libc/gen/getmntinfo.c Sat Aug 26 07:05:29 2017 (r322922) @@ -38,6 +38,9 @@ __FBSDID("$FreeBSD$"); #include #include +#define MAX_TRIES 3 +#define SCALING_FACTOR 2 + /* * Return information about mounted filesystems. */ @@ -47,20 +50,21 @@ getmntinfo(struct statfs **mntbufp, int mode) static struct statfs *mntbuf; static int mntsize; static long bufsize; + unsigned tries = 0; if (mntsize <= 0 && (mntsize = getfsstat(0, 0, MNT_NOWAIT)) < 0) return (0); if (bufsize > 0 && (mntsize = getfsstat(mntbuf, bufsize, mode)) < 0) return (0); - while (bufsize <= mntsize * sizeof(struct statfs)) { - if (mntbuf) - free(mntbuf); - bufsize = (mntsize + 1) * sizeof(struct statfs); - if ((mntbuf = malloc(bufsize)) == NULL) + while (tries++ < MAX_TRIES && bufsize <= mntsize * sizeof(*mntbuf)) { + bufsize = (mntsize * SCALING_FACTOR) * sizeof(*mntbuf); + if ((mntbuf = reallocf(mntbuf, bufsize)) == NULL) return (0); if ((mntsize = getfsstat(mntbuf, bufsize, mode)) < 0) return (0); } *mntbufp = mntbuf; + if (mntsize > (bufsize / sizeof(*mntbuf))) + return (bufsize / sizeof(*mntbuf)); return (mntsize); } Modified: projects/runtime-coverage/lib/libc/tests/gen/Makefile ============================================================================== --- projects/runtime-coverage/lib/libc/tests/gen/Makefile Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/lib/libc/tests/gen/Makefile Sat Aug 26 07:05:29 2017 (r322922) @@ -8,6 +8,7 @@ ATF_TESTS_C+= fmtmsg_test ATF_TESTS_C+= fnmatch2_test ATF_TESTS_C+= fpclassify2_test ATF_TESTS_C+= ftw_test +ATF_TESTS_C+= getmntinfo_test ATF_TESTS_C+= glob2_test ATF_TESTS_C+= popen_test ATF_TESTS_C+= posix_spawn_test Copied: projects/runtime-coverage/lib/libc/tests/gen/getmntinfo_test.c (from r322921, head/lib/libc/tests/gen/getmntinfo_test.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage/lib/libc/tests/gen/getmntinfo_test.c Sat Aug 26 07:05:29 2017 (r322922, copy of r322921, head/lib/libc/tests/gen/getmntinfo_test.c) @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 2017 Conrad Meyer + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Limited test program for getmntinfo(3), a non-standard BSDism. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include + +#include + +static void +check_mntinfo(struct statfs *mntinfo, int n) +{ + int i; + + for (i = 0; i < n; i++) { + ATF_REQUIRE_MSG(mntinfo[i].f_version == STATFS_VERSION, "%ju", + (uintmax_t)mntinfo[i].f_version); + ATF_REQUIRE(mntinfo[i].f_namemax <= sizeof(mntinfo[0].f_mntonname)); + } +} + +ATF_TC_WITHOUT_HEAD(getmntinfo_test); +ATF_TC_BODY(getmntinfo_test, tc) +{ + int nmnts; + struct statfs *mntinfo; + + /* Test bogus mode */ + nmnts = getmntinfo(&mntinfo, 199); + ATF_REQUIRE_MSG(nmnts == 0 && errno == EINVAL, + "getmntinfo() succeeded; errno=%d", errno); + + /* Valid modes */ + nmnts = getmntinfo(&mntinfo, MNT_NOWAIT); + ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_NOWAIT) failed; errno=%d", + errno); + + check_mntinfo(mntinfo, nmnts); + memset(mntinfo, 0xdf, sizeof(*mntinfo) * nmnts); + + nmnts = getmntinfo(&mntinfo, MNT_WAIT); + ATF_REQUIRE_MSG(nmnts != 0, "getmntinfo(MNT_WAIT) failed; errno=%d", + errno); + + check_mntinfo(mntinfo, nmnts); +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, getmntinfo_test); + + return (atf_no_error()); +} Modified: projects/runtime-coverage/lib/msun/tests/trig_test.c ============================================================================== --- projects/runtime-coverage/lib/msun/tests/trig_test.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/lib/msun/tests/trig_test.c Sat Aug 26 07:05:29 2017 (r322922) @@ -158,11 +158,6 @@ ATF_TC_BODY(reduction, tc) }; #endif -#if defined(__clang__) && \ - ((__clang_major__ >= 5)) - atf_tc_expect_fail("test fails with clang 5.0+ - bug 220989"); -#endif - unsigned i; for (i = 0; i < nitems(f_pi_odd); i++) { Modified: projects/runtime-coverage/sys/boot/efi/loader/arch/amd64/Makefile.inc ============================================================================== --- projects/runtime-coverage/sys/boot/efi/loader/arch/amd64/Makefile.inc Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/boot/efi/loader/arch/amd64/Makefile.inc Sat Aug 26 07:05:29 2017 (r322922) @@ -9,7 +9,8 @@ SRCS+= amd64_tramp.S \ .PATH: ${.CURDIR}/../../i386/libi386 SRCS+= nullconsole.c \ - comconsole.c + comconsole.c \ + spinconsole.c -CFLAGS+= -fPIC +CFLAGS+= -fPIC -DTERM_EMU LDFLAGS+= -Wl,-znocombreloc Modified: projects/runtime-coverage/sys/boot/efi/loader/arch/i386/Makefile.inc ============================================================================== --- projects/runtime-coverage/sys/boot/efi/loader/arch/i386/Makefile.inc Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/boot/efi/loader/arch/i386/Makefile.inc Sat Aug 26 07:05:29 2017 (r322922) @@ -7,7 +7,8 @@ SRCS+= start.S \ .PATH: ${.CURDIR}/../../i386/libi386 SRCS+= nullconsole.c \ - comconsole.c + comconsole.c \ + spinconsole.c -CFLAGS+= -fPIC +CFLAGS+= -fPIC -DTERM_EMU LDFLAGS+= -Wl,-znocombreloc Modified: projects/runtime-coverage/sys/boot/efi/loader/conf.c ============================================================================== --- projects/runtime-coverage/sys/boot/efi/loader/conf.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/boot/efi/loader/conf.c Sat Aug 26 07:05:29 2017 (r322922) @@ -69,6 +69,7 @@ extern struct console efi_console; #if defined(__amd64__) || defined(__i386__) extern struct console comconsole; extern struct console nullconsole; +extern struct console spinconsole; #endif struct console *consoles[] = { @@ -76,6 +77,7 @@ struct console *consoles[] = { #if defined(__amd64__) || defined(__i386__) &comconsole, &nullconsole, + &spinconsole, #endif NULL }; Modified: projects/runtime-coverage/sys/boot/i386/libi386/spinconsole.c ============================================================================== --- projects/runtime-coverage/sys/boot/i386/libi386/spinconsole.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/boot/i386/libi386/spinconsole.c Sat Aug 26 07:05:29 2017 (r322922) @@ -41,16 +41,14 @@ __FBSDID("$FreeBSD$"); #include #include -extern void get_pos(int *x, int *y); -extern void curs_move(int *_x, int *_y, int x, int y); -extern void vidc_biosputchar(int c); - static void spinc_probe(struct console *cp); static int spinc_init(int arg); static void spinc_putchar(int c); static int spinc_getchar(void); static int spinc_ischar(void); +extern struct console *consoles[]; + struct console spinconsole = { "spinconsole", "spin port", @@ -62,47 +60,53 @@ struct console spinconsole = { spinc_ischar }; +static struct console *parent = NULL; + static void spinc_probe(struct console *cp) { - cp->c_flags |= (C_PRESENTIN | C_PRESENTOUT); + + if (parent == NULL) + parent = consoles[0]; + parent->c_probe(cp); } static int spinc_init(int arg) { - return(0); + + return(parent->c_init(arg)); } static void spinc_putchar(int c) { - static int curx, cury; static unsigned tw_chars = 0x5C2D2F7C; /* "\-/|" */ - static time_t lasttime; + static time_t lasttime = 0; time_t now; - now = time(NULL); + now = time(0); if (now < (lasttime + 1)) return; - lasttime = now; #ifdef TERM_EMU - get_pos(&curx, &cury); - if (curx > 0) - curs_move(&curx, &cury, curx - 1, cury); + if (lasttime > 0) + parent->c_out('\b'); #endif - vidc_biosputchar((char)tw_chars); + lasttime = now; + parent->c_out((char)tw_chars); tw_chars = (tw_chars >> 8) | ((tw_chars & (unsigned long)0xFF) << 24); } static int spinc_getchar(void) { + return(-1); } static int spinc_ischar(void) { + return(0); } Modified: projects/runtime-coverage/sys/compat/cloudabi/cloudabi_fd.c ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi/cloudabi_fd.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi/cloudabi_fd.c Sat Aug 26 07:05:29 2017 (r322922) @@ -79,11 +79,6 @@ __FBSDID("$FreeBSD$"); MAPPING(CLOUDABI_RIGHT_POLL_WAIT, CAP_KQUEUE_EVENT) \ MAPPING(CLOUDABI_RIGHT_PROC_EXEC, CAP_FEXECVE) \ MAPPING(CLOUDABI_RIGHT_SOCK_ACCEPT, CAP_ACCEPT) \ - MAPPING(CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY, CAP_BINDAT) \ - MAPPING(CLOUDABI_RIGHT_SOCK_BIND_SOCKET, CAP_BIND) \ - MAPPING(CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY, CAP_CONNECTAT) \ - MAPPING(CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET, CAP_CONNECT) \ - MAPPING(CLOUDABI_RIGHT_SOCK_LISTEN, CAP_LISTEN) \ MAPPING(CLOUDABI_RIGHT_SOCK_SHUTDOWN, CAP_SHUTDOWN) \ MAPPING(CLOUDABI_RIGHT_SOCK_STAT_GET, CAP_GETPEERNAME, \ CAP_GETSOCKNAME, CAP_GETSOCKOPT) @@ -109,10 +104,6 @@ cloudabi_sys_fd_create1(struct thread *td, cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_FTRUNCATE, CAP_MMAP_RWX); return (kern_shm_open(td, SHM_ANON, O_RDWR, 0, &fcaps)); - case CLOUDABI_FILETYPE_SOCKET_DGRAM: - return (kern_socket(td, AF_UNIX, SOCK_DGRAM, 0)); - case CLOUDABI_FILETYPE_SOCKET_STREAM: - return (kern_socket(td, AF_UNIX, SOCK_STREAM, 0)); default: return (EINVAL); } @@ -312,9 +303,7 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES | CLOUDABI_RIGHT_FILE_SYMLINK | CLOUDABI_RIGHT_FILE_UNLINK | - CLOUDABI_RIGHT_POLL_FD_READWRITE | - CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY | - CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY; + CLOUDABI_RIGHT_POLL_FD_READWRITE; *inheriting &= CLOUDABI_RIGHT_FD_DATASYNC | CLOUDABI_RIGHT_FD_READ | CLOUDABI_RIGHT_FD_SEEK | @@ -344,9 +333,7 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t CLOUDABI_RIGHT_MEM_MAP | CLOUDABI_RIGHT_MEM_MAP_EXEC | CLOUDABI_RIGHT_POLL_FD_READWRITE | - CLOUDABI_RIGHT_PROC_EXEC | - CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY | - CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY; + CLOUDABI_RIGHT_PROC_EXEC; break; case CLOUDABI_FILETYPE_FIFO: *base &= CLOUDABI_RIGHT_FD_READ | @@ -400,9 +387,6 @@ cloudabi_remove_conflicting_rights(cloudabi_filetype_t CLOUDABI_RIGHT_FILE_STAT_FGET | CLOUDABI_RIGHT_POLL_FD_READWRITE | CLOUDABI_RIGHT_SOCK_ACCEPT | - CLOUDABI_RIGHT_SOCK_BIND_SOCKET | - CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET | - CLOUDABI_RIGHT_SOCK_LISTEN | CLOUDABI_RIGHT_SOCK_SHUTDOWN | CLOUDABI_RIGHT_SOCK_STAT_GET; break; Modified: projects/runtime-coverage/sys/compat/cloudabi/cloudabi_sock.c ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi/cloudabi_sock.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi/cloudabi_sock.c Sat Aug 26 07:05:29 2017 (r322922) @@ -38,7 +38,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include @@ -49,28 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include -/* Copies a pathname into a UNIX socket address structure. */ -static int -copyin_sockaddr_un(const char *path, size_t pathlen, struct sockaddr_un *sun) -{ - int error; - - /* Copy in pathname string if there's enough space. */ - if (pathlen >= sizeof(sun->sun_path)) - return (ENAMETOOLONG); - error = copyin(path, &sun->sun_path, pathlen); - if (error != 0) - return (error); - if (memchr(sun->sun_path, '\0', pathlen) != NULL) - return (EINVAL); - - /* Initialize the rest of the socket address. */ - sun->sun_path[pathlen] = '\0'; - sun->sun_family = AF_UNIX; - sun->sun_len = sizeof(*sun); - return (0); -} - int cloudabi_sys_sock_accept(struct thread *td, struct cloudabi_sys_sock_accept_args *uap) @@ -80,41 +57,6 @@ cloudabi_sys_sock_accept(struct thread *td, } int -cloudabi_sys_sock_bind(struct thread *td, - struct cloudabi_sys_sock_bind_args *uap) -{ - struct sockaddr_un sun; - int error; - - error = copyin_sockaddr_un(uap->path, uap->path_len, &sun); - if (error != 0) - return (error); - return (kern_bindat(td, uap->fd, uap->sock, (struct sockaddr *)&sun)); -} - -int -cloudabi_sys_sock_connect(struct thread *td, - struct cloudabi_sys_sock_connect_args *uap) -{ - struct sockaddr_un sun; - int error; - - error = copyin_sockaddr_un(uap->path, uap->path_len, &sun); - if (error != 0) - return (error); - return (kern_connectat(td, uap->fd, uap->sock, - (struct sockaddr *)&sun)); -} - -int -cloudabi_sys_sock_listen(struct thread *td, - struct cloudabi_sys_sock_listen_args *uap) -{ - - return (kern_listen(td, uap->sock, uap->backlog)); -} - -int cloudabi_sys_sock_shutdown(struct thread *td, struct cloudabi_sys_sock_shutdown_args *uap) { @@ -174,10 +116,7 @@ cloudabi_sock_recv(struct thread *td, cloudabi_fd_t fd cloudabi_riflags_t flags, size_t *rdatalen, size_t *rfdslen, cloudabi_roflags_t *rflags) { - struct sockaddr_storage ss; struct msghdr hdr = { - .msg_name = &ss, - .msg_namelen = sizeof(ss), .msg_iov = data, .msg_iovlen = datalen, }; Modified: projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_proto.h ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_proto.h Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_proto.h Sat Aug 26 07:05:29 2017 (r322922) @@ -259,22 +259,6 @@ struct cloudabi_sys_sock_accept_args { char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)]; char unused_l_[PADL_(void *)]; void * unused; char unused_r_[PADR_(void *)]; }; -struct cloudabi_sys_sock_bind_args { - char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)]; - char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)]; - char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)]; - char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)]; -}; -struct cloudabi_sys_sock_connect_args { - char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)]; - char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)]; - char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)]; - char path_len_l_[PADL_(size_t)]; size_t path_len; char path_len_r_[PADR_(size_t)]; -}; -struct cloudabi_sys_sock_listen_args { - char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)]; - char backlog_l_[PADL_(cloudabi_backlog_t)]; cloudabi_backlog_t backlog; char backlog_r_[PADR_(cloudabi_backlog_t)]; -}; struct cloudabi32_sys_sock_recv_args { char sock_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t sock; char sock_r_[PADR_(cloudabi_fd_t)]; char in_l_[PADL_(const cloudabi32_recv_in_t *)]; const cloudabi32_recv_in_t * in; char in_r_[PADR_(const cloudabi32_recv_in_t *)]; @@ -349,9 +333,6 @@ int cloudabi_sys_proc_fork(struct thread *, struct clo int cloudabi_sys_proc_raise(struct thread *, struct cloudabi_sys_proc_raise_args *); int cloudabi_sys_random_get(struct thread *, struct cloudabi_sys_random_get_args *); int cloudabi_sys_sock_accept(struct thread *, struct cloudabi_sys_sock_accept_args *); -int cloudabi_sys_sock_bind(struct thread *, struct cloudabi_sys_sock_bind_args *); -int cloudabi_sys_sock_connect(struct thread *, struct cloudabi_sys_sock_connect_args *); -int cloudabi_sys_sock_listen(struct thread *, struct cloudabi_sys_sock_listen_args *); int cloudabi32_sys_sock_recv(struct thread *, struct cloudabi32_sys_sock_recv_args *); int cloudabi32_sys_sock_send(struct thread *, struct cloudabi32_sys_sock_send_args *); int cloudabi_sys_sock_shutdown(struct thread *, struct cloudabi_sys_sock_shutdown_args *); @@ -440,9 +421,6 @@ int cloudabi_sys_thread_yield(struct thread *, struct #define CLOUDABI32_SYS_AUE_cloudabi_sys_proc_raise AUE_NULL #define CLOUDABI32_SYS_AUE_cloudabi_sys_random_get AUE_NULL #define CLOUDABI32_SYS_AUE_cloudabi_sys_sock_accept AUE_NULL -#define CLOUDABI32_SYS_AUE_cloudabi_sys_sock_bind AUE_NULL -#define CLOUDABI32_SYS_AUE_cloudabi_sys_sock_connect AUE_NULL -#define CLOUDABI32_SYS_AUE_cloudabi_sys_sock_listen AUE_NULL #define CLOUDABI32_SYS_AUE_cloudabi32_sys_sock_recv AUE_NULL #define CLOUDABI32_SYS_AUE_cloudabi32_sys_sock_send AUE_NULL #define CLOUDABI32_SYS_AUE_cloudabi_sys_sock_shutdown AUE_NULL Modified: projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscall.h ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscall.h Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscall.h Sat Aug 26 07:05:29 2017 (r322922) @@ -50,14 +50,11 @@ #define CLOUDABI32_SYS_cloudabi_sys_proc_raise 42 #define CLOUDABI32_SYS_cloudabi_sys_random_get 43 #define CLOUDABI32_SYS_cloudabi_sys_sock_accept 44 -#define CLOUDABI32_SYS_cloudabi_sys_sock_bind 45 -#define CLOUDABI32_SYS_cloudabi_sys_sock_connect 46 -#define CLOUDABI32_SYS_cloudabi_sys_sock_listen 47 -#define CLOUDABI32_SYS_cloudabi32_sys_sock_recv 48 -#define CLOUDABI32_SYS_cloudabi32_sys_sock_send 49 -#define CLOUDABI32_SYS_cloudabi_sys_sock_shutdown 50 -#define CLOUDABI32_SYS_cloudabi_sys_sock_stat_get 51 -#define CLOUDABI32_SYS_cloudabi32_sys_thread_create 52 -#define CLOUDABI32_SYS_cloudabi_sys_thread_exit 53 -#define CLOUDABI32_SYS_cloudabi_sys_thread_yield 54 -#define CLOUDABI32_SYS_MAXSYSCALL 55 +#define CLOUDABI32_SYS_cloudabi32_sys_sock_recv 45 +#define CLOUDABI32_SYS_cloudabi32_sys_sock_send 46 +#define CLOUDABI32_SYS_cloudabi_sys_sock_shutdown 47 +#define CLOUDABI32_SYS_cloudabi_sys_sock_stat_get 48 +#define CLOUDABI32_SYS_cloudabi32_sys_thread_create 49 +#define CLOUDABI32_SYS_cloudabi_sys_thread_exit 50 +#define CLOUDABI32_SYS_cloudabi_sys_thread_yield 51 +#define CLOUDABI32_SYS_MAXSYSCALL 52 Modified: projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscalls.c ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscalls.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_syscalls.c Sat Aug 26 07:05:29 2017 (r322922) @@ -51,14 +51,11 @@ const char *cloudabi32_syscallnames[] = { "cloudabi_sys_proc_raise", /* 42 = cloudabi_sys_proc_raise */ "cloudabi_sys_random_get", /* 43 = cloudabi_sys_random_get */ "cloudabi_sys_sock_accept", /* 44 = cloudabi_sys_sock_accept */ - "cloudabi_sys_sock_bind", /* 45 = cloudabi_sys_sock_bind */ - "cloudabi_sys_sock_connect", /* 46 = cloudabi_sys_sock_connect */ - "cloudabi_sys_sock_listen", /* 47 = cloudabi_sys_sock_listen */ - "cloudabi32_sys_sock_recv", /* 48 = cloudabi32_sys_sock_recv */ - "cloudabi32_sys_sock_send", /* 49 = cloudabi32_sys_sock_send */ - "cloudabi_sys_sock_shutdown", /* 50 = cloudabi_sys_sock_shutdown */ - "cloudabi_sys_sock_stat_get", /* 51 = cloudabi_sys_sock_stat_get */ - "cloudabi32_sys_thread_create", /* 52 = cloudabi32_sys_thread_create */ - "cloudabi_sys_thread_exit", /* 53 = cloudabi_sys_thread_exit */ - "cloudabi_sys_thread_yield", /* 54 = cloudabi_sys_thread_yield */ + "cloudabi32_sys_sock_recv", /* 45 = cloudabi32_sys_sock_recv */ + "cloudabi32_sys_sock_send", /* 46 = cloudabi32_sys_sock_send */ + "cloudabi_sys_sock_shutdown", /* 47 = cloudabi_sys_sock_shutdown */ + "cloudabi_sys_sock_stat_get", /* 48 = cloudabi_sys_sock_stat_get */ + "cloudabi32_sys_thread_create", /* 49 = cloudabi32_sys_thread_create */ + "cloudabi_sys_thread_exit", /* 50 = cloudabi_sys_thread_exit */ + "cloudabi_sys_thread_yield", /* 51 = cloudabi_sys_thread_yield */ }; Modified: projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_sysent.c ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_sysent.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_sysent.c Sat Aug 26 07:05:29 2017 (r322922) @@ -59,14 +59,11 @@ struct sysent cloudabi32_sysent[] = { { AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_proc_raise */ { AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi_sys_random_get */ { AS(cloudabi_sys_sock_accept_args), (sy_call_t *)cloudabi_sys_sock_accept, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi_sys_sock_accept */ - { AS(cloudabi_sys_sock_bind_args), (sy_call_t *)cloudabi_sys_sock_bind, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi_sys_sock_bind */ - { AS(cloudabi_sys_sock_connect_args), (sy_call_t *)cloudabi_sys_sock_connect, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi_sys_sock_connect */ - { AS(cloudabi_sys_sock_listen_args), (sy_call_t *)cloudabi_sys_sock_listen, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi_sys_sock_listen */ - { AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi32_sys_sock_recv */ - { AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = cloudabi32_sys_sock_send */ - { AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 50 = cloudabi_sys_sock_shutdown */ - { AS(cloudabi_sys_sock_stat_get_args), (sy_call_t *)cloudabi_sys_sock_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 51 = cloudabi_sys_sock_stat_get */ - { AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 52 = cloudabi32_sys_thread_create */ - { AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 53 = cloudabi_sys_thread_exit */ - { 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 54 = cloudabi_sys_thread_yield */ + { AS(cloudabi32_sys_sock_recv_args), (sy_call_t *)cloudabi32_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi32_sys_sock_recv */ + { AS(cloudabi32_sys_sock_send_args), (sy_call_t *)cloudabi32_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi32_sys_sock_send */ + { AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi_sys_sock_shutdown */ + { AS(cloudabi_sys_sock_stat_get_args), (sy_call_t *)cloudabi_sys_sock_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_sock_stat_get */ + { AS(cloudabi32_sys_thread_create_args), (sy_call_t *)cloudabi32_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = cloudabi32_sys_thread_create */ + { AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 50 = cloudabi_sys_thread_exit */ + { 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 51 = cloudabi_sys_thread_yield */ }; Modified: projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_systrace_args.c ============================================================================== --- projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_systrace_args.c Sat Aug 26 06:44:50 2017 (r322921) +++ projects/runtime-coverage/sys/compat/cloudabi32/cloudabi32_systrace_args.c Sat Aug 26 07:05:29 2017 (r322922) @@ -415,36 +415,8 @@ systrace_args(int sysnum, void *params, uint64_t *uarg *n_args = 2; break; } - /* cloudabi_sys_sock_bind */ - case 45: { - struct cloudabi_sys_sock_bind_args *p = params; - iarg[0] = p->sock; /* cloudabi_fd_t */ - iarg[1] = p->fd; /* cloudabi_fd_t */ - uarg[2] = (intptr_t) p->path; /* const char * */ - uarg[3] = p->path_len; /* size_t */ - *n_args = 4; - break; - } - /* cloudabi_sys_sock_connect */ - case 46: { - struct cloudabi_sys_sock_connect_args *p = params; - iarg[0] = p->sock; /* cloudabi_fd_t */ - iarg[1] = p->fd; /* cloudabi_fd_t */ - uarg[2] = (intptr_t) p->path; /* const char * */ - uarg[3] = p->path_len; /* size_t */ - *n_args = 4; - break; - } - /* cloudabi_sys_sock_listen */ - case 47: { - struct cloudabi_sys_sock_listen_args *p = params; - iarg[0] = p->sock; /* cloudabi_fd_t */ - iarg[1] = p->backlog; /* cloudabi_backlog_t */ - *n_args = 2; - break; - } /* cloudabi32_sys_sock_recv */ - case 48: { + case 45: { struct cloudabi32_sys_sock_recv_args *p = params; iarg[0] = p->sock; /* cloudabi_fd_t */ uarg[1] = (intptr_t) p->in; /* const cloudabi32_recv_in_t * */ @@ -453,7 +425,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg break; } /* cloudabi32_sys_sock_send */ - case 49: { + case 46: { struct cloudabi32_sys_sock_send_args *p = params; iarg[0] = p->sock; /* cloudabi_fd_t */ uarg[1] = (intptr_t) p->in; /* const cloudabi32_send_in_t * */ @@ -462,7 +434,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg break; } /* cloudabi_sys_sock_shutdown */ - case 50: { + case 47: { struct cloudabi_sys_sock_shutdown_args *p = params; iarg[0] = p->sock; /* cloudabi_fd_t */ iarg[1] = p->how; /* cloudabi_sdflags_t */ @@ -470,7 +442,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg break; } /* cloudabi_sys_sock_stat_get */ - case 51: { + case 48: { struct cloudabi_sys_sock_stat_get_args *p = params; iarg[0] = p->sock; /* cloudabi_fd_t */ uarg[1] = (intptr_t) p->buf; /* cloudabi_sockstat_t * */ @@ -479,14 +451,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg break; } /* cloudabi32_sys_thread_create */ - case 52: { + case 49: { struct cloudabi32_sys_thread_create_args *p = params; uarg[0] = (intptr_t) p->attr; /* cloudabi32_threadattr_t * */ *n_args = 1; break; } /* cloudabi_sys_thread_exit */ - case 53: { + case 50: { struct cloudabi_sys_thread_exit_args *p = params; uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */ iarg[1] = p->scope; /* cloudabi_scope_t */ @@ -494,7 +466,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg break; } /* cloudabi_sys_thread_yield */ - case 54: { + case 51: { *n_args = 0; break; } @@ -1224,64 +1196,13 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d break; }; break; - /* cloudabi_sys_sock_bind */ + /* cloudabi32_sys_sock_recv */ case 45: switch(ndx) { case 0: p = "cloudabi_fd_t"; break; case 1: - p = "cloudabi_fd_t"; - break; - case 2: - p = "userland const char *"; - break; - case 3: - p = "size_t"; - break; - default: - break; - }; - break; - /* cloudabi_sys_sock_connect */ - case 46: - switch(ndx) { - case 0: - p = "cloudabi_fd_t"; - break; - case 1: - p = "cloudabi_fd_t"; - break; - case 2: - p = "userland const char *"; - break; - case 3: - p = "size_t"; - break; - default: - break; - }; - break; - /* cloudabi_sys_sock_listen */ - case 47: - switch(ndx) { - case 0: - p = "cloudabi_fd_t"; - break; - case 1: - p = "cloudabi_backlog_t"; - break; - default: - break; - }; - break; - /* cloudabi32_sys_sock_recv */ - case 48: - switch(ndx) { - case 0: - p = "cloudabi_fd_t"; - break; - case 1: p = "userland const cloudabi32_recv_in_t *"; break; case 2: @@ -1292,7 +1213,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi32_sys_sock_send */ - case 49: + case 46: switch(ndx) { case 0: p = "cloudabi_fd_t"; @@ -1308,7 +1229,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi_sys_sock_shutdown */ - case 50: + case 47: switch(ndx) { case 0: p = "cloudabi_fd_t"; @@ -1321,7 +1242,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi_sys_sock_stat_get */ - case 51: + case 48: switch(ndx) { case 0: p = "cloudabi_fd_t"; @@ -1337,7 +1258,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi32_sys_thread_create */ - case 52: + case 49: switch(ndx) { case 0: p = "userland cloudabi32_threadattr_t *"; @@ -1347,7 +1268,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi_sys_thread_exit */ - case 53: + case 50: switch(ndx) { case 0: p = "userland cloudabi_lock_t *"; @@ -1360,7 +1281,7 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d }; break; /* cloudabi_sys_thread_yield */ - case 54: + case 51: break; default: break; @@ -1595,53 +1516,38 @@ systrace_return_setargdesc(int sysnum, int ndx, char * if (ndx == 0 || ndx == 1) p = "cloudabi_fd_t"; break; - /* cloudabi_sys_sock_bind */ + /* cloudabi32_sys_sock_recv */ case 45: if (ndx == 0 || ndx == 1) p = "void"; break; - /* cloudabi_sys_sock_connect */ + /* cloudabi32_sys_sock_send */ case 46: if (ndx == 0 || ndx == 1) p = "void"; break; - /* cloudabi_sys_sock_listen */ + /* cloudabi_sys_sock_shutdown */ case 47: if (ndx == 0 || ndx == 1) p = "void"; break; - /* cloudabi32_sys_sock_recv */ + /* cloudabi_sys_sock_stat_get */ case 48: if (ndx == 0 || ndx == 1) p = "void"; break; - /* cloudabi32_sys_sock_send */ + /* cloudabi32_sys_thread_create */ case 49: if (ndx == 0 || ndx == 1) - p = "void"; - break; - /* cloudabi_sys_sock_shutdown */ - case 50: - if (ndx == 0 || ndx == 1) - p = "void"; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***