From owner-svn-src-projects@freebsd.org  Sun Jan  8 14:36:22 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 9D583CA5505
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 14:36:22 +0000 (UTC) (envelope-from dim@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 1F61B1F55;
 Sun,  8 Jan 2017 14:36:22 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08EaLTM020385;
 Sun, 8 Jan 2017 14:36:21 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08EaIPr020357;
 Sun, 8 Jan 2017 14:36:18 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081436.v08EaIPr020357@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 14:36:18 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311684 - in projects/clang400-import: . bin/chmod
 contrib/llvm/projects/libunwind/src contrib/ngatm/snmp_atm
 contrib/tcp_wrappers contrib/tcpdump crypto/openssh etc gnu/lib/libgcc
 gnu/...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 14:36:22 -0000

Author: dim
Date: Sun Jan  8 14:36:18 2017
New Revision: 311684
URL: https://svnweb.freebsd.org/changeset/base/311684

Log:
  Merge ^/head r311546 through r311683.

Added:
  projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit_impl.c
     - copied unchanged from r311683, head/lib/libc/stdlib/cxa_thread_atexit_impl.c
  projects/clang400-import/sys/net80211/ieee80211_vht.c
     - copied unchanged from r311683, head/sys/net80211/ieee80211_vht.c
  projects/clang400-import/sys/net80211/ieee80211_vht.h
     - copied unchanged from r311683, head/sys/net80211/ieee80211_vht.h
  projects/clang400-import/usr.bin/cmp/tests/cmp_test2.sh
     - copied unchanged from r311683, head/usr.bin/cmp/tests/cmp_test2.sh
Modified:
  projects/clang400-import/Makefile.inc1
  projects/clang400-import/Makefile.libcompat
  projects/clang400-import/bin/chmod/chmod.1
  projects/clang400-import/bin/chmod/chmod.c
  projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S
  projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S
  projects/clang400-import/contrib/ngatm/snmp_atm/snmp_atm.c
  projects/clang400-import/contrib/tcp_wrappers/tcpd.h
  projects/clang400-import/contrib/tcpdump/print-tcp.c
  projects/clang400-import/crypto/openssh/config.h
  projects/clang400-import/etc/snmpd.config
  projects/clang400-import/gnu/lib/libgcc/Makefile
  projects/clang400-import/gnu/usr.bin/binutils/ld/Makefile.mips
  projects/clang400-import/lib/lib80211/lib80211_regdomain.c
  projects/clang400-import/lib/lib80211/lib80211_regdomain.h
  projects/clang400-import/lib/libc/include/libc_private.h
  projects/clang400-import/lib/libc/stdlib/Makefile.inc
  projects/clang400-import/lib/libc/stdlib/Symbol.map
  projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit.c
  projects/clang400-import/lib/libcam/scsi_cmdparse.c
  projects/clang400-import/lib/libprocstat/cd9660.c
  projects/clang400-import/lib/libstand/bootp.c
  projects/clang400-import/lib/libsysdecode/mktables
  projects/clang400-import/sbin/camcontrol/camcontrol.8
  projects/clang400-import/sbin/camcontrol/camcontrol.c
  projects/clang400-import/sbin/camcontrol/camcontrol.h
  projects/clang400-import/sbin/camcontrol/modeedit.c
  projects/clang400-import/sbin/ifconfig/ifieee80211.c
  projects/clang400-import/sbin/md5/md5.1
  projects/clang400-import/secure/usr.sbin/sshd/Makefile
  projects/clang400-import/share/man/man5/src.conf.5
  projects/clang400-import/share/misc/scsi_modes
  projects/clang400-import/sys/cam/ctl/ctl.c
  projects/clang400-import/sys/cam/scsi/scsi_all.c
  projects/clang400-import/sys/cam/scsi/scsi_all.h
  projects/clang400-import/sys/cam/scsi/scsi_ch.c
  projects/clang400-import/sys/conf/files
  projects/clang400-import/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
  projects/clang400-import/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/clang400-import/sys/contrib/dev/acpica/include/acpixf.h
  projects/clang400-import/sys/crypto/skein/amd64/skein_block_asm.s
  projects/clang400-import/sys/dev/cxgbe/tom/t4_connect.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_listen.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_tom.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_tom.h
  projects/clang400-import/sys/dev/gpio/ofw_gpiobus.c
  projects/clang400-import/sys/dev/kbd/kbd.c
  projects/clang400-import/sys/dev/mmc/mmcreg.h
  projects/clang400-import/sys/dev/sdhci/sdhci.c
  projects/clang400-import/sys/dev/sdhci/sdhci.h
  projects/clang400-import/sys/dev/sdhci/sdhci_if.m
  projects/clang400-import/sys/dev/sfxge/common/ef10_tx.c
  projects/clang400-import/sys/dev/sfxge/common/efx.h
  projects/clang400-import/sys/dev/sfxge/common/efx_tx.c
  projects/clang400-import/sys/dev/sfxge/common/hunt_nic.c
  projects/clang400-import/sys/dev/sfxge/common/medford_nic.c
  projects/clang400-import/sys/dev/sfxge/common/siena_nic.c
  projects/clang400-import/sys/dev/sfxge/sfxge.h
  projects/clang400-import/sys/dev/sfxge/sfxge_port.c
  projects/clang400-import/sys/dev/sfxge/sfxge_tx.c
  projects/clang400-import/sys/fs/cd9660/cd9660_lookup.c
  projects/clang400-import/sys/fs/cd9660/cd9660_node.c
  projects/clang400-import/sys/fs/cd9660/cd9660_node.h
  projects/clang400-import/sys/fs/cd9660/cd9660_rrip.c
  projects/clang400-import/sys/fs/cd9660/cd9660_vfsops.c
  projects/clang400-import/sys/fs/cd9660/cd9660_vnops.c
  projects/clang400-import/sys/fs/cd9660/iso.h
  projects/clang400-import/sys/fs/cd9660/iso_rrip.h
  projects/clang400-import/sys/kern/sys_socket.c
  projects/clang400-import/sys/kern/uipc_socket.c
  projects/clang400-import/sys/mips/conf/MALTA64
  projects/clang400-import/sys/modules/wlan/Makefile
  projects/clang400-import/sys/net80211/ieee80211.c
  projects/clang400-import/sys/net80211/ieee80211.h
  projects/clang400-import/sys/net80211/ieee80211_ioctl.c
  projects/clang400-import/sys/net80211/ieee80211_ioctl.h
  projects/clang400-import/sys/net80211/ieee80211_node.h
  projects/clang400-import/sys/net80211/ieee80211_proto.h
  projects/clang400-import/sys/net80211/ieee80211_scan.c
  projects/clang400-import/sys/net80211/ieee80211_scan.h
  projects/clang400-import/sys/net80211/ieee80211_var.h
  projects/clang400-import/sys/netipsec/ipsec.c
  projects/clang400-import/sys/sys/socket.h
  projects/clang400-import/sys/sys/unistd.h
  projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc
  projects/clang400-import/tools/build/options/WITHOUT_USB_GADGET_EXAMPLES
  projects/clang400-import/usr.bin/clang/llvm-ar/Makefile
  projects/clang400-import/usr.bin/cmp/special.c
  projects/clang400-import/usr.bin/cmp/tests/Makefile
  projects/clang400-import/usr.bin/users/users.cc
  projects/clang400-import/usr.sbin/chown/chgrp.1
  projects/clang400-import/usr.sbin/chown/chown.8
  projects/clang400-import/usr.sbin/chown/chown.c
Directory Properties:
  projects/clang400-import/   (props changed)
  projects/clang400-import/contrib/llvm/   (props changed)
  projects/clang400-import/contrib/llvm/projects/libunwind/   (props changed)
  projects/clang400-import/contrib/tcpdump/   (props changed)
  projects/clang400-import/crypto/openssh/   (props changed)
  projects/clang400-import/gnu/lib/   (props changed)
  projects/clang400-import/gnu/usr.bin/binutils/   (props changed)
  projects/clang400-import/sys/contrib/dev/acpica/   (props changed)

Modified: projects/clang400-import/Makefile.inc1
==============================================================================
--- projects/clang400-import/Makefile.inc1	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/Makefile.inc1	Sun Jan  8 14:36:18 2017	(r311684)
@@ -606,7 +606,7 @@ XCFLAGS+=	${BFLAGS}
 .endif
 
 .if ${MK_LIB32} != "no" && (${TARGET_ARCH} == "amd64" || \
-    ${TARGET_ARCH} == "powerpc64")
+    ${TARGET_ARCH} == "powerpc64") || ${TARGET_ARCH:Mmips64*} != ""
 LIBCOMPAT= 32
 .include "Makefile.libcompat"
 .elif ${MK_LIBSOFT} != "no" && ${TARGET_ARCH} == "armv6"

Modified: projects/clang400-import/Makefile.libcompat
==============================================================================
--- projects/clang400-import/Makefile.libcompat	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/Makefile.libcompat	Sun Jan  8 14:36:18 2017	(r311684)
@@ -4,8 +4,7 @@
 __<${_this:T}>__:
 
 # Makefile for the compatibility libraries.
-# - 32-bit compat libraries on PowerPC and AMD64.
-#   could also be for mips, but that doesn't work today.
+# - 32-bit compat libraries on MIPS, PowerPC, and AMD64.
 
 # -------------------------------------------------------------------
 # 32 bit world
@@ -15,6 +14,7 @@ LIB32CPUFLAGS=	-march=i686 -mmmx -msse -
 .else
 LIB32CPUFLAGS=	-march=${TARGET_CPUTYPE}
 .endif
+LIB32CPUFLAGS+=	-m32
 LIB32WMAKEENV=	MACHINE=i386 MACHINE_ARCH=i386 \
 		MACHINE_CPU="i686 mmx sse sse2"
 LIB32WMAKEFLAGS=	\
@@ -28,14 +28,30 @@ LIB32CPUFLAGS=	-mcpu=powerpc
 .else
 LIB32CPUFLAGS=	-mcpu=${TARGET_CPUTYPE}
 .endif
+LIB32CPUFLAGS+=	-m32
 LIB32WMAKEENV=	MACHINE=powerpc MACHINE_ARCH=powerpc
 LIB32WMAKEFLAGS=	\
 		LD="${XLD} -m elf32ppc_fbsd" \
 		OBJCOPY="${XOBJCOPY}"
+
+.elif ${TARGET_ARCH:Mmips64*} != ""
+.if empty(TARGET_CPUTYPE)
+LIB32CPUFLAGS=	-march=mips3
+.else
+LIB32CPUFLAGS=	-march=${TARGET_CPUTYPE}
+.endif
+LIB32CPUFLAGS+= -mabi=32
+LIB32WMAKEENV=	MACHINE=mips MACHINE_ARCH=mips
+.if ${TARGET_ARCH:Mmips64el*} != ""
+LIB32WMAKEFLAGS= LD="${XLD} -m elf32ltsmip_fbsd"
+.else
+LIB32WMAKEFLAGS= LD="${XLD} -m elf32btsmip_fbsd"
+.endif
+LIB32WMAKEFLAGS+= OBJCOPY="${XOBJCOPY}"
 .endif
 
 
-LIB32CFLAGS=	-m32 -DCOMPAT_32BIT
+LIB32CFLAGS=	-DCOMPAT_32BIT
 LIB32DTRACE=	${DTRACE} -32
 LIB32WMAKEFLAGS+=	-DCOMPAT_32BIT
 

Modified: projects/clang400-import/bin/chmod/chmod.1
==============================================================================
--- projects/clang400-import/bin/chmod/chmod.1	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/bin/chmod/chmod.1	Sun Jan  8 14:36:18 2017	(r311684)
@@ -32,7 +32,7 @@
 .\"	@(#)chmod.1	8.4 (Berkeley) 3/31/94
 .\" $FreeBSD$
 .\"
-.Dd April 20, 2015
+.Dd January 7, 2017
 .Dt CHMOD 1
 .Os
 .Sh NAME
@@ -106,6 +106,16 @@ option is specified.
 In addition, these options override each other and the
 command's actions are determined by the last one specified.
 .Pp
+If
+.Nm
+receives a
+.Dv SIGINFO
+signal (see the
+.Cm status
+argument for
+.Xr stty 1 ) ,
+then the current filename as well as the old and new modes are displayed.
+.Pp
 Only the owner of a file or the super-user is permitted to change
 the mode of a file.
 .Sh EXIT STATUS

Modified: projects/clang400-import/bin/chmod/chmod.c
==============================================================================
--- projects/clang400-import/bin/chmod/chmod.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/bin/chmod/chmod.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -49,14 +49,24 @@ __FBSDID("$FreeBSD$");
 #include <fcntl.h>
 #include <fts.h>
 #include <limits.h>
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
+static volatile sig_atomic_t siginfo;
+
 static void usage(void);
 static int may_have_nfs4acl(const FTSENT *ent, int hflag);
 
+static void
+siginfo_handler(int sig __unused)
+{
+
+	siginfo = 1;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -125,6 +135,8 @@ done:	argv += optind;
 	if (argc < 2)
 		usage();
 
+	(void)signal(SIGINFO, siginfo_handler);
+
 	if (Rflag) {
 		if (hflag)
 			errx(1, "the -R and -h options may not be "
@@ -192,10 +204,10 @@ done:	argv += optind;
 		    && !fflag) {
 			warn("%s", p->fts_path);
 			rval = 1;
-		} else if (vflag) {
+		} else if (vflag || siginfo) {
 			(void)printf("%s", p->fts_path);
 
-			if (vflag > 1) {
+			if (vflag > 1 || siginfo) {
 				char m1[12], m2[12];
 
 				strmode(p->fts_statp->st_mode, m1);
@@ -207,6 +219,7 @@ done:	argv += optind;
 				    newmode, m2);
 			}
 			(void)printf("\n");
+			siginfo = 0;
 		}
 	}
 	if (errno)

Modified: projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S
==============================================================================
--- projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S	Sun Jan  8 14:36:18 2017	(r311684)
@@ -527,3 +527,5 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9li
   ret                       // jump to ra
 
 #endif
+
+  .section .note.GNU-stack,"",@progbits

Modified: projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S
==============================================================================
--- projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S	Sun Jan  8 14:36:18 2017	(r311684)
@@ -469,3 +469,5 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext
 /* RISCVTODO */
 
 #endif
+
+    .section .note.GNU-stack,"",@progbits

Modified: projects/clang400-import/contrib/ngatm/snmp_atm/snmp_atm.c
==============================================================================
--- projects/clang400-import/contrib/ngatm/snmp_atm/snmp_atm.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/contrib/ngatm/snmp_atm/snmp_atm.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -170,7 +170,7 @@ atmif_check_carrier(struct atmif_priv *a
 		aif->pub.carrier = ATMIF_CARRIER_UNKNOWN;
 		return;
 	}
-	if (!ifmr.ifm_status & IFM_AVALID) {
+	if (!(ifmr.ifm_status & IFM_AVALID)) {
 		aif->pub.carrier = ATMIF_CARRIER_UNKNOWN;
 		return;
 	}

Modified: projects/clang400-import/contrib/tcp_wrappers/tcpd.h
==============================================================================
--- projects/clang400-import/contrib/tcp_wrappers/tcpd.h	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/contrib/tcp_wrappers/tcpd.h	Sun Jan  8 14:36:18 2017	(r311684)
@@ -12,6 +12,11 @@
 #define	TCPD_SOCKADDR struct sockaddr_in
 #endif
 
+#ifndef _STDFILE_DECLARED
+#define _STDFILE_DECLARED
+typedef struct __sFILE FILE;
+#endif
+
 /* Structure to describe one communications endpoint. */
 
 #define	STRING_LENGTH	128		/* hosts, users, processes */

Modified: projects/clang400-import/contrib/tcpdump/print-tcp.c
==============================================================================
--- projects/clang400-import/contrib/tcpdump/print-tcp.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/contrib/tcpdump/print-tcp.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -253,7 +253,7 @@ tcp_print(netdissect_options *ndo,
                 if (ip6) {
                         register struct tcp_seq_hash6 *th;
                         struct tcp_seq_hash6 *tcp_seq_hash;
-                        const struct in6_addr *src, *dst;
+                        const void *src, *dst;
                         struct tha6 tha;
 
                         tcp_seq_hash = tcp_seq_hash6;
@@ -309,7 +309,7 @@ tcp_print(netdissect_options *ndo,
 #endif /*INET6*/
                         register struct tcp_seq_hash *th;
                         struct tcp_seq_hash *tcp_seq_hash;
-                        const struct in_addr *src, *dst;
+                        const void *src, *dst;
                         struct tha tha;
 
                         tcp_seq_hash = tcp_seq_hash4;

Modified: projects/clang400-import/crypto/openssh/config.h
==============================================================================
--- projects/clang400-import/crypto/openssh/config.h	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/crypto/openssh/config.h	Sun Jan  8 14:36:18 2017	(r311684)
@@ -1408,7 +1408,7 @@
 /* #undef LASTLOG_WRITE_PUTUTXLINE */
 
 /* Define if you want TCP Wrappers support */
-#define LIBWRAP 1
+/* #undef LIBWRAP */
 
 /* Define to whatever link() returns for "not supported" if it doesn't return
    EOPNOTSUPP. */

Modified: projects/clang400-import/etc/snmpd.config
==============================================================================
--- projects/clang400-import/etc/snmpd.config	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/etc/snmpd.config	Sun Jan  8 14:36:18 2017	(r311684)
@@ -122,6 +122,14 @@ snmpEnableAuthenTraps = 2
 # order to use the enclosed variables, e.g. `usmUserStatus.$(engine).$(user1)`
 # can only be used if %usm is uncommented.
 #
+# Modules are loaded in the order listed, so they must be before any
+# dependent modules, e.g. "mibII" vs "bridge".
+#
+
+#
+# MIB-2 module
+#
+begemotSnmpdModulePath."mibII"	= "/usr/lib/snmp_mibII.so"
 
 #
 # Bridge module
@@ -141,11 +149,6 @@ snmpEnableAuthenTraps = 2
 #begemotSnmpdModulePath."lm75" = "/usr/lib/snmp_lm75.so"
 
 #
-# MIB-2 module
-#
-begemotSnmpdModulePath."mibII"	= "/usr/lib/snmp_mibII.so"
-
-#
 # Netgraph module
 #
 #begemotSnmpdModulePath."netgraph" = "/usr/lib/snmp_netgraph.so"

Modified: projects/clang400-import/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/clang400-import/gnu/lib/libgcc/Makefile	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/gnu/lib/libgcc/Makefile	Sun Jan  8 14:36:18 2017	(r311684)
@@ -133,7 +133,8 @@ LIBADD+=	compiler_rt
 .if ${TARGET_CPUARCH} == mips
 LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
 # ABIs other than o32 need this
-.if ${TARGET_ARCH:Mmips64*} != "" || ${TARGET_ARCH:Mmipsn32*} != ""
+.if (${TARGET_ARCH:Mmips64*} != "" || ${TARGET_ARCH:Mmipsn32*} != "") && \
+    !defined(COMPAT_32BIT)
 LIB2FUNCS_EXTRA+= floatdidf.c fixunsdfsi.c
 LIB2FUNCS_EXTRA+= floatdisf.c floatundidf.c
 LIB2FUNCS_EXTRA+= fixsfdi.c floatundisf.c

Modified: projects/clang400-import/gnu/usr.bin/binutils/ld/Makefile.mips
==============================================================================
--- projects/clang400-import/gnu/usr.bin/binutils/ld/Makefile.mips	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/gnu/usr.bin/binutils/ld/Makefile.mips	Sun Jan  8 14:36:18 2017	(r311684)
@@ -8,6 +8,7 @@ _EMULATION_ENDIAN=b
 
 .if ${TARGET_ARCH:Mmips64*} != ""
 NATIVE_EMULATION=elf64${_EMULATION_ENDIAN}tsmip_fbsd
+LIBSEARCHPATH.elf32${_EMULATION_ENDIAN}tsmip_fbsd=\"=/usr/lib32\"
 .elif ${TARGET_ARCH:Mmipsn32*} != ""
 NATIVE_EMULATION=elf32${_EMULATION_ENDIAN}tsmipn32_fbsd
 .else

Modified: projects/clang400-import/lib/lib80211/lib80211_regdomain.c
==============================================================================
--- projects/clang400-import/lib/lib80211/lib80211_regdomain.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/lib80211/lib80211_regdomain.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -123,6 +123,10 @@ start_element(void *data, const char *na
 			mt->curband = &mt->rd->bands_11ng;
 		else if (iseq(mode, "11na"))
 			mt->curband = &mt->rd->bands_11na;
+		else if (iseq(mode, "11ac"))
+			mt->curband = &mt->rd->bands_11ac;
+		else if (iseq(mode, "11acg"))
+			mt->curband = &mt->rd->bands_11acg;
 		else
 			warnx("unknown mode \"%s\" at line %ld",
 			    __DECONST(char *, mode),
@@ -184,6 +188,14 @@ decode_flag(struct mystate *mt, const ch
 		FLAG(IEEE80211_CHAN_G),
 		FLAG(IEEE80211_CHAN_HT20),
 		FLAG(IEEE80211_CHAN_HT40),
+		FLAG(IEEE80211_CHAN_VHT20),
+		FLAG(IEEE80211_CHAN_VHT40),
+		FLAG(IEEE80211_CHAN_VHT80),
+		/*
+		 * XXX VHT80_80? This likely should be done by
+		 * 80MHz chan logic in net80211 / ifconfig.
+		 */
+		FLAG(IEEE80211_CHAN_VHT160),
 		FLAG(IEEE80211_CHAN_ST),
 		FLAG(IEEE80211_CHAN_TURBO),
 		FLAG(IEEE80211_CHAN_PASSIVE),
@@ -515,6 +527,24 @@ lib80211_regdomain_readconfig(struct reg
 			}
 			nb->band = id;
 		}
+		LIST_FOREACH(nb, &dp->bands_11ac, next) {
+			id = findid(rdp, nb->band, FREQBAND);
+			if (id == NULL) {
+				warnx("undefined 11ac band \"%s\"",
+				    __DECONST(char *, nb->band));
+				errors++;
+			}
+			nb->band = id;
+		}
+		LIST_FOREACH(nb, &dp->bands_11acg, next) {
+			id = findid(rdp, nb->band, FREQBAND);
+			if (id == NULL) {
+				warnx("undefined 11acg band \"%s\"",
+				    __DECONST(char *, nb->band));
+				errors++;
+			}
+			nb->band = id;
+		}
 	}
 	LIST_FOREACH(cp, &rdp->countries, next) {
 		id = cp->rd;
@@ -562,6 +592,8 @@ lib80211_regdomain_cleanup(struct regdat
 		cleanup_bands(&dp->bands_11a);
 		cleanup_bands(&dp->bands_11ng);
 		cleanup_bands(&dp->bands_11na);
+		cleanup_bands(&dp->bands_11ac);
+		cleanup_bands(&dp->bands_11acg);
 		if (dp->name != NULL)
 			free(__DECONST(char *, dp->name));
 	}

Modified: projects/clang400-import/lib/lib80211/lib80211_regdomain.h
==============================================================================
--- projects/clang400-import/lib/lib80211/lib80211_regdomain.h	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/lib80211/lib80211_regdomain.h	Sun Jan  8 14:36:18 2017	(r311684)
@@ -75,6 +75,8 @@ struct regdomain {
 	netband_head	 bands_11a;	/* 11a operation */
 	netband_head	 bands_11ng;/* 11ng operation */
 	netband_head	 bands_11na;/* 11na operation */
+	netband_head	 bands_11ac;/* 11ac 5GHz operation */
+	netband_head	 bands_11acg;/* 11ac 2GHz operation */
 
 	LIST_ENTRY(regdomain)	next;
 };

Modified: projects/clang400-import/lib/libc/include/libc_private.h
==============================================================================
--- projects/clang400-import/lib/libc/include/libc_private.h	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libc/include/libc_private.h	Sun Jan  8 14:36:18 2017	(r311684)
@@ -272,6 +272,8 @@ void _malloc_thread_cleanup(void);
  * thread is exiting, so its thread-local dtors should be called.
  */
 void __cxa_thread_call_dtors(void);
+int __cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol) __hidden;
 
 /*
  * These functions are used by the threading libraries in order to protect

Modified: projects/clang400-import/lib/libc/stdlib/Makefile.inc
==============================================================================
--- projects/clang400-import/lib/libc/stdlib/Makefile.inc	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libc/stdlib/Makefile.inc	Sun Jan  8 14:36:18 2017	(r311684)
@@ -5,7 +5,9 @@
 .PATH: ${LIBC_SRCTOP}/${LIBC_ARCH}/stdlib ${LIBC_SRCTOP}/stdlib
 
 MISRCS+=C99_Exit.c a64l.c abort.c abs.c atexit.c atof.c atoi.c atol.c atoll.c \
-	bsearch.c cxa_thread_atexit.c div.c exit.c getenv.c getopt.c getopt_long.c \
+	bsearch.c \
+	cxa_thread_atexit.c cxa_thread_atexit_impl.c \
+	div.c exit.c getenv.c getopt.c getopt_long.c \
 	getsubopt.c hcreate.c hcreate_r.c hdestroy_r.c heapsort.c heapsort_b.c \
 	hsearch_r.c imaxabs.c imaxdiv.c \
 	insque.c l64a.c labs.c ldiv.c llabs.c lldiv.c lsearch.c \

Modified: projects/clang400-import/lib/libc/stdlib/Symbol.map
==============================================================================
--- projects/clang400-import/lib/libc/stdlib/Symbol.map	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libc/stdlib/Symbol.map	Sun Jan  8 14:36:18 2017	(r311684)
@@ -118,6 +118,7 @@ FBSD_1.4 {
 
 FBSD_1.5 {
 	__cxa_thread_atexit;
+	__cxa_thread_atexit_impl;
 };
 
 FBSDprivate_1.0 {

Modified: projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit.c
==============================================================================
--- projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -1,7 +1,10 @@
 /*-
- * Copyright (c) 2016 Mahdi Mokhtari <mokhi64@gmail.com>
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,114 +30,11 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <sys/queue.h>
-#include "namespace.h"
-#include <errno.h>
-#include <link.h>
-#include <pthread.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "un-namespace.h"
 #include "libc_private.h"
 
-/*
- * C++11 introduces the thread_local scope (like __thread with some
- * additions).  As a key-feature it should support non-trivial
- * destructors, registered with __cxa_thread_atexit() to be executed
- * at the thread termination.
- *
- * The implemention keeps a _Thread_local list of destructors per each
- * thread, and calls __cxa_thread_call_dtors() on each thread's exit
- * to do cleanup.  For a thread calling exit(3), in particular, for
- * the initial thread returning from main(), we call
- * __cxa_thread_call_dtors() inside exit().
- *
- * It could be possible that a dynamically loaded library, use
- * thread_local variable but is dlclose()'d before thread exit.  The
- * destructor of this variable will then try to access the address,
- * for calling it but it's unloaded, so it'll crash.  We're using
- * __elf_phdr_match_addr() to detect and prevent such cases and so
- * prevent the crash.
- */
-
-#define CXA_DTORS_ITERATIONS 4
-
-struct cxa_thread_dtor {
-	void *obj;
-	void (*func)(void *);
-	void *dso;
-	LIST_ENTRY(cxa_thread_dtor) entry;
-};
-static _Thread_local LIST_HEAD(dtor_list, cxa_thread_dtor) dtors =
-    LIST_HEAD_INITIALIZER(dtors);
-
 int
 __cxa_thread_atexit(void (*dtor_func)(void *), void *obj, void *dso_symbol)
 {
-	struct cxa_thread_dtor *new_dtor;
-
-	new_dtor = malloc(sizeof(*new_dtor));
-	if (new_dtor == NULL) {
-		errno = ENOMEM; /* forcibly override malloc(3) error */
-		return (-1);
-	}
-
-	new_dtor->obj = obj;
-	new_dtor->func = dtor_func;
-	new_dtor->dso = dso_symbol;
-	LIST_INSERT_HEAD(&dtors, new_dtor, entry);
-	return (0);
-}
-
-static void
-walk_cb_call(struct cxa_thread_dtor *dtor)
-{
-	struct dl_phdr_info phdr_info;
-
-	if (_rtld_addr_phdr(dtor->dso, &phdr_info) &&
-	    __elf_phdr_match_addr(&phdr_info, dtor->func))
-		dtor->func(dtor->obj);
-	else
-		fprintf(stderr, "__cxa_thread_call_dtors: dtr %p from "
-		    "unloaded dso, skipping\n", (void *)(dtor->func));
-}
-
-static void
-walk_cb_nocall(struct cxa_thread_dtor *dtor __unused)
-{
-}
-
-static void
-cxa_thread_walk(void (*cb)(struct cxa_thread_dtor *))
-{
-	struct cxa_thread_dtor *dtor, *tdtor;
-
-	LIST_FOREACH_SAFE(dtor, &dtors, entry, tdtor) {
-		LIST_REMOVE(dtor, entry);
-		cb(dtor);
-		free(dtor);
-	}
-}
-
-/*
- * This is the callback function we use to call destructors, once for
- * each thread.  It is called in exit(3) in libc/stdlib/exit.c and
- * before exit_thread() in libthr/thread/thr_exit.c.
- */
-void
-__cxa_thread_call_dtors(void)
-{
-	int i;
-
-	for (i = 0; i < CXA_DTORS_ITERATIONS && !LIST_EMPTY(&dtors); i++)
-		cxa_thread_walk(walk_cb_call);
 
-	if (!LIST_EMPTY(&dtors)) {
-		fprintf(stderr, "Thread %p is exiting with more "
-		    "thread-specific dtors created after %d iterations "
-		    "of destructor calls\n",
-		    _pthread_self(), i);
-		cxa_thread_walk(walk_cb_nocall);
-	}
+	return (__cxa_thread_atexit_hidden(dtor_func, obj, dso_symbol));
 }

Copied: projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit_impl.c (from r311683, head/lib/libc/stdlib/cxa_thread_atexit_impl.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/lib/libc/stdlib/cxa_thread_atexit_impl.c	Sun Jan  8 14:36:18 2017	(r311684, copy of r311683, head/lib/libc/stdlib/cxa_thread_atexit_impl.c)
@@ -0,0 +1,153 @@
+/*-
+ * Copyright (c) 2016 Mahdi Mokhtari <mokhi64@gmail.com>
+ * Copyright (c) 2016, 2017 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/queue.h>
+#include "namespace.h"
+#include <errno.h>
+#include <link.h>
+#include <pthread.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "un-namespace.h"
+#include "libc_private.h"
+
+/*
+ * C++11 introduces the thread_local scope (like __thread with some
+ * additions).  As a key-feature it should support non-trivial
+ * destructors, registered with __cxa_thread_atexit() to be executed
+ * at the thread termination.
+ *
+ * The implemention keeps a _Thread_local list of destructors per each
+ * thread, and calls __cxa_thread_call_dtors() on each thread's exit
+ * to do cleanup.  For a thread calling exit(3), in particular, for
+ * the initial thread returning from main(), we call
+ * __cxa_thread_call_dtors() inside exit().
+ *
+ * It could be possible that a dynamically loaded library, use
+ * thread_local variable but is dlclose()'d before thread exit.  The
+ * destructor of this variable will then try to access the address,
+ * for calling it but it's unloaded, so it'll crash.  We're using
+ * __elf_phdr_match_addr() to detect and prevent such cases and so
+ * prevent the crash.
+ */
+
+#define CXA_DTORS_ITERATIONS 4
+
+struct cxa_thread_dtor {
+	void *obj;
+	void (*func)(void *);
+	void *dso;
+	LIST_ENTRY(cxa_thread_dtor) entry;
+};
+static _Thread_local LIST_HEAD(dtor_list, cxa_thread_dtor) dtors =
+    LIST_HEAD_INITIALIZER(dtors);
+
+int
+__cxa_thread_atexit_impl(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol)
+{
+
+	return (__cxa_thread_atexit_hidden(dtor_func, obj, dso_symbol));
+}
+
+int
+__cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol)
+{
+	struct cxa_thread_dtor *new_dtor;
+
+	new_dtor = malloc(sizeof(*new_dtor));
+	if (new_dtor == NULL) {
+		errno = ENOMEM; /* forcibly override malloc(3) error */
+		return (-1);
+	}
+
+	new_dtor->obj = obj;
+	new_dtor->func = dtor_func;
+	new_dtor->dso = dso_symbol;
+	LIST_INSERT_HEAD(&dtors, new_dtor, entry);
+	return (0);
+}
+
+static void
+walk_cb_call(struct cxa_thread_dtor *dtor)
+{
+	struct dl_phdr_info phdr_info;
+
+	if (_rtld_addr_phdr(dtor->dso, &phdr_info) &&
+	    __elf_phdr_match_addr(&phdr_info, dtor->func))
+		dtor->func(dtor->obj);
+	else
+		fprintf(stderr, "__cxa_thread_call_dtors: dtr %p from "
+		    "unloaded dso, skipping\n", (void *)(dtor->func));
+}
+
+static void
+walk_cb_nocall(struct cxa_thread_dtor *dtor __unused)
+{
+}
+
+static void
+cxa_thread_walk(void (*cb)(struct cxa_thread_dtor *))
+{
+	struct cxa_thread_dtor *dtor, *tdtor;
+
+	LIST_FOREACH_SAFE(dtor, &dtors, entry, tdtor) {
+		LIST_REMOVE(dtor, entry);
+		cb(dtor);
+		free(dtor);
+	}
+}
+
+/*
+ * This is the callback function we use to call destructors, once for
+ * each thread.  It is called in exit(3) in libc/stdlib/exit.c and
+ * before exit_thread() in libthr/thread/thr_exit.c.
+ */
+void
+__cxa_thread_call_dtors(void)
+{
+	int i;
+
+	for (i = 0; i < CXA_DTORS_ITERATIONS && !LIST_EMPTY(&dtors); i++)
+		cxa_thread_walk(walk_cb_call);
+
+	if (!LIST_EMPTY(&dtors)) {
+		fprintf(stderr, "Thread %p is exiting with more "
+		    "thread-specific dtors created after %d iterations "
+		    "of destructor calls\n",
+		    _pthread_self(), i);
+		cxa_thread_walk(walk_cb_nocall);
+	}
+}

Modified: projects/clang400-import/lib/libcam/scsi_cmdparse.c
==============================================================================
--- projects/clang400-import/lib/libcam/scsi_cmdparse.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libcam/scsi_cmdparse.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -100,10 +100,11 @@ __FBSDID("$FreeBSD$");
  */
 
 static int
-do_buff_decode(u_int8_t *databuf, size_t len,
+do_buff_decode(u_int8_t *buff, size_t len,
 	       void (*arg_put)(void *, int , void *, int, char *),
 	       void *puthook, const char *fmt, va_list *ap)
 {
+	int ind = 0;
 	int assigned = 0;
 	int width;
 	int suppress;
@@ -112,21 +113,17 @@ do_buff_decode(u_int8_t *databuf, size_t
 	static u_char mask[] = {0, 0x01, 0x03, 0x07, 0x0f,
 				   0x1f, 0x3f, 0x7f, 0xff};
 	int value;
-	u_char *base = databuf;
 	char *intendp;
 	char letter;
 	char field_name[80];
 
-#	define ARG_PUT(ARG) \
-	do \
-	{ \
-		if (!suppress) \
-		{ \
+#define ARG_PUT(ARG) \
+	do { \
+		if (!suppress) { \
 			if (arg_put) \
-				(*arg_put)(puthook, (letter == 't' ? \
-					'b' : letter), \
-					(void *)((long)(ARG)), width, \
-					field_name); \
+				(*arg_put)(puthook, (letter == 't' ? 'b' : \
+				    letter), (void *)((long)(ARG)), width, \
+				    field_name); \
 			else \
 				*(va_arg(*ap, int *)) = (ARG); \
 			assigned++; \
@@ -187,7 +184,11 @@ do_buff_decode(u_int8_t *databuf, size_t
 				done = 1;
 			else {
 				if (shift <= 0) {
-					bits = *databuf++;
+					if (ind >= len) {
+						done = 1;
+						break;
+					}
+					bits = buff[ind++];
 					shift = 8;
 				}
 				value = (bits >> (shift - width)) &
@@ -209,29 +210,31 @@ do_buff_decode(u_int8_t *databuf, size_t
 			fmt++;
 			width = strtol(fmt, &intendp, 10);
 			fmt = intendp;
+			if (ind + width > len) {
+				done = 1;
+				break;
+			}
 			switch(width) {
 			case 1:
-				ARG_PUT(*databuf);
-				databuf++;
+				ARG_PUT(buff[ind]);
+				ind++;
 				break;
 
 			case 2:
-				ARG_PUT((*databuf) << 8 | *(databuf + 1));
-				databuf += 2;
+				ARG_PUT(buff[ind] << 8 | buff[ind + 1]);
+				ind += 2;
 				break;
 
 			case 3:
-				ARG_PUT((*databuf) << 16 |
-					(*(databuf + 1)) << 8 | *(databuf + 2));
-				databuf += 3;
+				ARG_PUT(buff[ind] << 16 |
+					buff[ind + 1] << 8 | buff[ind + 2]);
+				ind += 3;
 				break;
 
 			case 4:
-				ARG_PUT((*databuf) << 24 |
-					(*(databuf + 1)) << 16 |
-					(*(databuf + 2)) << 8 |
-					*(databuf + 3));
-				databuf += 4;
+				ARG_PUT(buff[ind] << 24 | buff[ind + 1] << 16 |
+					buff[ind + 2] << 8 | buff[ind + 3]);
+				ind += 4;
 				break;
 
 			default:
@@ -242,32 +245,35 @@ do_buff_decode(u_int8_t *databuf, size_t
 			break;
 
 		case 'c':	/* Characters (i.e., not swapped) */
-		case 'z':	/* Characters with zeroed trailing
-					   spaces  */
+		case 'z':	/* Characters with zeroed trailing spaces */
 			shift = 0;
 			fmt++;
 			width = strtol(fmt, &intendp, 10);
 			fmt = intendp;
+			if (ind + width > len) {
+				done = 1;
+				break;
+			}
 			if (!suppress) {
 				if (arg_put)
 					(*arg_put)(puthook,
-						(letter == 't' ? 'b' : letter),
-						databuf, width, field_name);
+					    (letter == 't' ? 'b' : letter),
+					    &buff[ind], width, field_name);
 				else {
 					char *dest;
 					dest = va_arg(*ap, char *);
-					bcopy(databuf, dest, width);
+					bcopy(&buff[ind], dest, width);
 					if (letter == 'z') {
 						char *p;
 						for (p = dest + width - 1;
-						     (p >= (char *)dest)
-						     && (*p == ' '); p--)
+						    p >= dest && *p == ' ';
+						    p--)
 							*p = 0;
 					}
 				}
 				assigned++;
 			}
-			databuf += width;
+			ind += width;
 			field_name[0] = 0;
 			suppress = 0;
 			break;
@@ -295,9 +301,9 @@ do_buff_decode(u_int8_t *databuf, size_t
 			}
 
 			if (plus)
-				databuf += width;	/* Relative seek */
+				ind += width;	/* Relative seek */
 			else
-				databuf = base + width;	/* Absolute seek */
+				ind = width;	/* Absolute seek */
 
 			break;
 

Modified: projects/clang400-import/lib/libprocstat/cd9660.c
==============================================================================
--- projects/clang400-import/lib/libprocstat/cd9660.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libprocstat/cd9660.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -53,10 +53,10 @@ __FBSDID("$FreeBSD$");
 
 #include <err.h>
 
-#include <isofs/cd9660/cd9660_node.h>
 #define _KERNEL
 #include <isofs/cd9660/iso.h>
 #undef _KERNEL
+#include <isofs/cd9660/cd9660_node.h>
 
 #include <kvm.h>
 #include <stdio.h>

Modified: projects/clang400-import/lib/libstand/bootp.c
==============================================================================
--- projects/clang400-import/lib/libstand/bootp.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libstand/bootp.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -62,8 +62,6 @@ __FBSDID("$FreeBSD$");
 
 struct in_addr servip;
 
-static n_long	nmask, smask;
-
 static time_t	bot;
 
 static	char vm_rfc1048[4] = VM_RFC1048;
@@ -223,30 +221,19 @@ bootp(sock, flag)
 	bcopy(rbuf.rbootp.bp_file, bootfile, sizeof(bootfile));
 	bootfile[sizeof(bootfile) - 1] = '\0';
 
-	if (IN_CLASSA(ntohl(myip.s_addr)))
-		nmask = htonl(IN_CLASSA_NET);
-	else if (IN_CLASSB(ntohl(myip.s_addr)))
-		nmask = htonl(IN_CLASSB_NET);
-	else
-		nmask = htonl(IN_CLASSC_NET);
-#ifdef BOOTP_DEBUG
-	if (debug)
-		printf("'native netmask' is %s\n", intoa(nmask));
-#endif
-
-	/* Check subnet mask against net mask; toss if bogus */
-	if ((nmask & smask) != nmask) {
+	if (!netmask) {
+		if (IN_CLASSA(ntohl(myip.s_addr)))
+			netmask = htonl(IN_CLASSA_NET);
+		else if (IN_CLASSB(ntohl(myip.s_addr)))
+			netmask = htonl(IN_CLASSB_NET);
+		else
+			netmask = htonl(IN_CLASSC_NET);
 #ifdef BOOTP_DEBUG
 		if (debug)
-			printf("subnet mask (%s) bad\n", intoa(smask));
+			printf("'native netmask' is %s\n", intoa(netmask));
 #endif
-		smask = 0;
 	}
 
-	/* Get subnet (or natural net) mask */
-	netmask = nmask;
-	if (smask)
-		netmask = smask;
 #ifdef BOOTP_DEBUG
 	if (debug)
 		printf("mask: %s\n", intoa(netmask));
@@ -385,7 +372,7 @@ vend_rfc1048(cp, len)
 			break;
 
 		if (tag == TAG_SUBNET_MASK) {
-			bcopy(cp, &smask, sizeof(smask));
+			bcopy(cp, &netmask, sizeof(netmask));
 		}
 		if (tag == TAG_GATEWAY) {
 			bcopy(cp, &gateip.s_addr, sizeof(gateip.s_addr));
@@ -445,7 +432,7 @@ vend_cmu(cp)
 	vp = (struct cmu_vend *)cp;
 
 	if (vp->v_smask.s_addr != 0) {
-		smask = vp->v_smask.s_addr;
+		netmask = vp->v_smask.s_addr;
 	}
 	if (vp->v_dgate.s_addr != 0) {
 		gateip = vp->v_dgate;

Modified: projects/clang400-import/lib/libsysdecode/mktables
==============================================================================
--- projects/clang400-import/lib/libsysdecode/mktables	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/lib/libsysdecode/mktables	Sun Jan  8 14:36:18 2017	(r311684)
@@ -142,7 +142,7 @@ gen_table "seekwhence"      "SEEK_[A-Z]+
 gen_table "fcntlcmd"        "F_[A-Z0-9_]+[[:space:]]+[0-9]+[[:space:]]+"   "sys/fcntl.h"	"F_CANCEL|F_..LCK"
 gen_table "mmapflags"       "MAP_[A-Z_]+[[:space:]]+0x[0-9A-Fa-f]+"        "sys/mman.h"
 gen_table "rtpriofuncs"     "RTP_[A-Z]+[[:space:]]+[0-9]+"                 "sys/rtprio.h"
-gen_table "msgflags"        "MSG_[A-Z]+[[:space:]]+0x[0-9]+"               "sys/socket.h"	"MSG_SOCALLBCK"
+gen_table "msgflags"        "MSG_[A-Z]+[[:space:]]+0x[0-9]+"               "sys/socket.h"	"MSG_SOCALLBCK|MSG_MORETOCOME"
 gen_table "sigcode"         "SI_[A-Z]+[[:space:]]+0(x[0-9abcdef]+)?"       "sys/signal.h"
 gen_table "umtxcvwaitflags" "CVWAIT_[A-Z_]+[[:space:]]+0x[0-9]+"           "sys/umtx.h"
 gen_table "umtxrwlockflags" "URWLOCK_PREFER_READER[[:space:]]+0x[0-9]+"    "sys/umtx.h"

Modified: projects/clang400-import/sbin/camcontrol/camcontrol.8
==============================================================================
--- projects/clang400-import/sbin/camcontrol/camcontrol.8	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/sbin/camcontrol/camcontrol.8	Sun Jan  8 14:36:18 2017	(r311684)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 30, 2016
+.Dd January 6, 2017
 .Dt CAMCONTROL 8
 .Os
 .Sh NAME
@@ -121,7 +121,7 @@
 .Ic modepage
 .Op device id
 .Op generic args
-.Aq Fl m Ar page | Fl l
+.Aq Fl m Ar page[,subpage] | Fl l
 .Op Fl P Ar pgctl
 .Op Fl b | Fl e
 .Op Fl d
@@ -702,9 +702,10 @@ The editor will be invoked if
 detects that standard input is terminal.
 .It Fl l
 Lists all available mode pages.
-.It Fl m Ar mode_page
-This specifies the number of the mode page the user would like to view
-and/or edit.
+If specified more then once, also lists subpages.
+.It Fl m Ar page[,subpage]
+This specifies the number of the mode page and optionally subpage the user
+would like to view and/or edit.
 This argument is mandatory unless
 .Fl l
 is specified.

Modified: projects/clang400-import/sbin/camcontrol/camcontrol.c
==============================================================================
--- projects/clang400-import/sbin/camcontrol/camcontrol.c	Sun Jan  8 13:38:17 2017	(r311683)
+++ projects/clang400-import/sbin/camcontrol/camcontrol.c	Sun Jan  8 14:36:18 2017	(r311684)
@@ -125,12 +125,9 @@ typedef enum {
 	CAM_ARG_GET_STDINQ	= 0x00002000,
 	CAM_ARG_GET_XFERRATE	= 0x00004000,
 	CAM_ARG_INQ_MASK	= 0x00007000,
-	CAM_ARG_MODE_EDIT	= 0x00008000,
-	CAM_ARG_PAGE_CNTL	= 0x00010000,
 	CAM_ARG_TIMEOUT		= 0x00020000,
 	CAM_ARG_CMD_IN		= 0x00040000,
 	CAM_ARG_CMD_OUT		= 0x00080000,
-	CAM_ARG_DBD		= 0x00100000,
 	CAM_ARG_ERR_RECOVER	= 0x00200000,
 	CAM_ARG_RETRIES		= 0x00400000,
 	CAM_ARG_START_UNIT	= 0x00800000,
@@ -3987,8 +3984,8 @@ reassignblocks(struct cam_device *device
 
 #ifndef MINIMALISTIC
 void
-mode_sense(struct cam_device *device, int mode_page, int page_control,
-	   int dbd, int retry_count, int timeout, u_int8_t *data, int datalen)
+mode_sense(struct cam_device *device, int dbd, int pc, int page, int subpage,
+	   int retry_count, int timeout, u_int8_t *data, int datalen)
 {
 	union ccb *ccb;
 	int retval;
@@ -4000,15 +3997,17 @@ mode_sense(struct cam_device *device, in
 
 	CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio);
 
-	scsi_mode_sense(&ccb->csio,
+	scsi_mode_sense_subpage(&ccb->csio,
 			/* retries */ retry_count,
 			/* cbfcnp */ NULL,
 			/* tag_action */ MSG_SIMPLE_Q_TAG,
 			/* dbd */ dbd,
-			/* page_code */ page_control << 6,
-			/* page */ mode_page,
+			/* pc */ pc << 6,
+			/* page */ page,
+			/* subpage */ subpage,
 			/* param_buf */ data,
 			/* param_len */ datalen,
+			/* minimum_cmd_size */ 0,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ timeout ? timeout : 5000);
 
@@ -4089,8 +4088,9 @@ void
 modepage(struct cam_device *device, int argc, char **argv, char *combinedopt,
 	 int retry_count, int timeout)
 {
-	int c, mode_page = -1, page_control = 0;
-	int binary = 0, list = 0;

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

From owner-svn-src-projects@freebsd.org  Sun Jan  8 14:49:51 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 50C5DCA5B7F
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 14:49:51 +0000 (UTC) (envelope-from dim@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 166641AC8;
 Sun,  8 Jan 2017 14:49:51 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08EnoCh025434;
 Sun, 8 Jan 2017 14:49:50 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08EnoO5025433;
 Sun, 8 Jan 2017 14:49:50 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081449.v08EnoO5025433@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 14:49:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311685 - projects/clang400-import/share/mk
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 14:49:51 -0000

Author: dim
Date: Sun Jan  8 14:49:50 2017
New Revision: 311685
URL: https://svnweb.freebsd.org/changeset/base/311685

Log:
  Disable -Waddress-of-packed-member for WARNS <= 3.

Modified:
  projects/clang400-import/share/mk/bsd.sys.mk

Modified: projects/clang400-import/share/mk/bsd.sys.mk
==============================================================================
--- projects/clang400-import/share/mk/bsd.sys.mk	Sun Jan  8 14:36:18 2017	(r311684)
+++ projects/clang400-import/share/mk/bsd.sys.mk	Sun Jan  8 14:49:50 2017	(r311685)
@@ -78,15 +78,15 @@ CWARNFLAGS.clang+=	-Wno-tautological-com
 .if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 30600
 CWARNFLAGS.clang+=	-Wno-unused-local-typedef
 .endif
+.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 40000
+CWARNFLAGS.clang+=	-Wno-address-of-packed-member
+.endif
 .endif # WARNS <= 3
 .if ${WARNS} <= 2
 CWARNFLAGS.clang+=	-Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter
 .endif # WARNS <= 2
 .if ${WARNS} <= 1
 CWARNFLAGS.clang+=	-Wno-parentheses
-.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 40000
-CWARNFLAGS.clang+=	-Wno-address-of-packed-member
-.endif
 .endif # WARNS <= 1
 .if defined(NO_WARRAY_BOUNDS)
 CWARNFLAGS.clang+=	-Wno-array-bounds

From owner-svn-src-projects@freebsd.org  Sun Jan  8 18:14:29 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 70BB9CA5060
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 18:14:29 +0000 (UTC) (envelope-from dim@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 3FF2E1052;
 Sun,  8 Jan 2017 18:14:29 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08IESeQ010520;
 Sun, 8 Jan 2017 18:14:28 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08IES1B010519;
 Sun, 8 Jan 2017 18:14:28 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081814.v08IES1B010519@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 18:14:28 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311691 - projects/clang400-import/sys/conf
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 18:14:29 -0000

Author: dim
Date: Sun Jan  8 18:14:28 2017
New Revision: 311691
URL: https://svnweb.freebsd.org/changeset/base/311691

Log:
  For kernel builds, make the -Waddress-of-packed-member warning non-fatal.
  The warning is informative, but often there is no real alignment problem.

Modified:
  projects/clang400-import/sys/conf/kern.mk

Modified: projects/clang400-import/sys/conf/kern.mk
==============================================================================
--- projects/clang400-import/sys/conf/kern.mk	Sun Jan  8 18:14:22 2017	(r311690)
+++ projects/clang400-import/sys/conf/kern.mk	Sun Jan  8 18:14:28 2017	(r311691)
@@ -33,6 +33,9 @@ CWARNEXTRA?=	-Wno-error-tautological-com
 .if ${COMPILER_VERSION} >= 30700
 CWARNEXTRA+=	-Wno-error-shift-negative-value
 .endif
+.if ${COMPILER_VERSION} >= 40000
+CWARNEXTRA+=	-Wno-error-address-of-packed-member
+.endif
 
 CLANG_NO_IAS= -no-integrated-as
 .if ${COMPILER_VERSION} < 30500

From owner-svn-src-projects@freebsd.org  Sun Jan  8 18:17:36 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 3EEEDCA5125
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 18:17:36 +0000 (UTC) (envelope-from dim@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 11514160F;
 Sun,  8 Jan 2017 18:17:36 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08IHZFf010733;
 Sun, 8 Jan 2017 18:17:35 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08IHZ3n010732;
 Sun, 8 Jan 2017 18:17:35 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081817.v08IHZ3n010732@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 18:17:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311692 - projects/clang400-import/sys/geom/vinum
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 18:17:36 -0000

Author: dim
Date: Sun Jan  8 18:17:35 2017
New Revision: 311692
URL: https://svnweb.freebsd.org/changeset/base/311692

Log:
  Merge ^/head r311684 through r311691.

Modified:
  projects/clang400-import/sys/geom/vinum/geom_vinum_state.c
Directory Properties:
  projects/clang400-import/   (props changed)

Modified: projects/clang400-import/sys/geom/vinum/geom_vinum_state.c
==============================================================================
--- projects/clang400-import/sys/geom/vinum/geom_vinum_state.c	Sun Jan  8 18:14:28 2017	(r311691)
+++ projects/clang400-import/sys/geom/vinum/geom_vinum_state.c	Sun Jan  8 18:17:35 2017	(r311692)
@@ -183,7 +183,7 @@ gv_set_sd_state(struct gv_sd *s, int new
 		 * Only do this if we're forced, since it usually is done
 		 * internally, and then we do use the force flag. 
 		 */
-		if (!flags & GV_SETSTATE_FORCE)
+		if (!(flags & GV_SETSTATE_FORCE))
 			return (GV_ERR_SETSTATE);
 		break;
 

From owner-svn-src-projects@freebsd.org  Sun Jan  8 19:39:04 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 C9EBCCA59D8
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 19:39:04 +0000 (UTC) (envelope-from dim@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 7F81719E7;
 Sun,  8 Jan 2017 19:39:04 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08Jd3mX043029;
 Sun, 8 Jan 2017 19:39:03 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08Jd3k9043022;
 Sun, 8 Jan 2017 19:39:03 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081939.v08Jd3k9043022@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 19:39:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311696 - in projects/clang400-import: contrib/libc++
 contrib/libc++/include contrib/libc++/include/experimental
 contrib/libc++/include/ext contrib/libc++/src contrib/libc++/src/experim...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 19:39:04 -0000

Author: dim
Date: Sun Jan  8 19:39:03 2017
New Revision: 311696
URL: https://svnweb.freebsd.org/changeset/base/311696

Log:
  Merge libc++ r291274, and update the library Makefile.

Added:
  projects/clang400-import/contrib/libc++/include/__libcpp_version
     - copied unchanged from r311695, vendor/libc++/dist/include/__libcpp_version
  projects/clang400-import/contrib/libc++/include/__string
     - copied unchanged from r311695, vendor/libc++/dist/include/__string
  projects/clang400-import/contrib/libc++/include/any
     - copied unchanged from r311695, vendor/libc++/dist/include/any
  projects/clang400-import/contrib/libc++/include/experimental/numeric
     - copied unchanged from r311695, vendor/libc++/dist/include/experimental/numeric
  projects/clang400-import/contrib/libc++/include/limits.h
     - copied unchanged from r311695, vendor/libc++/dist/include/limits.h
  projects/clang400-import/contrib/libc++/include/locale.h
     - copied unchanged from r311695, vendor/libc++/dist/include/locale.h
  projects/clang400-import/contrib/libc++/include/optional
     - copied unchanged from r311695, vendor/libc++/dist/include/optional
  projects/clang400-import/contrib/libc++/include/stdint.h
     - copied unchanged from r311695, vendor/libc++/dist/include/stdint.h
  projects/clang400-import/contrib/libc++/include/string_view
     - copied unchanged from r311695, vendor/libc++/dist/include/string_view
  projects/clang400-import/contrib/libc++/include/variant
     - copied unchanged from r311695, vendor/libc++/dist/include/variant
  projects/clang400-import/contrib/libc++/src/variant.cpp
     - copied unchanged from r311695, vendor/libc++/dist/src/variant.cpp
Modified:
  projects/clang400-import/contrib/libc++/LICENSE.TXT
  projects/clang400-import/contrib/libc++/include/__bit_reference
  projects/clang400-import/contrib/libc++/include/__config
  projects/clang400-import/contrib/libc++/include/__debug
  projects/clang400-import/contrib/libc++/include/__functional_03
  projects/clang400-import/contrib/libc++/include/__functional_base
  projects/clang400-import/contrib/libc++/include/__hash_table
  projects/clang400-import/contrib/libc++/include/__locale
  projects/clang400-import/contrib/libc++/include/__mutex_base
  projects/clang400-import/contrib/libc++/include/__nullptr
  projects/clang400-import/contrib/libc++/include/__refstring
  projects/clang400-import/contrib/libc++/include/__std_stream
  projects/clang400-import/contrib/libc++/include/__threading_support
  projects/clang400-import/contrib/libc++/include/__tree
  projects/clang400-import/contrib/libc++/include/__tuple
  projects/clang400-import/contrib/libc++/include/algorithm
  projects/clang400-import/contrib/libc++/include/array
  projects/clang400-import/contrib/libc++/include/atomic
  projects/clang400-import/contrib/libc++/include/bitset
  projects/clang400-import/contrib/libc++/include/chrono
  projects/clang400-import/contrib/libc++/include/cmath
  projects/clang400-import/contrib/libc++/include/codecvt
  projects/clang400-import/contrib/libc++/include/complex
  projects/clang400-import/contrib/libc++/include/cstdio
  projects/clang400-import/contrib/libc++/include/cstdlib
  projects/clang400-import/contrib/libc++/include/cwchar
  projects/clang400-import/contrib/libc++/include/deque
  projects/clang400-import/contrib/libc++/include/exception
  projects/clang400-import/contrib/libc++/include/experimental/algorithm
  projects/clang400-import/contrib/libc++/include/experimental/any
  projects/clang400-import/contrib/libc++/include/experimental/dynarray
  projects/clang400-import/contrib/libc++/include/experimental/filesystem
  projects/clang400-import/contrib/libc++/include/experimental/memory_resource
  projects/clang400-import/contrib/libc++/include/experimental/optional
  projects/clang400-import/contrib/libc++/include/experimental/propagate_const
  projects/clang400-import/contrib/libc++/include/experimental/string_view
  projects/clang400-import/contrib/libc++/include/experimental/type_traits
  projects/clang400-import/contrib/libc++/include/experimental/utility
  projects/clang400-import/contrib/libc++/include/ext/__hash
  projects/clang400-import/contrib/libc++/include/ext/hash_map
  projects/clang400-import/contrib/libc++/include/ext/hash_set
  projects/clang400-import/contrib/libc++/include/forward_list
  projects/clang400-import/contrib/libc++/include/fstream
  projects/clang400-import/contrib/libc++/include/functional
  projects/clang400-import/contrib/libc++/include/future
  projects/clang400-import/contrib/libc++/include/initializer_list
  projects/clang400-import/contrib/libc++/include/inttypes.h
  projects/clang400-import/contrib/libc++/include/iomanip
  projects/clang400-import/contrib/libc++/include/ios
  projects/clang400-import/contrib/libc++/include/iosfwd
  projects/clang400-import/contrib/libc++/include/istream
  projects/clang400-import/contrib/libc++/include/iterator
  projects/clang400-import/contrib/libc++/include/limits
  projects/clang400-import/contrib/libc++/include/list
  projects/clang400-import/contrib/libc++/include/locale
  projects/clang400-import/contrib/libc++/include/map
  projects/clang400-import/contrib/libc++/include/math.h
  projects/clang400-import/contrib/libc++/include/memory
  projects/clang400-import/contrib/libc++/include/module.modulemap
  projects/clang400-import/contrib/libc++/include/mutex
  projects/clang400-import/contrib/libc++/include/new
  projects/clang400-import/contrib/libc++/include/numeric
  projects/clang400-import/contrib/libc++/include/ostream
  projects/clang400-import/contrib/libc++/include/queue
  projects/clang400-import/contrib/libc++/include/random
  projects/clang400-import/contrib/libc++/include/ratio
  projects/clang400-import/contrib/libc++/include/regex
  projects/clang400-import/contrib/libc++/include/scoped_allocator
  projects/clang400-import/contrib/libc++/include/set
  projects/clang400-import/contrib/libc++/include/sstream
  projects/clang400-import/contrib/libc++/include/stack
  projects/clang400-import/contrib/libc++/include/stdexcept
  projects/clang400-import/contrib/libc++/include/streambuf
  projects/clang400-import/contrib/libc++/include/string
  projects/clang400-import/contrib/libc++/include/system_error
  projects/clang400-import/contrib/libc++/include/thread
  projects/clang400-import/contrib/libc++/include/tuple
  projects/clang400-import/contrib/libc++/include/type_traits
  projects/clang400-import/contrib/libc++/include/typeindex
  projects/clang400-import/contrib/libc++/include/typeinfo
  projects/clang400-import/contrib/libc++/include/unordered_map
  projects/clang400-import/contrib/libc++/include/unordered_set
  projects/clang400-import/contrib/libc++/include/utility
  projects/clang400-import/contrib/libc++/include/valarray
  projects/clang400-import/contrib/libc++/include/vector
  projects/clang400-import/contrib/libc++/src/algorithm.cpp
  projects/clang400-import/contrib/libc++/src/any.cpp
  projects/clang400-import/contrib/libc++/src/chrono.cpp
  projects/clang400-import/contrib/libc++/src/condition_variable.cpp
  projects/clang400-import/contrib/libc++/src/debug.cpp
  projects/clang400-import/contrib/libc++/src/exception.cpp
  projects/clang400-import/contrib/libc++/src/experimental/filesystem/directory_iterator.cpp
  projects/clang400-import/contrib/libc++/src/experimental/filesystem/operations.cpp
  projects/clang400-import/contrib/libc++/src/experimental/filesystem/path.cpp
  projects/clang400-import/contrib/libc++/src/experimental/memory_resource.cpp
  projects/clang400-import/contrib/libc++/src/include/atomic_support.h
  projects/clang400-import/contrib/libc++/src/include/config_elast.h
  projects/clang400-import/contrib/libc++/src/ios.cpp
  projects/clang400-import/contrib/libc++/src/locale.cpp
  projects/clang400-import/contrib/libc++/src/memory.cpp
  projects/clang400-import/contrib/libc++/src/mutex.cpp
  projects/clang400-import/contrib/libc++/src/new.cpp
  projects/clang400-import/contrib/libc++/src/optional.cpp
  projects/clang400-import/contrib/libc++/src/random.cpp
  projects/clang400-import/contrib/libc++/src/stdexcept.cpp
  projects/clang400-import/contrib/libc++/src/string.cpp
  projects/clang400-import/contrib/libc++/src/strstream.cpp
  projects/clang400-import/contrib/libc++/src/system_error.cpp
  projects/clang400-import/contrib/libc++/src/thread.cpp
  projects/clang400-import/contrib/libc++/src/typeinfo.cpp
  projects/clang400-import/lib/libc++/Makefile
Directory Properties:
  projects/clang400-import/contrib/libc++/   (props changed)

Modified: projects/clang400-import/contrib/libc++/LICENSE.TXT
==============================================================================
--- projects/clang400-import/contrib/libc++/LICENSE.TXT	Sun Jan  8 18:46:00 2017	(r311695)
+++ projects/clang400-import/contrib/libc++/LICENSE.TXT	Sun Jan  8 19:39:03 2017	(r311696)
@@ -14,7 +14,7 @@ Full text of the relevant licenses is in
 University of Illinois/NCSA
 Open Source License
 
-Copyright (c) 2009-2016 by the contributors listed in CREDITS.TXT
+Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT
 
 All rights reserved.
 

Modified: projects/clang400-import/contrib/libc++/include/__bit_reference
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__bit_reference	Sun Jan  8 18:46:00 2017	(r311695)
+++ projects/clang400-import/contrib/libc++/include/__bit_reference	Sun Jan  8 19:39:03 2017	(r311696)
@@ -163,7 +163,7 @@ __find_bool_true(__bit_iterator<_Cp, _Is
 {
     typedef __bit_iterator<_Cp, _IsConst> _It;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    static const int __bits_per_word = _It::__bits_per_word;
     // do first partial word
     if (__first.__ctz_ != 0)
     {
@@ -199,7 +199,7 @@ __find_bool_false(__bit_iterator<_Cp, _I
 {
     typedef __bit_iterator<_Cp, _IsConst> _It;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    const int __bits_per_word = _It::__bits_per_word;
     // do first partial word
     if (__first.__ctz_ != 0)
     {
@@ -251,7 +251,7 @@ __count_bool_true(__bit_iterator<_Cp, _I
     typedef __bit_iterator<_Cp, _IsConst> _It;
     typedef typename _It::__storage_type __storage_type;
     typedef typename _It::difference_type difference_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    const int __bits_per_word = _It::__bits_per_word;
     difference_type __r = 0;
     // do first partial word
     if (__first.__ctz_ != 0)
@@ -282,7 +282,7 @@ __count_bool_false(__bit_iterator<_Cp, _
     typedef __bit_iterator<_Cp, _IsConst> _It;
     typedef typename _It::__storage_type __storage_type;
     typedef typename _It::difference_type difference_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    const int __bits_per_word = _It::__bits_per_word;
     difference_type __r = 0;
     // do first partial word
     if (__first.__ctz_ != 0)
@@ -324,7 +324,7 @@ __fill_n_false(__bit_iterator<_Cp, false
 {
     typedef __bit_iterator<_Cp, false> _It;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    const int __bits_per_word = _It::__bits_per_word;
     // do first partial word
     if (__first.__ctz_ != 0)
     {
@@ -354,7 +354,7 @@ __fill_n_true(__bit_iterator<_Cp, false>
 {
     typedef __bit_iterator<_Cp, false> _It;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    const int __bits_per_word = _It::__bits_per_word;
     // do first partial word
     if (__first.__ctz_ != 0)
     {
@@ -412,7 +412,7 @@ __copy_aligned(__bit_iterator<_Cp, _IsCo
     typedef __bit_iterator<_Cp, _IsConst> _In;
     typedef  typename _In::difference_type difference_type;
     typedef typename _In::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _In::__bits_per_word;
+    const int __bits_per_word = _In::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -461,7 +461,7 @@ __copy_unaligned(__bit_iterator<_Cp, _Is
     typedef __bit_iterator<_Cp, _IsConst> _In;
     typedef  typename _In::difference_type difference_type;
     typedef typename _In::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _In::__bits_per_word;
+    static const int __bits_per_word = _In::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -551,7 +551,7 @@ __copy_backward_aligned(__bit_iterator<_
     typedef __bit_iterator<_Cp, _IsConst> _In;
     typedef  typename _In::difference_type difference_type;
     typedef typename _In::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _In::__bits_per_word;
+    const int __bits_per_word = _In::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -600,7 +600,7 @@ __copy_backward_unaligned(__bit_iterator
     typedef __bit_iterator<_Cp, _IsConst> _In;
     typedef  typename _In::difference_type difference_type;
     typedef typename _In::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _In::__bits_per_word;
+    const int __bits_per_word = _In::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -718,7 +718,7 @@ __swap_ranges_aligned(__bit_iterator<__C
     typedef __bit_iterator<__C1, false> _I1;
     typedef  typename _I1::difference_type difference_type;
     typedef typename _I1::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _I1::__bits_per_word;
+    const int __bits_per_word = _I1::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -768,7 +768,7 @@ __swap_ranges_unaligned(__bit_iterator<_
     typedef __bit_iterator<__C1, false> _I1;
     typedef  typename _I1::difference_type difference_type;
     typedef typename _I1::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _I1::__bits_per_word;
+    const int __bits_per_word = _I1::__bits_per_word;
     difference_type __n = __last - __first;
     if (__n > 0)
     {
@@ -959,7 +959,7 @@ __equal_unaligned(__bit_iterator<_Cp, _I
     typedef __bit_iterator<_Cp, _IC1> _It;
     typedef  typename _It::difference_type difference_type;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    static const int __bits_per_word = _It::__bits_per_word;
     difference_type __n = __last1 - __first1;
     if (__n > 0)
     {
@@ -1041,7 +1041,7 @@ __equal_aligned(__bit_iterator<_Cp, _IC1
     typedef __bit_iterator<_Cp, _IC1> _It;
     typedef  typename _It::difference_type difference_type;
     typedef typename _It::__storage_type __storage_type;
-    static const unsigned __bits_per_word = _It::__bits_per_word;
+    static const int __bits_per_word = _It::__bits_per_word;
     difference_type __n = __last1 - __first1;
     if (__n > 0)
     {

Modified: projects/clang400-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__config	Sun Jan  8 18:46:00 2017	(r311695)
+++ projects/clang400-import/contrib/libc++/include/__config	Sun Jan  8 19:39:03 2017	(r311696)
@@ -27,14 +27,14 @@
 #define _GNUC_VER 0
 #endif
 
-#define _LIBCPP_VERSION 3900
+#define _LIBCPP_VERSION 4000
 
 #ifndef _LIBCPP_ABI_VERSION
 #define _LIBCPP_ABI_VERSION 1
 #endif
 
 #if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2
-// Change short string represention so that string data starts at offset 0,
+// Change short string representation so that string data starts at offset 0,
 // improving its alignment in some cases.
 #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
 // Fix deque iterator type in order to support incomplete types.
@@ -43,10 +43,25 @@
 #define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB
 // Fix undefined behavior in  how __tree stores its end and parent nodes.
 #define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB
+// Fix undefined behavior in how __hash_table stores it's pointer types
+#define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB
 #define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB
 #define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE
 #define _LIBCPP_ABI_VARIADIC_LOCK_GUARD
+// Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr
+// provided under the alternate keyword __nullptr, which changes the mangling
+// of nullptr_t. This option is ABI incompatible with GCC in C++03 mode.
+#define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR
+// Define the `pointer_safety` enum as a C++11 strongly typed enumeration
+// instead of as a class simulating an enum. If this option is enabled
+// `pointer_safety` and `get_pointer_safety()` will no longer be available
+// in C++03.
+#define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE
 #elif _LIBCPP_ABI_VERSION == 1
+#if !defined(_WIN32)
+// Enable compiling a definition of error_category() into the libc++ dylib.
+#define _LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR
+#endif
 // Feature macros for disabling pre ABI v1 features. All of these options
 // are deprecated.
 #if defined(__FreeBSD__)
@@ -64,6 +79,9 @@
 
 #define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
 
+#if __cplusplus < 201103L
+#define _LIBCPP_CXX03_LANG
+#endif
 
 #ifndef __has_attribute
 #define __has_attribute(__x) 0
@@ -83,6 +101,13 @@
 #define __is_identifier(__x) 1
 #endif
 
+// Need to detect which libc we're using if we're on Linux.
+#if defined(__linux__)
+#include <features.h>
+#if !defined(__GLIBC_PREREQ)
+#define __GLIBC_PREREQ(a, b) 0
+#endif // !defined(__GLIBC_PREREQ)
+#endif // defined(__linux__)
 
 #ifdef __LITTLE_ENDIAN__
 #if __LITTLE_ENDIAN__
@@ -134,11 +159,13 @@
 # define _LIBCPP_HAS_QUICK_EXIT
 #endif  // __NetBSD__
 
-#ifdef _WIN32
+#if defined(_WIN32)
+#  define _LIBCPP_WIN32API      1
 #  define _LIBCPP_LITTLE_ENDIAN 1
 #  define _LIBCPP_BIG_ENDIAN    0
+#  define _LIBCPP_SHORT_WCHAR   1
 // Compiler intrinsics (MSVC)
-#if defined(_MSC_VER) && _MSC_VER >= 1400
+#  if defined(_MSC_VER) && _MSC_VER >= 1400
 #    define _LIBCPP_HAS_IS_BASE_OF
 #  endif
 #  if defined(_MSC_VER) && !defined(__clang__)
@@ -147,11 +174,14 @@
 #    define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
 #    define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))
 #  endif
-#  // If mingw not explicitly detected, assume using MS C runtime only.
+// If mingw not explicitly detected, assume using MS C runtime only.
 #  ifndef __MINGW32__
 #    define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
 #  endif
-#endif  // _WIN32
+#  if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__))
+#    define _LIBCPP_HAS_BITSCAN64
+#  endif
+#endif // defined(_WIN32)
 
 #ifdef __sun__
 # include <sys/isa_defs.h>
@@ -175,7 +205,7 @@
   // including accesses to the special files under /dev. C++11's
   // std::random_device is instead exposed through a NaCl syscall.
 # define _LIBCPP_USING_NACL_RANDOM
-#elif defined(_WIN32)
+#elif defined(_LIBCPP_WIN32API)
 # define _LIBCPP_USING_WIN32_RANDOM
 #else
 # define _LIBCPP_USING_DEV_RANDOM
@@ -200,90 +230,6 @@
 #define _LIBCPP_NO_CFI
 #endif
 
-#ifdef _WIN32
-
-// only really useful for a DLL
-#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally...
-# ifdef cxx_EXPORTS
-#  define _LIBCPP_HIDDEN
-#  define _LIBCPP_FUNC_VIS __declspec(dllexport)
-#  define _LIBCPP_TYPE_VIS __declspec(dllexport)
-# else
-#  define _LIBCPP_HIDDEN
-#  define _LIBCPP_FUNC_VIS __declspec(dllimport)
-#  define _LIBCPP_TYPE_VIS __declspec(dllimport)
-# endif
-#else
-# define _LIBCPP_HIDDEN
-# define _LIBCPP_FUNC_VIS
-# define _LIBCPP_TYPE_VIS
-#endif
-
-#define _LIBCPP_TYPE_VIS_ONLY
-#define _LIBCPP_FUNC_VIS_ONLY
-
-#ifndef _LIBCPP_INLINE_VISIBILITY
-# ifdef _LIBCPP_MSVC
-#  define _LIBCPP_INLINE_VISIBILITY __forceinline
-# else // MinGW GCC and Clang
-#  define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__))
-# endif
-#endif
-
-#ifndef _LIBCPP_EXCEPTION_ABI
-#define _LIBCPP_EXCEPTION_ABI _LIBCPP_TYPE_VIS
-#endif
-
-#ifndef _LIBCPP_ALWAYS_INLINE
-# ifdef _LIBCPP_MSVC
-#  define _LIBCPP_ALWAYS_INLINE __forceinline
-# endif
-#endif
-
-#endif // _WIN32
-
-#ifndef _LIBCPP_HIDDEN
-#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
-#endif
-
-#ifndef _LIBCPP_FUNC_VIS
-#define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default")))
-#endif
-
-#ifndef _LIBCPP_TYPE_VIS
-#  if __has_attribute(__type_visibility__)
-#    define _LIBCPP_TYPE_VIS __attribute__ ((__type_visibility__("default")))
-#  else
-#    define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
-#  endif
-#endif
-
-#ifndef _LIBCPP_PREFERRED_OVERLOAD
-#  if __has_attribute(__enable_if__)
-#    define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, "")))
-#  endif
-#endif
-
-#ifndef _LIBCPP_TYPE_VIS_ONLY
-# define _LIBCPP_TYPE_VIS_ONLY _LIBCPP_TYPE_VIS
-#endif
-
-#ifndef _LIBCPP_FUNC_VIS_ONLY
-# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS
-#endif
-
-#ifndef _LIBCPP_INLINE_VISIBILITY
-#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
-#endif
-
-#ifndef _LIBCPP_EXCEPTION_ABI
-#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
-#endif
-
-#ifndef _LIBCPP_ALWAYS_INLINE
-#define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__visibility__("hidden"), __always_inline__))
-#endif
-
 #if defined(__clang__)
 
 // _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
@@ -302,10 +248,6 @@
 #  define _ALIGNAS(x) __attribute__((__aligned__(x)))
 #endif
 
-#if !__has_feature(cxx_alias_templates)
-#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
-#endif
-
 #if __cplusplus < 201103L
 typedef __char16_t char16_t;
 typedef __char32_t char32_t;
@@ -333,14 +275,6 @@ typedef __char32_t char32_t;
 #  define _LIBCPP_NORETURN __attribute__ ((noreturn))
 #endif
 
-#if !(__has_feature(cxx_default_function_template_args))
-#define _LIBCPP_HAS_NO_DEFAULT_FUNCTION_TEMPLATE_ARGS
-#endif
-
-#if !(__has_feature(cxx_defaulted_functions))
-#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
-#endif  // !(__has_feature(cxx_defaulted_functions))
-
 #if !(__has_feature(cxx_deleted_functions))
 #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 #endif  // !(__has_feature(cxx_deleted_functions))
@@ -350,33 +284,25 @@ typedef __char32_t char32_t;
 #endif
 
 #if !(__has_feature(cxx_nullptr))
-#define _LIBCPP_HAS_NO_NULLPTR
+# if __has_extension(cxx_nullptr) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR)
+#   define nullptr __nullptr
+# else
+#   define _LIBCPP_HAS_NO_NULLPTR
+# endif
 #endif
 
 #if !(__has_feature(cxx_rvalue_references))
 #define _LIBCPP_HAS_NO_RVALUE_REFERENCES
 #endif
 
-#if !(__has_feature(cxx_static_assert))
-#define _LIBCPP_HAS_NO_STATIC_ASSERT
-#endif
-
 #if !(__has_feature(cxx_auto_type))
 #define _LIBCPP_HAS_NO_AUTO_TYPE
 #endif
 
-#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return)
-#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
-#endif
-
 #if !(__has_feature(cxx_variadic_templates))
 #define _LIBCPP_HAS_NO_VARIADICS
 #endif
 
-#if !(__has_feature(cxx_trailing_return))
-#define _LIBCPP_HAS_NO_TRAILING_RETURN
-#endif
-
 #if !(__has_feature(cxx_generalized_initializers))
 #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
 #endif
@@ -415,12 +341,12 @@ typedef __char32_t char32_t;
 #if defined(__FreeBSD__)
 #define _LIBCPP_HAS_QUICK_EXIT
 #define _LIBCPP_HAS_C11_FEATURES
-#elif defined(__ANDROID__)
+#elif defined(__Fuchsia__)
 #define _LIBCPP_HAS_QUICK_EXIT
+#define _LIBCPP_HAS_C11_FEATURES
 #elif defined(__linux__)
 #if !defined(_LIBCPP_HAS_MUSL_LIBC)
-# include <features.h>
-#if __GLIBC_PREREQ(2, 15)
+#if __GLIBC_PREREQ(2, 15) || defined(__BIONIC__)
 #define _LIBCPP_HAS_QUICK_EXIT
 #endif
 #if __GLIBC_PREREQ(2, 17)
@@ -504,34 +430,25 @@ namespace std {
 #endif
 
 #ifndef __GXX_EXPERIMENTAL_CXX0X__
-
-#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
 #define _LIBCPP_HAS_NO_DECLTYPE
-#define _LIBCPP_HAS_NO_DEFAULT_FUNCTION_TEMPLATE_ARGS
-#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 #define _LIBCPP_HAS_NO_NULLPTR
-#define _LIBCPP_HAS_NO_STATIC_ASSERT
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
 #define _LIBCPP_HAS_NO_VARIADICS
 #define _LIBCPP_HAS_NO_RVALUE_REFERENCES
 #define _LIBCPP_HAS_NO_STRONG_ENUMS
-#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
 #define _LIBCPP_HAS_NO_NOEXCEPT
 
 #else  // __GXX_EXPERIMENTAL_CXX0X__
 
 #if _GNUC_VER < 403
-#define _LIBCPP_HAS_NO_DEFAULT_FUNCTION_TEMPLATE_ARGS
 #define _LIBCPP_HAS_NO_RVALUE_REFERENCES
-#define _LIBCPP_HAS_NO_STATIC_ASSERT
 #endif
 
 
 #if _GNUC_VER < 404
 #define _LIBCPP_HAS_NO_DECLTYPE
 #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-#define _LIBCPP_HAS_NO_TRAILING_RETURN
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
 #define _LIBCPP_HAS_NO_VARIADICS
 #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
@@ -540,12 +457,6 @@ namespace std {
 #if _GNUC_VER < 406
 #define _LIBCPP_HAS_NO_NOEXCEPT
 #define _LIBCPP_HAS_NO_NULLPTR
-#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
-#endif
-
-#if _GNUC_VER < 407
-#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
-#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 #endif
 
 #endif  // __GXX_EXPERIMENTAL_CXX0X__
@@ -566,21 +477,19 @@ using namespace _LIBCPP_NAMESPACE __attr
 
 #elif defined(_LIBCPP_MSVC)
 
-#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
 #define _LIBCPP_HAS_NO_CONSTEXPR
 #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
 #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
+#if _MSC_VER <= 1800
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
+#endif
 #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
 #define _LIBCPP_HAS_NO_NOEXCEPT
 #define __alignof__ __alignof
 #define _LIBCPP_NORETURN __declspec(noreturn)
 #define _ALIGNAS(x) __declspec(align(x))
 #define _LIBCPP_HAS_NO_VARIADICS
 
-
-
 #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {
 #define _LIBCPP_END_NAMESPACE_STD  }
 #define _VSTD std
@@ -598,9 +507,6 @@ namespace std {
 #define _ATTRIBUTE(x) __attribute__((x))
 #define _LIBCPP_NORETURN __attribute__((noreturn))
 
-#define _LIBCPP_HAS_NO_DEFAULT_FUNCTION_TEMPLATE_ARGS
-#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
-#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
 #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
 #define _LIBCPP_HAS_NO_NOEXCEPT
 #define _LIBCPP_HAS_NO_NULLPTR
@@ -626,6 +532,149 @@ namespace std {
 
 #endif // __clang__ || __GNUC__ || _MSC_VER || __IBMCPP__
 
+#if defined(__ELF__)
+#define _LIBCPP_OBJECT_FORMAT_ELF   1
+#elif defined(__MACH__)
+#define _LIBCPP_OBJECT_FORMAT_MACHO 1
+#else
+#define _LIBCPP_OBJECT_FORMAT_COFF  1
+#endif
+
+#if defined(_LIBCPP_OBJECT_FORMAT_COFF)
+#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+# define _LIBCPP_DLL_VIS
+# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
+# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
+# define _LIBCPP_OVERRIDABLE_FUNC_VIS
+#elif defined(_LIBCPP_BUILDING_LIBRARY)
+# define _LIBCPP_DLL_VIS __declspec(dllexport)
+# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
+# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS
+# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS
+#else
+# define _LIBCPP_DLL_VIS __declspec(dllimport)
+# define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
+# define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
+# define _LIBCPP_OVERRIDABLE_FUNC_VIS
+#endif
+
+#define _LIBCPP_TYPE_VIS            _LIBCPP_DLL_VIS
+#define _LIBCPP_FUNC_VIS            _LIBCPP_DLL_VIS
+#define _LIBCPP_EXCEPTION_ABI       _LIBCPP_DLL_VIS
+#define _LIBCPP_HIDDEN
+#define _LIBCPP_TEMPLATE_VIS
+#define _LIBCPP_FUNC_VIS_ONLY
+#define _LIBCPP_ENUM_VIS
+
+#if defined(_LIBCPP_MSVC)
+# define _LIBCPP_INLINE_VISIBILITY __forceinline
+# define _LIBCPP_ALWAYS_INLINE     __forceinline
+# define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __forceinline
+#else
+# define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__))
+# define _LIBCPP_ALWAYS_INLINE     __attribute__ ((__always_inline__))
+# define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__ ((__always_inline__))
+#endif
+#endif // defined(_LIBCPP_OBJECT_FORMAT_COFF)
+
+#ifndef _LIBCPP_HIDDEN
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
+#else
+#define _LIBCPP_HIDDEN
+#endif
+#endif
+
+#ifndef _LIBCPP_FUNC_VIS
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default")))
+#else
+#define _LIBCPP_FUNC_VIS
+#endif
+#endif
+
+#ifndef _LIBCPP_TYPE_VIS
+#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#    if __has_attribute(__type_visibility__)
+#      define _LIBCPP_TYPE_VIS __attribute__ ((__type_visibility__("default")))
+#    else
+#      define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
+#    endif
+#  else
+#    define _LIBCPP_TYPE_VIS
+#  endif
+#endif
+
+#ifndef _LIBCPP_TEMPLATE_VIS
+# define _LIBCPP_TEMPLATE_VIS _LIBCPP_TYPE_VIS
+#endif
+
+#ifndef _LIBCPP_FUNC_VIS_ONLY
+# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS
+#endif
+
+#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
+# define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS
+#endif
+
+#ifndef _LIBCPP_EXCEPTION_ABI
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
+#else
+#define _LIBCPP_EXCEPTION_ABI
+#endif
+#endif
+
+#ifndef _LIBCPP_ENUM_VIS
+#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
+#    define _LIBCPP_ENUM_VIS __attribute__ ((__type_visibility__("default")))
+#  else
+#    define _LIBCPP_ENUM_VIS
+#  endif
+#endif
+
+#ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
+#  if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
+#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__type_visibility__("default")))
+#  else
+#    define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
+#  endif
+#endif
+
+#ifndef _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
+#  define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
+#endif
+
+#ifndef _LIBCPP_INLINE_VISIBILITY
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
+#else
+#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__))
+#endif
+#endif
+
+#ifndef _LIBCPP_ALWAYS_INLINE
+#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__visibility__("hidden"), __always_inline__))
+#else
+#define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__always_inline__))
+#endif
+#endif
+
+#ifndef _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY
+# if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
+#  define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__((__visibility__("default"), __always_inline__))
+# else
+#  define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__((__always_inline__))
+# endif
+#endif
+
+#ifndef _LIBCPP_PREFERRED_OVERLOAD
+#  if __has_attribute(__enable_if__)
+#    define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, "")))
+#  endif
+#endif
+
 #ifndef _LIBCPP_HAS_NO_NOEXCEPT
 #  define _NOEXCEPT noexcept
 #  define _NOEXCEPT_(x) noexcept(x)
@@ -634,6 +683,17 @@ namespace std {
 #  define _NOEXCEPT_(x)
 #endif
 
+#if defined(_LIBCPP_DEBUG_USE_EXCEPTIONS)
+# if !defined(_LIBCPP_DEBUG)
+#   error cannot use _LIBCPP_DEBUG_USE_EXCEPTIONS unless _LIBCPP_DEBUG is defined
+# endif
+# define _NOEXCEPT_DEBUG noexcept(false)
+# define _NOEXCEPT_DEBUG_(x) noexcept(false)
+#else
+# define _NOEXCEPT_DEBUG _NOEXCEPT
+# define _NOEXCEPT_DEBUG_(x) _NOEXCEPT_(x)
+#endif
+
 #ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
 typedef unsigned short char16_t;
 typedef unsigned int   char32_t;
@@ -643,8 +703,10 @@ typedef unsigned int   char32_t;
 #define _LIBCPP_HAS_NO_INT128
 #endif
 
-#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT
-
+#ifdef _LIBCPP_CXX03_LANG
+# if __has_extension(c_static_assert)
+#   define static_assert(__b, __m) _Static_assert(__b, __m)
+# else
 extern "C++" {
 template <bool> struct __static_assert_test;
 template <> struct __static_assert_test<true> {};
@@ -653,8 +715,8 @@ template <unsigned> struct __static_asse
 #define static_assert(__b, __m) \
     typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \
     _LIBCPP_CONCAT(__t, __LINE__)
-
-#endif  // _LIBCPP_HAS_NO_STATIC_ASSERT
+# endif // __has_extension(c_static_assert)
+#endif  // _LIBCPP_CXX03_LANG
 
 #ifdef _LIBCPP_HAS_NO_DECLTYPE
 // GCC 4.6 provides __decltype in all standard modes.
@@ -671,7 +733,7 @@ template <unsigned> struct __static_asse
 #define _LIBCPP_CONSTEXPR constexpr
 #endif
 
-#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
+#ifdef _LIBCPP_CXX03_LANG
 #define _LIBCPP_DEFAULT {}
 #else
 #define _LIBCPP_DEFAULT = default;
@@ -689,7 +751,8 @@ template <unsigned> struct __static_asse
 #define _NOALIAS
 #endif
 
-#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__)
+#if __has_extension(cxx_explicit_conversions) || defined(__IBMCPP__) || \
+    (!defined(_LIBCPP_CXX03_LANG) && defined(__GNUC__)) // All supported GCC versions
 #   define _LIBCPP_EXPLICIT explicit
 #else
 #   define _LIBCPP_EXPLICIT
@@ -708,7 +771,7 @@ template <unsigned> struct __static_asse
     _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \
     };
 #else  // _LIBCPP_HAS_NO_STRONG_ENUMS
-#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_TYPE_VIS x
+#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x
 #define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x)
 #endif  // _LIBCPP_HAS_NO_STRONG_ENUMS
 
@@ -735,14 +798,14 @@ template <unsigned> struct __static_asse
 #define _LIBCPP_NONUNIQUE_RTTI_BIT (1ULL << 63)
 #endif
 
-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_WIN32) || \
+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT) ||   \
     defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__)
 #define _LIBCPP_LOCALE__L_EXTENSIONS 1
 #endif
 
 #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 // Most unix variants have catopen.  These are the specific ones that don't.
-#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(_NEWLIB_VERSION)
+#if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION)
 #define _LIBCPP_HAS_CATOPEN 1
 #endif
 #endif
@@ -795,6 +858,11 @@ template <unsigned> struct __static_asse
 #define _LIBCPP_CONSTEXPR_AFTER_CXX14
 #endif
 
+// FIXME: Remove all usages of this macro once compilers catch up.
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606L)
+# define _LIBCPP_HAS_NO_INLINE_VARIABLES
+#endif
+
 #ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES
 #  define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x)
 #else
@@ -802,7 +870,7 @@ template <unsigned> struct __static_asse
 #endif
 
 #ifndef _LIBCPP_HAS_NO_ASAN
-extern "C" void __sanitizer_annotate_contiguous_container(
+_LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
   const void *, const void *, const void *, const void *);
 #endif
 
@@ -823,8 +891,11 @@ extern "C" void __sanitizer_annotate_con
 #endif
 
 // Thread API
-#if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
+#if !defined(_LIBCPP_HAS_NO_THREADS) && \
+    !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \
+    !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
 # if defined(__FreeBSD__) || \
+    defined(__Fuchsia__) || \
     defined(__NetBSD__) || \
     defined(__linux__) || \
     defined(__APPLE__) || \
@@ -841,6 +912,11 @@ extern "C" void __sanitizer_annotate_con
          _LIBCPP_HAS_NO_THREADS is not defined.
 #endif
 
+#if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
+#  error _LIBCPP_HAS_EXTERNAL_THREAD_API may not be defined when \
+         _LIBCPP_HAS_NO_THREADS is defined.
+#endif
+
 #if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS)
 #  error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \
          _LIBCPP_HAS_NO_THREADS is defined.
@@ -861,11 +937,12 @@ extern "C" void __sanitizer_annotate_con
 #define _LIBCPP_HAS_NO_STDOUT
 #endif
 
-#if defined(__ANDROID__) || defined(__CloudABI__) || defined(_LIBCPP_HAS_MUSL_LIBC)
+#if defined(__BIONIC__) || defined(__CloudABI__) ||                            \
+    defined(_LIBCPP_HAS_MUSL_LIBC)
 #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
 #endif
 
-// Thread-unsafe functions such as strtok(), mbtowc() and localtime()
+// Thread-unsafe functions such as strtok() and localtime()
 // are not available.
 #ifdef __CloudABI__
 #define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
@@ -886,17 +963,25 @@ extern "C" void __sanitizer_annotate_con
 #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK
 #endif
 
-#if __cplusplus < 201103L
-#define _LIBCPP_CXX03_LANG
+#if (defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) && defined(__clang__) \
+      && __has_attribute(acquire_capability))
+#define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
+#endif
+
+#if __has_attribute(require_constant_initialization)
+#define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__))
 #else
-#if defined(_LIBCPP_HAS_NO_VARIADIC_TEMPLATES) || defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
-#error Libc++ requires a feature complete C++11 compiler in C++11 or greater.
+#define _LIBCPP_SAFE_STATIC
 #endif
+
+#if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700
+#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
 #endif
 
-#if (defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) && defined(__clang__) \
-      && __has_attribute(acquire_capability))
-#define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS
+#if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS)
+#if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION)
+#define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS
+#endif
 #endif
 
 #endif // __cplusplus

Modified: projects/clang400-import/contrib/libc++/include/__debug
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__debug	Sun Jan  8 18:46:00 2017	(r311695)
+++ projects/clang400-import/contrib/libc++/include/__debug	Sun Jan  8 19:39:03 2017	(r311696)
@@ -17,23 +17,103 @@
 #pragma GCC system_header
 #endif
 
-#if _LIBCPP_DEBUG_LEVEL >= 1
+#if defined(_LIBCPP_HAS_NO_NULLPTR)
+# include <cstddef>
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY)
 #   include <cstdlib>
 #   include <cstdio>
 #   include <cstddef>
-#   ifndef _LIBCPP_ASSERT
-#      define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : (_VSTD::fprintf(stderr, "%s\n", m), _VSTD::abort()))
-#   endif
+#   include <exception>
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 1 && !defined(_LIBCPP_ASSERT)
+# define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : \
+  _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m)))
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 2
+#ifndef _LIBCPP_DEBUG_ASSERT
+#define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(x, m)
+#endif
+#define _LIBCPP_DEBUG_MODE(...) __VA_ARGS__
 #endif
 
 #ifndef _LIBCPP_ASSERT
 #   define _LIBCPP_ASSERT(x, m) ((void)0)
 #endif
+#ifndef _LIBCPP_DEBUG_ASSERT
+#   define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0)
+#endif
+#ifndef _LIBCPP_DEBUG_MODE
+#define _LIBCPP_DEBUG_MODE(...) ((void)0)
+#endif
 
-#if _LIBCPP_DEBUG_LEVEL >= 2
+#if _LIBCPP_DEBUG_LEVEL < 1
+class _LIBCPP_EXCEPTION_ABI __libcpp_debug_exception;
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
+struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info {
+  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+  __libcpp_debug_info()
+      : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {}
+  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR
+  __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m)
+    : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {}
+  const char* __file_;
+  int __line_;
+  const char* __pred_;
+  const char* __msg_;
+};
+
+/// __libcpp_debug_function_type - The type of the assertion failure handler.
+typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&);
+
+/// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT
+///    fails.
+extern __libcpp_debug_function_type __libcpp_debug_function;
+
+/// __libcpp_abort_debug_function - A debug handler that aborts when called.
+_LIBCPP_NORETURN _LIBCPP_FUNC_VIS
+void __libcpp_abort_debug_function(__libcpp_debug_info const&);
+
+/// __libcpp_throw_debug_function - A debug handler that throws
+///   an instance of __libcpp_debug_exception when called.
+ _LIBCPP_NORETURN _LIBCPP_FUNC_VIS
+void __libcpp_throw_debug_function(__libcpp_debug_info const&);
+
+/// __libcpp_set_debug_function - Set the debug handler to the specified
+///    function.
+_LIBCPP_FUNC_VIS
+bool __libcpp_set_debug_function(__libcpp_debug_function_type __func);
+
+// Setup the throwing debug handler during dynamic initialization.
+#if _LIBCPP_DEBUG_LEVEL >= 1 && defined(_LIBCPP_DEBUG_USE_EXCEPTIONS)
+# if defined(_LIBCPP_NO_EXCEPTIONS)
+#   error _LIBCPP_DEBUG_USE_EXCEPTIONS cannot be used when exceptions are disabled.
+# endif
+static bool __init_dummy = __libcpp_set_debug_function(__libcpp_throw_debug_function);
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY)
+class _LIBCPP_EXCEPTION_ABI __libcpp_debug_exception : public exception {
+public:
+  __libcpp_debug_exception() _NOEXCEPT;
+  explicit __libcpp_debug_exception(__libcpp_debug_info const& __i);
+  __libcpp_debug_exception(__libcpp_debug_exception const&);
+  ~__libcpp_debug_exception() _NOEXCEPT;
+  const char* what() const _NOEXCEPT;
+private:
+  struct __libcpp_debug_exception_imp;
+  __libcpp_debug_exception_imp *__imp_;
+};
+#endif
+
+#if _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY)
+
 struct _LIBCPP_TYPE_VIS __c_node;
 
 struct _LIBCPP_TYPE_VIS __i_node
@@ -102,7 +182,7 @@ struct _C_node
 };
 
 template <class _Cont>
-bool
+inline bool
 _C_node<_Cont>::__dereferenceable(const void* __i) const
 {
     typedef typename _Cont::const_iterator iterator;
@@ -112,7 +192,7 @@ _C_node<_Cont>::__dereferenceable(const 
 }
 
 template <class _Cont>
-bool
+inline bool
 _C_node<_Cont>::__decrementable(const void* __i) const
 {
     typedef typename _Cont::const_iterator iterator;
@@ -122,7 +202,7 @@ _C_node<_Cont>::__decrementable(const vo
 }
 
 template <class _Cont>
-bool
+inline bool
 _C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const
 {
     typedef typename _Cont::const_iterator iterator;
@@ -132,7 +212,7 @@ _C_node<_Cont>::__addable(const void* __
 }
 
 template <class _Cont>
-bool
+inline bool
 _C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const
 {
     typedef typename _Cont::const_iterator iterator;
@@ -214,9 +294,9 @@ _LIBCPP_FUNC_VIS __libcpp_db* __get_db()
 _LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db();
 
 
-_LIBCPP_END_NAMESPACE_STD
+#endif // _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY)
 
-#endif
+_LIBCPP_END_NAMESPACE_STD
 
 #endif  // _LIBCPP_DEBUG_H
 

Modified: projects/clang400-import/contrib/libc++/include/__functional_03
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__functional_03	Sun Jan  8 18:46:00 2017	(r311695)
+++ projects/clang400-import/contrib/libc++/include/__functional_03	Sun Jan  8 19:39:03 2017	(r311696)
@@ -445,7 +445,7 @@ __func<_Fp, _Alloc, _Rp(_A0, _A1, _A2)>:
 }  // __function
 
 template<class _Rp>

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

From owner-svn-src-projects@freebsd.org  Sun Jan  8 19:47:19 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 9CC1BCA5BBC
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 19:47:19 +0000 (UTC) (envelope-from dim@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 2B8301E78;
 Sun,  8 Jan 2017 19:47:19 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08JlIq7046894;
 Sun, 8 Jan 2017 19:47:18 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08JlH08046885;
 Sun, 8 Jan 2017 19:47:17 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081947.v08JlH08046885@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 19:47:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311697 - in
 projects/clang400-import/contrib/compiler-rt: include/sanitizer include/xray
 lib/asan lib/builtins lib/builtins/arm lib/cfi lib/dfsan lib/esan
 lib/interception lib/lsan lib...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 19:47:19 -0000

Author: dim
Date: Sun Jan  8 19:47:17 2017
New Revision: 311697
URL: https://svnweb.freebsd.org/changeset/base/311697

Log:
  Merge compiler-rt r291274.

Added:
  projects/clang400-import/contrib/compiler-rt/include/xray/
     - copied from r311696, vendor/compiler-rt/dist/include/xray/
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_descriptions.cc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_descriptions.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_descriptions.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_descriptions.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_errors.cc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_errors.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_errors.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_errors.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_globals_win.cc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_globals_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_globals_win.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/asan/asan_globals_win.h
  projects/clang400-import/contrib/compiler-rt/lib/builtins/floattitf.c
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/builtins/floattitf.c
  projects/clang400-import/contrib/compiler-rt/lib/builtins/floatuntitf.c
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/builtins/floatuntitf.c
  projects/clang400-import/contrib/compiler-rt/lib/builtins/mingw_fixfloat.c
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/builtins/mingw_fixfloat.c
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_hashtable.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/esan/esan_hashtable.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sancov_flags.cc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sancov_flags.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sancov_flags.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sancov_flags.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sancov_flags.inc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sancov_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_bytemap.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_bytemap.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_combined.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_local_cache.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_primary32.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary64.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_primary64.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_secondary.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_size_class_map.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_size_class_map.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_stats.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_stats.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_dbghelp.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_dbghelp.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_mips64.S
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux_mips64.S
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/symbolizer/
     - copied from r311696, vendor/compiler-rt/dist/lib/sanitizer_common/symbolizer/
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator_secondary.h
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/scudo/scudo_allocator_secondary.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_mips64.S
     - copied unchanged from r311696, vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_mips64.S
  projects/clang400-import/contrib/compiler-rt/lib/xray/
     - copied from r311696, vendor/compiler-rt/dist/lib/xray/
Modified:
  projects/clang400-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h
  projects/clang400-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_debugging.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_fake_stack.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_fake_stack.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_globals.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_malloc_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_malloc_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_mapping.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_memory_profile.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_poisoning.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_poisoning.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_posix.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_rtl.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_scariness_score.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_thread.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_thread.h
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_win_dynamic_runtime_thunk.cc
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_idivmod.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_ldivmod.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_uidivmod.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_uldivmod.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divsi3.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/udivsi3.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/assembly.h
  projects/clang400-import/contrib/compiler-rt/lib/builtins/atomic.c
  projects/clang400-import/contrib/compiler-rt/lib/builtins/clear_cache.c
  projects/clang400-import/contrib/compiler-rt/lib/builtins/int_lib.h
  projects/clang400-import/contrib/compiler-rt/lib/cfi/cfi.cc
  projects/clang400-import/contrib/compiler-rt/lib/dfsan/dfsan.cc
  projects/clang400-import/contrib/compiler-rt/lib/dfsan/dfsan.h
  projects/clang400-import/contrib/compiler-rt/lib/dfsan/dfsan_interceptors.cc
  projects/clang400-import/contrib/compiler-rt/lib/dfsan/dfsan_platform.h
  projects/clang400-import/contrib/compiler-rt/lib/dfsan/done_abilist.txt
  projects/clang400-import/contrib/compiler-rt/lib/esan/cache_frag.cpp
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan.cpp
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan.h
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_flags.cpp
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_interceptors.cpp
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_interface_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_linux.cpp
  projects/clang400-import/contrib/compiler-rt/lib/esan/esan_shadow.h
  projects/clang400-import/contrib/compiler-rt/lib/interception/interception.h
  projects/clang400-import/contrib/compiler-rt/lib/interception/interception_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common.cc
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc
  projects/clang400-import/contrib/compiler-rt/lib/msan/msan.h
  projects/clang400-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
  projects/clang400-import/contrib/compiler-rt/lib/msan/msan_interface_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/msan/msan_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfData.inc
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfiling.c
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfiling.h
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingPort.h
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingRuntime.cc
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingUtil.c
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingUtil.h
  projects/clang400-import/contrib/compiler-rt/lib/profile/InstrProfilingValue.c
  projects/clang400-import/contrib/compiler-rt/lib/profile/WindowsMMap.c
  projects/clang400-import/contrib/compiler-rt/lib/safestack/safestack.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_addrhashmap.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_interface.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_nolibc.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interface_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libc.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_malloc_mac.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_freebsd.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stackdepot.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_thread_registry.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_flags.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_flags.h
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_interceptors.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_new_delete.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_termination.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_utils.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_utils.h
  projects/clang400-import/contrib/compiler-rt/lib/stats/stats_client.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/go/tsan_go.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_clock.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_debugging.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_defs.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_flags.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_inl.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_java.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_java.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mutexset.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_posix.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_windows.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_aarch64.S
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_proc.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_suppressions.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_trace.h
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.h
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_init.cc
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc
Directory Properties:
  projects/clang400-import/contrib/compiler-rt/   (props changed)

Modified: projects/clang400-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/include/sanitizer/common_interface_defs.h	Sun Jan  8 19:47:17 2017	(r311697)
@@ -117,6 +117,16 @@ extern "C" {
   // Print the stack trace leading to this call. Useful for debugging user code.
   void __sanitizer_print_stack_trace();
 
+  // Symbolizes the supplied 'pc' using the format string 'fmt'.
+  // Outputs at most 'out_buf_size' bytes into 'out_buf'.
+  // The format syntax is described in
+  // lib/sanitizer_common/sanitizer_stacktrace_printer.h.
+  void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
+                                size_t out_buf_size);
+  // Same as __sanitizer_symbolize_pc, but for data section (i.e. globals).
+  void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
+                                    char *out_buf, size_t out_buf_size);
+
   // Sets the callback to be called right before death on error.
   // Passing 0 will unset the callback.
   void __sanitizer_set_death_callback(void (*callback)(void));
@@ -169,7 +179,16 @@ extern "C" {
   // use-after-return detection.
   void __sanitizer_start_switch_fiber(void **fake_stack_save,
                                       const void *bottom, size_t size);
-  void __sanitizer_finish_switch_fiber(void *fake_stack_save);
+  void __sanitizer_finish_switch_fiber(void *fake_stack_save,
+                                       const void **bottom_old,
+                                       size_t *size_old);
+
+  // Get full module name and calculate pc offset within it.
+  // Returns 1 if pc belongs to some module, 0 if module was not found.
+  int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
+                                               size_t module_path_len,
+                                               void **pc_offset);
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif

Modified: projects/clang400-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/include/sanitizer/coverage_interface.h	Sun Jan  8 19:47:17 2017	(r311697)
@@ -23,6 +23,11 @@ extern "C" {
   void __sanitizer_cov_init();
   // Record and dump coverage info.
   void __sanitizer_cov_dump();
+
+  //  Dump collected coverage info. Sorts pcs by module into individual
+  //  .sancov files.
+  void __sanitizer_dump_coverage(const uintptr_t *pcs, uintptr_t len);
+
   // Open <name>.sancov.packed in the coverage directory and return the file
   // descriptor. Returns -1 on failure, or if coverage dumping is disabled.
   // This is intended for use by sandboxing code.
@@ -41,13 +46,6 @@ extern "C" {
   // Some of the entries in *data will be zero.
   uintptr_t __sanitizer_get_coverage_guards(uintptr_t **data);
 
-  // Set *data to the growing buffer with covered PCs and return the size
-  // of the buffer. The entries are never zero.
-  // When only unique pcs are collected, the size is equal to
-  // __sanitizer_get_total_unique_coverage.
-  // WARNING: EXPERIMENTAL API.
-  uintptr_t __sanitizer_get_coverage_pc_buffer(uintptr_t **data);
-
   // The coverage instrumentation may optionally provide imprecise counters.
   // Rather than exposing the counter values to the user we instead map
   // the counters to a bitset.
@@ -65,6 +63,7 @@ extern "C" {
   // __sanitizer_get_number_of_counters bytes long and 8-aligned.
   uintptr_t
   __sanitizer_update_counter_bitset_and_clear_counters(uint8_t *bitset);
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc	Sun Jan  8 19:47:17 2017	(r311697)
@@ -79,11 +79,13 @@ static struct AsanDeactivatedFlags {
     Report(
         "quarantine_size_mb %d, max_redzone %d, poison_heap %d, "
         "malloc_context_size %d, alloc_dealloc_mismatch %d, "
-        "allocator_may_return_null %d, coverage %d, coverage_dir %s\n",
+        "allocator_may_return_null %d, coverage %d, coverage_dir %s, "
+        "allocator_release_to_os_interval_ms %d\n",
         allocator_options.quarantine_size_mb, allocator_options.max_redzone,
         poison_heap, malloc_context_size,
         allocator_options.alloc_dealloc_mismatch,
-        allocator_options.may_return_null, coverage, coverage_dir);
+        allocator_options.may_return_null, coverage, coverage_dir,
+        allocator_options.release_to_os_interval_ms);
   }
 } asan_deactivated_flags;
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc	Sun Jan  8 19:47:17 2017	(r311697)
@@ -33,3 +33,4 @@ COMMON_ACTIVATION_FLAG(bool, coverage)
 COMMON_ACTIVATION_FLAG(const char *, coverage_dir)
 COMMON_ACTIVATION_FLAG(int, verbosity)
 COMMON_ACTIVATION_FLAG(bool, help)
+COMMON_ACTIVATION_FLAG(s32, allocator_release_to_os_interval_ms)

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sun Jan  8 19:47:17 2017	(r311697)
@@ -207,25 +207,27 @@ QuarantineCache *GetQuarantineCache(Asan
 
 void AllocatorOptions::SetFrom(const Flags *f, const CommonFlags *cf) {
   quarantine_size_mb = f->quarantine_size_mb;
+  thread_local_quarantine_size_kb = f->thread_local_quarantine_size_kb;
   min_redzone = f->redzone;
   max_redzone = f->max_redzone;
   may_return_null = cf->allocator_may_return_null;
   alloc_dealloc_mismatch = f->alloc_dealloc_mismatch;
+  release_to_os_interval_ms = cf->allocator_release_to_os_interval_ms;
 }
 
 void AllocatorOptions::CopyTo(Flags *f, CommonFlags *cf) {
   f->quarantine_size_mb = quarantine_size_mb;
+  f->thread_local_quarantine_size_kb = thread_local_quarantine_size_kb;
   f->redzone = min_redzone;
   f->max_redzone = max_redzone;
   cf->allocator_may_return_null = may_return_null;
   f->alloc_dealloc_mismatch = alloc_dealloc_mismatch;
+  cf->allocator_release_to_os_interval_ms = release_to_os_interval_ms;
 }
 
 struct Allocator {
   static const uptr kMaxAllowedMallocSize =
       FIRST_32_SECOND_64(3UL << 30, 1ULL << 40);
-  static const uptr kMaxThreadLocalQuarantine =
-      FIRST_32_SECOND_64(1 << 18, 1 << 20);
 
   AsanAllocator allocator;
   AsanQuarantine quarantine;
@@ -254,7 +256,7 @@ struct Allocator {
   void SharedInitCode(const AllocatorOptions &options) {
     CheckOptions(options);
     quarantine.Init((uptr)options.quarantine_size_mb << 20,
-                    kMaxThreadLocalQuarantine);
+                    (uptr)options.thread_local_quarantine_size_kb << 10);
     atomic_store(&alloc_dealloc_mismatch, options.alloc_dealloc_mismatch,
                  memory_order_release);
     atomic_store(&min_redzone, options.min_redzone, memory_order_release);
@@ -262,22 +264,59 @@ struct Allocator {
   }
 
   void Initialize(const AllocatorOptions &options) {
-    allocator.Init(options.may_return_null);
+    allocator.Init(options.may_return_null, options.release_to_os_interval_ms);
     SharedInitCode(options);
   }
 
+  void RePoisonChunk(uptr chunk) {
+    // This could a user-facing chunk (with redzones), or some internal
+    // housekeeping chunk, like TransferBatch. Start by assuming the former.
+    AsanChunk *ac = GetAsanChunk((void *)chunk);
+    uptr allocated_size = allocator.GetActuallyAllocatedSize((void *)ac);
+    uptr beg = ac->Beg();
+    uptr end = ac->Beg() + ac->UsedSize(true);
+    uptr chunk_end = chunk + allocated_size;
+    if (chunk < beg && beg < end && end <= chunk_end) {
+      // Looks like a valid AsanChunk. Or maybe not. Be conservative and only
+      // poison the redzones.
+      PoisonShadow(chunk, beg - chunk, kAsanHeapLeftRedzoneMagic);
+      uptr end_aligned_down = RoundDownTo(end, SHADOW_GRANULARITY);
+      FastPoisonShadowPartialRightRedzone(
+          end_aligned_down, end - end_aligned_down,
+          chunk_end - end_aligned_down, kAsanHeapLeftRedzoneMagic);
+    } else {
+      // This can not be an AsanChunk. Poison everything. It may be reused as
+      // AsanChunk later.
+      PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
+    }
+  }
+
   void ReInitialize(const AllocatorOptions &options) {
     allocator.SetMayReturnNull(options.may_return_null);
+    allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms);
     SharedInitCode(options);
+
+    // Poison all existing allocation's redzones.
+    if (CanPoisonMemory()) {
+      allocator.ForceLock();
+      allocator.ForEachChunk(
+          [](uptr chunk, void *alloc) {
+            ((Allocator *)alloc)->RePoisonChunk(chunk);
+          },
+          this);
+      allocator.ForceUnlock();
+    }
   }
 
   void GetOptions(AllocatorOptions *options) const {
     options->quarantine_size_mb = quarantine.GetSize() >> 20;
+    options->thread_local_quarantine_size_kb = quarantine.GetCacheSize() >> 10;
     options->min_redzone = atomic_load(&min_redzone, memory_order_acquire);
     options->max_redzone = atomic_load(&max_redzone, memory_order_acquire);
     options->may_return_null = allocator.MayReturnNull();
     options->alloc_dealloc_mismatch =
         atomic_load(&alloc_dealloc_mismatch, memory_order_acquire);
+    options->release_to_os_interval_ms = allocator.ReleaseToOSIntervalMs();
   }
 
   // -------------------- Helper methods. -------------------------
@@ -356,7 +395,7 @@ struct Allocator {
     if (size > kMaxAllowedMallocSize || needed_size > kMaxAllowedMallocSize) {
       Report("WARNING: AddressSanitizer failed to allocate 0x%zx bytes\n",
              (void*)size);
-      return allocator.ReturnNullOrDie();
+      return allocator.ReturnNullOrDieOnBadRequest();
     }
 
     AsanThread *t = GetCurrentThread();
@@ -373,8 +412,7 @@ struct Allocator {
           allocator.Allocate(cache, needed_size, 8, false, check_rss_limit);
     }
 
-    if (!allocated)
-      return allocator.ReturnNullOrDie();
+    if (!allocated) return allocator.ReturnNullOrDieOnOOM();
 
     if (*(u8 *)MEM_TO_SHADOW((uptr)allocated) == 0 && CanPoisonMemory()) {
       // Heap poisoning is enabled, but the allocator provides an unpoisoned
@@ -530,7 +568,7 @@ struct Allocator {
 
     if (delete_size && flags()->new_delete_type_mismatch &&
         delete_size != m->UsedSize()) {
-      ReportNewDeleteSizeMismatch(p, m->UsedSize(), delete_size, stack);
+      ReportNewDeleteSizeMismatch(p, delete_size, stack);
     }
 
     QuarantineChunk(m, ptr, stack, alloc_type);
@@ -563,7 +601,7 @@ struct Allocator {
 
   void *Calloc(uptr nmemb, uptr size, BufferedStackTrace *stack) {
     if (CallocShouldReturnNullDueToOverflow(size, nmemb))
-      return allocator.ReturnNullOrDie();
+      return allocator.ReturnNullOrDieOnBadRequest();
     void *ptr = Allocate(nmemb * size, 8, stack, FROM_MALLOC, false);
     // If the memory comes from the secondary allocator no need to clear it
     // as it comes directly from mmap.
@@ -643,6 +681,7 @@ struct Allocator {
 
   void PrintStats() {
     allocator.PrintStats();
+    quarantine.PrintStats();
   }
 
   void ForceLock() {
@@ -662,17 +701,23 @@ static AsanAllocator &get_allocator() {
   return instance.allocator;
 }
 
-bool AsanChunkView::IsValid() {
+bool AsanChunkView::IsValid() const {
   return chunk_ && chunk_->chunk_state != CHUNK_AVAILABLE;
 }
-bool AsanChunkView::IsAllocated() {
+bool AsanChunkView::IsAllocated() const {
   return chunk_ && chunk_->chunk_state == CHUNK_ALLOCATED;
 }
-uptr AsanChunkView::Beg() { return chunk_->Beg(); }
-uptr AsanChunkView::End() { return Beg() + UsedSize(); }
-uptr AsanChunkView::UsedSize() { return chunk_->UsedSize(); }
-uptr AsanChunkView::AllocTid() { return chunk_->alloc_tid; }
-uptr AsanChunkView::FreeTid() { return chunk_->free_tid; }
+bool AsanChunkView::IsQuarantined() const {
+  return chunk_ && chunk_->chunk_state == CHUNK_QUARANTINE;
+}
+uptr AsanChunkView::Beg() const { return chunk_->Beg(); }
+uptr AsanChunkView::End() const { return Beg() + UsedSize(); }
+uptr AsanChunkView::UsedSize() const { return chunk_->UsedSize(); }
+uptr AsanChunkView::AllocTid() const { return chunk_->alloc_tid; }
+uptr AsanChunkView::FreeTid() const { return chunk_->free_tid; }
+AllocType AsanChunkView::GetAllocType() const {
+  return (AllocType)chunk_->alloc_type;
+}
 
 static StackTrace GetStackTraceFromId(u32 id) {
   CHECK(id);
@@ -681,14 +726,14 @@ static StackTrace GetStackTraceFromId(u3
   return res;
 }
 
-u32 AsanChunkView::GetAllocStackId() { return chunk_->alloc_context_id; }
-u32 AsanChunkView::GetFreeStackId() { return chunk_->free_context_id; }
+u32 AsanChunkView::GetAllocStackId() const { return chunk_->alloc_context_id; }
+u32 AsanChunkView::GetFreeStackId() const { return chunk_->free_context_id; }
 
-StackTrace AsanChunkView::GetAllocStack() {
+StackTrace AsanChunkView::GetAllocStack() const {
   return GetStackTraceFromId(GetAllocStackId());
 }
 
-StackTrace AsanChunkView::GetFreeStack() {
+StackTrace AsanChunkView::GetFreeStack() const {
   return GetStackTraceFromId(GetFreeStackId());
 }
 
@@ -707,6 +752,9 @@ void GetAllocatorOptions(AllocatorOption
 AsanChunkView FindHeapChunkByAddress(uptr addr) {
   return instance.FindHeapChunkByAddress(addr);
 }
+AsanChunkView FindHeapChunkByAllocBeg(uptr addr) {
+  return AsanChunkView(instance.GetAsanChunk(reinterpret_cast<void*>(addr)));
+}
 
 void AsanThreadLocalMallocStorage::CommitBack() {
   instance.CommitBack(this);

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.h	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.h	Sun Jan  8 19:47:17 2017	(r311697)
@@ -33,10 +33,12 @@ struct AsanChunk;
 
 struct AllocatorOptions {
   u32 quarantine_size_mb;
+  u32 thread_local_quarantine_size_kb;
   u16 min_redzone;
   u16 max_redzone;
   u8 may_return_null;
   u8 alloc_dealloc_mismatch;
+  s32 release_to_os_interval_ms;
 
   void SetFrom(const Flags *f, const CommonFlags *cf);
   void CopyTo(Flags *f, CommonFlags *cf);
@@ -49,27 +51,29 @@ void GetAllocatorOptions(AllocatorOption
 class AsanChunkView {
  public:
   explicit AsanChunkView(AsanChunk *chunk) : chunk_(chunk) {}
-  bool IsValid();        // Checks if AsanChunkView points to a valid allocated
-                         // or quarantined chunk.
-  bool IsAllocated();    // Checks if the memory is currently allocated.
-  uptr Beg();            // First byte of user memory.
-  uptr End();            // Last byte of user memory.
-  uptr UsedSize();       // Size requested by the user.
-  uptr AllocTid();
-  uptr FreeTid();
+  bool IsValid() const;        // Checks if AsanChunkView points to a valid
+                               // allocated or quarantined chunk.
+  bool IsAllocated() const;    // Checks if the memory is currently allocated.
+  bool IsQuarantined() const;  // Checks if the memory is currently quarantined.
+  uptr Beg() const;            // First byte of user memory.
+  uptr End() const;            // Last byte of user memory.
+  uptr UsedSize() const;       // Size requested by the user.
+  uptr AllocTid() const;
+  uptr FreeTid() const;
   bool Eq(const AsanChunkView &c) const { return chunk_ == c.chunk_; }
-  u32 GetAllocStackId();
-  u32 GetFreeStackId();
-  StackTrace GetAllocStack();
-  StackTrace GetFreeStack();
-  bool AddrIsInside(uptr addr, uptr access_size, sptr *offset) {
+  u32 GetAllocStackId() const;
+  u32 GetFreeStackId() const;
+  StackTrace GetAllocStack() const;
+  StackTrace GetFreeStack() const;
+  AllocType GetAllocType() const;
+  bool AddrIsInside(uptr addr, uptr access_size, sptr *offset) const {
     if (addr >= Beg() && (addr + access_size) <= End()) {
       *offset = addr - Beg();
       return true;
     }
     return false;
   }
-  bool AddrIsAtLeft(uptr addr, uptr access_size, sptr *offset) {
+  bool AddrIsAtLeft(uptr addr, uptr access_size, sptr *offset) const {
     (void)access_size;
     if (addr < Beg()) {
       *offset = Beg() - addr;
@@ -77,7 +81,7 @@ class AsanChunkView {
     }
     return false;
   }
-  bool AddrIsAtRight(uptr addr, uptr access_size, sptr *offset) {
+  bool AddrIsAtRight(uptr addr, uptr access_size, sptr *offset) const {
     if (addr + access_size > End()) {
       *offset = addr - End();
       return true;
@@ -90,6 +94,7 @@ class AsanChunkView {
 };
 
 AsanChunkView FindHeapChunkByAddress(uptr address);
+AsanChunkView FindHeapChunkByAllocBeg(uptr address);
 
 // List of AsanChunks with total size.
 class AsanChunkFifoList: public IntrusiveList<AsanChunk> {
@@ -117,18 +122,36 @@ struct AsanMapUnmapCallback {
 # if defined(__powerpc64__)
 const uptr kAllocatorSpace =  0xa0000000000ULL;
 const uptr kAllocatorSize  =  0x20000000000ULL;  // 2T.
+typedef DefaultSizeClassMap SizeClassMap;
+# elif defined(__aarch64__) && SANITIZER_ANDROID
+const uptr kAllocatorSpace =  0x3000000000ULL;
+const uptr kAllocatorSize  =  0x2000000000ULL;  // 128G.
+typedef VeryCompactSizeClassMap SizeClassMap;
 # elif defined(__aarch64__)
-// AArch64/SANITIZIER_CAN_USER_ALLOCATOR64 is only for 42-bit VMA
+// AArch64/SANITIZER_CAN_USER_ALLOCATOR64 is only for 42-bit VMA
 // so no need to different values for different VMA.
 const uptr kAllocatorSpace =  0x10000000000ULL;
 const uptr kAllocatorSize  =  0x10000000000ULL;  // 3T.
+typedef DefaultSizeClassMap SizeClassMap;
+# elif SANITIZER_WINDOWS
+const uptr kAllocatorSpace = ~(uptr)0;
+const uptr kAllocatorSize  =  0x8000000000ULL;  // 500G
+typedef DefaultSizeClassMap SizeClassMap;
 # else
 const uptr kAllocatorSpace = 0x600000000000ULL;
 const uptr kAllocatorSize  =  0x40000000000ULL;  // 4T.
-# endif
 typedef DefaultSizeClassMap SizeClassMap;
-typedef SizeClassAllocator64<kAllocatorSpace, kAllocatorSize, 0 /*metadata*/,
-    SizeClassMap, AsanMapUnmapCallback> PrimaryAllocator;
+# endif
+struct AP64 {  // Allocator64 parameters. Deliberately using a short name.
+  static const uptr kSpaceBeg = kAllocatorSpace;
+  static const uptr kSpaceSize = kAllocatorSize;
+  static const uptr kMetadataSize = 0;
+  typedef __asan::SizeClassMap SizeClassMap;
+  typedef AsanMapUnmapCallback MapUnmapCallback;
+  static const uptr kFlags = 0;
+};
+
+typedef SizeClassAllocator64<AP64> PrimaryAllocator;
 #else  // Fallback to SizeClassAllocator32.
 static const uptr kRegionSizeLog = 20;
 static const uptr kNumRegions = SANITIZER_MMAP_RANGE_SIZE >> kRegionSizeLog;

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_debugging.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_debugging.cc	Sun Jan  8 19:39:03 2017	(r311696)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_debugging.cc	Sun Jan  8 19:47:17 2017	(r311697)
@@ -14,74 +14,39 @@
 //===----------------------------------------------------------------------===//
 
 #include "asan_allocator.h"
+#include "asan_descriptions.h"
 #include "asan_flags.h"
 #include "asan_internal.h"
 #include "asan_mapping.h"
 #include "asan_report.h"
 #include "asan_thread.h"
 
-namespace __asan {
-
-void GetInfoForStackVar(uptr addr, AddressDescription *descr, AsanThread *t) {
-  descr->name[0] = 0;
-  descr->region_address = 0;
-  descr->region_size = 0;
-  descr->region_kind = "stack";
+namespace {
+using namespace __asan;
 
-  AsanThread::StackFrameAccess access;
-  if (!t->GetStackFrameAccessByAddr(addr, &access))
-    return;
+static void FindInfoForStackVar(uptr addr, const char *frame_descr, uptr offset,
+                                char *name, uptr name_size,
+                                uptr &region_address, uptr &region_size) {
   InternalMmapVector<StackVarDescr> vars(16);
-  if (!ParseFrameDescription(access.frame_descr, &vars)) {
+  if (!ParseFrameDescription(frame_descr, &vars)) {
     return;
   }
 
   for (uptr i = 0; i < vars.size(); i++) {
-    if (access.offset <= vars[i].beg + vars[i].size) {
-      internal_strncat(descr->name, vars[i].name_pos,
-                       Min(descr->name_size, vars[i].name_len));
-      descr->region_address = addr - (access.offset - vars[i].beg);
-      descr->region_size = vars[i].size;
+    if (offset <= vars[i].beg + vars[i].size) {
+      // We use name_len + 1 because strlcpy will guarantee a \0 at the end, so
+      // if we're limiting the copy due to name_len, we add 1 to ensure we copy
+      // the whole name and then terminate with '\0'.
+      internal_strlcpy(name, vars[i].name_pos,
+                       Min(name_size, vars[i].name_len + 1));
+      region_address = addr - (offset - vars[i].beg);
+      region_size = vars[i].size;
       return;
     }
   }
 }
 
-void GetInfoForHeapAddress(uptr addr, AddressDescription *descr) {
-  AsanChunkView chunk = FindHeapChunkByAddress(addr);
-
-  descr->name[0] = 0;
-  descr->region_address = 0;
-  descr->region_size = 0;
-
-  if (!chunk.IsValid()) {
-    descr->region_kind = "heap-invalid";
-    return;
-  }
-
-  descr->region_address = chunk.Beg();
-  descr->region_size = chunk.UsedSize();
-  descr->region_kind = "heap";
-}
-
-void AsanLocateAddress(uptr addr, AddressDescription *descr) {
-  if (DescribeAddressIfShadow(addr, descr, /* print */ false)) {
-    return;
-  }
-  if (GetInfoForAddressIfGlobal(addr, descr)) {
-    return;
-  }
-  asanThreadRegistry().Lock();
-  AsanThread *thread = FindThreadByStackAddress(addr);
-  asanThreadRegistry().Unlock();
-  if (thread) {
-    GetInfoForStackVar(addr, descr, thread);
-    return;
-  }
-  GetInfoForHeapAddress(addr, descr);
-}
-
-static uptr AsanGetStack(uptr addr, uptr *trace, u32 size, u32 *thread_id,
+uptr AsanGetStack(uptr addr, uptr *trace, u32 size, u32 *thread_id,
                          bool alloc_stack) {
   AsanChunkView chunk = FindHeapChunkByAddress(addr);
   if (!chunk.IsValid()) return 0;
@@ -108,18 +73,58 @@ static uptr AsanGetStack(uptr addr, uptr
   return 0;
 }
 
-} // namespace __asan
-
-using namespace __asan;
+}  // namespace
 
 SANITIZER_INTERFACE_ATTRIBUTE
 const char *__asan_locate_address(uptr addr, char *name, uptr name_size,
-                                  uptr *region_address, uptr *region_size) {
-  AddressDescription descr = { name, name_size, 0, 0, nullptr };
-  AsanLocateAddress(addr, &descr);
-  if (region_address) *region_address = descr.region_address;
-  if (region_size) *region_size = descr.region_size;
-  return descr.region_kind;
+                                  uptr *region_address_ptr,
+                                  uptr *region_size_ptr) {
+  AddressDescription descr(addr);
+  uptr region_address = 0;
+  uptr region_size = 0;
+  const char *region_kind = nullptr;
+  if (name && name_size > 0) name[0] = 0;
+
+  if (auto shadow = descr.AsShadow()) {
+    // region_{address,size} are already 0
+    switch (shadow->kind) {
+      case kShadowKindLow:
+        region_kind = "low shadow";
+        break;
+      case kShadowKindGap:
+        region_kind = "shadow gap";
+        break;
+      case kShadowKindHigh:
+        region_kind = "high shadow";
+        break;
+    }
+  } else if (auto heap = descr.AsHeap()) {
+    region_kind = "heap";
+    region_address = heap->chunk_access.chunk_begin;
+    region_size = heap->chunk_access.chunk_size;
+  } else if (auto stack = descr.AsStack()) {
+    region_kind = "stack";
+    if (!stack->frame_descr) {
+      // region_{address,size} are already 0
+    } else {
+      FindInfoForStackVar(addr, stack->frame_descr, stack->offset, name,
+                          name_size, region_address, region_size);
+    }
+  } else if (auto global = descr.AsGlobal()) {
+    region_kind = "global";
+    auto &g = global->globals[0];
+    internal_strlcpy(name, g.name, name_size);
+    region_address = g.beg;
+    region_size = g.size;
+  } else {
+    // region_{address,size} are already 0
+    region_kind = "heap-invalid";
+  }
+
+  CHECK(region_kind);
+  if (region_address_ptr) *region_address_ptr = region_address;
+  if (region_size_ptr) *region_size_ptr = region_size;
+  return region_kind;
 }
 
 SANITIZER_INTERFACE_ATTRIBUTE

Copied: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_descriptions.cc (from r311696, vendor/compiler-rt/dist/lib/asan/asan_descriptions.cc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_descriptions.cc	Sun Jan  8 19:47:17 2017	(r311697, copy of r311696, vendor/compiler-rt/dist/lib/asan/asan_descriptions.cc)
@@ -0,0 +1,486 @@
+//===-- asan_descriptions.cc ------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of AddressSanitizer, an address sanity checker.
+//
+// ASan functions for getting information about an address and/or printing it.
+//===----------------------------------------------------------------------===//
+
+#include "asan_descriptions.h"
+#include "asan_mapping.h"
+#include "asan_report.h"
+#include "asan_stack.h"
+#include "sanitizer_common/sanitizer_stackdepot.h"
+
+namespace __asan {
+
+// Return " (thread_name) " or an empty string if the name is empty.
+const char *ThreadNameWithParenthesis(AsanThreadContext *t, char buff[],
+                                      uptr buff_len) {
+  const char *name = t->name;
+  if (name[0] == '\0') return "";
+  buff[0] = 0;
+  internal_strncat(buff, " (", 3);
+  internal_strncat(buff, name, buff_len - 4);
+  internal_strncat(buff, ")", 2);
+  return buff;
+}
+
+const char *ThreadNameWithParenthesis(u32 tid, char buff[], uptr buff_len) {
+  if (tid == kInvalidTid) return "";
+  asanThreadRegistry().CheckLocked();
+  AsanThreadContext *t = GetThreadContextByTidLocked(tid);
+  return ThreadNameWithParenthesis(t, buff, buff_len);
+}
+
+void DescribeThread(AsanThreadContext *context) {
+  CHECK(context);
+  asanThreadRegistry().CheckLocked();
+  // No need to announce the main thread.
+  if (context->tid == 0 || context->announced) {
+    return;
+  }
+  context->announced = true;
+  char tname[128];
+  InternalScopedString str(1024);
+  str.append("Thread T%d%s", context->tid,
+             ThreadNameWithParenthesis(context->tid, tname, sizeof(tname)));
+  if (context->parent_tid == kInvalidTid) {
+    str.append(" created by unknown thread\n");
+    Printf("%s", str.data());
+    return;
+  }
+  str.append(
+      " created by T%d%s here:\n", context->parent_tid,
+      ThreadNameWithParenthesis(context->parent_tid, tname, sizeof(tname)));
+  Printf("%s", str.data());
+  StackDepotGet(context->stack_id).Print();
+  // Recursively described parent thread if needed.
+  if (flags()->print_full_thread_history) {
+    AsanThreadContext *parent_context =
+        GetThreadContextByTidLocked(context->parent_tid);
+    DescribeThread(parent_context);
+  }
+}
+
+// Shadow descriptions
+static bool GetShadowKind(uptr addr, ShadowKind *shadow_kind) {
+  CHECK(!AddrIsInMem(addr));
+  if (AddrIsInShadowGap(addr)) {
+    *shadow_kind = kShadowKindGap;
+  } else if (AddrIsInHighShadow(addr)) {
+    *shadow_kind = kShadowKindHigh;
+  } else if (AddrIsInLowShadow(addr)) {
+    *shadow_kind = kShadowKindLow;
+  } else {
+    CHECK(0 && "Address is not in memory and not in shadow?");
+    return false;
+  }
+  return true;
+}
+
+bool DescribeAddressIfShadow(uptr addr) {
+  ShadowAddressDescription descr;
+  if (!GetShadowAddressInformation(addr, &descr)) return false;
+  descr.Print();
+  return true;
+}
+
+bool GetShadowAddressInformation(uptr addr, ShadowAddressDescription *descr) {
+  if (AddrIsInMem(addr)) return false;
+  ShadowKind shadow_kind;
+  if (!GetShadowKind(addr, &shadow_kind)) return false;
+  if (shadow_kind != kShadowKindGap) descr->shadow_byte = *(u8 *)addr;
+  descr->addr = addr;
+  descr->kind = shadow_kind;
+  return true;
+}
+
+// Heap descriptions
+static void GetAccessToHeapChunkInformation(ChunkAccess *descr,
+                                            AsanChunkView chunk, uptr addr,
+                                            uptr access_size) {
+  descr->bad_addr = addr;
+  if (chunk.AddrIsAtLeft(addr, access_size, &descr->offset)) {
+    descr->access_type = kAccessTypeLeft;
+  } else if (chunk.AddrIsAtRight(addr, access_size, &descr->offset)) {
+    descr->access_type = kAccessTypeRight;
+    if (descr->offset < 0) {
+      descr->bad_addr -= descr->offset;
+      descr->offset = 0;
+    }
+  } else if (chunk.AddrIsInside(addr, access_size, &descr->offset)) {
+    descr->access_type = kAccessTypeInside;
+  } else {
+    descr->access_type = kAccessTypeUnknown;
+  }
+  descr->chunk_begin = chunk.Beg();
+  descr->chunk_size = chunk.UsedSize();
+  descr->alloc_type = chunk.GetAllocType();
+}
+
+static void PrintHeapChunkAccess(uptr addr, const ChunkAccess &descr) {
+  Decorator d;
+  InternalScopedString str(4096);
+  str.append("%s", d.Location());
+  switch (descr.access_type) {
+    case kAccessTypeLeft:
+      str.append("%p is located %zd bytes to the left of",
+                 (void *)descr.bad_addr, descr.offset);
+      break;
+    case kAccessTypeRight:
+      str.append("%p is located %zd bytes to the right of",
+                 (void *)descr.bad_addr, descr.offset);
+      break;
+    case kAccessTypeInside:
+      str.append("%p is located %zd bytes inside of", (void *)descr.bad_addr,
+                 descr.offset);
+      break;
+    case kAccessTypeUnknown:
+      str.append(
+          "%p is located somewhere around (this is AddressSanitizer bug!)",
+          (void *)descr.bad_addr);
+  }
+  str.append(" %zu-byte region [%p,%p)\n", descr.chunk_size,
+             (void *)descr.chunk_begin,
+             (void *)(descr.chunk_begin + descr.chunk_size));
+  str.append("%s", d.EndLocation());
+  Printf("%s", str.data());
+}
+
+bool GetHeapAddressInformation(uptr addr, uptr access_size,
+                               HeapAddressDescription *descr) {
+  AsanChunkView chunk = FindHeapChunkByAddress(addr);
+  if (!chunk.IsValid()) {
+    return false;
+  }
+  descr->addr = addr;
+  GetAccessToHeapChunkInformation(&descr->chunk_access, chunk, addr,
+                                  access_size);
+  CHECK_NE(chunk.AllocTid(), kInvalidTid);
+  descr->alloc_tid = chunk.AllocTid();
+  descr->alloc_stack_id = chunk.GetAllocStackId();
+  descr->free_tid = chunk.FreeTid();
+  if (descr->free_tid != kInvalidTid)
+    descr->free_stack_id = chunk.GetFreeStackId();
+  return true;
+}
+
+static StackTrace GetStackTraceFromId(u32 id) {
+  CHECK(id);
+  StackTrace res = StackDepotGet(id);
+  CHECK(res.trace);
+  return res;
+}
+
+bool DescribeAddressIfHeap(uptr addr, uptr access_size) {
+  HeapAddressDescription descr;
+  if (!GetHeapAddressInformation(addr, access_size, &descr)) {
+    Printf(
+        "AddressSanitizer can not describe address in more detail "
+        "(wild memory access suspected).\n");
+    return false;
+  }
+  descr.Print();
+  return true;
+}
+
+// Stack descriptions
+bool GetStackAddressInformation(uptr addr, uptr access_size,
+                                StackAddressDescription *descr) {
+  AsanThread *t = FindThreadByStackAddress(addr);
+  if (!t) return false;
+
+  descr->addr = addr;
+  descr->tid = t->tid();
+  // Try to fetch precise stack frame for this access.
+  AsanThread::StackFrameAccess access;
+  if (!t->GetStackFrameAccessByAddr(addr, &access)) {
+    descr->frame_descr = nullptr;
+    return true;
+  }
+
+  descr->offset = access.offset;
+  descr->access_size = access_size;
+  descr->frame_pc = access.frame_pc;
+  descr->frame_descr = access.frame_descr;
+
+#if SANITIZER_PPC64V1
+  // On PowerPC64 ELFv1, the address of a function actually points to a
+  // three-doubleword data structure with the first field containing
+  // the address of the function's code.
+  descr->frame_pc = *reinterpret_cast<uptr *>(descr->frame_pc);
+#endif
+  descr->frame_pc += 16;
+
+  return true;
+}
+
+static void PrintAccessAndVarIntersection(const StackVarDescr &var, uptr addr,
+                                          uptr access_size, uptr prev_var_end,
+                                          uptr next_var_beg) {
+  uptr var_end = var.beg + var.size;
+  uptr addr_end = addr + access_size;
+  const char *pos_descr = nullptr;
+  // If the variable [var.beg, var_end) is the nearest variable to the
+  // current memory access, indicate it in the log.
+  if (addr >= var.beg) {
+    if (addr_end <= var_end)
+      pos_descr = "is inside";  // May happen if this is a use-after-return.
+    else if (addr < var_end)
+      pos_descr = "partially overflows";
+    else if (addr_end <= next_var_beg &&
+             next_var_beg - addr_end >= addr - var_end)
+      pos_descr = "overflows";
+  } else {
+    if (addr_end > var.beg)
+      pos_descr = "partially underflows";
+    else if (addr >= prev_var_end && addr - prev_var_end >= var.beg - addr_end)
+      pos_descr = "underflows";
+  }
+  InternalScopedString str(1024);
+  str.append("    [%zd, %zd)", var.beg, var_end);
+  // Render variable name.
+  str.append(" '");
+  for (uptr i = 0; i < var.name_len; ++i) {
+    str.append("%c", var.name_pos[i]);
+  }
+  str.append("'");
+  if (pos_descr) {
+    Decorator d;
+    // FIXME: we may want to also print the size of the access here,
+    // but in case of accesses generated by memset it may be confusing.
+    str.append("%s <== Memory access at offset %zd %s this variable%s\n",
+               d.Location(), addr, pos_descr, d.EndLocation());
+  } else {
+    str.append("\n");
+  }
+  Printf("%s", str.data());
+}
+
+bool DescribeAddressIfStack(uptr addr, uptr access_size) {
+  StackAddressDescription descr;
+  if (!GetStackAddressInformation(addr, access_size, &descr)) return false;
+  descr.Print();
+  return true;
+}
+
+// Global descriptions
+static void DescribeAddressRelativeToGlobal(uptr addr, uptr access_size,
+                                            const __asan_global &g) {
+  InternalScopedString str(4096);
+  Decorator d;
+  str.append("%s", d.Location());
+  if (addr < g.beg) {
+    str.append("%p is located %zd bytes to the left", (void *)addr,
+               g.beg - addr);
+  } else if (addr + access_size > g.beg + g.size) {
+    if (addr < g.beg + g.size) addr = g.beg + g.size;
+    str.append("%p is located %zd bytes to the right", (void *)addr,
+               addr - (g.beg + g.size));
+  } else {
+    // Can it happen?
+    str.append("%p is located %zd bytes inside", (void *)addr, addr - g.beg);
+  }
+  str.append(" of global variable '%s' defined in '",
+             MaybeDemangleGlobalName(g.name));
+  PrintGlobalLocation(&str, g);
+  str.append("' (0x%zx) of size %zu\n", g.beg, g.size);
+  str.append("%s", d.EndLocation());
+  PrintGlobalNameIfASCII(&str, g);
+  Printf("%s", str.data());
+}
+
+bool GetGlobalAddressInformation(uptr addr, uptr access_size,
+                                 GlobalAddressDescription *descr) {
+  descr->addr = addr;
+  int globals_num = GetGlobalsForAddress(addr, descr->globals, descr->reg_sites,
+                                         ARRAY_SIZE(descr->globals));
+  descr->size = globals_num;
+  descr->access_size = access_size;
+  return globals_num != 0;
+}
+
+bool DescribeAddressIfGlobal(uptr addr, uptr access_size,
+                             const char *bug_type) {
+  GlobalAddressDescription descr;
+  if (!GetGlobalAddressInformation(addr, access_size, &descr)) return false;
+
+  descr.Print(bug_type);
+  return true;
+}
+
+void ShadowAddressDescription::Print() const {
+  Printf("Address %p is located in the %s area.\n", addr, ShadowNames[kind]);
+}
+
+void GlobalAddressDescription::Print(const char *bug_type) const {
+  for (int i = 0; i < size; i++) {
+    DescribeAddressRelativeToGlobal(addr, access_size, globals[i]);
+    if (bug_type &&
+        0 == internal_strcmp(bug_type, "initialization-order-fiasco") &&
+        reg_sites[i]) {
+      Printf("  registered at:\n");
+      StackDepotGet(reg_sites[i]).Print();
+    }
+  }
+}
+
+void StackAddressDescription::Print() const {
+  Decorator d;
+  char tname[128];
+  Printf("%s", d.Location());
+  Printf("Address %p is located in stack of thread T%d%s", addr, tid,
+         ThreadNameWithParenthesis(tid, tname, sizeof(tname)));
+
+  if (!frame_descr) {
+    Printf("%s\n", d.EndLocation());
+    return;
+  }
+  Printf(" at offset %zu in frame%s\n", offset, d.EndLocation());
+
+  // Now we print the frame where the alloca has happened.
+  // We print this frame as a stack trace with one element.
+  // The symbolizer may print more than one frame if inlining was involved.
+  // The frame numbers may be different than those in the stack trace printed
+  // previously. That's unfortunate, but I have no better solution,
+  // especially given that the alloca may be from entirely different place
+  // (e.g. use-after-scope, or different thread's stack).
+  Printf("%s", d.EndLocation());
+  StackTrace alloca_stack(&frame_pc, 1);
+  alloca_stack.Print();
+
+  InternalMmapVector<StackVarDescr> vars(16);
+  if (!ParseFrameDescription(frame_descr, &vars)) {
+    Printf(
+        "AddressSanitizer can't parse the stack frame "
+        "descriptor: |%s|\n",
+        frame_descr);
+    // 'addr' is a stack address, so return true even if we can't parse frame
+    return;
+  }
+  uptr n_objects = vars.size();
+  // Report the number of stack objects.
+  Printf("  This frame has %zu object(s):\n", n_objects);
+
+  // Report all objects in this frame.
+  for (uptr i = 0; i < n_objects; i++) {
+    uptr prev_var_end = i ? vars[i - 1].beg + vars[i - 1].size : 0;
+    uptr next_var_beg = i + 1 < n_objects ? vars[i + 1].beg : ~(0UL);
+    PrintAccessAndVarIntersection(vars[i], offset, access_size, prev_var_end,
+                                  next_var_beg);
+  }
+  Printf(
+      "HINT: this may be a false positive if your program uses "
+      "some custom stack unwind mechanism or swapcontext\n");
+  if (SANITIZER_WINDOWS)
+    Printf("      (longjmp, SEH and C++ exceptions *are* supported)\n");
+  else
+    Printf("      (longjmp and C++ exceptions *are* supported)\n");
+
+  DescribeThread(GetThreadContextByTidLocked(tid));
+}
+
+void HeapAddressDescription::Print() const {
+  PrintHeapChunkAccess(addr, chunk_access);
+
+  asanThreadRegistry().CheckLocked();
+  AsanThreadContext *alloc_thread = GetThreadContextByTidLocked(alloc_tid);
+  StackTrace alloc_stack = GetStackTraceFromId(alloc_stack_id);
+
+  char tname[128];
+  Decorator d;
+  AsanThreadContext *free_thread = nullptr;
+  if (free_tid != kInvalidTid) {
+    free_thread = GetThreadContextByTidLocked(free_tid);
+    Printf("%sfreed by thread T%d%s here:%s\n", d.Allocation(),
+           free_thread->tid,
+           ThreadNameWithParenthesis(free_thread, tname, sizeof(tname)),
+           d.EndAllocation());
+    StackTrace free_stack = GetStackTraceFromId(free_stack_id);
+    free_stack.Print();
+    Printf("%spreviously allocated by thread T%d%s here:%s\n", d.Allocation(),
+           alloc_thread->tid,
+           ThreadNameWithParenthesis(alloc_thread, tname, sizeof(tname)),
+           d.EndAllocation());
+  } else {
+    Printf("%sallocated by thread T%d%s here:%s\n", d.Allocation(),
+           alloc_thread->tid,

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

From owner-svn-src-projects@freebsd.org  Sun Jan  8 19:48:15 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 15F89CA5BE5
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 19:48:15 +0000 (UTC) (envelope-from dim@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 BFEF91F9E;
 Sun,  8 Jan 2017 19:48:14 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08JmDwP046965;
 Sun, 8 Jan 2017 19:48:13 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08JmDfD046964;
 Sun, 8 Jan 2017 19:48:13 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701081948.v08JmDfD046964@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 8 Jan 2017 19:48:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311698 - in
 projects/clang400-import/contrib/compiler-rt/lib/xray: . tests
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 19:48:15 -0000

Author: dim
Date: Sun Jan  8 19:48:13 2017
New Revision: 311698
URL: https://svnweb.freebsd.org/changeset/base/311698

Log:
  Clean out stuff we don't use.

Deleted:
  projects/clang400-import/contrib/compiler-rt/lib/xray/CMakeLists.txt
  projects/clang400-import/contrib/compiler-rt/lib/xray/tests/

From owner-svn-src-projects@freebsd.org  Sun Jan  8 21:30:06 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 068F3CA5FC7
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 21:30:06 +0000 (UTC) (envelope-from ae@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 CD1BB1945;
 Sun,  8 Jan 2017 21:30:05 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08LU5VB089738;
 Sun, 8 Jan 2017 21:30:05 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08LU57Y089737;
 Sun, 8 Jan 2017 21:30:05 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701082130.v08LU57Y089737@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Sun, 8 Jan 2017 21:30:05 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311704 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 21:30:06 -0000

Author: ae
Date: Sun Jan  8 21:30:04 2017
New Revision: 311704
URL: https://svnweb.freebsd.org/changeset/base/311704

Log:
  Take INP_WLOCK() in ipsec_set_pcbpolicy() to modify INPCB policy.

Modified:
  projects/ipsec/sys/netipsec/ipsec_pcb.c

Modified: projects/ipsec/sys/netipsec/ipsec_pcb.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec_pcb.c	Sun Jan  8 21:12:46 2017	(r311703)
+++ projects/ipsec/sys/netipsec/ipsec_pcb.c	Sun Jan  8 21:30:04 2017	(r311704)
@@ -276,12 +276,7 @@ ipsec_set_pcbpolicy(struct inpcb *inp, s
 	/* Select direction. */
 	switch (xpl->sadb_x_policy_dir) {
 	case IPSEC_DIR_INBOUND:
-		spp = &inp->inp_sp->sp_in;
-		flags = INP_INBOUND_POLICY;
-		break;
 	case IPSEC_DIR_OUTBOUND:
-		spp = &inp->inp_sp->sp_out;
-		flags = INP_OUTBOUND_POLICY;
 		break;
 	default:
 		ipseclog((LOG_ERR, "%s: invalid direction=%u\n", __func__,
@@ -333,6 +328,14 @@ ipsec_set_pcbpolicy(struct inpcb *inp, s
 		return (EINVAL);
 	}
 
+	INP_WLOCK(inp);
+	if (xpl->sadb_x_policy_dir == IPSEC_DIR_INBOUND) {
+		spp = &inp->inp_sp->sp_in;
+		flags = INP_INBOUND_POLICY;
+	} else {
+		spp = &inp->inp_sp->sp_out;
+		flags = INP_OUTBOUND_POLICY;
+	}
 	/* Clear old SP and set new SP. */
 	if (*spp != NULL)
 		key_freesp(spp);
@@ -345,6 +348,7 @@ ipsec_set_pcbpolicy(struct inpcb *inp, s
 		inp->inp_sp->flags |= flags;
 		KEYDBG(IPSEC_DUMP, kdebug_secpolicy(newsp));
 	}
+	INP_WUNLOCK(inp);
 	return (0);
 }
 

From owner-svn-src-projects@freebsd.org  Sun Jan  8 21:42:20 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 F23B1CA6A8B
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  8 Jan 2017 21:42:20 +0000 (UTC) (envelope-from ae@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 BF44A108D;
 Sun,  8 Jan 2017 21:42:20 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v08LgJpl097334;
 Sun, 8 Jan 2017 21:42:19 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v08LgJXd097333;
 Sun, 8 Jan 2017 21:42:19 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701082142.v08LgJXd097333@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Sun, 8 Jan 2017 21:42:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311705 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 08 Jan 2017 21:42:21 -0000

Author: ae
Date: Sun Jan  8 21:42:19 2017
New Revision: 311705
URL: https://svnweb.freebsd.org/changeset/base/311705

Log:
  Hold INP_RLOCK in ipsec_get_pcbpolicy() while retrieving INPCB policy.

Modified:
  projects/ipsec/sys/netipsec/ipsec_pcb.c

Modified: projects/ipsec/sys/netipsec/ipsec_pcb.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec_pcb.c	Sun Jan  8 21:30:04 2017	(r311704)
+++ projects/ipsec/sys/netipsec/ipsec_pcb.c	Sun Jan  8 21:42:19 2017	(r311705)
@@ -360,6 +360,8 @@ ipsec_get_pcbpolicy(struct inpcb *inp, v
 	int error, flags;
 
 	xpl = (struct sadb_x_policy *)request;
+
+	INP_RLOCK(inp);
 	flags = inp->inp_sp->flags;
 	/* Select direction. */
 	switch (xpl->sadb_x_policy_dir) {
@@ -372,6 +374,7 @@ ipsec_get_pcbpolicy(struct inpcb *inp, v
 		flags &= INP_OUTBOUND_POLICY;
 		break;
 	default:
+		INP_RUNLOCK(inp);
 		ipseclog((LOG_ERR, "%s: invalid direction=%u\n", __func__,
 			xpl->sadb_x_policy_dir));
 		return (EINVAL);
@@ -379,6 +382,7 @@ ipsec_get_pcbpolicy(struct inpcb *inp, v
 
 	if (flags == 0) {
 		/* Return ENTRUST policy */
+		INP_RUNLOCK(inp);
 		xpl->sadb_x_policy_exttype = SADB_X_EXT_POLICY;
 		xpl->sadb_x_policy_type = IPSEC_POLICY_ENTRUST;
 		xpl->sadb_x_policy_id = 0;
@@ -392,6 +396,7 @@ ipsec_get_pcbpolicy(struct inpcb *inp, v
 	    ("sp is NULL, but flags is 0x%04x", inp->inp_sp->flags));
 
 	key_addref(sp);
+	INP_RUNLOCK(inp);
 	error = key_sp2msg(sp, request, len);
 	key_freesp(&sp);
 	if (error == EINVAL)

From owner-svn-src-projects@freebsd.org  Mon Jan  9 01:00:23 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 E026ACA2FAD
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 01:00:23 +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 A48041B8D;
 Mon,  9 Jan 2017 01:00:23 +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 v0910M78081247;
 Mon, 9 Jan 2017 01:00:22 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0910KSs081225;
 Mon, 9 Jan 2017 01:00:20 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701090100.v0910KSs081225@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 01:00:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311716 - in projects/bsnmp-ipv6-mib: bin/chmod
 contrib/llvm/projects/libunwind/src contrib/ngatm/snmp_atm lib/libc/include
 lib/libc/stdlib lib/libprocstat lib/libstand lib/libutil sbin...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 01:00:24 -0000

Author: ngie
Date: Mon Jan  9 01:00:20 2017
New Revision: 311716
URL: https://svnweb.freebsd.org/changeset/base/311716

Log:
  MFhead@r311715

Added:
  projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit_impl.c
     - copied unchanged from r311715, head/lib/libc/stdlib/cxa_thread_atexit_impl.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_vht.c
     - copied unchanged from r311715, head/sys/net80211/ieee80211_vht.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_vht.h
     - copied unchanged from r311715, head/sys/net80211/ieee80211_vht.h
Modified:
  projects/bsnmp-ipv6-mib/bin/chmod/chmod.1
  projects/bsnmp-ipv6-mib/bin/chmod/chmod.c
  projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S
  projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S
  projects/bsnmp-ipv6-mib/contrib/ngatm/snmp_atm/snmp_atm.c
  projects/bsnmp-ipv6-mib/lib/libc/include/libc_private.h
  projects/bsnmp-ipv6-mib/lib/libc/stdlib/Makefile.inc
  projects/bsnmp-ipv6-mib/lib/libc/stdlib/Symbol.map
  projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit.c
  projects/bsnmp-ipv6-mib/lib/libprocstat/cd9660.c
  projects/bsnmp-ipv6-mib/lib/libprocstat/libprocstat.c
  projects/bsnmp-ipv6-mib/lib/libstand/bootp.c
  projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getallproc.c
  projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getfile.c
  projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getproc.c
  projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getvmmap.c
  projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.8
  projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.c
  projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.h
  projects/bsnmp-ipv6-mib/sbin/camcontrol/modeedit.c
  projects/bsnmp-ipv6-mib/sbin/md5/md5.1
  projects/bsnmp-ipv6-mib/share/misc/pci_vendors
  projects/bsnmp-ipv6-mib/share/misc/scsi_modes
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c
  projects/bsnmp-ipv6-mib/sys/cam/scsi/scsi_all.c
  projects/bsnmp-ipv6-mib/sys/cam/scsi/scsi_all.h
  projects/bsnmp-ipv6-mib/sys/cam/scsi/scsi_ch.c
  projects/bsnmp-ipv6-mib/sys/conf/files
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/include/acpixf.h
  projects/bsnmp-ipv6-mib/sys/crypto/skein/amd64/skein_block_asm.s
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_connect.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_listen.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_tom.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_tom.h
  projects/bsnmp-ipv6-mib/sys/dev/etherswitch/etherswitch.c
  projects/bsnmp-ipv6-mib/sys/dev/gpio/gpioc.c
  projects/bsnmp-ipv6-mib/sys/dev/gpio/ofw_gpiobus.c
  projects/bsnmp-ipv6-mib/sys/dev/kbd/kbd.c
  projects/bsnmp-ipv6-mib/sys/dev/mmc/mmcreg.h
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/if_rtwnvar.h
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/usb/rtwn_usb_attach.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/usb/rtwn_usb_ep.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/usb/rtwn_usb_rx.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci.h
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_if.m
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/ef10_tx.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/efx.h
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/efx_tx.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/hunt_nic.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/medford_nic.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/siena_nic.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge.h
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge_port.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge_tx.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_lookup.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_node.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_node.h
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_rrip.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_vfsops.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_vnops.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/iso.h
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/iso_rrip.h
  projects/bsnmp-ipv6-mib/sys/geom/vinum/geom_vinum_state.c
  projects/bsnmp-ipv6-mib/sys/modules/wlan/Makefile
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_scan.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_var.h
  projects/bsnmp-ipv6-mib/sys/netinet6/nd6.c
  projects/bsnmp-ipv6-mib/sys/netipsec/ipsec.c
  projects/bsnmp-ipv6-mib/sys/powerpc/include/vmparam.h
  projects/bsnmp-ipv6-mib/sys/sys/unistd.h
  projects/bsnmp-ipv6-mib/usr.bin/top/machine.c
  projects/bsnmp-ipv6-mib/usr.bin/users/users.cc
  projects/bsnmp-ipv6-mib/usr.sbin/bhyve/ps2mouse.c   (contents, props changed)
  projects/bsnmp-ipv6-mib/usr.sbin/bhyve/virtio.h
  projects/bsnmp-ipv6-mib/usr.sbin/chown/chgrp.1
  projects/bsnmp-ipv6-mib/usr.sbin/chown/chown.8
  projects/bsnmp-ipv6-mib/usr.sbin/chown/chown.c
  projects/bsnmp-ipv6-mib/usr.sbin/route6d/route6d.c
  projects/bsnmp-ipv6-mib/usr.sbin/rwhod/rwhod.c
Directory Properties:
  projects/bsnmp-ipv6-mib/   (props changed)
  projects/bsnmp-ipv6-mib/contrib/llvm/   (props changed)
  projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/   (props changed)
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/   (props changed)

Modified: projects/bsnmp-ipv6-mib/bin/chmod/chmod.1
==============================================================================
--- projects/bsnmp-ipv6-mib/bin/chmod/chmod.1	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/bin/chmod/chmod.1	Mon Jan  9 01:00:20 2017	(r311716)
@@ -32,7 +32,7 @@
 .\"	@(#)chmod.1	8.4 (Berkeley) 3/31/94
 .\" $FreeBSD$
 .\"
-.Dd April 20, 2015
+.Dd January 7, 2017
 .Dt CHMOD 1
 .Os
 .Sh NAME
@@ -106,6 +106,16 @@ option is specified.
 In addition, these options override each other and the
 command's actions are determined by the last one specified.
 .Pp
+If
+.Nm
+receives a
+.Dv SIGINFO
+signal (see the
+.Cm status
+argument for
+.Xr stty 1 ) ,
+then the current filename as well as the old and new modes are displayed.
+.Pp
 Only the owner of a file or the super-user is permitted to change
 the mode of a file.
 .Sh EXIT STATUS

Modified: projects/bsnmp-ipv6-mib/bin/chmod/chmod.c
==============================================================================
--- projects/bsnmp-ipv6-mib/bin/chmod/chmod.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/bin/chmod/chmod.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -49,14 +49,24 @@ __FBSDID("$FreeBSD$");
 #include <fcntl.h>
 #include <fts.h>
 #include <limits.h>
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
+static volatile sig_atomic_t siginfo;
+
 static void usage(void);
 static int may_have_nfs4acl(const FTSENT *ent, int hflag);
 
+static void
+siginfo_handler(int sig __unused)
+{
+
+	siginfo = 1;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -125,6 +135,8 @@ done:	argv += optind;
 	if (argc < 2)
 		usage();
 
+	(void)signal(SIGINFO, siginfo_handler);
+
 	if (Rflag) {
 		if (hflag)
 			errx(1, "the -R and -h options may not be "
@@ -192,10 +204,10 @@ done:	argv += optind;
 		    && !fflag) {
 			warn("%s", p->fts_path);
 			rval = 1;
-		} else if (vflag) {
+		} else if (vflag || siginfo) {
 			(void)printf("%s", p->fts_path);
 
-			if (vflag > 1) {
+			if (vflag > 1 || siginfo) {
 				char m1[12], m2[12];
 
 				strmode(p->fts_statp->st_mode, m1);
@@ -207,6 +219,7 @@ done:	argv += optind;
 				    newmode, m2);
 			}
 			(void)printf("\n");
+			siginfo = 0;
 		}
 	}
 	if (errno)

Modified: projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersRestore.S	Mon Jan  9 01:00:20 2017	(r311716)
@@ -527,3 +527,5 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9li
   ret                       // jump to ra
 
 #endif
+
+  .section .note.GNU-stack,"",@progbits

Modified: projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/contrib/llvm/projects/libunwind/src/UnwindRegistersSave.S	Mon Jan  9 01:00:20 2017	(r311716)
@@ -469,3 +469,5 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext
 /* RISCVTODO */
 
 #endif
+
+    .section .note.GNU-stack,"",@progbits

Modified: projects/bsnmp-ipv6-mib/contrib/ngatm/snmp_atm/snmp_atm.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/ngatm/snmp_atm/snmp_atm.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/contrib/ngatm/snmp_atm/snmp_atm.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -170,7 +170,7 @@ atmif_check_carrier(struct atmif_priv *a
 		aif->pub.carrier = ATMIF_CARRIER_UNKNOWN;
 		return;
 	}
-	if (!ifmr.ifm_status & IFM_AVALID) {
+	if (!(ifmr.ifm_status & IFM_AVALID)) {
 		aif->pub.carrier = ATMIF_CARRIER_UNKNOWN;
 		return;
 	}

Modified: projects/bsnmp-ipv6-mib/lib/libc/include/libc_private.h
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libc/include/libc_private.h	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libc/include/libc_private.h	Mon Jan  9 01:00:20 2017	(r311716)
@@ -272,6 +272,8 @@ void _malloc_thread_cleanup(void);
  * thread is exiting, so its thread-local dtors should be called.
  */
 void __cxa_thread_call_dtors(void);
+int __cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol) __hidden;
 
 /*
  * These functions are used by the threading libraries in order to protect

Modified: projects/bsnmp-ipv6-mib/lib/libc/stdlib/Makefile.inc
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libc/stdlib/Makefile.inc	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libc/stdlib/Makefile.inc	Mon Jan  9 01:00:20 2017	(r311716)
@@ -5,7 +5,9 @@
 .PATH: ${LIBC_SRCTOP}/${LIBC_ARCH}/stdlib ${LIBC_SRCTOP}/stdlib
 
 MISRCS+=C99_Exit.c a64l.c abort.c abs.c atexit.c atof.c atoi.c atol.c atoll.c \
-	bsearch.c cxa_thread_atexit.c div.c exit.c getenv.c getopt.c getopt_long.c \
+	bsearch.c \
+	cxa_thread_atexit.c cxa_thread_atexit_impl.c \
+	div.c exit.c getenv.c getopt.c getopt_long.c \
 	getsubopt.c hcreate.c hcreate_r.c hdestroy_r.c heapsort.c heapsort_b.c \
 	hsearch_r.c imaxabs.c imaxdiv.c \
 	insque.c l64a.c labs.c ldiv.c llabs.c lldiv.c lsearch.c \

Modified: projects/bsnmp-ipv6-mib/lib/libc/stdlib/Symbol.map
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libc/stdlib/Symbol.map	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libc/stdlib/Symbol.map	Mon Jan  9 01:00:20 2017	(r311716)
@@ -118,6 +118,7 @@ FBSD_1.4 {
 
 FBSD_1.5 {
 	__cxa_thread_atexit;
+	__cxa_thread_atexit_impl;
 };
 
 FBSDprivate_1.0 {

Modified: projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -1,7 +1,10 @@
 /*-
- * Copyright (c) 2016 Mahdi Mokhtari <mokhi64@gmail.com>
+ * Copyright (c) 2017 The FreeBSD Foundation
  * All rights reserved.
  *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -27,114 +30,11 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <sys/queue.h>
-#include "namespace.h"
-#include <errno.h>
-#include <link.h>
-#include <pthread.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "un-namespace.h"
 #include "libc_private.h"
 
-/*
- * C++11 introduces the thread_local scope (like __thread with some
- * additions).  As a key-feature it should support non-trivial
- * destructors, registered with __cxa_thread_atexit() to be executed
- * at the thread termination.
- *
- * The implemention keeps a _Thread_local list of destructors per each
- * thread, and calls __cxa_thread_call_dtors() on each thread's exit
- * to do cleanup.  For a thread calling exit(3), in particular, for
- * the initial thread returning from main(), we call
- * __cxa_thread_call_dtors() inside exit().
- *
- * It could be possible that a dynamically loaded library, use
- * thread_local variable but is dlclose()'d before thread exit.  The
- * destructor of this variable will then try to access the address,
- * for calling it but it's unloaded, so it'll crash.  We're using
- * __elf_phdr_match_addr() to detect and prevent such cases and so
- * prevent the crash.
- */
-
-#define CXA_DTORS_ITERATIONS 4
-
-struct cxa_thread_dtor {
-	void *obj;
-	void (*func)(void *);
-	void *dso;
-	LIST_ENTRY(cxa_thread_dtor) entry;
-};
-static _Thread_local LIST_HEAD(dtor_list, cxa_thread_dtor) dtors =
-    LIST_HEAD_INITIALIZER(dtors);
-
 int
 __cxa_thread_atexit(void (*dtor_func)(void *), void *obj, void *dso_symbol)
 {
-	struct cxa_thread_dtor *new_dtor;
-
-	new_dtor = malloc(sizeof(*new_dtor));
-	if (new_dtor == NULL) {
-		errno = ENOMEM; /* forcibly override malloc(3) error */
-		return (-1);
-	}
-
-	new_dtor->obj = obj;
-	new_dtor->func = dtor_func;
-	new_dtor->dso = dso_symbol;
-	LIST_INSERT_HEAD(&dtors, new_dtor, entry);
-	return (0);
-}
-
-static void
-walk_cb_call(struct cxa_thread_dtor *dtor)
-{
-	struct dl_phdr_info phdr_info;
-
-	if (_rtld_addr_phdr(dtor->dso, &phdr_info) &&
-	    __elf_phdr_match_addr(&phdr_info, dtor->func))
-		dtor->func(dtor->obj);
-	else
-		fprintf(stderr, "__cxa_thread_call_dtors: dtr %p from "
-		    "unloaded dso, skipping\n", (void *)(dtor->func));
-}
-
-static void
-walk_cb_nocall(struct cxa_thread_dtor *dtor __unused)
-{
-}
-
-static void
-cxa_thread_walk(void (*cb)(struct cxa_thread_dtor *))
-{
-	struct cxa_thread_dtor *dtor, *tdtor;
-
-	LIST_FOREACH_SAFE(dtor, &dtors, entry, tdtor) {
-		LIST_REMOVE(dtor, entry);
-		cb(dtor);
-		free(dtor);
-	}
-}
-
-/*
- * This is the callback function we use to call destructors, once for
- * each thread.  It is called in exit(3) in libc/stdlib/exit.c and
- * before exit_thread() in libthr/thread/thr_exit.c.
- */
-void
-__cxa_thread_call_dtors(void)
-{
-	int i;
-
-	for (i = 0; i < CXA_DTORS_ITERATIONS && !LIST_EMPTY(&dtors); i++)
-		cxa_thread_walk(walk_cb_call);
 
-	if (!LIST_EMPTY(&dtors)) {
-		fprintf(stderr, "Thread %p is exiting with more "
-		    "thread-specific dtors created after %d iterations "
-		    "of destructor calls\n",
-		    _pthread_self(), i);
-		cxa_thread_walk(walk_cb_nocall);
-	}
+	return (__cxa_thread_atexit_hidden(dtor_func, obj, dso_symbol));
 }

Copied: projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit_impl.c (from r311715, head/lib/libc/stdlib/cxa_thread_atexit_impl.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/bsnmp-ipv6-mib/lib/libc/stdlib/cxa_thread_atexit_impl.c	Mon Jan  9 01:00:20 2017	(r311716, copy of r311715, head/lib/libc/stdlib/cxa_thread_atexit_impl.c)
@@ -0,0 +1,153 @@
+/*-
+ * Copyright (c) 2016 Mahdi Mokhtari <mokhi64@gmail.com>
+ * Copyright (c) 2016, 2017 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * Portions of this software were developed by Konstantin Belousov
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/queue.h>
+#include "namespace.h"
+#include <errno.h>
+#include <link.h>
+#include <pthread.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "un-namespace.h"
+#include "libc_private.h"
+
+/*
+ * C++11 introduces the thread_local scope (like __thread with some
+ * additions).  As a key-feature it should support non-trivial
+ * destructors, registered with __cxa_thread_atexit() to be executed
+ * at the thread termination.
+ *
+ * The implemention keeps a _Thread_local list of destructors per each
+ * thread, and calls __cxa_thread_call_dtors() on each thread's exit
+ * to do cleanup.  For a thread calling exit(3), in particular, for
+ * the initial thread returning from main(), we call
+ * __cxa_thread_call_dtors() inside exit().
+ *
+ * It could be possible that a dynamically loaded library, use
+ * thread_local variable but is dlclose()'d before thread exit.  The
+ * destructor of this variable will then try to access the address,
+ * for calling it but it's unloaded, so it'll crash.  We're using
+ * __elf_phdr_match_addr() to detect and prevent such cases and so
+ * prevent the crash.
+ */
+
+#define CXA_DTORS_ITERATIONS 4
+
+struct cxa_thread_dtor {
+	void *obj;
+	void (*func)(void *);
+	void *dso;
+	LIST_ENTRY(cxa_thread_dtor) entry;
+};
+static _Thread_local LIST_HEAD(dtor_list, cxa_thread_dtor) dtors =
+    LIST_HEAD_INITIALIZER(dtors);
+
+int
+__cxa_thread_atexit_impl(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol)
+{
+
+	return (__cxa_thread_atexit_hidden(dtor_func, obj, dso_symbol));
+}
+
+int
+__cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
+    void *dso_symbol)
+{
+	struct cxa_thread_dtor *new_dtor;
+
+	new_dtor = malloc(sizeof(*new_dtor));
+	if (new_dtor == NULL) {
+		errno = ENOMEM; /* forcibly override malloc(3) error */
+		return (-1);
+	}
+
+	new_dtor->obj = obj;
+	new_dtor->func = dtor_func;
+	new_dtor->dso = dso_symbol;
+	LIST_INSERT_HEAD(&dtors, new_dtor, entry);
+	return (0);
+}
+
+static void
+walk_cb_call(struct cxa_thread_dtor *dtor)
+{
+	struct dl_phdr_info phdr_info;
+
+	if (_rtld_addr_phdr(dtor->dso, &phdr_info) &&
+	    __elf_phdr_match_addr(&phdr_info, dtor->func))
+		dtor->func(dtor->obj);
+	else
+		fprintf(stderr, "__cxa_thread_call_dtors: dtr %p from "
+		    "unloaded dso, skipping\n", (void *)(dtor->func));
+}
+
+static void
+walk_cb_nocall(struct cxa_thread_dtor *dtor __unused)
+{
+}
+
+static void
+cxa_thread_walk(void (*cb)(struct cxa_thread_dtor *))
+{
+	struct cxa_thread_dtor *dtor, *tdtor;
+
+	LIST_FOREACH_SAFE(dtor, &dtors, entry, tdtor) {
+		LIST_REMOVE(dtor, entry);
+		cb(dtor);
+		free(dtor);
+	}
+}
+
+/*
+ * This is the callback function we use to call destructors, once for
+ * each thread.  It is called in exit(3) in libc/stdlib/exit.c and
+ * before exit_thread() in libthr/thread/thr_exit.c.
+ */
+void
+__cxa_thread_call_dtors(void)
+{
+	int i;
+
+	for (i = 0; i < CXA_DTORS_ITERATIONS && !LIST_EMPTY(&dtors); i++)
+		cxa_thread_walk(walk_cb_call);
+
+	if (!LIST_EMPTY(&dtors)) {
+		fprintf(stderr, "Thread %p is exiting with more "
+		    "thread-specific dtors created after %d iterations "
+		    "of destructor calls\n",
+		    _pthread_self(), i);
+		cxa_thread_walk(walk_cb_nocall);
+	}
+}

Modified: projects/bsnmp-ipv6-mib/lib/libprocstat/cd9660.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libprocstat/cd9660.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libprocstat/cd9660.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -53,10 +53,10 @@ __FBSDID("$FreeBSD$");
 
 #include <err.h>
 
-#include <isofs/cd9660/cd9660_node.h>
 #define _KERNEL
 #include <isofs/cd9660/iso.h>
 #undef _KERNEL
+#include <isofs/cd9660/cd9660_node.h>
 
 #include <kvm.h>
 #include <stdio.h>

Modified: projects/bsnmp-ipv6-mib/lib/libprocstat/libprocstat.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libprocstat/libprocstat.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libprocstat/libprocstat.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -282,7 +282,7 @@ procstat_getprocs(struct procstat *procs
 		name[1] = KERN_PROC;
 		name[2] = what;
 		name[3] = arg;
-		error = sysctl(name, 4, NULL, &len, NULL, 0);
+		error = sysctl(name, nitems(name), NULL, &len, NULL, 0);
 		if (error < 0 && errno != EPERM) {
 			warn("sysctl(kern.proc)");
 			goto fail;
@@ -299,7 +299,7 @@ procstat_getprocs(struct procstat *procs
 				goto fail;
 			}
 			olen = len;
-			error = sysctl(name, 4, p, &len, NULL, 0);
+			error = sysctl(name, nitems(name), p, &len, NULL, 0);
 		} while (error < 0 && errno == ENOMEM && olen == len);
 		if (error < 0 && errno != EPERM) {
 			warn("sysctl(kern.proc)");
@@ -1760,7 +1760,7 @@ getargv(struct procstat *procstat, struc
 		name[2] = env ? KERN_PROC_ENV : KERN_PROC_ARGS;
 		name[3] = kp->ki_pid;
 		len = nchr;
-		error = sysctl(name, 4, av->buf, &len, NULL, 0);
+		error = sysctl(name, nitems(name), av->buf, &len, NULL, 0);
 		if (error != 0 && errno != ESRCH && errno != EPERM)
 			warn("sysctl(kern.proc.%s)", env ? "env" : "args");
 		if (error != 0 || len == 0)
@@ -1983,7 +1983,7 @@ procstat_getgroups_sysctl(pid_t pid, uns
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(mib, 4, groups, &len, NULL, 0) == -1) {
+	if (sysctl(mib, nitems(mib), groups, &len, NULL, 0) == -1) {
 		warn("sysctl: kern.proc.groups: %d", pid);
 		free(groups);
 		return (NULL);
@@ -2059,7 +2059,7 @@ procstat_getumask_sysctl(pid_t pid, unsi
 	mib[2] = KERN_PROC_UMASK;
 	mib[3] = pid;
 	len = sizeof(*maskp);
-	error = sysctl(mib, 4, maskp, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), maskp, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH && errno != EPERM)
 		warn("sysctl: kern.proc.umask: %d", pid);
 	return (error);
@@ -2139,7 +2139,7 @@ procstat_getrlimit_sysctl(pid_t pid, int
 	name[3] = pid;
 	name[4] = which;
 	len = sizeof(struct rlimit);
-	error = sysctl(name, 5, rlimit, &len, NULL, 0);
+	error = sysctl(name, nitems(name), rlimit, &len, NULL, 0);
 	if (error < 0 && errno != ESRCH) {
 		warn("sysctl: kern.proc.rlimit: %d", pid);
 		return (-1);
@@ -2201,7 +2201,7 @@ procstat_getpathname_sysctl(pid_t pid, c
 	name[2] = KERN_PROC_PATHNAME;
 	name[3] = pid;
 	len = maxlen;
-	error = sysctl(name, 4, pathname, &len, NULL, 0);
+	error = sysctl(name, nitems(name), pathname, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH)
 		warn("sysctl: kern.proc.pathname: %d", pid);
 	if (len == 0)
@@ -2281,7 +2281,7 @@ procstat_getosrel_sysctl(pid_t pid, int 
 	name[2] = KERN_PROC_OSREL;
 	name[3] = pid;
 	len = sizeof(*osrelp);
-	error = sysctl(name, 4, osrelp, &len, NULL, 0);
+	error = sysctl(name, nitems(name), osrelp, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH)
 		warn("sysctl: kern.proc.osrel: %d", pid);
 	return (error);
@@ -2341,7 +2341,7 @@ is_elf32_sysctl(pid_t pid)
 	name[2] = KERN_PROC_SV_NAME;
 	name[3] = pid;
 	len = sizeof(sv_name);
-	error = sysctl(name, 4, sv_name, &len, NULL, 0);
+	error = sysctl(name, nitems(name), sv_name, &len, NULL, 0);
 	if (error != 0 || len == 0)
 		return (0);
 	for (i = 0; i < sizeof(elf32_sv_names) / sizeof(*elf32_sv_names); i++) {
@@ -2372,7 +2372,7 @@ procstat_getauxv32_sysctl(pid_t pid, uns
 		warn("malloc(%zu)", len);
 		goto out;
 	}
-	if (sysctl(name, 4, auxv32, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), auxv32, &len, NULL, 0) == -1) {
 		if (errno != ESRCH && errno != EPERM)
 			warn("sysctl: kern.proc.auxv: %d: %d", pid, errno);
 		goto out;
@@ -2421,7 +2421,7 @@ procstat_getauxv_sysctl(pid_t pid, unsig
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(name, 4, auxv, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), auxv, &len, NULL, 0) == -1) {
 		if (errno != ESRCH && errno != EPERM)
 			warn("sysctl: kern.proc.auxv: %d: %d", pid, errno);
 		free(auxv);
@@ -2482,7 +2482,7 @@ procstat_getkstack_sysctl(pid_t pid, int
 	name[3] = pid;
 
 	len = 0;
-	error = sysctl(name, 4, NULL, &len, NULL, 0);
+	error = sysctl(name, nitems(name), NULL, &len, NULL, 0);
 	if (error < 0 && errno != ESRCH && errno != EPERM && errno != ENOENT) {
 		warn("sysctl: kern.proc.kstack: %d", pid);
 		return (NULL);
@@ -2499,7 +2499,7 @@ procstat_getkstack_sysctl(pid_t pid, int
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(name, 4, kkstp, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), kkstp, &len, NULL, 0) == -1) {
 		warn("sysctl: kern.proc.pid: %d", pid);
 		free(kkstp);
 		return (NULL);

Modified: projects/bsnmp-ipv6-mib/lib/libstand/bootp.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libstand/bootp.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libstand/bootp.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -62,8 +62,6 @@ __FBSDID("$FreeBSD$");
 
 struct in_addr servip;
 
-static n_long	nmask, smask;
-
 static time_t	bot;
 
 static	char vm_rfc1048[4] = VM_RFC1048;
@@ -223,30 +221,19 @@ bootp(sock, flag)
 	bcopy(rbuf.rbootp.bp_file, bootfile, sizeof(bootfile));
 	bootfile[sizeof(bootfile) - 1] = '\0';
 
-	if (IN_CLASSA(ntohl(myip.s_addr)))
-		nmask = htonl(IN_CLASSA_NET);
-	else if (IN_CLASSB(ntohl(myip.s_addr)))
-		nmask = htonl(IN_CLASSB_NET);
-	else
-		nmask = htonl(IN_CLASSC_NET);
-#ifdef BOOTP_DEBUG
-	if (debug)
-		printf("'native netmask' is %s\n", intoa(nmask));
-#endif
-
-	/* Check subnet mask against net mask; toss if bogus */
-	if ((nmask & smask) != nmask) {
+	if (!netmask) {
+		if (IN_CLASSA(ntohl(myip.s_addr)))
+			netmask = htonl(IN_CLASSA_NET);
+		else if (IN_CLASSB(ntohl(myip.s_addr)))
+			netmask = htonl(IN_CLASSB_NET);
+		else
+			netmask = htonl(IN_CLASSC_NET);
 #ifdef BOOTP_DEBUG
 		if (debug)
-			printf("subnet mask (%s) bad\n", intoa(smask));
+			printf("'native netmask' is %s\n", intoa(netmask));
 #endif
-		smask = 0;
 	}
 
-	/* Get subnet (or natural net) mask */
-	netmask = nmask;
-	if (smask)
-		netmask = smask;
 #ifdef BOOTP_DEBUG
 	if (debug)
 		printf("mask: %s\n", intoa(netmask));
@@ -385,7 +372,7 @@ vend_rfc1048(cp, len)
 			break;
 
 		if (tag == TAG_SUBNET_MASK) {
-			bcopy(cp, &smask, sizeof(smask));
+			bcopy(cp, &netmask, sizeof(netmask));
 		}
 		if (tag == TAG_GATEWAY) {
 			bcopy(cp, &gateip.s_addr, sizeof(gateip.s_addr));
@@ -445,7 +432,7 @@ vend_cmu(cp)
 	vp = (struct cmu_vend *)cp;
 
 	if (vp->v_smask.s_addr != 0) {
-		smask = vp->v_smask.s_addr;
+		netmask = vp->v_smask.s_addr;
 	}
 	if (vp->v_dgate.s_addr != 0) {
 		gateip = vp->v_dgate;

Modified: projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getallproc.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getallproc.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getallproc.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -31,8 +31,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -75,14 +75,14 @@ kinfo_getallproc(int *cntp)
 	mib[2] = KERN_PROC_PROC;
 
 	len = 0;
-	if (sysctl(mib, 3, NULL, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0)
 		return (NULL);
 
 	kipp = malloc(len);
 	if (kipp == NULL)
 		return (NULL);
 
-	if (sysctl(mib, 3, kipp, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), kipp, &len, NULL, 0) < 0)
 		goto bad;
 	if (len % sizeof(*kipp) != 0)
 		goto bad;

Modified: projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getfile.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getfile.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getfile.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -2,8 +2,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -26,14 +26,14 @@ kinfo_getfile(pid_t pid, int *cntp)
 	mib[2] = KERN_PROC_FILEDESC;
 	mib[3] = pid;
 
-	error = sysctl(mib, 4, NULL, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), NULL, &len, NULL, 0);
 	if (error)
 		return (NULL);
 	len = len * 4 / 3;
 	buf = malloc(len);
 	if (buf == NULL)
 		return (NULL);
-	error = sysctl(mib, 4, buf, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), buf, &len, NULL, 0);
 	if (error) {
 		free(buf);
 		return (NULL);

Modified: projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getproc.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getproc.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getproc.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -30,8 +30,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -49,14 +49,14 @@ kinfo_getproc(pid_t pid)
 	mib[1] = KERN_PROC;
 	mib[2] = KERN_PROC_PID;
 	mib[3] = pid;
-	if (sysctl(mib, 4, NULL, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0)
 		return (NULL);
 
 	kipp = malloc(len);
 	if (kipp == NULL)
 		return (NULL);
 
-	if (sysctl(mib, 4, kipp, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), kipp, &len, NULL, 0) < 0)
 		goto bad;
 	if (len != sizeof(*kipp))
 		goto bad;

Modified: projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getvmmap.c
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getvmmap.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/lib/libutil/kinfo_getvmmap.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -2,8 +2,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -26,14 +26,14 @@ kinfo_getvmmap(pid_t pid, int *cntp)
 	mib[2] = KERN_PROC_VMMAP;
 	mib[3] = pid;
 
-	error = sysctl(mib, 4, NULL, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), NULL, &len, NULL, 0);
 	if (error)
 		return (NULL);
 	len = len * 4 / 3;
 	buf = malloc(len);
 	if (buf == NULL)
 		return (NULL);
-	error = sysctl(mib, 4, buf, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), buf, &len, NULL, 0);
 	if (error) {
 		free(buf);
 		return (NULL);

Modified: projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.8
==============================================================================
--- projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.8	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.8	Mon Jan  9 01:00:20 2017	(r311716)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 30, 2016
+.Dd January 6, 2017
 .Dt CAMCONTROL 8
 .Os
 .Sh NAME
@@ -121,7 +121,7 @@
 .Ic modepage
 .Op device id
 .Op generic args
-.Aq Fl m Ar page | Fl l
+.Aq Fl m Ar page[,subpage] | Fl l
 .Op Fl P Ar pgctl
 .Op Fl b | Fl e
 .Op Fl d
@@ -702,9 +702,10 @@ The editor will be invoked if
 detects that standard input is terminal.
 .It Fl l
 Lists all available mode pages.
-.It Fl m Ar mode_page
-This specifies the number of the mode page the user would like to view
-and/or edit.
+If specified more then once, also lists subpages.
+.It Fl m Ar page[,subpage]
+This specifies the number of the mode page and optionally subpage the user
+would like to view and/or edit.
 This argument is mandatory unless
 .Fl l
 is specified.

Modified: projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.c
==============================================================================
--- projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -125,12 +125,9 @@ typedef enum {
 	CAM_ARG_GET_STDINQ	= 0x00002000,
 	CAM_ARG_GET_XFERRATE	= 0x00004000,
 	CAM_ARG_INQ_MASK	= 0x00007000,
-	CAM_ARG_MODE_EDIT	= 0x00008000,
-	CAM_ARG_PAGE_CNTL	= 0x00010000,
 	CAM_ARG_TIMEOUT		= 0x00020000,
 	CAM_ARG_CMD_IN		= 0x00040000,
 	CAM_ARG_CMD_OUT		= 0x00080000,
-	CAM_ARG_DBD		= 0x00100000,
 	CAM_ARG_ERR_RECOVER	= 0x00200000,
 	CAM_ARG_RETRIES		= 0x00400000,
 	CAM_ARG_START_UNIT	= 0x00800000,
@@ -3987,8 +3984,8 @@ reassignblocks(struct cam_device *device
 
 #ifndef MINIMALISTIC
 void
-mode_sense(struct cam_device *device, int mode_page, int page_control,
-	   int dbd, int retry_count, int timeout, u_int8_t *data, int datalen)
+mode_sense(struct cam_device *device, int dbd, int pc, int page, int subpage,
+	   int retry_count, int timeout, u_int8_t *data, int datalen)
 {
 	union ccb *ccb;
 	int retval;
@@ -4000,15 +3997,17 @@ mode_sense(struct cam_device *device, in
 
 	CCB_CLEAR_ALL_EXCEPT_HDR(&ccb->csio);
 
-	scsi_mode_sense(&ccb->csio,
+	scsi_mode_sense_subpage(&ccb->csio,
 			/* retries */ retry_count,
 			/* cbfcnp */ NULL,
 			/* tag_action */ MSG_SIMPLE_Q_TAG,
 			/* dbd */ dbd,
-			/* page_code */ page_control << 6,
-			/* page */ mode_page,
+			/* pc */ pc << 6,
+			/* page */ page,
+			/* subpage */ subpage,
 			/* param_buf */ data,
 			/* param_len */ datalen,
+			/* minimum_cmd_size */ 0,
 			/* sense_len */ SSD_FULL_SIZE,
 			/* timeout */ timeout ? timeout : 5000);
 
@@ -4089,8 +4088,9 @@ void
 modepage(struct cam_device *device, int argc, char **argv, char *combinedopt,
 	 int retry_count, int timeout)
 {
-	int c, mode_page = -1, page_control = 0;
-	int binary = 0, list = 0;
+	char *str_subpage;
+	int c, page = -1, subpage = -1, pc = 0;
+	int binary = 0, dbd = 0, edit = 0, list = 0;
 
 	while ((c = getopt(argc, argv, combinedopt)) != -1) {
 		switch(c) {
@@ -4098,40 +4098,44 @@ modepage(struct cam_device *device, int 
 			binary = 1;
 			break;
 		case 'd':
-			arglist |= CAM_ARG_DBD;
+			dbd = 1;
 			break;
 		case 'e':
-			arglist |= CAM_ARG_MODE_EDIT;
+			edit = 1;
 			break;
 		case 'l':
-			list = 1;
+			list++;
 			break;
 		case 'm':
-			mode_page = strtol(optarg, NULL, 0);
-			if (mode_page < 0)
-				errx(1, "invalid mode page %d", mode_page);
+			str_subpage = optarg;
+			strsep(&str_subpage, ",");
+			page = strtol(optarg, NULL, 0);
+			if (str_subpage)
+			    subpage = strtol(str_subpage, NULL, 0);
+			else
+			    subpage = 0;
+			if (page < 0)
+				errx(1, "invalid mode page %d", page);
+			if (subpage < 0)
+				errx(1, "invalid mode subpage %d", subpage);
 			break;
 		case 'P':
-			page_control = strtol(optarg, NULL, 0);
-			if ((page_control < 0) || (page_control > 3))
-				errx(1, "invalid page control field %d",
-				     page_control);
-			arglist |= CAM_ARG_PAGE_CNTL;
+			pc = strtol(optarg, NULL, 0);
+			if ((pc < 0) || (pc > 3))
+				errx(1, "invalid page control field %d", pc);
 			break;
 		default:
 			break;
 		}
 	}
 
-	if (mode_page == -1 && list == 0)
+	if (page == -1 && list == 0)
 		errx(1, "you must specify a mode page!");
 
-	if (list) {
-		mode_list(device, page_control, arglist & CAM_ARG_DBD,
-		    retry_count, timeout);
+	if (list != 0) {
+		mode_list(device, dbd, pc, list > 1, retry_count, timeout);
 	} else {
-		mode_edit(device, mode_page, page_control,
-		    arglist & CAM_ARG_DBD, arglist & CAM_ARG_MODE_EDIT, binary,
+		mode_edit(device, dbd, pc, page, subpage, edit, binary,
 		    retry_count, timeout);
 	}
 }

Modified: projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.h
==============================================================================
--- projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.h	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/sbin/camcontrol/camcontrol.h	Mon Jan  9 01:00:20 2017	(r311716)
@@ -84,14 +84,14 @@ int epc(struct cam_device *device, int a
 int timestamp(struct cam_device *device, int argc, char **argv,
 	      char *combinedopt, int retry_count, int timeout,
 	      int verbosemode);
-void mode_sense(struct cam_device *device, int mode_page, int page_control,
-		int dbd, int retry_count, int timeout, u_int8_t *data,
+void mode_sense(struct cam_device *device, int dbd, int pc, int page,
+		int subpage, int retry_count, int timeout, uint8_t *data,
 		int datalen);
 void mode_select(struct cam_device *device, int save_pages, int retry_count,
 		 int timeout, u_int8_t *data, int datalen);
-void mode_edit(struct cam_device *device, int page, int page_control, int dbd,
+void mode_edit(struct cam_device *device, int dbd, int pc, int page, int subpage,
 	       int edit, int binary, int retry_count, int timeout);
-void mode_list(struct cam_device *device, int page_control, int dbd,
+void mode_list(struct cam_device *device, int dbd, int pc, int subpages,
 	       int retry_count, int timeout);
 int scsidoinquiry(struct cam_device *device, int argc, char **argv,
 		  char *combinedopt, int retry_count, int timeout);

Modified: projects/bsnmp-ipv6-mib/sbin/camcontrol/modeedit.c
==============================================================================
--- projects/bsnmp-ipv6-mib/sbin/camcontrol/modeedit.c	Mon Jan  9 00:54:18 2017	(r311715)
+++ projects/bsnmp-ipv6-mib/sbin/camcontrol/modeedit.c	Mon Jan  9 01:00:20 2017	(r311716)
@@ -66,9 +66,6 @@ __FBSDID("$FreeBSD$");
 #define	MODE_PAGE_HEADER(mh)						\
 	(struct scsi_mode_page_header *)find_mode_page_6(mh)
 
-#define	MODE_PAGE_DATA(mph)						\
-	(u_int8_t *)(mph) + sizeof(struct scsi_mode_page_header)
-
 
 struct editentry {
 	STAILQ_ENTRY(editentry) link;
@@ -86,7 +83,8 @@ static int editlist_changed = 0;	/* Whet
 
 struct pagename {
 	SLIST_ENTRY(pagename) link;
-	int pagenum;
+	int page;
+	int subpage;
 	char *name;
 };
 static SLIST_HEAD(, pagename) namelist;	/* Page number to name mappings. */
@@ -106,21 +104,22 @@ static int		 editentry_save(void *hook, 
 static struct editentry	*editentry_lookup(char *name);
 static int		 editentry_set(char *name, char *newvalue,
 				       int editonly);
-static void		 editlist_populate(struct cam_device *device,
-					   int modepage, int page_control,
-					   int dbd, int retries, int timeout);
-static void		 editlist_save(struct cam_device *device, int modepage,
-				       int page_control, int dbd, int retries,
-				       int timeout);
-static void		 nameentry_create(int pagenum, char *name);
-static struct pagename	*nameentry_lookup(int pagenum);
-static int		 load_format(const char *pagedb_path, int page);
+static void		 editlist_populate(struct cam_device *device, int dbd,
+					   int pc, int page, int subpage,
+					   int retries, int timeout);
+static void		 editlist_save(struct cam_device *device, int dbd,
+				       int pc, int page, int subpage,
+				       int retries, int timeout);
+static void		 nameentry_create(int page, int subpage, char *name);
+static struct pagename	*nameentry_lookup(int page, int subpage);
+static int		 load_format(const char *pagedb_path, int lpage,
+			    int lsubpage);
 static int		 modepage_write(FILE *file, int editonly);
 static int		 modepage_read(FILE *file);
 static void		 modepage_edit(void);
-static void		 modepage_dump(struct cam_device *device, int page,
-				       int page_control, int dbd, int retries,
-				       int timeout);
+static void		 modepage_dump(struct cam_device *device, int dbd,
+			    int pc, int page, int subpage, int retries,
+			    int timeout);
 static void		 cleanup_editfile(void);
 
 
@@ -325,10 +324,10 @@ editentry_set(char *name, char *newvalue
 }
 
 static void
-nameentry_create(int pagenum, char *name) {
+nameentry_create(int page, int subpage, char *name) {
 	struct pagename *newentry;
 
-	if (pagenum < 0 || name == NULL || name[0] == '\0')
+	if (page < 0 || subpage < 0 || name == NULL || name[0] == '\0')
 		return;
 
 	/* Allocate memory for the new entry and a copy of the entry name. */
@@ -339,16 +338,17 @@ nameentry_create(int pagenum, char *name
 	/* Trim any trailing whitespace for the page name. */
 	RTRIM(newentry->name);
 
-	newentry->pagenum = pagenum;

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

From owner-svn-src-projects@freebsd.org  Mon Jan  9 01:35:34 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 61642CA5272
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 01:35:34 +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 3130C1029;
 Mon,  9 Jan 2017 01:35:34 +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 v091ZXLr098048;
 Mon, 9 Jan 2017 01:35:33 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v091ZXsQ098047;
 Mon, 9 Jan 2017 01:35:33 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701090135.v091ZXsQ098047@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 01:35:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311732 - projects/bsnmp-ipv6-mib/etc
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 01:35:34 -0000

Author: ngie
Date: Mon Jan  9 01:35:33 2017
New Revision: 311732
URL: https://svnweb.freebsd.org/changeset/base/311732

Log:
  The ipv6 module will require the mibII module

Modified:
  projects/bsnmp-ipv6-mib/etc/snmpd.config

Modified: projects/bsnmp-ipv6-mib/etc/snmpd.config
==============================================================================
--- projects/bsnmp-ipv6-mib/etc/snmpd.config	Mon Jan  9 01:31:16 2017	(r311731)
+++ projects/bsnmp-ipv6-mib/etc/snmpd.config	Mon Jan  9 01:35:33 2017	(r311732)
@@ -145,6 +145,7 @@ begemotSnmpdModulePath."mibII"	= "/usr/l
 
 #
 # IPv6 module
+#  This requires the mibII module.
 #
 #begemotSnmpdModulePath."ipv6MIB" = "/usr/lib/snmp_ipv6MIB.so"
 

From owner-svn-src-projects@freebsd.org  Mon Jan  9 02:34:28 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 079E1CA092D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 02:34:28 +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 BAF9F1307;
 Mon,  9 Jan 2017 02:34:27 +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 v092YQNZ022290;
 Mon, 9 Jan 2017 02:34:26 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v092YQ3w022289;
 Mon, 9 Jan 2017 02:34:26 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701090234.v092YQ3w022289@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 02:34:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311737 -
 projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 02:34:28 -0000

Author: ngie
Date: Mon Jan  9 02:34:26 2017
New Revision: 311737
URL: https://svnweb.freebsd.org/changeset/base/311737

Log:
  Start filling in the blanks from contrib/bsnmp/snmp_mibII/mibII_interfaces.c
  
  Add XXX comments for WIP items. Table isn't iterable, but at least it no longer
  blows up an snmpwalk (here at least)

Modified:
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.c

Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.c
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.c	Mon Jan  9 02:04:54 2017	(r311736)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6_ifTable.c	Mon Jan  9 02:34:26 2017	(r311737)
@@ -43,25 +43,25 @@ int
 op_ipv6IfTable(struct snmp_context *ctx __unused, struct snmp_value *value,
     u_int sub, u_int iidx __unused, enum snmp_op op)
 {
+	struct mibif *ifp = NULL;
 	asn_subid_t which;
+	int ret;
 
 	switch (op) {
-	case SNMP_OP_GETNEXT:
 #if 0
-		ip = NEXT_OBJECT_INT(&ipv6_interfaces, &value->var, sub);
-		if (ip == NULL)
-			return SNMP_ERR_NOSUCHNAME;
+	case SNMP_OP_GETNEXT:
+		if ((ifp = NEXT_OBJECT_INT(&mibif_list, &value->var, sub)) == NULL)
+			return (SNMP_ERR_NOSUCHNAME);
 		value->var.len = sub + 1;
-		value->var.subs[sub] = ip->index;
-#endif
+		value->var.subs[sub] = ifp->index;
 		break;
 	case SNMP_OP_GET:
-#if 0
-		ip = FIND_OBJECT_INT(&ipv6_interfaces, &value->var, sub);
-		if (ip == NULL)
+		if (value->var.len - sub != 1)
+			return (SNMP_ERR_NOSUCHNAME);
+		if ((ifp = mib_find_if(value->var.subs[sub])) == NULL)
 			return (SNMP_ERR_NOSUCHNAME);
-#endif
 		break;
+#endif
 	case SNMP_OP_SET:
 	case SNMP_OP_COMMIT:
 	case SNMP_OP_ROLLBACK:
@@ -72,16 +72,20 @@ op_ipv6IfTable(struct snmp_context *ctx 
 
 	which = value->var.subs[sub - 1];
 
-	switch (which) {
-	case LEAF_ipv6IfDescr:
 #if 0
-		string_get(value, ip->name, strlen(ip->name));
+	/* XXX (ngie): expose mib_fetch_ifmib */
+	if (ifp->mibtick < this_tick)
+		(void)mib_fetch_ifmib(ifp);
 #endif
+
+	switch (which) {
+	case LEAF_ipv6IfDescr:
+		ret = string_get(value, ifp->descr, -1);
 		break;
 	case LEAF_ipv6IfLowerLayer:
 		/*
-		 * TODO: return nullOID until the proper way is figured out.
-		 * For now, use `oid_zeroDotZero`.
+		 * XXX (thor): return nullOID until the proper way is figured
+		 * out. For now, use `oid_zeroDotZero`.
 		 */
 		oid_get(value, &oid_zeroDotZero);
 		break;
@@ -89,26 +93,10 @@ op_ipv6IfTable(struct snmp_context *ctx 
 		value->v.uint32 = IPV6_MAXPACKET;
 		break;
 	case LEAF_ipv6IfEffectiveMtu:
-	{
-#if 0
-		struct ifreq ifr;
-		int s;
-
-		memset(&ifr, 0, sizeof(ifr));
-		ifr.ifr_addr.sa_family = AF_INET6;
-		strncpy(ifr.ifr_name, ip->name, sizeof(ifr.ifr_name));
-
-		if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0)
-			return (SNMP_ERR_RES_UNAVAIL);
-
-		if (ioctl(s, SIOCGIFMTU, (caddr_t) &ifr) != -1)
-			value->v.uint32 = ifr.ifr_mtu;
-
-		close(s);
-#endif
+		value->v.integer = ifp->mib.ifmd_data.ifi_mtu;
 		break;
-	}
 	case LEAF_ipv6IfIdentifier:
+		/* XXX (ngie): implement this */
 		string_get(value, "", 0);
 		break;
 	case LEAF_ipv6IfIdentifierLength:
@@ -116,87 +104,29 @@ op_ipv6IfTable(struct snmp_context *ctx 
 		value->v.integer = 0;
 		break;
 	case LEAF_ipv6IfPhysicalAddress:
-	{
-#if 0
- 		get_physaddr();
-		if (tmp == NULL)
-			string_get(value, "", 0);
-		else
-			string_get(value, tmp, strlen(tmp));
-#endif
+		ret = string_get(value, ifp->physaddr,
+		    ifp->physaddrlen);
 		break;
-	}
 	case LEAF_ipv6IfAdminStatus:
-	{
-#if 0
-		struct ifaddrs *ifap, *ifa;
-
-		if (getifaddrs(&ifap) == -1) {
-			value->v.integer = 4; /* Unknown */
-			break;
-		}
-
-		value->v.integer = 2;
-		for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
-			if (strcmp(ifa->ifa_name, ip->name) != 0)
-				continue;
-			if (ifa->ifa_addr->sa_family != AF_INET6)
-				continue;
-			value->v.integer =
-			    (ifa->ifa_flags & IFF_RUNNING) ? 1 : 2;
-			break;
-		}
-		freeifaddrs(ifap);
-#endif
+		value->v.integer =
+		    (ifp->mib.ifmd_flags & IFF_UP) ? 1 : 2;
 		break;
-	}
 	case LEAF_ipv6IfOperStatus:
-	{
-#if 0
-		struct ifaddrs *ifap, *ifa;
-		if (getifaddrs(&ifap) == -1) {
-			value->v.integer = 4; /* Unknown */
-			break;
-		}
-
-		value->v.integer = 2;
-
-		for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
-			if (strcmp(ifa->ifa_name, ip->name) != 0)
-				continue;
-			if (ifa->ifa_addr->sa_family != AF_INET6)
-				continue;
-			value->v.integer = (ifa->ifa_flags & IFF_UP) ? 1 : 2;
-			break;
-		}
-		freeifaddrs(ifap);
-#endif
+		if ((ifp->mib.ifmd_flags & IFF_RUNNING) != 0) {
+			if (ifp->mib.ifmd_data.ifi_link_state != LINK_STATE_UP)
+				value->v.integer = 5;   /* state dormant */
+			else
+				value->v.integer = 1;   /* state up */
+		} else
+			value->v.integer = 2;   /* state down */
 		break;
-	}
-	case LEAF_ipv6IfLastChange:
-	{
 #if 0
-		/*
-		 * XXX (ngie): not checking for error code from
-		 * gettimeofday(2).
-		 */
-		struct timeval lastchange, now;
-		struct ifmibdata ifmd;
-
-		if (if_getifmibdata(ip->index, &ifmd) != 0) {
-			value->v.uint32 = 0;
-			break;
-		}
-		lastchange = ifmd.ifmd_data.ifi_lastchange;
-
-		gettimeofday(&now, (struct timezone*)NULL);
+	/* XXX (ngie): export from mib-II to somewhere more sensible. */
+	case LEAF_ipv6IfLastChange:
 		value->v.uint32 =
-		    (uint32_t)((now.tv_sec - lastchange.tv_sec) * 100);
-		value->v.uint32 +=
-		    (uint32_t)((now.tv_usec - lastchange.tv_usec) / 10000);
-#endif
+		    ticks_get_timeval(&ifp->mib.ifmd_data.ifi_lastchange);
 		break;
-	}
+#endif
 	default:
 		return (SNMP_ERR_RES_UNAVAIL);
 	}

From owner-svn-src-projects@freebsd.org  Mon Jan  9 02:48:10 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 35468CA0BD1
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 02:48:10 +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 E4666178D;
 Mon,  9 Jan 2017 02:48:09 +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 v092m9sM026476;
 Mon, 9 Jan 2017 02:48:09 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v092m9NE026475;
 Mon, 9 Jan 2017 02:48:09 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701090248.v092m9NE026475@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 02:48:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311738 - projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 02:48:10 -0000

Author: ngie
Date: Mon Jan  9 02:48:08 2017
New Revision: 311738
URL: https://svnweb.freebsd.org/changeset/base/311738

Log:
  Allow SHLIB_MAJOR to be overridden

Modified:
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/Makefile.inc

Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/Makefile.inc
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/Makefile.inc	Mon Jan  9 02:34:26 2017	(r311737)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/Makefile.inc	Mon Jan  9 02:48:08 2017	(r311738)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-SHLIB_MAJOR=	6
+SHLIB_MAJOR?=	6
 PACKAGE=	bsnmp
 
 MANFILTER=	sed -e 's%@MODPATH@%${LIBDIR}/%g'		\

From owner-svn-src-projects@freebsd.org  Mon Jan  9 05:26:02 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 3F3AECA6ED8
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 05:26:02 +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 E6A86110B;
 Mon,  9 Jan 2017 05:26:01 +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 v095Q1fK091517;
 Mon, 9 Jan 2017 05:26:01 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v095Q1tP091516;
 Mon, 9 Jan 2017 05:26:01 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701090526.v095Q1tP091516@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 05:26:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311745 -
 projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 05:26:02 -0000

Author: ngie
Date: Mon Jan  9 05:26:00 2017
New Revision: 311745
URL: https://svnweb.freebsd.org/changeset/base/311745

Log:
  Stash more minor work-in-progress bits
  (deleting braces, added `which` for consistency with other modules, adding
  XXX comments, etc).

Modified:
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c

Modified: projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c
==============================================================================
--- projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c	Mon Jan  9 04:35:55 2017	(r311744)
+++ projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_ipv6/ipv6.c	Mon Jan  9 05:26:00 2017	(r311745)
@@ -52,8 +52,12 @@ op_ipv6MIBObjects(struct snmp_context *c
 {
 	const char *namestr = NULL;
 	int name[] = { CTL_NET, PF_INET6, IPPROTO_IPV6, 0 };
-	int result = 0;
-	size_t resultsiz = sizeof(result);
+	asn_subid_t which;
+	size_t resultsz;
+	int result;
+
+	result = 0;
+	resultsz = sizeof(result);
 
 	switch (op) {
 	case SNMP_OP_GETNEXT:
@@ -66,11 +70,13 @@ op_ipv6MIBObjects(struct snmp_context *c
 		return (SNMP_ERR_NOERROR);
 	}
 
-	switch (value->var.subs[sub - 1]) {
+	which = value->var.subs[sub - 1];
+
+	switch (which) {
 	case LEAF_ipv6Forwarding:
 		name[3] = IPV6CTL_FORWARDING;
 		namestr = "IPV6CTL_FORWARDING";
-		if (sysctl(name, nitems(name), &result, &resultsiz, NULL,
+		if (sysctl(name, nitems(name), &result, &resultsz, NULL,
 		    0) < 0)
 			return (SNMP_ERR_GENERR);
 		if (result == 0)
@@ -81,13 +87,12 @@ op_ipv6MIBObjects(struct snmp_context *c
 	case LEAF_ipv6DefaultHopLimit:
 		name[3] = IPV6CTL_DEFHLIM;
 		namestr = "IPV6CTL_DEFHLIM";
-		if (sysctl(name, nitems(name), &result, &resultsiz, NULL,
+		if (sysctl(name, nitems(name), &result, &resultsz, NULL,
 		    0) < 0)
 			return (SNMP_ERR_GENERR);
 		value->v.integer = result;
 		break;
 	case LEAF_ipv6IfTableLastChange:
-	{
 		mib_ipv6_refresh_interfaces();
 		if (mib_ipv6_ipv6IfTableLastChange > start_tick)
 			value->v.uint32 =
@@ -95,7 +100,6 @@ op_ipv6MIBObjects(struct snmp_context *c
 		else
 			value->v.uint32 = 0;
 		break;
-	}
 	case LEAF_ipv6Interfaces:
 		mib_ipv6_refresh_interfaces();
 		value->v.integer = mib_ipv6_ipv6Interfaces;
@@ -103,6 +107,7 @@ op_ipv6MIBObjects(struct snmp_context *c
 	default:
 		return (SNMP_ERR_NOSUCHNAME);
 	}
+
 	return (SNMP_ERR_NOERROR);
 }
 

From owner-svn-src-projects@freebsd.org  Mon Jan  9 11:31:05 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 4A631CA67CF
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 11:31:05 +0000 (UTC) (envelope-from ae@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 1F2DE1E83;
 Mon,  9 Jan 2017 11:31:05 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09BV43v040987;
 Mon, 9 Jan 2017 11:31:04 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09BV43g040986;
 Mon, 9 Jan 2017 11:31:04 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701091131.v09BV43g040986@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Mon, 9 Jan 2017 11:31:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311782 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 11:31:05 -0000

Author: ae
Date: Mon Jan  9 11:31:04 2017
New Revision: 311782
URL: https://svnweb.freebsd.org/changeset/base/311782

Log:
  Rework PCB SP cache to avoid races.
  
  Add ipsec_cachepolicy() and ipsec_invalidate_cache() functions that
  implement the cache logic. Use INPCB lock to protect access to the cache.
  Also, now SP are kept in the cache referenced. This protects from access
  to already freed policies.

Modified:
  projects/ipsec/sys/netipsec/ipsec.c

Modified: projects/ipsec/sys/netipsec/ipsec.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:11:52 2017	(r311781)
+++ projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:31:04 2017	(r311782)
@@ -285,29 +285,113 @@ key_allocsp_default(void)
 	return (sp);
 }
 
-static struct secpolicy *
-ipsec_checkpolicy(struct secpolicy *sp, struct inpcb *inp, int *error)
+static void
+ipsec_invalidate_cache(struct inpcb *inp, u_int dir)
+{
+	struct secpolicy *sp;
+
+	INP_WLOCK_ASSERT(inp);
+	if (dir == IPSEC_DIR_OUTBOUND) {
+		if (inp->inp_sp->flags & INP_INBOUND_POLICY)
+			return;
+		sp = inp->inp_sp->sp_in;
+		inp->inp_sp->sp_in = NULL;
+	} else {
+		if (inp->inp_sp->flags & INP_OUTBOUND_POLICY)
+			return;
+		sp = inp->inp_sp->sp_out;
+		inp->inp_sp->sp_out = NULL;
+	}
+	if (sp != NULL)
+		key_freesp(&sp); /* release extra reference */
+}
+
+static void
+ipsec_cachepolicy(struct inpcb *inp, struct secpolicy *sp, u_int dir)
 {
 	uint32_t genid;
+	int downgrade;
+
+	INP_LOCK_ASSERT(inp);
 
-	if (inp != NULL && inp->inp_sp != NULL &&
-	    (inp->inp_sp->flags & INP_OUTBOUND_POLICY) == 0 &&
-	    inp->inp_sp->sp_out == NULL) {
+	if (dir == IPSEC_DIR_OUTBOUND) {
+		/* Do we have configured PCB policy? */
+		if (inp->inp_sp->flags & INP_OUTBOUND_POLICY)
+			return;
+		/* Another thread has already set cached policy */
+		if (inp->inp_sp->sp_out != NULL)
+			return;
 		/*
-		 * Save found OUTBOUND policy into PCB SP cache.
+		 * Do not cache OUTBOUND policy if PCB isn't connected,
+		 * i.e. foreign address is INADDR_ANY/UNSPECIFIED.
 		 */
-		genid = key_getspgen();
-		inp->inp_sp->sp_out = sp;
-		if (genid != inp->inp_sp->genid) {
-			/* Reset INBOUND cached policy if genid is changed */
-			if ((inp->inp_sp->flags & INP_INBOUND_POLICY) == 0)
-				inp->inp_sp->sp_in = NULL;
-			inp->inp_sp->genid = genid;
-		}
-		KEYDBG(IPSEC_STAMP,
-		    printf("%s: PCB(%p): cached SP(%p)\n",
-		    __func__, inp, sp));
+#ifdef INET
+		if ((inp->inp_vflag & INP_IPV4) != 0 &&
+		    inp->inp_faddr.s_addr == INADDR_ANY)
+			return;
+#endif
+#ifdef INET6
+		if ((inp->inp_vflag & INP_IPV6) != 0 &&
+		    IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
+			return;
+#endif
+	} else {
+		/* Do we have configured PCB policy? */
+		if (inp->inp_sp->flags & INP_INBOUND_POLICY)
+			return;
+		/* Another thread has already set cached policy */
+		if (inp->inp_sp->sp_in != NULL)
+			return;
+		/*
+		 * Do not cache INBOUND policy for listen socket,
+		 * that is bound to INADDR_ANY/UNSPECIFIED address.
+		 */
+#ifdef INET
+		if ((inp->inp_vflag & INP_IPV4) != 0 &&
+		    inp->inp_faddr.s_addr == INADDR_ANY)
+			return;
+#endif
+#ifdef INET6
+		if ((inp->inp_vflag & INP_IPV6) != 0 &&
+		    IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr))
+			return;
+#endif
+	}
+	downgrade = 0;
+	if (!INP_WLOCKED(inp)) {
+		if ((downgrade = INP_TRY_UPGRADE(inp)) == 0)
+			return;
 	}
+	if (dir == IPSEC_DIR_OUTBOUND)
+		inp->inp_sp->sp_out = sp;
+	else
+		inp->inp_sp->sp_in = sp;
+	/*
+	 * SP is already referenced by the lookup code.
+	 * We take extra reference here to avoid race in the
+	 * ipsec_getpcbpolicy() function - SP will not be freed in the
+	 * time between we take SP pointer from the cache and key_addref()
+	 * call.
+	 */
+	key_addref(sp);
+	genid = key_getspgen();
+	if (genid != inp->inp_sp->genid)
+		ipsec_invalidate_cache(inp, dir);
+	KEYDBG(IPSEC_STAMP,
+	    printf("%s: PCB(%p): cached SP(%p)\n",
+	    __func__, inp, sp));
+	if (downgrade != 0)
+		INP_DOWNGRADE(inp);
+}
+
+static struct secpolicy *
+ipsec_checkpolicy(struct secpolicy *sp, struct inpcb *inp, int *error)
+{
+
+	/* Save found OUTBOUND policy into PCB SP cache. */
+	if (inp != NULL && inp->inp_sp != NULL && inp->inp_sp->sp_out == NULL)
+		ipsec_cachepolicy(inp, sp, IPSEC_DIR_OUTBOUND);
+
 	switch (sp->policy) {
 	default:
 		printf("%s: invalid policy %u\n", __func__, sp->policy);
@@ -333,11 +417,13 @@ static struct secpolicy *
 ipsec_getpcbpolicy(struct inpcb *inp, u_int dir)
 {
 	struct secpolicy *sp;
-	int flags;
+	int flags, downgrade;
 
 	if (inp == NULL || inp->inp_sp == NULL)
 		return (NULL);
 
+	INP_LOCK_ASSERT(inp);
+
 	flags = inp->inp_sp->flags;
 	if (dir == IPSEC_DIR_OUTBOUND) {
 		sp = inp->inp_sp->sp_out;
@@ -354,14 +440,16 @@ ipsec_getpcbpolicy(struct inpcb *inp, u_
 		if (sp == NULL)
 			return (NULL);
 		if (inp->inp_sp->genid != key_getspgen()) {
-			/*
-			 * Invalidate the cache.
-			 * Do not touch policy if it was set by PCB.
-			 */
-			if ((inp->inp_sp->flags & INP_INBOUND_POLICY) == 0)
-				inp->inp_sp->sp_in = NULL;
-			if ((inp->inp_sp->flags & INP_OUTBOUND_POLICY) == 0)
-				inp->inp_sp->sp_out = NULL;
+			/* Invalidate the cache. */
+			downgrade = 0;
+			if (!INP_WLOCKED(inp)) {
+				if ((downgrade = INP_TRY_UPGRADE(inp)) == 0)
+					return (NULL);
+			}
+			ipsec_invalidate_cache(inp, IPSEC_DIR_OUTBOUND);
+			ipsec_invalidate_cache(inp, IPSEC_DIR_INBOUND);
+			if (downgrade != 0)
+				INP_DOWNGRADE(inp);
 			return (NULL);
 		}
 		KEYDBG(IPSEC_STAMP,
@@ -369,7 +457,6 @@ ipsec_getpcbpolicy(struct inpcb *inp, u_
 		    __func__, inp, sp));
 		/* Return referenced cached policy */
 	}
-	IPSEC_ASSERT(sp != NULL, ("null SP, but flags is 0x%04x", flags));
 	key_addref(sp);
 	return (sp);
 }
@@ -909,37 +996,15 @@ ipsec_check_history(const struct mbuf *m
 static int
 ipsec_in_reject(struct secpolicy *sp, struct inpcb *inp, const struct mbuf *m)
 {
-	uint32_t genid;
 	int i;
 
 	KEYDBG(IPSEC_STAMP,
 	    printf("%s: PCB(%p): using SP(%p)\n", __func__, inp, sp));
 	KEYDBG(IPSEC_DATA, kdebug_secpolicy(sp));
 
-	if (inp != NULL &&
-	    (inp->inp_sp->flags & INP_INBOUND_POLICY) == 0 &&
-	    inp->inp_sp->sp_in == NULL &&
-	    inp->inp_laddr.s_addr != INADDR_ANY) {
-		/*
-		 * Save found INBOUND policy into PCB SP cache.
-		 * NOTE: We do this only if local address isn't INADDR_ANY,
-		 * because a cached policy for listen socket, that bound to
-		 * ANY address, may prevent to establish another connection.
-		 * We don't check address family, since both INADDR_ANY and
-		 * UNSPECIFIED IPv6 address contains all zeroes.
-		 */
-		genid = key_getspgen();
-		inp->inp_sp->sp_in = sp;
-		if (genid != inp->inp_sp->genid) {
-			/* Reset OUTBOUND cached policy if genid is changed */
-			if ((inp->inp_sp->flags & INP_OUTBOUND_POLICY) == 0)
-				inp->inp_sp->sp_out = NULL;
-			inp->inp_sp->genid = genid;
-		}
-		KEYDBG(IPSEC_STAMP,
-		    printf("%s: PCB(%p): cached SP(%p)\n",
-		    __func__, inp, sp));
-	}
+	if (inp != NULL && inp->inp_sp != NULL && inp->inp_sp->sp_in == NULL)
+		ipsec_cachepolicy(inp, sp, IPSEC_DIR_INBOUND);
+
 	/* Check policy. */
 	switch (sp->policy) {
 	case IPSEC_POLICY_DISCARD:

From owner-svn-src-projects@freebsd.org  Mon Jan  9 11:34:34 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 48C29CA67F9
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 11:34:34 +0000 (UTC) (envelope-from ae@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 15DE51232;
 Mon,  9 Jan 2017 11:34:34 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09BYX3E044850;
 Mon, 9 Jan 2017 11:34:33 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09BYXDC044849;
 Mon, 9 Jan 2017 11:34:33 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701091134.v09BYXDC044849@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Mon, 9 Jan 2017 11:34:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311783 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 11:34:34 -0000

Author: ae
Date: Mon Jan  9 11:34:33 2017
New Revision: 311783
URL: https://svnweb.freebsd.org/changeset/base/311783

Log:
  Save SP generation id when cache is updated.

Modified:
  projects/ipsec/sys/netipsec/ipsec.c

Modified: projects/ipsec/sys/netipsec/ipsec.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:31:04 2017	(r311782)
+++ projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:34:33 2017	(r311783)
@@ -375,8 +375,10 @@ ipsec_cachepolicy(struct inpcb *inp, str
 	 */
 	key_addref(sp);
 	genid = key_getspgen();
-	if (genid != inp->inp_sp->genid)
+	if (genid != inp->inp_sp->genid) {
 		ipsec_invalidate_cache(inp, dir);
+		inp->inp_sp->genid = genid;
+	}
 	KEYDBG(IPSEC_STAMP,
 	    printf("%s: PCB(%p): cached SP(%p)\n",
 	    __func__, inp, sp));

From owner-svn-src-projects@freebsd.org  Mon Jan  9 11:37:27 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 0EC09CA6A16
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 11:37:27 +0000 (UTC) (envelope-from ae@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 D2EC01620;
 Mon,  9 Jan 2017 11:37:26 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09BbQcn044995;
 Mon, 9 Jan 2017 11:37:26 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09BbQe1044994;
 Mon, 9 Jan 2017 11:37:26 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701091137.v09BbQe1044994@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Mon, 9 Jan 2017 11:37:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311784 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 11:37:27 -0000

Author: ae
Date: Mon Jan  9 11:37:25 2017
New Revision: 311784
URL: https://svnweb.freebsd.org/changeset/base/311784

Log:
  Print SP direction in debug message.

Modified:
  projects/ipsec/sys/netipsec/ipsec.c

Modified: projects/ipsec/sys/netipsec/ipsec.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:34:33 2017	(r311783)
+++ projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:37:25 2017	(r311784)
@@ -380,8 +380,9 @@ ipsec_cachepolicy(struct inpcb *inp, str
 		inp->inp_sp->genid = genid;
 	}
 	KEYDBG(IPSEC_STAMP,
-	    printf("%s: PCB(%p): cached SP(%p)\n",
-	    __func__, inp, sp));
+	    printf("%s: PCB(%p): cached %s SP(%p)\n",
+	    __func__, inp, dir == IPSEC_DIR_OUTBOUND ? "OUTBOUND":
+	    "INBOUND", sp));
 	if (downgrade != 0)
 		INP_DOWNGRADE(inp);
 }

From owner-svn-src-projects@freebsd.org  Mon Jan  9 13:12:10 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 EAB3CCA61EC
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 13:12:10 +0000 (UTC) (envelope-from ae@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 AA8AE124E;
 Mon,  9 Jan 2017 13:12:10 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09DC90h084257;
 Mon, 9 Jan 2017 13:12:09 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09DC9BT084254;
 Mon, 9 Jan 2017 13:12:09 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701091312.v09DC9BT084254@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Mon, 9 Jan 2017 13:12:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311785 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 13:12:11 -0000

Author: ae
Date: Mon Jan  9 13:12:09 2017
New Revision: 311785
URL: https://svnweb.freebsd.org/changeset/base/311785

Log:
  Change IPsec default policy to be allocated on module initialization,
  instead of using static variable. Since each security policy can be
  cached in PCB, static variable becomes invalid after module unload.
  When module is loaded again, the cache will be invalidated, and this
  leads to access to invalid memory. Now default security policy is
  allocated on module initialization like all another policies. And
  such policies will be kept until last reference isn't released on
  next cache invalidation.
  
  Also modify corresponding sysctl variables to be SYSCTL_PROC.

Modified:
  projects/ipsec/sys/netipsec/ipsec.c
  projects/ipsec/sys/netipsec/ipsec.h
  projects/ipsec/sys/netipsec/ipsec_mod.c

Modified: projects/ipsec/sys/netipsec/ipsec.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 11:37:25 2017	(r311784)
+++ projects/ipsec/sys/netipsec/ipsec.c	Mon Jan  9 13:12:09 2017	(r311785)
@@ -123,8 +123,24 @@ static VNET_DEFINE(int, ip4_filtertunnel
 #define	V_ip4_filtertunnel VNET(ip4_filtertunnel)
 static VNET_DEFINE(int, check_policy_history) = 0;
 #define	V_check_policy_history	VNET(check_policy_history)
-static VNET_DEFINE(struct secpolicy, def_policy);
+static VNET_DEFINE(struct secpolicy *, def_policy) = NULL;
 #define	V_def_policy	VNET(def_policy)
+static int
+sysctl_def_policy(SYSCTL_HANDLER_ARGS)
+{
+	int error, value;
+
+	value = V_def_policy->policy;
+	error = sysctl_handle_int(oidp, &value, 0, req);
+	if (error == 0) {
+		if (value != IPSEC_POLICY_DISCARD &&
+		    value != IPSEC_POLICY_NONE)
+			return (EINVAL);
+		V_def_policy->policy = value;
+	}
+	return (error);
+}
+
 /*
  * Crypto support requirements:
  *
@@ -148,8 +164,8 @@ FEATURE(ipsec_natt, "UDP Encapsulation o
 SYSCTL_DECL(_net_inet_ipsec);
 
 /* net.inet.ipsec */
-SYSCTL_INT(_net_inet_ipsec, IPSECCTL_DEF_POLICY, def_policy,
-	CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(def_policy).policy, 0,
+SYSCTL_PROC(_net_inet_ipsec, IPSECCTL_DEF_POLICY, def_policy,
+	CTLTYPE_INT | CTLFLAG_VNET | CTLFLAG_RW, 0, 0, sysctl_def_policy, "I",
 	"IPsec default policy.");
 SYSCTL_INT(_net_inet_ipsec, IPSECCTL_DEF_ESP_TRANSLEV, esp_trans_deflev,
 	CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(ip4_esp_trans_deflev), 0,
@@ -229,8 +245,8 @@ static VNET_DEFINE(int, ip6_filtertunnel
 SYSCTL_DECL(_net_inet6_ipsec6);
 
 /* net.inet6.ipsec6 */
-SYSCTL_INT(_net_inet6_ipsec6, IPSECCTL_DEF_POLICY, def_policy,
-	CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(def_policy).policy, 0,
+SYSCTL_PROC(_net_inet6_ipsec6, IPSECCTL_DEF_POLICY, def_policy,
+	CTLTYPE_INT | CTLFLAG_VNET | CTLFLAG_RW, 0, 0, sysctl_def_policy, "I",
 	"IPsec default policy.");
 SYSCTL_INT(_net_inet6_ipsec6, IPSECCTL_DEF_ESP_TRANSLEV, esp_trans_deflev,
 	CTLFLAG_VNET | CTLFLAG_RW, &VNET_NAME(ip6_esp_trans_deflev), 0,
@@ -272,17 +288,9 @@ static void ipsec6_setspidx_ipaddr(const
 static struct secpolicy *
 key_allocsp_default(void)
 {
-	struct secpolicy *sp;
 
-	sp = &V_def_policy;
-	if (sp->policy != IPSEC_POLICY_DISCARD &&
-	    sp->policy != IPSEC_POLICY_NONE) {
-		ipseclog((LOG_INFO, "fixed system default policy: %d->%d\n",
-		    sp->policy, IPSEC_POLICY_NONE));
-		sp->policy = IPSEC_POLICY_NONE;
-	}
-	key_addref(sp);
-	return (sp);
+	key_addref(V_def_policy);
+	return (V_def_policy);
 }
 
 static void
@@ -1345,16 +1353,38 @@ ipsec_updateid(struct secasvar *sav, uin
 	return (0);
 }
 
+int
+ipsec_initialized(void)
+{
+
+	return (V_def_policy != NULL);
+}
+
 static void
 def_policy_init(const void *unused __unused)
 {
 
-	bzero(&V_def_policy, sizeof(struct secpolicy));
-	V_def_policy.policy = IPSEC_POLICY_NONE;
-	V_def_policy.refcnt = 1;
+	V_def_policy = key_newsp();
+	if (V_def_policy != NULL) {
+		V_def_policy->policy = IPSEC_POLICY_NONE;
+		/* Force INPCB SP cache invalidation */
+		key_bumpspgen();
+	} else
+		printf("%s: failed to initialize default policy\n", __func__);
+}
+
 
-	/* Force INPCB SP cache invalidation */
-	key_bumpspgen();
+static void
+def_policy_uninit(const void *unused __unused)
+{
+
+	if (V_def_policy != NULL) {
+		key_freesp(&V_def_policy);
+		key_bumpspgen();
+	}
 }
+
 VNET_SYSINIT(def_policy_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST,
     def_policy_init, NULL);
+VNET_SYSUNINIT(def_policy_uninit, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST,
+    def_policy_uninit, NULL);

Modified: projects/ipsec/sys/netipsec/ipsec.h
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec.h	Mon Jan  9 11:37:25 2017	(r311784)
+++ projects/ipsec/sys/netipsec/ipsec.h	Mon Jan  9 13:12:09 2017	(r311785)
@@ -319,6 +319,7 @@ int udp_ipsec_pcbctl(struct inpcb *, str
 int ipsec_chkreplay(uint32_t, struct secasvar *);
 int ipsec_updatereplay(uint32_t, struct secasvar *);
 int ipsec_updateid(struct secasvar *, uint64_t *, uint64_t *);
+int ipsec_initialized(void);
 
 void ipsec_setspidx_inpcb(struct inpcb *, struct secpolicyindex *, u_int);
 

Modified: projects/ipsec/sys/netipsec/ipsec_mod.c
==============================================================================
--- projects/ipsec/sys/netipsec/ipsec_mod.c	Mon Jan  9 11:37:25 2017	(r311784)
+++ projects/ipsec/sys/netipsec/ipsec_mod.c	Mon Jan  9 13:12:09 2017	(r311785)
@@ -107,6 +107,8 @@ ipsec_modevent(module_t mod, int type, v
 	switch (type) {
 	case MOD_LOAD:
 		/* All xforms are registered via SYSINIT */
+		if (!ipsec_initialized())
+			return (ENOMEM);
 #ifdef KLD_MODULE
 #ifdef INET
 		ipsec_support_enable(ipv4_ipsec_support, &ipv4_methods);

From owner-svn-src-projects@freebsd.org  Mon Jan  9 18:35:44 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 5F998CA7B34
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 18:35:44 +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 266421C9B;
 Mon,  9 Jan 2017 18:35:44 +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 v09IZh9B023381;
 Mon, 9 Jan 2017 18:35:43 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09IZfwL023365;
 Mon, 9 Jan 2017 18:35:41 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701091835.v09IZfwL023365@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Mon, 9 Jan 2017 18:35:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311805 - in projects/bsnmp-ipv6-mib:
 contrib/bsnmp/gensnmpdef contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd
 lib/libprocstat share/mk sys/arm/ti sys/cam/ctl sys/conf
 sys/dev/hyperv/inclu...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 18:35:44 -0000

Author: ngie
Date: Mon Jan  9 18:35:41 2017
New Revision: 311805
URL: https://svnweb.freebsd.org/changeset/base/311805

Log:
  MFhead@r311262

Added:
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_fdt_gpio.c
     - copied unchanged from r311804, head/sys/dev/sdhci/sdhci_fdt_gpio.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_fdt_gpio.h
     - copied unchanged from r311804, head/sys/dev/sdhci/sdhci_fdt_gpio.h
Deleted:
  projects/bsnmp-ipv6-mib/lib/libprocstat/Versions.def
Modified:
  projects/bsnmp-ipv6-mib/contrib/bsnmp/gensnmpdef/gensnmpdef.c
  projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt
  projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/mibII.c
  projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt
  projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/FOKUS-MIB.txt
  projects/bsnmp-ipv6-mib/lib/libprocstat/Makefile
  projects/bsnmp-ipv6-mib/share/mk/bsd.README
  projects/bsnmp-ipv6-mib/sys/arm/ti/ti_sdhci.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_backend.h
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.h
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_ioctl.h
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_private.h
  projects/bsnmp-ipv6-mib/sys/conf/files
  projects/bsnmp-ipv6-mib/sys/dev/hyperv/include/hyperv.h
  projects/bsnmp-ipv6-mib/sys/dev/hyperv/utilities/vmbus_timesync.c
  projects/bsnmp-ipv6-mib/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c
  projects/bsnmp-ipv6-mib/sys/dev/hyperv/vmbus/hyperv.c
  projects/bsnmp-ipv6-mib/sys/dev/hyperv/vmbus/vmbus_et.c
  projects/bsnmp-ipv6-mib/sys/dev/mmc/mmcsd.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/fsl_sdhci.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci.h
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_pci.c
  projects/bsnmp-ipv6-mib/tools/tools/gensnmpdef/Makefile
  projects/bsnmp-ipv6-mib/usr.bin/ctlstat/ctlstat.8
  projects/bsnmp-ipv6-mib/usr.bin/ctlstat/ctlstat.c
  projects/bsnmp-ipv6-mib/usr.bin/netstat/main.c
  projects/bsnmp-ipv6-mib/usr.bin/netstat/route.c
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_atm/BEGEMOT-ATM-FREEBSD-MIB.txt
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_atm/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_hast/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_target/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_usm/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile
Directory Properties:
  projects/bsnmp-ipv6-mib/   (props changed)

Modified: projects/bsnmp-ipv6-mib/contrib/bsnmp/gensnmpdef/gensnmpdef.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/bsnmp/gensnmpdef/gensnmpdef.c	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/contrib/bsnmp/gensnmpdef/gensnmpdef.c	Mon Jan  9 18:35:41 2017	(r311805)
@@ -126,9 +126,11 @@ open_node(const SmiNode *n, u_int level,
 
 	while (level < n->oidlen - 1) {
 		if (level >= cut) {
+			n1 = smiGetNodeByOID(level + 1, n->oid);
+			if (n1 == NULL)
+				continue;
 			pindent(level);
 			printf("(%u", n->oid[level]);
-			n1 = smiGetNodeByOID(level + 1, n->oid);
 			printf(" ");
 			print_name(n1);
 			printf("\n");
@@ -397,12 +399,11 @@ static void
 save_typdef(char *name)
 {
 	struct tdef *t;
-	t = malloc(sizeof(struct tdef));
 
+	t = calloc(1, sizeof(struct tdef));
 	if (t == NULL)
 		err(1, NULL);
 
-	memset(t, 0 , sizeof(struct tdef));
 	t->name = name;
 	SLIST_INSERT_HEAD(&tdefs, t, link);
 }
@@ -559,7 +560,11 @@ main(int argc, char *argv[])
 	level = 0;
 	last = NULL;
 	for (opt = 0; opt < argc; opt++) {
+		if (mods[opt] == NULL) /* smiGetModule failed above */
+			continue;
 		n = smiGetFirstNode(mods[opt], SMI_NODEKIND_ANY);
+		if (n == NULL)
+			continue;
 		for (;;) {
 			if (do_typedef == 0) {
 				level = open_node(n, level, &last);

Modified: projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt	Mon Jan  9 18:35:41 2017	(r311805)
@@ -54,6 +54,9 @@ begemotIp MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The MIB for IP stuff that is not in the official IP MIBs."
+    REVISION	"200602130000Z"
+    DESCRIPTION
+		"Initial revision."
     ::= { begemot 3 }
 
 begemotIpObjects	OBJECT IDENTIFIER ::= { begemotIp 1 }

Modified: projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/mibII.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/mibII.c	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/contrib/bsnmp/snmp_mibII/mibII.c	Mon Jan  9 18:35:41 2017	(r311805)
@@ -319,7 +319,7 @@ fetch_generic_mib(struct mibif *ifp, con
 	name[5] = IFDATA_GENERAL;
 
 	len = sizeof(ifp->mib);
-	if (sysctl(name, 6, &ifp->mib, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), &ifp->mib, &len, NULL, 0) == -1) {
 		if (errno != ENOENT)
 			syslog(LOG_WARNING, "sysctl(ifmib, %s) failed %m",
 			    ifp->name);
@@ -480,7 +480,7 @@ mib_fetch_ifmib(struct mibif *ifp)
 	name[3] = IFMIB_IFDATA;
 	name[4] = ifp->sysindex;
 	name[5] = IFDATA_LINKSPECIFIC;
-	if (sysctl(name, 6, NULL, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), NULL, &len, NULL, 0) == -1) {
 		syslog(LOG_WARNING, "sysctl linkmib estimate (%s): %m",
 		    ifp->name);
 		if (ifp->specmib != NULL) {
@@ -506,7 +506,7 @@ mib_fetch_ifmib(struct mibif *ifp)
 		ifp->specmib = newmib;
 		ifp->specmiblen = len;
 	}
-	if (sysctl(name, 6, ifp->specmib, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), ifp->specmib, &len, NULL, 0) == -1) {
 		syslog(LOG_WARNING, "sysctl linkmib (%s): %m", ifp->name);
 		if (ifp->specmib != NULL) {
 			ifp->specmib = NULL;
@@ -902,7 +902,7 @@ mib_refresh_iflist(void)
 	for (idx = 1; idx <= count; idx++) {
 		name[4] = idx;
 		len = sizeof(mib);
-		if (sysctl(name, 6, &mib, &len, NULL, 0) == -1) {
+		if (sysctl(name, nitems(name), &mib, &len, NULL, 0) == -1) {
 			if (errno == ENOENT)
 				continue;
 			syslog(LOG_ERR, "ifmib(%u): %m", idx);
@@ -1213,7 +1213,7 @@ mib_fetch_rtab(int af, int info, int arg
 	*lenp = 0;
 
 	/* initial estimate */
-	if (sysctl(name, 6, NULL, lenp, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), NULL, lenp, NULL, 0) == -1) {
 		syslog(LOG_ERR, "sysctl estimate (%d,%d,%d,%d,%d,%d): %m",
 		    name[0], name[1], name[2], name[3], name[4], name[5]);
 		return (NULL);
@@ -1230,7 +1230,7 @@ mib_fetch_rtab(int af, int info, int arg
 		}
 		buf = newbuf;
 
-		if (sysctl(name, 6, buf, lenp, NULL, 0) == 0)
+		if (sysctl(name, nitems(name), buf, lenp, NULL, 0) == 0)
 			break;
 
 		if (errno != ENOMEM) {

Modified: projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt	Mon Jan  9 18:35:41 2017	(r311805)
@@ -54,6 +54,9 @@ begemot MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The root of the Begemot subtree of the fokus tree."
+    REVISION "200201300000Z"
+    DESCRIPTION
+	    "Initial revision."
     ::= { fokus 1 }
 
 END

Modified: projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/FOKUS-MIB.txt
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/FOKUS-MIB.txt	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/contrib/bsnmp/snmpd/FOKUS-MIB.txt	Mon Jan  9 18:35:41 2017	(r311805)
@@ -52,6 +52,9 @@ fokus MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The root of the Fokus enterprises tree."
+    REVISION "200202050000Z"
+    DESCRIPTION
+	    "Initial revision."
     ::= { enterprises 12325 }
 
 END

Modified: projects/bsnmp-ipv6-mib/lib/libprocstat/Makefile
==============================================================================
--- projects/bsnmp-ipv6-mib/lib/libprocstat/Makefile	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/lib/libprocstat/Makefile	Mon Jan  9 18:35:41 2017	(r311805)
@@ -9,11 +9,11 @@ SRCS=	cd9660.c	\
 	common_kvm.c	\
 	core.c		\
 	libprocstat.c	\
-        msdosfs.c	\
+	msdosfs.c	\
 	smbfs.c		\
 	udf.c
 
-VERSION_DEF=	${.CURDIR}/Versions.def
+VERSION_DEF=	${LIBCSRCDIR}/Versions.def
 SYMBOL_MAPS=	${.CURDIR}/Symbol.map
 
 INCS=		libprocstat.h

Modified: projects/bsnmp-ipv6-mib/share/mk/bsd.README
==============================================================================
--- projects/bsnmp-ipv6-mib/share/mk/bsd.README	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/share/mk/bsd.README	Mon Jan  9 18:35:41 2017	(r311805)
@@ -410,6 +410,63 @@ If foo has multiple source files, add th
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
+The include file, <bsd.snmpmod.mk>, handles building MIB modules for bsnmpd
+from one or more source files, along with their manual pages.  It has a
+limited number of suffixes, consistent with the current needs of the BSD
+tree.
+
+bsd.snmpmod.mk leverages bsd.lib.mk for building MIB modules and
+bsd.files.mk for installing MIB description and definition files.
+
+It has no additional targets.
+
+It sets/uses the following variables:
+
+BMIBS		The MIB definitions to install.
+
+BMIBSDIR	The directory where the MIB definitions are installed.
+		This defaults to `${SHAREDIR}/snmp/mibs`.
+
+DEFS		The MIB description files to install.
+
+DEFSDIR		The directory where MIB description files are installed.
+		This defaults to `${SHAREDIR}/snmp/defs`.
+
+EXTRAMIBDEFS	Extra MIB description files to use as input when
+		generating ${MOD}_oid.h and ${MOD}_tree.[ch].
+
+EXTRAMIBSYMS	Extra MIB definition files used only for extracting
+		symbols.
+
+		EXTRAMIBSYMS are useful when resolving inter-module
+		dependencies and are useful with files containing only
+		enum-definitions.
+
+		See ${MOD}_oid.h for more details.
+
+MOD		The bsnmpd module name.
+
+XSYM		MIB names to extract symbols for. See ${MOD}_oid.h for
+		more details.
+
+It generates the following files:
+
+${MOD}_tree.c	A source file and header which programmatically describes
+${MOD}_tree.h	the MIB (type, OID name, ACCESS attributes, etc).
+
+		The files are generated via "gensnmptree -p".
+
+		See gensnmptree(1) for more details.
+
+${MOD}_oid.h	A header which programmatically describes the MIB root and
+		MIB tables.
+
+		The files are generated via "gensnmptree -e".
+
+		See gensnmptree(1) for more details.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
 The include file <bsd.subdir.mk> contains the default targets for building
 subdirectories.  It has the same seven targets as <bsd.prog.mk>: all, clean,
 cleandir, depend, install, lint, and tags.  For all of the directories

Modified: projects/bsnmp-ipv6-mib/sys/arm/ti/ti_sdhci.c
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/arm/ti/ti_sdhci.c	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/arm/ti/ti_sdhci.c	Mon Jan  9 18:35:41 2017	(r311805)
@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/mmc/mmcbrvar.h>
 
 #include <dev/sdhci/sdhci.h>
+#include <dev/sdhci/sdhci_fdt_gpio.h>
 #include "sdhci_if.h"
 
 #include <arm/ti/ti_cpuid.h>
@@ -61,7 +62,7 @@ __FBSDID("$FreeBSD$");
 
 struct ti_sdhci_softc {
 	device_t		dev;
-	device_t		gpio_dev;
+	struct sdhci_fdt_gpio * gpio;
 	struct resource *	mem_res;
 	struct resource *	irq_res;
 	void *			intr_cookie;
@@ -362,20 +363,24 @@ static int
 ti_sdhci_get_ro(device_t brdev, device_t reqdev)
 {
 	struct ti_sdhci_softc *sc = device_get_softc(brdev);
-	unsigned int readonly = 0;
 
-	/* If a gpio pin is configured, read it. */
-	if (sc->gpio_dev != NULL) {
-		GPIO_PIN_GET(sc->gpio_dev, sc->wp_gpio_pin, &readonly);
-	}
+	return (sdhci_fdt_gpio_get_readonly(sc->gpio));
+}
 
-	return (readonly);
+static bool
+ti_sdhci_get_card_present(device_t dev, struct sdhci_slot *slot)
+{
+	struct ti_sdhci_softc *sc = device_get_softc(dev);
+
+	return (sdhci_fdt_gpio_get_present(sc->gpio));
 }
 
 static int
 ti_sdhci_detach(device_t dev)
 {
 
+	/* sdhci_fdt_gpio_teardown(sc->gpio); */
+
 	return (EBUSY);
 }
 
@@ -502,25 +507,6 @@ ti_sdhci_attach(device_t dev)
 	}
 
 	/*
-	 * See if we've got a GPIO-based write detect pin.  This is not the
-	 * standard documented property for this, we added it in freebsd.
-	 */
-	if ((OF_getencprop(node, "mmchs-wp-gpio-pin", &prop, sizeof(prop))) <= 0)
-		sc->wp_gpio_pin = 0xffffffff;
-	else
-		sc->wp_gpio_pin = prop;
-
-	if (sc->wp_gpio_pin != 0xffffffff) {
-		sc->gpio_dev = devclass_get_device(devclass_find("gpio"), 0);
-		if (sc->gpio_dev == NULL) 
-			device_printf(dev, "Error: No GPIO device, "
-			    "Write Protect pin will not function\n");
-		else
-			GPIO_PIN_SETFLAGS(sc->gpio_dev, sc->wp_gpio_pin,
-			                  GPIO_PIN_INPUT);
-	}
-
-	/*
 	 * Set the offset from the device's memory start to the MMCHS registers.
 	 * Also for OMAP4 disable high speed mode due to erratum ID i626.
 	 */
@@ -572,6 +558,8 @@ ti_sdhci_attach(device_t dev)
 		goto fail;
 	}
 
+	sc->gpio = sdhci_fdt_gpio_setup(sc->dev, &sc->slot);
+
 	/* Initialise the MMCHS hardware. */
 	ti_sdhci_hw_init(dev);
 
@@ -706,6 +694,7 @@ static device_method_t ti_sdhci_methods[
 	DEVMETHOD(sdhci_write_2,	ti_sdhci_write_2),
 	DEVMETHOD(sdhci_write_4,	ti_sdhci_write_4),
 	DEVMETHOD(sdhci_write_multi_4,	ti_sdhci_write_multi_4),
+	DEVMETHOD(sdhci_get_card_present, ti_sdhci_get_card_present),
 
 	DEVMETHOD_END
 };

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,7 +1,7 @@
 /*-
  * Copyright (c) 2003-2009 Silicon Graphics International Corp.
  * Copyright (c) 2012 The FreeBSD Foundation
- * Copyright (c) 2015 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Portions of this software were developed by Edward Tomasz Napierala
@@ -2567,6 +2567,7 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
 	  struct thread *td)
 {
 	struct ctl_softc *softc = dev->si_drv1;
+	struct ctl_port *port;
 	struct ctl_lun *lun;
 	int retval;
 
@@ -2778,6 +2779,7 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
 #endif /* CTL_IO_DELAY */
 		break;
 	}
+#ifdef CTL_LEGACY_STATS
 	case CTL_GETSTATS: {
 		struct ctl_stats *stats = (struct ctl_stats *)addr;
 		int i;
@@ -2790,26 +2792,26 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
 		stats->status = CTL_SS_OK;
 		stats->fill_len = 0;
 		STAILQ_FOREACH(lun, &softc->lun_list, links) {
-			if (stats->fill_len + sizeof(lun->stats) >
+			if (stats->fill_len + sizeof(lun->legacy_stats) >
 			    stats->alloc_len) {
 				stats->status = CTL_SS_NEED_MORE_SPACE;
 				break;
 			}
-			retval = copyout(&lun->stats, &stats->lun_stats[i++],
-					 sizeof(lun->stats));
+			retval = copyout(&lun->legacy_stats, &stats->lun_stats[i++],
+					 sizeof(lun->legacy_stats));
 			if (retval != 0)
 				break;
-			stats->fill_len += sizeof(lun->stats);
+			stats->fill_len += sizeof(lun->legacy_stats);
 		}
 		stats->num_luns = softc->num_luns;
-#ifdef CTL_TIME_IO
-		stats->flags = CTL_STATS_FLAG_TIME_VALID;
-#else
 		stats->flags = CTL_STATS_FLAG_NONE;
+#ifdef CTL_TIME_IO
+		stats->flags |= CTL_STATS_FLAG_TIME_VALID;
 #endif
 		getnanouptime(&stats->timestamp);
 		break;
 	}
+#endif /* CTL_LEGACY_STATS */
 	case CTL_ERROR_INJECT: {
 		struct ctl_error_desc *err_desc, *new_err_desc;
 
@@ -3397,6 +3399,72 @@ ctl_ioctl(struct cdev *dev, u_long cmd, 
 			ctl_isc_announce_port(port);
 		break;
 	}
+	case CTL_GET_LUN_STATS: {
+		struct ctl_get_io_stats *stats = (struct ctl_get_io_stats *)addr;
+		int i;
+
+		/*
+		 * XXX KDM no locking here.  If the LUN list changes,
+		 * things can blow up.
+		 */
+		i = 0;
+		stats->status = CTL_SS_OK;
+		stats->fill_len = 0;
+		STAILQ_FOREACH(lun, &softc->lun_list, links) {
+			if (lun->lun < stats->first_item)
+				continue;
+			if (stats->fill_len + sizeof(lun->stats) >
+			    stats->alloc_len) {
+				stats->status = CTL_SS_NEED_MORE_SPACE;
+				break;
+			}
+			retval = copyout(&lun->stats, &stats->stats[i++],
+					 sizeof(lun->stats));
+			if (retval != 0)
+				break;
+			stats->fill_len += sizeof(lun->stats);
+		}
+		stats->num_items = softc->num_luns;
+		stats->flags = CTL_STATS_FLAG_NONE;
+#ifdef CTL_TIME_IO
+		stats->flags |= CTL_STATS_FLAG_TIME_VALID;
+#endif
+		getnanouptime(&stats->timestamp);
+		break;
+	}
+	case CTL_GET_PORT_STATS: {
+		struct ctl_get_io_stats *stats = (struct ctl_get_io_stats *)addr;
+		int i;
+
+		/*
+		 * XXX KDM no locking here.  If the LUN list changes,
+		 * things can blow up.
+		 */
+		i = 0;
+		stats->status = CTL_SS_OK;
+		stats->fill_len = 0;
+		STAILQ_FOREACH(port, &softc->port_list, links) {
+			if (port->targ_port < stats->first_item)
+				continue;
+			if (stats->fill_len + sizeof(port->stats) >
+			    stats->alloc_len) {
+				stats->status = CTL_SS_NEED_MORE_SPACE;
+				break;
+			}
+			retval = copyout(&port->stats, &stats->stats[i++],
+					 sizeof(port->stats));
+			if (retval != 0)
+				break;
+			stats->fill_len += sizeof(port->stats);
+		}
+		stats->num_items = softc->num_ports;
+		stats->flags = CTL_STATS_FLAG_NONE;
+#ifdef CTL_TIME_IO
+		stats->flags |= CTL_STATS_FLAG_TIME_VALID;
+#endif
+		getnanouptime(&stats->timestamp);
+		break;
+	}
 	default: {
 		/* XXX KDM should we fix this? */
 #if 0
@@ -4391,7 +4459,7 @@ ctl_alloc_lun(struct ctl_softc *ctl_soft
 	struct scsi_vpd_id_descriptor *desc;
 	struct scsi_vpd_id_t10 *t10id;
 	const char *eui, *naa, *scsiname, *uuid, *vendor, *value;
-	int lun_number, i, lun_malloced;
+	int lun_number, lun_malloced;
 	int devidlen, idlen1, idlen2 = 0, len;
 
 	if (be_lun == NULL)
@@ -4585,6 +4653,10 @@ ctl_alloc_lun(struct ctl_softc *ctl_soft
 	lun->ie_reported = 1;
 	callout_init_mtx(&lun->ie_callout, &lun->lun_lock, 0);
 	ctl_tpc_lun_init(lun);
+	if (lun->flags & CTL_LUN_REMOVABLE) {
+		lun->prevent = malloc((CTL_MAX_INITIATORS + 31) / 32 * 4,
+		    M_CTL, M_WAITOK);
+	}
 
 	/*
 	 * Initialize the mode and log page index.
@@ -4609,13 +4681,16 @@ ctl_alloc_lun(struct ctl_softc *ctl_soft
 	ctl_softc->num_luns++;
 
 	/* Setup statistics gathering */
-	lun->stats.device_type = be_lun->lun_type;
-	lun->stats.lun_number = lun_number;
-	lun->stats.blocksize = be_lun->blocksize;
+#ifdef CTL_LEGACY_STATS
+	lun->legacy_stats.device_type = be_lun->lun_type;
+	lun->legacy_stats.lun_number = lun_number;
+	lun->legacy_stats.blocksize = be_lun->blocksize;
 	if (be_lun->blocksize == 0)
-		lun->stats.flags = CTL_LUN_STATS_NO_BLOCKSIZE;
-	for (i = 0;i < CTL_MAX_PORTS;i++)
-		lun->stats.ports[i].targ_port = i;
+		lun->legacy_stats.flags = CTL_LUN_STATS_NO_BLOCKSIZE;
+	for (len = 0; len < CTL_MAX_PORTS; len++)
+		lun->legacy_stats.ports[len].targ_port = len;
+#endif /* CTL_LEGACY_STATS */
+	lun->stats.item = lun_number;
 
 	mtx_unlock(&ctl_softc->ctl_lock);
 
@@ -4666,6 +4741,7 @@ ctl_free_lun(struct ctl_lun *lun)
 	for (i = 0; i < CTL_MAX_PORTS; i++)
 		free(lun->pr_keys[i], M_CTL);
 	free(lun->write_buffer, M_CTL);
+	free(lun->prevent, M_CTL);
 	if (lun->flags & CTL_LUN_MALLOCED)
 		free(lun, M_CTL);
 
@@ -5276,7 +5352,7 @@ ctl_prevent_allow(struct ctl_scsiio *cts
 
 	cdb = (struct scsi_prevent *)ctsio->cdb;
 
-	if ((lun->flags & CTL_LUN_REMOVABLE) == 0) {
+	if ((lun->flags & CTL_LUN_REMOVABLE) == 0 || lun->prevent == NULL) {
 		ctl_set_invalid_opcode(ctsio);
 		ctl_done((union ctl_io *)ctsio);
 		return (CTL_RETVAL_COMPLETE);
@@ -6680,9 +6756,7 @@ ctl_sap_log_sense_handler(struct ctl_scs
 {
 	struct ctl_lun *lun = CTL_LUN(ctsio);
 	struct stat_page *data;
-	uint64_t rn, wn, rb, wb;
-	struct bintime rt, wt;
-	int i;
+	struct bintime *t;
 
 	data = (struct stat_page *)page_index->page_data;
 
@@ -6690,28 +6764,21 @@ ctl_sap_log_sense_handler(struct ctl_scs
 	data->sap.hdr.param_control = SLP_LBIN;
 	data->sap.hdr.param_len = sizeof(struct scsi_log_stat_and_perf) -
 	    sizeof(struct scsi_log_param_header);
-	rn = wn = rb = wb = 0;
-	bintime_clear(&rt);
-	bintime_clear(&wt);
-	for (i = 0; i < CTL_MAX_PORTS; i++) {
-		rn += lun->stats.ports[i].operations[CTL_STATS_READ];
-		wn += lun->stats.ports[i].operations[CTL_STATS_WRITE];
-		rb += lun->stats.ports[i].bytes[CTL_STATS_READ];
-		wb += lun->stats.ports[i].bytes[CTL_STATS_WRITE];
-		bintime_add(&rt, &lun->stats.ports[i].time[CTL_STATS_READ]);
-		bintime_add(&wt, &lun->stats.ports[i].time[CTL_STATS_WRITE]);
-	}
-	scsi_u64to8b(rn, data->sap.read_num);
-	scsi_u64to8b(wn, data->sap.write_num);
-	if (lun->stats.blocksize > 0) {
-		scsi_u64to8b(wb / lun->stats.blocksize,
-		    data->sap.recvieved_lba);
-		scsi_u64to8b(rb / lun->stats.blocksize,
-		    data->sap.transmitted_lba);
+	scsi_u64to8b(lun->stats.operations[CTL_STATS_READ],
+	    data->sap.read_num);
+	scsi_u64to8b(lun->stats.operations[CTL_STATS_WRITE],
+	    data->sap.write_num);
+	if (lun->be_lun->blocksize > 0) {
+		scsi_u64to8b(lun->stats.bytes[CTL_STATS_WRITE] /
+		    lun->be_lun->blocksize, data->sap.recvieved_lba);
+		scsi_u64to8b(lun->stats.bytes[CTL_STATS_READ] /
+		    lun->be_lun->blocksize, data->sap.transmitted_lba);
 	}
-	scsi_u64to8b((uint64_t)rt.sec * 1000 + rt.frac / (UINT64_MAX / 1000),
+	t = &lun->stats.time[CTL_STATS_READ];
+	scsi_u64to8b((uint64_t)t->sec * 1000 + t->frac / (UINT64_MAX / 1000),
 	    data->sap.read_int);
-	scsi_u64to8b((uint64_t)wt.sec * 1000 + wt.frac / (UINT64_MAX / 1000),
+	t = &lun->stats.time[CTL_STATS_WRITE];
+	scsi_u64to8b((uint64_t)t->sec * 1000 + t->frac / (UINT64_MAX / 1000),
 	    data->sap.write_int);
 	scsi_u64to8b(0, data->sap.weighted_num);
 	scsi_u64to8b(0, data->sap.weighted_int);
@@ -11872,8 +11939,10 @@ ctl_do_lun_reset(struct ctl_lun *lun, un
 		ctl_clear_mask(lun->have_ca, i);
 #endif
 	lun->prevent_count = 0;
-	for (i = 0; i < CTL_MAX_INITIATORS; i++)
-		ctl_clear_mask(lun->prevent, i);
+	if (lun->prevent) {
+		for (i = 0; i < CTL_MAX_INITIATORS; i++)
+			ctl_clear_mask(lun->prevent, i);
+	}
 	mtx_unlock(&lun->lun_lock);
 
 	return (0);
@@ -12019,7 +12088,7 @@ ctl_i_t_nexus_reset(union ctl_io *io)
 #endif
 		if ((lun->flags & CTL_LUN_RESERVED) && (lun->res_idx == initidx))
 			lun->flags &= ~CTL_LUN_RESERVED;
-		if (ctl_is_set(lun->prevent, initidx)) {
+		if (lun->prevent && ctl_is_set(lun->prevent, initidx)) {
 			ctl_clear_mask(lun->prevent, initidx);
 			lun->prevent_count--;
 		}
@@ -13046,13 +13115,13 @@ static void
 ctl_process_done(union ctl_io *io)
 {
 	struct ctl_softc *softc = CTL_SOFTC(io);
+	struct ctl_port *port = CTL_PORT(io);
 	struct ctl_lun *lun = CTL_LUN(io);
 	void (*fe_done)(union ctl_io *io);
 	union ctl_ha_msg msg;
-	uint32_t targ_port = io->io_hdr.nexus.targ_port;
 
 	CTL_DEBUG_PRINT(("ctl_process_done\n"));
-	fe_done = softc->ctl_ports[targ_port]->fe_done;
+	fe_done = port->fe_done;
 
 #ifdef CTL_TIME_IO
 	if ((time_uptime - io->io_hdr.start_time) > ctl_time_io_secs) {
@@ -13155,11 +13224,13 @@ ctl_process_done(union ctl_io *io)
 	 */
 	if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS &&
 	    io->io_hdr.io_type == CTL_IO_SCSI) {
-#ifdef CTL_TIME_IO
-		struct bintime cur_bt;
-#endif
 		int type;
+#ifdef CTL_TIME_IO
+		struct bintime bt;
 
+		getbinuptime(&bt);
+		bintime_sub(&bt, &io->io_hdr.start_bt);
+#endif
 		if ((io->io_hdr.flags & CTL_FLAG_DATA_MASK) ==
 		    CTL_FLAG_DATA_IN)
 			type = CTL_STATS_READ;
@@ -13169,18 +13240,38 @@ ctl_process_done(union ctl_io *io)
 		else
 			type = CTL_STATS_NO_IO;
 
-		lun->stats.ports[targ_port].bytes[type] +=
+#ifdef CTL_LEGACY_STATS
+		uint32_t targ_port = port->targ_port;
+		lun->legacy_stats.ports[targ_port].bytes[type] +=
 		    io->scsiio.kern_total_len;
-		lun->stats.ports[targ_port].operations[type]++;
+		lun->legacy_stats.ports[targ_port].operations[type] ++;
+		lun->legacy_stats.ports[targ_port].num_dmas[type] +=
+		    io->io_hdr.num_dmas;
 #ifdef CTL_TIME_IO
-		bintime_add(&lun->stats.ports[targ_port].dma_time[type],
+		bintime_add(&lun->legacy_stats.ports[targ_port].dma_time[type],
 		   &io->io_hdr.dma_bt);
-		getbinuptime(&cur_bt);
-		bintime_sub(&cur_bt, &io->io_hdr.start_bt);
-		bintime_add(&lun->stats.ports[targ_port].time[type], &cur_bt);
+		bintime_add(&lun->legacy_stats.ports[targ_port].time[type],
+		    &bt);
 #endif
-		lun->stats.ports[targ_port].num_dmas[type] +=
-		    io->io_hdr.num_dmas;
+#endif /* CTL_LEGACY_STATS */
+
+		lun->stats.bytes[type] += io->scsiio.kern_total_len;
+		lun->stats.operations[type] ++;
+		lun->stats.dmas[type] += io->io_hdr.num_dmas;
+#ifdef CTL_TIME_IO
+		bintime_add(&lun->stats.dma_time[type], &io->io_hdr.dma_bt);
+		bintime_add(&lun->stats.time[type], &bt);
+#endif
+
+		mtx_lock(&port->port_lock);
+		port->stats.bytes[type] += io->scsiio.kern_total_len;
+		port->stats.operations[type] ++;
+		port->stats.dmas[type] += io->io_hdr.num_dmas;
+#ifdef CTL_TIME_IO
+		bintime_add(&port->stats.dma_time[type], &io->io_hdr.dma_bt);
+		bintime_add(&port->stats.time[type], &bt);
+#endif
+		mtx_unlock(&port->port_lock);
 	}
 
 	/*

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_backend.h
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_backend.h	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_backend.h	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2003 Silicon Graphics International Corp.
- * Copyright (c) 2014-2015 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,54 +40,7 @@
 #ifndef	_CTL_BACKEND_H_
 #define	_CTL_BACKEND_H_
 
-/*
- * XXX KDM move this to another header file?
- */
-#define	CTL_BE_NAME_LEN		32
-
-/*
- * The ID_REQ flag is used to say that the caller has requested a
- * particular LUN ID in the req_lun_id field.  If we cannot allocate that
- * LUN ID, the ctl_add_lun() call will fail.
- *
- * The STOPPED flag tells us that the LUN should default to the powered
- * off state.  It will return 0x04,0x02 until it is powered up.  ("Logical
- * unit not ready, initializing command required.")
- *
- * The NO_MEDIA flag tells us that the LUN has no media inserted.
- *
- * The PRIMARY flag tells us that this LUN is registered as a Primary LUN
- * which is accessible via the Master shelf controller in an HA. This flag
- * being set indicates a Primary LUN. This flag being reset represents a
- * Secondary LUN controlled by the Secondary controller in an HA
- * configuration. Flag is applicable at this time to T_DIRECT types. 
- *
- * The SERIAL_NUM flag tells us that the serial_num field is filled in and
- * valid for use in SCSI INQUIRY VPD page 0x80.
- *
- * The DEVID flag tells us that the device_id field is filled in and
- * valid for use in SCSI INQUIRY VPD page 0x83.
- *
- * The DEV_TYPE flag tells us that the device_type field is filled in.
- *
- * The EJECTED flag tells us that the removable LUN has tray open.
- *
- * The UNMAP flag tells us that this LUN supports UNMAP.
- *
- * The OFFLINE flag tells us that this LUN can not access backing store.
- */
-typedef enum {
-	CTL_LUN_FLAG_ID_REQ		= 0x01,
-	CTL_LUN_FLAG_STOPPED		= 0x02,
-	CTL_LUN_FLAG_NO_MEDIA		= 0x04,
-	CTL_LUN_FLAG_PRIMARY		= 0x08,
-	CTL_LUN_FLAG_SERIAL_NUM		= 0x10,
-	CTL_LUN_FLAG_DEVID		= 0x20,
-	CTL_LUN_FLAG_DEV_TYPE		= 0x40,
-	CTL_LUN_FLAG_UNMAP		= 0x80,
-	CTL_LUN_FLAG_EJECTED		= 0x100,
-	CTL_LUN_FLAG_READONLY		= 0x200
-} ctl_backend_lun_flags;
+#include <cam/ctl/ctl_ioctl.h>
 
 typedef enum {
 	CTL_LUN_SERSEQ_OFF,

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.c
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.c	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.c	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,5 +1,6 @@
 /*-
  * Copyright (c) 2003 Silicon Graphics International Corp.
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -192,13 +193,14 @@ error:
 		mtx_unlock(&softc->ctl_lock);
 		return (retval);
 	}
+	port->targ_port = port_num;
 	port->ctl_pool_ref = pool;
-
 	if (port->options.stqh_first == NULL)
 		STAILQ_INIT(&port->options);
+	port->stats.item = port_num;
+	mtx_init(&port->port_lock, "CTL port", NULL, MTX_DEF);
 
 	mtx_lock(&softc->ctl_lock);
-	port->targ_port = port_num;
 	STAILQ_INSERT_TAIL(&port->frontend->port_list, port, fe_links);
 	for (tport = NULL, nport = STAILQ_FIRST(&softc->port_list);
 	    nport != NULL && nport->targ_port < port_num;
@@ -218,17 +220,11 @@ int
 ctl_port_deregister(struct ctl_port *port)
 {
 	struct ctl_softc *softc = port->ctl_softc;
-	struct ctl_io_pool *pool;
-	int retval, i;
-
-	retval = 0;
-
-	pool = (struct ctl_io_pool *)port->ctl_pool_ref;
+	struct ctl_io_pool *pool = (struct ctl_io_pool *)port->ctl_pool_ref;
+	int i;
 
-	if (port->targ_port == -1) {
-		retval = 1;
-		goto bailout;
-	}
+	if (port->targ_port == -1)
+		return (1);
 
 	mtx_lock(&softc->ctl_lock);
 	STAILQ_REMOVE(&softc->port_list, port, ctl_port, links);
@@ -251,9 +247,9 @@ ctl_port_deregister(struct ctl_port *por
 	for (i = 0; i < port->max_initiators; i++)
 		free(port->wwpn_iid[i].name, M_CTL);
 	free(port->wwpn_iid, M_CTL);
+	mtx_destroy(&port->port_lock);
 
-bailout:
-	return (retval);
+	return (0);
 }
 
 void

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.h
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.h	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend.h	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,5 +1,6 @@
 /*-
  * Copyright (c) 2003 Silicon Graphics International Corp.
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,6 +40,8 @@
 #ifndef	_CTL_FRONTEND_H_
 #define	_CTL_FRONTEND_H_
 
+#include <cam/ctl/ctl_ioctl.h>
+
 typedef enum {
 	CTL_PORT_STATUS_NONE		= 0x00,
 	CTL_PORT_STATUS_ONLINE		= 0x01,
@@ -243,6 +246,8 @@ struct ctl_port {
 	struct ctl_devid *port_devid;		/* passed to CTL */
 	struct ctl_devid *target_devid;		/* passed to CTL */
 	struct ctl_devid *init_devid;		/* passed to CTL */
+	struct ctl_io_stats stats;		/* used by CTL */
+	struct mtx	port_lock;		/* used by CTL */
 	STAILQ_ENTRY(ctl_port) fe_links;	/* used by CTL */
 	STAILQ_ENTRY(ctl_port) links;		/* used by CTL */
 };

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_ioctl.h
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_ioctl.h	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_ioctl.h	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,6 +1,7 @@
 /*-
  * Copyright (c) 2003 Silicon Graphics International Corp.
  * Copyright (c) 2011 Spectra Logic Corporation
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -80,6 +81,9 @@
 /* Hopefully this won't conflict with new misc devices that pop up */
 #define	CTL_MINOR	225
 
+/* Legacy statistics accumulated for every port for every LU. */
+//#define CTL_LEGACY_STATS	1
+
 typedef enum {
 	CTL_DELAY_TYPE_NONE,
 	CTL_DELAY_TYPE_CONT,
@@ -117,6 +121,18 @@ typedef enum {
 #define	CTL_STATS_NUM_TYPES	3
 
 typedef enum {
+	CTL_SS_OK,
+	CTL_SS_NEED_MORE_SPACE,
+	CTL_SS_ERROR
+} ctl_stats_status;
+
+typedef enum {
+	CTL_STATS_FLAG_NONE		= 0x00,
+	CTL_STATS_FLAG_TIME_VALID	= 0x01
+} ctl_stats_flags;
+
+#ifdef CTL_LEGACY_STATS
+typedef enum {
 	CTL_LUN_STATS_NO_BLOCKSIZE	= 0x01
 } ctl_lun_stats_flags;
 
@@ -137,17 +153,6 @@ struct ctl_lun_io_stats {
 	struct ctl_lun_io_port_stats	ports[CTL_MAX_PORTS];
 };
 
-typedef enum {
-	CTL_SS_OK,
-	CTL_SS_NEED_MORE_SPACE,
-	CTL_SS_ERROR
-} ctl_stats_status;
-
-typedef enum {
-	CTL_STATS_FLAG_NONE		= 0x00,
-	CTL_STATS_FLAG_TIME_VALID	= 0x01
-} ctl_stats_flags;
-
 struct ctl_stats {
 	int			alloc_len;	/* passed to kernel */
 	struct ctl_lun_io_stats	*lun_stats;	/* passed to/from kernel */
@@ -157,6 +162,27 @@ struct ctl_stats {
 	ctl_stats_flags		flags;		/* passed to userland */
 	struct timespec		timestamp;	/* passed to userland */
 };
+#endif /* CTL_LEGACY_STATS */
+
+struct ctl_io_stats {
+	uint32_t			item;
+	uint64_t			bytes[CTL_STATS_NUM_TYPES];
+	uint64_t			operations[CTL_STATS_NUM_TYPES];
+	uint64_t			dmas[CTL_STATS_NUM_TYPES];
+	struct bintime			time[CTL_STATS_NUM_TYPES];
+	struct bintime			dma_time[CTL_STATS_NUM_TYPES];
+};
+
+struct ctl_get_io_stats {
+	struct ctl_io_stats	*stats;		/* passed to/from kernel */
+	size_t			alloc_len;	/* passed to kernel */
+	size_t			fill_len;	/* passed to userland */
+	int			first_item;	/* passed to kernel */
+	int			num_items;	/* passed to userland */
+	ctl_stats_status	status;		/* passed to userland */
+	ctl_stats_flags		flags;		/* passed to userland */
+	struct timespec		timestamp;	/* passed to userland */
+};
 
 /*
  * The types of errors that can be injected:
@@ -342,12 +368,54 @@ typedef enum {
 	CTL_LUNREQ_MODIFY,
 } ctl_lunreq_type;
 
+/*
+ * The ID_REQ flag is used to say that the caller has requested a
+ * particular LUN ID in the req_lun_id field.  If we cannot allocate that
+ * LUN ID, the ctl_add_lun() call will fail.
+ *
+ * The STOPPED flag tells us that the LUN should default to the powered
+ * off state.  It will return 0x04,0x02 until it is powered up.  ("Logical
+ * unit not ready, initializing command required.")
+ *
+ * The NO_MEDIA flag tells us that the LUN has no media inserted.
+ *
+ * The PRIMARY flag tells us that this LUN is registered as a Primary LUN
+ * which is accessible via the Master shelf controller in an HA. This flag
+ * being set indicates a Primary LUN. This flag being reset represents a
+ * Secondary LUN controlled by the Secondary controller in an HA
+ * configuration. Flag is applicable at this time to T_DIRECT types. 
+ *
+ * The SERIAL_NUM flag tells us that the serial_num field is filled in and
+ * valid for use in SCSI INQUIRY VPD page 0x80.
+ *
+ * The DEVID flag tells us that the device_id field is filled in and
+ * valid for use in SCSI INQUIRY VPD page 0x83.
+ *
+ * The DEV_TYPE flag tells us that the device_type field is filled in.
+ *
+ * The EJECTED flag tells us that the removable LUN has tray open.
+ *
+ * The UNMAP flag tells us that this LUN supports UNMAP.
+ *
+ * The OFFLINE flag tells us that this LUN can not access backing store.
+ */
+typedef enum {
+	CTL_LUN_FLAG_ID_REQ		= 0x01,
+	CTL_LUN_FLAG_STOPPED		= 0x02,
+	CTL_LUN_FLAG_NO_MEDIA		= 0x04,
+	CTL_LUN_FLAG_PRIMARY		= 0x08,
+	CTL_LUN_FLAG_SERIAL_NUM		= 0x10,
+	CTL_LUN_FLAG_DEVID		= 0x20,
+	CTL_LUN_FLAG_DEV_TYPE		= 0x40,
+	CTL_LUN_FLAG_UNMAP		= 0x80,
+	CTL_LUN_FLAG_EJECTED		= 0x100,
+	CTL_LUN_FLAG_READONLY		= 0x200
+} ctl_backend_lun_flags;
 
 /*
  * LUN creation parameters:
  *
- * flags:		Various LUN flags, see ctl_backend.h for a
- *			description of the flag values and meanings.
+ * flags:		Various LUN flags, see above.
  *
  * device_type:		The SCSI device type.  e.g. 0 for Direct Access,
  *			3 for Processor, etc.  Only certain backends may
@@ -465,6 +533,7 @@ union ctl_lunreq_data {
  * kern_be_args:	For kernel use only.
  */
 struct ctl_lun_req {
+#define	CTL_BE_NAME_LEN		32
 	char			backend[CTL_BE_NAME_LEN];
 	ctl_lunreq_type		reqtype;
 	union ctl_lunreq_data	reqdata;
@@ -777,6 +846,8 @@ struct ctl_lun_map {
 #define	CTL_PORT_REQ		_IOWR(CTL_MINOR, 0x26, struct ctl_req)
 #define	CTL_PORT_LIST		_IOWR(CTL_MINOR, 0x27, struct ctl_lun_list)
 #define	CTL_LUN_MAP		_IOW(CTL_MINOR, 0x28, struct ctl_lun_map)
+#define	CTL_GET_LUN_STATS	_IOWR(CTL_MINOR, 0x29, struct ctl_get_io_stats)
+#define	CTL_GET_PORT_STATS	_IOWR(CTL_MINOR, 0x2a, struct ctl_get_io_stats)
 
 #endif /* _CTL_IOCTL_H_ */
 

Modified: projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_private.h
==============================================================================
--- projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_private.h	Mon Jan  9 18:18:15 2017	(r311804)
+++ projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_private.h	Mon Jan  9 18:35:41 2017	(r311805)
@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2003, 2004, 2005, 2008 Silicon Graphics International Corp.
- * Copyright (c) 2014-2015 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2014-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -404,7 +404,10 @@ struct ctl_lun {
 	struct callout			ie_callout;	/* INTERVAL TIMER */
 	struct ctl_mode_pages		mode_pages;
 	struct ctl_log_pages		log_pages;
-	struct ctl_lun_io_stats		stats;
+#ifdef CTL_LEGACY_STATS
+	struct ctl_lun_io_stats		legacy_stats;
+#endif /* CTL_LEGACY_STATS */
+	struct ctl_io_stats		stats;
 	uint32_t			res_idx;
 	uint32_t			pr_generation;
 	uint64_t			*pr_keys[CTL_MAX_PORTS];
@@ -412,7 +415,7 @@ struct ctl_lun {
 	uint32_t			pr_res_idx;
 	uint8_t				pr_res_type;
 	int				prevent_count;
-	uint32_t			prevent[(CTL_MAX_INITIATORS+31)/32];
+	uint32_t			*prevent;
 	uint8_t				*write_buffer;
 	struct ctl_devid		*lun_devid;
 	TAILQ_HEAD(tpc_lists, tpc_list) tpc_lists;

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

From owner-svn-src-projects@freebsd.org  Mon Jan  9 19:25:52 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 4DB79CA7D1A
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 19:25:52 +0000 (UTC) (envelope-from dim@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 0905D159E;
 Mon,  9 Jan 2017 19:25:51 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09JPp8F045623;
 Mon, 9 Jan 2017 19:25:51 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09JPn4F045606;
 Mon, 9 Jan 2017 19:25:49 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701091925.v09JPn4F045606@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 19:25:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311808 - in projects/clang400-import: .
 contrib/bsnmp/gensnmpdef contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd
 lib/libprocstat lib/libutil share/misc share/mk sys/arm/ti sys/cam/ctl sys...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 19:25:52 -0000

Author: dim
Date: Mon Jan  9 19:25:49 2017
New Revision: 311808
URL: https://svnweb.freebsd.org/changeset/base/311808

Log:
  Merge ^/head r311692 through r311807.

Added:
  projects/clang400-import/sys/dev/sdhci/sdhci_fdt_gpio.c
     - copied unchanged from r311807, head/sys/dev/sdhci/sdhci_fdt_gpio.c
  projects/clang400-import/sys/dev/sdhci/sdhci_fdt_gpio.h
     - copied unchanged from r311807, head/sys/dev/sdhci/sdhci_fdt_gpio.h
Deleted:
  projects/clang400-import/lib/libprocstat/Versions.def
Modified:
  projects/clang400-import/ObsoleteFiles.inc
  projects/clang400-import/contrib/bsnmp/gensnmpdef/gensnmpdef.c
  projects/clang400-import/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt
  projects/clang400-import/contrib/bsnmp/snmp_mibII/mibII.c
  projects/clang400-import/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt
  projects/clang400-import/contrib/bsnmp/snmpd/FOKUS-MIB.txt
  projects/clang400-import/lib/libprocstat/Makefile
  projects/clang400-import/lib/libprocstat/libprocstat.c
  projects/clang400-import/lib/libutil/kinfo_getallproc.c
  projects/clang400-import/lib/libutil/kinfo_getfile.c
  projects/clang400-import/lib/libutil/kinfo_getproc.c
  projects/clang400-import/lib/libutil/kinfo_getvmmap.c
  projects/clang400-import/share/misc/pci_vendors
  projects/clang400-import/share/mk/bsd.README
  projects/clang400-import/sys/arm/ti/ti_sdhci.c
  projects/clang400-import/sys/cam/ctl/ctl.c
  projects/clang400-import/sys/cam/ctl/ctl_backend.h
  projects/clang400-import/sys/cam/ctl/ctl_frontend.c
  projects/clang400-import/sys/cam/ctl/ctl_frontend.h
  projects/clang400-import/sys/cam/ctl/ctl_ioctl.h
  projects/clang400-import/sys/cam/ctl/ctl_private.h
  projects/clang400-import/sys/conf/files
  projects/clang400-import/sys/dev/etherswitch/etherswitch.c
  projects/clang400-import/sys/dev/gpio/gpioc.c
  projects/clang400-import/sys/dev/hyperv/include/hyperv.h
  projects/clang400-import/sys/dev/hyperv/utilities/vmbus_timesync.c
  projects/clang400-import/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c
  projects/clang400-import/sys/dev/hyperv/vmbus/hyperv.c
  projects/clang400-import/sys/dev/hyperv/vmbus/vmbus_et.c
  projects/clang400-import/sys/dev/mmc/mmcsd.c
  projects/clang400-import/sys/dev/rtwn/if_rtwnvar.h
  projects/clang400-import/sys/dev/rtwn/usb/rtwn_usb_attach.c
  projects/clang400-import/sys/dev/rtwn/usb/rtwn_usb_ep.c
  projects/clang400-import/sys/dev/rtwn/usb/rtwn_usb_rx.c
  projects/clang400-import/sys/dev/sdhci/fsl_sdhci.c
  projects/clang400-import/sys/dev/sdhci/sdhci.c
  projects/clang400-import/sys/dev/sdhci/sdhci.h
  projects/clang400-import/sys/dev/sdhci/sdhci_pci.c
  projects/clang400-import/sys/netinet6/nd6.c
  projects/clang400-import/sys/powerpc/include/vmparam.h
  projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc
  projects/clang400-import/tools/tools/gensnmpdef/Makefile
  projects/clang400-import/usr.bin/ctlstat/ctlstat.8
  projects/clang400-import/usr.bin/ctlstat/ctlstat.c
  projects/clang400-import/usr.bin/netstat/main.c
  projects/clang400-import/usr.bin/netstat/route.c
  projects/clang400-import/usr.bin/top/machine.c
  projects/clang400-import/usr.sbin/bhyve/ps2mouse.c   (contents, props changed)
  projects/clang400-import/usr.sbin/bhyve/virtio.h
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_atm/BEGEMOT-ATM-FREEBSD-MIB.txt
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_atm/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_hast/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_target/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_usm/Makefile
  projects/clang400-import/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile
  projects/clang400-import/usr.sbin/route6d/route6d.c
  projects/clang400-import/usr.sbin/rwhod/rwhod.c
Directory Properties:
  projects/clang400-import/   (props changed)

Modified: projects/clang400-import/ObsoleteFiles.inc
==============================================================================
--- projects/clang400-import/ObsoleteFiles.inc	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/ObsoleteFiles.inc	Mon Jan  9 19:25:49 2017	(r311808)
@@ -2370,7 +2370,6 @@ OLD_LIBS+=usr/lib32/private/libyaml.so.1
 OLD_FILES+=usr/lib32/private/libyaml_p.a
 # 20140216: new clang import which bumps version from 3.3 to 3.4.
 OLD_FILES+=usr/bin/llvm-prof
-OLD_FILES+=usr/bin/llvm-ranlib
 OLD_FILES+=usr/include/clang/3.3/__wmmintrin_aes.h
 OLD_FILES+=usr/include/clang/3.3/__wmmintrin_pclmul.h
 OLD_FILES+=usr/include/clang/3.3/altivec.h

Modified: projects/clang400-import/contrib/bsnmp/gensnmpdef/gensnmpdef.c
==============================================================================
--- projects/clang400-import/contrib/bsnmp/gensnmpdef/gensnmpdef.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/contrib/bsnmp/gensnmpdef/gensnmpdef.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -126,9 +126,11 @@ open_node(const SmiNode *n, u_int level,
 
 	while (level < n->oidlen - 1) {
 		if (level >= cut) {
+			n1 = smiGetNodeByOID(level + 1, n->oid);
+			if (n1 == NULL)
+				continue;
 			pindent(level);
 			printf("(%u", n->oid[level]);
-			n1 = smiGetNodeByOID(level + 1, n->oid);
 			printf(" ");
 			print_name(n1);
 			printf("\n");
@@ -397,12 +399,11 @@ static void
 save_typdef(char *name)
 {
 	struct tdef *t;
-	t = malloc(sizeof(struct tdef));
 
+	t = calloc(1, sizeof(struct tdef));
 	if (t == NULL)
 		err(1, NULL);
 
-	memset(t, 0 , sizeof(struct tdef));
 	t->name = name;
 	SLIST_INSERT_HEAD(&tdefs, t, link);
 }
@@ -559,7 +560,11 @@ main(int argc, char *argv[])
 	level = 0;
 	last = NULL;
 	for (opt = 0; opt < argc; opt++) {
+		if (mods[opt] == NULL) /* smiGetModule failed above */
+			continue;
 		n = smiGetFirstNode(mods[opt], SMI_NODEKIND_ANY);
+		if (n == NULL)
+			continue;
 		for (;;) {
 			if (do_typedef == 0) {
 				level = open_node(n, level, &last);

Modified: projects/clang400-import/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt
==============================================================================
--- projects/clang400-import/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/contrib/bsnmp/snmp_mibII/BEGEMOT-IP-MIB.txt	Mon Jan  9 19:25:49 2017	(r311808)
@@ -54,6 +54,9 @@ begemotIp MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The MIB for IP stuff that is not in the official IP MIBs."
+    REVISION	"200602130000Z"
+    DESCRIPTION
+		"Initial revision."
     ::= { begemot 3 }
 
 begemotIpObjects	OBJECT IDENTIFIER ::= { begemotIp 1 }

Modified: projects/clang400-import/contrib/bsnmp/snmp_mibII/mibII.c
==============================================================================
--- projects/clang400-import/contrib/bsnmp/snmp_mibII/mibII.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/contrib/bsnmp/snmp_mibII/mibII.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -319,7 +319,7 @@ fetch_generic_mib(struct mibif *ifp, con
 	name[5] = IFDATA_GENERAL;
 
 	len = sizeof(ifp->mib);
-	if (sysctl(name, 6, &ifp->mib, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), &ifp->mib, &len, NULL, 0) == -1) {
 		if (errno != ENOENT)
 			syslog(LOG_WARNING, "sysctl(ifmib, %s) failed %m",
 			    ifp->name);
@@ -480,7 +480,7 @@ mib_fetch_ifmib(struct mibif *ifp)
 	name[3] = IFMIB_IFDATA;
 	name[4] = ifp->sysindex;
 	name[5] = IFDATA_LINKSPECIFIC;
-	if (sysctl(name, 6, NULL, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), NULL, &len, NULL, 0) == -1) {
 		syslog(LOG_WARNING, "sysctl linkmib estimate (%s): %m",
 		    ifp->name);
 		if (ifp->specmib != NULL) {
@@ -506,7 +506,7 @@ mib_fetch_ifmib(struct mibif *ifp)
 		ifp->specmib = newmib;
 		ifp->specmiblen = len;
 	}
-	if (sysctl(name, 6, ifp->specmib, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), ifp->specmib, &len, NULL, 0) == -1) {
 		syslog(LOG_WARNING, "sysctl linkmib (%s): %m", ifp->name);
 		if (ifp->specmib != NULL) {
 			ifp->specmib = NULL;
@@ -902,7 +902,7 @@ mib_refresh_iflist(void)
 	for (idx = 1; idx <= count; idx++) {
 		name[4] = idx;
 		len = sizeof(mib);
-		if (sysctl(name, 6, &mib, &len, NULL, 0) == -1) {
+		if (sysctl(name, nitems(name), &mib, &len, NULL, 0) == -1) {
 			if (errno == ENOENT)
 				continue;
 			syslog(LOG_ERR, "ifmib(%u): %m", idx);
@@ -1213,7 +1213,7 @@ mib_fetch_rtab(int af, int info, int arg
 	*lenp = 0;
 
 	/* initial estimate */
-	if (sysctl(name, 6, NULL, lenp, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), NULL, lenp, NULL, 0) == -1) {
 		syslog(LOG_ERR, "sysctl estimate (%d,%d,%d,%d,%d,%d): %m",
 		    name[0], name[1], name[2], name[3], name[4], name[5]);
 		return (NULL);
@@ -1230,7 +1230,7 @@ mib_fetch_rtab(int af, int info, int arg
 		}
 		buf = newbuf;
 
-		if (sysctl(name, 6, buf, lenp, NULL, 0) == 0)
+		if (sysctl(name, nitems(name), buf, lenp, NULL, 0) == 0)
 			break;
 
 		if (errno != ENOMEM) {

Modified: projects/clang400-import/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt
==============================================================================
--- projects/clang400-import/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/contrib/bsnmp/snmpd/BEGEMOT-MIB.txt	Mon Jan  9 19:25:49 2017	(r311808)
@@ -54,6 +54,9 @@ begemot MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The root of the Begemot subtree of the fokus tree."
+    REVISION "200201300000Z"
+    DESCRIPTION
+	    "Initial revision."
     ::= { fokus 1 }
 
 END

Modified: projects/clang400-import/contrib/bsnmp/snmpd/FOKUS-MIB.txt
==============================================================================
--- projects/clang400-import/contrib/bsnmp/snmpd/FOKUS-MIB.txt	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/contrib/bsnmp/snmpd/FOKUS-MIB.txt	Mon Jan  9 19:25:49 2017	(r311808)
@@ -52,6 +52,9 @@ fokus MODULE-IDENTITY
 	     E-mail:	harti@freebsd.org"
     DESCRIPTION
 	    "The root of the Fokus enterprises tree."
+    REVISION "200202050000Z"
+    DESCRIPTION
+	    "Initial revision."
     ::= { enterprises 12325 }
 
 END

Modified: projects/clang400-import/lib/libprocstat/Makefile
==============================================================================
--- projects/clang400-import/lib/libprocstat/Makefile	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libprocstat/Makefile	Mon Jan  9 19:25:49 2017	(r311808)
@@ -9,11 +9,11 @@ SRCS=	cd9660.c	\
 	common_kvm.c	\
 	core.c		\
 	libprocstat.c	\
-        msdosfs.c	\
+	msdosfs.c	\
 	smbfs.c		\
 	udf.c
 
-VERSION_DEF=	${.CURDIR}/Versions.def
+VERSION_DEF=	${LIBCSRCDIR}/Versions.def
 SYMBOL_MAPS=	${.CURDIR}/Symbol.map
 
 INCS=		libprocstat.h

Modified: projects/clang400-import/lib/libprocstat/libprocstat.c
==============================================================================
--- projects/clang400-import/lib/libprocstat/libprocstat.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libprocstat/libprocstat.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -282,7 +282,7 @@ procstat_getprocs(struct procstat *procs
 		name[1] = KERN_PROC;
 		name[2] = what;
 		name[3] = arg;
-		error = sysctl(name, 4, NULL, &len, NULL, 0);
+		error = sysctl(name, nitems(name), NULL, &len, NULL, 0);
 		if (error < 0 && errno != EPERM) {
 			warn("sysctl(kern.proc)");
 			goto fail;
@@ -299,7 +299,7 @@ procstat_getprocs(struct procstat *procs
 				goto fail;
 			}
 			olen = len;
-			error = sysctl(name, 4, p, &len, NULL, 0);
+			error = sysctl(name, nitems(name), p, &len, NULL, 0);
 		} while (error < 0 && errno == ENOMEM && olen == len);
 		if (error < 0 && errno != EPERM) {
 			warn("sysctl(kern.proc)");
@@ -1760,7 +1760,7 @@ getargv(struct procstat *procstat, struc
 		name[2] = env ? KERN_PROC_ENV : KERN_PROC_ARGS;
 		name[3] = kp->ki_pid;
 		len = nchr;
-		error = sysctl(name, 4, av->buf, &len, NULL, 0);
+		error = sysctl(name, nitems(name), av->buf, &len, NULL, 0);
 		if (error != 0 && errno != ESRCH && errno != EPERM)
 			warn("sysctl(kern.proc.%s)", env ? "env" : "args");
 		if (error != 0 || len == 0)
@@ -1983,7 +1983,7 @@ procstat_getgroups_sysctl(pid_t pid, uns
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(mib, 4, groups, &len, NULL, 0) == -1) {
+	if (sysctl(mib, nitems(mib), groups, &len, NULL, 0) == -1) {
 		warn("sysctl: kern.proc.groups: %d", pid);
 		free(groups);
 		return (NULL);
@@ -2059,7 +2059,7 @@ procstat_getumask_sysctl(pid_t pid, unsi
 	mib[2] = KERN_PROC_UMASK;
 	mib[3] = pid;
 	len = sizeof(*maskp);
-	error = sysctl(mib, 4, maskp, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), maskp, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH && errno != EPERM)
 		warn("sysctl: kern.proc.umask: %d", pid);
 	return (error);
@@ -2139,7 +2139,7 @@ procstat_getrlimit_sysctl(pid_t pid, int
 	name[3] = pid;
 	name[4] = which;
 	len = sizeof(struct rlimit);
-	error = sysctl(name, 5, rlimit, &len, NULL, 0);
+	error = sysctl(name, nitems(name), rlimit, &len, NULL, 0);
 	if (error < 0 && errno != ESRCH) {
 		warn("sysctl: kern.proc.rlimit: %d", pid);
 		return (-1);
@@ -2201,7 +2201,7 @@ procstat_getpathname_sysctl(pid_t pid, c
 	name[2] = KERN_PROC_PATHNAME;
 	name[3] = pid;
 	len = maxlen;
-	error = sysctl(name, 4, pathname, &len, NULL, 0);
+	error = sysctl(name, nitems(name), pathname, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH)
 		warn("sysctl: kern.proc.pathname: %d", pid);
 	if (len == 0)
@@ -2281,7 +2281,7 @@ procstat_getosrel_sysctl(pid_t pid, int 
 	name[2] = KERN_PROC_OSREL;
 	name[3] = pid;
 	len = sizeof(*osrelp);
-	error = sysctl(name, 4, osrelp, &len, NULL, 0);
+	error = sysctl(name, nitems(name), osrelp, &len, NULL, 0);
 	if (error != 0 && errno != ESRCH)
 		warn("sysctl: kern.proc.osrel: %d", pid);
 	return (error);
@@ -2341,7 +2341,7 @@ is_elf32_sysctl(pid_t pid)
 	name[2] = KERN_PROC_SV_NAME;
 	name[3] = pid;
 	len = sizeof(sv_name);
-	error = sysctl(name, 4, sv_name, &len, NULL, 0);
+	error = sysctl(name, nitems(name), sv_name, &len, NULL, 0);
 	if (error != 0 || len == 0)
 		return (0);
 	for (i = 0; i < sizeof(elf32_sv_names) / sizeof(*elf32_sv_names); i++) {
@@ -2372,7 +2372,7 @@ procstat_getauxv32_sysctl(pid_t pid, uns
 		warn("malloc(%zu)", len);
 		goto out;
 	}
-	if (sysctl(name, 4, auxv32, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), auxv32, &len, NULL, 0) == -1) {
 		if (errno != ESRCH && errno != EPERM)
 			warn("sysctl: kern.proc.auxv: %d: %d", pid, errno);
 		goto out;
@@ -2421,7 +2421,7 @@ procstat_getauxv_sysctl(pid_t pid, unsig
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(name, 4, auxv, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), auxv, &len, NULL, 0) == -1) {
 		if (errno != ESRCH && errno != EPERM)
 			warn("sysctl: kern.proc.auxv: %d: %d", pid, errno);
 		free(auxv);
@@ -2482,7 +2482,7 @@ procstat_getkstack_sysctl(pid_t pid, int
 	name[3] = pid;
 
 	len = 0;
-	error = sysctl(name, 4, NULL, &len, NULL, 0);
+	error = sysctl(name, nitems(name), NULL, &len, NULL, 0);
 	if (error < 0 && errno != ESRCH && errno != EPERM && errno != ENOENT) {
 		warn("sysctl: kern.proc.kstack: %d", pid);
 		return (NULL);
@@ -2499,7 +2499,7 @@ procstat_getkstack_sysctl(pid_t pid, int
 		warn("malloc(%zu)", len);
 		return (NULL);
 	}
-	if (sysctl(name, 4, kkstp, &len, NULL, 0) == -1) {
+	if (sysctl(name, nitems(name), kkstp, &len, NULL, 0) == -1) {
 		warn("sysctl: kern.proc.pid: %d", pid);
 		free(kkstp);
 		return (NULL);

Modified: projects/clang400-import/lib/libutil/kinfo_getallproc.c
==============================================================================
--- projects/clang400-import/lib/libutil/kinfo_getallproc.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libutil/kinfo_getallproc.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -31,8 +31,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -75,14 +75,14 @@ kinfo_getallproc(int *cntp)
 	mib[2] = KERN_PROC_PROC;
 
 	len = 0;
-	if (sysctl(mib, 3, NULL, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0)
 		return (NULL);
 
 	kipp = malloc(len);
 	if (kipp == NULL)
 		return (NULL);
 
-	if (sysctl(mib, 3, kipp, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), kipp, &len, NULL, 0) < 0)
 		goto bad;
 	if (len % sizeof(*kipp) != 0)
 		goto bad;

Modified: projects/clang400-import/lib/libutil/kinfo_getfile.c
==============================================================================
--- projects/clang400-import/lib/libutil/kinfo_getfile.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libutil/kinfo_getfile.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -2,8 +2,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -26,14 +26,14 @@ kinfo_getfile(pid_t pid, int *cntp)
 	mib[2] = KERN_PROC_FILEDESC;
 	mib[3] = pid;
 
-	error = sysctl(mib, 4, NULL, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), NULL, &len, NULL, 0);
 	if (error)
 		return (NULL);
 	len = len * 4 / 3;
 	buf = malloc(len);
 	if (buf == NULL)
 		return (NULL);
-	error = sysctl(mib, 4, buf, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), buf, &len, NULL, 0);
 	if (error) {
 		free(buf);
 		return (NULL);

Modified: projects/clang400-import/lib/libutil/kinfo_getproc.c
==============================================================================
--- projects/clang400-import/lib/libutil/kinfo_getproc.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libutil/kinfo_getproc.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -30,8 +30,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -49,14 +49,14 @@ kinfo_getproc(pid_t pid)
 	mib[1] = KERN_PROC;
 	mib[2] = KERN_PROC_PID;
 	mib[3] = pid;
-	if (sysctl(mib, 4, NULL, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), NULL, &len, NULL, 0) < 0)
 		return (NULL);
 
 	kipp = malloc(len);
 	if (kipp == NULL)
 		return (NULL);
 
-	if (sysctl(mib, 4, kipp, &len, NULL, 0) < 0)
+	if (sysctl(mib, nitems(mib), kipp, &len, NULL, 0) < 0)
 		goto bad;
 	if (len != sizeof(*kipp))
 		goto bad;

Modified: projects/clang400-import/lib/libutil/kinfo_getvmmap.c
==============================================================================
--- projects/clang400-import/lib/libutil/kinfo_getvmmap.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/lib/libutil/kinfo_getvmmap.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -2,8 +2,8 @@
 __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
-#include <sys/user.h>
 #include <sys/sysctl.h>
+#include <sys/user.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -26,14 +26,14 @@ kinfo_getvmmap(pid_t pid, int *cntp)
 	mib[2] = KERN_PROC_VMMAP;
 	mib[3] = pid;
 
-	error = sysctl(mib, 4, NULL, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), NULL, &len, NULL, 0);
 	if (error)
 		return (NULL);
 	len = len * 4 / 3;
 	buf = malloc(len);
 	if (buf == NULL)
 		return (NULL);
-	error = sysctl(mib, 4, buf, &len, NULL, 0);
+	error = sysctl(mib, nitems(mib), buf, &len, NULL, 0);
 	if (error) {
 		free(buf);
 		return (NULL);

Modified: projects/clang400-import/share/misc/pci_vendors
==============================================================================
--- projects/clang400-import/share/misc/pci_vendors	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/share/misc/pci_vendors	Mon Jan  9 19:25:49 2017	(r311808)
@@ -3,8 +3,8 @@
 #
 #	List of PCI ID's
 #
-#	Version: 2016.11.21
-#	Date:    2016-11-21 03:15:01
+#	Version: 2017.01.08
+#	Date:    2017-01-08 03:15:02
 #
 #	Maintained by Albert Pool, Martin Mares, and other volunteers from
 #	the PCI ID Project at http://pci-ids.ucw.cz/.
@@ -249,6 +249,7 @@
 	0014  MegaRAID Tri-Mode SAS3516
 		1028 1fd4  PERC H745P MX
 		1d49 0602  ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter
+	0015  MegaRAID Tri-Mode SAS3416
 	0016  MegaRAID Tri-Mode SAS3508
 		1028 1fc9  PERC H840 Adapter
 		1028 1fcb  PERC H740P Adapter
@@ -548,6 +549,7 @@
 		1028 1f53  HBA330 Mini
 		1028 1fd2  HBA330 MX
 		1028 1fd3  HBA330 MMZ
+		1bd4 0011  Inspur 12Gb 8i-3008 IT SAS HBA
 	00ab  SAS3516 Fusion-MPT Tri-Mode RAID On Chip (ROC)
 	00ac  SAS3416 Fusion-MPT Tri-Mode I/O Controller Chip (IOC)
 		1d49 0201  ThinkSystem 430-16i SAS/SATA 12Gb HBA
@@ -2201,6 +2203,11 @@
 	67b9  Vesuvius [Radeon R9 295X2]
 	67be  Hawaii LE
 	67c0  Ellesmere [Polaris10]
+	67c4  Ellesmere [Radeon Pro WX 7100]
+	67c7  Ellesmere [Radeon Pro WX 5100]
+	67ca  Ellesmere [Polaris10]
+	67cc  Ellesmere [Polaris10]
+	67cf  Ellesmere [Polaris10]
 	67df  Ellesmere [Radeon RX 470/480]
 		1002 0b37  Radeon RX 480
 		1043 04a8  Radeon RX 480
@@ -2218,6 +2225,7 @@
 		1787 a480  Radeon RX 480
 	67e0  Baffin [Polaris11]
 	67e1  Baffin [Polaris11]
+	67e3  Baffin [Radeon Pro WX 4100]
 	67e8  Baffin [Polaris11]
 	67e9  Baffin [Polaris11]
 	67eb  Baffin [Polaris11]
@@ -2924,6 +2932,12 @@
 		148c 9380  Radeon R9 380
 # Make naming scheme consistent
 		174b e308  Radeon R9 380 Nitro 4G D5
+	6980  Polaris12
+	6981  Polaris12
+	6985  Polaris12
+	6986  Polaris12
+	6987  Polaris12
+	699f  Polaris12
 	700f  RS100 AGP Bridge
 	7010  RS200/RS250 AGP Bridge
 	7100  R520 [Radeon X1800 XT]
@@ -5095,6 +5109,7 @@
 		0675 1704  ISDN Adapter (PCI Bus, D, C)
 		0675 1707  ISDN Adapter (PCI Bus, DV, W)
 		10cf 105e  ISDN Adapter (PCI Bus, DV, W)
+	13a0  Transformer Book T101HA-GR030R
 # Should be 1022:9602
 	9602  AMD RS780/RS880 PCI to PCI bridge (int gfx)
 		1043 83a2  M4A785TD Motherboard
@@ -10077,6 +10092,7 @@
 	10c3  GT218 [GeForce 8400 GS Rev. 3]
 	10c5  GT218 [GeForce 405]
 	10d8  GT218 [NVS 300]
+	10ef  GP102 HDMI Audio Controller
 	10f0  GP104 High Definition Audio Controller
 	1140  GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M]
 		1019 0799  GeForce 820M
@@ -10620,7 +10636,7 @@
 	13f1  GM204GL [Quadro M4000]
 	13f2  GM204GL [Tesla M60]
 	13f3  GM204GL [Tesla M6]
-	13f8  GM204GLM [Quadro M5000M]
+	13f8  GM204GLM [Quadro M5000M / M5000 SE]
 	13f9  GM204GLM [Quadro M4000M]
 	13fa  GM204GLM [Quadro M3000M]
 		10de 11c9  Quadro M3000 SE
@@ -10634,8 +10650,9 @@
 	1431  GM206GL [Tesla M4]
 	15f0  GP100GL
 	15f1  GP100GL
-	15f8  GP100GL
-	15f9  GP100GL
+	15f7  GP100GL [Tesla P100 PCIe 12GB]
+	15f8  GP100GL [Tesla P100 PCIe 16GB]
+	15f9  GP100GL [Tesla P100 SMX2 16GB]
 	1617  GM204M [GeForce GTX 980M]
 	1618  GM204M [GeForce GTX 970M]
 	1619  GM204M [GeForce GTX 965M]
@@ -10659,10 +10676,12 @@
 	1b81  GP104 [GeForce GTX 1070]
 	1b82  GP104
 	1b83  GP104
+	1b84  GP104 [GeForce GTX 1060 3GB]
 	1ba0  GP104M [GeForce GTX 1080]
 	1ba1  GP104M [GeForce GTX 1070]
 	1bb0  GP104GL [Quadro P5000]
 	1bb1  GP104GL
+	1bb3  GP104GL [Tesla P4]
 	1bb4  GP104GL
 	1be0  GP104M [GeForce GTX 1080]
 	1be1  GP104M [GeForce GTX 1070]
@@ -10678,6 +10697,9 @@
 	1c80  GP107
 	1c81  GP107 [GeForce GTX 1050]
 	1c82  GP107 [GeForce GTX 1050 Ti]
+	1c8c  GP107M [GeForce GTX 1050 Ti]
+	1c8d  GP107M [GeForce GTX 1050]
+	1c8e  GP107M
 	1ca7  GP107GL
 	1ca8  GP107GL
 	1caa  GP107GL
@@ -12103,7 +12125,11 @@
 111f  Precision Digital Images
 	4a47  Precision MX Video engine interface
 	5243  Frame capture bus interface
-1120  EMC Corporation
+# formerly EMC Corporation
+1120  Dell EMC
+	2306  Unity Fibre Channel Controller
+	2501  Unity Ethernet Controller
+	2505  Unity Fibre Channel Controller
 1121  Zilog
 1122  Multi-tech Systems, Inc.
 1123  Excellent Design, Inc.
@@ -15975,7 +16001,7 @@
 	5081  T540-5081 Unified Wire Ethernet Controller
 	5082  T504-5082 Unified Wire Ethernet Controller
 	5083  T540-5083 Unified Wire Ethernet Controller
-	5084  T580-5084 Unified Wire Ethernet Controller
+	5084  T540-5084 Unified Wire Ethernet Controller
 	5085  T580-5085 Unified Wire Ethernet Controller
 	5086  T580-5086 Unified Wire Ethernet Controller
 	5087  T580-5087 Unified Wire Ethernet Controller
@@ -15994,6 +16020,7 @@
 	509a  T520-509A Unified Wire Ethernet Controller
 	509b  T540-509B Unified Wire Ethernet Controller
 	509c  T520-509C Unified Wire Ethernet Controller
+	509d  T540-509D Unified Wire Ethernet Controller
 	5401  T520-CR Unified Wire Ethernet Controller
 	5402  T522-CR Unified Wire Ethernet Controller
 	5403  T540-CR Unified Wire Ethernet Controller
@@ -16041,6 +16068,7 @@
 	549a  T520-509A Unified Wire Ethernet Controller
 	549b  T540-509B Unified Wire Ethernet Controller
 	549c  T520-509C Unified Wire Ethernet Controller
+	549d  T540-509D Unified Wire Ethernet Controller
 	5501  T520-CR Unified Wire Storage Controller
 	5502  T522-CR Unified Wire Storage Controller
 	5503  T540-CR Unified Wire Storage Controller
@@ -16088,6 +16116,7 @@
 	559a  T520-509A Unified Wire Storage Controller
 	559b  T540-509B Unified Wire Storage Controller
 	559c  T520-509C Unified Wire Storage Controller
+	559d  T540-509D Unified Wire Storage Controller
 	5601  T520-CR Unified Wire Storage Controller
 	5602  T522-CR Unified Wire Storage Controller
 	5603  T540-CR Unified Wire Storage Controller
@@ -16135,6 +16164,7 @@
 	569a  T520-509A Unified Wire Storage Controller
 	569b  T540-509B Unified Wire Storage Controller
 	569c  T520-509C Unified Wire Storage Controller
+	569d  T540-509D Unified Wire Storage Controller
 	5701  T520-CR Unified Wire Ethernet Controller
 	5702  T522-CR Unified Wire Ethernet Controller
 	5703  T540-CR Unified Wire Ethernet Controller
@@ -16221,6 +16251,7 @@
 	589a  T520-509A Unified Wire Ethernet Controller [VF]
 	589b  T540-509B Unified Wire Ethernet Controller [VF]
 	589c  T520-509C Unified Wire Ethernet Controller [VF]
+	589d  T540-509D Unified Wire Ethernet Controller [VF]
 	6001  T6225-CR Unified Wire Ethernet Controller
 	6002  T6225-SO-CR Unified Wire Ethernet Controller
 	6003  T6425-CR Unified Wire Ethernet Controller
@@ -16357,7 +16388,8 @@
 144d  Samsung Electronics Co Ltd
 	1600  Apple PCIe SSD
 	a800  XP941 PCIe SSD
-	a802  NVMe SSD Controller
+	a802  NVMe SSD Controller SM951/PM951
+	a804  NVMe SSD Controller SM961/PM961
 	a820  NVMe SSD Controller 171X
 		1028 1f95  Express Flash NVMe XS1715 SSD 400GB
 		1028 1f96  Express Flash NVMe XS1715 SSD 800GB
@@ -17968,11 +18000,13 @@
 15b3  Mellanox Technologies
 	0191  MT25408 [ConnectX IB Flash Recovery]
 	01f6  MT27500 Family [ConnectX-3 Flash Recovery]
+	01f8  MT27520 Family [ConnectX-3 Pro Flash Recovery]
 	01ff  MT27600 Family [Connect-IB Flash Recovery]
 	0209  MT27700 Family [ConnectX-4 Flash Recovery]
 	020b  MT27710 Family [ConnectX-4 Lx Flash Recovery]
 	020d  MT28800 Family [ConnectX-5 Flash Recovery]
 	020f  MT28908A0 Family [ConnectX-6 Flash Recovery]
+	0211  MT416842 Family [BlueField SoC Flash Recovery]
 # reserved for RM#105916
 	024e  MT53100 [Spectrum-2, Flash recovery mode]
 # Actual value to be used
@@ -18732,6 +18766,7 @@
 	7013  AP440-3: 32-Channel Isolated Digital Input Module
 	7014  AP445: 32-Channel Isolated Digital Output Module
 	7016  AP470 48-Channel TTL Level Digital Input/Output Module
+	7017  AP323 16-bit, 20 or 40 Channel Analog Input Module
 	7018  AP408: 32-Channel Digital I/O Module
 	701a  AP220-16 12-Bit, 16-Channel Analog Output Module
 	701b  AP231-16 16-Bit, 16-Channel Analog Output Module
@@ -18992,6 +19027,7 @@
 	1160  ARC-1160 16-Port PCI-X to SATA RAID Controller
 	1170  ARC-1170 24-Port PCI-X to SATA RAID Controller
 	1201  ARC-1200 2-Port PCI-Express to SATA II RAID Controller
+	1203  ARC-1203 2/4/8 Port PCIe 2.0 to SATA 6Gb RAID Controller
 	1210  ARC-1210 4-Port PCI-Express to SATA RAID Controller
 	1214  ARC-12x4 PCIe 2.0 to SAS/SATA 6Gb RAID Controller
 		17d3 1214  ARC-1214 4-Port PCIe 2.0 to SAS/SATA 6Gb RAID Controller
@@ -19510,7 +19546,7 @@
 		1924 5105  SFN4111T-R5
 		1924 5201  SFN4112F-R1
 		1924 5202  SFN4112F-R2
-	0803  SFC9020 [Solarstorm]
+	0803  SFC9020 10G Ethernet Controller
 		1014 0478  2-port 10GbE Low-Latency (R7)
 		1014 0479  2-port 10GbE OpenOnload (R7)
 		1014 04a7  Solarflare 10Gb Low-latency Dual-port HBA (R7)
@@ -19540,7 +19576,7 @@
 		1924 7207  SFN5162F-R7 SFP+ Server Adapter
 		1924 7a06  SFN5152F-R6 SFP+ Server Adapter
 		1924 7a07  SFN5152F-R7 SFP+ Server Adapter
-	0813  SFL9021 [Solarstorm]
+	0813  SFL9021 10GBASE-T Ethernet Controller
 		1924 6100  SFN5121T-R0 10GBASE-T Server Adapter
 		1924 6102  SFN5121T-R2 10GBASE-T Server Adapter
 		1924 6103  SFN5121T-R3 10GBASE-T Server Adapter
@@ -19549,7 +19585,7 @@
 		1924 6904  SFN5111T-R4 10GBASE-T Server Adapter
 		1924 7104  SFN5161T-R4 10GBASE-T Server Adapter
 		1924 7904  SFN5151T-R4 10GBASE-T Server Adapter
-	0903  SFC9120
+	0903  SFC9120 10G Ethernet Controller
 		1014 04cc  SFN7122F-R2 2x10GbE SFP+ Flareon Ultra
 		1924 8002  SFN7122F-R1 SFP+ Server Adapter
 		1924 8003  SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
@@ -19561,11 +19597,11 @@
 		1924 800d  SFN7x02F-R3 Flareon 7000 Series 10G Adapter
 		1924 8010  SFA7942Q-R1 QSFP+ AOE Adapter
 		1924 8015  SFA7942Q-A5-0-R1 QSFP+ AOE Adapter
-	0923  SFC9140
+	0923  SFC9140 10/40G Ethernet Controller
 		1924 800b  SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
 		1924 800e  SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter
 		1924 800f  SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter
-	0a03  SFC9220
+	0a03  SFC9220 10/40G Ethernet Controller
 		1924 8011  SFN 8022-R1 Solarflare Flareon 8000 Series 10G Adapter
 		1924 8012  SFN8522-R1 Flareon Ultra 8000 Series 10G Adapter
 		1924 8013  SFN8042-R1 Solarflare Flareon 8000 Series 10/40G Adapter
@@ -19574,10 +19610,11 @@
 		1924 8017  SFN8522-R2 Flareon Ultra 8000 Series 10G Adapter
 		1924 8018  SFN8042-R2 Flareon 8000 Series 10/40G Adapter
 		1924 8019  SFN8542-R2 Flareon Ultra 8000 Series 10/40G Adapter
-	1803  SFC9020 Virtual Function [Solarstorm]
-	1813  SFL9021 Virtual Function [Solarstorm]
-	1903  SFC9120 Virtual Function
-	1923  SFC9140 Virtual Function
+	1803  SFC9020 10G Ethernet Controller (Virtual Function)
+	1813  SFL9021 10GBASE-T Ethernet Controller (Virtual Function)
+	1903  SFC9120 10G Ethernet Controller (Virtual Function)
+	1923  SFC9140 10/40G Ethernet Controller (Virtual Function)
+	1a03  SFC9220 10/40G Ethernet Controller (Virtual Function)
 	6703  SFC4000 rev A iSCSI/Onload [Solarstorm]
 		10b8 0102  SMC10GPCIe-10BT (A2) [TigerCard]
 		10b8 0103  SMC10GPCIe-10BT (A3) [TigerCard]
@@ -19864,6 +19901,7 @@
 	5801  DDRdrive X1
 	5808  DDRdrive X8
 	dd52  DDRdrive X1-30
+19e5  Huawei Technologies Co., Ltd.
 19e7  NET (Network Equipment Technologies)
 	1001  STIX DSP Card
 	1002  STIX - 1 Port T1/E1 Card
@@ -20303,6 +20341,8 @@
 	0303  Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card
 	0304  Simulyzer-RT CompactPCI Serial PWR-ANA-1 card
 	0305  Simulyzer-RT CompactPCI Serial CAN-1 card
+1cd7  Nanjing Magewell Electronics Co., Ltd.
+	0010  Pro Capture Endpoint
 1cdd  secunet Security Networks AG
 1ce4  Exablaze
 	0001  ExaNIC X4
@@ -20310,6 +20350,7 @@
 	0003  ExaNIC X10
 	0004  ExaNIC X10-GM
 	0005  ExaNIC X40
+	0006  ExaNIC X10-HPT
 1cf7  Subspace Dynamics
 1d00  Pure Storage
 1d1d  CNEX Labs
@@ -21336,6 +21377,27 @@
 	0813  Moorestown SC DMA
 	0814  Moorestown LPE DMA
 	0815  Moorestown SSP0
+	0817  Medfield Serial IO I2C Controller #3
+	0818  Medfield Serial IO I2C Controller #4
+	0819  Medfield Serial IO I2C Controller #5
+	081a  Medfield GPIO Controller [Core]
+	081b  Medfield Serial IO HSUART Controller #1
+	081c  Medfield Serial IO HSUART Controller #2
+	081d  Medfield Serial IO HSUART Controller #3
+	081e  Medfield Serial IO HSUART DMA Controller
+	081f  Medfield GPIO Controller [AON]
+	0820  Medfield SD Host Controller
+	0821  Medfield SDIO Controller #1
+	0822  Medfield SDIO Controller #2
+	0823  Medfield eMMC Controller #0
+	0824  Medfield eMMC Controller #1
+	0827  Medfield Serial IO DMA Controller
+	0828  Medfield Power Management Unit
+	0829  Medfield USB Device Controller (OTG)
+	082a  Medfield SCU IPC
+	082c  Medfield Serial IO I2C Controller #0
+	082d  Medfield Serial IO I2C Controller #1
+	082e  Medfield Serial IO I2C Controller #2
 	0885  Centrino Wireless-N + WiMAX 6150
 		8086 1305  Centrino Wireless-N + WiMAX 6150 BGN
 		8086 1307  Centrino Wireless-N + WiMAX 6150 BG
@@ -22445,6 +22507,18 @@
 	1161  82806AA PCI64 Hub Advanced Programmable Interrupt Controller
 		8086 1161  82806AA PCI64 Hub APIC
 	1162  Xscale 80200 Big Endian Companion Chip
+	1190  Merrifield SD/SDIO/eMMC Controller
+	1191  Merrifield Serial IO HSUART Controller
+	1192  Merrifield Serial IO HSUART DMA Controller
+	1194  Merrifield Serial IO SPI Controller
+	1195  Merrifield Serial IO I2C Controller
+	1196  Merrifield Serial IO I2C Controller
+	1199  Merrifield GPIO Controller
+	119e  Merrifield USB Device Controller (OTG)
+	11a0  Merrifield SCU IPC
+	11a1  Merrifield Power Management Unit
+	11a2  Merrifield Serial IO DMA Controller
+	11a5  Merrifield Serial IO PWM Controller
 	1200  IXP1200 Network Processor
 		172a 0000  AEP SSL Accelerator
 	1209  8255xER/82551IT Fast Ethernet Controller
@@ -22917,8 +22991,8 @@
 		103c 0000  HPE Ethernet 10/20Gb 2-port 660FLB Adapter
 		103c 22fe  HPE Ethernet 10/20Gb 2-port 660FLB Adapter
 	1588  Ethernet Controller XL710 for 20GbE backplane
-		103c 0000  HPE Ethernet 10/20Gb 2-port 660M Adapter
-		103c 22ff  HPE Ethernet 10/20Gb 2-port 660M Adapter
+		103c 0000  Ethernet 10/20Gb 2-port 660M Adapter
+		103c 22ff  Ethernet 10/20Gb 2-port 660M Adapter
 	1589  Ethernet Controller X710/X557-AT 10GBASE-T
 		108e 0000  Quad Port 10GBase-T Adapter
 		108e 7b1c  Quad Port 10GBase-T Adapter
@@ -22951,12 +23025,17 @@
 	15ac  Ethernet Connection X552 10 GbE SFP+
 	15ad  Ethernet Connection X552/X557-AT 10GBASE-T
 	15ae  Ethernet Connection X552 1000BASE-T
+	15b0  Ethernet Connection X552 Backplane
 	15b4  X553 Virtual Function
 	15b5  DSL6340 USB 3.1 Controller [Alpine Ridge]
 	15b6  DSL6540 USB 3.1 Controller [Alpine Ridge]
 	15b7  Ethernet Connection (2) I219-LM
 	15b8  Ethernet Connection (2) I219-V
 	15b9  Ethernet Connection (3) I219-LM
+	15bb  Ethernet Connection (7) I219-LM
+	15bc  Ethernet Connection (7) I219-V
+	15bd  Ethernet Connection (6) I219-LM
+	15be  Ethernet Connection (6) I219-V
 	15bf  JHL6240 Thunderbolt 3 NHI (Low Power) [Alpine Ridge LP 2016]
 	15c0  JHL6240 Thunderbolt 3 Bridge (Low Power) [Alpine Ridge LP 2016]
 	15c5  X553 Virtual Function
@@ -24258,6 +24337,9 @@
 	24f4  Wireless 8260
 # Snow Field Peak AC
 		8086 0030  Dual Band Wireless-AC 8260
+	24fd  Wireless 8265 / 8275
+# Windstorm Peak
+		8086 0010  Dual Band Wireless-AC 8265
 	2500  82820 820 (Camino) Chipset Host Bridge (MCH)
 		1028 0095  Precision Workstation 220 Chipset
 		1043 801c  P3C-2000 system chipset
@@ -25145,12 +25227,12 @@
 		1028 01da  OptiPlex 745
 		1462 7235  P965 Neo MS-7235 mainboard
 	2826  C600/X79 series chipset SATA RAID Controller
-		1d49 0100  ThinkSystem RAID 331
-		1d49 0101  ThinkSystem RAID 331
-		1d49 0102  ThinkSystem RAID 331
-		1d49 0103  ThinkSystem RAID 331
-		1d49 0104  ThinkSystem RAID 331
-		1d49 0105  ThinkSystem RAID 331
+		1d49 0100  Intel RSTe SATA Software RAID
+		1d49 0101  Intel RSTe SATA Software RAID
+		1d49 0102  Intel RSTe SATA Software RAID
+		1d49 0103  Intel RSTe SATA Software RAID
+		1d49 0104  Intel RSTe SATA Software RAID
+		1d49 0105  Intel RSTe SATA Software RAID
 	2827  C610/X99 series chipset sSATA Controller [RAID mode]
 	2828  82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode]
 		1028 01f3  Inspiron 1420
@@ -26950,41 +27032,41 @@
 	530d  80310 (IOP) IO Processor
 	5845  QEMU NVM Express Controller
 		1af4 1100  QEMU Virtual Machine
-	5a84  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Graphics Controller
-	5a88  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Imaging Unit
-	5a98  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster
-	5a9a  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Trusted Execution Engine
-	5aa2  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Integrated Sensor Hub
-	5aa8  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series USB xHCI
-	5aac  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #1
-	5aae  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #2
-	5ab0  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #3
-	5ab2  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #4
-	5ab4  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #5
-	5ab6  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #6
-	5ab8  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #7
-	5aba  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #8
-	5abc  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #1
-	5abe  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #2
-	5ac0  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #3
-	5ac2  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #1
-	5ac4  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #2
-	5ac6  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #3
-	5ac8  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PWM Pin Controller
-	5aca  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDXC/MMC Host Controller
-	5acc  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series eMMC Controller
-	5ad0  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SDIO Controller
-	5ad4  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SMBus Controller
-	5ad6  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #1
-	5ad7  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port B #2
-	5ad8  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #1
-	5ad9  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #2
-	5ada  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #3
-	5adb  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #4
-	5ae3  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SATA AHCI Controller
-	5ae8  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Low Pin Count Interface
-	5aee  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #4
-	5af0  Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Host Bridge
+	5a84  Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller
+	5a88  Celeron N3350/Pentium N4200/Atom E3900 Series Imaging Unit
+	5a98  Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster
+	5a9a  Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine
+	5aa2  Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Sensor Hub
+	5aa8  Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI
+	5aac  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #1
+	5aae  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #2
+	5ab0  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #3
+	5ab2  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #4
+	5ab4  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #5
+	5ab6  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #6
+	5ab8  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #7
+	5aba  Celeron N3350/Pentium N4200/Atom E3900 Series I2C Controller #8
+	5abc  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #1
+	5abe  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #2
+	5ac0  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #3
+	5ac2  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #1
+	5ac4  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #2
+	5ac6  Celeron N3350/Pentium N4200/Atom E3900 Series SPI Controller #3
+	5ac8  Celeron N3350/Pentium N4200/Atom E3900 Series PWM Pin Controller
+	5aca  Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller
+	5acc  Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller
+	5ad0  Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller
+	5ad4  Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller
+	5ad6  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1
+	5ad7  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2
+	5ad8  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1
+	5ad9  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2
+	5ada  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3
+	5adb  Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4
+	5ae3  Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller
+	5ae8  Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface
+	5aee  Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4
+	5af0  Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge
 	65c0  5100 Chipset Memory Controller Hub
 	65e2  5100 Chipset PCI Express x4 Port 2
 	65e3  5100 Chipset PCI Express x4 Port 3
@@ -27826,6 +27908,25 @@
 	a243  Lewisburg LPC or eSPI Controller
 	a252  Lewisburg SSATA Controller [AHCI mode]
 	a256  Lewisburg SSATA Controller [RAID mode]
+	a282  200 Series PCH SATA controller [AHCI mode]
+	a294  200 Series PCH PCI Express Root Port #1
+	a2a1  200 Series PCH PMC
+	a2a3  200 Series PCH SMBus Controller
+	a2a7  200 Series PCH Serial IO UART Controller #0
+	a2a8  200 Series PCH Serial IO UART Controller #1
+	a2a9  200 Series PCH Serial IO SPI Controller #0
+	a2aa  200 Series PCH Serial IO SPI Controller #1
+	a2af  200 Series PCH USB 3.0 xHCI Controller
+	a2b1  200 Series PCH Thermal Subsystem
+	a2ba  200 Series PCH CSME HECI #1
+	a2bb  200 Series PCH CSME HECI #2
+	a2c6  200 Series PCH LPC Controller
+	a2e0  200 Series PCH Serial IO I2C Controller #0
+	a2e1  200 Series PCH Serial IO I2C Controller #1
+	a2e2  200 Series PCH Serial IO I2C Controller #2
+	a2e3  200 Series PCH Serial IO I2C Controller #3
+	a2e6  200 Series PCH Serial IO UART Controller #2
+	a2f0  200 Series PCH HD Audio
 	a620  6400/6402 Advanced Memory Buffer (AMB)
 	abc0  Omni-Path Fabric Switch Silicon 100 Series
 	b152  21152 PCI-to-PCI Bridge
@@ -28605,6 +28706,7 @@ f1d0  AJA Video
 	cafe  Kona SD
 	cfee  Xena LS/SD-22-DA/SD-DA
 	daff  KONA LHi
+	db09  Corvid 24
 	dcaf  Kona HD
 	dfee  Xena HD-DA
 	efac  Xena SD-MM/SD-22-MM

Modified: projects/clang400-import/share/mk/bsd.README
==============================================================================
--- projects/clang400-import/share/mk/bsd.README	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/share/mk/bsd.README	Mon Jan  9 19:25:49 2017	(r311808)
@@ -410,6 +410,63 @@ If foo has multiple source files, add th
 
 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
+The include file, <bsd.snmpmod.mk>, handles building MIB modules for bsnmpd
+from one or more source files, along with their manual pages.  It has a
+limited number of suffixes, consistent with the current needs of the BSD
+tree.
+
+bsd.snmpmod.mk leverages bsd.lib.mk for building MIB modules and
+bsd.files.mk for installing MIB description and definition files.
+
+It has no additional targets.
+
+It sets/uses the following variables:
+
+BMIBS		The MIB definitions to install.
+
+BMIBSDIR	The directory where the MIB definitions are installed.
+		This defaults to `${SHAREDIR}/snmp/mibs`.
+
+DEFS		The MIB description files to install.
+
+DEFSDIR		The directory where MIB description files are installed.
+		This defaults to `${SHAREDIR}/snmp/defs`.
+
+EXTRAMIBDEFS	Extra MIB description files to use as input when
+		generating ${MOD}_oid.h and ${MOD}_tree.[ch].
+
+EXTRAMIBSYMS	Extra MIB definition files used only for extracting
+		symbols.
+
+		EXTRAMIBSYMS are useful when resolving inter-module
+		dependencies and are useful with files containing only
+		enum-definitions.
+
+		See ${MOD}_oid.h for more details.
+
+MOD		The bsnmpd module name.
+
+XSYM		MIB names to extract symbols for. See ${MOD}_oid.h for
+		more details.
+
+It generates the following files:
+
+${MOD}_tree.c	A source file and header which programmatically describes
+${MOD}_tree.h	the MIB (type, OID name, ACCESS attributes, etc).
+
+		The files are generated via "gensnmptree -p".
+
+		See gensnmptree(1) for more details.
+
+${MOD}_oid.h	A header which programmatically describes the MIB root and
+		MIB tables.
+
+		The files are generated via "gensnmptree -e".
+
+		See gensnmptree(1) for more details.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
 The include file <bsd.subdir.mk> contains the default targets for building
 subdirectories.  It has the same seven targets as <bsd.prog.mk>: all, clean,
 cleandir, depend, install, lint, and tags.  For all of the directories

Modified: projects/clang400-import/sys/arm/ti/ti_sdhci.c
==============================================================================
--- projects/clang400-import/sys/arm/ti/ti_sdhci.c	Mon Jan  9 19:22:29 2017	(r311807)
+++ projects/clang400-import/sys/arm/ti/ti_sdhci.c	Mon Jan  9 19:25:49 2017	(r311808)
@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/mmc/mmcbrvar.h>
 
 #include <dev/sdhci/sdhci.h>
+#include <dev/sdhci/sdhci_fdt_gpio.h>
 #include "sdhci_if.h"
 
 #include <arm/ti/ti_cpuid.h>
@@ -61,7 +62,7 @@ __FBSDID("$FreeBSD$");
 
 struct ti_sdhci_softc {
 	device_t		dev;
-	device_t		gpio_dev;
+	struct sdhci_fdt_gpio * gpio;
 	struct resource *	mem_res;
 	struct resource *	irq_res;

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

From owner-svn-src-projects@freebsd.org  Mon Jan  9 19:37:18 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 96E94CA610E
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 19:37:18 +0000 (UTC) (envelope-from dim@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 597331E34;
 Mon,  9 Jan 2017 19:37:18 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09JbHNs050068;
 Mon, 9 Jan 2017 19:37:17 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09JbH93050066;
 Mon, 9 Jan 2017 19:37:17 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701091937.v09JbH93050066@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 19:37:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311810 - in projects/clang400-import: lib/libc++
 tools/build/mk
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 19:37:18 -0000

Author: dim
Date: Mon Jan  9 19:37:17 2017
New Revision: 311810
URL: https://svnweb.freebsd.org/changeset/base/311810

Log:
  Add additional libc++ 4.0.0 headers.

Modified:
  projects/clang400-import/lib/libc++/Makefile
  projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc

Modified: projects/clang400-import/lib/libc++/Makefile
==============================================================================
--- projects/clang400-import/lib/libc++/Makefile	Mon Jan  9 19:32:57 2017	(r311809)
+++ projects/clang400-import/lib/libc++/Makefile	Mon Jan  9 19:37:17 2017	(r311810)
@@ -80,6 +80,7 @@ STD_HEADERS=	__bit_reference\
 		__functional_base\
 		__functional_base_03\
 		__hash_table\
+		__libcpp_version\
 		__locale\
 		__mutex_base\
 		__nullptr\
@@ -87,12 +88,14 @@ STD_HEADERS=	__bit_reference\
 		__split_buffer\
 		__sso_allocator\
 		__std_stream\
+		__string\
 		__threading_support\
 		__tree\
 		__tuple\
 		__undef___deallocate\
 		__undef_min_max\
 		algorithm\
+		any\
 		array\
 		atomic\
 		bitset\
@@ -143,14 +146,17 @@ STD_HEADERS=	__bit_reference\
 		istream\
 		iterator\
 		limits\
+		limits.h\
 		list\
 		locale\
+		locale.h\
 		map\
 		math.h\
 		memory\
 		mutex\
 		new\
 		numeric\
+		optional\
 		ostream\
 		queue\
 		random\
@@ -165,11 +171,13 @@ STD_HEADERS=	__bit_reference\
 		stdbool.h\
 		stddef.h\
 		stdexcept\
+		stdint.h\
 		stdio.h\
 		stdlib.h\
 		streambuf\
 		string\
 		string.h\
+		string_view\
 		strstream\
 		system_error\
 		tgmath.h\
@@ -182,6 +190,7 @@ STD_HEADERS=	__bit_reference\
 		unordered_set\
 		utility\
 		valarray\
+		variant\
 		vector\
 		wchar.h\
 		wctype.h
@@ -213,6 +222,7 @@ EXP_HEADERS=	__config\
 		list\
 		map\
 		memory_resource\
+		numeric\
 		optional\
 		propagate_const\
 		ratio\

Modified: projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc	Mon Jan  9 19:32:57 2017	(r311809)
+++ projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc	Mon Jan  9 19:37:17 2017	(r311810)
@@ -4452,6 +4452,7 @@ OLD_FILES+=usr/include/c++/v1/__function
 OLD_FILES+=usr/include/c++/v1/__functional_base
 OLD_FILES+=usr/include/c++/v1/__functional_base_03
 OLD_FILES+=usr/include/c++/v1/__hash_table
+OLD_FILES+=usr/include/c++/v1/__libcpp_version
 OLD_FILES+=usr/include/c++/v1/__locale
 OLD_FILES+=usr/include/c++/v1/__mutex_base
 OLD_FILES+=usr/include/c++/v1/__nullptr
@@ -4459,12 +4460,14 @@ OLD_FILES+=usr/include/c++/v1/__refstrin
 OLD_FILES+=usr/include/c++/v1/__split_buffer
 OLD_FILES+=usr/include/c++/v1/__sso_allocator
 OLD_FILES+=usr/include/c++/v1/__std_stream
+OLD_FILES+=usr/include/c++/v1/__string
 OLD_FILES+=usr/include/c++/v1/__threading_support
 OLD_FILES+=usr/include/c++/v1/__tree
 OLD_FILES+=usr/include/c++/v1/__tuple
 OLD_FILES+=usr/include/c++/v1/__undef___deallocate
 OLD_FILES+=usr/include/c++/v1/__undef_min_max
 OLD_FILES+=usr/include/c++/v1/algorithm
+OLD_FILES+=usr/include/c++/v1/any
 OLD_FILES+=usr/include/c++/v1/array
 OLD_FILES+=usr/include/c++/v1/atomic
 OLD_FILES+=usr/include/c++/v1/bitset
@@ -4547,14 +4550,18 @@ OLD_FILES+=usr/include/c++/v1/iostream
 OLD_FILES+=usr/include/c++/v1/istream
 OLD_FILES+=usr/include/c++/v1/iterator
 OLD_FILES+=usr/include/c++/v1/limits
+OLD_FILES+=usr/include/c++/v1/limits.h
 OLD_FILES+=usr/include/c++/v1/list
 OLD_FILES+=usr/include/c++/v1/locale
+OLD_FILES+=usr/include/c++/v1/locale.h
 OLD_FILES+=usr/include/c++/v1/map
 OLD_FILES+=usr/include/c++/v1/math.h
 OLD_FILES+=usr/include/c++/v1/memory
 OLD_FILES+=usr/include/c++/v1/mutex
 OLD_FILES+=usr/include/c++/v1/new
 OLD_FILES+=usr/include/c++/v1/numeric
+OLD_FILES+=usr/include/c++/v1/numeric
+OLD_FILES+=usr/include/c++/v1/optional
 OLD_FILES+=usr/include/c++/v1/ostream
 OLD_FILES+=usr/include/c++/v1/queue
 OLD_FILES+=usr/include/c++/v1/random
@@ -4569,11 +4576,13 @@ OLD_FILES+=usr/include/c++/v1/stack
 OLD_FILES+=usr/include/c++/v1/stdbool.h
 OLD_FILES+=usr/include/c++/v1/stddef.h
 OLD_FILES+=usr/include/c++/v1/stdexcept
+OLD_FILES+=usr/include/c++/v1/stdint.h
 OLD_FILES+=usr/include/c++/v1/stdio.h
 OLD_FILES+=usr/include/c++/v1/stdlib.h
 OLD_FILES+=usr/include/c++/v1/streambuf
 OLD_FILES+=usr/include/c++/v1/string
 OLD_FILES+=usr/include/c++/v1/string.h
+OLD_FILES+=usr/include/c++/v1/string_view
 OLD_FILES+=usr/include/c++/v1/strstream
 OLD_FILES+=usr/include/c++/v1/system_error
 OLD_FILES+=usr/include/c++/v1/tgmath.h
@@ -4587,6 +4596,7 @@ OLD_FILES+=usr/include/c++/v1/tr1/__func
 OLD_FILES+=usr/include/c++/v1/tr1/__functional_base
 OLD_FILES+=usr/include/c++/v1/tr1/__functional_base_03
 OLD_FILES+=usr/include/c++/v1/tr1/__hash_table
+OLD_FILES+=usr/include/c++/v1/tr1/__libcpp_version
 OLD_FILES+=usr/include/c++/v1/tr1/__locale
 OLD_FILES+=usr/include/c++/v1/tr1/__mutex_base
 OLD_FILES+=usr/include/c++/v1/tr1/__nullptr
@@ -4594,12 +4604,14 @@ OLD_FILES+=usr/include/c++/v1/tr1/__refs
 OLD_FILES+=usr/include/c++/v1/tr1/__split_buffer
 OLD_FILES+=usr/include/c++/v1/tr1/__sso_allocator
 OLD_FILES+=usr/include/c++/v1/tr1/__std_stream
+OLD_FILES+=usr/include/c++/v1/tr1/__string
 OLD_FILES+=usr/include/c++/v1/tr1/__threading_support
 OLD_FILES+=usr/include/c++/v1/tr1/__tree
 OLD_FILES+=usr/include/c++/v1/tr1/__tuple
 OLD_FILES+=usr/include/c++/v1/tr1/__undef___deallocate
 OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max
 OLD_FILES+=usr/include/c++/v1/tr1/algorithm
+OLD_FILES+=usr/include/c++/v1/tr1/any
 OLD_FILES+=usr/include/c++/v1/tr1/array
 OLD_FILES+=usr/include/c++/v1/tr1/atomic
 OLD_FILES+=usr/include/c++/v1/tr1/bitset
@@ -4650,14 +4662,18 @@ OLD_FILES+=usr/include/c++/v1/tr1/iostre
 OLD_FILES+=usr/include/c++/v1/tr1/istream
 OLD_FILES+=usr/include/c++/v1/tr1/iterator
 OLD_FILES+=usr/include/c++/v1/tr1/limits
+OLD_FILES+=usr/include/c++/v1/tr1/limits.h
 OLD_FILES+=usr/include/c++/v1/tr1/list
 OLD_FILES+=usr/include/c++/v1/tr1/locale
+OLD_FILES+=usr/include/c++/v1/tr1/locale.h
 OLD_FILES+=usr/include/c++/v1/tr1/map
 OLD_FILES+=usr/include/c++/v1/tr1/math.h
 OLD_FILES+=usr/include/c++/v1/tr1/memory
 OLD_FILES+=usr/include/c++/v1/tr1/mutex
 OLD_FILES+=usr/include/c++/v1/tr1/new
 OLD_FILES+=usr/include/c++/v1/tr1/numeric
+OLD_FILES+=usr/include/c++/v1/tr1/numeric
+OLD_FILES+=usr/include/c++/v1/tr1/optional
 OLD_FILES+=usr/include/c++/v1/tr1/ostream
 OLD_FILES+=usr/include/c++/v1/tr1/queue
 OLD_FILES+=usr/include/c++/v1/tr1/random
@@ -4672,11 +4688,13 @@ OLD_FILES+=usr/include/c++/v1/tr1/stack
 OLD_FILES+=usr/include/c++/v1/tr1/stdbool.h
 OLD_FILES+=usr/include/c++/v1/tr1/stddef.h
 OLD_FILES+=usr/include/c++/v1/tr1/stdexcept
+OLD_FILES+=usr/include/c++/v1/tr1/stdint.h
 OLD_FILES+=usr/include/c++/v1/tr1/stdio.h
 OLD_FILES+=usr/include/c++/v1/tr1/stdlib.h
 OLD_FILES+=usr/include/c++/v1/tr1/streambuf
 OLD_FILES+=usr/include/c++/v1/tr1/string
 OLD_FILES+=usr/include/c++/v1/tr1/string.h
+OLD_FILES+=usr/include/c++/v1/tr1/string_view
 OLD_FILES+=usr/include/c++/v1/tr1/strstream
 OLD_FILES+=usr/include/c++/v1/tr1/system_error
 OLD_FILES+=usr/include/c++/v1/tr1/tgmath.h
@@ -4689,6 +4707,7 @@ OLD_FILES+=usr/include/c++/v1/tr1/unorde
 OLD_FILES+=usr/include/c++/v1/tr1/unordered_set
 OLD_FILES+=usr/include/c++/v1/tr1/utility
 OLD_FILES+=usr/include/c++/v1/tr1/valarray
+OLD_FILES+=usr/include/c++/v1/tr1/variant
 OLD_FILES+=usr/include/c++/v1/tr1/vector
 OLD_FILES+=usr/include/c++/v1/tr1/wchar.h
 OLD_FILES+=usr/include/c++/v1/tr1/wctype.h
@@ -4703,6 +4722,7 @@ OLD_FILES+=usr/include/c++/v1/unwind-ita
 OLD_FILES+=usr/include/c++/v1/unwind.h
 OLD_FILES+=usr/include/c++/v1/utility
 OLD_FILES+=usr/include/c++/v1/valarray
+OLD_FILES+=usr/include/c++/v1/variant
 OLD_FILES+=usr/include/c++/v1/vector
 OLD_FILES+=usr/include/c++/v1/wchar.h
 OLD_FILES+=usr/include/c++/v1/wctype.h

From owner-svn-src-projects@freebsd.org  Mon Jan  9 19:42:23 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 A894DCA63CF
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 19:42:23 +0000 (UTC) (envelope-from dim@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 7A59F153B;
 Mon,  9 Jan 2017 19:42:23 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09JgMcv054144;
 Mon, 9 Jan 2017 19:42:22 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09JgMDJ054143;
 Mon, 9 Jan 2017 19:42:22 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701091942.v09JgMDJ054143@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 19:42:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311812 - projects/clang400-import/usr.sbin/mfiutil
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 19:42:23 -0000

Author: dim
Date: Mon Jan  9 19:42:22 2017
New Revision: 311812
URL: https://svnweb.freebsd.org/changeset/base/311812

Log:
  Merge ^/head r311808 through r311811.

Modified:
  projects/clang400-import/usr.sbin/mfiutil/mfi_evt.c
Directory Properties:
  projects/clang400-import/   (props changed)

Modified: projects/clang400-import/usr.sbin/mfiutil/mfi_evt.c
==============================================================================
--- projects/clang400-import/usr.sbin/mfiutil/mfi_evt.c	Mon Jan  9 19:39:35 2017	(r311811)
+++ projects/clang400-import/usr.sbin/mfiutil/mfi_evt.c	Mon Jan  9 19:42:22 2017	(r311812)
@@ -540,6 +540,7 @@ show_events(int ac, char **av)
 	char *cp;
 	ssize_t size;
 	uint32_t seq, start, stop;
+	uint16_t locale;
 	uint8_t status;
 	int ch, error, fd, num_events, verbose;
 	u_int i;
@@ -580,12 +581,13 @@ show_events(int ac, char **av)
 			}
 			break;
 		case 'l':
-			if (parse_locale(optarg, &filter.members.locale) < 0) {
+			if (parse_locale(optarg, &locale) < 0) {
 				error = errno;
 				warn("Error parsing event locale");
 				close(fd);
 				return (error);
 			}
+			filter.members.locale = locale;
 			break;
 		case 'n':
 			val = strtol(optarg, &cp, 0);

From owner-svn-src-projects@freebsd.org  Mon Jan  9 22:32:22 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 ADB9FCA7E27
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 22:32:22 +0000 (UTC) (envelope-from dim@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 580CF126D;
 Mon,  9 Jan 2017 22:32:22 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09MWLlX024336;
 Mon, 9 Jan 2017 22:32:21 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09MWKPO024321;
 Mon, 9 Jan 2017 22:32:20 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701092232.v09MWKPO024321@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 22:32:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311833 - in projects/clang400-import:
 contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen
 contrib/llvm/include/llvm/DebugInfo/MSF
 contrib/llvm/include/llvm/ExecutionEn...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 22:32:22 -0000

Author: dim
Date: Mon Jan  9 22:32:19 2017
New Revision: 311833
URL: https://svnweb.freebsd.org/changeset/base/311833

Log:
  Merge llvm, clang, lld and lldb trunk r291476.

Added:
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
     - copied unchanged from r311829, vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/IteratorPastEndChecker.cpp
     - copied unchanged from r311829, vendor/clang/dist/lib/StaticAnalyzer/Checkers/IteratorPastEndChecker.cpp
Modified:
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h
  projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
  projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h
  projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/PassManager.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/User.h
  projects/clang400-import/contrib/llvm/include/llvm/Support/Path.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/IPO.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
  projects/clang400-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
  projects/clang400-import/contrib/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/StackSlotColoring.cpp
  projects/clang400-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
  projects/clang400-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
  projects/clang400-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  projects/clang400-import/contrib/llvm/lib/Object/MachOObjectFile.cpp
  projects/clang400-import/contrib/llvm/lib/Object/ModuleSummaryIndexObjectFile.cpp
  projects/clang400-import/contrib/llvm/lib/Support/CommandLine.cpp
  projects/clang400-import/contrib/llvm/lib/Support/Path.cpp
  projects/clang400-import/contrib/llvm/lib/Support/TarWriter.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/R600Instructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.h
  projects/clang400-import/contrib/llvm/lib/Target/AVR/AVRISelDAGToDAG.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.h
  projects/clang400-import/contrib/llvm/lib/Target/BPF/BPFInstrInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp
  projects/clang400-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
  projects/clang400-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
  projects/clang400-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
  projects/clang400-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.cpp
  projects/clang400-import/contrib/llvm/lib/Target/TargetMachineC.cpp
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssembly.h
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrInteger.td
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/Expr.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/Attr.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Index/IndexSymbol.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Sema/Overload.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGCleanup.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexSymbol.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseInit.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaLambda.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Driver.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Driver.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/InputFiles.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Symbols.cpp
  projects/clang400-import/contrib/llvm/tools/lld/include/lld/Core/Reproduce.h
  projects/clang400-import/contrib/llvm/tools/lld/lib/Config/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/lib/Core/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/lib/Core/Reproduce.cpp
  projects/clang400-import/contrib/llvm/tools/lld/lib/Driver/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/lib/ReaderWriter/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/lib/ReaderWriter/MachO/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/lib/ReaderWriter/YAML/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/tools/lld/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-objdump/MachODump.cpp
  projects/clang400-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang400-import/lib/clang/include/lld/Config/Version.inc
  projects/clang400-import/lib/clang/libclang/Makefile
Directory Properties:
  projects/clang400-import/contrib/llvm/   (props changed)
  projects/clang400-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang400-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang400-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -1491,6 +1491,8 @@ public:
 
   void print(raw_ostream &OS) const;
   void verify() const;
+  bool invalidate(Function &F, const PreservedAnalyses &PA,
+                  FunctionAnalysisManager::Invalidator &Inv);
 
   /// Collect parametric terms occurring in step expressions (first step of
   /// delinearization).

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -290,7 +290,7 @@ public:
   }
 
   /// Returns extension attribute kind to be used for i32 parameters
-  /// correpsonding to C-level int or unsigned int.  May be zeroext, signext,
+  /// corresponding to C-level int or unsigned int.  May be zeroext, signext,
   /// or none.
   Attribute::AttrKind getExtAttrForI32Param(bool Signed = true) const {
     if (Impl->ShouldExtI32Param)
@@ -301,7 +301,7 @@ public:
   }
 
   /// Returns extension attribute kind to be used for i32 return values
-  /// correpsonding to C-level int or unsigned int.  May be zeroext, signext,
+  /// corresponding to C-level int or unsigned int.  May be zeroext, signext,
   /// or none.
   Attribute::AttrKind getExtAttrForI32Return(bool Signed = true) const {
     if (Impl->ShouldExtI32Return)

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -308,6 +308,16 @@ public:
   // Iteration support for live in sets.  These sets are kept in sorted
   // order by their register number.
   typedef LiveInVector::const_iterator livein_iterator;
+#ifndef NDEBUG
+  /// Unlike livein_begin, this method does not check that the liveness
+  /// information is accurate. Still for debug purposes it may be useful
+  /// to have iterators that won't assert if the liveness information
+  /// is not current.
+  livein_iterator livein_begin_dbg() const { return LiveIns.begin(); }
+  iterator_range<livein_iterator> liveins_dbg() const {
+    return make_range(livein_begin_dbg(), livein_end());
+  }
+#endif
   livein_iterator livein_begin() const;
   livein_iterator livein_end()   const { return LiveIns.end(); }
   bool            livein_empty() const { return LiveIns.empty(); }

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -148,8 +148,7 @@ class MachineFrameInfo {
   /// grouping overaligned allocas into a "secondary stack frame" and
   /// then only use a single alloca to allocate this frame and only a
   /// single virtual register to access it. Currently, without such an
-  /// optimization, each such alloca gets it's own dynamic
-  /// realignment.
+  /// optimization, each such alloca gets its own dynamic realignment.
   bool StackRealignable;
 
   /// Whether the function has the \c alignstack attribute.

Modified: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -11,6 +11,7 @@
 #define LLVM_DEBUGINFO_MSF_STREAMARRAY_H
 
 #include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/iterator.h"
 #include "llvm/DebugInfo/MSF/StreamRef.h"
 #include "llvm/Support/Error.h"
 #include <cassert>
@@ -107,7 +108,10 @@ private:
   Extractor E;
 };
 
-template <typename ValueType, typename Extractor> class VarStreamArrayIterator {
+template <typename ValueType, typename Extractor>
+class VarStreamArrayIterator
+    : public iterator_facade_base<VarStreamArrayIterator<ValueType, Extractor>,
+                                  std::forward_iterator_tag, ValueType> {
   typedef VarStreamArrayIterator<ValueType, Extractor> IterType;
   typedef VarStreamArray<ValueType, Extractor> ArrayType;
 
@@ -144,41 +148,39 @@ public:
     return false;
   }
 
-  bool operator!=(const IterType &R) { return !(*this == R); }
-
   const ValueType &operator*() const {
     assert(Array && !HasError);
     return ThisValue;
   }
 
-  IterType &operator++() {
-    // We are done with the current record, discard it so that we are
-    // positioned at the next record.
-    IterRef = IterRef.drop_front(ThisLen);
-    if (IterRef.getLength() == 0) {
-      // There is nothing after the current record, we must make this an end
-      // iterator.
-      moveToEnd();
-    } else {
-      // There is some data after the current record.
-      auto EC = Extract(IterRef, ThisLen, ThisValue);
-      if (EC) {
-        consumeError(std::move(EC));
-        markError();
-      } else if (ThisLen == 0) {
-        // An empty record? Make this an end iterator.
+  IterType &operator+=(std::ptrdiff_t N) {
+    while (N > 0) {
+      // We are done with the current record, discard it so that we are
+      // positioned at the next record.
+      IterRef = IterRef.drop_front(ThisLen);
+      if (IterRef.getLength() == 0) {
+        // There is nothing after the current record, we must make this an end
+        // iterator.
         moveToEnd();
+        return *this;
+      } else {
+        // There is some data after the current record.
+        auto EC = Extract(IterRef, ThisLen, ThisValue);
+        if (EC) {
+          consumeError(std::move(EC));
+          markError();
+          return *this;
+        } else if (ThisLen == 0) {
+          // An empty record? Make this an end iterator.
+          moveToEnd();
+          return *this;
+        }
       }
+      --N;
     }
     return *this;
   }
 
-  IterType operator++(int) {
-    IterType Original = *this;
-    ++*this;
-    return Original;
-  }
-
 private:
   void moveToEnd() {
     Array = nullptr;
@@ -211,6 +213,16 @@ public:
     assert(Stream.getLength() % sizeof(T) == 0);
   }
 
+  bool operator==(const FixedStreamArray<T> &Other) const {
+    return Stream == Other.Stream;
+  }
+
+  bool operator!=(const FixedStreamArray<T> &Other) const {
+    return !(*this == Other);
+  }
+
+  FixedStreamArray &operator=(const FixedStreamArray &) = default;
+
   const T &operator[](uint32_t Index) const {
     assert(Index < size());
     uint32_t Off = Index * sizeof(T);
@@ -226,6 +238,8 @@ public:
 
   uint32_t size() const { return Stream.getLength() / sizeof(T); }
 
+  bool empty() const { return size() == 0; }
+
   FixedStreamArrayIterator<T> begin() const {
     return FixedStreamArrayIterator<T>(*this, 0);
   }
@@ -240,36 +254,53 @@ private:
   ReadableStreamRef Stream;
 };
 
-template <typename T> class FixedStreamArrayIterator {
+template <typename T>
+class FixedStreamArrayIterator
+    : public iterator_facade_base<FixedStreamArrayIterator<T>,
+                                  std::random_access_iterator_tag, T> {
+
 public:
   FixedStreamArrayIterator(const FixedStreamArray<T> &Array, uint32_t Index)
       : Array(Array), Index(Index) {}
 
-  bool operator==(const FixedStreamArrayIterator<T> &R) {
-    assert(&Array == &R.Array);
-    return Index == R.Index;
+  FixedStreamArrayIterator<T> &
+  operator=(const FixedStreamArrayIterator<T> &Other) {
+    Array = Other.Array;
+    Index = Other.Index;
+    return *this;
   }
 
-  bool operator!=(const FixedStreamArrayIterator<T> &R) {
-    return !(*this == R);
+  const T &operator*() const { return Array[Index]; }
+
+  bool operator==(const FixedStreamArrayIterator<T> &R) const {
+    assert(Array == R.Array);
+    return (Index == R.Index) && (Array == R.Array);
   }
 
-  const T &operator*() const { return Array[Index]; }
+  FixedStreamArrayIterator<T> &operator+=(std::ptrdiff_t N) {
+    Index += N;
+    return *this;
+  }
 
-  FixedStreamArrayIterator<T> &operator++() {
-    assert(Index < Array.size());
-    ++Index;
+  FixedStreamArrayIterator<T> &operator-=(std::ptrdiff_t N) {
+    assert(Index >= N);
+    Index -= N;
     return *this;
   }
 
-  FixedStreamArrayIterator<T> operator++(int) {
-    FixedStreamArrayIterator<T> Original = *this;
-    ++*this;
-    return Original;
+  std::ptrdiff_t operator-(const FixedStreamArrayIterator<T> &R) const {
+    assert(Array == R.Array);
+    assert(Index >= R.Index);
+    return Index - R.Index;
+  }
+
+  bool operator<(const FixedStreamArrayIterator<T> &RHS) const {
+    assert(Array == RHS.Array);
+    return Index < RHS.Index;
   }
 
 private:
-  const FixedStreamArray<T> &Array;
+  FixedStreamArray<T> Array;
   uint32_t Index;
 };
 

Modified: projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -83,7 +83,7 @@ public:
 namespace remote {
 
 class OrcRemoteTargetRPCAPI
-    : public rpc::SingleThreadedRPC<rpc::RawByteChannel> {
+    : public rpc::SingleThreadedRPCEndpoint<rpc::RawByteChannel> {
 protected:
   class ResourceIdMgr {
   public:
@@ -108,7 +108,7 @@ protected:
 public:
   // FIXME: Remove constructors once MSVC supports synthesizing move-ops.
   OrcRemoteTargetRPCAPI(rpc::RawByteChannel &C)
-      : rpc::SingleThreadedRPC<rpc::RawByteChannel>(C, true) {}
+      : rpc::SingleThreadedRPCEndpoint<rpc::RawByteChannel>(C, true) {}
 
   class CallIntVoid
       : public rpc::Function<CallIntVoid, int32_t(JITTargetAddress Addr)> {

Modified: projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -702,7 +702,7 @@ public:
 /// sync.
 template <typename ImplT, typename ChannelT, typename FunctionIdT,
           typename SequenceNumberT>
-class RPCBase {
+class RPCEndpointBase {
 protected:
   class OrcRPCInvalid : public Function<OrcRPCInvalid, void()> {
   public:
@@ -747,7 +747,7 @@ protected:
 
 public:
   /// Construct an RPC instance on a channel.
-  RPCBase(ChannelT &C, bool LazyAutoNegotiation)
+  RPCEndpointBase(ChannelT &C, bool LazyAutoNegotiation)
       : C(C), LazyAutoNegotiation(LazyAutoNegotiation) {
     // Hold ResponseId in a special variable, since we expect Response to be
     // called relatively frequently, and want to avoid the map lookup.
@@ -788,15 +788,21 @@ public:
       return FnIdOrErr.takeError();
     }
 
-    // Allocate a sequence number.
-    auto SeqNo = SequenceNumberMgr.getSequenceNumber();
-    assert(!PendingResponses.count(SeqNo) &&
-           "Sequence number already allocated");
+    SequenceNumberT SeqNo; // initialized in locked scope below.
+    {
+      // Lock the pending responses map and sequence number manager.
+      std::lock_guard<std::mutex> Lock(ResponsesMutex);
+
+      // Allocate a sequence number.
+      SeqNo = SequenceNumberMgr.getSequenceNumber();
+      assert(!PendingResponses.count(SeqNo) &&
+             "Sequence number already allocated");
 
-    // Install the user handler.
-    PendingResponses[SeqNo] =
+      // Install the user handler.
+      PendingResponses[SeqNo] =
         detail::createResponseHandler<ChannelT, typename Func::ReturnType>(
             std::move(Handler));
+    }
 
     // Open the function call message.
     if (auto Err = C.startSendMessage(FnId, SeqNo)) {
@@ -863,11 +869,33 @@ public:
     return detail::ReadArgs<ArgTs...>(Args...);
   }
 
+  /// Abandon all outstanding result handlers.
+  ///
+  /// This will call all currently registered result handlers to receive an
+  /// "abandoned" error as their argument. This is used internally by the RPC
+  /// in error situations, but can also be called directly by clients who are
+  /// disconnecting from the remote and don't or can't expect responses to their
+  /// outstanding calls. (Especially for outstanding blocking calls, calling
+  /// this function may be necessary to avoid dead threads).
+  void abandonPendingResponses() {
+    // Lock the pending responses map and sequence number manager.
+    std::lock_guard<std::mutex> Lock(ResponsesMutex);
+
+    for (auto &KV : PendingResponses)
+      KV.second->abandon();
+    PendingResponses.clear();
+    SequenceNumberMgr.reset();
+  }
+
 protected:
   // The LaunchPolicy type allows a launch policy to be specified when adding
   // a function handler. See addHandlerImpl.
   using LaunchPolicy = std::function<Error(std::function<Error()>)>;
 
+  FunctionIdT getInvalidFunctionId() const {
+    return FnIdAllocator.getInvalidId();
+  }
+
   /// Add the given handler to the handler map and make it available for
   /// autonegotiation and execution.
   template <typename Func, typename HandlerT>
@@ -884,28 +912,32 @@ protected:
         wrapHandler<Func>(std::move(Handler), std::move(Launch));
   }
 
-  // Abandon all outstanding results.
-  void abandonPendingResponses() {
-    for (auto &KV : PendingResponses)
-      KV.second->abandon();
-    PendingResponses.clear();
-    SequenceNumberMgr.reset();
-  }
-
   Error handleResponse(SequenceNumberT SeqNo) {
-    auto I = PendingResponses.find(SeqNo);
-    if (I == PendingResponses.end()) {
-      abandonPendingResponses();
-      return orcError(OrcErrorCode::UnexpectedRPCResponse);
+    using Handler = typename decltype(PendingResponses)::mapped_type;
+    Handler PRHandler;
+
+    {
+      // Lock the pending responses map and sequence number manager.
+      std::unique_lock<std::mutex> Lock(ResponsesMutex);
+      auto I = PendingResponses.find(SeqNo);
+
+      if (I != PendingResponses.end()) {
+        PRHandler = std::move(I->second);
+        PendingResponses.erase(I);
+        SequenceNumberMgr.releaseSequenceNumber(SeqNo);
+      } else {
+        // Unlock the pending results map to prevent recursive lock.
+        Lock.unlock();
+        abandonPendingResponses();
+        return orcError(OrcErrorCode::UnexpectedRPCResponse);
+      }
     }
 
-    auto PRHandler = std::move(I->second);
-    PendingResponses.erase(I);
-    SequenceNumberMgr.releaseSequenceNumber(SeqNo);
+    assert(PRHandler &&
+           "If we didn't find a response handler we should have bailed out");
 
     if (auto Err = PRHandler->handleResponse(C)) {
       abandonPendingResponses();
-      SequenceNumberMgr.reset();
       return Err;
     }
 
@@ -915,7 +947,7 @@ protected:
   FunctionIdT handleNegotiate(const std::string &Name) {
     auto I = LocalFunctionIds.find(Name);
     if (I == LocalFunctionIds.end())
-      return FnIdAllocator.getInvalidId();
+      return getInvalidFunctionId();
     return I->second;
   }
 
@@ -938,7 +970,7 @@ protected:
 
         // If autonegotiation indicates that the remote end doesn't support this
         // function, return an unknown function error.
-        if (RemoteId == FnIdAllocator.getInvalidId())
+        if (RemoteId == getInvalidFunctionId())
           return orcError(OrcErrorCode::UnknownRPCFunction);
 
         // Autonegotiation succeeded and returned a valid id. Update the map and
@@ -1012,6 +1044,7 @@ protected:
 
   std::map<FunctionIdT, WrappedHandlerFn> Handlers;
 
+  std::mutex ResponsesMutex;
   detail::SequenceNumberManager<SequenceNumberT> SequenceNumberMgr;
   std::map<SequenceNumberT, std::unique_ptr<detail::ResponseHandler<ChannelT>>>
       PendingResponses;
@@ -1021,17 +1054,18 @@ protected:
 
 template <typename ChannelT, typename FunctionIdT = uint32_t,
           typename SequenceNumberT = uint32_t>
-class MultiThreadedRPC
-    : public detail::RPCBase<
-          MultiThreadedRPC<ChannelT, FunctionIdT, SequenceNumberT>, ChannelT,
-          FunctionIdT, SequenceNumberT> {
+class MultiThreadedRPCEndpoint
+    : public detail::RPCEndpointBase<
+          MultiThreadedRPCEndpoint<ChannelT, FunctionIdT, SequenceNumberT>,
+          ChannelT, FunctionIdT, SequenceNumberT> {
 private:
   using BaseClass =
-      detail::RPCBase<MultiThreadedRPC<ChannelT, FunctionIdT, SequenceNumberT>,
-                      ChannelT, FunctionIdT, SequenceNumberT>;
+      detail::RPCEndpointBase<
+        MultiThreadedRPCEndpoint<ChannelT, FunctionIdT, SequenceNumberT>,
+        ChannelT, FunctionIdT, SequenceNumberT>;
 
 public:
-  MultiThreadedRPC(ChannelT &C, bool LazyAutoNegotiation)
+  MultiThreadedRPCEndpoint(ChannelT &C, bool LazyAutoNegotiation)
       : BaseClass(C, LazyAutoNegotiation) {}
 
   /// The LaunchPolicy type allows a launch policy to be specified when adding
@@ -1061,30 +1095,41 @@ public:
                                                std::move(Launch));
   }
 
+  /// Add a class-method as a handler.
+  template <typename Func, typename ClassT, typename RetT, typename... ArgTs>
+  void addHandler(ClassT &Object, RetT (ClassT::*Method)(ArgTs...),
+                  LaunchPolicy Launch = LaunchPolicy()) {
+    addHandler<Func>(
+      detail::MemberFnWrapper<ClassT, RetT, ArgTs...>(Object, Method),
+      Launch);
+  }
+
   /// Negotiate a function id for Func with the other end of the channel.
-  template <typename Func> Error negotiateFunction() {
+  template <typename Func> Error negotiateFunction(bool Retry = false) {
     using OrcRPCNegotiate = typename BaseClass::OrcRPCNegotiate;
 
+    // Check if we already have a function id...
+    auto I = this->RemoteFunctionIds.find(Func::getPrototype());
+    if (I != this->RemoteFunctionIds.end()) {
+      // If it's valid there's nothing left to do.
+      if (I->second != this->getInvalidFunctionId())
+        return Error::success();
+      // If it's invalid and we can't re-attempt negotiation, throw an error.
+      if (!Retry)
+        return orcError(OrcErrorCode::UnknownRPCFunction);
+    }
+
+    // We don't have a function id for Func yet, call the remote to try to
+    // negotiate one.
     if (auto RemoteIdOrErr = callB<OrcRPCNegotiate>(Func::getPrototype())) {
       this->RemoteFunctionIds[Func::getPrototype()] = *RemoteIdOrErr;
+      if (*RemoteIdOrErr == this->getInvalidFunctionId())
+        return orcError(OrcErrorCode::UnknownRPCFunction);
       return Error::success();
     } else
       return RemoteIdOrErr.takeError();
   }
 
-  /// Convenience method for negotiating multiple functions at once.
-  template <typename Func> Error negotiateFunctions() {
-    return negotiateFunction<Func>();
-  }
-
-  /// Convenience method for negotiating multiple functions at once.
-  template <typename Func1, typename Func2, typename... Funcs>
-  Error negotiateFunctions() {
-    if (auto Err = negotiateFunction<Func1>())
-      return Err;
-    return negotiateFunctions<Func2, Funcs...>();
-  }
-
   /// Return type for non-blocking call primitives.
   template <typename Func>
   using NonBlockingCallResult = typename detail::ResultTraits<
@@ -1169,19 +1214,20 @@ public:
 
 template <typename ChannelT, typename FunctionIdT = uint32_t,
           typename SequenceNumberT = uint32_t>
-class SingleThreadedRPC
-    : public detail::RPCBase<
-          SingleThreadedRPC<ChannelT, FunctionIdT, SequenceNumberT>, ChannelT,
-          FunctionIdT, SequenceNumberT> {
+class SingleThreadedRPCEndpoint
+    : public detail::RPCEndpointBase<
+          SingleThreadedRPCEndpoint<ChannelT, FunctionIdT, SequenceNumberT>,
+          ChannelT, FunctionIdT, SequenceNumberT> {
 private:
   using BaseClass =
-      detail::RPCBase<SingleThreadedRPC<ChannelT, FunctionIdT, SequenceNumberT>,
-                      ChannelT, FunctionIdT, SequenceNumberT>;
+      detail::RPCEndpointBase<
+        SingleThreadedRPCEndpoint<ChannelT, FunctionIdT, SequenceNumberT>,
+        ChannelT, FunctionIdT, SequenceNumberT>;
 
   using LaunchPolicy = typename BaseClass::LaunchPolicy;
 
 public:
-  SingleThreadedRPC(ChannelT &C, bool LazyAutoNegotiation)
+  SingleThreadedRPCEndpoint(ChannelT &C, bool LazyAutoNegotiation)
       : BaseClass(C, LazyAutoNegotiation) {}
 
   template <typename Func, typename HandlerT>
@@ -1197,29 +1243,31 @@ public:
   }
 
   /// Negotiate a function id for Func with the other end of the channel.
-  template <typename Func> Error negotiateFunction() {
+  template <typename Func> Error negotiateFunction(bool Retry = false) {
     using OrcRPCNegotiate = typename BaseClass::OrcRPCNegotiate;
 
+    // Check if we already have a function id...
+    auto I = this->RemoteFunctionIds.find(Func::getPrototype());
+    if (I != this->RemoteFunctionIds.end()) {
+      // If it's valid there's nothing left to do.
+      if (I->second != this->getInvalidFunctionId())
+        return Error::success();
+      // If it's invalid and we can't re-attempt negotiation, throw an error.
+      if (!Retry)
+        return orcError(OrcErrorCode::UnknownRPCFunction);
+    }
+
+    // We don't have a function id for Func yet, call the remote to try to
+    // negotiate one.
     if (auto RemoteIdOrErr = callB<OrcRPCNegotiate>(Func::getPrototype())) {
       this->RemoteFunctionIds[Func::getPrototype()] = *RemoteIdOrErr;
+      if (*RemoteIdOrErr == this->getInvalidFunctionId())
+        return orcError(OrcErrorCode::UnknownRPCFunction);
       return Error::success();
     } else
       return RemoteIdOrErr.takeError();
   }
 
-  /// Convenience method for negotiating multiple functions at once.
-  template <typename Func> Error negotiateFunctions() {
-    return negotiateFunction<Func>();
-  }
-
-  /// Convenience method for negotiating multiple functions at once.
-  template <typename Func1, typename Func2, typename... Funcs>
-  Error negotiateFunctions() {
-    if (auto Err = negotiateFunction<Func1>())
-      return Err;
-    return negotiateFunctions<Func2, Funcs...>();
-  }
-
   template <typename Func, typename... ArgTs,
             typename AltRetT = typename Func::ReturnType>
   typename detail::ResultTraits<AltRetT>::ErrorReturnType
@@ -1332,6 +1380,68 @@ private:
   uint32_t NumOutstandingCalls;
 };
 
+/// @brief Convenience class for grouping RPC Functions into APIs that can be
+///        negotiated as a block.
+///
+template <typename... Funcs>
+class APICalls {
+public:
+
+  /// @brief Test whether this API contains Function F.
+  template <typename F>
+  class Contains {
+  public:
+    static const bool value = false;
+  };
+
+  /// @brief Negotiate all functions in this API.
+  template <typename RPCEndpoint>
+  static Error negotiate(RPCEndpoint &R) {
+    return Error::success();
+  }
+};
+
+template <typename Func, typename... Funcs>
+class APICalls<Func, Funcs...> {
+public:
+
+  template <typename F>
+  class Contains {
+  public:
+    static const bool value = std::is_same<F, Func>::value |
+                              APICalls<Funcs...>::template Contains<F>::value;
+  };
+
+  template <typename RPCEndpoint>
+  static Error negotiate(RPCEndpoint &R) {
+    if (auto Err = R.template negotiateFunction<Func>())
+      return Err;
+    return APICalls<Funcs...>::negotiate(R);
+  }
+
+};
+
+template <typename... InnerFuncs, typename... Funcs>
+class APICalls<APICalls<InnerFuncs...>, Funcs...> {
+public:
+
+  template <typename F>
+  class Contains {
+  public:
+    static const bool value =
+      APICalls<InnerFuncs...>::template Contains<F>::value |
+      APICalls<Funcs...>::template Contains<F>::value;
+  };
+
+  template <typename RPCEndpoint>
+  static Error negotiate(RPCEndpoint &R) {
+    if (auto Err = APICalls<InnerFuncs...>::negotiate(R))
+      return Err;
+    return APICalls<Funcs...>::negotiate(R);
+  }
+
+};
+
 } // end namespace rpc
 } // end namespace orc
 } // end namespace llvm

Modified: projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -48,9 +48,7 @@ public:
   template <typename FunctionIdT, typename SequenceIdT>
   Error startSendMessage(const FunctionIdT &FnId, const SequenceIdT &SeqNo) {
     writeLock.lock();
-    if (auto Err = serializeSeq(*this, FnId, SeqNo))
-      return Err;
-    return Error::success();
+    return serializeSeq(*this, FnId, SeqNo);
   }
 
   /// Notify the channel that we're ending a message send.

Modified: projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -28,14 +28,14 @@ template <> struct ScalarEnumerationTrai
 
 template <> struct MappingTraits<TypeTestResolution> {
   static void mapping(IO &io, TypeTestResolution &res) {
-    io.mapRequired("Kind", res.TheKind);
-    io.mapRequired("SizeBitWidth", res.SizeBitWidth);
+    io.mapOptional("Kind", res.TheKind);
+    io.mapOptional("SizeBitWidth", res.SizeBitWidth);
   }
 };
 
 template <> struct MappingTraits<TypeIdSummary> {
   static void mapping(IO &io, TypeIdSummary& summary) {
-    io.mapRequired("TTRes", summary.TTRes);
+    io.mapOptional("TTRes", summary.TTRes);
   }
 };
 
@@ -53,7 +53,7 @@ namespace yaml {
 
 template <> struct MappingTraits<FunctionSummaryYaml> {
   static void mapping(IO &io, FunctionSummaryYaml& summary) {
-    io.mapRequired("TypeTests", summary.TypeTests);
+    io.mapOptional("TypeTests", summary.TypeTests);
   }
 };
 
@@ -100,8 +100,8 @@ template <> struct CustomMappingTraits<G
 
 template <> struct MappingTraits<ModuleSummaryIndex> {
   static void mapping(IO &io, ModuleSummaryIndex& index) {
-    io.mapRequired("GlobalValueMap", index.GlobalValueMap);
-    io.mapRequired("TypeIdMap", index.TypeIdMap);
+    io.mapOptional("GlobalValueMap", index.GlobalValueMap);
+    io.mapOptional("TypeIdMap", index.TypeIdMap);
   }
 };
 

Modified: projects/clang400-import/contrib/llvm/include/llvm/IR/PassManager.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/IR/PassManager.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/IR/PassManager.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -879,18 +879,22 @@ extern template class AnalysisManager<Fu
 /// \brief Convenience typedef for the Function analysis manager.
 typedef AnalysisManager<Function> FunctionAnalysisManager;
 
-/// \brief A module analysis which acts as a proxy for a function analysis
-/// manager.
+/// \brief An analysis over an "outer" IR unit that provides access to an
+/// analysis manager over an "inner" IR unit.  The inner unit must be contained
+/// in the outer unit.
+///
+/// Fore example, InnerAnalysisManagerProxy<FunctionAnalysisManager, Module> is
+/// an analysis over Modules (the "outer" unit) that provides access to a
+/// Function analysis manager.  The FunctionAnalysisManager is the "inner"
+/// manager being proxied, and Functions are the "inner" unit.  The inner/outer
+/// relationship is valid because each Function is contained in one Module.
+///
+/// If you're (transitively) within a pass manager for an IR unit U that
+/// contains IR unit V, you should never use an analysis manager over V, except
+/// via one of these proxies.
 ///
-/// This primarily proxies invalidation information from the module analysis
-/// manager and module pass manager to a function analysis manager. You should
-/// never use a function analysis manager from within (transitively) a module
-/// pass manager unless your parent module pass has received a proxy result
-/// object for it.
-///
-/// Note that the proxy's result is a move-only object and represents ownership
-/// of the validity of the analyses in the \c FunctionAnalysisManager it
-/// provides.
+/// Note that the proxy's result is a move-only RAII object.  The validity of
+/// the analyses in the inner analysis manager is tied to its lifetime.
 template <typename AnalysisManagerT, typename IRUnitT, typename... ExtraArgTs>
 class InnerAnalysisManagerProxy
     : public AnalysisInfoMixin<
@@ -926,23 +930,16 @@ public:
     /// \brief Accessor for the analysis manager.
     AnalysisManagerT &getManager() { return *InnerAM; }
 
-    /// \brief Handler for invalidation of the outer IR unit.
+    /// \brief Handler for invalidation of the outer IR unit, \c IRUnitT.
     ///
-    /// If this analysis itself is preserved, then we assume that the set of \c
-    /// IR units that the inner analysis manager controls hasn't changed and
-    /// thus we don't need to invalidate *all* cached data associated with any
-    /// \c IRUnitT* in the \c AnalysisManagerT.
+    /// If the proxy analysis itself is not preserved, we assume that the set of
+    /// inner IR objects contained in IRUnit may have changed.  In this case,
+    /// we have to call \c clear() on the inner analysis manager, as it may now
+    /// have stale pointers to its inner IR objects.
     ///
-    /// Regardless of whether this analysis is marked as preserved, all of the
-    /// analyses in the \c AnalysisManagerT are potentially invalidated (for
-    /// the relevant inner set of their IR units) based on the set of preserved
-    /// analyses.
-    ///
-    /// Because this needs to understand the mapping from one IR unit to an
-    /// inner IR unit, this method isn't defined in the primary template.
-    /// Instead, each specialization of this template will need to provide an
-    /// explicit specialization of this method to handle that particular pair
-    /// of IR unit and inner AnalysisManagerT.
+    /// Regardless of whether the proxy analysis is marked as preserved, all of
+    /// the analyses in the inner analysis manager are potentially invalidated
+    /// based on the set of preserved analyses.
     bool invalidate(
         IRUnitT &IR, const PreservedAnalyses &PA,
         typename AnalysisManager<IRUnitT, ExtraArgTs...>::Invalidator &Inv);
@@ -956,13 +953,9 @@ public:
 
   /// \brief Run the analysis pass and create our proxy result object.
   ///
-  /// This doesn't do any interesting work, it is primarily used to insert our
-  /// proxy result object into the module analysis cache so that we can proxy
-  /// invalidation to the function analysis manager.
-  ///
-  /// In debug builds, it will also assert that the analysis manager is empty
-  /// as no queries should arrive at the function analysis manager prior to
-  /// this analysis being requested.
+  /// This doesn't do any interesting work; it is primarily used to insert our
+  /// proxy result object into the outer analysis cache so that we can proxy
+  /// invalidation to the inner analysis manager.
   Result run(IRUnitT &IR, AnalysisManager<IRUnitT, ExtraArgTs...> &AM,
              ExtraArgTs...) {
     return Result(*InnerAM);
@@ -996,22 +989,24 @@ bool FunctionAnalysisManagerModuleProxy:
 extern template class InnerAnalysisManagerProxy<FunctionAnalysisManager,
                                                 Module>;
 
-/// \brief A function analysis which acts as a proxy for a module analysis
-/// manager.
-///
-/// This primarily provides an accessor to a parent module analysis manager to
-/// function passes. Only the const interface of the module analysis manager is
-/// provided to indicate that once inside of a function analysis pass you
-/// cannot request a module analysis to actually run. Instead, the user must
-/// rely on the \c getCachedResult API.
-///
-/// The invalidation provided by this proxy involves tracking when an
-/// invalidation event in the outer analysis manager needs to trigger an
-/// invalidation of a particular analysis on this IR unit.
-///
-/// Because outer analyses aren't invalidated while these IR units are being
-/// precessed, we have to register and handle these as deferred invalidation
-/// events.
+/// \brief An analysis over an "inner" IR unit that provides access to an
+/// analysis manager over a "outer" IR unit.  The inner unit must be contained
+/// in the outer unit.
+///
+/// For example OuterAnalysisManagerProxy<ModuleAnalysisManager, Function> is an
+/// analysis over Functions (the "inner" unit) which provides access to a Module
+/// analysis manager.  The ModuleAnalysisManager is the "outer" manager being
+/// proxied, and Modules are the "outer" IR unit.  The inner/outer relationship
+/// is valid because each Function is contained in one Module.
+///
+/// This proxy only exposes the const interface of the outer analysis manager,
+/// to indicate that you cannot cause an outer analysis to run from within an
+/// inner pass.  Instead, you must rely on the \c getCachedResult API.
+///
+/// This proxy doesn't manage invalidation in any way -- that is handled by the
+/// recursive return path of each layer of the pass manager.  A consequence of
+/// this is the outer analyses may be stale.  We invalidate the outer analyses
+/// only when we're done running passes over the inner IR units.
 template <typename AnalysisManagerT, typename IRUnitT, typename... ExtraArgTs>
 class OuterAnalysisManagerProxy
     : public AnalysisInfoMixin<
@@ -1024,7 +1019,7 @@ public:
 
     const AnalysisManagerT &getManager() const { return *AM; }
 
-    /// \brief Handle invalidation by ignoring it, this pass is immutable.
+    /// \brief Handle invalidation by ignoring it; this pass is immutable.
     bool invalidate(
         IRUnitT &, const PreservedAnalyses &,
         typename AnalysisManager<IRUnitT, ExtraArgTs...>::Invalidator &) {
@@ -1089,18 +1084,15 @@ AnalysisKey
 
 extern template class OuterAnalysisManagerProxy<ModuleAnalysisManager,
                                                 Function>;
-/// Provide the \c ModuleAnalysisManager to \c Fucntion proxy.
+/// Provide the \c ModuleAnalysisManager to \c Function proxy.
 typedef OuterAnalysisManagerProxy<ModuleAnalysisManager, Function>
     ModuleAnalysisManagerFunctionProxy;
 
 /// \brief Trivial adaptor that maps from a module to its functions.
 ///
 /// Designed to allow composition of a FunctionPass(Manager) and
-/// a ModulePassManager. Note that if this pass is constructed with a pointer
-/// to a \c ModuleAnalysisManager it will run the
-/// \c FunctionAnalysisManagerModuleProxy analysis prior to running the function
-/// pass over the module to enable a \c FunctionAnalysisManager to be used
-/// within this run safely.
+/// a ModulePassManager, by running the FunctionPass(Manager) over every
+/// function in the module.
 ///
 /// Function passes run within this adaptor can rely on having exclusive access
 /// to the function they are run over. They should not read or modify any other
@@ -1115,6 +1107,10 @@ typedef OuterAnalysisManagerProxy<Module
 /// module.
 /// FIXME: Make the above true for all of LLVM's actual passes, some still
 /// violate this principle.
+///
+/// Note that although function passes can access module analyses, module
+/// analyses are not invalidated while the function passes are running, so they
+/// may be stale.  Function analyses will not be stale.
 template <typename FunctionPassT>
 class ModuleToFunctionPassAdaptor
     : public PassInfoMixin<ModuleToFunctionPassAdaptor<FunctionPassT>> {
@@ -1124,7 +1120,6 @@ public:
 
   /// \brief Runs the function pass across every function in the module.
   PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) {
-    // Setup the function analysis manager from its proxy.
     FunctionAnalysisManager &FAM =
         AM.getResult<FunctionAnalysisManagerModuleProxy>(M).getManager();
 
@@ -1145,10 +1140,11 @@ public:
       PA.intersect(std::move(PassPA));
     }
 
-    // By definition we preserve the proxy. We also preserve all analyses on
-    // Function units. This precludes *any* invalidation of function analyses
-    // by the proxy, but that's OK because we've taken care to invalidate
-    // analyses in the function analysis manager incrementally above.
+    // The FunctionAnalysisManagerModuleProxy is preserved because (we assume)
+    // the function passes we ran didn't add or remove any functions.
+    //
+    // We also preserve all analyses on Functions, because we did all the
+    // invalidation we needed to do above.
     PA.preserveSet<AllAnalysesOn<Function>>();
     PA.preserve<FunctionAnalysisManagerModuleProxy>();
     return PA;
@@ -1166,7 +1162,7 @@ createModuleToFunctionPassAdaptor(Functi
   return ModuleToFunctionPassAdaptor<FunctionPassT>(std::move(Pass));
 }
 
-/// \brief A template utility pass to force an analysis result to be available.
+/// \brief A utility pass template to force an analysis result to be available.
 ///
 /// If there are extra arguments at the pass's run level there may also be
 /// extra arguments to the analysis manager's \c getResult routine. We can't
@@ -1196,17 +1192,14 @@ struct RequireAnalysisPass
   }
 };
 
-/// \brief A template utility pass to force an analysis result to be
-/// invalidated.
-///
-/// This is a no-op pass which simply forces a specific analysis result to be
-/// invalidated when it is run.
+/// \brief A no-op pass template which simply forces a specific analysis result
+/// to be invalidated.
 template <typename AnalysisT>
 struct InvalidateAnalysisPass
     : PassInfoMixin<InvalidateAnalysisPass<AnalysisT>> {
   /// \brief Run this pass over some unit of IR.
   ///
-  /// This pass can be run over any unit of IR and use any analysis manager
+  /// This pass can be run over any unit of IR and use any analysis manager,
   /// provided they satisfy the basic API requirements. When this pass is
   /// created, these methods can be instantiated to satisfy whatever the
   /// context requires.
@@ -1218,10 +1211,10 @@ struct InvalidateAnalysisPass
   }
 };
 
-/// \brief A utility pass that does nothing but preserves no analyses.
+/// \brief A utility pass that does nothing, but preserves no analyses.
 ///
-/// As a consequence fo not preserving any analyses, this pass will force all
-/// analysis passes to be re-run to produce fresh results if any are needed.
+/// Because this preserves no analyses, any analysis passes queried after this
+/// pass runs will recompute fresh results.
 struct InvalidateAllAnalysesPass : PassInfoMixin<InvalidateAllAnalysesPass> {
   /// \brief Run this pass over some unit of IR.
   template <typename IRUnitT, typename AnalysisManagerT, typename... ExtraArgTs>

Modified: projects/clang400-import/contrib/llvm/include/llvm/IR/User.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/IR/User.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/IR/User.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -238,6 +238,26 @@ public:
     return make_range(value_op_begin(), value_op_end());
   }
 
+  struct const_value_op_iterator
+      : iterator_adaptor_base<const_value_op_iterator, const_op_iterator,
+                              std::random_access_iterator_tag, const Value *,
+                              ptrdiff_t, const Value *, const Value *> {
+    explicit const_value_op_iterator(const Use *U = nullptr) :
+      iterator_adaptor_base(U) {}
+    const Value *operator*() const { return *I; }
+    const Value *operator->() const { return operator*(); }
+  };
+
+  const_value_op_iterator value_op_begin() const {
+    return const_value_op_iterator(op_begin());
+  }
+  const_value_op_iterator value_op_end() const {
+    return const_value_op_iterator(op_end());
+  }
+  iterator_range<const_value_op_iterator> operand_values() const {
+    return make_range(value_op_begin(), value_op_end());
+  }
+
   /// \brief Drop all references to operands.
   ///
   /// This function is in charge of "letting go" of all objects that this User

Modified: projects/clang400-import/contrib/llvm/include/llvm/Support/Path.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Support/Path.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/Support/Path.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -207,6 +207,14 @@ void native(const Twine &path, SmallVect
 /// @param path A path that is transformed to native format.
 void native(SmallVectorImpl<char> &path);
 
+/// @brief Replaces backslashes with slashes if Windows.
+///
+/// @param path processed path
+/// @result The result of replacing backslashes with forward slashes if Windows.
+/// On Unix, this function is a no-op because backslashes are valid path
+/// chracters.
+std::string convert_to_slash(StringRef path);
+
 /// @}
 /// @name Lexical Observers
 /// @{

Modified: projects/clang400-import/contrib/llvm/include/llvm/Transforms/IPO.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Transforms/IPO.h	Mon Jan  9 22:20:09 2017	(r311832)
+++ projects/clang400-import/contrib/llvm/include/llvm/Transforms/IPO.h	Mon Jan  9 22:32:19 2017	(r311833)
@@ -215,9 +215,20 @@ ModulePass *createMetaRenamerPass();
 /// manager.
 ModulePass *createBarrierNoopPass();
 
+/// What to do with the summary when running the LowerTypeTests pass.
+enum class LowerTypeTestsSummaryAction {
+  None,   ///< Do nothing.
+  Import, ///< Import typeid resolutions from summary and globals.
+  Export, ///< Export typeid resolutions to summary and globals.
+};
+
 /// \brief This pass lowers type metadata and the llvm.type.test intrinsic to
 /// bitsets.
-ModulePass *createLowerTypeTestsPass();
+/// \param Action What to do with the summary passed as Index.
+/// \param Index The summary to use for importing or exporting, this can be null
+///              when Action is None.
+ModulePass *createLowerTypeTestsPass(LowerTypeTestsSummaryAction Action,

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

From owner-svn-src-projects@freebsd.org  Mon Jan  9 22:41:56 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 570ADCA810D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 22:41:56 +0000 (UTC) (envelope-from dim@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 2000517A8;
 Mon,  9 Jan 2017 22:41:56 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09MftIp028434;
 Mon, 9 Jan 2017 22:41:55 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09MfrZh028418;
 Mon, 9 Jan 2017 22:41:53 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701092241.v09MfrZh028418@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 22:41:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311834 - in projects/clang400-import: . contrib/libc++
 contrib/libc++/include contrib/libc++/include/experimental contrib/libc++/src
 contrib/libc++/src/experimental contrib/libc++/src/...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 22:41:56 -0000

Author: dim
Date: Mon Jan  9 22:41:53 2017
New Revision: 311834
URL: https://svnweb.freebsd.org/changeset/base/311834

Log:
  Merge libc++ trunk r291476, update Makefile, ObsoleteFiles.inc and
  OptionalObsoleteFiles.inc.

Deleted:
  projects/clang400-import/contrib/libc++/include/__undef___deallocate
Modified:
  projects/clang400-import/ObsoleteFiles.inc
  projects/clang400-import/contrib/libc++/CREDITS.TXT
  projects/clang400-import/contrib/libc++/include/__bit_reference
  projects/clang400-import/contrib/libc++/include/__config
  projects/clang400-import/contrib/libc++/include/__debug
  projects/clang400-import/contrib/libc++/include/__functional_base
  projects/clang400-import/contrib/libc++/include/__hash_table
  projects/clang400-import/contrib/libc++/include/__sso_allocator
  projects/clang400-import/contrib/libc++/include/__threading_support
  projects/clang400-import/contrib/libc++/include/algorithm
  projects/clang400-import/contrib/libc++/include/atomic
  projects/clang400-import/contrib/libc++/include/experimental/algorithm
  projects/clang400-import/contrib/libc++/include/experimental/dynarray
  projects/clang400-import/contrib/libc++/include/experimental/iterator
  projects/clang400-import/contrib/libc++/include/istream
  projects/clang400-import/contrib/libc++/include/memory
  projects/clang400-import/contrib/libc++/include/module.modulemap
  projects/clang400-import/contrib/libc++/include/new
  projects/clang400-import/contrib/libc++/include/ostream
  projects/clang400-import/contrib/libc++/include/regex
  projects/clang400-import/contrib/libc++/include/string_view
  projects/clang400-import/contrib/libc++/include/thread
  projects/clang400-import/contrib/libc++/include/type_traits
  projects/clang400-import/contrib/libc++/include/valarray
  projects/clang400-import/contrib/libc++/src/chrono.cpp
  projects/clang400-import/contrib/libc++/src/exception.cpp
  projects/clang400-import/contrib/libc++/src/experimental/memory_resource.cpp
  projects/clang400-import/contrib/libc++/src/include/config_elast.h
  projects/clang400-import/contrib/libc++/src/iostream.cpp
  projects/clang400-import/contrib/libc++/src/locale.cpp
  projects/clang400-import/contrib/libc++/src/thread.cpp
  projects/clang400-import/lib/libc++/Makefile
  projects/clang400-import/tools/build/mk/OptionalObsoleteFiles.inc
Directory Properties:
  projects/clang400-import/contrib/libc++/   (props changed)

Modified: projects/clang400-import/ObsoleteFiles.inc
==============================================================================
--- projects/clang400-import/ObsoleteFiles.inc	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/ObsoleteFiles.inc	Mon Jan  9 22:41:53 2017	(r311834)
@@ -38,6 +38,9 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 2017mmdd: new libc++ import which bumps version from 3.9.1 to 4.0.0.
+OLD_FILES+=usr/include/c++/v1/__undef___deallocate
+OLD_FILES+=usr/include/c++/v1/tr1/__undef___deallocate
 # 2017mmdd: new clang import which bumps version from 3.9.1 to 4.0.0.
 OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/allocator_interface.h
 OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/asan_interface.h

Modified: projects/clang400-import/contrib/libc++/CREDITS.TXT
==============================================================================
--- projects/clang400-import/contrib/libc++/CREDITS.TXT	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/CREDITS.TXT	Mon Jan  9 22:41:53 2017	(r311834)
@@ -80,6 +80,10 @@ N: Andrew Morrow
 E: andrew.c.morrow@gmail.com
 D: Minor patches and Linux fixes.
 
+N: Michael Park
+E: mpark@apache.org
+D: Implementation of <variant>.
+
 N: Arvid Picciani
 E: aep at exys dot org
 D: Minor patches and musl port.

Modified: projects/clang400-import/contrib/libc++/include/__bit_reference
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__bit_reference	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__bit_reference	Mon Jan  9 22:41:53 2017	(r311834)
@@ -40,11 +40,8 @@ class __bit_reference
     __storage_pointer __seg_;
     __storage_type    __mask_;
 
-#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
     friend typename _Cp::__self;
-#else
-    friend class _Cp::__self;
-#endif
+
     friend class __bit_const_reference<_Cp>;
     friend class __bit_iterator<_Cp, false>;
 public:
@@ -130,11 +127,7 @@ class __bit_const_reference
     __storage_pointer        __seg_;
     __storage_type __mask_;
 
-#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
     friend typename _Cp::__self;
-#else
-    friend class _Cp::__self;
-#endif
     friend class __bit_iterator<_Cp, true>;
 public:
     _LIBCPP_INLINE_VISIBILITY
@@ -1221,11 +1214,8 @@ private:
     __bit_iterator(__storage_pointer __s, unsigned __ctz) _NOEXCEPT
         : __seg_(__s), __ctz_(__ctz) {}
 
-#if defined(__clang__) || defined(__IBMCPP__) || defined(_LIBCPP_MSVC)
     friend typename _Cp::__self;
-#else
-    friend class _Cp::__self;
-#endif
+
     friend class __bit_reference<_Cp>;
     friend class __bit_const_reference<_Cp>;
     friend class __bit_iterator<_Cp, true>;

Modified: projects/clang400-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__config	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__config	Mon Jan  9 22:41:53 2017	(r311834)
@@ -101,6 +101,25 @@
 #define __is_identifier(__x) 1
 #endif
 
+#if defined(__clang__)
+#define _LIBCPP_COMPILER_CLANG
+#elif defined(__GNUC__)
+#define _LIBCPP_COMPILER_GCC
+#elif defined(_MSC_VER)
+#define _LIBCPP_COMPILER_MSVC
+#elif defined(__IBMCPP__)
+#define _LIBCPP_COMPILER_IBM
+#endif
+
+// FIXME: ABI detection should be done via compiler builtin macros. This
+// is just a placeholder until Clang implements such macros. For now assume
+// that Windows compilers pretending to be MSVC++ target the microsoft ABI.
+#if defined(_WIN32) && defined(_MSC_VER)
+# define _LIBCPP_ABI_MICROSOFT
+#else
+# define _LIBCPP_ABI_ITANIUM
+#endif
+
 // Need to detect which libc we're using if we're on Linux.
 #if defined(__linux__)
 #include <features.h>
@@ -164,16 +183,7 @@
 #  define _LIBCPP_LITTLE_ENDIAN 1
 #  define _LIBCPP_BIG_ENDIAN    0
 #  define _LIBCPP_SHORT_WCHAR   1
-// Compiler intrinsics (MSVC)
-#  if defined(_MSC_VER) && _MSC_VER >= 1400
-#    define _LIBCPP_HAS_IS_BASE_OF
-#  endif
-#  if defined(_MSC_VER) && !defined(__clang__)
-#    define _LIBCPP_MSVC // Using Microsoft Visual C++ compiler
-#    define _LIBCPP_TOSTRING2(x) #x
-#    define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
-#    define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))
-#  endif
+
 // If mingw not explicitly detected, assume using MS C runtime only.
 #  ifndef __MINGW32__
 #    define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
@@ -230,7 +240,7 @@
 #define _LIBCPP_NO_CFI
 #endif
 
-#if defined(__clang__)
+#if defined(_LIBCPP_COMPILER_CLANG)
 
 // _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
 // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility.
@@ -275,10 +285,6 @@ typedef __char32_t char32_t;
 #  define _LIBCPP_NORETURN __attribute__ ((noreturn))
 #endif
 
-#if !(__has_feature(cxx_deleted_functions))
-#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-#endif  // !(__has_feature(cxx_deleted_functions))
-
 #if !(__has_feature(cxx_lambdas))
 #define _LIBCPP_HAS_NO_LAMBDAS
 #endif
@@ -390,7 +396,7 @@ namespace std {
 #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow")))
 #endif 
 
-#elif defined(__GNUC__)
+#elif defined(_LIBCPP_COMPILER_GCC)
 
 #define _ALIGNAS(x) __attribute__((__aligned__(x)))
 #define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
@@ -431,7 +437,6 @@ namespace std {
 
 #ifndef __GXX_EXPERIMENTAL_CXX0X__
 #define _LIBCPP_HAS_NO_DECLTYPE
-#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 #define _LIBCPP_HAS_NO_NULLPTR
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
 #define _LIBCPP_HAS_NO_VARIADICS
@@ -448,7 +453,6 @@ namespace std {
 
 #if _GNUC_VER < 404
 #define _LIBCPP_HAS_NO_DECLTYPE
-#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
 #define _LIBCPP_HAS_NO_VARIADICS
 #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
@@ -475,15 +479,23 @@ using namespace _LIBCPP_NAMESPACE __attr
 #define _LIBCPP_HAS_NO_ASAN
 #endif
 
-#elif defined(_LIBCPP_MSVC)
+#elif defined(_LIBCPP_COMPILER_MSVC)
+
+#define _LIBCPP_TOSTRING2(x) #x
+#define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
+#define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))
 
+#if _MSC_VER < 1900
+#error "MSVC versions prior to Visual Studio 2015 are not supported"
+#endif
+
+#define _LIBCPP_HAS_IS_BASE_OF
 #define _LIBCPP_HAS_NO_CONSTEXPR
 #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
 #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
 #if _MSC_VER <= 1800
 #define _LIBCPP_HAS_NO_UNICODE_CHARS
 #endif
-#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
 #define _LIBCPP_HAS_NO_NOEXCEPT
 #define __alignof__ __alignof
 #define _LIBCPP_NORETURN __declspec(noreturn)
@@ -500,7 +512,7 @@ namespace std {
 
 #define _LIBCPP_HAS_NO_ASAN
 
-#elif defined(__IBMCPP__)
+#elif defined(_LIBCPP_COMPILER_IBM)
 
 #define _ALIGNAS(x) __attribute__((__aligned__(x)))
 #define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
@@ -530,7 +542,7 @@ namespace std {
 
 #define _LIBCPP_HAS_NO_ASAN
 
-#endif // __clang__ || __GNUC__ || _MSC_VER || __IBMCPP__
+#endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM]
 
 #if defined(__ELF__)
 #define _LIBCPP_OBJECT_FORMAT_ELF   1
@@ -566,7 +578,7 @@ namespace std {
 #define _LIBCPP_FUNC_VIS_ONLY
 #define _LIBCPP_ENUM_VIS
 
-#if defined(_LIBCPP_MSVC)
+#if defined(_LIBCPP_COMPILER_MSVC)
 # define _LIBCPP_INLINE_VISIBILITY __forceinline
 # define _LIBCPP_ALWAYS_INLINE     __forceinline
 # define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __forceinline
@@ -739,7 +751,7 @@ template <unsigned> struct __static_asse
 #define _LIBCPP_DEFAULT = default;
 #endif
 
-#ifdef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifdef _LIBCPP_CXX03_LANG
 #define _LIBCPP_EQUAL_DELETE
 #else
 #define _LIBCPP_EQUAL_DELETE = delete
@@ -892,8 +904,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
 
 // Thread API
 #if !defined(_LIBCPP_HAS_NO_THREADS) && \
-    !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \
-    !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
+    !defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
 # if defined(__FreeBSD__) || \
     defined(__Fuchsia__) || \
     defined(__NetBSD__) || \
@@ -901,7 +912,9 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
     defined(__APPLE__) || \
     defined(__CloudABI__) || \
     defined(__sun__)
-#  define _LIBCPP_HAS_THREAD_API_PTHREAD
+#   define _LIBCPP_HAS_THREAD_API_PTHREAD
+# elif defined(_LIBCPP_WIN32API)
+#  define _LIBCPP_HAS_THREAD_API_WIN32
 # else
 #  error "No thread API"
 # endif // _LIBCPP_HAS_THREAD_API

Modified: projects/clang400-import/contrib/libc++/include/__debug
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__debug	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__debug	Mon Jan  9 22:41:53 2017	(r311834)
@@ -122,7 +122,7 @@ struct _LIBCPP_TYPE_VIS __i_node
     __i_node* __next_;
     __c_node* __c_;
 
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     __i_node(const __i_node&) = delete;
     __i_node& operator=(const __i_node&) = delete;
 #else
@@ -145,7 +145,7 @@ struct _LIBCPP_TYPE_VIS __c_node
     __i_node** end_;
     __i_node** cap_;
 
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     __c_node(const __c_node&) = delete;
     __c_node& operator=(const __c_node&) = delete;
 #else
@@ -232,7 +232,7 @@ class _LIBCPP_TYPE_VIS __libcpp_db
 
     __libcpp_db();
 public:
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     __libcpp_db(const __libcpp_db&) = delete;
     __libcpp_db& operator=(const __libcpp_db&) = delete;
 #else

Modified: projects/clang400-import/contrib/libc++/include/__functional_base
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__functional_base	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__functional_base	Mon Jan  9 22:41:53 2017	(r311834)
@@ -552,23 +552,10 @@ cref(reference_wrapper<_Tp> __t) _NOEXCE
     return cref(__t.get());
 }
 
-#ifndef _LIBCPP_HAS_NO_VARIADICS
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-
+#ifndef _LIBCPP_CXX03_LANG
 template <class _Tp> void ref(const _Tp&&) = delete;
 template <class _Tp> void cref(const _Tp&&) = delete;
-
-#else  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-
-template <class _Tp> void ref(const _Tp&&);// = delete;
-template <class _Tp> void cref(const _Tp&&);// = delete;
-
-#endif  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
-
-#endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-
-#endif  // _LIBCPP_HAS_NO_VARIADICS
+#endif
 
 #if _LIBCPP_STD_VER > 11
 template <class _Tp1, class _Tp2 = void>

Modified: projects/clang400-import/contrib/libc++/include/__hash_table
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__hash_table	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__hash_table	Mon Jan  9 22:41:53 2017	(r311834)
@@ -20,7 +20,6 @@
 #include <utility>
 
 #include <__undef_min_max>
-#include <__undef___deallocate>
 
 #include <__debug>
 
@@ -1321,7 +1320,7 @@ private:
         void __move_assign_alloc(__hash_table&, false_type) _NOEXCEPT {}
 #endif // _LIBCPP_CXX03_LANG
 
-    void __deallocate(__next_pointer __np) _NOEXCEPT;
+    void __deallocate_node(__next_pointer __np) _NOEXCEPT;
     __next_pointer __detach() _NOEXCEPT;
 
     template <class, class, class, class, class> friend class _LIBCPP_TEMPLATE_VIS unordered_map;
@@ -1454,7 +1453,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
                  "Predicate must be copy-constructible.");
     static_assert((is_copy_constructible<hasher>::value),
                  "Hasher must be copy-constructible.");
-    __deallocate(__p1_.first().__next_);
+    __deallocate_node(__p1_.first().__next_);
 #if _LIBCPP_DEBUG_LEVEL >= 2
     __get_db()->__erase_c(this);
 #endif
@@ -1492,7 +1491,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
 
 template <class _Tp, class _Hash, class _Equal, class _Alloc>
 void
-__hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate(__next_pointer __np)
+__hash_table<_Tp, _Hash, _Equal, _Alloc>::__deallocate_node(__next_pointer __np)
     _NOEXCEPT
 {
     __node_allocator& __na = __node_alloc();
@@ -1599,11 +1598,11 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
             }
             catch (...)
             {
-                __deallocate(__cache);
+                __deallocate_node(__cache);
                 throw;
             }
 #endif  // _LIBCPP_NO_EXCEPTIONS
-            __deallocate(__cache);
+            __deallocate_node(__cache);
         }
         const_iterator __i = __u.begin();
         while (__u.size() != 0)
@@ -1661,11 +1660,11 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
         }
         catch (...)
         {
-            __deallocate(__cache);
+            __deallocate_node(__cache);
             throw;
         }
 #endif  // _LIBCPP_NO_EXCEPTIONS
-        __deallocate(__cache);
+        __deallocate_node(__cache);
     }
     for (; __first != __last; ++__first)
         __insert_unique(*__first);
@@ -1701,11 +1700,11 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
         }
         catch (...)
         {
-            __deallocate(__cache);
+            __deallocate_node(__cache);
             throw;
         }
 #endif  // _LIBCPP_NO_EXCEPTIONS
-        __deallocate(__cache);
+        __deallocate_node(__cache);
     }
     for (; __first != __last; ++__first)
         __insert_multi(_NodeTypes::__get_value(*__first));
@@ -1765,7 +1764,7 @@ __hash_table<_Tp, _Hash, _Equal, _Alloc>
 {
     if (size() > 0)
     {
-        __deallocate(__p1_.first().__next_);
+        __deallocate_node(__p1_.first().__next_);
         __p1_.first().__next_ = nullptr;
         size_type __bc = bucket_count();
         for (size_type __i = 0; __i < __bc; ++__i)

Modified: projects/clang400-import/contrib/libc++/include/__sso_allocator
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__sso_allocator	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__sso_allocator	Mon Jan  9 22:41:53 2017	(r311834)
@@ -15,8 +15,6 @@
 #include <type_traits>
 #include <new>
 
-#include <__undef___deallocate>
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
@@ -64,7 +62,7 @@ public:
         if (__p == (pointer)&buf_)
             __allocated_ = false;
         else
-            _VSTD::__deallocate(__p);
+            _VSTD::__libcpp_deallocate(__p);
     }
     _LIBCPP_INLINE_VISIBILITY size_type max_size() const throw() {return size_type(~0) / sizeof(_Tp);}
 

Modified: projects/clang400-import/contrib/libc++/include/__threading_support
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__threading_support	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/__threading_support	Mon Jan  9 22:41:53 2017	(r311834)
@@ -17,39 +17,24 @@
 #pragma GCC system_header
 #endif
 
-#ifndef _LIBCPP_HAS_NO_THREADS
-
-#ifndef __libcpp_has_include
-  #ifndef __has_include
-    #define __libcpp_has_include(x) 0
-  #else
-    #define __libcpp_has_include(x) __has_include(x)
-  #endif
-#endif
-
-#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) && \
-    !__libcpp_has_include(<__external_threading>)
-// If the <__external_threading> header is absent, build libc++ against a
-// pthread-oriented thread api but leave out its implementation. This setup
-// allows building+testing of an externally-threaded library variant (on any
-// platform that supports pthreads). Here, an 'externally-threaded' library
-// variant is one where the implementation of the libc++ thread api is provided
-// as a separate library.
-#define _LIBCPP_HAS_THREAD_API_EXTERNAL_PTHREAD
-#endif
+#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
+# include <__external_threading>
+#elif !defined(_LIBCPP_HAS_NO_THREADS)
 
-#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) && \
-    __libcpp_has_include(<__external_threading>)
-#include <__external_threading>
-#else
+#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
+# include <pthread.h>
+# include <sched.h>
+#elif defined(_LIBCPP_HAS_THREAD_API_WIN32)
+#include <assert.h>
+#include <Windows.h>
+#include <process.h>
+#include <fibersapi.h>
 
-#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \
-    defined(_LIBCPP_HAS_THREAD_API_EXTERNAL_PTHREAD)
-#include <pthread.h>
-#include <sched.h>
+#include <chrono>
 #endif
 
-#if defined(_LIBCPP_HAS_THREAD_API_EXTERNAL)
+#if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
+    defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL)
 #define _LIBCPP_THREAD_ABI_VISIBILITY _LIBCPP_FUNC_VIS
 #else
 #define _LIBCPP_THREAD_ABI_VISIBILITY inline _LIBCPP_INLINE_VISIBILITY
@@ -57,8 +42,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \
-    defined(_LIBCPP_HAS_THREAD_API_EXTERNAL_PTHREAD)
+#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
 // Mutex
 typedef pthread_mutex_t __libcpp_mutex_t;
 #define _LIBCPP_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
@@ -81,6 +65,33 @@ typedef pthread_t __libcpp_thread_t;
 
 // Thrad Local Storage
 typedef pthread_key_t __libcpp_tls_key;
+
+#define _LIBCPP_TLS_DESTRUCTOR_CC
+#else
+// Mutex
+typedef SRWLOCK __libcpp_mutex_t;
+#define _LIBCPP_MUTEX_INITIALIZER SRWLOCK_INIT
+
+typedef CRITICAL_SECTION __libcpp_recursive_mutex_t;
+
+// Condition Variable
+typedef CONDITION_VARIABLE __libcpp_condvar_t;
+#define _LIBCPP_CONDVAR_INITIALIZER CONDITION_VARIABLE_INIT
+
+// Execute Once
+typedef INIT_ONCE __libcpp_exec_once_flag;
+#define _LIBCPP_EXEC_ONCE_INITIALIZER INIT_ONCE_STATIC_INIT
+
+// Thread ID
+typedef DWORD __libcpp_thread_id;
+
+// Thread
+typedef HANDLE __libcpp_thread_t;
+
+// Thread Local Storage
+typedef DWORD __libcpp_tls_key;
+
+#define _LIBCPP_TLS_DESTRUCTOR_CC WINAPI
 #endif
 
 // Mutex
@@ -167,7 +178,8 @@ void __libcpp_thread_yield();
 
 // Thread local storage
 _LIBCPP_THREAD_ABI_VISIBILITY
-int __libcpp_tls_create(__libcpp_tls_key *__key, void (*__at_exit)(void *));
+int __libcpp_tls_create(__libcpp_tls_key* __key,
+                        void(_LIBCPP_TLS_DESTRUCTOR_CC* __at_exit)(void*));
 
 _LIBCPP_THREAD_ABI_VISIBILITY
 void *__libcpp_tls_get(__libcpp_tls_key __key);
@@ -175,8 +187,10 @@ void *__libcpp_tls_get(__libcpp_tls_key 
 _LIBCPP_THREAD_ABI_VISIBILITY
 int __libcpp_tls_set(__libcpp_tls_key __key, void *__p);
 
-#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \
-    defined(_LIBCPP_BUILDING_THREAD_API_EXTERNAL_PTHREAD)
+#if !defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \
+    defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL)
+
+#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD)
 
 int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m)
 {
@@ -342,12 +356,230 @@ int __libcpp_tls_set(__libcpp_tls_key __
     return pthread_setspecific(__key, __p);
 }
 
+#elif defined(_LIBCPP_HAS_THREAD_API_WIN32)
+
+// Mutex
+int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m)
+{
+  InitializeCriticalSection(__m);
+  return 0;
+}
+
+int __libcpp_recursive_mutex_lock(__libcpp_recursive_mutex_t *__m)
+{
+  EnterCriticalSection(__m);
+  return 0;
+}
+
+int __libcpp_recursive_mutex_trylock(__libcpp_recursive_mutex_t *__m)
+{
+  TryEnterCriticalSection(__m);
+  return 0;
+}
+
+int __libcpp_recursive_mutex_unlock(__libcpp_recursive_mutex_t *__m)
+{
+  LeaveCriticalSection(__m);
+  return 0;
+}
+
+int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m)
+{
+  static_cast<void>(__m);
+  return 0;
+}
+
+int __libcpp_mutex_lock(__libcpp_mutex_t *__m)
+{
+  AcquireSRWLockExclusive(__m);
+  return 0;
+}
+
+int __libcpp_mutex_trylock(__libcpp_mutex_t *__m)
+{
+  TryAcquireSRWLockExclusive(__m);
+  return 0;
+}
+
+int __libcpp_mutex_unlock(__libcpp_mutex_t *__m)
+{
+  ReleaseSRWLockExclusive(__m);
+  return 0;
+}
+
+int __libcpp_mutex_destroy(__libcpp_mutex_t *__m)
+{
+  static_cast<void>(__m);
+  return 0;
+}
+
+// Condition Variable
+int __libcpp_condvar_signal(__libcpp_condvar_t *__cv)
+{
+  WakeConditionVariable(__cv);
+  return 0;
+}
+
+int __libcpp_condvar_broadcast(__libcpp_condvar_t *__cv)
+{
+  WakeAllConditionVariable(__cv);
+  return 0;
+}
+
+int __libcpp_condvar_wait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m)
+{
+  SleepConditionVariableSRW(__cv, __m, INFINITE, 0);
+  return 0;
+}
+
+int __libcpp_condvar_timedwait(__libcpp_condvar_t *__cv, __libcpp_mutex_t *__m,
+                               timespec *__ts)
+{
+  using namespace _VSTD::chrono;
+
+  auto duration = seconds(__ts->tv_sec) + nanoseconds(__ts->tv_nsec);
+  auto abstime =
+      system_clock::time_point(duration_cast<system_clock::duration>(duration));
+  auto timeout_ms = duration_cast<milliseconds>(abstime - system_clock::now());
+
+  if (!SleepConditionVariableSRW(__cv, __m,
+                                 timeout_ms.count() > 0 ? timeout_ms.count()
+                                                        : 0,
+                                 0))
+    return GetLastError();
+  return 0;
+}
+
+int __libcpp_condvar_destroy(__libcpp_condvar_t *__cv)
+{
+  static_cast<void>(__cv);
+  return 0;
+}
+
+// Execute Once
+static inline _LIBCPP_ALWAYS_INLINE BOOL CALLBACK
+__libcpp_init_once_execute_once_thunk(PINIT_ONCE __init_once, PVOID __parameter,
+                                      PVOID *__context)
+{
+  static_cast<void>(__init_once);
+  static_cast<void>(__context);
+
+  void (*init_routine)(void) = reinterpret_cast<void (*)(void)>(__parameter);
+  init_routine();
+  return TRUE;
+}
+
+int __libcpp_execute_once(__libcpp_exec_once_flag *__flag,
+                          void (*__init_routine)(void))
+{
+  if (!InitOnceExecuteOnce(__flag, __libcpp_init_once_execute_once_thunk,
+                           reinterpret_cast<void *>(__init_routine), NULL))
+    return GetLastError();
+  return 0;
+}
+
+// Thread ID
+bool __libcpp_thread_id_equal(__libcpp_thread_id __lhs,
+                              __libcpp_thread_id __rhs)
+{
+  return __lhs == __rhs;
+}
+
+bool __libcpp_thread_id_less(__libcpp_thread_id __lhs, __libcpp_thread_id __rhs)
+{
+  return __lhs < __rhs;
+}
+
+// Thread
+struct __libcpp_beginthreadex_thunk_data
+{
+  void *(*__func)(void *);
+  void *__arg;
+};
+
+static inline _LIBCPP_ALWAYS_INLINE unsigned int WINAPI
+__libcpp_beginthreadex_thunk(void *__data)
+{
+  __libcpp_beginthreadex_thunk_data data =
+      *reinterpret_cast<__libcpp_beginthreadex_thunk_data *>(__data);
+  delete reinterpret_cast<__libcpp_beginthreadex_thunk_data *>(__data);
+  return reinterpret_cast<unsigned int>(data.__func(data.__arg));
+}
+
+int __libcpp_thread_create(__libcpp_thread_t *__t, void *(*__func)(void *),
+                           void *__arg)
+{
+  auto *data = new __libcpp_beginthreadex_thunk_data;
+  data->__func = __func;
+  data->__arg = __arg;
+
+  *__t = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0,
+                                                 __libcpp_beginthreadex_thunk,
+                                                 data, 0, NULL));
+  if (*__t)
+    return 0;
+  return GetLastError();
+}
+
+__libcpp_thread_id __libcpp_thread_get_current_id()
+{
+  return GetCurrentThreadId();
+}
+
+__libcpp_thread_id __libcpp_thread_get_id(const __libcpp_thread_t *__t)
+{
+  return GetThreadId(*__t);
+}
+
+int __libcpp_thread_join(__libcpp_thread_t *__t)
+{
+  if (WaitForSingleObjectEx(*__t, INFINITE, FALSE) == WAIT_FAILED)
+    return GetLastError();
+  if (!CloseHandle(*__t))
+    return GetLastError();
+  return 0;
+}
+
+int __libcpp_thread_detach(__libcpp_thread_t *__t)
+{
+  if (!CloseHandle(*__t))
+    return GetLastError();
+  return 0;
+}
+
+void __libcpp_thread_yield()
+{
+  SwitchToThread();
+}
+
+// Thread Local Storage
+int __libcpp_tls_create(__libcpp_tls_key* __key,
+                        void(_LIBCPP_TLS_DESTRUCTOR_CC* __at_exit)(void*))
+{
+  *__key = FlsAlloc(__at_exit);
+  if (*__key == FLS_OUT_OF_INDEXES)
+    return GetLastError();
+  return 0;
+}
+
+void *__libcpp_tls_get(__libcpp_tls_key __key)
+{
+  return FlsGetValue(__key);
+}
+
+int __libcpp_tls_set(__libcpp_tls_key __key, void *__p)
+{
+  if (!FlsSetValue(__key, __p))
+    return GetLastError();
+  return 0;
+}
+
 #endif // _LIBCPP_HAS_THREAD_API_PTHREAD
 
-_LIBCPP_END_NAMESPACE_STD
+#endif // !_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL || _LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL
 
-#endif // !_LIBCPP_HAS_THREAD_API_EXTERNAL || !__libcpp_has_include(<__external_threading>)
+_LIBCPP_END_NAMESPACE_STD
 
-#endif // _LIBCPP_HAS_NO_THREADS
+#endif // !_LIBCPP_HAS_NO_THREADS
 
 #endif // _LIBCPP_THREADING_SUPPORT

Modified: projects/clang400-import/contrib/libc++/include/algorithm
==============================================================================
--- projects/clang400-import/contrib/libc++/include/algorithm	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/algorithm	Mon Jan  9 22:41:53 2017	(r311834)
@@ -3100,28 +3100,28 @@ template <class _PopulationIterator, cla
           class _UniformRandomNumberGenerator>
 _LIBCPP_INLINE_VISIBILITY
 _SampleIterator __sample(_PopulationIterator __first,
-                         _PopulationIterator __last, _SampleIterator __out,
+                         _PopulationIterator __last, _SampleIterator __output,
                          _Distance __n,
                          _UniformRandomNumberGenerator & __g,
                          input_iterator_tag) {
 
   _Distance __k = 0;
   for (; __first != __last && __k < __n; ++__first, (void)++__k)
-    __out[__k] = *__first;
+    __output[__k] = *__first;
   _Distance __sz = __k;
   for (; __first != __last; ++__first, (void)++__k) {
     _Distance __r = _VSTD::uniform_int_distribution<_Distance>(0, __k)(__g);
     if (__r < __sz)
-      __out[__r] = *__first;
+      __output[__r] = *__first;
   }
-  return __out + _VSTD::min(__n, __k);
+  return __output + _VSTD::min(__n, __k);
 }
 
 template <class _PopulationIterator, class _SampleIterator, class _Distance,
           class _UniformRandomNumberGenerator>
 _LIBCPP_INLINE_VISIBILITY
 _SampleIterator __sample(_PopulationIterator __first,
-                         _PopulationIterator __last, _SampleIterator __out,
+                         _PopulationIterator __last, _SampleIterator __output,
                          _Distance __n,
                          _UniformRandomNumberGenerator& __g,
                          forward_iterator_tag) {
@@ -3130,18 +3130,18 @@ _SampleIterator __sample(_PopulationIter
     _Distance __r =
         _VSTD::uniform_int_distribution<_Distance>(0, --__unsampled_sz)(__g);
     if (__r < __n) {
-      *__out++ = *__first;
+      *__output++ = *__first;
       --__n;
     }
   }
-  return __out;
+  return __output;
 }
 
 template <class _PopulationIterator, class _SampleIterator, class _Distance,
           class _UniformRandomNumberGenerator>
 _LIBCPP_INLINE_VISIBILITY
 _SampleIterator __sample(_PopulationIterator __first,
-                         _PopulationIterator __last, _SampleIterator __out,
+                         _PopulationIterator __last, _SampleIterator __output,
                          _Distance __n, _UniformRandomNumberGenerator& __g) {
   typedef typename iterator_traits<_PopulationIterator>::iterator_category
         _PopCategory;
@@ -3153,7 +3153,7 @@ _SampleIterator __sample(_PopulationIter
   typedef typename common_type<_Distance, _Difference>::type _CommonType;
   _LIBCPP_ASSERT(__n >= 0, "N must be a positive number.");
   return _VSTD::__sample(
-      __first, __last, __out, _CommonType(__n),
+      __first, __last, __output, _CommonType(__n),
       __g, _PopCategory());
 }
 
@@ -3162,9 +3162,9 @@ template <class _PopulationIterator, cla
           class _UniformRandomNumberGenerator>
 inline _LIBCPP_INLINE_VISIBILITY
 _SampleIterator sample(_PopulationIterator __first,
-                       _PopulationIterator __last, _SampleIterator __out,
+                       _PopulationIterator __last, _SampleIterator __output,
                        _Distance __n, _UniformRandomNumberGenerator&& __g) {
-    return _VSTD::__sample(__first, __last, __out, __n, __g);
+    return _VSTD::__sample(__first, __last, __output, __n, __g);
 }
 #endif // _LIBCPP_STD_VER > 14
 

Modified: projects/clang400-import/contrib/libc++/include/atomic
==============================================================================
--- projects/clang400-import/contrib/libc++/include/atomic	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/atomic	Mon Jan  9 22:41:53 2017	(r311834)
@@ -943,16 +943,16 @@ struct __atomic_base  // false
 
     _LIBCPP_INLINE_VISIBILITY
     _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {}
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     __atomic_base(const __atomic_base&) = delete;
     __atomic_base& operator=(const __atomic_base&) = delete;
     __atomic_base& operator=(const __atomic_base&) volatile = delete;
-#else  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#else
 private:
     __atomic_base(const __atomic_base&);
     __atomic_base& operator=(const __atomic_base&);
     __atomic_base& operator=(const __atomic_base&) volatile;
-#endif  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#endif
 };
 
 #if defined(__cpp_lib_atomic_is_always_lock_free)
@@ -1699,16 +1699,16 @@ typedef struct atomic_flag
     _LIBCPP_INLINE_VISIBILITY
     atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {} // EXTENSION
 
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     atomic_flag(const atomic_flag&) = delete;
     atomic_flag& operator=(const atomic_flag&) = delete;
     atomic_flag& operator=(const atomic_flag&) volatile = delete;
-#else  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#else
 private:
     atomic_flag(const atomic_flag&);
     atomic_flag& operator=(const atomic_flag&);
     atomic_flag& operator=(const atomic_flag&) volatile;
-#endif  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#endif
 } atomic_flag;
 
 inline _LIBCPP_INLINE_VISIBILITY

Modified: projects/clang400-import/contrib/libc++/include/experimental/algorithm
==============================================================================
--- projects/clang400-import/contrib/libc++/include/experimental/algorithm	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/experimental/algorithm	Mon Jan  9 22:41:53 2017	(r311834)
@@ -60,9 +60,9 @@ template <class _PopulationIterator, cla
           class _UniformRandomNumberGenerator>
 inline _LIBCPP_INLINE_VISIBILITY
 _SampleIterator sample(_PopulationIterator __first, _PopulationIterator __last,
-                       _SampleIterator __out, _Distance __n,
+                       _SampleIterator __output, _Distance __n,
                        _UniformRandomNumberGenerator &&__g) {
-  return _VSTD::__sample(__first, __last, __out, __n, __g);
+  return _VSTD::__sample(__first, __last, __output, __n, __g);
 }
 
 _LIBCPP_END_NAMESPACE_LFTS

Modified: projects/clang400-import/contrib/libc++/include/experimental/dynarray
==============================================================================
--- projects/clang400-import/contrib/libc++/include/experimental/dynarray	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/experimental/dynarray	Mon Jan  9 22:41:53 2017	(r311834)
@@ -11,9 +11,6 @@
 #ifndef _LIBCPP_DYNARRAY
 #define _LIBCPP_DYNARRAY
 
-#include <__config>
-#if _LIBCPP_STD_VER > 11
-
 /*
     dynarray synopsis
 
@@ -96,6 +93,8 @@ public:
 }}  // std::experimental
 
 */
+#include <__config>
+#if _LIBCPP_STD_VER > 11
 
 #include <__functional_base>
 #include <iterator>
@@ -104,8 +103,6 @@ public:
 #include <new>
 #include <algorithm>
 
-#include <__undef___deallocate>
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
 #endif
@@ -143,9 +140,9 @@ private:
         return static_cast<value_type *> (_VSTD::__allocate (sizeof(value_type) * count));
     }
 
-    static inline _LIBCPP_INLINE_VISIBILITY void __deallocate ( value_type* __ptr ) noexcept
+    static inline _LIBCPP_INLINE_VISIBILITY void __deallocate_value( value_type* __ptr ) noexcept
     {
-        _VSTD::__deallocate (static_cast<void *> (__ptr));
+        _VSTD::__libcpp_deallocate (static_cast<void *> (__ptr));
     }
 
 public:
@@ -265,7 +262,7 @@ dynarray<_Tp>::~dynarray()
     value_type *__data = data () + __size_;
     for ( size_t i = 0; i < __size_; ++i )
         (--__data)->value_type::~value_type();
-    __deallocate ( __base_ );
+    __deallocate_value( __base_ );
 }
 
 template <class _Tp>

Modified: projects/clang400-import/contrib/libc++/include/experimental/iterator
==============================================================================
--- projects/clang400-import/contrib/libc++/include/experimental/iterator	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/experimental/iterator	Mon Jan  9 22:41:53 2017	(r311834)
@@ -75,19 +75,19 @@ public:
     typedef void                                 reference;
 
     ostream_joiner(ostream_type& __os, _Delim&& __d)
-        : __out(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {}
+        : __output(_VSTD::addressof(__os)), __delim(_VSTD::move(__d)), __first(true) {}
         
     ostream_joiner(ostream_type& __os, const _Delim& __d)
-        : __out(_VSTD::addressof(__os)), __delim(__d), __first(true) {}
+        : __output(_VSTD::addressof(__os)), __delim(__d), __first(true) {}
     
 
     template<typename _Tp>
     ostream_joiner& operator=(const _Tp& __v)
     {
         if (!__first)
-            *__out << __delim;
+            *__output << __delim;
         __first = false;
-        *__out << __v;
+        *__output << __v;
         return *this;
     }
 
@@ -96,7 +96,7 @@ public:
     ostream_joiner& operator++(int) _NOEXCEPT { return *this; }
 
 private:
-    ostream_type*   __out;
+    ostream_type*   __output;
     _Delim          __delim;
     bool            __first;
 };

Modified: projects/clang400-import/contrib/libc++/include/istream
==============================================================================
--- projects/clang400-import/contrib/libc++/include/istream	Mon Jan  9 22:32:19 2017	(r311833)
+++ projects/clang400-import/contrib/libc++/include/istream	Mon Jan  9 22:41:53 2017	(r311834)
@@ -205,14 +205,9 @@ protected:
       basic_ios<char_type, traits_type>::swap(__rhs);
     }
 
-#if _LIBCPP_STD_VER > 11
-#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#ifndef _LIBCPP_CXX03_LANG
     basic_istream           (const basic_istream& __rhs) = delete;
     basic_istream& operator=(const basic_istream& __rhs) = delete;
-#else
-    basic_istream           (const basic_istream& __rhs); // not defined
-    basic_istream& operator=(const basic_istream& __rhs); // not defined
-#endif
 #endif
 public:
 

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

From owner-svn-src-projects@freebsd.org  Mon Jan  9 22:46:48 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 896CACA81B7
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 22:46:48 +0000 (UTC) (envelope-from dim@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 615101A12;
 Mon,  9 Jan 2017 22:46:48 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09Mkl0p029400;
 Mon, 9 Jan 2017 22:46:47 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09MklVm029399;
 Mon, 9 Jan 2017 22:46:47 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701092246.v09MklVm029399@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 22:46:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311835 - projects/clang400-import/lib/libc++
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 22:46:48 -0000

Author: dim
Date: Mon Jan  9 22:46:47 2017
New Revision: 311835
URL: https://svnweb.freebsd.org/changeset/base/311835

Log:
  Update the libc++ Makefile to be more like the other llvm and clang
  Makefiles.

Modified:
  projects/clang400-import/lib/libc++/Makefile

Modified: projects/clang400-import/lib/libc++/Makefile
==============================================================================
--- projects/clang400-import/lib/libc++/Makefile	Mon Jan  9 22:41:53 2017	(r311834)
+++ projects/clang400-import/lib/libc++/Makefile	Mon Jan  9 22:46:47 2017	(r311835)
@@ -3,9 +3,9 @@
 .include <src.opts.mk>
 
 PACKAGE=	clibs
-_LIBCXXRTDIR=	${.CURDIR}/../../contrib/libcxxrt
-HDRDIR=		${.CURDIR}/../../contrib/libc++/include
-SRCDIR=		${.CURDIR}/../../contrib/libc++/src
+_LIBCXXRTDIR=	${SRCTOP}/contrib/libcxxrt
+HDRDIR=		${SRCTOP}/contrib/libc++/include
+SRCDIR=		${SRCTOP}/contrib/libc++/src
 CXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
 .if ${MACHINE_CPUARCH} == "arm"
 STATIC_CXXFLAGS+= -mlong-calls
@@ -17,43 +17,43 @@ LIB=		c++
 SHLIB_MAJOR=	1
 SHLIB_LDSCRIPT=	libc++.ldscript
 
-SRCS+=		algorithm.cpp\
-		any.cpp\
-		bind.cpp\
-		chrono.cpp\
-		condition_variable.cpp\
-		debug.cpp\
-		exception.cpp\
-		future.cpp\
-		hash.cpp\
-		ios.cpp\
-		iostream.cpp\
-		locale.cpp\
-		memory.cpp\
-		mutex.cpp\
-		new.cpp\
-		optional.cpp\
-		random.cpp\
-		regex.cpp\
-		shared_mutex.cpp\
-		stdexcept.cpp\
-		string.cpp\
-		strstream.cpp\
-		system_error.cpp\
-		thread.cpp\
-		typeinfo.cpp\
-		utility.cpp\
-		valarray.cpp
-
-CXXRT_SRCS+=	libelftc_dem_gnu3.c\
-		terminate.cc\
-		dynamic_cast.cc\
-		memory.cc\
-		auxhelper.cc\
-		exception.cc\
-		stdexcept.cc\
-		typeinfo.cc\
-		guard.cc
+SRCS+=		algorithm.cpp
+SRCS+=		any.cpp
+SRCS+=		bind.cpp
+SRCS+=		chrono.cpp
+SRCS+=		condition_variable.cpp
+SRCS+=		debug.cpp
+SRCS+=		exception.cpp
+SRCS+=		future.cpp
+SRCS+=		hash.cpp
+SRCS+=		ios.cpp
+SRCS+=		iostream.cpp
+SRCS+=		locale.cpp
+SRCS+=		memory.cpp
+SRCS+=		mutex.cpp
+SRCS+=		new.cpp
+SRCS+=		optional.cpp
+SRCS+=		random.cpp
+SRCS+=		regex.cpp
+SRCS+=		shared_mutex.cpp
+SRCS+=		stdexcept.cpp
+SRCS+=		string.cpp
+SRCS+=		strstream.cpp
+SRCS+=		system_error.cpp
+SRCS+=		thread.cpp
+SRCS+=		typeinfo.cpp
+SRCS+=		utility.cpp
+SRCS+=		valarray.cpp
+
+CXXRT_SRCS+=	auxhelper.cc
+CXXRT_SRCS+=	dynamic_cast.cc
+CXXRT_SRCS+=	exception.cc
+CXXRT_SRCS+=	guard.cc
+CXXRT_SRCS+=	libelftc_dem_gnu3.c
+CXXRT_SRCS+=	memory.cc
+CXXRT_SRCS+=	stdexcept.cc
+CXXRT_SRCS+=	terminate.cc
+CXXRT_SRCS+=	typeinfo.cc
 
 .for _S in ${CXXRT_SRCS}
 CLEANFILES+=	cxxrt_${_S}
@@ -71,132 +71,133 @@ CXXFLAGS+=	-std=c++11
 LIBADD+=	cxxrt
 INCSGROUPS=	STD EXP EXT
 
-STD_HEADERS=	__bit_reference\
-		__bsd_locale_defaults.h\
-		__bsd_locale_fallbacks.h\
-		__config\
-		__debug\
-		__functional_03\
-		__functional_base\
-		__functional_base_03\
-		__hash_table\
-		__libcpp_version\
-		__locale\
-		__mutex_base\
-		__nullptr\
-		__refstring\
-		__split_buffer\
-		__sso_allocator\
-		__std_stream\
-		__string\
-		__threading_support\
-		__tree\
-		__tuple\
-		__undef_min_max\
-		algorithm\
-		any\
-		array\
-		atomic\
-		bitset\
-		cassert\
-		ccomplex\
-		cctype\
-		cerrno\
-		cfenv\
-		cfloat\
-		chrono\
-		cinttypes\
-		ciso646\
-		climits\
-		clocale\
-		cmath\
-		codecvt\
-		complex\
-		complex.h\
-		condition_variable\
-		csetjmp\
-		csignal\
-		cstdarg\
-		cstdbool\
-		cstddef\
-		cstdint\
-		cstdio\
-		cstdlib\
-		cstring\
-		ctgmath\
-		ctime\
-		ctype.h\
-		cwchar\
-		cwctype\
-		deque\
-		errno.h\
-		exception\
-		float.h\
-		forward_list\
-		fstream\
-		functional\
-		future\
-		initializer_list\
-		inttypes.h\
-		iomanip\
-		ios\
-		iosfwd\
-		iostream\
-		istream\
-		iterator\
-		limits\
-		limits.h\
-		list\
-		locale\
-		locale.h\
-		map\
-		math.h\
-		memory\
-		mutex\
-		new\
-		numeric\
-		optional\
-		ostream\
-		queue\
-		random\
-		ratio\
-		regex\
-		scoped_allocator\
-		set\
-		setjmp.h\
-		shared_mutex\
-		sstream\
-		stack\
-		stdbool.h\
-		stddef.h\
-		stdexcept\
-		stdint.h\
-		stdio.h\
-		stdlib.h\
-		streambuf\
-		string\
-		string.h\
-		string_view\
-		strstream\
-		system_error\
-		tgmath.h\
-		thread\
-		tuple\
-		type_traits\
-		typeindex\
-		typeinfo\
-		unordered_map\
-		unordered_set\
-		utility\
-		valarray\
-		variant\
-		vector\
-		wchar.h\
-		wctype.h
-RT_HEADERS=	cxxabi.h\
-		unwind.h\
-		unwind-arm.h\
-		unwind-itanium.h
+STD_HEADERS+=	__bit_reference
+STD_HEADERS+=	__bsd_locale_defaults.h
+STD_HEADERS+=	__bsd_locale_fallbacks.h
+STD_HEADERS+=	__config
+STD_HEADERS+=	__debug
+STD_HEADERS+=	__functional_03
+STD_HEADERS+=	__functional_base
+STD_HEADERS+=	__functional_base_03
+STD_HEADERS+=	__hash_table
+STD_HEADERS+=	__libcpp_version
+STD_HEADERS+=	__locale
+STD_HEADERS+=	__mutex_base
+STD_HEADERS+=	__nullptr
+STD_HEADERS+=	__refstring
+STD_HEADERS+=	__split_buffer
+STD_HEADERS+=	__sso_allocator
+STD_HEADERS+=	__std_stream
+STD_HEADERS+=	__string
+STD_HEADERS+=	__threading_support
+STD_HEADERS+=	__tree
+STD_HEADERS+=	__tuple
+STD_HEADERS+=	__undef_min_max
+STD_HEADERS+=	algorithm
+STD_HEADERS+=	any
+STD_HEADERS+=	array
+STD_HEADERS+=	atomic
+STD_HEADERS+=	bitset
+STD_HEADERS+=	cassert
+STD_HEADERS+=	ccomplex
+STD_HEADERS+=	cctype
+STD_HEADERS+=	cerrno
+STD_HEADERS+=	cfenv
+STD_HEADERS+=	cfloat
+STD_HEADERS+=	chrono
+STD_HEADERS+=	cinttypes
+STD_HEADERS+=	ciso646
+STD_HEADERS+=	climits
+STD_HEADERS+=	clocale
+STD_HEADERS+=	cmath
+STD_HEADERS+=	codecvt
+STD_HEADERS+=	complex
+STD_HEADERS+=	complex.h
+STD_HEADERS+=	condition_variable
+STD_HEADERS+=	csetjmp
+STD_HEADERS+=	csignal
+STD_HEADERS+=	cstdarg
+STD_HEADERS+=	cstdbool
+STD_HEADERS+=	cstddef
+STD_HEADERS+=	cstdint
+STD_HEADERS+=	cstdio
+STD_HEADERS+=	cstdlib
+STD_HEADERS+=	cstring
+STD_HEADERS+=	ctgmath
+STD_HEADERS+=	ctime
+STD_HEADERS+=	ctype.h
+STD_HEADERS+=	cwchar
+STD_HEADERS+=	cwctype
+STD_HEADERS+=	deque
+STD_HEADERS+=	errno.h
+STD_HEADERS+=	exception
+STD_HEADERS+=	float.h
+STD_HEADERS+=	forward_list
+STD_HEADERS+=	fstream
+STD_HEADERS+=	functional
+STD_HEADERS+=	future
+STD_HEADERS+=	initializer_list
+STD_HEADERS+=	inttypes.h
+STD_HEADERS+=	iomanip
+STD_HEADERS+=	ios
+STD_HEADERS+=	iosfwd
+STD_HEADERS+=	iostream
+STD_HEADERS+=	istream
+STD_HEADERS+=	iterator
+STD_HEADERS+=	limits
+STD_HEADERS+=	limits.h
+STD_HEADERS+=	list
+STD_HEADERS+=	locale
+STD_HEADERS+=	locale.h
+STD_HEADERS+=	map
+STD_HEADERS+=	math.h
+STD_HEADERS+=	memory
+STD_HEADERS+=	mutex
+STD_HEADERS+=	new
+STD_HEADERS+=	numeric
+STD_HEADERS+=	optional
+STD_HEADERS+=	ostream
+STD_HEADERS+=	queue
+STD_HEADERS+=	random
+STD_HEADERS+=	ratio
+STD_HEADERS+=	regex
+STD_HEADERS+=	scoped_allocator
+STD_HEADERS+=	set
+STD_HEADERS+=	setjmp.h
+STD_HEADERS+=	shared_mutex
+STD_HEADERS+=	sstream
+STD_HEADERS+=	stack
+STD_HEADERS+=	stdbool.h
+STD_HEADERS+=	stddef.h
+STD_HEADERS+=	stdexcept
+STD_HEADERS+=	stdint.h
+STD_HEADERS+=	stdio.h
+STD_HEADERS+=	stdlib.h
+STD_HEADERS+=	streambuf
+STD_HEADERS+=	string
+STD_HEADERS+=	string.h
+STD_HEADERS+=	string_view
+STD_HEADERS+=	strstream
+STD_HEADERS+=	system_error
+STD_HEADERS+=	tgmath.h
+STD_HEADERS+=	thread
+STD_HEADERS+=	tuple
+STD_HEADERS+=	type_traits
+STD_HEADERS+=	typeindex
+STD_HEADERS+=	typeinfo
+STD_HEADERS+=	unordered_map
+STD_HEADERS+=	unordered_set
+STD_HEADERS+=	utility
+STD_HEADERS+=	valarray
+STD_HEADERS+=	variant
+STD_HEADERS+=	vector
+STD_HEADERS+=	wchar.h
+STD_HEADERS+=	wctype.h
+
+RT_HEADERS+=	cxxabi.h
+RT_HEADERS+=	unwind-arm.h
+RT_HEADERS+=	unwind-itanium.h
+RT_HEADERS+=	unwind.h
 
 .for hdr in ${STD_HEADERS}
 STD+=		${HDRDIR}/${hdr}
@@ -207,44 +208,44 @@ STD+=		${_LIBCXXRTDIR}/${hdr}
 .endfor
 STDDIR=		${CXXINCLUDEDIR}
 
-EXP_HEADERS=	__config\
-		__memory\
-		algorithm\
-		any\
-		chrono\
-		deque\
-		dynarray\
-		filesystem\
-		forward_list\
-		functional\
-		iterator\
-		list\
-		map\
-		memory_resource\
-		numeric\
-		optional\
-		propagate_const\
-		ratio\
-		regex\
-		set\
-		string\
-		string_view\
-		system_error\
-		tuple\
-		type_traits\
-		unordered_map\
-		unordered_set\
-		utility\
-		vector
+EXP_HEADERS+=	__config
+EXP_HEADERS+=	__memory
+EXP_HEADERS+=	algorithm
+EXP_HEADERS+=	any
+EXP_HEADERS+=	chrono
+EXP_HEADERS+=	deque
+EXP_HEADERS+=	dynarray
+EXP_HEADERS+=	filesystem
+EXP_HEADERS+=	forward_list
+EXP_HEADERS+=	functional
+EXP_HEADERS+=	iterator
+EXP_HEADERS+=	list
+EXP_HEADERS+=	map
+EXP_HEADERS+=	memory_resource
+EXP_HEADERS+=	numeric
+EXP_HEADERS+=	optional
+EXP_HEADERS+=	propagate_const
+EXP_HEADERS+=	ratio
+EXP_HEADERS+=	regex
+EXP_HEADERS+=	set
+EXP_HEADERS+=	string
+EXP_HEADERS+=	string_view
+EXP_HEADERS+=	system_error
+EXP_HEADERS+=	tuple
+EXP_HEADERS+=	type_traits
+EXP_HEADERS+=	unordered_map
+EXP_HEADERS+=	unordered_set
+EXP_HEADERS+=	utility
+EXP_HEADERS+=	vector
 
 .for hdr in ${EXP_HEADERS}
 EXP+=		${HDRDIR}/experimental/${hdr}
 .endfor
 EXPDIR=		${CXXINCLUDEDIR}/experimental
 
-EXT_HEADERS=	__hash\
-		hash_map\
-		hash_set
+EXT_HEADERS+=	__hash
+EXT_HEADERS+=	hash_map
+EXT_HEADERS+=	hash_set
 
 .for hdr in ${EXT_HEADERS}
 EXT+=		${HDRDIR}/ext/${hdr}

From owner-svn-src-projects@freebsd.org  Mon Jan  9 22:49:39 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 AA0B4CA8283
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  9 Jan 2017 22:49:39 +0000 (UTC) (envelope-from dim@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 608761D08;
 Mon,  9 Jan 2017 22:49:39 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v09MncCm029761;
 Mon, 9 Jan 2017 22:49:38 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v09MnZ8b029730;
 Mon, 9 Jan 2017 22:49:35 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701092249.v09MnZ8b029730@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Mon, 9 Jan 2017 22:49:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311836 - in
 projects/clang400-import/contrib/compiler-rt/lib: asan builtins/arm lsan
 sanitizer_common tsan/rtl ubsan
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Jan 2017 22:49:39 -0000

Author: dim
Date: Mon Jan  9 22:49:35 2017
New Revision: 311836
URL: https://svnweb.freebsd.org/changeset/base/311836

Log:
  Merge compiler-rt trunk r291476.

Added:
  projects/clang400-import/contrib/compiler-rt/lib/asan/weak_symbols.txt
     - copied unchanged from r311835, vendor/compiler-rt/dist/lib/asan/weak_symbols.txt
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/weak_symbols.txt
     - copied unchanged from r311835, vendor/compiler-rt/dist/lib/sanitizer_common/weak_symbols.txt
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/weak_symbols.txt
     - copied unchanged from r311835, vendor/compiler-rt/dist/lib/ubsan/weak_symbols.txt
Modified:
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_rtl.cc
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan.syms.extra
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
  projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc
Directory Properties:
  projects/clang400-import/contrib/compiler-rt/   (props changed)

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_report.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -179,6 +179,8 @@ class ScopedInErrorReport {
     if (common_flags()->print_cmdline)
       PrintCmdline();
 
+    if (common_flags()->print_module_map == 2) PrintModuleMap();
+
     // Copy the message buffer so that we could start logging without holding a
     // lock that gets aquired during printing.
     InternalScopedBuffer<char> buffer_copy(kErrorMessageBufferSize);

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_rtl.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_rtl.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_rtl.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -46,6 +46,7 @@ static void AsanDie() {
     // Don't die twice - run a busy loop.
     while (1) { }
   }
+  if (common_flags()->print_module_map >= 1) PrintModuleMap();
   if (flags()->sleep_before_dying) {
     Report("Sleeping for %d second(s)\n", flags()->sleep_before_dying);
     SleepForSeconds(flags()->sleep_before_dying);

Copied: projects/clang400-import/contrib/compiler-rt/lib/asan/weak_symbols.txt (from r311835, vendor/compiler-rt/dist/lib/asan/weak_symbols.txt)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/weak_symbols.txt	Mon Jan  9 22:49:35 2017	(r311836, copy of r311835, vendor/compiler-rt/dist/lib/asan/weak_symbols.txt)
@@ -0,0 +1,3 @@
+___asan_default_options
+___asan_default_suppressions
+___asan_on_error

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/aeabi_fcmp.S	Mon Jan  9 22:49:35 2017	(r311836)
@@ -26,10 +26,10 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp 
         bl        SYMBOL_NAME(__ ## cond ## sf2) SEPARATOR \
         cmp       r0, #0                         SEPARATOR \
         b ## cond 1f                             SEPARATOR \
-        mov       r0, #0                         SEPARATOR \
+        movs      r0, #0                         SEPARATOR \
         pop       { r4, pc }                     SEPARATOR \
 1:                                               SEPARATOR \
-        mov       r0, #1                         SEPARATOR \
+        movs      r0, #1                         SEPARATOR \
         pop       { r4, pc }                     SEPARATOR \
 END_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S	Mon Jan  9 22:49:35 2017	(r311836)
@@ -47,27 +47,50 @@
 DEFINE_COMPILERRT_FUNCTION(__eqsf2)
     // Make copies of a and b with the sign bit shifted off the top.  These will
     // be used to detect zeros and NaNs.
+#if __ARM_ARCH_ISA_THUMB == 1
+    push    {r6, lr}
+    lsls    r2,         r0, #1
+    lsls    r3,         r1, #1
+#else
     mov     r2,         r0, lsl #1
     mov     r3,         r1, lsl #1
+#endif
 
     // We do the comparison in three stages (ignoring NaN values for the time
     // being).  First, we orr the absolute values of a and b; this sets the Z
     // flag if both a and b are zero (of either sign).  The shift of r3 doesn't
     // effect this at all, but it *does* make sure that the C flag is clear for
     // the subsequent operations.
+#if __ARM_ARCH_ISA_THUMB == 1
+    lsrs    r6,     r3, #1
+    orrs    r6,     r2, r6
+#else
     orrs    r12,    r2, r3, lsr #1
-
+#endif
     // Next, we check if a and b have the same or different signs.  If they have
     // opposite signs, this eor will set the N flag.
+#if __ARM_ARCH_ISA_THUMB == 1
+    beq     1f
+    movs    r6,     r0
+    eors    r6,     r1
+1:
+#else
     it ne
     eorsne  r12,    r0, r1
+#endif
 
     // If a and b are equal (either both zeros or bit identical; again, we're
     // ignoring NaNs for now), this subtract will zero out r0.  If they have the
     // same sign, the flags are updated as they would be for a comparison of the
     // absolute values of a and b.
+#if __ARM_ARCH_ISA_THUMB == 1
+    bmi     1f
+    subs    r0,     r2, r3
+1:
+#else
     it pl
     subspl  r0,     r2, r3
+#endif
 
     // If a is smaller in magnitude than b and both have the same sign, place
     // the negation of the sign of b in r0.  Thus, if both are negative and
@@ -79,30 +102,69 @@ DEFINE_COMPILERRT_FUNCTION(__eqsf2)
     // still clear from the shift argument in orrs; if a is positive and b
     // negative, this places 0 in r0; if a is negative and b positive, -1 is
     // placed in r0.
+#if __ARM_ARCH_ISA_THUMB == 1
+    bhs     1f
+    // Here if a and b have the same sign and absA < absB, the result is thus
+    // b < 0 ? 1 : -1. Same if a and b have the opposite sign (ignoring Nan).
+    movs    r0,         #1
+    lsrs    r1,         #31
+    bne     LOCAL_LABEL(CHECK_NAN)
+    negs    r0,         r0
+    b       LOCAL_LABEL(CHECK_NAN)
+1:
+#else
     it lo
     mvnlo   r0,         r1, asr #31
+#endif
 
     // If a is greater in magnitude than b and both have the same sign, place
     // the sign of b in r0.  Thus, if both are negative and a < b, -1 is placed
     // in r0, which is the desired result.  Conversely, if both are positive
     // and a > b, zero is placed in r0.
+#if __ARM_ARCH_ISA_THUMB == 1
+    bls     1f
+    // Here both have the same sign and absA > absB.
+    movs    r0,         #1
+    lsrs    r1,         #31
+    beq     LOCAL_LABEL(CHECK_NAN)
+    negs    r0, r0
+1:
+#else
     it hi
     movhi   r0,         r1, asr #31
+#endif
 
     // If you've been keeping track, at this point r0 contains -1 if a < b and
     // 0 if a >= b.  All that remains to be done is to set it to 1 if a > b.
     // If a == b, then the Z flag is set, so we can get the correct final value
     // into r0 by simply or'ing with 1 if Z is clear.
+    // For Thumb-1, r0 contains -1 if a < b, 0 if a > b and 0 if a == b.
+#if __ARM_ARCH_ISA_THUMB != 1
     it ne
     orrne   r0,     r0, #1
+#endif
 
     // Finally, we need to deal with NaNs.  If either argument is NaN, replace
     // the value in r0 with 1.
+#if __ARM_ARCH_ISA_THUMB == 1
+LOCAL_LABEL(CHECK_NAN):
+    movs    r6,         #0xff
+    lsls    r6,         #24
+    cmp     r2,         r6
+    bhi     1f
+    cmp     r3,         r6
+1:
+    bls     2f
+    movs    r0,         #1
+2:
+    pop     {r6, pc}
+#else
     cmp     r2,         #0xff000000
     ite ls
     cmpls   r3,         #0xff000000
     movhi   r0,         #1
     JMP(lr)
+#endif
 END_COMPILERRT_FUNCTION(__eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__lesf2, __eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__ltsf2, __eqsf2)
@@ -111,11 +173,48 @@ DEFINE_COMPILERRT_FUNCTION_ALIAS(__nesf2
 .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtsf2)
     // Identical to the preceding except in that we return -1 for NaN values.
-    // Given that the two paths share so much code, one might be tempted to 
+    // Given that the two paths share so much code, one might be tempted to
     // unify them; however, the extra code needed to do so makes the code size
     // to performance tradeoff very hard to justify for such small functions.
-    mov     r2,         r0, lsl #1
-    mov     r3,         r1, lsl #1
+#if __ARM_ARCH_ISA_THUMB == 1
+    push    {r6, lr}
+    lsls    r2,        r0, #1
+    lsls    r3,        r1, #1
+    lsrs    r6,        r3, #1
+    orrs    r6,        r2, r6
+    beq     1f
+    movs    r6,        r0
+    eors    r6,        r1
+1:
+    bmi     2f
+    subs    r0,        r2, r3
+2:
+    bhs     3f
+    movs    r0,        #1
+    lsrs    r1,        #31
+    bne     LOCAL_LABEL(CHECK_NAN_2)
+    negs    r0, r0
+    b       LOCAL_LABEL(CHECK_NAN_2)
+3:
+    bls     4f
+    movs    r0,         #1
+    lsrs    r1,         #31
+    beq     LOCAL_LABEL(CHECK_NAN_2)
+    negs    r0, r0
+4:
+LOCAL_LABEL(CHECK_NAN_2):
+    movs    r6,         #0xff
+    lsls    r6,         #24
+    cmp     r2,         r6
+    bhi     5f
+    cmp     r3,         r6
+5:
+    bls     6f
+    movs    r0,         #1
+    negs    r0,         r0
+6:
+    pop     {r6, pc}
+#else
     orrs    r12,    r2, r3, lsr #1
     it ne
     eorsne  r12,    r0, r1
@@ -132,19 +231,32 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2)
     cmpls   r3,         #0xff000000
     movhi   r0,         #-1
     JMP(lr)
+#endif
 END_COMPILERRT_FUNCTION(__gtsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__gesf2, __gtsf2)
 
 .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__unordsf2)
     // Return 1 for NaN values, 0 otherwise.
-    mov     r2,         r0, lsl #1
-    mov     r3,         r1, lsl #1
-    mov     r0,         #0
+    lsls    r2,         r0, #1
+    lsls    r3,         r1, #1
+    movs    r0,         #0
+#if __ARM_ARCH_ISA_THUMB == 1
+    movs    r1,         #0xff
+    lsls    r1,         #24
+    cmp     r2,         r1
+    bhi     1f
+    cmp     r3,         r1
+1:
+    bls     2f
+    movs    r0,         #1
+2:
+#else
     cmp     r2,         #0xff000000
     ite ls
     cmpls   r3,         #0xff000000
     movhi   r0,         #1
+#endif
     JMP(lr)
 END_COMPILERRT_FUNCTION(__unordsf2)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -258,4 +258,17 @@ SANITIZER_INTERFACE_ATTRIBUTE
 uptr __sanitizer_get_allocated_size(const void *p) {
   return GetMallocUsableSize(p);
 }
+
+#if !SANITIZER_SUPPORTS_WEAK_HOOKS
+// Provide default (no-op) implementation of malloc hooks.
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+void __sanitizer_malloc_hook(void *ptr, uptr size) {
+  (void)ptr;
+  (void)size;
+}
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+void __sanitizer_free_hook(void *ptr) {
+  (void)ptr;
+}
+#endif
 } // extern "C"

Modified: projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/lsan/lsan_common.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -758,5 +758,10 @@ SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_
 int __lsan_is_turned_off() {
   return 0;
 }
+
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+const char *__lsan_default_suppressions() {
+  return "";
+}
 #endif
 } // extern "C"

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -270,6 +270,8 @@ void LoadedModule::set(const char *modul
 
 void LoadedModule::clear() {
   InternalFree(full_name_);
+  base_address_ = 0;
+  max_executable_address_ = 0;
   full_name_ = nullptr;
   arch_ = kModuleArchUnknown;
   internal_memset(uuid_, 0, kModuleUUIDSize);
@@ -285,6 +287,8 @@ void LoadedModule::addAddressRange(uptr 
   void *mem = InternalAlloc(sizeof(AddressRange));
   AddressRange *r = new(mem) AddressRange(beg, end, executable);
   ranges_.push_back(r);
+  if (executable && end > max_executable_address_)
+    max_executable_address_ = end;
 }
 
 bool LoadedModule::containsAddress(uptr address) const {

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -283,6 +283,7 @@ void UpdateProcessName();
 void CacheBinaryName();
 void DisableCoreDumperIfNecessary();
 void DumpProcessMap();
+void PrintModuleMap();
 bool FileExists(const char *filename);
 const char *GetEnv(const char *name);
 bool SetEnv(const char *name, const char *value);
@@ -665,6 +666,32 @@ enum ModuleArch {
   kModuleArchARM64
 };
 
+// When adding a new architecture, don't forget to also update
+// script/asan_symbolize.py and sanitizer_symbolizer_libcdep.cc.
+inline const char *ModuleArchToString(ModuleArch arch) {
+  switch (arch) {
+    case kModuleArchUnknown:
+      return "";
+    case kModuleArchI386:
+      return "i386";
+    case kModuleArchX86_64:
+      return "x86_64";
+    case kModuleArchX86_64H:
+      return "x86_64h";
+    case kModuleArchARMV6:
+      return "armv6";
+    case kModuleArchARMV7:
+      return "armv7";
+    case kModuleArchARMV7S:
+      return "armv7s";
+    case kModuleArchARMV7K:
+      return "armv7k";
+    case kModuleArchARM64:
+      return "arm64";
+  }
+  CHECK(0 && "Invalid module arch");
+}
+
 const uptr kModuleUUIDSize = 16;
 
 // Represents a binary loaded into virtual memory (e.g. this can be an
@@ -674,6 +701,7 @@ class LoadedModule {
   LoadedModule()
       : full_name_(nullptr),
         base_address_(0),
+        max_executable_address_(0),
         arch_(kModuleArchUnknown),
         instrumented_(false) {
     internal_memset(uuid_, 0, kModuleUUIDSize);
@@ -688,6 +716,7 @@ class LoadedModule {
 
   const char *full_name() const { return full_name_; }
   uptr base_address() const { return base_address_; }
+  uptr max_executable_address() const { return max_executable_address_; }
   ModuleArch arch() const { return arch_; }
   const u8 *uuid() const { return uuid_; }
   bool instrumented() const { return instrumented_; }
@@ -707,6 +736,7 @@ class LoadedModule {
  private:
   char *full_name_;  // Owned.
   uptr base_address_;
+  uptr max_executable_address_;
   ModuleArch arch_;
   u8 uuid_[kModuleUUIDSize];
   bool instrumented_;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -74,6 +74,9 @@ COMMON_FLAG(bool, allocator_may_return_n
 COMMON_FLAG(bool, print_summary, true,
             "If false, disable printing error summaries in addition to error "
             "reports.")
+COMMON_FLAG(int, print_module_map, 0,
+            "OS X only. 0 = don't print, 1 = print only once before process "
+            "exits, 2 = print after each report.")
 COMMON_FLAG(bool, check_printf, true, "Check printf arguments.")
 COMMON_FLAG(bool, handle_segv, true,
             "If set, registers the tool's custom SIGSEGV/SIGBUS handler.")

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -32,7 +32,7 @@
 # define SANITIZER_WEAK_ATTRIBUTE  __attribute__((weak))
 #endif
 
-#if (SANITIZER_LINUX || SANITIZER_WINDOWS) && !SANITIZER_GO
+#if (SANITIZER_LINUX || SANITIZER_MAC || SANITIZER_WINDOWS) && !SANITIZER_GO
 # define SANITIZER_SUPPORTS_WEAK_HOOKS 1
 #else
 # define SANITIZER_SUPPORTS_WEAK_HOOKS 0

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -1393,6 +1393,8 @@ void MaybeReexec() {
   // No need to re-exec on Linux.
 }
 
+void PrintModuleMap() { }
+
 uptr FindAvailableMemoryRange(uptr size, uptr alignment, uptr left_padding) {
   UNREACHABLE("FindAvailableMemoryRange is not available");
   return 0;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -26,10 +26,7 @@
 #include "sanitizer_procmaps.h"
 #include "sanitizer_stacktrace.h"
 
-#if SANITIZER_ANDROID || SANITIZER_FREEBSD
 #include <dlfcn.h>  // for dlsym()
-#endif
-
 #include <link.h>
 #include <pthread.h>
 #include <signal.h>

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -854,6 +854,36 @@ void SignalContext::DumpAllRegisters(voi
 # undef DUMPREG
 }
 
+static inline bool CompareBaseAddress(const LoadedModule &a,
+                                      const LoadedModule &b) {
+  return a.base_address() < b.base_address();
+}
+
+void FormatUUID(char *out, uptr size, const u8 *uuid) {
+  internal_snprintf(out, size,
+                    "<%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-"
+                    "%02X%02X%02X%02X%02X%02X>",
+                    uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5],
+                    uuid[6], uuid[7], uuid[8], uuid[9], uuid[10], uuid[11],
+                    uuid[12], uuid[13], uuid[14], uuid[15]);
+}
+
+void PrintModuleMap() {
+  Printf("Process module map:\n");
+  MemoryMappingLayout memory_mapping(false);
+  InternalMmapVector<LoadedModule> modules(/*initial_capacity*/ 128);
+  memory_mapping.DumpListOfModules(&modules);
+  InternalSort(&modules, modules.size(), CompareBaseAddress);
+  for (uptr i = 0; i < modules.size(); ++i) {
+    char uuid_str[128];
+    FormatUUID(uuid_str, sizeof(uuid_str), modules[i].uuid());
+    Printf("0x%zx-0x%zx %s (%s) %s\n", modules[i].base_address(),
+           modules[i].max_executable_address(), modules[i].full_name(),
+           ModuleArchToString(modules[i].arch()), uuid_str);
+  }
+  Printf("End of module map.\n");
+}
+
 }  // namespace __sanitizer
 
 #endif  // SANITIZER_MAC

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_printf.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -43,7 +43,7 @@ static int AppendChar(char **buff, const
 // on the value of |pad_with_zero|.
 static int AppendNumber(char **buff, const char *buff_end, u64 absolute_value,
                         u8 base, u8 minimal_num_length, bool pad_with_zero,
-                        bool negative) {
+                        bool negative, bool uppercase) {
   uptr const kMaxLen = 30;
   RAW_CHECK(base == 10 || base == 16);
   RAW_CHECK(base == 10 || !negative);
@@ -76,23 +76,25 @@ static int AppendNumber(char **buff, con
   if (negative && !pad_with_zero) result += AppendChar(buff, buff_end, '-');
   for (; pos >= 0; pos--) {
     char digit = static_cast<char>(num_buffer[pos]);
-    result += AppendChar(buff, buff_end, (digit < 10) ? '0' + digit
-                                                      : 'a' + digit - 10);
+    digit = (digit < 10) ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10;
+    result += AppendChar(buff, buff_end, digit);
   }
   return result;
 }
 
 static int AppendUnsigned(char **buff, const char *buff_end, u64 num, u8 base,
-                          u8 minimal_num_length, bool pad_with_zero) {
+                          u8 minimal_num_length, bool pad_with_zero,
+                          bool uppercase) {
   return AppendNumber(buff, buff_end, num, base, minimal_num_length,
-                      pad_with_zero, false /* negative */);
+                      pad_with_zero, false /* negative */, uppercase);
 }
 
 static int AppendSignedDecimal(char **buff, const char *buff_end, s64 num,
                                u8 minimal_num_length, bool pad_with_zero) {
   bool negative = (num < 0);
   return AppendNumber(buff, buff_end, (u64)(negative ? -num : num), 10,
-                      minimal_num_length, pad_with_zero, negative);
+                      minimal_num_length, pad_with_zero, negative,
+                      false /* uppercase */);
 }
 
 static int AppendString(char **buff, const char *buff_end, int precision,
@@ -112,14 +114,16 @@ static int AppendPointer(char **buff, co
   int result = 0;
   result += AppendString(buff, buff_end, -1, "0x");
   result += AppendUnsigned(buff, buff_end, ptr_value, 16,
-                           SANITIZER_POINTER_FORMAT_LENGTH, true);
+                           SANITIZER_POINTER_FORMAT_LENGTH,
+                           true /* pad_with_zero */, false /* uppercase */);
   return result;
 }
 
 int VSNPrintf(char *buff, int buff_length,
               const char *format, va_list args) {
   static const char *kPrintfFormatsHelp =
-    "Supported Printf formats: %([0-9]*)?(z|ll)?{d,u,x}; %p; %(\\.\\*)?s; %c\n";
+      "Supported Printf formats: %([0-9]*)?(z|ll)?{d,u,x,X}; %p; %(\\.\\*)?s; "
+      "%c\n";
   RAW_CHECK(format);
   RAW_CHECK(buff_length > 0);
   const char *buff_end = &buff[buff_length - 1];
@@ -164,12 +168,14 @@ int VSNPrintf(char *buff, int buff_lengt
         break;
       }
       case 'u':
-      case 'x': {
+      case 'x':
+      case 'X': {
         uval = have_ll ? va_arg(args, u64)
              : have_z ? va_arg(args, uptr)
              : va_arg(args, unsigned);
-        result += AppendUnsigned(&buff, buff_end, uval,
-                                 (*cur == 'u') ? 10 : 16, width, pad_with_zero);
+        bool uppercase = (*cur == 'X');
+        result += AppendUnsigned(&buff, buff_end, uval, (*cur == 'u') ? 10 : 16,
+                                 width, pad_with_zero, uppercase);
         break;
       }
       case 'p': {

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -93,7 +93,7 @@ void RenderFrame(InternalScopedString *b
                              vs_style, strip_path_prefix);
       } else if (info.module) {
         RenderModuleLocation(buffer, info.module, info.module_offset,
-                             strip_path_prefix);
+                             info.module_arch, strip_path_prefix);
       } else {
         buffer->append("(<unknown module>)");
       }
@@ -103,8 +103,9 @@ void RenderFrame(InternalScopedString *b
       if (info.address & kExternalPCBit)
         {} // There PCs are not meaningful.
       else if (info.module)
-        buffer->append("(%s+%p)", StripModuleName(info.module),
-                       (void *)info.module_offset);
+        // Always strip the module name for %M.
+        RenderModuleLocation(buffer, StripModuleName(info.module),
+                             info.module_offset, info.module_arch, "");
       else
         buffer->append("(%p)", (void *)info.address);
       break;
@@ -165,9 +166,13 @@ void RenderSourceLocation(InternalScoped
 }
 
 void RenderModuleLocation(InternalScopedString *buffer, const char *module,
-                          uptr offset, const char *strip_path_prefix) {
-  buffer->append("(%s+0x%zx)", StripPathPrefix(module, strip_path_prefix),
-                 offset);
+                          uptr offset, ModuleArch arch,
+                          const char *strip_path_prefix) {
+  buffer->append("(%s", StripPathPrefix(module, strip_path_prefix));
+  if (arch != kModuleArchUnknown) {
+    buffer->append(":%s", ModuleArchToString(arch));
+  }
+  buffer->append("+0x%zx)", offset);
 }
 
 } // namespace __sanitizer

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -57,7 +57,8 @@ void RenderSourceLocation(InternalScoped
                           const char *strip_path_prefix);
 
 void RenderModuleLocation(InternalScopedString *buffer, const char *module,
-                          uptr offset, const char *strip_path_prefix);
+                          uptr offset, ModuleArch arch,
+                          const char *strip_path_prefix);
 
 // Same as RenderFrame, but for data section (global variables).
 // Accepts %s, %l from above.

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -33,9 +33,11 @@ void AddressInfo::Clear() {
   function_offset = kUnknown;
 }
 
-void AddressInfo::FillModuleInfo(const char *mod_name, uptr mod_offset) {
+void AddressInfo::FillModuleInfo(const char *mod_name, uptr mod_offset,
+                                 ModuleArch mod_arch) {
   module = internal_strdup(mod_name);
   module_offset = mod_offset;
+  module_arch = mod_arch;
 }
 
 SymbolizedStack::SymbolizedStack() : next(nullptr), info() {}

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -31,6 +31,7 @@ struct AddressInfo {
 
   char *module;
   uptr module_offset;
+  ModuleArch module_arch;
 
   static const uptr kUnknown = ~(uptr)0;
   char *function;
@@ -43,7 +44,7 @@ struct AddressInfo {
   AddressInfo();
   // Deletes all strings and resets all fields.
   void Clear();
-  void FillModuleInfo(const char *mod_name, uptr mod_offset);
+  void FillModuleInfo(const char *mod_name, uptr mod_offset, ModuleArch arch);
 };
 
 // Linked list of symbolized frames (each frame is described by AddressInfo).
@@ -65,6 +66,8 @@ struct DataInfo {
   // (de)allocated using sanitizer internal allocator.
   char *module;
   uptr module_offset;
+  ModuleArch module_arch;
+
   char *file;
   uptr line;
   char *name;
@@ -143,7 +146,8 @@ class Symbolizer final {
   static Symbolizer *PlatformInit();
 
   bool FindModuleNameAndOffsetForAddress(uptr address, const char **module_name,
-                                         uptr *module_offset);
+                                         uptr *module_offset,
+                                         ModuleArch *module_arch);
   ListOfModules modules_;
   // If stale, need to reload the modules before looking up addresses.
   bool modules_fresh_;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_internal.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -124,8 +124,8 @@ class LLVMSymbolizer : public Symbolizer
   bool SymbolizeData(uptr addr, DataInfo *info) override;
 
  private:
-  const char *SendCommand(bool is_data, const char *module_name,
-                          uptr module_offset);
+  const char *FormatAndSendCommand(bool is_data, const char *module_name,
+                                   uptr module_offset, ModuleArch arch);
 
   LLVMSymbolizerProcess *symbolizer_process_;
   static const uptr kBufferSize = 16 * 1024;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -64,11 +64,13 @@ SymbolizedStack *Symbolizer::SymbolizePC
   BlockingMutexLock l(&mu_);
   const char *module_name;
   uptr module_offset;
+  ModuleArch arch;
   SymbolizedStack *res = SymbolizedStack::New(addr);
-  if (!FindModuleNameAndOffsetForAddress(addr, &module_name, &module_offset))
+  if (!FindModuleNameAndOffsetForAddress(addr, &module_name, &module_offset,
+                                         &arch))
     return res;
   // Always fill data about module name and offset.
-  res->info.FillModuleInfo(module_name, module_offset);
+  res->info.FillModuleInfo(module_name, module_offset, arch);
   for (auto &tool : tools_) {
     SymbolizerScope sym_scope(this);
     if (tool.SymbolizePC(addr, res)) {
@@ -82,11 +84,14 @@ bool Symbolizer::SymbolizeData(uptr addr
   BlockingMutexLock l(&mu_);
   const char *module_name;
   uptr module_offset;
-  if (!FindModuleNameAndOffsetForAddress(addr, &module_name, &module_offset))
+  ModuleArch arch;
+  if (!FindModuleNameAndOffsetForAddress(addr, &module_name, &module_offset,
+                                         &arch))
     return false;
   info->Clear();
   info->module = internal_strdup(module_name);
   info->module_offset = module_offset;
+  info->module_arch = arch;
   for (auto &tool : tools_) {
     SymbolizerScope sym_scope(this);
     if (tool.SymbolizeData(addr, info)) {
@@ -100,8 +105,9 @@ bool Symbolizer::GetModuleNameAndOffsetF
                                              uptr *module_address) {
   BlockingMutexLock l(&mu_);
   const char *internal_module_name = nullptr;
+  ModuleArch arch;
   if (!FindModuleNameAndOffsetForAddress(pc, &internal_module_name,
-                                         module_address))
+                                         module_address, &arch))
     return false;
 
   if (module_name)
@@ -134,12 +140,14 @@ void Symbolizer::PrepareForSandboxing() 
 
 bool Symbolizer::FindModuleNameAndOffsetForAddress(uptr address,
                                                    const char **module_name,
-                                                   uptr *module_offset) {
+                                                   uptr *module_offset,
+                                                   ModuleArch *module_arch) {
   const LoadedModule *module = FindModuleForAddress(address);
   if (module == nullptr)
     return false;
   *module_name = module->full_name();
   *module_offset = address - module->base_address();
+  *module_arch = module->arch();
   return true;
 }
 
@@ -197,6 +205,8 @@ class LLVMSymbolizerProcess : public Sym
            buffer[length - 2] == '\n';
   }
 
+  // When adding a new architecture, don't forget to also update
+  // script/asan_symbolize.py and sanitizer_common.h.
   void GetArgV(const char *path_to_binary,
                const char *(&argv)[kArgVMax]) const override {
 #if defined(__x86_64h__)
@@ -284,7 +294,8 @@ void ParseSymbolizePCOutput(const char *
       top_frame = false;
     } else {
       cur = SymbolizedStack::New(res->info.address);
-      cur->info.FillModuleInfo(res->info.module, res->info.module_offset);
+      cur->info.FillModuleInfo(res->info.module, res->info.module_offset,
+                               res->info.module_arch);
       last->next = cur;
       last = cur;
     }
@@ -317,8 +328,10 @@ void ParseSymbolizeDataOutput(const char
 }
 
 bool LLVMSymbolizer::SymbolizePC(uptr addr, SymbolizedStack *stack) {
-  if (const char *buf = SendCommand(/*is_data*/ false, stack->info.module,
-                                    stack->info.module_offset)) {
+  AddressInfo *info = &stack->info;
+  const char *buf = FormatAndSendCommand(
+      /*is_data*/ false, info->module, info->module_offset, info->module_arch);
+  if (buf) {
     ParseSymbolizePCOutput(buf, stack);
     return true;
   }
@@ -326,8 +339,9 @@ bool LLVMSymbolizer::SymbolizePC(uptr ad
 }
 
 bool LLVMSymbolizer::SymbolizeData(uptr addr, DataInfo *info) {
-  if (const char *buf =
-          SendCommand(/*is_data*/ true, info->module, info->module_offset)) {
+  const char *buf = FormatAndSendCommand(
+      /*is_data*/ true, info->module, info->module_offset, info->module_arch);
+  if (buf) {
     ParseSymbolizeDataOutput(buf, info);
     info->start += (addr - info->module_offset); // Add the base address.
     return true;
@@ -335,11 +349,19 @@ bool LLVMSymbolizer::SymbolizeData(uptr 
   return false;
 }
 
-const char *LLVMSymbolizer::SendCommand(bool is_data, const char *module_name,
-                                        uptr module_offset) {
+const char *LLVMSymbolizer::FormatAndSendCommand(bool is_data,
+                                                 const char *module_name,
+                                                 uptr module_offset,
+                                                 ModuleArch arch) {
   CHECK(module_name);
-  internal_snprintf(buffer_, kBufferSize, "%s\"%s\" 0x%zx\n",
-                    is_data ? "DATA " : "", module_name, module_offset);
+  const char *is_data_str = is_data ? "DATA " : "";
+  if (arch == kModuleArchUnknown) {
+    internal_snprintf(buffer_, kBufferSize, "%s\"%s\" 0x%zx\n", is_data_str,
+                      module_name, module_offset);
+  } else {
+    internal_snprintf(buffer_, kBufferSize, "%s\"%s:%s\" 0x%zx\n", is_data_str,
+                      module_name, ModuleArchToString(arch), module_offset);
+  }
   return symbolizer_process_->SendCommand(buffer_);
 }
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -388,6 +388,8 @@ void DumpProcessMap() {
 }
 #endif
 
+void PrintModuleMap() { }
+
 void DisableCoreDumperIfNecessary() {
   // Do nothing.
 }

Copied: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/weak_symbols.txt (from r311835, vendor/compiler-rt/dist/lib/sanitizer_common/weak_symbols.txt)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/weak_symbols.txt	Mon Jan  9 22:49:35 2017	(r311836, copy of r311835, vendor/compiler-rt/dist/lib/sanitizer_common/weak_symbols.txt)
@@ -0,0 +1,6 @@
+___sanitizer_free_hook
+___sanitizer_malloc_hook
+___sanitizer_symbolize_code
+___sanitizer_symbolize_data
+___sanitizer_symbolize_demangle
+___sanitizer_symbolize_flush

Modified: projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan.syms.extra
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan.syms.extra	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan.syms.extra	Mon Jan  9 22:49:35 2017	(r311836)
@@ -1,4 +1,5 @@
 __tsan_init
+__tsan_flush_memory
 __tsan_read*
 __tsan_write*
 __tsan_vptr*

Modified: projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -28,6 +28,10 @@ void __tsan_init() {
   Initialize(cur_thread());
 }
 
+void __tsan_flush_memory() {
+  FlushShadowMemory();
+}
+
 void __tsan_read16(void *addr) {
   MemoryRead(cur_thread(), CALLERPC, (uptr)addr, kSizeLog8);
   MemoryRead(cur_thread(), CALLERPC, (uptr)addr + 8, kSizeLog8);

Modified: projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h	Mon Jan  9 22:49:35 2017	(r311836)
@@ -32,6 +32,8 @@ extern "C" {
 // before any instrumented code is executed and before any call to malloc.
 SANITIZER_INTERFACE_ATTRIBUTE void __tsan_init();
 
+SANITIZER_INTERFACE_ATTRIBUTE void __tsan_flush_memory();
+
 SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read1(void *addr);
 SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read2(void *addr);
 SANITIZER_INTERFACE_ATTRIBUTE void __tsan_read4(void *addr);

Modified: projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -358,6 +358,8 @@ void PrintReport(const ReportDesc *rep) 
       ReportErrorSummary(rep_typ_str, frame->info);
   }
 
+  if (common_flags()->print_module_map == 2) PrintModuleMap();
+
   Printf("==================\n");
 }
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -404,6 +404,8 @@ void Initialize(ThreadState *thr) {
 int Finalize(ThreadState *thr) {
   bool failed = false;
 
+  if (common_flags()->print_module_map == 1) PrintModuleMap();
+
   if (flags()->atexit_sleep_ms > 0 && ThreadCount(thr) > 1)
     SleepForMillis(flags()->atexit_sleep_ms);
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc	Mon Jan  9 22:46:47 2017	(r311835)
+++ projects/clang400-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc	Mon Jan  9 22:49:35 2017	(r311836)
@@ -157,7 +157,7 @@ static void RenderLocation(InternalScope
                            common_flags()->strip_path_prefix);
     else if (Info.module)
       RenderModuleLocation(Buffer, Info.module, Info.module_offset,
-                           common_flags()->strip_path_prefix);
+                           Info.module_arch, common_flags()->strip_path_prefix);
     else
       Buffer->append("%p", Info.address);
     return;

Copied: projects/clang400-import/contrib/compiler-rt/lib/ubsan/weak_symbols.txt (from r311835, vendor/compiler-rt/dist/lib/ubsan/weak_symbols.txt)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/compiler-rt/lib/ubsan/weak_symbols.txt	Mon Jan  9 22:49:35 2017	(r311836, copy of r311835, vendor/compiler-rt/dist/lib/ubsan/weak_symbols.txt)
@@ -0,0 +1 @@
+___ubsan_default_options

From owner-svn-src-projects@freebsd.org  Tue Jan 10 10:09:13 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 DAC4ACA8D62
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue, 10 Jan 2017 10:09:13 +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 A96C91978;
 Tue, 10 Jan 2017 10:09:13 +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 v0AA9Cqp008124;
 Tue, 10 Jan 2017 10:09:12 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0AA9C3M008123;
 Tue, 10 Jan 2017 10:09:12 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701101009.v0AA9C3M008123@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Tue, 10 Jan 2017 10:09:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311869 -
 projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Jan 2017 10:09:14 -0000

Author: ngie
Date: Tue Jan 10 10:09:12 2017
New Revision: 311869
URL: https://svnweb.freebsd.org/changeset/base/311869

Log:
  Merge the grammar fix for lib/libc/gen/raise_test:raise_stress
  
  MFC after:	3 days

Modified:
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_raise.c
Directory Properties:
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/   (props changed)

Modified: projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_raise.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_raise.c	Tue Jan 10 10:06:15 2017	(r311868)
+++ projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_raise.c	Tue Jan 10 10:09:12 2017	(r311869)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_raise.c,v 1.5 2011/05/10 12:43:42 jruoho Exp $ */
+/*	$NetBSD: t_raise.c,v 1.6 2016/11/03 22:08:31 kamil Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: t_raise.c,v 1.5 2011/05/10 12:43:42 jruoho Exp $");
+__RCSID("$NetBSD: t_raise.c,v 1.6 2016/11/03 22:08:31 kamil Exp $");
 
 #include <atf-c.h>
 
@@ -180,7 +180,7 @@ ATF_TC_BODY(raise_stress, tc)
 		(void)raise(SIGUSR1);
 
 	if (count != maxiter)
-		atf_tc_fail("not all signals were catched");
+		atf_tc_fail("not all signals were caught");
 }
 
 ATF_TP_ADD_TCS(tp)

From owner-svn-src-projects@freebsd.org  Tue Jan 10 22:13:45 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 8CA4ACAA73F
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue, 10 Jan 2017 22:13:45 +0000 (UTC) (envelope-from dim@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 69CDE1DD7;
 Tue, 10 Jan 2017 22:13:45 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0AMDiw9011266;
 Tue, 10 Jan 2017 22:13:44 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0AMDiII011261;
 Tue, 10 Jan 2017 22:13:44 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701102213.v0AMDiII011261@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Tue, 10 Jan 2017 22:13:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311905 - in projects/clang400-import/lib/libclang_rt:
 asan asan_dynamic safestack stats ubsan_standalone
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 10 Jan 2017 22:13:45 -0000

Author: dim
Date: Tue Jan 10 22:13:44 2017
New Revision: 311905
URL: https://svnweb.freebsd.org/changeset/base/311905

Log:
  Update various libclang_rt Makefiles.

Modified:
  projects/clang400-import/lib/libclang_rt/asan/Makefile
  projects/clang400-import/lib/libclang_rt/asan_dynamic/Makefile
  projects/clang400-import/lib/libclang_rt/safestack/Makefile
  projects/clang400-import/lib/libclang_rt/stats/Makefile
  projects/clang400-import/lib/libclang_rt/ubsan_standalone/Makefile

Modified: projects/clang400-import/lib/libclang_rt/asan/Makefile
==============================================================================
--- projects/clang400-import/lib/libclang_rt/asan/Makefile	Tue Jan 10 22:01:37 2017	(r311904)
+++ projects/clang400-import/lib/libclang_rt/asan/Makefile	Tue Jan 10 22:13:44 2017	(r311905)
@@ -7,6 +7,8 @@ LIB=		clang_rt.asan-${CRTARCH}
 SRCS+=		asan/asan_activation.cc
 SRCS+=		asan/asan_allocator.cc
 SRCS+=		asan/asan_debugging.cc
+SRCS+=		asan/asan_descriptions.cc
+SRCS+=		asan/asan_errors.cc
 SRCS+=		asan/asan_fake_stack.cc
 SRCS+=		asan/asan_flags.cc
 SRCS+=		asan/asan_globals.cc
@@ -14,8 +16,6 @@ SRCS+=		asan/asan_interceptors.cc
 SRCS+=		asan/asan_linux.cc
 SRCS+=		asan/asan_mac.cc
 SRCS+=		asan/asan_malloc_linux.cc
-SRCS+=		asan/asan_malloc_mac.cc
-SRCS+=		asan/asan_malloc_win.cc
 SRCS+=		asan/asan_memory_profile.cc
 SRCS+=		asan/asan_poisoning.cc
 SRCS+=		asan/asan_posix.cc
@@ -33,10 +33,12 @@ SRCS+=		interception/interception_type_t
 SRCS+=		interception/interception_win.cc
 SRCS+=		lsan/lsan_common.cc
 SRCS+=		lsan/lsan_common_linux.cc
+SRCS+=		sanitizer_common/sancov_flags.cc
 SRCS+=		sanitizer_common/sanitizer_allocator.cc
 SRCS+=		sanitizer_common/sanitizer_common.cc
 SRCS+=		sanitizer_common/sanitizer_common_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_libcdep.cc
+SRCS+=		sanitizer_common/sanitizer_coverage_libcdep_new.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector1.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector2.cc

Modified: projects/clang400-import/lib/libclang_rt/asan_dynamic/Makefile
==============================================================================
--- projects/clang400-import/lib/libclang_rt/asan_dynamic/Makefile	Tue Jan 10 22:01:37 2017	(r311904)
+++ projects/clang400-import/lib/libclang_rt/asan_dynamic/Makefile	Tue Jan 10 22:13:44 2017	(r311905)
@@ -8,6 +8,8 @@ SHLIB_NAME=	libclang_rt.asan-${CRTARCH}.
 SRCS+=		asan/asan_activation.cc
 SRCS+=		asan/asan_allocator.cc
 SRCS+=		asan/asan_debugging.cc
+SRCS+=		asan/asan_descriptions.cc
+SRCS+=		asan/asan_errors.cc
 SRCS+=		asan/asan_fake_stack.cc
 SRCS+=		asan/asan_flags.cc
 SRCS+=		asan/asan_globals.cc
@@ -15,8 +17,6 @@ SRCS+=		asan/asan_interceptors.cc
 SRCS+=		asan/asan_linux.cc
 SRCS+=		asan/asan_mac.cc
 SRCS+=		asan/asan_malloc_linux.cc
-SRCS+=		asan/asan_malloc_mac.cc
-SRCS+=		asan/asan_malloc_win.cc
 SRCS+=		asan/asan_memory_profile.cc
 SRCS+=		asan/asan_new_delete.cc
 SRCS+=		asan/asan_poisoning.cc
@@ -34,10 +34,12 @@ SRCS+=		interception/interception_type_t
 SRCS+=		interception/interception_win.cc
 SRCS+=		lsan/lsan_common.cc
 SRCS+=		lsan/lsan_common_linux.cc
+SRCS+=		sanitizer_common/sancov_flags.cc
 SRCS+=		sanitizer_common/sanitizer_allocator.cc
 SRCS+=		sanitizer_common/sanitizer_common.cc
 SRCS+=		sanitizer_common/sanitizer_common_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_libcdep.cc
+SRCS+=		sanitizer_common/sanitizer_coverage_libcdep_new.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector1.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector2.cc

Modified: projects/clang400-import/lib/libclang_rt/safestack/Makefile
==============================================================================
--- projects/clang400-import/lib/libclang_rt/safestack/Makefile	Tue Jan 10 22:01:37 2017	(r311904)
+++ projects/clang400-import/lib/libclang_rt/safestack/Makefile	Tue Jan 10 22:13:44 2017	(r311905)
@@ -19,7 +19,6 @@ SRCS+=		sanitizer_common/sanitizer_flags
 SRCS+=		sanitizer_common/sanitizer_libc.cc
 SRCS+=		sanitizer_common/sanitizer_libignore.cc
 SRCS+=		sanitizer_common/sanitizer_linux.cc
-SRCS+=		sanitizer_common/sanitizer_linux_s390.cc
 SRCS+=		sanitizer_common/sanitizer_linux_x86_64.S
 SRCS+=		sanitizer_common/sanitizer_mac.cc
 SRCS+=		sanitizer_common/sanitizer_persistent_allocator.cc

Modified: projects/clang400-import/lib/libclang_rt/stats/Makefile
==============================================================================
--- projects/clang400-import/lib/libclang_rt/stats/Makefile	Tue Jan 10 22:01:37 2017	(r311904)
+++ projects/clang400-import/lib/libclang_rt/stats/Makefile	Tue Jan 10 22:13:44 2017	(r311905)
@@ -4,10 +4,12 @@
 
 LIB=		clang_rt.stats-${CRTARCH}
 
+SRCS+=		sanitizer_common/sancov_flags.cc
 SRCS+=		sanitizer_common/sanitizer_allocator.cc
 SRCS+=		sanitizer_common/sanitizer_common.cc
 SRCS+=		sanitizer_common/sanitizer_common_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_libcdep.cc
+SRCS+=		sanitizer_common/sanitizer_coverage_libcdep_new.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector1.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector2.cc
@@ -17,7 +19,6 @@ SRCS+=		sanitizer_common/sanitizer_libc.
 SRCS+=		sanitizer_common/sanitizer_libignore.cc
 SRCS+=		sanitizer_common/sanitizer_linux.cc
 SRCS+=		sanitizer_common/sanitizer_linux_libcdep.cc
-SRCS+=		sanitizer_common/sanitizer_linux_s390.cc
 SRCS+=		sanitizer_common/sanitizer_linux_x86_64.S
 SRCS+=		sanitizer_common/sanitizer_mac.cc
 SRCS+=		sanitizer_common/sanitizer_persistent_allocator.cc

Modified: projects/clang400-import/lib/libclang_rt/ubsan_standalone/Makefile
==============================================================================
--- projects/clang400-import/lib/libclang_rt/ubsan_standalone/Makefile	Tue Jan 10 22:01:37 2017	(r311904)
+++ projects/clang400-import/lib/libclang_rt/ubsan_standalone/Makefile	Tue Jan 10 22:13:44 2017	(r311905)
@@ -4,10 +4,12 @@
 
 LIB=		clang_rt.ubsan_standalone-${CRTARCH}
 
+SRCS+=		sanitizer_common/sancov_flags.cc
 SRCS+=		sanitizer_common/sanitizer_allocator.cc
 SRCS+=		sanitizer_common/sanitizer_common.cc
 SRCS+=		sanitizer_common/sanitizer_common_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_libcdep.cc
+SRCS+=		sanitizer_common/sanitizer_coverage_libcdep_new.cc
 SRCS+=		sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector1.cc
 SRCS+=		sanitizer_common/sanitizer_deadlock_detector2.cc
@@ -17,7 +19,6 @@ SRCS+=		sanitizer_common/sanitizer_libc.
 SRCS+=		sanitizer_common/sanitizer_libignore.cc
 SRCS+=		sanitizer_common/sanitizer_linux.cc
 SRCS+=		sanitizer_common/sanitizer_linux_libcdep.cc
-SRCS+=		sanitizer_common/sanitizer_linux_s390.cc
 SRCS+=		sanitizer_common/sanitizer_linux_x86_64.S
 SRCS+=		sanitizer_common/sanitizer_mac.cc
 SRCS+=		sanitizer_common/sanitizer_persistent_allocator.cc

From owner-svn-src-projects@freebsd.org  Wed Jan 11 21:05:18 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 9CFAECAA1FB
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Wed, 11 Jan 2017 21:05:18 +0000 (UTC) (envelope-from dim@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 413971A87;
 Wed, 11 Jan 2017 21:05:18 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0BL5HKD072217;
 Wed, 11 Jan 2017 21:05:17 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0BL5ExS072184;
 Wed, 11 Jan 2017 21:05:14 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701112105.v0BL5ExS072184@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Wed, 11 Jan 2017 21:05:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311940 - in projects/clang400-import: .
 contrib/libarchive/libarchive contrib/libarchive/libarchive/test
 contrib/netbsd-tests/lib/libc contrib/netbsd-tests/lib/libc/c063
 contrib/netbsd...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Jan 2017 21:05:18 -0000

Author: dim
Date: Wed Jan 11 21:05:13 2017
New Revision: 311940
URL: https://svnweb.freebsd.org/changeset/base/311940

Log:
  Merge ^/head r311812 through r311939.

Added:
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c
     - copied unchanged from r311939, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.tar.uu
     - copied unchanged from r311939, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.tar.uu
  projects/clang400-import/sys/dev/e1000/em_txrx.c
     - copied unchanged from r311939, head/sys/dev/e1000/em_txrx.c
  projects/clang400-import/sys/dev/e1000/igb_txrx.c
     - copied unchanged from r311939, head/sys/dev/e1000/igb_txrx.c
  projects/clang400-import/sys/dev/sdhci/sdhci_acpi.c
     - copied unchanged from r311939, head/sys/dev/sdhci/sdhci_acpi.c
  projects/clang400-import/sys/modules/sdhci_acpi/
     - copied from r311939, head/sys/modules/sdhci_acpi/
  projects/clang400-import/tests/sys/geom/class/gate/ggate_test.sh
     - copied unchanged from r311939, head/tests/sys/geom/class/gate/ggate_test.sh
  projects/clang400-import/usr.bin/tail/tests/
     - copied from r311939, head/usr.bin/tail/tests/
Deleted:
  projects/clang400-import/sys/dev/e1000/if_igb.c
  projects/clang400-import/sys/dev/e1000/if_igb.h
  projects/clang400-import/sys/dev/e1000/if_lem.c
  projects/clang400-import/sys/dev/e1000/if_lem.h
  projects/clang400-import/sys/modules/igb/
  projects/clang400-import/tests/sys/geom/class/gate/1_test.sh
  projects/clang400-import/tests/sys/geom/class/gate/2_test.sh
  projects/clang400-import/tests/sys/geom/class/gate/3_test.sh
  projects/clang400-import/tests/sys/geom/class/gate/conf.sh
Modified:
  projects/clang400-import/ObsoleteFiles.inc
  projects/clang400-import/UPDATING
  projects/clang400-import/contrib/libarchive/libarchive/archive_acl.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_posix.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_lha.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_rar.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_warc.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_zip.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_string.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_string.h
  projects/clang400-import/contrib/libarchive/libarchive/archive_string_composition.h
  projects/clang400-import/contrib/libarchive/libarchive/archive_write.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_add_filter_xz.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_disk_acl.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_pax.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_xar.c
  projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_zip.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_compat_uudecode.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c
  projects/clang400-import/contrib/libarchive/libarchive/test/test_sparse_basic.c
  projects/clang400-import/contrib/libarchive/libarchive/xxhash.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_fchownat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_fexecve.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_fstatat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_mknodat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_o_search.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_openat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_readlinkat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_unlinkat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/posix_spawn/t_fileactions.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_assert.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_dir.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_ftok.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_raise.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_setdomainname.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_sethostname.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_sleep.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_time.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_vis.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/regex/debug.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/stdio/t_printf.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/string/t_strchr.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/string/t_strerror.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_access.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_chroot.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_mincore.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_mmap.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_unlink.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_wait.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/t_cdb.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/ttyio/t_ttyio.c
  projects/clang400-import/crypto/openssh/serverloop.c
  projects/clang400-import/crypto/openssh/ssh-agent.1
  projects/clang400-import/crypto/openssh/ssh-agent.c
  projects/clang400-import/crypto/openssh/ssh_config
  projects/clang400-import/crypto/openssh/ssh_config.5
  projects/clang400-import/crypto/openssh/sshd_config
  projects/clang400-import/crypto/openssh/sshd_config.5
  projects/clang400-import/crypto/openssh/version.h
  projects/clang400-import/etc/mtree/BSD.tests.dist
  projects/clang400-import/etc/rc.d/ntpdate
  projects/clang400-import/lib/libarchive/tests/Makefile
  projects/clang400-import/libexec/rtld-elf/rtld_lock.c
  projects/clang400-import/sbin/camcontrol/modeedit.c
  projects/clang400-import/share/misc/committers-ports.dot
  projects/clang400-import/sys/amd64/amd64/pmap.c
  projects/clang400-import/sys/amd64/conf/GENERIC
  projects/clang400-import/sys/arm64/conf/GENERIC
  projects/clang400-import/sys/boot/common/reloc_elf.c
  projects/clang400-import/sys/boot/efi/Makefile.inc
  projects/clang400-import/sys/boot/efi/boot1/boot_module.h
  projects/clang400-import/sys/boot/efi/include/efiapi.h
  projects/clang400-import/sys/boot/efi/loader/arch/arm/ldscript.arm
  projects/clang400-import/sys/boot/efi/loader/arch/arm/start.S
  projects/clang400-import/sys/cam/ctl/ctl.c
  projects/clang400-import/sys/cam/ctl/ctl_ha.c
  projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  projects/clang400-import/sys/conf/NOTES
  projects/clang400-import/sys/conf/files
  projects/clang400-import/sys/conf/files.arm64
  projects/clang400-import/sys/conf/makeLINT.mk
  projects/clang400-import/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
  projects/clang400-import/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/clang400-import/sys/contrib/dev/acpica/include/acpixf.h
  projects/clang400-import/sys/dev/ahci/ahci_generic.c
  projects/clang400-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
  projects/clang400-import/sys/dev/cxgbe/common/t4_msg.h
  projects/clang400-import/sys/dev/cxgbe/iw_cxgbe/provider.c
  projects/clang400-import/sys/dev/cxgbe/t4_main.c
  projects/clang400-import/sys/dev/cxgbe/t4_sge.c
  projects/clang400-import/sys/dev/e1000/if_em.c
  projects/clang400-import/sys/dev/e1000/if_em.h
  projects/clang400-import/sys/dev/ntb/if_ntb/if_ntb.c
  projects/clang400-import/sys/dev/rtwn/pci/rtwn_pci_attach.c
  projects/clang400-import/sys/dev/rtwn/usb/rtwn_usb_ep.c
  projects/clang400-import/sys/dev/sfxge/sfxge_tx.c
  projects/clang400-import/sys/dev/usb/controller/ehci_imx.c
  projects/clang400-import/sys/dev/usb/misc/udbp.c
  projects/clang400-import/sys/dev/usb/usbdevs
  projects/clang400-import/sys/dev/usb/wlan/if_rsu.c
  projects/clang400-import/sys/fs/cd9660/cd9660_vfsops.c
  projects/clang400-import/sys/fs/cd9660/iso.h
  projects/clang400-import/sys/fs/pseudofs/pseudofs_vncache.c
  projects/clang400-import/sys/i386/conf/GENERIC
  projects/clang400-import/sys/i386/i386/pmap.c
  projects/clang400-import/sys/kern/vfs_bio.c
  projects/clang400-import/sys/mips/conf/OCTEON1
  projects/clang400-import/sys/modules/Makefile
  projects/clang400-import/sys/modules/ahci/Makefile
  projects/clang400-import/sys/modules/em/Makefile
  projects/clang400-import/sys/net/iflib.c
  projects/clang400-import/sys/net80211/_ieee80211.h
  projects/clang400-import/sys/net80211/ieee80211.c
  projects/clang400-import/sys/net80211/ieee80211.h
  projects/clang400-import/sys/net80211/ieee80211_proto.c
  projects/clang400-import/sys/net80211/ieee80211_tdma.c
  projects/clang400-import/sys/net80211/ieee80211_vht.c
  projects/clang400-import/sys/net80211/ieee80211_vht.h
  projects/clang400-import/sys/netpfil/ipfw/ip_dummynet.c
  projects/clang400-import/sys/powerpc/conf/GENERIC64
  projects/clang400-import/sys/powerpc/include/asm.h
  projects/clang400-import/sys/sparc64/include/atomic.h
  projects/clang400-import/sys/sys/cdefs.h
  projects/clang400-import/sys/tools/embed_mfs.sh
  projects/clang400-import/tests/sys/geom/class/gate/Makefile
  projects/clang400-import/usr.bin/calendar/calendars/calendar.freebsd
  projects/clang400-import/usr.bin/tail/Makefile
  projects/clang400-import/usr.bin/tail/reverse.c
  projects/clang400-import/usr.sbin/crunch/crunchide/exec_elf32.c
  projects/clang400-import/usr.sbin/syslogd/syslogd.c
Directory Properties:
  projects/clang400-import/   (props changed)
  projects/clang400-import/contrib/libarchive/   (props changed)
  projects/clang400-import/contrib/netbsd-tests/   (props changed)
  projects/clang400-import/crypto/openssh/   (props changed)
  projects/clang400-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang400-import/sys/contrib/dev/acpica/   (props changed)

Modified: projects/clang400-import/ObsoleteFiles.inc
==============================================================================
--- projects/clang400-import/ObsoleteFiles.inc	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/ObsoleteFiles.inc	Wed Jan 11 21:05:13 2017	(r311940)
@@ -151,6 +151,11 @@ OLD_FILES+=usr/lib/clang/3.9.1/lib/freeb
 OLD_DIRS+=usr/lib/clang/3.9.1/lib/freebsd
 OLD_DIRS+=usr/lib/clang/3.9.1/lib
 OLD_DIRS+=usr/lib/clang/3.9.1
+# 20170110: Four files from ggate tests consolidated into one
+OLD_FILES+=usr/tests/sys/geom/class/gate/1_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/2_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/3_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/conf.sh
 # 20170103: libbsnmptools.so made into an INTERNALLIB
 OLD_FILES+=usr/lib/libbsnmptools.a
 OLD_FILES+=usr/lib/libbsnmptools_p.a
@@ -161,8 +166,8 @@ OLD_FILES+=usr/share/man/man3/sysdecode_
 # 20161230: libarchive ACL pax test renamed to test_acl_pax_posix1e.tar.uu
 OLD_FILES+=usr/tests/lib/libarchive/test_acl_pax.tar.uu
 # 20161229: Three files from gnop tests consolidated into one
-OLD_FILES+=usr/tests/sys/geom/class/nop/1_test.sh
-OLD_FILES+=usr/tests/sys/geom/class/nop/2_test.sh
+OLD_FILES+=usr/tests/sys/geom/class/nop/1_test
+OLD_FILES+=usr/tests/sys/geom/class/nop/2_test
 OLD_FILES+=usr/tests/sys/geom/class/nop/conf.sh
 # 20161217: new clang import which bumps version from 3.9.0 to 3.9.1.
 OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/allocator_interface.h

Modified: projects/clang400-import/UPDATING
==============================================================================
--- projects/clang400-import/UPDATING	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/UPDATING	Wed Jan 11 21:05:13 2017	(r311940)
@@ -56,6 +56,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
 	Please see the 20141231 entry below for information about prerequisites
 	and upgrading, if you are not already using clang 3.5.0 or higher.
 
+20170109:
+	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
+	IFLIB.  If you have a custom kernel configuration that excludes em(4)
+	but you use igb(4), you need to re-add em(4) to your custom configuration.
+
 20161217:
 	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
 	Please see the 20141231 entry below for information about prerequisites

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_acl.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_acl.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_acl.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -786,7 +786,8 @@ append_entry_w(wchar_t **wp, const wchar
 		} else if (tag == ARCHIVE_ENTRY_ACL_USER
 		    || tag == ARCHIVE_ENTRY_ACL_GROUP) {
 			append_id_w(wp, id);
-			id = -1;
+			if ((type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) == 0)
+				id = -1;
 		}
 		/* Solaris style has no second colon after other and mask */
 		if (((flags & ARCHIVE_ENTRY_ACL_STYLE_SOLARIS) == 0)
@@ -1042,7 +1043,8 @@ append_entry(char **p, const char *prefi
 		} else if (tag == ARCHIVE_ENTRY_ACL_USER
 		    || tag == ARCHIVE_ENTRY_ACL_GROUP) {
 			append_id(p, id);
-			id = -1;
+			if ((type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) == 0)
+				id = -1;
 		}
 		/* Solaris style has no second colon after other and mask */
 		if (((flags & ARCHIVE_ENTRY_ACL_STYLE_SOLARIS) == 0)
@@ -1328,6 +1330,7 @@ archive_acl_from_text_w(struct archive_a
 			    tag == ARCHIVE_ENTRY_ACL_GROUP) {
 				n = 1;
 				name = field[1];
+				isint_w(name.start, name.end, &id);
 			} else
 				n = 0;
 
@@ -1799,6 +1802,7 @@ archive_acl_from_text_l(struct archive_a
 			    tag == ARCHIVE_ENTRY_ACL_GROUP) {
 				n = 1;
 				name = field[1];
+				isint(name.start, name.end, &id);
 			} else
 				n = 0;
 

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -526,6 +526,11 @@ setup_acls(struct archive_read_disk *a,
 
 	/* Only directories can have default ACLs. */
 	if (S_ISDIR(archive_entry_mode(entry))) {
+#if HAVE_ACL_GET_FD_NP
+		if (*fd >= 0)
+			acl = acl_get_fd_np(*fd, ACL_TYPE_DEFAULT);
+		else
+#endif
 		acl = acl_get_file(accpath, ACL_TYPE_DEFAULT);
 		if (acl != NULL) {
 			r = translate_acl(a, entry, acl,
@@ -581,7 +586,10 @@ static struct {
         {ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, ACL_ENTRY_FILE_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, ACL_ENTRY_DIRECTORY_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
-	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY},
+	{ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_SUCCESSFUL_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, ACL_ENTRY_FAILED_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED}
 };
 #endif
 static int

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_posix.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_posix.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_disk_posix.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -675,7 +675,7 @@ setup_suitable_read_buffer(struct archiv
 				asize = cf->min_xfer_size;
 
 			/* Increase a buffer size up to 64K bytes in
-			 * a proper incremant size. */
+			 * a proper increment size. */
 			while (asize < 1024*64)
 				asize += incr;
 			/* Take a margin to adjust to the filesystem
@@ -1656,7 +1656,7 @@ setup_current_filesystem(struct archive_
 		archive_set_error(&a->archive, errno, "statvfs failed");
 		return (ARCHIVE_FAILED);
 	} else if (xr == 1) {
-		/* Usuall come here unless NetBSD supports _PC_REC_XFER_ALIGN
+		/* Usually come here unless NetBSD supports _PC_REC_XFER_ALIGN
 		 * for pathconf() function. */
 		t->current_filesystem->xfer_align = sfs.f_frsize;
 		t->current_filesystem->max_xfer_size = -1;
@@ -1944,7 +1944,7 @@ setup_current_filesystem(struct archive_
 	if (nm == -1)
 #  endif /* _PC_NAME_MAX */
 		/*
-		 * Some sysmtes (HP-UX or others?) incorrectly defined
+		 * Some systems (HP-UX or others?) incorrectly defined
 		 * NAME_MAX macro to be a smaller value.
 		 */
 #  if defined(NAME_MAX) && NAME_MAX >= 255

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -180,7 +180,7 @@ lz4_reader_bid(struct archive_read_filte
 			return (0);
 		bits_checked += 8;
 		BD = buffer[5];
-		/* A block maximum size shuld be more than 3. */
+		/* A block maximum size should be more than 3. */
 		if (((BD & 0x70) >> 4) < 4)
 			return (0);
 		/* Reserved bits must be "0". */
@@ -417,7 +417,7 @@ lz4_filter_read_descriptor(struct archiv
 	/* Reserved bits must be zero. */
 	if (bd & 0x8f)
 		goto malformed_error;
-	/* Get a maxinum block size. */
+	/* Get a maximum block size. */
 	switch (read_buf[1] >> 4) {
 	case 4: /* 64 KB */
 		state->flags.block_maximum_size = 64 * 1024;
@@ -627,7 +627,7 @@ lz4_filter_read_default_stream(struct ar
 
 	if (state->stage == SELECT_STREAM) {
 		state->stage = READ_DEFAULT_STREAM;
-		/* First, read a desciprtor. */
+		/* First, read a descriptor. */
 		if((ret = lz4_filter_read_descriptor(self)) != ARCHIVE_OK)
 			return (ret);
 		state->stage = READ_DEFAULT_BLOCK;

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -436,7 +436,7 @@ lzop_filter_read(struct archive_read_fil
 	}
 
 	/*
-	 * Drive lzo uncompresison.
+	 * Drive lzo uncompression.
 	 */
 	out_size = (lzo_uint)state->uncompressed_size;
 	r = lzo1x_decompress_safe(b, (lzo_uint)state->compressed_size,

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_7zip.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_7zip.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -552,7 +552,7 @@ skip_sfx(struct archive_read *a, ssize_t
 	/*
 	 * If bytes_avail > SFX_MIN_ADDR we do not have to call
 	 * __archive_read_seek() at this time since we have
-	 * alredy had enough data.
+	 * already had enough data.
 	 */
 	if (bytes_avail > SFX_MIN_ADDR)
 		__archive_read_consume(a, SFX_MIN_ADDR);
@@ -760,7 +760,7 @@ archive_read_format_7zip_read_header(str
 			symsize += size;
 		}
 		if (symsize == 0) {
-			/* If there is no synname, handle it as a regular
+			/* If there is no symname, handle it as a regular
 			 * file. */
 			zip_entry->mode &= ~AE_IFMT;
 			zip_entry->mode |= AE_IFREG;
@@ -3288,7 +3288,7 @@ read_stream(struct archive_read *a, cons
 		return (r);
 
 	/*
-	 * Skip the bytes we alrady has skipped in skip_stream().
+	 * Skip the bytes we already has skipped in skip_stream().
 	 */
 	while (skip_bytes) {
 		ssize_t skipped;
@@ -3506,7 +3506,7 @@ setup_decode_folder(struct archive_read 
 				return (ARCHIVE_FATAL);
 			}
 
-			/* Allocate memory for the decorded data of a sub
+			/* Allocate memory for the decoded data of a sub
 			 * stream. */
 			b[i] = malloc((size_t)zip->folder_outbytes_remaining);
 			if (b[i] == NULL) {
@@ -3591,7 +3591,7 @@ skip_stream(struct archive_read *a, size
 	if (zip->folder_index == 0) {
 		/*
 		 * Optimization for a list mode.
-		 * Avoid unncecessary decoding operations.
+		 * Avoid unnecessary decoding operations.
 		 */
 		zip->si.ci.folders[zip->entry->folderIndex].skipped_bytes
 		    += skip_bytes;

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -322,7 +322,7 @@ struct iso9660 {
 
 	struct archive_string pathname;
 	char	seenRockridge;	/* Set true if RR extensions are used. */
-	char	seenSUSP;	/* Set true if SUSP is beging used. */
+	char	seenSUSP;	/* Set true if SUSP is being used. */
 	char	seenJoliet;
 
 	unsigned char	suspOffset;

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_lha.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_lha.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_lha.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -1711,7 +1711,7 @@ lha_crc16(uint16_t crc, const void *pp, 
 	 */
 	for (;len >= 8; len -= 8) {
 		/* This if statement expects compiler optimization will
-		 * remove the stament which will not be executed. */
+		 * remove the statement which will not be executed. */
 #undef bswap16
 #if defined(_MSC_VER) && _MSC_VER >= 1400  /* Visual Studio */
 #  define bswap16(x) _byteswap_ushort(x)

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_rar.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -906,7 +906,7 @@ archive_read_format_rar_read_header(stru
                             sizeof(rar->reserved2));
       }
 
-      /* Main header is password encrytped, so we cannot read any
+      /* Main header is password encrypted, so we cannot read any
          file names or any other info about files from the header. */
       if (rar->main_flags & MHD_PASSWORD)
       {

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -204,13 +204,14 @@ static int	archive_read_format_tar_read_
 		    struct archive_entry *);
 static int	checksum(struct archive_read *, const void *);
 static int 	pax_attribute(struct archive_read *, struct tar *,
-		    struct archive_entry *, const char *key, const char *value);
+		    struct archive_entry *, const char *key, const char *value,
+		    size_t value_length);
 static int	pax_attribute_acl(struct archive_read *, struct tar *,
 		    struct archive_entry *, const char *, int);
 static int	pax_attribute_xattr(struct archive_entry *, const char *,
 		    const char *);
 static int 	pax_header(struct archive_read *, struct tar *,
-		    struct archive_entry *, char *attr);
+		    struct archive_entry *, struct archive_string *);
 static void	pax_time(const char *, int64_t *sec, long *nanos);
 static ssize_t	readline(struct archive_read *, struct tar *, const char **,
 		    ssize_t limit, size_t *);
@@ -1483,7 +1484,7 @@ header_pax_extensions(struct archive_rea
 	 * and then skip any fields in the standard header that were
 	 * defined in the pax header.
 	 */
-	err2 = pax_header(a, tar, entry, tar->pax_header.s);
+	err2 = pax_header(a, tar, entry, &tar->pax_header);
 	err =  err_combine(err, err2);
 	tar->entry_padding = 0x1ff & (-tar->entry_bytes_remaining);
 	return (err);
@@ -1564,16 +1565,17 @@ header_ustar(struct archive_read *a, str
  */
 static int
 pax_header(struct archive_read *a, struct tar *tar,
-    struct archive_entry *entry, char *attr)
+    struct archive_entry *entry, struct archive_string *in_as)
 {
-	size_t attr_length, l, line_length;
+	size_t attr_length, l, line_length, value_length;
 	char *p;
 	char *key, *value;
 	struct archive_string *as;
 	struct archive_string_conv *sconv;
 	int err, err2;
+	char *attr = in_as->s;
 
-	attr_length = strlen(attr);
+	attr_length = in_as->length;
 	tar->pax_hdrcharset_binary = 0;
 	archive_string_empty(&(tar->entry_gname));
 	archive_string_empty(&(tar->entry_linkpath));
@@ -1638,11 +1640,13 @@ pax_header(struct archive_read *a, struc
 		}
 		*p = '\0';
 
-		/* Identify null-terminated 'value' portion. */
 		value = p + 1;
 
+		/* Some values may be binary data */
+		value_length = attr + line_length - 1 - value;
+
 		/* Identify this attribute and set it in the entry. */
-		err2 = pax_attribute(a, tar, entry, key, value);
+		err2 = pax_attribute(a, tar, entry, key, value, value_length);
 		if (err2 == ARCHIVE_FATAL)
 			return (err2);
 		err = err_combine(err, err2);
@@ -1764,6 +1768,20 @@ pax_attribute_xattr(struct archive_entry
 }
 
 static int
+pax_attribute_schily_xattr(struct archive_entry *entry,
+	const char *name, const char *value, size_t value_length)
+{
+	if (strlen(name) < 14 || (memcmp(name, "SCHILY.xattr.", 13)) != 0)
+		return 1;
+
+	name += 13;
+
+	archive_entry_xattr_add_entry(entry, name, value, value_length);
+
+	return 0;
+}
+
+static int
 pax_attribute_acl(struct archive_read *a, struct tar *tar,
     struct archive_entry *entry, const char *value, int type)
 {
@@ -1824,7 +1842,7 @@ pax_attribute_acl(struct archive_read *a
  */
 static int
 pax_attribute(struct archive_read *a, struct tar *tar,
-    struct archive_entry *entry, const char *key, const char *value)
+    struct archive_entry *entry, const char *key, const char *value, size_t value_length)
 {
 	int64_t s;
 	long n;
@@ -1961,6 +1979,9 @@ pax_attribute(struct archive_read *a, st
 		} else if (strcmp(key, "SCHILY.realsize") == 0) {
 			tar->realsize = tar_atol10(value, strlen(value));
 			archive_entry_set_size(entry, tar->realsize);
+		} else if (strncmp(key, "SCHILY.xattr.", 13) == 0) {
+			pax_attribute_schily_xattr(entry, key, value,
+			    value_length);
 		} else if (strcmp(key, "SUN.holesdata") == 0) {
 			/* A Solaris extension for sparse. */
 			r = solaris_sparse_parse(a, tar, entry, value);

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_warc.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_warc.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_warc.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -88,7 +88,7 @@ typedef enum {
 	WT_RVIS,
 	/* conversion, unsupported */
 	WT_CONV,
-	/* continutation, unsupported at the moment */
+	/* continuation, unsupported at the moment */
 	WT_CONT,
 	/* invalid type */
 	LAST_WT
@@ -562,7 +562,7 @@ xstrpisotime(const char *s, char **endpt
 		goto out;
 	}
 
-	/* massage TM to fulfill some of POSIX' contraints */
+	/* massage TM to fulfill some of POSIX' constraints */
 	tm.tm_year -= 1900;
 	tm.tm_mon--;
 

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_zip.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_zip.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_read_support_format_zip.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -199,7 +199,7 @@ struct zip {
 	struct trad_enc_ctx	tctx;
 	char			tctx_valid;
 
-	/* WinZip AES decyption. */
+	/* WinZip AES decryption. */
 	/* Contexts used for AES decryption. */
 	archive_crypto_ctx	cctx;
 	char			cctx_valid;
@@ -242,7 +242,7 @@ trad_enc_update_keys(struct trad_enc_ctx
 }
 
 static uint8_t
-trad_enc_decypt_byte(struct trad_enc_ctx *ctx)
+trad_enc_decrypt_byte(struct trad_enc_ctx *ctx)
 {
 	unsigned temp = ctx->keys[2] | 2;
 	return (uint8_t)((temp * (temp ^ 1)) >> 8) & 0xff;
@@ -257,7 +257,7 @@ trad_enc_decrypt_update(struct trad_enc_
 	max = (unsigned)((in_len < out_len)? in_len: out_len);
 
 	for (i = 0; i < max; i++) {
-		uint8_t t = in[i] ^ trad_enc_decypt_byte(ctx);
+		uint8_t t = in[i] ^ trad_enc_decrypt_byte(ctx);
 		out[i] = t;
 		trad_enc_update_keys(ctx, t);
 	}
@@ -710,7 +710,7 @@ process_extra(struct archive_read *a, co
 			break;
 		}
 		case 0x9901:
-			/* WinZIp AES extra data field. */
+			/* WinZip AES extra data field. */
 			if (p[offset + 2] == 'A' && p[offset + 3] == 'E') {
 				/* Vendor version. */
 				zip_entry->aes_extra.vendor =
@@ -1518,7 +1518,7 @@ read_decryption_header(struct archive_re
 	case 0x6720:/* Blowfish */
 	case 0x6721:/* Twofish */
 	case 0x6801:/* RC4 */
-		/* Suuported encryption algorithm. */
+		/* Supported encryption algorithm. */
 		break;
 	default:
 		archive_set_error(&a->archive,
@@ -1627,7 +1627,7 @@ read_decryption_header(struct archive_re
 	__archive_read_consume(a, 4);
 
 	/*return (ARCHIVE_OK);
-	 * This is not fully implemnted yet.*/
+	 * This is not fully implemented yet.*/
 	archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
 	    "Encrypted file is unsupported");
 	return (ARCHIVE_FAILED);
@@ -1709,7 +1709,7 @@ init_traditional_PKWARE_decryption(struc
 		}
 
 		/*
-		 * Initialize ctx for Traditional PKWARE Decyption.
+		 * Initialize ctx for Traditional PKWARE Decryption.
 		 */
 		r = trad_enc_init(&zip->tctx, passphrase, strlen(passphrase),
 			p, ENC_HEADER_SIZE, &crcchk);

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_string.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_string.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_string.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -219,6 +219,12 @@ archive_wstring_append(struct archive_ws
 	return (as);
 }
 
+struct archive_string *
+archive_array_append(struct archive_string *as, const char *p, size_t s)
+{
+	return archive_string_append(as, p, s);
+}
+
 void
 archive_string_concat(struct archive_string *dest, struct archive_string *src)
 {
@@ -597,7 +603,7 @@ archive_wstring_append_from_mbs(struct a
 	wcs = dest->s + dest->length;
 	/*
 	 * We cannot use mbsrtowcs/mbstowcs here because those may convert
-	 * extra MBS when strlen(p) > len and one wide character consis of
+	 * extra MBS when strlen(p) > len and one wide character consists of
 	 * multi bytes.
 	 */
 	while (*mbs && mbs_length > 0) {
@@ -1248,7 +1254,7 @@ create_sconv_object(const char *fc, cons
 		sc->cd = iconv_open(tc, fc);
 		if (sc->cd == (iconv_t)-1 && (sc->flag & SCONV_BEST_EFFORT)) {
 			/*
-			 * Unfortunaly, all of iconv implements do support 
+			 * Unfortunately, all of iconv implements do support
 			 * "CP932" character-set, so we should use "SJIS"
 			 * instead if iconv_open failed.
 			 */
@@ -1261,7 +1267,7 @@ create_sconv_object(const char *fc, cons
 		/*
 		 * archive_mstring on Windows directly convert multi-bytes
 		 * into archive_wstring in order not to depend on locale
-		 * so that you can do a I18N programing. This will be
+		 * so that you can do a I18N programming. This will be
 		 * used only in archive_mstring_copy_mbs_len_l so far.
 		 */
 		if (flag & SCONV_FROM_CHARSET) {
@@ -1726,7 +1732,7 @@ archive_string_conversion_from_charset(s
  * in tar or zip files. But mbstowcs/wcstombs(CRT) usually use CP_ACP
  * unless you use setlocale(LC_ALL, ".OCP")(specify CP_OEMCP).
  * So we should make a string conversion between CP_ACP and CP_OEMCP
- * for compatibillty.
+ * for compatibility.
  */
 #if defined(_WIN32) && !defined(__CYGWIN__)
 struct archive_string_conv *
@@ -2220,7 +2226,7 @@ best_effort_strncat_in_locale(struct arc
 
 	/*
 	 * If a character is ASCII, this just copies it. If not, this
-	 * assigns '?' charater instead but in UTF-8 locale this assigns
+	 * assigns '?' character instead but in UTF-8 locale this assigns
 	 * byte sequence 0xEF 0xBD 0xBD, which are code point U+FFFD,
 	 * a Replacement Character in Unicode.
 	 */
@@ -2554,7 +2560,7 @@ utf16_to_unicode(uint32_t *pwc, const ch
 
 	/*
 	 * Surrogate pair values(0xd800 through 0xdfff) are only
-	 * used by UTF-16, so, after above culculation, the code
+	 * used by UTF-16, so, after above calculation, the code
 	 * must not be surrogate values, and Unicode has no codes
 	 * larger than 0x10ffff. Thus, those are not legal Unicode
 	 * values.
@@ -2903,7 +2909,7 @@ get_nfc(uint32_t uc, uint32_t uc2)
 /*
  * Normalize UTF-8/UTF-16BE characters to Form C and copy the result.
  *
- * TODO: Convert composition exclusions,which are never converted
+ * TODO: Convert composition exclusions, which are never converted
  * from NFC,NFD,NFKC and NFKD, to Form C.
  */
 static int
@@ -3437,7 +3443,7 @@ strncat_from_utf8_libarchive2(struct arc
 		}
 
 		/*
-		 * As libarchie 2.x, translates the UTF-8 characters into
+		 * As libarchive 2.x, translates the UTF-8 characters into
 		 * wide-characters in the assumption that WCS is Unicode.
 		 */
 		if (n < 0) {
@@ -3947,7 +3953,7 @@ archive_mstring_get_mbs_l(struct archive
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 	/*
-	 * Internationalization programing on Windows must use Wide
+	 * Internationalization programming on Windows must use Wide
 	 * characters because Windows platform cannot make locale UTF-8.
 	 */
 	if (sc != NULL && (aes->aes_set & AES_SET_WCS) != 0) {
@@ -4079,7 +4085,7 @@ archive_mstring_copy_mbs_len_l(struct ar
 	archive_string_empty(&(aes->aes_utf8));
 #if defined(_WIN32) && !defined(__CYGWIN__)
 	/*
-	 * Internationalization programing on Windows must use Wide
+	 * Internationalization programming on Windows must use Wide
 	 * characters because Windows platform cannot make locale UTF-8.
 	 */
 	if (sc == NULL) {

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_string.h
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_string.h	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_string.h	Wed Jan 11 21:05:13 2017	(r311940)
@@ -81,6 +81,10 @@ archive_strappend_char(struct archive_st
 struct archive_wstring *
 archive_wstrappend_wchar(struct archive_wstring *, wchar_t);
 
+/* Append a raw array to an archive_string, resizing as necessary */
+struct archive_string *
+archive_array_append(struct archive_string *, const char *, size_t);
+
 /* Convert a Unicode string to current locale and append the result. */
 /* Returns -1 if conversion fails. */
 int

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_string_composition.h
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_string_composition.h	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_string_composition.h	Wed Jan 11 21:05:13 2017	(r311940)
@@ -1009,7 +1009,7 @@ static const char u_decomposable_blocks[
 	(((uc) > 0x1D244)?0:\
 	ccc_val[ccc_val_index[ccc_index[(uc)>>8]][((uc)>>4)&0x0F]][(uc)&0x0F])
 
-/* The table of the value of Canonical Cimbining Class */
+/* The table of the value of Canonical Combining Class */
 static const unsigned char ccc_val[][16] = {
  /* idx=0: XXXX0 - XXXXF */
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -231,7 +231,7 @@ __archive_write_filter(struct archive_wr
 	if (length == 0)
 		return(ARCHIVE_OK);
 	if (f->write == NULL)
-		/* If unset, a fatal error has already ocuured, so this filter
+		/* If unset, a fatal error has already occurred, so this filter
 		 * didn't open. We cannot write anything. */
 		return(ARCHIVE_FATAL);
 	r = (f->write)(f, buff, length);

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_add_filter_xz.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_add_filter_xz.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_add_filter_xz.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -233,7 +233,7 @@ archive_compressor_xz_init_stream(struct
 	if (f->code == ARCHIVE_FILTER_XZ) {
 #ifdef HAVE_LZMA_STREAM_ENCODER_MT
 		if (data->threads != 1) {
-			bzero(&mt_options, sizeof(mt_options));
+			memset(&mt_options, 0, sizeof(mt_options));
 			mt_options.threads = data->threads;
 			mt_options.timeout = 300;
 			mt_options.filters = data->lzmafilters;

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_disk_acl.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_disk_acl.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_disk_acl.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -124,7 +124,10 @@ static struct {
 	{ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, ACL_ENTRY_FILE_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, ACL_ENTRY_DIRECTORY_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
-	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY},
+	{ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_SUCCESSFUL_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, ACL_ENTRY_FAILED_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED}
 };
 #endif
 
@@ -292,29 +295,41 @@ set_acl(struct archive *a, int fd, const
 	}
 
 	/* Try restoring the ACL through 'fd' if we can. */
-#if HAVE_ACL_SET_FD
-	if (fd >= 0 && acl_type == ACL_TYPE_ACCESS && acl_set_fd(fd, acl) == 0)
-		ret = ARCHIVE_OK;
-	else
-#else
+#if HAVE_ACL_SET_FD_NP || HAVE_ACL_SET_FD
 #if HAVE_ACL_SET_FD_NP
-	if (fd >= 0 && acl_set_fd_np(fd, acl, acl_type) == 0)
-		ret = ARCHIVE_OK;
-	else
-#endif
-#endif
+	if (fd >= 0) {
+		if (acl_set_fd_np(fd, acl, acl_type) == 0)
+#else /* HAVE_ACL_SET_FD */
+	if (fd >= 0 && acl_type == ACL_TYPE_ACCESS) {
+		if (acl_set_fd(fd, acl) == 0)
+#endif
+			ret = ARCHIVE_OK;
+		else {
+			if (errno == EOPNOTSUPP) {
+				/* Filesystem doesn't support ACLs */
+				ret = ARCHIVE_OK;
+			} else {
+				archive_set_error(a, errno,
+				    "Failed to set %s acl on fd", tname);
+			}
+		}
+	} else
+#endif	/* HAVE_ACL_SET_FD_NP || HAVE_ACL_SET_FD */
 #if HAVE_ACL_SET_LINK_NP
-	  if (acl_set_link_np(name, acl_type, acl) != 0) {
-		archive_set_error(a, errno, "Failed to set %s acl", tname);
-		ret = ARCHIVE_WARN;
-	  }
+	if (acl_set_link_np(name, acl_type, acl) != 0) {
 #else
 	/* TODO: Skip this if 'name' is a symlink. */
 	if (acl_set_file(name, acl_type, acl) != 0) {
-		archive_set_error(a, errno, "Failed to set %s acl", tname);
-		ret = ARCHIVE_WARN;
-	}
 #endif
+		if (errno == EOPNOTSUPP) {
+			/* Filesystem doesn't support ACLs */
+			ret = ARCHIVE_OK;
+		} else {
+			archive_set_error(a, errno, "Failed to set %s acl",
+			    tname);
+			ret = ARCHIVE_WARN;
+		}
+	}
 exit_free:
 	acl_free(acl);
 	return (ret);

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_7zip.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_7zip.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -1358,7 +1358,7 @@ make_header(struct archive_write *a, uin
 	if (r < 0)
 		return (r);
 
-	/* Write Nume size. */
+	/* Write Name size. */
 	r = enc_uint64(a, zip->total_bytes_entry_name+1);
 	if (r < 0)
 		return (r);

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_pax.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_pax.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_pax.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -62,10 +62,17 @@ struct pax {
 	struct sparse_block	*sparse_tail;
 	struct archive_string_conv *sconv_utf8;
 	int			 opt_binary;
+
+	unsigned flags;
+#define WRITE_SCHILY_XATTR       (1 << 0)
+#define WRITE_LIBARCHIVE_XATTR   (1 << 1)
 };
 
 static void		 add_pax_attr(struct archive_string *, const char *key,
 			     const char *value);
+static void		 add_pax_attr_binary(struct archive_string *,
+			     const char *key,
+			     const char *value, size_t value_len);
 static void		 add_pax_attr_int(struct archive_string *,
 			     const char *key, int64_t value);
 static void		 add_pax_attr_time(struct archive_string *,
@@ -136,6 +143,8 @@ archive_write_set_format_pax(struct arch
 		    "Can't allocate pax data");
 		return (ARCHIVE_FATAL);
 	}
+	pax->flags = WRITE_LIBARCHIVE_XATTR | WRITE_SCHILY_XATTR;
+
 	a->format_data = pax;
 	a->format_name = "pax";
 	a->format_options = archive_write_pax_options;
@@ -275,6 +284,17 @@ add_pax_attr_int(struct archive_string *
 static void
 add_pax_attr(struct archive_string *as, const char *key, const char *value)
 {
+	add_pax_attr_binary(as, key, value, strlen(value));
+}
+
+/*
+ * Add a key/value attribute to the pax header.  This function handles
+ * binary values.
+ */
+static void
+add_pax_attr_binary(struct archive_string *as, const char *key,
+		    const char *value, size_t value_len)
+{
 	int digits, i, len, next_ten;
 	char tmp[1 + 3 * sizeof(int)];	/* < 3 base-10 digits per byte */
 
@@ -282,7 +302,7 @@ add_pax_attr(struct archive_string *as, 
 	 * PAX attributes have the following layout:
 	 *     <len> <space> <key> <=> <value> <nl>
 	 */
-	len = 1 + (int)strlen(key) + 1 + (int)strlen(value) + 1;
+	len = 1 + (int)strlen(key) + 1 + (int)value_len + 1;
 
 	/*
 	 * The <len> field includes the length of the <len> field, so
@@ -313,21 +333,47 @@ add_pax_attr(struct archive_string *as, 
 	archive_strappend_char(as, ' ');
 	archive_strcat(as, key);
 	archive_strappend_char(as, '=');
-	archive_strcat(as, value);
+	archive_array_append(as, value, value_len);
 	archive_strappend_char(as, '\n');
 }
 
+static void
+archive_write_pax_header_xattr(struct pax *pax, const char *encoded_name,
+    const void *value, size_t value_len)
+{
+	struct archive_string s;
+	char *encoded_value;
+
+	if (pax->flags & WRITE_LIBARCHIVE_XATTR) {
+		encoded_value = base64_encode((const char *)value, value_len);
+
+		if (encoded_name != NULL && encoded_value != NULL) {
+			archive_string_init(&s);
+			archive_strcpy(&s, "LIBARCHIVE.xattr.");
+			archive_strcat(&s, encoded_name);
+			add_pax_attr(&(pax->pax_header), s.s, encoded_value);
+			archive_string_free(&s);
+		}
+		free(encoded_value);
+	}
+	if (pax->flags & WRITE_SCHILY_XATTR) {
+		archive_string_init(&s);
+		archive_strcpy(&s, "SCHILY.xattr.");
+		archive_strcat(&s, encoded_name);
+		add_pax_attr_binary(&(pax->pax_header), s.s, value, value_len);
+		archive_string_free(&s);
+	}
+}
+
 static int
 archive_write_pax_header_xattrs(struct archive_write *a,
     struct pax *pax, struct archive_entry *entry)
 {
-	struct archive_string s;
 	int i = archive_entry_xattr_reset(entry);
 
 	while (i--) {
 		const char *name;
 		const void *value;
-		char *encoded_value;
 		char *url_encoded_name = NULL, *encoded_name = NULL;
 		size_t size;
 		int r;
@@ -348,16 +394,9 @@ archive_write_pax_header_xattrs(struct a
 			}
 		}
 
-		encoded_value = base64_encode((const char *)value, size);
+		archive_write_pax_header_xattr(pax, encoded_name,
+		    value, size);
 
-		if (encoded_name != NULL && encoded_value != NULL) {
-			archive_string_init(&s);
-			archive_strcpy(&s, "LIBARCHIVE.xattr.");
-			archive_strcat(&s, encoded_name);
-			add_pax_attr(&(pax->pax_header), s.s, encoded_value);
-			archive_string_free(&s);
-		}
-		free(encoded_value);
 	}
 	return (ARCHIVE_OK);
 }

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_xar.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_xar.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_xar.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -2913,7 +2913,7 @@ compression_init_encoder_xz(struct archi
 	*strm = lzma_init_data;
 #ifdef HAVE_LZMA_STREAM_ENCODER_MT
 	if (threads > 1) {
-		bzero(&mt_options, sizeof(mt_options));
+		memset(&mt_options, 0, sizeof(mt_options));
 		mt_options.threads = threads;
 		mt_options.timeout = 300;
 		mt_options.filters = lzmafilters;

Modified: projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_zip.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_zip.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/archive_write_set_format_zip.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -878,7 +878,7 @@ archive_write_zip_header(struct archive_
 	        || zip->entry_encryption == ENCRYPTION_WINZIP_AES256)) {
 
 		memcpy(e, "\001\231\007\000\001\000AE", 8);
-		/* AES vendoer version AE-2 does not store a CRC.
+		/* AES vendor version AE-2 does not store a CRC.
 		 * WinZip 11 uses AE-1, which does store the CRC,
 		 * but it does not store the CRC when the file size
 		 * is less than 20 bytes. So we simulate what
@@ -1013,7 +1013,7 @@ archive_write_zip_data(struct archive_wr
 	if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) {
 		switch (zip->entry_encryption) {
 		case ENCRYPTION_TRADITIONAL:
-			/* Initialize traditoinal PKWARE encryption context. */
+			/* Initialize traditional PKWARE encryption context. */
 			if (!zip->tctx_valid) {
 				ret = init_traditional_pkware_encryption(a);
 				if (ret != ARCHIVE_OK)
@@ -1499,7 +1499,7 @@ trad_enc_update_keys(struct trad_enc_ctx
 }
 
 static uint8_t
-trad_enc_decypt_byte(struct trad_enc_ctx *ctx)
+trad_enc_decrypt_byte(struct trad_enc_ctx *ctx)
 {
 	unsigned temp = ctx->keys[2] | 2;
 	return (uint8_t)((temp * (temp ^ 1)) >> 8) & 0xff;
@@ -1515,7 +1515,7 @@ trad_enc_encrypt_update(struct trad_enc_
 
 	for (i = 0; i < max; i++) {
 		uint8_t t = in[i];
-		out[i] = t ^ trad_enc_decypt_byte(ctx);
+		out[i] = t ^ trad_enc_decrypt_byte(ctx);
 		trad_enc_update_keys(ctx, t);
 	}
 	return i;
@@ -1626,7 +1626,7 @@ init_winzip_aes_encryption(struct archiv
 		return (ARCHIVE_FAILED);
         }
 
-	/* Set a passowrd verification value after the 'salt'. */
+	/* Set a password verification value after the 'salt'. */
 	salt[salt_len] = derived_key[key_len * 2];
 	salt[salt_len + 1] = derived_key[key_len * 2 + 1];
 

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -191,7 +191,7 @@ DEFINE_TEST(test_archive_read_add_passph
 	/* Fist call, we should get "passCallBack" as a passphrase. */
 	assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
 	__archive_read_reset_passphrase(ar);
-	/* After reset passphrase, we should get "passCallBack"passphrase. */
+	/* After reset passphrase, we should get "passCallBack" passphrase. */
 	assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
 	/* Second call, we should get NULL which means all the passphrases
 	 * are passed already. */

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_compat_uudecode.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_compat_uudecode.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_compat_uudecode.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -40,7 +40,7 @@ static char archive_data[] = {
 };
 
 /*
- * Compatibility: uudecode command ignores junk data placed ater the "end"
+ * Compatibility: uudecode command ignores junk data placed after the "end"
  * marker.
  */
 DEFINE_TEST(test_compat_uudecode)

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -27,7 +27,7 @@
 __FBSDID("$FreeBSD$");
 
 /*
-ecute the following to rebuild the data for this program:
+execute the following to rebuild the data for this program:
    tail -n +33 test_read_format_cpio_afio.c | /bin/sh
 
 # How to make a sample data.

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -28,7 +28,7 @@ __FBSDID("$FreeBSD$");
 
 DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
 {
-	/* This file is password protected (Traditional PKWARE Enctypted).
+	/* This file is password protected (Traditional PKWARE Encrypted).
 	   The headers are NOT encrypted. Password is "12345678". */
 	const char *refname =
 		"test_read_format_zip_traditional_encryption_data.zip";
@@ -36,7 +36,7 @@ DEFINE_TEST(test_read_format_zip_traditi
 	struct archive *a;
 	char buff[512];
 
-	/* Check if running system has cryptographic functionarity. */
+	/* Check if running system has cryptographic functionality. */
 	assert((a = archive_write_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -33,7 +33,7 @@ test_winzip_aes(const char *refname, int
 	struct archive *a;
 	char buff[512];
 
-	/* Check if running system has cryptographic functionarity. */
+	/* Check if running system has cryptographic functionality. */
 	assert((a = archive_write_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));

Modified: projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c
==============================================================================
--- projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c	Wed Jan 11 21:01:49 2017	(r311939)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c	Wed Jan 11 21:05:13 2017	(r311940)
@@ -34,7 +34,7 @@ DEFINE_TEST(test_read_format_zip_winzip_
 	char buff[512];
 
 
-	/* Check if running system has cryptographic functionarity. */
+	/* Check if running system has cryptographic functionality. */
 	assert((a = archive_write_new()) != NULL);
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
 	assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));

Copied: projects/clang400-import/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c (from r311939, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c	Wed Jan 11 21:05:13 2017	(r311940, copy of r311939, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c)
@@ -0,0 +1,70 @@
+/*-
+ * Copyright (c) 2016 IBM Corporation
+ * Copyright (c) 2003-2007 Tim Kientzle
+ *
+ * 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(S) ``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(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This test case's code has been derived from test_entry.c
+ */
+#include "test.h"
+
+DEFINE_TEST(test_schily_xattr_pax)
+{
+	struct archive *a;
+	struct archive_entry *ae;
+	const char *refname = "test_read_pax_schily_xattr.tar";
+	const char *xname; /* For xattr tests. */
+	const void *xval; /* For xattr tests. */
+	size_t xsize; /* For xattr tests. */
+	const char *string, *array;
+
+	assert((a = archive_read_new()) != NULL);
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+	extract_reference_file(refname);
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_open_filename(a, refname, 10240));
+
+	assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+	assertEqualInt(2, archive_entry_xattr_count(ae));
+	assertEqualInt(2, archive_entry_xattr_reset(ae));
+
+	assertEqualInt(0, archive_entry_xattr_next(ae, &xname, &xval, &xsize));
+	assertEqualString(xname, "security.selinux");
+	string = "system_u:object_r:unlabeled_t:s0";
+	assertEqualString(xval, string);
+	/* the xattr's value also contains the terminating \0 */
+	assertEqualInt((int)xsize, strlen(string) + 1);
+
+	assertEqualInt(0, archive_entry_xattr_next(ae, &xname, &xval, &xsize));
+	assertEqualString(xname, "security.ima");

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

From owner-svn-src-projects@freebsd.org  Thu Jan 12 09:38:15 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 49680CACB35
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Thu, 12 Jan 2017 09:38:15 +0000 (UTC) (envelope-from ae@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 199441D11;
 Thu, 12 Jan 2017 09:38:15 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0C9cEGm078653;
 Thu, 12 Jan 2017 09:38:14 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0C9cEfB078652;
 Thu, 12 Jan 2017 09:38:14 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701120938.v0C9cEfB078652@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Thu, 12 Jan 2017 09:38:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r311973 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Jan 2017 09:38:15 -0000

Author: ae
Date: Thu Jan 12 09:38:14 2017
New Revision: 311973
URL: https://svnweb.freebsd.org/changeset/base/311973

Log:
  Add kdebug_secnatt() to print NAT-T information for SA.

Modified:
  projects/ipsec/sys/netipsec/key_debug.c

Modified: projects/ipsec/sys/netipsec/key_debug.c
==============================================================================
--- projects/ipsec/sys/netipsec/key_debug.c	Thu Jan 12 09:01:14 2017	(r311972)
+++ projects/ipsec/sys/netipsec/key_debug.c	Thu Jan 12 09:38:14 2017	(r311973)
@@ -696,6 +696,21 @@ kdebug_secreplay(struct secreplay *rpl)
 	printf("    }\n");
 }
 
+static void
+kdebug_secnatt(struct secnatt *natt)
+{
+	char buf[IPSEC_ADDRSTRLEN];
+
+	IPSEC_ASSERT(natt != NULL, ("null natt"));
+	printf("  natt{ sport=%u dport=%u ", ntohs(natt->sport),
+	    ntohs(natt->dport));
+	if (natt->flags & IPSEC_NATT_F_OAI)
+		printf("oai=%s ", ipsec_address(&natt->oai, buf, sizeof(buf)));
+	if (natt->flags & IPSEC_NATT_F_OAR)
+		printf("oar=%s ", ipsec_address(&natt->oar, buf, sizeof(buf)));
+	printf("}\n");
+}
+
 void
 kdebug_secasv(struct secasvar *sav)
 {
@@ -729,6 +744,8 @@ kdebug_secasv(struct secasvar *sav)
 	if (sav->key_enc != NULL)
 		KEYDBG(DUMP,
 		    kdebug_sadb_key((struct sadb_ext *)sav->key_enc));
+	if (sav->natt != NULL)
+		kdebug_secnatt(sav->natt);
 	if (sav->replay != NULL) {
 		KEYDBG(DUMP,
 		    SECASVAR_LOCK(sav);

From owner-svn-src-projects@freebsd.org  Fri Jan 13 09:32:16 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 40206CAC225
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Fri, 13 Jan 2017 09:32:16 +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 D7FC7170A;
 Fri, 13 Jan 2017 09:32:15 +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 v0D9WF4m077981;
 Fri, 13 Jan 2017 09:32:15 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0D9WCRH077955;
 Fri, 13 Jan 2017 09:32:12 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701130932.v0D9WCRH077955@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Fri, 13 Jan 2017 09:32:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312060 - in projects/bsnmp-ipv6-mib: .
 contrib/elftoolchain/libelftc contrib/libarchive/libarchive
 contrib/libarchive/libarchive/test contrib/netbsd-tests
 contrib/netbsd-tests/crypto/l...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Jan 2017 09:32:16 -0000

Author: ngie
Date: Fri Jan 13 09:32:11 2017
New Revision: 312060
URL: https://svnweb.freebsd.org/changeset/base/312060

Log:
  MFhead@r312059

Added:
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c
     - copied unchanged from r312059, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.tar.uu
     - copied unchanged from r312059, head/contrib/libarchive/libarchive/test/test_read_pax_schily_xattr.tar.uu
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/msg.h
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/msg.h
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_wait.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_wait.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_wait.h
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_wait.h
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_wait3.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_wait3.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_wait4.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_wait4.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_wait6.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_wait6.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_waitid.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_waitid.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_ptrace_waitpid.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/kernel/t_ptrace_waitpid.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_clock_nanosleep.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libc/sys/t_clock_nanosleep.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc_wnohang.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc_wnohang.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libm/t_casinh.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libm/t_casinh.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libm/t_fe_round.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libm/t_fe_round.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libm/t_ilogb.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libm/t_ilogb.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libpthread/t_timedmutex.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/lib/libpthread/t_timedmutex.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_mtudisc.sh
     - copied unchanged from r312059, head/contrib/netbsd-tests/net/net/t_mtudisc.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_mtudisc6.sh
     - copied unchanged from r312059, head/contrib/netbsd-tests/net/net/t_mtudisc6.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_ping6_opts.sh
     - copied unchanged from r312059, head/contrib/netbsd-tests/net/net/t_ping6_opts.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net_common.sh
     - copied unchanged from r312059, head/contrib/netbsd-tests/net/net_common.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_union.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_union.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_cast.c
     - copied unchanged from r312059, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_cast.c
  projects/bsnmp-ipv6-mib/sys/dev/e1000/em_txrx.c
     - copied unchanged from r312059, head/sys/dev/e1000/em_txrx.c
  projects/bsnmp-ipv6-mib/sys/dev/e1000/igb_txrx.c
     - copied unchanged from r312059, head/sys/dev/e1000/igb_txrx.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_acpi.c
     - copied unchanged from r312059, head/sys/dev/sdhci/sdhci_acpi.c
  projects/bsnmp-ipv6-mib/sys/modules/sdhci_acpi/
     - copied from r312059, head/sys/modules/sdhci_acpi/
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/ggate_test.sh
     - copied unchanged from r312059, head/tests/sys/geom/class/gate/ggate_test.sh
  projects/bsnmp-ipv6-mib/usr.bin/tail/tests/
     - copied from r312059, head/usr.bin/tail/tests/
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/exfat.c
     - copied unchanged from r312059, head/usr.sbin/fstyp/exfat.c
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/tests/dfr-01-xfat.img.bz2
     - copied unchanged from r312059, head/usr.sbin/fstyp/tests/dfr-01-xfat.img.bz2
Deleted:
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_igb.c
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_igb.h
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_lem.c
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_lem.h
  projects/bsnmp-ipv6-mib/sys/modules/igb/
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/1_test.sh
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/2_test.sh
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/3_test.sh
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/conf.sh
Modified:
  projects/bsnmp-ipv6-mib/ObsoleteFiles.inc
  projects/bsnmp-ipv6-mib/UPDATING
  projects/bsnmp-ipv6-mib/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_acl.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_posix.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_lha.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_rar.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_tar.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_warc.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_zip.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.h
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string_composition.h
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_add_filter_xz.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_disk_acl.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_pax.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_xar.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_zip.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_compat_uudecode.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/test/test_sparse_basic.c
  projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/xxhash.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/crypto/libcrypto/t_libcrypto.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/crypto/libcrypto/t_pubkey.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/dev/audio/h_pad.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/fs/ffs/ffs_common.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/fs/fifofs/t_fifo.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/fs/psshfs/t_psshfs.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/fs/puffs/t_basic.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/fs/vfs/t_vnops.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/h_macros.h
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/kernel/t_mqueue.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/arch/sparc64/exec_prot_support.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/arch/sparc64/return_one.S
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_faccessat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_fchmodat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_fchownat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_fexecve.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_fstatat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_mkfifoat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_mknodat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_o_search.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_openat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_readlinkat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_unlinkat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/c063/t_utimensat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/db/h_db.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/db/t_db.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/posix_spawn/t_fileactions.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_assert.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_dir.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_fnmatch.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_ftok.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_setdomainname.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_sethostname.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_sleep.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_time.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/gen/t_vis.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/regex/debug.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/stdio/t_printf.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/string/t_memcpy.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/string/t_memmem.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/string/t_strchr.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/string/t_strerror.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sync/cpp_atomic_ops_linkable.cc
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_access.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_chroot.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_getrusage.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_mincore.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_mmap.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_unlink.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/sys/t_wait.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/t_cdb.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libc/ttyio/t_ttyio.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libm/t_ldexp.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libm/t_precision.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libpthread/h_common.h
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libpthread/t_mutex.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/librumpclient/h_execthr.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/librumphijack/t_tcpip.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/lib/libusbhid/t_usbhid.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/arp/t_arp.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/arp/t_dad.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if/t_compat.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if/t_ifconfig.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if_bridge/t_bridge.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if_gif/t_gif.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if_pppoe/t_pppoe.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/if_tap/t_tap.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/mcast/t_mcast.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/ndp/t_dad.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/ndp/t_ndp.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/ndp/t_ra.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_forwarding.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_ipaddress.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_ipv6_lifetime.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/net/t_ipv6address.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/route/t_change.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/route/t_flags.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/route/t_flags6.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/net/route/t_route.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/rump/modautoload/t_modautoload.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/rump/rumpkern/t_lwproc.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/sys/net/t_print.c
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/usr.bin/config/t_config.sh
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/usr.bin/netpgpverify/t_netpgpverify.sh
  projects/bsnmp-ipv6-mib/crypto/openssh/serverloop.c
  projects/bsnmp-ipv6-mib/crypto/openssh/ssh-agent.1
  projects/bsnmp-ipv6-mib/crypto/openssh/ssh-agent.c
  projects/bsnmp-ipv6-mib/crypto/openssh/ssh_config
  projects/bsnmp-ipv6-mib/crypto/openssh/ssh_config.5
  projects/bsnmp-ipv6-mib/crypto/openssh/sshd_config
  projects/bsnmp-ipv6-mib/crypto/openssh/sshd_config.5
  projects/bsnmp-ipv6-mib/crypto/openssh/version.h
  projects/bsnmp-ipv6-mib/etc/mtree/BSD.tests.dist
  projects/bsnmp-ipv6-mib/etc/rc.d/ntpdate
  projects/bsnmp-ipv6-mib/lib/libarchive/tests/Makefile
  projects/bsnmp-ipv6-mib/lib/libc/gen/tcsendbreak.3
  projects/bsnmp-ipv6-mib/lib/libc/tests/db/Makefile
  projects/bsnmp-ipv6-mib/lib/libc/tests/gen/Makefile
  projects/bsnmp-ipv6-mib/lib/libc/tests/stdlib/Makefile
  projects/bsnmp-ipv6-mib/lib/libc/tests/sys/Makefile
  projects/bsnmp-ipv6-mib/lib/libnetbsd/sys/cdefs.h
  projects/bsnmp-ipv6-mib/lib/libthr/tests/Makefile
  projects/bsnmp-ipv6-mib/lib/msun/tests/Makefile
  projects/bsnmp-ipv6-mib/libexec/rtld-elf/rtld.c
  projects/bsnmp-ipv6-mib/libexec/rtld-elf/rtld_lock.c
  projects/bsnmp-ipv6-mib/sbin/camcontrol/modeedit.c
  projects/bsnmp-ipv6-mib/share/man/man4/em.4
  projects/bsnmp-ipv6-mib/share/man/man4/sfxge.4
  projects/bsnmp-ipv6-mib/share/man/man4/tty.4
  projects/bsnmp-ipv6-mib/share/misc/committers-ports.dot
  projects/bsnmp-ipv6-mib/sys/amd64/amd64/pmap.c
  projects/bsnmp-ipv6-mib/sys/amd64/conf/GENERIC
  projects/bsnmp-ipv6-mib/sys/arm64/conf/GENERIC
  projects/bsnmp-ipv6-mib/sys/boot/common/reloc_elf.c
  projects/bsnmp-ipv6-mib/sys/boot/efi/Makefile.inc
  projects/bsnmp-ipv6-mib/sys/boot/efi/boot1/boot_module.h
  projects/bsnmp-ipv6-mib/sys/boot/efi/include/efiapi.h
  projects/bsnmp-ipv6-mib/sys/boot/efi/loader/arch/arm/ldscript.arm
  projects/bsnmp-ipv6-mib/sys/boot/efi/loader/arch/arm/start.S
  projects/bsnmp-ipv6-mib/sys/cam/cam_ccb.h
  projects/bsnmp-ipv6-mib/sys/cam/cam_periph.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/ctl_ha.c
  projects/bsnmp-ipv6-mib/sys/cam/ctl/scsi_ctl.c
  projects/bsnmp-ipv6-mib/sys/cam/nvme/nvme_da.c
  projects/bsnmp-ipv6-mib/sys/cam/scsi/scsi_all.c
  projects/bsnmp-ipv6-mib/sys/cam/scsi/scsi_xpt.c
  projects/bsnmp-ipv6-mib/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  projects/bsnmp-ipv6-mib/sys/conf/NOTES
  projects/bsnmp-ipv6-mib/sys/conf/files
  projects/bsnmp-ipv6-mib/sys/conf/files.arm64
  projects/bsnmp-ipv6-mib/sys/conf/makeLINT.mk
  projects/bsnmp-ipv6-mib/sys/conf/options
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/components/tables/tbxface.c
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/include/acpixf.h
  projects/bsnmp-ipv6-mib/sys/contrib/ipfilter/netinet/ip_fil.h
  projects/bsnmp-ipv6-mib/sys/ddb/db_input.c
  projects/bsnmp-ipv6-mib/sys/dev/ahci/ahci_generic.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/common/t4_msg.h
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/iw_cxgbe/provider.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/t4_main.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/t4_sge.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_connect.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_cpl_io.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_ddp.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_listen.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_tom.c
  projects/bsnmp-ipv6-mib/sys/dev/cxgbe/tom/t4_tom.h
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_em.c
  projects/bsnmp-ipv6-mib/sys/dev/e1000/if_em.h
  projects/bsnmp-ipv6-mib/sys/dev/mmc/mmcsd.c
  projects/bsnmp-ipv6-mib/sys/dev/mpr/mpr_table.c
  projects/bsnmp-ipv6-mib/sys/dev/mps/mps_table.c
  projects/bsnmp-ipv6-mib/sys/dev/nand/nand_geom.c
  projects/bsnmp-ipv6-mib/sys/dev/netmap/netmap_generic.c
  projects/bsnmp-ipv6-mib/sys/dev/ntb/if_ntb/if_ntb.c
  projects/bsnmp-ipv6-mib/sys/dev/nvd/nvd.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/pci/rtwn_pci_attach.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/rtl8188e/r88e_fw.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/rtl8192c/r92c_fw.c
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/rtl8192c/r92c_tx_desc.h
  projects/bsnmp-ipv6-mib/sys/dev/rtwn/usb/rtwn_usb_ep.c
  projects/bsnmp-ipv6-mib/sys/dev/sdhci/sdhci_fdt_gpio.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/efx_mcdi.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/common/efx_mcdi.h
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge.h
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge_port.c
  projects/bsnmp-ipv6-mib/sys/dev/sfxge/sfxge_tx.c
  projects/bsnmp-ipv6-mib/sys/dev/uart/uart_bus_pci.c
  projects/bsnmp-ipv6-mib/sys/dev/uart/uart_core.c
  projects/bsnmp-ipv6-mib/sys/dev/usb/controller/ehci_imx.c
  projects/bsnmp-ipv6-mib/sys/dev/usb/misc/udbp.c
  projects/bsnmp-ipv6-mib/sys/dev/usb/usbdevs
  projects/bsnmp-ipv6-mib/sys/dev/usb/wlan/if_rsu.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/cd9660_vfsops.c
  projects/bsnmp-ipv6-mib/sys/fs/cd9660/iso.h
  projects/bsnmp-ipv6-mib/sys/fs/pseudofs/pseudofs_vncache.c
  projects/bsnmp-ipv6-mib/sys/geom/geom_disk.c
  projects/bsnmp-ipv6-mib/sys/geom/geom_disk.h
  projects/bsnmp-ipv6-mib/sys/geom/raid/md_ddf.c
  projects/bsnmp-ipv6-mib/sys/geom/raid/md_promise.c
  projects/bsnmp-ipv6-mib/sys/i386/conf/GENERIC
  projects/bsnmp-ipv6-mib/sys/i386/i386/pmap.c
  projects/bsnmp-ipv6-mib/sys/kern/tty.c
  projects/bsnmp-ipv6-mib/sys/kern/uipc_mbuf2.c
  projects/bsnmp-ipv6-mib/sys/kern/vfs_bio.c
  projects/bsnmp-ipv6-mib/sys/libkern/bcmp.c
  projects/bsnmp-ipv6-mib/sys/libkern/bsearch.c
  projects/bsnmp-ipv6-mib/sys/libkern/iconv_ucs.c
  projects/bsnmp-ipv6-mib/sys/libkern/iconv_xlat16.c
  projects/bsnmp-ipv6-mib/sys/libkern/memmem.c
  projects/bsnmp-ipv6-mib/sys/libkern/qdivrem.c
  projects/bsnmp-ipv6-mib/sys/libkern/qsort.c
  projects/bsnmp-ipv6-mib/sys/libkern/random.c
  projects/bsnmp-ipv6-mib/sys/libkern/scanc.c
  projects/bsnmp-ipv6-mib/sys/libkern/strcmp.c
  projects/bsnmp-ipv6-mib/sys/libkern/strncpy.c
  projects/bsnmp-ipv6-mib/sys/mips/conf/OCTEON1
  projects/bsnmp-ipv6-mib/sys/modules/Makefile
  projects/bsnmp-ipv6-mib/sys/modules/ahci/Makefile
  projects/bsnmp-ipv6-mib/sys/modules/em/Makefile
  projects/bsnmp-ipv6-mib/sys/net/iflib.c
  projects/bsnmp-ipv6-mib/sys/net80211/_ieee80211.h
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211.h
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_adhoc.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_hostap.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_ht.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_ht.h
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_input.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_node.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_output.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_proto.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_scan_sta.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_sta.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_tdma.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_var.h
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_vht.c
  projects/bsnmp-ipv6-mib/sys/net80211/ieee80211_vht.h
  projects/bsnmp-ipv6-mib/sys/netinet/tcp_var.h
  projects/bsnmp-ipv6-mib/sys/netpfil/ipfw/ip_dummynet.c
  projects/bsnmp-ipv6-mib/sys/powerpc/conf/GENERIC64
  projects/bsnmp-ipv6-mib/sys/powerpc/include/asm.h
  projects/bsnmp-ipv6-mib/sys/sparc64/include/atomic.h
  projects/bsnmp-ipv6-mib/sys/sys/cdefs.h
  projects/bsnmp-ipv6-mib/sys/sys/tty.h
  projects/bsnmp-ipv6-mib/sys/tools/embed_mfs.sh
  projects/bsnmp-ipv6-mib/sys/vm/vnode_pager.c
  projects/bsnmp-ipv6-mib/sys/x86/x86/mca.c
  projects/bsnmp-ipv6-mib/tests/sys/geom/class/gate/Makefile
  projects/bsnmp-ipv6-mib/tools/build/mk/OptionalObsoleteFiles.inc
  projects/bsnmp-ipv6-mib/usr.bin/calendar/calendars/calendar.freebsd
  projects/bsnmp-ipv6-mib/usr.bin/fortune/fortune/fortune.6
  projects/bsnmp-ipv6-mib/usr.bin/rpcgen/rpc_cout.c
  projects/bsnmp-ipv6-mib/usr.bin/rpcgen/rpc_svcout.c
  projects/bsnmp-ipv6-mib/usr.bin/tail/Makefile
  projects/bsnmp-ipv6-mib/usr.bin/tail/reverse.c
  projects/bsnmp-ipv6-mib/usr.sbin/crunch/crunchide/exec_elf32.c
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/fstyp.8
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/fstyp.c
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/fstyp.h
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/tests/Makefile
  projects/bsnmp-ipv6-mib/usr.sbin/fstyp/tests/fstyp_test.sh
  projects/bsnmp-ipv6-mib/usr.sbin/mfiutil/mfi_evt.c
  projects/bsnmp-ipv6-mib/usr.sbin/pciconf/pciconf.c
  projects/bsnmp-ipv6-mib/usr.sbin/route6d/route6d.c
  projects/bsnmp-ipv6-mib/usr.sbin/syslogd/syslogd.c
Directory Properties:
  projects/bsnmp-ipv6-mib/   (props changed)
  projects/bsnmp-ipv6-mib/contrib/elftoolchain/   (props changed)
  projects/bsnmp-ipv6-mib/contrib/libarchive/   (props changed)
  projects/bsnmp-ipv6-mib/contrib/netbsd-tests/   (props changed)
  projects/bsnmp-ipv6-mib/crypto/openssh/   (props changed)
  projects/bsnmp-ipv6-mib/sys/cddl/contrib/opensolaris/   (props changed)
  projects/bsnmp-ipv6-mib/sys/contrib/dev/acpica/   (props changed)
  projects/bsnmp-ipv6-mib/sys/contrib/ipfilter/   (props changed)

Modified: projects/bsnmp-ipv6-mib/ObsoleteFiles.inc
==============================================================================
--- projects/bsnmp-ipv6-mib/ObsoleteFiles.inc	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/ObsoleteFiles.inc	Fri Jan 13 09:32:11 2017	(r312060)
@@ -38,6 +38,11 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20170110: Four files from ggate tests consolidated into one
+OLD_FILES+=usr/tests/sys/geom/class/gate/1_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/2_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/3_test
+OLD_FILES+=usr/tests/sys/geom/class/gate/conf.sh
 # 20170103: libbsnmptools.so made into an INTERNALLIB
 OLD_FILES+=usr/lib/libbsnmptools.a
 OLD_FILES+=usr/lib/libbsnmptools_p.a
@@ -48,8 +53,8 @@ OLD_FILES+=usr/share/man/man3/sysdecode_
 # 20161230: libarchive ACL pax test renamed to test_acl_pax_posix1e.tar.uu
 OLD_FILES+=usr/tests/lib/libarchive/test_acl_pax.tar.uu
 # 20161229: Three files from gnop tests consolidated into one
-OLD_FILES+=usr/tests/sys/geom/class/nop/1_test.sh
-OLD_FILES+=usr/tests/sys/geom/class/nop/2_test.sh
+OLD_FILES+=usr/tests/sys/geom/class/nop/1_test
+OLD_FILES+=usr/tests/sys/geom/class/nop/2_test
 OLD_FILES+=usr/tests/sys/geom/class/nop/conf.sh
 # 20161217: new clang import which bumps version from 3.9.0 to 3.9.1.
 OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/allocator_interface.h
@@ -2260,7 +2265,6 @@ OLD_LIBS+=usr/lib32/private/libyaml.so.1
 OLD_FILES+=usr/lib32/private/libyaml_p.a
 # 20140216: new clang import which bumps version from 3.3 to 3.4.
 OLD_FILES+=usr/bin/llvm-prof
-OLD_FILES+=usr/bin/llvm-ranlib
 OLD_FILES+=usr/include/clang/3.3/__wmmintrin_aes.h
 OLD_FILES+=usr/include/clang/3.3/__wmmintrin_pclmul.h
 OLD_FILES+=usr/include/clang/3.3/altivec.h

Modified: projects/bsnmp-ipv6-mib/UPDATING
==============================================================================
--- projects/bsnmp-ipv6-mib/UPDATING	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/UPDATING	Fri Jan 13 09:32:11 2017	(r312060)
@@ -51,6 +51,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
 
 ****************************** SPECIAL WARNING: ******************************
 
+20170112:
+	The EM_MULTIQUEUE kernel configuration option is deprecated now that
+	the em(4) driver conforms to iflib specifications.
+
+20170109:
+	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
+	IFLIB.  If you have a custom kernel configuration that excludes em(4)
+	but you use igb(4), you need to re-add em(4) to your custom configuration.
+
 20161217:
 	Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
 	Please see the 20141231 entry below for information about prerequisites

Modified: projects/bsnmp-ipv6-mib/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -501,6 +501,120 @@ elftc_reloc_type_str(unsigned int mach, 
 		case 116: return "R_PPC_EMB_RELSDA";
 		}
 		break;
+	case EM_PPC64:
+		switch(type) {
+		case 0: return "R_PPC64_NONE";
+		case 1: return "R_PPC64_ADDR32";
+		case 2: return "R_PPC64_ADDR24";
+		case 3: return "R_PPC64_ADDR16";
+		case 4: return "R_PPC64_ADDR16_LO";
+		case 5: return "R_PPC64_ADDR16_HI";
+		case 6: return "R_PPC64_ADDR16_HA";
+		case 7: return "R_PPC64_ADDR14";
+		case 8: return "R_PPC64_ADDR14_BRTAKEN";
+		case 9: return "R_PPC64_ADDR14_BRNTAKEN";
+		case 10: return "R_PPC64_REL24";
+		case 11: return "R_PPC64_REL14";
+		case 12: return "R_PPC64_REL14_BRTAKEN";
+		case 13: return "R_PPC64_REL14_BRNTAKEN";
+		case 14: return "R_PPC64_GOT16";
+		case 15: return "R_PPC64_GOT16_LO";
+		case 16: return "R_PPC64_GOT16_HI";
+		case 17: return "R_PPC64_GOT16_HA";
+		case 19: return "R_PPC64_COPY";
+		case 20: return "R_PPC64_GLOB_DAT";
+		case 21: return "R_PPC64_JMP_SLOT";
+		case 22: return "R_PPC64_RELATIVE";
+		case 24: return "R_PPC64_UADDR32";
+		case 25: return "R_PPC64_UADDR16";
+		case 26: return "R_PPC64_REL32";
+		case 27: return "R_PPC64_PLT32";
+		case 28: return "R_PPC64_PLTREL32";
+		case 29: return "R_PPC64_PLT16_LO";
+		case 30: return "R_PPC64_PLT16_HI";
+		case 31: return "R_PPC64_PLT16_HA";
+		case 33: return "R_PPC64_SECTOFF";
+		case 34: return "R_PPC64_SECTOFF_LO";
+		case 35: return "R_PPC64_SECTOFF_HI";
+		case 36: return "R_PPC64_SECTOFF_HA";
+		case 37: return "R_PPC64_ADDR30";
+		case 38: return "R_PPC64_ADDR64";
+		case 39: return "R_PPC64_ADDR16_HIGHER";
+		case 40: return "R_PPC64_ADDR16_HIGHERA";
+		case 41: return "R_PPC64_ADDR16_HIGHEST";
+		case 42: return "R_PPC64_ADDR16_HIGHESTA";
+		case 43: return "R_PPC64_UADDR64";
+		case 44: return "R_PPC64_REL64";
+		case 45: return "R_PPC64_PLT64";
+		case 46: return "R_PPC64_PLTREL64";
+		case 47: return "R_PPC64_TOC16";
+		case 48: return "R_PPC64_TOC16_LO";
+		case 49: return "R_PPC64_TOC16_HI";
+		case 50: return "R_PPC64_TOC16_HA";
+		case 51: return "R_PPC64_TOC";
+		case 52: return "R_PPC64_PLTGOT16";
+		case 53: return "R_PPC64_PLTGOT16_LO";
+		case 54: return "R_PPC64_PLTGOT16_HI";
+		case 55: return "R_PPC64_PLTGOT16_HA";
+		case 56: return "R_PPC64_ADDR16_DS";
+		case 57: return "R_PPC64_ADDR16_LO_DS";
+		case 58: return "R_PPC64_GOT16_DS";
+		case 59: return "R_PPC64_GOT16_LO_DS";
+		case 60: return "R_PPC64_PLT16_LO_DS";
+		case 61: return "R_PPC64_SECTOFF_DS";
+		case 62: return "R_PPC64_SECTOFF_LO_DS";
+		case 63: return "R_PPC64_TOC16_DS";
+		case 64: return "R_PPC64_TOC16_LO_DS";
+		case 65: return "R_PPC64_PLTGOT16_DS";
+		case 66: return "R_PPC64_PLTGOT16_LO_DS";
+		case 67: return "R_PPC64_TLS";
+		case 68: return "R_PPC64_DTPMOD64";
+		case 69: return "R_PPC64_TPREL16";
+		case 70: return "R_PPC64_TPREL16_LO";
+		case 71: return "R_PPC64_TPREL16_HI";
+		case 72: return "R_PPC64_TPREL16_HA";
+		case 73: return "R_PPC64_TPREL64";
+		case 74: return "R_PPC64_DTPREL16";
+		case 75: return "R_PPC64_DTPREL16_LO";
+		case 76: return "R_PPC64_DTPREL16_HI";
+		case 77: return "R_PPC64_DTPREL16_HA";
+		case 78: return "R_PPC64_DTPREL64";
+		case 79: return "R_PPC64_GOT_TLSGD16";
+		case 80: return "R_PPC64_GOT_TLSGD16_LO";
+		case 81: return "R_PPC64_GOT_TLSGD16_HI";
+		case 82: return "R_PPC64_GOT_TLSGD16_HA";
+		case 83: return "R_PPC64_GOT_TLSLD16";
+		case 84: return "R_PPC64_GOT_TLSLD16_LO";
+		case 85: return "R_PPC64_GOT_TLSLD16_HI";
+		case 86: return "R_PPC64_GOT_TLSLD16_HA";
+		case 87: return "R_PPC64_GOT_TPREL16_DS";
+		case 88: return "R_PPC64_GOT_TPREL16_LO_DS";
+		case 89: return "R_PPC64_GOT_TPREL16_HI";
+		case 90: return "R_PPC64_GOT_TPREL16_HA";
+		case 91: return "R_PPC64_GOT_DTPREL16_DS";
+		case 92: return "R_PPC64_GOT_DTPREL16_LO_DS";
+		case 93: return "R_PPC64_GOT_DTPREL16_HI";
+		case 94: return "R_PPC64_GOT_DTPREL16_HA";
+		case 95: return "R_PPC64_TPREL16_DS";
+		case 96: return "R_PPC64_TPREL16_LO_DS";
+		case 97: return "R_PPC64_TPREL16_HIGHER";
+		case 98: return "R_PPC64_TPREL16_HIGHERA";
+		case 99: return "R_PPC64_TPREL16_HIGHEST";
+		case 100: return "R_PPC64_TPREL16_HIGHESTA";
+		case 101: return "R_PPC64_DTPREL16_DS";
+		case 102: return "R_PPC64_DTPREL16_LO_DS";
+		case 103: return "R_PPC64_DTPREL16_HIGHER";
+		case 104: return "R_PPC64_DTPREL16_HIGHERA";
+		case 105: return "R_PPC64_DTPREL16_HIGHEST";
+		case 106: return "R_PPC64_DTPREL16_HIGHESTA";
+		case 107: return "R_PPC64_TLSGD";
+		case 108: return "R_PPC64_TLSLD";
+		case 249: return "R_PPC64_REL16";
+		case 250: return "R_PPC64_REL16_LO";
+		case 251: return "R_PPC64_REL16_HI";
+		case 252: return "R_PPC64_REL16_HA";
+		}
+		break;
 	case EM_RISCV:
 		switch(type) {
 		case 0: return "R_RISCV_NONE";
@@ -550,6 +664,37 @@ elftc_reloc_type_str(unsigned int mach, 
 		case 48: return "R_RISCV_GPREL_S";
 		}
 		break;
+	case EM_S390:
+		switch (type) {
+		case 0: return "R_390_NONE";
+		case 1: return "R_390_8";
+		case 2: return "R_390_12";
+		case 3: return "R_390_16";
+		case 4: return "R_390_32";
+		case 5: return "R_390_PC32";
+		case 6: return "R_390_GOT12";
+		case 7: return "R_390_GOT32";
+		case 8: return "R_390_PLT32";
+		case 9: return "R_390_COPY";
+		case 10: return "R_390_GLOB_DAT";
+		case 11: return "R_390_JMP_SLOT";
+		case 12: return "R_390_RELATIVE";
+		case 13: return "R_390_GOTOFF";
+		case 14: return "R_390_GOTPC";
+		case 15: return "R_390_GOT16";
+		case 16: return "R_390_PC16";
+		case 17: return "R_390_PC16DBL";
+		case 18: return "R_390_PLT16DBL";
+		case 19: return "R_390_PC32DBL";
+		case 20: return "R_390_PLT32DBL";
+		case 21: return "R_390_GOTPCDBL";
+		case 22: return "R_390_64";
+		case 23: return "R_390_PC64";
+		case 24: return "R_390_GOT64";
+		case 25: return "R_390_PLT64";
+		case 26: return "R_390_GOTENT";
+		}
+		break;
 	case EM_SPARC:
 	case EM_SPARCV9:
 		switch(type) {

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_acl.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_acl.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_acl.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -786,7 +786,8 @@ append_entry_w(wchar_t **wp, const wchar
 		} else if (tag == ARCHIVE_ENTRY_ACL_USER
 		    || tag == ARCHIVE_ENTRY_ACL_GROUP) {
 			append_id_w(wp, id);
-			id = -1;
+			if ((type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) == 0)
+				id = -1;
 		}
 		/* Solaris style has no second colon after other and mask */
 		if (((flags & ARCHIVE_ENTRY_ACL_STYLE_SOLARIS) == 0)
@@ -1042,7 +1043,8 @@ append_entry(char **p, const char *prefi
 		} else if (tag == ARCHIVE_ENTRY_ACL_USER
 		    || tag == ARCHIVE_ENTRY_ACL_GROUP) {
 			append_id(p, id);
-			id = -1;
+			if ((type & ARCHIVE_ENTRY_ACL_TYPE_NFS4) == 0)
+				id = -1;
 		}
 		/* Solaris style has no second colon after other and mask */
 		if (((flags & ARCHIVE_ENTRY_ACL_STYLE_SOLARIS) == 0)
@@ -1328,6 +1330,7 @@ archive_acl_from_text_w(struct archive_a
 			    tag == ARCHIVE_ENTRY_ACL_GROUP) {
 				n = 1;
 				name = field[1];
+				isint_w(name.start, name.end, &id);
 			} else
 				n = 0;
 
@@ -1799,6 +1802,7 @@ archive_acl_from_text_l(struct archive_a
 			    tag == ARCHIVE_ENTRY_ACL_GROUP) {
 				n = 1;
 				name = field[1];
+				isint(name.start, name.end, &id);
 			} else
 				n = 0;
 

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -526,6 +526,11 @@ setup_acls(struct archive_read_disk *a,
 
 	/* Only directories can have default ACLs. */
 	if (S_ISDIR(archive_entry_mode(entry))) {
+#if HAVE_ACL_GET_FD_NP
+		if (*fd >= 0)
+			acl = acl_get_fd_np(*fd, ACL_TYPE_DEFAULT);
+		else
+#endif
 		acl = acl_get_file(accpath, ACL_TYPE_DEFAULT);
 		if (acl != NULL) {
 			r = translate_acl(a, entry, acl,
@@ -581,7 +586,10 @@ static struct {
         {ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, ACL_ENTRY_FILE_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, ACL_ENTRY_DIRECTORY_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
-	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY},
+	{ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_SUCCESSFUL_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, ACL_ENTRY_FAILED_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED}
 };
 #endif
 static int

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_posix.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_posix.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_disk_posix.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -675,7 +675,7 @@ setup_suitable_read_buffer(struct archiv
 				asize = cf->min_xfer_size;
 
 			/* Increase a buffer size up to 64K bytes in
-			 * a proper incremant size. */
+			 * a proper increment size. */
 			while (asize < 1024*64)
 				asize += incr;
 			/* Take a margin to adjust to the filesystem
@@ -1656,7 +1656,7 @@ setup_current_filesystem(struct archive_
 		archive_set_error(&a->archive, errno, "statvfs failed");
 		return (ARCHIVE_FAILED);
 	} else if (xr == 1) {
-		/* Usuall come here unless NetBSD supports _PC_REC_XFER_ALIGN
+		/* Usually come here unless NetBSD supports _PC_REC_XFER_ALIGN
 		 * for pathconf() function. */
 		t->current_filesystem->xfer_align = sfs.f_frsize;
 		t->current_filesystem->max_xfer_size = -1;
@@ -1944,7 +1944,7 @@ setup_current_filesystem(struct archive_
 	if (nm == -1)
 #  endif /* _PC_NAME_MAX */
 		/*
-		 * Some sysmtes (HP-UX or others?) incorrectly defined
+		 * Some systems (HP-UX or others?) incorrectly defined
 		 * NAME_MAX macro to be a smaller value.
 		 */
 #  if defined(NAME_MAX) && NAME_MAX >= 255

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -180,7 +180,7 @@ lz4_reader_bid(struct archive_read_filte
 			return (0);
 		bits_checked += 8;
 		BD = buffer[5];
-		/* A block maximum size shuld be more than 3. */
+		/* A block maximum size should be more than 3. */
 		if (((BD & 0x70) >> 4) < 4)
 			return (0);
 		/* Reserved bits must be "0". */
@@ -417,7 +417,7 @@ lz4_filter_read_descriptor(struct archiv
 	/* Reserved bits must be zero. */
 	if (bd & 0x8f)
 		goto malformed_error;
-	/* Get a maxinum block size. */
+	/* Get a maximum block size. */
 	switch (read_buf[1] >> 4) {
 	case 4: /* 64 KB */
 		state->flags.block_maximum_size = 64 * 1024;
@@ -627,7 +627,7 @@ lz4_filter_read_default_stream(struct ar
 
 	if (state->stage == SELECT_STREAM) {
 		state->stage = READ_DEFAULT_STREAM;
-		/* First, read a desciprtor. */
+		/* First, read a descriptor. */
 		if((ret = lz4_filter_read_descriptor(self)) != ARCHIVE_OK)
 			return (ret);
 		state->stage = READ_DEFAULT_BLOCK;

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -436,7 +436,7 @@ lzop_filter_read(struct archive_read_fil
 	}
 
 	/*
-	 * Drive lzo uncompresison.
+	 * Drive lzo uncompression.
 	 */
 	out_size = (lzo_uint)state->uncompressed_size;
 	r = lzo1x_decompress_safe(b, (lzo_uint)state->compressed_size,

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_7zip.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_7zip.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_7zip.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -552,7 +552,7 @@ skip_sfx(struct archive_read *a, ssize_t
 	/*
 	 * If bytes_avail > SFX_MIN_ADDR we do not have to call
 	 * __archive_read_seek() at this time since we have
-	 * alredy had enough data.
+	 * already had enough data.
 	 */
 	if (bytes_avail > SFX_MIN_ADDR)
 		__archive_read_consume(a, SFX_MIN_ADDR);
@@ -760,7 +760,7 @@ archive_read_format_7zip_read_header(str
 			symsize += size;
 		}
 		if (symsize == 0) {
-			/* If there is no synname, handle it as a regular
+			/* If there is no symname, handle it as a regular
 			 * file. */
 			zip_entry->mode &= ~AE_IFMT;
 			zip_entry->mode |= AE_IFREG;
@@ -3288,7 +3288,7 @@ read_stream(struct archive_read *a, cons
 		return (r);
 
 	/*
-	 * Skip the bytes we alrady has skipped in skip_stream().
+	 * Skip the bytes we already has skipped in skip_stream().
 	 */
 	while (skip_bytes) {
 		ssize_t skipped;
@@ -3506,7 +3506,7 @@ setup_decode_folder(struct archive_read 
 				return (ARCHIVE_FATAL);
 			}
 
-			/* Allocate memory for the decorded data of a sub
+			/* Allocate memory for the decoded data of a sub
 			 * stream. */
 			b[i] = malloc((size_t)zip->folder_outbytes_remaining);
 			if (b[i] == NULL) {
@@ -3591,7 +3591,7 @@ skip_stream(struct archive_read *a, size
 	if (zip->folder_index == 0) {
 		/*
 		 * Optimization for a list mode.
-		 * Avoid unncecessary decoding operations.
+		 * Avoid unnecessary decoding operations.
 		 */
 		zip->si.ci.folders[zip->entry->folderIndex].skipped_bytes
 		    += skip_bytes;

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -322,7 +322,7 @@ struct iso9660 {
 
 	struct archive_string pathname;
 	char	seenRockridge;	/* Set true if RR extensions are used. */
-	char	seenSUSP;	/* Set true if SUSP is beging used. */
+	char	seenSUSP;	/* Set true if SUSP is being used. */
 	char	seenJoliet;
 
 	unsigned char	suspOffset;

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_lha.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_lha.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_lha.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -1711,7 +1711,7 @@ lha_crc16(uint16_t crc, const void *pp, 
 	 */
 	for (;len >= 8; len -= 8) {
 		/* This if statement expects compiler optimization will
-		 * remove the stament which will not be executed. */
+		 * remove the statement which will not be executed. */
 #undef bswap16
 #if defined(_MSC_VER) && _MSC_VER >= 1400  /* Visual Studio */
 #  define bswap16(x) _byteswap_ushort(x)

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_rar.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_rar.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -906,7 +906,7 @@ archive_read_format_rar_read_header(stru
                             sizeof(rar->reserved2));
       }
 
-      /* Main header is password encrytped, so we cannot read any
+      /* Main header is password encrypted, so we cannot read any
          file names or any other info about files from the header. */
       if (rar->main_flags & MHD_PASSWORD)
       {

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_tar.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_tar.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -204,13 +204,14 @@ static int	archive_read_format_tar_read_
 		    struct archive_entry *);
 static int	checksum(struct archive_read *, const void *);
 static int 	pax_attribute(struct archive_read *, struct tar *,
-		    struct archive_entry *, const char *key, const char *value);
+		    struct archive_entry *, const char *key, const char *value,
+		    size_t value_length);
 static int	pax_attribute_acl(struct archive_read *, struct tar *,
 		    struct archive_entry *, const char *, int);
 static int	pax_attribute_xattr(struct archive_entry *, const char *,
 		    const char *);
 static int 	pax_header(struct archive_read *, struct tar *,
-		    struct archive_entry *, char *attr);
+		    struct archive_entry *, struct archive_string *);
 static void	pax_time(const char *, int64_t *sec, long *nanos);
 static ssize_t	readline(struct archive_read *, struct tar *, const char **,
 		    ssize_t limit, size_t *);
@@ -1483,7 +1484,7 @@ header_pax_extensions(struct archive_rea
 	 * and then skip any fields in the standard header that were
 	 * defined in the pax header.
 	 */
-	err2 = pax_header(a, tar, entry, tar->pax_header.s);
+	err2 = pax_header(a, tar, entry, &tar->pax_header);
 	err =  err_combine(err, err2);
 	tar->entry_padding = 0x1ff & (-tar->entry_bytes_remaining);
 	return (err);
@@ -1564,16 +1565,17 @@ header_ustar(struct archive_read *a, str
  */
 static int
 pax_header(struct archive_read *a, struct tar *tar,
-    struct archive_entry *entry, char *attr)
+    struct archive_entry *entry, struct archive_string *in_as)
 {
-	size_t attr_length, l, line_length;
+	size_t attr_length, l, line_length, value_length;
 	char *p;
 	char *key, *value;
 	struct archive_string *as;
 	struct archive_string_conv *sconv;
 	int err, err2;
+	char *attr = in_as->s;
 
-	attr_length = strlen(attr);
+	attr_length = in_as->length;
 	tar->pax_hdrcharset_binary = 0;
 	archive_string_empty(&(tar->entry_gname));
 	archive_string_empty(&(tar->entry_linkpath));
@@ -1638,11 +1640,13 @@ pax_header(struct archive_read *a, struc
 		}
 		*p = '\0';
 
-		/* Identify null-terminated 'value' portion. */
 		value = p + 1;
 
+		/* Some values may be binary data */
+		value_length = attr + line_length - 1 - value;
+
 		/* Identify this attribute and set it in the entry. */
-		err2 = pax_attribute(a, tar, entry, key, value);
+		err2 = pax_attribute(a, tar, entry, key, value, value_length);
 		if (err2 == ARCHIVE_FATAL)
 			return (err2);
 		err = err_combine(err, err2);
@@ -1764,6 +1768,20 @@ pax_attribute_xattr(struct archive_entry
 }
 
 static int
+pax_attribute_schily_xattr(struct archive_entry *entry,
+	const char *name, const char *value, size_t value_length)
+{
+	if (strlen(name) < 14 || (memcmp(name, "SCHILY.xattr.", 13)) != 0)
+		return 1;
+
+	name += 13;
+
+	archive_entry_xattr_add_entry(entry, name, value, value_length);
+
+	return 0;
+}
+
+static int
 pax_attribute_acl(struct archive_read *a, struct tar *tar,
     struct archive_entry *entry, const char *value, int type)
 {
@@ -1824,7 +1842,7 @@ pax_attribute_acl(struct archive_read *a
  */
 static int
 pax_attribute(struct archive_read *a, struct tar *tar,
-    struct archive_entry *entry, const char *key, const char *value)
+    struct archive_entry *entry, const char *key, const char *value, size_t value_length)
 {
 	int64_t s;
 	long n;
@@ -1961,6 +1979,9 @@ pax_attribute(struct archive_read *a, st
 		} else if (strcmp(key, "SCHILY.realsize") == 0) {
 			tar->realsize = tar_atol10(value, strlen(value));
 			archive_entry_set_size(entry, tar->realsize);
+		} else if (strncmp(key, "SCHILY.xattr.", 13) == 0) {
+			pax_attribute_schily_xattr(entry, key, value,
+			    value_length);
 		} else if (strcmp(key, "SUN.holesdata") == 0) {
 			/* A Solaris extension for sparse. */
 			r = solaris_sparse_parse(a, tar, entry, value);

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_warc.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_warc.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_warc.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -88,7 +88,7 @@ typedef enum {
 	WT_RVIS,
 	/* conversion, unsupported */
 	WT_CONV,
-	/* continutation, unsupported at the moment */
+	/* continuation, unsupported at the moment */
 	WT_CONT,
 	/* invalid type */
 	LAST_WT
@@ -562,7 +562,7 @@ xstrpisotime(const char *s, char **endpt
 		goto out;
 	}
 
-	/* massage TM to fulfill some of POSIX' contraints */
+	/* massage TM to fulfill some of POSIX' constraints */
 	tm.tm_year -= 1900;
 	tm.tm_mon--;
 

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_zip.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_zip.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_read_support_format_zip.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -199,7 +199,7 @@ struct zip {
 	struct trad_enc_ctx	tctx;
 	char			tctx_valid;
 
-	/* WinZip AES decyption. */
+	/* WinZip AES decryption. */
 	/* Contexts used for AES decryption. */
 	archive_crypto_ctx	cctx;
 	char			cctx_valid;
@@ -242,7 +242,7 @@ trad_enc_update_keys(struct trad_enc_ctx
 }
 
 static uint8_t
-trad_enc_decypt_byte(struct trad_enc_ctx *ctx)
+trad_enc_decrypt_byte(struct trad_enc_ctx *ctx)
 {
 	unsigned temp = ctx->keys[2] | 2;
 	return (uint8_t)((temp * (temp ^ 1)) >> 8) & 0xff;
@@ -257,7 +257,7 @@ trad_enc_decrypt_update(struct trad_enc_
 	max = (unsigned)((in_len < out_len)? in_len: out_len);
 
 	for (i = 0; i < max; i++) {
-		uint8_t t = in[i] ^ trad_enc_decypt_byte(ctx);
+		uint8_t t = in[i] ^ trad_enc_decrypt_byte(ctx);
 		out[i] = t;
 		trad_enc_update_keys(ctx, t);
 	}
@@ -710,7 +710,7 @@ process_extra(struct archive_read *a, co
 			break;
 		}
 		case 0x9901:
-			/* WinZIp AES extra data field. */
+			/* WinZip AES extra data field. */
 			if (p[offset + 2] == 'A' && p[offset + 3] == 'E') {
 				/* Vendor version. */
 				zip_entry->aes_extra.vendor =
@@ -1518,7 +1518,7 @@ read_decryption_header(struct archive_re
 	case 0x6720:/* Blowfish */
 	case 0x6721:/* Twofish */
 	case 0x6801:/* RC4 */
-		/* Suuported encryption algorithm. */
+		/* Supported encryption algorithm. */
 		break;
 	default:
 		archive_set_error(&a->archive,
@@ -1627,7 +1627,7 @@ read_decryption_header(struct archive_re
 	__archive_read_consume(a, 4);
 
 	/*return (ARCHIVE_OK);
-	 * This is not fully implemnted yet.*/
+	 * This is not fully implemented yet.*/
 	archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
 	    "Encrypted file is unsupported");
 	return (ARCHIVE_FAILED);
@@ -1709,7 +1709,7 @@ init_traditional_PKWARE_decryption(struc
 		}
 
 		/*
-		 * Initialize ctx for Traditional PKWARE Decyption.
+		 * Initialize ctx for Traditional PKWARE Decryption.
 		 */
 		r = trad_enc_init(&zip->tctx, passphrase, strlen(passphrase),
 			p, ENC_HEADER_SIZE, &crcchk);

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -219,6 +219,12 @@ archive_wstring_append(struct archive_ws
 	return (as);
 }
 
+struct archive_string *
+archive_array_append(struct archive_string *as, const char *p, size_t s)
+{
+	return archive_string_append(as, p, s);
+}
+
 void
 archive_string_concat(struct archive_string *dest, struct archive_string *src)
 {
@@ -597,7 +603,7 @@ archive_wstring_append_from_mbs(struct a
 	wcs = dest->s + dest->length;
 	/*
 	 * We cannot use mbsrtowcs/mbstowcs here because those may convert
-	 * extra MBS when strlen(p) > len and one wide character consis of
+	 * extra MBS when strlen(p) > len and one wide character consists of
 	 * multi bytes.
 	 */
 	while (*mbs && mbs_length > 0) {
@@ -1248,7 +1254,7 @@ create_sconv_object(const char *fc, cons
 		sc->cd = iconv_open(tc, fc);
 		if (sc->cd == (iconv_t)-1 && (sc->flag & SCONV_BEST_EFFORT)) {
 			/*
-			 * Unfortunaly, all of iconv implements do support 
+			 * Unfortunately, all of iconv implements do support
 			 * "CP932" character-set, so we should use "SJIS"
 			 * instead if iconv_open failed.
 			 */
@@ -1261,7 +1267,7 @@ create_sconv_object(const char *fc, cons
 		/*
 		 * archive_mstring on Windows directly convert multi-bytes
 		 * into archive_wstring in order not to depend on locale
-		 * so that you can do a I18N programing. This will be
+		 * so that you can do a I18N programming. This will be
 		 * used only in archive_mstring_copy_mbs_len_l so far.
 		 */
 		if (flag & SCONV_FROM_CHARSET) {
@@ -1726,7 +1732,7 @@ archive_string_conversion_from_charset(s
  * in tar or zip files. But mbstowcs/wcstombs(CRT) usually use CP_ACP
  * unless you use setlocale(LC_ALL, ".OCP")(specify CP_OEMCP).
  * So we should make a string conversion between CP_ACP and CP_OEMCP
- * for compatibillty.
+ * for compatibility.
  */
 #if defined(_WIN32) && !defined(__CYGWIN__)
 struct archive_string_conv *
@@ -2220,7 +2226,7 @@ best_effort_strncat_in_locale(struct arc
 
 	/*
 	 * If a character is ASCII, this just copies it. If not, this
-	 * assigns '?' charater instead but in UTF-8 locale this assigns
+	 * assigns '?' character instead but in UTF-8 locale this assigns
 	 * byte sequence 0xEF 0xBD 0xBD, which are code point U+FFFD,
 	 * a Replacement Character in Unicode.
 	 */
@@ -2554,7 +2560,7 @@ utf16_to_unicode(uint32_t *pwc, const ch
 
 	/*
 	 * Surrogate pair values(0xd800 through 0xdfff) are only
-	 * used by UTF-16, so, after above culculation, the code
+	 * used by UTF-16, so, after above calculation, the code
 	 * must not be surrogate values, and Unicode has no codes
 	 * larger than 0x10ffff. Thus, those are not legal Unicode
 	 * values.
@@ -2903,7 +2909,7 @@ get_nfc(uint32_t uc, uint32_t uc2)
 /*
  * Normalize UTF-8/UTF-16BE characters to Form C and copy the result.
  *
- * TODO: Convert composition exclusions,which are never converted
+ * TODO: Convert composition exclusions, which are never converted
  * from NFC,NFD,NFKC and NFKD, to Form C.
  */
 static int
@@ -3437,7 +3443,7 @@ strncat_from_utf8_libarchive2(struct arc
 		}
 
 		/*
-		 * As libarchie 2.x, translates the UTF-8 characters into
+		 * As libarchive 2.x, translates the UTF-8 characters into
 		 * wide-characters in the assumption that WCS is Unicode.
 		 */
 		if (n < 0) {
@@ -3947,7 +3953,7 @@ archive_mstring_get_mbs_l(struct archive
 
 #if defined(_WIN32) && !defined(__CYGWIN__)
 	/*
-	 * Internationalization programing on Windows must use Wide
+	 * Internationalization programming on Windows must use Wide
 	 * characters because Windows platform cannot make locale UTF-8.
 	 */
 	if (sc != NULL && (aes->aes_set & AES_SET_WCS) != 0) {
@@ -4079,7 +4085,7 @@ archive_mstring_copy_mbs_len_l(struct ar
 	archive_string_empty(&(aes->aes_utf8));
 #if defined(_WIN32) && !defined(__CYGWIN__)
 	/*
-	 * Internationalization programing on Windows must use Wide
+	 * Internationalization programming on Windows must use Wide
 	 * characters because Windows platform cannot make locale UTF-8.
 	 */
 	if (sc == NULL) {

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.h
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.h	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string.h	Fri Jan 13 09:32:11 2017	(r312060)
@@ -81,6 +81,10 @@ archive_strappend_char(struct archive_st
 struct archive_wstring *
 archive_wstrappend_wchar(struct archive_wstring *, wchar_t);
 
+/* Append a raw array to an archive_string, resizing as necessary */
+struct archive_string *
+archive_array_append(struct archive_string *, const char *, size_t);
+
 /* Convert a Unicode string to current locale and append the result. */
 /* Returns -1 if conversion fails. */
 int

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string_composition.h
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string_composition.h	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_string_composition.h	Fri Jan 13 09:32:11 2017	(r312060)
@@ -1009,7 +1009,7 @@ static const char u_decomposable_blocks[
 	(((uc) > 0x1D244)?0:\
 	ccc_val[ccc_val_index[ccc_index[(uc)>>8]][((uc)>>4)&0x0F]][(uc)&0x0F])
 
-/* The table of the value of Canonical Cimbining Class */
+/* The table of the value of Canonical Combining Class */
 static const unsigned char ccc_val[][16] = {
  /* idx=0: XXXX0 - XXXXF */
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -231,7 +231,7 @@ __archive_write_filter(struct archive_wr
 	if (length == 0)
 		return(ARCHIVE_OK);
 	if (f->write == NULL)
-		/* If unset, a fatal error has already ocuured, so this filter
+		/* If unset, a fatal error has already occurred, so this filter
 		 * didn't open. We cannot write anything. */
 		return(ARCHIVE_FATAL);
 	r = (f->write)(f, buff, length);

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_add_filter_xz.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_add_filter_xz.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_add_filter_xz.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -233,7 +233,7 @@ archive_compressor_xz_init_stream(struct
 	if (f->code == ARCHIVE_FILTER_XZ) {
 #ifdef HAVE_LZMA_STREAM_ENCODER_MT
 		if (data->threads != 1) {
-			bzero(&mt_options, sizeof(mt_options));
+			memset(&mt_options, 0, sizeof(mt_options));
 			mt_options.threads = data->threads;
 			mt_options.timeout = 300;
 			mt_options.filters = data->lzmafilters;

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_disk_acl.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_disk_acl.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_disk_acl.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -124,7 +124,10 @@ static struct {
 	{ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, ACL_ENTRY_FILE_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, ACL_ENTRY_DIRECTORY_INHERIT},
 	{ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
-	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY},
+	{ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_SUCCESSFUL_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, ACL_ENTRY_FAILED_ACCESS},
+	{ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED}
 };
 #endif
 
@@ -292,29 +295,41 @@ set_acl(struct archive *a, int fd, const
 	}
 
 	/* Try restoring the ACL through 'fd' if we can. */
-#if HAVE_ACL_SET_FD
-	if (fd >= 0 && acl_type == ACL_TYPE_ACCESS && acl_set_fd(fd, acl) == 0)
-		ret = ARCHIVE_OK;
-	else
-#else
+#if HAVE_ACL_SET_FD_NP || HAVE_ACL_SET_FD
 #if HAVE_ACL_SET_FD_NP
-	if (fd >= 0 && acl_set_fd_np(fd, acl, acl_type) == 0)
-		ret = ARCHIVE_OK;
-	else
-#endif
-#endif
+	if (fd >= 0) {
+		if (acl_set_fd_np(fd, acl, acl_type) == 0)
+#else /* HAVE_ACL_SET_FD */
+	if (fd >= 0 && acl_type == ACL_TYPE_ACCESS) {
+		if (acl_set_fd(fd, acl) == 0)
+#endif
+			ret = ARCHIVE_OK;
+		else {
+			if (errno == EOPNOTSUPP) {
+				/* Filesystem doesn't support ACLs */
+				ret = ARCHIVE_OK;
+			} else {
+				archive_set_error(a, errno,
+				    "Failed to set %s acl on fd", tname);
+			}
+		}
+	} else
+#endif	/* HAVE_ACL_SET_FD_NP || HAVE_ACL_SET_FD */
 #if HAVE_ACL_SET_LINK_NP
-	  if (acl_set_link_np(name, acl_type, acl) != 0) {
-		archive_set_error(a, errno, "Failed to set %s acl", tname);
-		ret = ARCHIVE_WARN;
-	  }
+	if (acl_set_link_np(name, acl_type, acl) != 0) {
 #else
 	/* TODO: Skip this if 'name' is a symlink. */
 	if (acl_set_file(name, acl_type, acl) != 0) {
-		archive_set_error(a, errno, "Failed to set %s acl", tname);
-		ret = ARCHIVE_WARN;
-	}
 #endif
+		if (errno == EOPNOTSUPP) {
+			/* Filesystem doesn't support ACLs */
+			ret = ARCHIVE_OK;
+		} else {
+			archive_set_error(a, errno, "Failed to set %s acl",
+			    tname);
+			ret = ARCHIVE_WARN;
+		}
+	}
 exit_free:
 	acl_free(acl);
 	return (ret);

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_7zip.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_7zip.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -1358,7 +1358,7 @@ make_header(struct archive_write *a, uin
 	if (r < 0)
 		return (r);
 
-	/* Write Nume size. */
+	/* Write Name size. */
 	r = enc_uint64(a, zip->total_bytes_entry_name+1);
 	if (r < 0)
 		return (r);

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_pax.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_pax.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_pax.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -62,10 +62,17 @@ struct pax {
 	struct sparse_block	*sparse_tail;
 	struct archive_string_conv *sconv_utf8;
 	int			 opt_binary;
+
+	unsigned flags;
+#define WRITE_SCHILY_XATTR       (1 << 0)
+#define WRITE_LIBARCHIVE_XATTR   (1 << 1)
 };
 
 static void		 add_pax_attr(struct archive_string *, const char *key,
 			     const char *value);
+static void		 add_pax_attr_binary(struct archive_string *,
+			     const char *key,
+			     const char *value, size_t value_len);
 static void		 add_pax_attr_int(struct archive_string *,
 			     const char *key, int64_t value);
 static void		 add_pax_attr_time(struct archive_string *,
@@ -136,6 +143,8 @@ archive_write_set_format_pax(struct arch
 		    "Can't allocate pax data");
 		return (ARCHIVE_FATAL);
 	}
+	pax->flags = WRITE_LIBARCHIVE_XATTR | WRITE_SCHILY_XATTR;
+
 	a->format_data = pax;
 	a->format_name = "pax";
 	a->format_options = archive_write_pax_options;
@@ -275,6 +284,17 @@ add_pax_attr_int(struct archive_string *
 static void
 add_pax_attr(struct archive_string *as, const char *key, const char *value)
 {
+	add_pax_attr_binary(as, key, value, strlen(value));
+}
+
+/*
+ * Add a key/value attribute to the pax header.  This function handles
+ * binary values.
+ */
+static void
+add_pax_attr_binary(struct archive_string *as, const char *key,
+		    const char *value, size_t value_len)
+{
 	int digits, i, len, next_ten;
 	char tmp[1 + 3 * sizeof(int)];	/* < 3 base-10 digits per byte */
 
@@ -282,7 +302,7 @@ add_pax_attr(struct archive_string *as, 
 	 * PAX attributes have the following layout:
 	 *     <len> <space> <key> <=> <value> <nl>
 	 */
-	len = 1 + (int)strlen(key) + 1 + (int)strlen(value) + 1;
+	len = 1 + (int)strlen(key) + 1 + (int)value_len + 1;
 
 	/*
 	 * The <len> field includes the length of the <len> field, so
@@ -313,21 +333,47 @@ add_pax_attr(struct archive_string *as, 
 	archive_strappend_char(as, ' ');
 	archive_strcat(as, key);
 	archive_strappend_char(as, '=');
-	archive_strcat(as, value);
+	archive_array_append(as, value, value_len);
 	archive_strappend_char(as, '\n');
 }
 
+static void
+archive_write_pax_header_xattr(struct pax *pax, const char *encoded_name,
+    const void *value, size_t value_len)
+{
+	struct archive_string s;
+	char *encoded_value;
+
+	if (pax->flags & WRITE_LIBARCHIVE_XATTR) {
+		encoded_value = base64_encode((const char *)value, value_len);
+
+		if (encoded_name != NULL && encoded_value != NULL) {
+			archive_string_init(&s);
+			archive_strcpy(&s, "LIBARCHIVE.xattr.");
+			archive_strcat(&s, encoded_name);
+			add_pax_attr(&(pax->pax_header), s.s, encoded_value);
+			archive_string_free(&s);
+		}
+		free(encoded_value);
+	}
+	if (pax->flags & WRITE_SCHILY_XATTR) {
+		archive_string_init(&s);
+		archive_strcpy(&s, "SCHILY.xattr.");
+		archive_strcat(&s, encoded_name);
+		add_pax_attr_binary(&(pax->pax_header), s.s, value, value_len);
+		archive_string_free(&s);
+	}
+}
+
 static int
 archive_write_pax_header_xattrs(struct archive_write *a,
     struct pax *pax, struct archive_entry *entry)
 {
-	struct archive_string s;
 	int i = archive_entry_xattr_reset(entry);
 
 	while (i--) {
 		const char *name;
 		const void *value;
-		char *encoded_value;
 		char *url_encoded_name = NULL, *encoded_name = NULL;
 		size_t size;
 		int r;
@@ -348,16 +394,9 @@ archive_write_pax_header_xattrs(struct a
 			}
 		}
 
-		encoded_value = base64_encode((const char *)value, size);
+		archive_write_pax_header_xattr(pax, encoded_name,
+		    value, size);
 
-		if (encoded_name != NULL && encoded_value != NULL) {
-			archive_string_init(&s);
-			archive_strcpy(&s, "LIBARCHIVE.xattr.");
-			archive_strcat(&s, encoded_name);
-			add_pax_attr(&(pax->pax_header), s.s, encoded_value);
-			archive_string_free(&s);
-		}
-		free(encoded_value);
 	}
 	return (ARCHIVE_OK);
 }

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_xar.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_xar.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_xar.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -2913,7 +2913,7 @@ compression_init_encoder_xz(struct archi
 	*strm = lzma_init_data;
 #ifdef HAVE_LZMA_STREAM_ENCODER_MT
 	if (threads > 1) {
-		bzero(&mt_options, sizeof(mt_options));
+		memset(&mt_options, 0, sizeof(mt_options));
 		mt_options.threads = threads;
 		mt_options.timeout = 300;
 		mt_options.filters = lzmafilters;

Modified: projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_zip.c
==============================================================================
--- projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_zip.c	Fri Jan 13 09:19:09 2017	(r312059)
+++ projects/bsnmp-ipv6-mib/contrib/libarchive/libarchive/archive_write_set_format_zip.c	Fri Jan 13 09:32:11 2017	(r312060)
@@ -878,7 +878,7 @@ archive_write_zip_header(struct archive_
 	        || zip->entry_encryption == ENCRYPTION_WINZIP_AES256)) {
 
 		memcpy(e, "\001\231\007\000\001\000AE", 8);
-		/* AES vendoer version AE-2 does not store a CRC.
+		/* AES vendor version AE-2 does not store a CRC.
 		 * WinZip 11 uses AE-1, which does store the CRC,
 		 * but it does not store the CRC when the file size
 		 * is less than 20 bytes. So we simulate what
@@ -1013,7 +1013,7 @@ archive_write_zip_data(struct archive_wr
 	if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) {

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

From owner-svn-src-projects@freebsd.org  Fri Jan 13 12:59:30 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 7829BCAEE76
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Fri, 13 Jan 2017 12:59:30 +0000 (UTC) (envelope-from ae@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 293BA12DD;
 Fri, 13 Jan 2017 12:59:30 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0DCxT7E060007;
 Fri, 13 Jan 2017 12:59:29 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0DCxT5O060006;
 Fri, 13 Jan 2017 12:59:29 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701131259.v0DCxT5O060006@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 13 Jan 2017 12:59:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312070 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Jan 2017 12:59:30 -0000

Author: ae
Date: Fri Jan 13 12:59:29 2017
New Revision: 312070
URL: https://svnweb.freebsd.org/changeset/base/312070

Log:
  Require the presence of tunnel endpoints addresses for tunnel mode IPsec
  requets.
  
  When we are parsing SADB_X_SPDADD message, check that specified IPsec
  request contains tunnel endpoints addresses for tunnel mode requests.
  setkey(8) doesn't allow create policies with empty tunnel specification
  like 'esp/tunnel//require'. But it is possible to receive such policies
  from IKE. This leads to the presence of zero filled sockaddr structures
  in the IPsec request.
  
  Almost all the IPsec code assumes that sockaddr structures have correctly
  filled sa_len and sa_family fields. We use addresses from IPsec request
  for outbound SA lookup in ipsec[46]_allocsa() functions. Using these
  addresses key_allocsa_policy() chooses bucket from SAHADDRHASH table
  when does lookup for outbound SA. Also when check_policy_history is enabled
  ipsec_check_history() uses destination address to check that packet was
  handled by correct SA when we do inbound policy check.
  
  It appears that racoon sometimes can install such policies. Previously
  this was not an error due to several reasons. First of, we didn't have
  any hash tables and did the lookup among all SAs (no need to choose the
  bucket where lookup will be done). Second, since sa_family is zero,
  key_sockaddrcmp() has used bcmp() to compare full sockaddr structures,
  but since sa_len is zero too, it always matches addresses.
  In some cases this can be considered as feature, because we can use
  empty tunnel specification like an "any" selector. But for now I think
  it is a bug, because the lookup results are not predictable and any
  changes in SADB (new SA added or deleted) may change the lookup result.
  
  Note that linux's PF_KEY implementation also considers such policies as
  invalid.
  
  Reported by:	Matthew Grooms <mgrooms shrew net>

Modified:
  projects/ipsec/sys/netipsec/key.c

Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c	Fri Jan 13 12:47:44 2017	(r312069)
+++ projects/ipsec/sys/netipsec/key.c	Fri Jan 13 12:59:29 2017	(r312070)
@@ -1499,7 +1499,6 @@ key_msg2sp(struct sadb_x_policy *xpl0, s
 			isr->level = xisr->sadb_x_ipsecrequest_level;
 
 			/* set IP addresses if there */
-			/* XXXAE: those are needed only for tunnel mode */
 			if (xisr->sadb_x_ipsecrequest_len > sizeof(*xisr)) {
 				struct sockaddr *paddr;
 
@@ -1539,6 +1538,18 @@ key_msg2sp(struct sadb_x_policy *xpl0, s
 					return (NULL);
 				}
 				bcopy(paddr, &isr->saidx.dst, paddr->sa_len);
+			} else {
+				/*
+				 * Addresses for TUNNEL mode requests are
+				 * mandatory.
+				 */
+				if (isr->saidx.mode == IPSEC_MODE_TUNNEL) {
+					ipseclog((LOG_DEBUG, "%s: missing ",
+					    "request addresses.\n", __func__));
+					key_freesp(&newsp);
+					*error = EINVAL;
+					return (NULL);
+				}
 			}
 			tlen -= xisr->sadb_x_ipsecrequest_len;
 

From owner-svn-src-projects@freebsd.org  Fri Jan 13 13:03:48 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 E85E7CAEFD7
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Fri, 13 Jan 2017 13:03:48 +0000 (UTC) (envelope-from ae@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 A45551742;
 Fri, 13 Jan 2017 13:03:48 +0000 (UTC) (envelope-from ae@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0DD3lUC064206;
 Fri, 13 Jan 2017 13:03:47 GMT (envelope-from ae@FreeBSD.org)
Received: (from ae@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0DD3l4b064205;
 Fri, 13 Jan 2017 13:03:47 GMT (envelope-from ae@FreeBSD.org)
Message-Id: <201701131303.v0DD3l4b064205@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ae set sender to ae@FreeBSD.org
 using -f
From: "Andrey V. Elsukov" <ae@FreeBSD.org>
Date: Fri, 13 Jan 2017 13:03:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312071 - projects/ipsec/sys/netipsec
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 13 Jan 2017 13:03:49 -0000

Author: ae
Date: Fri Jan 13 13:03:47 2017
New Revision: 312071
URL: https://svnweb.freebsd.org/changeset/base/312071

Log:
  Remove extra comma.

Modified:
  projects/ipsec/sys/netipsec/key.c

Modified: projects/ipsec/sys/netipsec/key.c
==============================================================================
--- projects/ipsec/sys/netipsec/key.c	Fri Jan 13 12:59:29 2017	(r312070)
+++ projects/ipsec/sys/netipsec/key.c	Fri Jan 13 13:03:47 2017	(r312071)
@@ -1544,7 +1544,7 @@ key_msg2sp(struct sadb_x_policy *xpl0, s
 				 * mandatory.
 				 */
 				if (isr->saidx.mode == IPSEC_MODE_TUNNEL) {
-					ipseclog((LOG_DEBUG, "%s: missing ",
+					ipseclog((LOG_DEBUG, "%s: missing "
 					    "request addresses.\n", __func__));
 					key_freesp(&newsp);
 					*error = EINVAL;

From owner-svn-src-projects@freebsd.org  Sat Jan 14 06:46:04 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 2B500CAFD99
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 06:46:04 +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 D877E1831;
 Sat, 14 Jan 2017 06:46:03 +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 v0E6k3Kw008358;
 Sat, 14 Jan 2017 06:46:03 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E6k3wZ008357;
 Sat, 14 Jan 2017 06:46:03 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140646.v0E6k3wZ008357@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 06:46:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312125 - projects/netbsd-tests-upstream-01-2017
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 06:46:04 -0000

Author: ngie
Date: Sat Jan 14 06:46:02 2017
New Revision: 312125
URL: https://svnweb.freebsd.org/changeset/base/312125

Log:
  Create project for upstreaming additional content of contrib/netbsd-tests
  to reduce content thrashing on ^/head

Added:
     - copied from r312124, head/
Directory Properties:
  projects/netbsd-tests-upstream-01-2017/   (props changed)

From owner-svn-src-projects@freebsd.org  Sat Jan 14 06:49:24 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 F3BC5CAFDF7
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 06:49:23 +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 83C9E197C;
 Sat, 14 Jan 2017 06:49:23 +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 v0E6nMOx008577;
 Sat, 14 Jan 2017 06:49:22 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E6nHZI008523;
 Sat, 14 Jan 2017 06:49:17 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140649.v0E6nHZI008523@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 06:49:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312126 - in
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests: dev/cgd
 dev/clock_subr dev/scsipi dev/sysmon fs/common fs/ffs fs/hfs fs/kernfs fs/lfs
 fs/msdosfs fs/nfs fs/null...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 06:49:24 -0000

Author: ngie
Date: Sat Jan 14 06:49:17 2017
New Revision: 312126
URL: https://svnweb.freebsd.org/changeset/base/312126

Log:
  Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123
  
  Sponsored by:	Dell EMC Isilon

Added:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/clock_subr/
     - copied from r312123, vendor/NetBSD/tests/dist/dev/clock_subr/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/arch/
     - copied from r312123, vendor/NetBSD/tests/dist/kernel/arch/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/exect/
     - copied from r312123, vendor/NetBSD/tests/dist/lib/libc/gen/exect/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libpthread_dbg/
     - copied from r312123, vendor/NetBSD/tests/dist/lib/libpthread_dbg/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librefuse/
     - copied from r312123, vendor/NetBSD/tests/dist/lib/librefuse/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/if_tun/
     - copied from r312123, vendor/NetBSD/tests/dist/net/if_tun/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/if_vlan/
     - copied from r312123, vendor/NetBSD/tests/dist/net/if_vlan/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/sys/uvm/
     - copied from r312123, vendor/NetBSD/tests/dist/sys/uvm/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/usr.bin/mixerctl/
     - copied from r312123, vendor/NetBSD/tests/dist/usr.bin/mixerctl/
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/usr.bin/uniq/
     - copied from r312123, vendor/NetBSD/tests/dist/usr.bin/uniq/
Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/scsipi/t_cd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/sysmon/t_swwdog.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/common/h_fsmacros.h
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/h_quota2_tests.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_fifos.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_mount.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_1.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_remount.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_log.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_v2.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/hfs/t_pathconvert.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/kernfs/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/lfs/t_pr.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/msdosfs/t_snapshot.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nfs/t_mountd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nullfs/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_nullpts.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_ptyfs.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_fuzz.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_io.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/tmpfs/t_renamerace.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/umapfs/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/union/t_pr.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_full.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_io.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_renamerace.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_ro.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_union.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_unpriv.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vfsops.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vnops.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/include/sys/t_socket.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file2.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc1.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_fifo.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_pipe.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_ttypty.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_extent.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_filedesc.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_lock.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_ptrace.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_ptrace_wait.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_pty.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_rnd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_glob.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/regex/debug.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/regex/t_exhaust.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/regex/t_regex_att.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_clock_gettime.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_connect.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_dup.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_getrusage.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_link.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_listen.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_mmap.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgctl.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgrcv.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgsnd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_nanosleep.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_pipe.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_pipe2.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_posix_fadvise.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_revoke.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_select.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_setrlimit.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigaction.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_socketpair.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_stat.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_truncate.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_umask.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_unlink.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_wait.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_write.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_ilogb.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_scalbn.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libposix/t_rename.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librumpclient/t_fd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/semaphore/sem.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/libexec/ld.elf_so/t_dlerror-cleared.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/libexec/ld.elf_so/t_dlerror-false.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/libexec/ld.elf_so/t_dlinfo.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/libexec/ld.elf_so/t_ifunc.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/modules/t_builtin.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpf/t_bpf.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpf/t_mbuf.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpfilter/t_bpfilter.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpfjit/t_bpfjit.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpfjit/t_cop.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpfjit/t_extmem.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/bpfjit/t_mbuf.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/carp/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/config/netconfig.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/icmp/t_forward.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/icmp/t_ping.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/if_loop/t_pr.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/ndp/t_ra.sh
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/net/net/t_raw.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/modautoload/t_modautoload.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_kern.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_lwproc.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_modcmd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_modlinkset.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_signals.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_threads.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_tsleep.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpkern/t_vm.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpvfs/t_basic.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpvfs/t_etfs.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/rump/rumpvfs/t_p2kifs.c
Directory Properties:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/   (props changed)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_cgd_3des.c,v 1.1 2016/11/11 07:39:58 alnsn Exp $	*/
+/*	$NetBSD: t_cgd_3des.c,v 1.2 2017/01/13 21:30:39 christos Exp $	*/
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -48,7 +48,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define SECSIZE 512
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_cgd_aes.c,v 1.5 2016/12/11 00:23:44 alnsn Exp $	*/
+/*	$NetBSD: t_cgd_aes.c,v 1.6 2017/01/13 21:30:39 christos Exp $	*/
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
  * Copyright (c) 2007 The Institute of Electrical and Electronics Engineers, Inc
@@ -49,7 +49,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define SECSIZE 512
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_cgd_blowfish.c,v 1.1 2016/11/10 23:44:36 alnsn Exp $	*/
+/*	$NetBSD: t_cgd_blowfish.c,v 1.2 2017/01/13 21:30:39 christos Exp $	*/
 /*-
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -48,7 +48,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define SECSIZE 512
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/scsipi/t_cd.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/scsipi/t_cd.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/scsipi/t_cd.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_cd.c,v 1.7 2014/04/25 00:24:39 pooka Exp $	*/
+/*	$NetBSD: t_cd.c,v 1.8 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * Copyright (c) 2010 Antti Kantee.  All Rights Reserved.
@@ -39,7 +39,7 @@
 
 #include "scsitest.h"
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(noisyeject);
 ATF_TC_HEAD(noisyeject, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/sysmon/t_swwdog.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/sysmon/t_swwdog.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/dev/sysmon/t_swwdog.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_swwdog.c,v 1.6 2015/04/23 04:49:37 pgoyette Exp $	*/
+/*	$NetBSD: t_swwdog.c,v 1.7 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * Copyright (c) 2010 Antti Kantee.  All Rights Reserved.
@@ -43,7 +43,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static volatile sig_atomic_t tcount;
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/common/h_fsmacros.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/common/h_fsmacros.h	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/common/h_fsmacros.h	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_fsmacros.h,v 1.40 2015/08/29 19:19:43 dholland Exp $	*/
+/*	$NetBSD: h_fsmacros.h,v 1.41 2017/01/13 21:30:39 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 
 #include <rump/rump.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define FSPROTOS(_fs_)							\
 int _fs_##_fstest_newfs(const atf_tc_t *, void **, const char *,	\

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/h_quota2_tests.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/h_quota2_tests.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/h_quota2_tests.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_quota2_tests.c,v 1.4 2012/09/30 21:26:57 bouyer Exp $	*/
+/*	$NetBSD: h_quota2_tests.c,v 1.5 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * rump server for advanced quota tests
@@ -22,7 +22,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 int background = 0;
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_fifos.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_fifos.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_fifos.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_fifos.c,v 1.5 2010/11/07 17:51:17 jmmv Exp $	*/
+/*	$NetBSD: t_fifos.c,v 1.6 2017/01/13 21:30:39 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 
 #include <ufs/ufs/ufsmount.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC_WITH_CLEANUP(fifos);
 ATF_TC_HEAD(fifos, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_mount.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_mount.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_mount.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_mount.c,v 1.13 2012/11/27 16:01:49 jakllsch Exp $	*/
+/*	$NetBSD: t_mount.c,v 1.14 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * Basic tests for mounting
@@ -25,7 +25,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(48Kimage);
 ATF_TC_HEAD(48Kimage, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_1.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_1.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_1.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_quota2_1.c,v 1.4 2012/03/15 02:02:22 joerg Exp $	*/
+/*	$NetBSD: t_quota2_1.c,v 1.5 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * Basic tests for quota2
@@ -18,7 +18,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 do_quota(const atf_tc_t *tc, int n, const char *newfs_opts, int log)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_remount.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_remount.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_quota2_remount.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_quota2_remount.c,v 1.4 2012/03/15 02:02:22 joerg Exp $	*/
+/*	$NetBSD: t_quota2_remount.c,v 1.5 2017/01/13 21:30:39 christos Exp $	*/
 
 /*
  * Basic tests for quota2
@@ -19,7 +19,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 do_quota(const atf_tc_t *tc, int n, const char *newfs_opts, int log)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_snapshot.c,v 1.6 2013/02/06 09:05:01 hannken Exp $	*/
+/*	$NetBSD: t_snapshot.c,v 1.7 2017/01/13 21:30:39 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -15,7 +15,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define IMGNAME "ffs.img"
 #define NEWFS "newfs -F -s 10000 " IMGNAME

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_log.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_log.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_log.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_snapshot_log.c,v 1.2 2013/02/06 09:05:01 hannken Exp $	*/
+/*	$NetBSD: t_snapshot_log.c,v 1.3 2017/01/13 21:30:39 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -15,7 +15,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define IMGNAME "ffs.img"
 #define NEWFS "newfs -F -s 10000 " IMGNAME

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_v2.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_v2.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ffs/t_snapshot_v2.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_snapshot_v2.c,v 1.2 2013/02/06 09:05:01 hannken Exp $	*/
+/*	$NetBSD: t_snapshot_v2.c,v 1.3 2017/01/13 21:30:39 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -15,7 +15,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define IMGNAME "ffs.img"
 #define NEWFS "newfs -F -s 10000 -O 2 " IMGNAME

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/hfs/t_pathconvert.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/hfs/t_pathconvert.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/hfs/t_pathconvert.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_pathconvert.c,v 1.5 2011/02/25 20:54:18 martin Exp $	*/
+/*	$NetBSD: t_pathconvert.c,v 1.6 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -18,7 +18,7 @@
 
 #include <fs/hfs/hfs.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(colonslash);
 ATF_TC_HEAD(colonslash, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/kernfs/t_basic.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/kernfs/t_basic.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/kernfs/t_basic.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_basic.c,v 1.3 2010/05/31 23:44:54 pooka Exp $	*/
+/*	$NetBSD: t_basic.c,v 1.4 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -20,7 +20,7 @@
 
 #include <miscfs/kernfs/kernfs.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(getdents);
 ATF_TC_HEAD(getdents, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/lfs/t_pr.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/lfs/t_pr.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/lfs/t_pr.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_pr.c,v 1.6 2011/02/22 18:41:05 pooka Exp $	*/
+/*	$NetBSD: t_pr.c,v 1.7 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 
 #include <ufs/ufs/ufsmount.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(mknod);
 ATF_TC_HEAD(mknod, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/msdosfs/t_snapshot.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/msdosfs/t_snapshot.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/msdosfs/t_snapshot.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_snapshot.c,v 1.3 2014/06/10 13:15:18 martin Exp $	*/
+/*	$NetBSD: t_snapshot.c,v 1.4 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define IMGNAME "msdosfs.img"
 #define NEWFS "newfs_msdos -C 5M " IMGNAME

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nfs/t_mountd.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nfs/t_mountd.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nfs/t_mountd.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_mountd.c,v 1.5 2012/02/24 13:53:46 joerg Exp $	*/
+/*	$NetBSD: t_mountd.c,v 1.6 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 #include "../common/h_fsmacros.h"
 
 ATF_TC(mountdhup);

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nullfs/t_basic.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nullfs/t_basic.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/nullfs/t_basic.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_basic.c,v 1.3 2010/06/09 08:37:16 pooka Exp $	*/
+/*	$NetBSD: t_basic.c,v 1.4 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -18,7 +18,7 @@
 #include <miscfs/nullfs/null.h>
 #include <fs/tmpfs/tmpfs_args.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(basic);
 ATF_TC_HEAD(basic, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_nullpts.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_nullpts.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_nullpts.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_nullpts.c,v 1.5 2011/01/10 11:11:04 hannken Exp $	*/
+/*	$NetBSD: t_nullpts.c,v 1.6 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -19,7 +19,7 @@
 #include <fs/ptyfs/ptyfs.h>
 #include <miscfs/nullfs/null.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 mountptyfs(const char *mp, int flags)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_ptyfs.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_ptyfs.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/ptyfs/t_ptyfs.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_ptyfs.c,v 1.1 2010/06/11 23:52:38 pooka Exp $	*/
+/*	$NetBSD: t_ptyfs.c,v 1.2 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 
 #include <fs/ptyfs/ptyfs.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 mountptyfs(const char *mp, int flags)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_basic.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_basic.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_basic.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_basic.c,v 1.13 2016/12/01 14:49:04 hannken Exp $	*/
+/*	$NetBSD: t_basic.c,v 1.14 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -20,7 +20,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 #include "../common/h_fsmacros.h"
 
 /*

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_fuzz.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_fuzz.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_fuzz.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_fuzz.c,v 1.5 2012/04/21 01:03:46 manu Exp $	*/
+/*	$NetBSD: t_fuzz.c,v 1.6 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define ITERATIONS 100
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_io.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_io.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/puffs/t_io.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_io.c,v 1.1 2010/11/12 17:33:28 pooka Exp $	*/
+/*	$NetBSD: t_io.c,v 1.2 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -20,7 +20,7 @@
 #include <rump/rump.h>
 #include <rump/rump_syscalls.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 #include "../common/h_fsmacros.h"
 
 #define MAKEOPTS(...) \

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/tmpfs/t_renamerace.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/tmpfs/t_renamerace.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/tmpfs/t_renamerace.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_renamerace.c,v 1.13 2011/08/18 21:44:55 riastradh Exp $	*/
+/*	$NetBSD: t_renamerace.c,v 1.14 2017/01/13 21:30:40 christos Exp $	*/
 
 /*
  * Modified for rump and atf from a program supplied
@@ -23,7 +23,7 @@
 
 #include <fs/tmpfs/tmpfs_args.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(renamerace2);
 ATF_TC_HEAD(renamerace2, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/umapfs/t_basic.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/umapfs/t_basic.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/umapfs/t_basic.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_basic.c,v 1.4 2010/07/19 15:35:39 pooka Exp $	*/
+/*	$NetBSD: t_basic.c,v 1.5 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -20,7 +20,7 @@
 #include <fs/tmpfs/tmpfs_args.h>
 #include <miscfs/umapfs/umap.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(basic);
 ATF_TC_HEAD(basic, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/union/t_pr.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/union/t_pr.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/union/t_pr.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_pr.c,v 1.8 2011/08/10 06:27:02 hannken Exp $	*/
+/*	$NetBSD: t_pr.c,v 1.9 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 
 #include <miscfs/union/union.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(multilayer);
 ATF_TC_HEAD(multilayer, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_full.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_full.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_full.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_full.c,v 1.8 2013/03/16 05:45:37 jmmv Exp $	*/
+/*	$NetBSD: t_full.c,v 1.9 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 /*
  * Write this much over the image size.  This is to force an NFS commit,

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_io.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_io.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_io.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_io.c,v 1.16 2015/04/04 12:34:44 riastradh Exp $	*/
+/*	$NetBSD: t_io.c,v 1.17 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define TESTSTR "this is a string.  collect enough and you'll have Em"
 #define TESTSZ sizeof(TESTSTR)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_renamerace.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_renamerace.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_renamerace.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_renamerace.c,v 1.33 2016/05/04 08:30:22 dholland Exp $	*/
+/*	$NetBSD: t_renamerace.c,v 1.34 2017/01/13 21:30:40 christos Exp $	*/
 
 /*
  * Modified for rump and atf from a program supplied
@@ -34,7 +34,7 @@
 #define FSTEST_IMGSIZE (50000 * 512)
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static volatile int quittingtime;
 pid_t wrkpid;

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_ro.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_ro.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_ro.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_ro.c,v 1.5 2011/02/22 21:23:19 yamt Exp $	*/
+/*	$NetBSD: t_ro.c,v 1.6 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define AFILE "testfile"
 #define ADIR "testdir"

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_union.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_union.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_union.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_union.c,v 1.8 2011/08/07 06:01:51 hannken Exp $	*/
+/*	$NetBSD: t_union.c,v 1.9 2017/01/13 21:30:40 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -17,7 +17,7 @@
 
 #include <miscfs/union/union.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 #include "../common/h_fsmacros.h"
 
 #define MSTR "magic bus"

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_unpriv.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_unpriv.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_unpriv.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_unpriv.c,v 1.12 2015/04/09 19:51:13 riastradh Exp $	*/
+/*	$NetBSD: t_unpriv.c,v 1.13 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define USES_OWNER							 \
 	if (FSTYPE_MSDOS(tc))						 \

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vfsops.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vfsops.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vfsops.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_vfsops.c,v 1.11 2011/04/04 19:16:58 hannken Exp $	*/
+/*	$NetBSD: t_vfsops.c,v 1.12 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 tmount(const atf_tc_t *tc, const char *path)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vnops.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vnops.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/fs/vfs/t_vnops.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_vnops.c,v 1.58 2016/08/29 02:31:46 kre Exp $	*/
+/*	$NetBSD: t_vnops.c,v 1.59 2017/01/13 21:30:40 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -43,7 +43,7 @@
 #include <rump/rump.h>
 
 #include "../common/h_fsmacros.h"
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define TESTFILE "afile"
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/include/sys/t_socket.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/include/sys/t_socket.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/include/sys/t_socket.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_socket.c,v 1.4 2015/02/27 08:30:30 martin Exp $	*/
+/*	$NetBSD: t_socket.c,v 1.5 2017/01/13 21:30:41 christos Exp $	*/
 
 #include <sys/types.h>
 #include <sys/mount.h>
@@ -18,7 +18,7 @@
 #include <unistd.h>
 #include <util.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(cmsg_sendfd_bounds);
 ATF_TC_HEAD(cmsg_sendfd_bounds, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_fifo.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fifo.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $ */
+/* $NetBSD: t_fifo.c,v 1.4 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_fifo.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $");
+__RCSID("$NetBSD: t_fifo.c,v 1.4 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/stat.h>
@@ -46,7 +46,7 @@ __RCSID("$NetBSD: t_fifo.c,v 1.3 2010/11
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 #define FIFONAME "fifo"
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_file.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $ */
+/* $NetBSD: t_file.c,v 1.4 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_file.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $");
+__RCSID("$NetBSD: t_file.c,v 1.4 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/event.h>
@@ -50,7 +50,7 @@ __RCSID("$NetBSD: t_file.c,v 1.3 2010/11
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 #define FILENAME "file"
 #define NLINES 5

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file2.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file2.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_file2.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_file2.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $ */
+/* $NetBSD: t_file2.c,v 1.4 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_file2.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $");
+__RCSID("$NetBSD: t_file2.c,v 1.4 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: t_file2.c,v 1.3 2010/1
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(file2);
 ATF_TC_HEAD(file2, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_pipe.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_pipe.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $ */
+/* $NetBSD: t_pipe.c,v 1.2 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_pipe.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $");
+__RCSID("$NetBSD: t_pipe.c,v 1.2 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: t_pipe.c,v 1.1 2009/02
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(pipe);
 ATF_TC_HEAD(pipe, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/read/t_ttypty.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_ttypty.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $ */
+/* $NetBSD: t_ttypty.c,v 1.2 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_ttypty.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $");
+__RCSID("$NetBSD: t_ttypty.c,v 1.2 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/wait.h>
@@ -45,7 +45,7 @@ __RCSID("$NetBSD: t_ttypty.c,v 1.1 2009/
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 static void
 h_check(bool check_master)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_ioctl.c,v 1.2 2015/01/14 22:22:32 christos Exp $ */
+/* $NetBSD: t_ioctl.c,v 1.3 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_ioctl.c,v 1.2 2015/01/14 22:22:32 christos Exp $");
+__RCSID("$NetBSD: t_ioctl.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/ioctl.h>
@@ -42,7 +42,7 @@ __RCSID("$NetBSD: t_ioctl.c,v 1.2 2015/0
 
 #include <atf-c.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(kfilter_byfilter);
 ATF_TC_HEAD(kfilter_byfilter, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc1.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc1.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc1.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_proc1.c,v 1.2 2015/01/14 22:22:32 christos Exp $ */
+/* $NetBSD: t_proc1.c,v 1.3 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_proc1.c,v 1.2 2015/01/14 22:22:32 christos Exp $");
+__RCSID("$NetBSD: t_proc1.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 /*
  * this also used to trigger problem fixed in
@@ -51,7 +51,7 @@ __RCSID("$NetBSD: t_proc1.c,v 1.2 2015/0
 
 #include <atf-c.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static int
 child(void)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_proc2.c,v 1.2 2015/01/14 22:22:32 christos Exp $ */
+/* $NetBSD: t_proc2.c,v 1.3 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_proc2.c,v 1.2 2015/01/14 22:22:32 christos Exp $");
+__RCSID("$NetBSD: t_proc2.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
 #include <sys/types.h>
@@ -50,7 +50,7 @@ __RCSID("$NetBSD: t_proc2.c,v 1.2 2015/0
 
 #include <atf-c.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 static void
 child_two(void)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_proc3.c,v 1.2 2015/01/14 22:22:32 christos Exp $ */
+/* $NetBSD: t_proc3.c,v 1.3 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: t_proc3.c,v 1.2 2015/01/14 22:22:32 christos Exp $");
+__RCSID("$NetBSD: t_proc3.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
 #include <sys/types.h>
@@ -48,7 +48,7 @@ __RCSID("$NetBSD: t_proc3.c,v 1.2 2015/0
 
 #include <atf-c.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(proc3);
 ATF_TC_HEAD(proc3, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_sig.c,v 1.2 2010/11/03 16:10:20 christos Exp $ */
+/* $NetBSD: t_sig.c,v 1.3 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_sig.c,v 1.2 2010/11/03 16:10:20 christos Exp $");
+__RCSID("$NetBSD: t_sig.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
 #include <sys/types.h>
@@ -51,7 +51,7 @@ __RCSID("$NetBSD: t_sig.c,v 1.2 2010/11/
 
 #include <atf-c.h>
 
-#include "../../h_macros.h"
+#include "h_macros.h"
 
 #define NSIGNALS 5
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_fifo.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_fifo.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_fifo.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_fifo.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $ */
+/* $NetBSD: t_fifo.c,v 1.4 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_fifo.c,v 1.3 2010/11/07 17:51:20 jmmv Exp $");
+__RCSID("$NetBSD: t_fifo.c,v 1.4 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/stat.h>
@@ -46,7 +46,7 @@ __RCSID("$NetBSD: t_fifo.c,v 1.3 2010/11
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 #define FIFONAME "fifo"
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_pipe.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_pipe.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_pipe.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_pipe.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $ */
+/* $NetBSD: t_pipe.c,v 1.2 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_pipe.c,v 1.1 2009/02/20 21:39:57 jmmv Exp $");
+__RCSID("$NetBSD: t_pipe.c,v 1.2 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/wait.h>
@@ -44,7 +44,7 @@ __RCSID("$NetBSD: t_pipe.c,v 1.1 2009/02
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 ATF_TC(pipe1);
 ATF_TC_HEAD(pipe1, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_ttypty.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_ttypty.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/write/t_ttypty.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_ttypty.c,v 1.1 2009/02/20 21:39:58 jmmv Exp $ */
+/* $NetBSD: t_ttypty.c,v 1.2 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_ttypty.c,v 1.1 2009/02/20 21:39:58 jmmv Exp $");
+__RCSID("$NetBSD: t_ttypty.c,v 1.2 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/event.h>
 #include <sys/wait.h>
@@ -47,7 +47,7 @@ __RCSID("$NetBSD: t_ttypty.c,v 1.1 2009/
 
 #include <atf-c.h>
 
-#include "../../../h_macros.h"
+#include "h_macros.h"
 
 static void
 h_check(bool check_master)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_extent.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_extent.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_extent.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/* $NetBSD: t_extent.c,v 1.4 2012/01/27 18:53:10 para Exp $ */
+/* $NetBSD: t_extent.c,v 1.5 2017/01/13 21:30:41 christos Exp $ */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_extent.c,v 1.4 2012/01/27 18:53:10 para Exp $");
+__RCSID("$NetBSD: t_extent.c,v 1.5 2017/01/13 21:30:41 christos Exp $");
 
 #include <sys/types.h>
 #include <sys/queue.h>
@@ -41,7 +41,7 @@ __RCSID("$NetBSD: t_extent.c,v 1.4 2012/
 
 #include <atf-c.h>
 
-#include "../h_macros.h"
+#include "h_macros.h"
 
 static int ret;
 static struct extent *ex;

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_filedesc.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_filedesc.c	Sat Jan 14 06:46:02 2017	(r312125)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/t_filedesc.c	Sat Jan 14 06:49:17 2017	(r312126)
@@ -1,4 +1,4 @@
-/*	$NetBSD: t_filedesc.c,v 1.5 2012/03/18 09:46:50 jruoho Exp $	*/
+/*	$NetBSD: t_filedesc.c,v 1.6 2017/01/13 21:30:41 christos Exp $	*/
 
 /*-

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

From owner-svn-src-projects@freebsd.org  Sat Jan 14 06:51:33 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 992D4CAFF2F
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 06:51: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 4D1A01C8E;
 Sat, 14 Jan 2017 06:51: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 v0E6pWJ7010113;
 Sat, 14 Jan 2017 06:51:32 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E6pWDS010109;
 Sat, 14 Jan 2017 06:51:32 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140651.v0E6pWDS010109@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 06:51:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312127 - in projects/netbsd-tests-upstream-01-2017:
 etc/mtree usr.bin/uniq usr.bin/uniq/tests
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 06:51:33 -0000

Author: ngie
Date: Sat Jan 14 06:51:31 2017
New Revision: 312127
URL: https://svnweb.freebsd.org/changeset/base/312127

Log:
  Integrate .../contrib/netbsd-tests/usr.bin/uniq into the FreeBSD test
  suite as .../usr.bin/uniq/tests
  
  Sponsored by:	Dell EMC Isilon

Added:
  projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/
  projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile   (contents, props changed)
  projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile.depend   (contents, props changed)
Modified:
  projects/netbsd-tests-upstream-01-2017/etc/mtree/BSD.tests.dist
  projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/Makefile

Modified: projects/netbsd-tests-upstream-01-2017/etc/mtree/BSD.tests.dist
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/etc/mtree/BSD.tests.dist	Sat Jan 14 06:49:17 2017	(r312126)
+++ projects/netbsd-tests-upstream-01-2017/etc/mtree/BSD.tests.dist	Sat Jan 14 06:51:31 2017	(r312127)
@@ -660,6 +660,8 @@
         ..
         uuencode
         ..
+        uniq
+        ..
         xargs
         ..
         xinstall

Modified: projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/Makefile
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/Makefile	Sat Jan 14 06:49:17 2017	(r312126)
+++ projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/Makefile	Sat Jan 14 06:51:31 2017	(r312127)
@@ -1,6 +1,12 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/6/93
 # $FreeBSD$
 
+.include <src.opts.mk>
+
 PROG=	uniq
 
+.if ${MK_TESTS} != "no"
+SUBDIR+=	tests
+.endif
+
 .include <bsd.prog.mk>

Added: projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile	Sat Jan 14 06:51:31 2017	(r312127)
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+PACKAGE=		tests
+
+NETBSD_ATF_TESTS_SH=	uniq_test
+
+${PACKAGE}FILES+=	d_basic.in
+${PACKAGE}FILES+=	d_basic.out
+${PACKAGE}FILES+=	d_counts.out
+${PACKAGE}FILES+=	d_input.in
+${PACKAGE}FILES+=	d_show_duplicates.out
+${PACKAGE}FILES+=	d_show_uniques.out
+
+.include <netbsd-tests.test.mk>
+
+.include <bsd.test.mk>

Added: projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile.depend
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/usr.bin/uniq/tests/Makefile.depend	Sat Jan 14 06:51:31 2017	(r312127)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:14:26 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 A68B1CAF460
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:14:26 +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 83C93172A;
 Sat, 14 Jan 2017 07:14:26 +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 v0E7EPZT020609;
 Sat, 14 Jan 2017 07:14:25 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7EP10020608;
 Sat, 14 Jan 2017 07:14:25 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140714.v0E7EP10020608@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:14:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312128 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:14:26 -0000

Author: ngie
Date: Sat Jan 14 07:14:25 2017
New Revision: 312128
URL: https://svnweb.freebsd.org/changeset/base/312128

Log:
  Copy ^/vendor/NetBSD/tests/dist to contrib/netbsd-tests
  
  This was missed in r303980

Added:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c
     - copied unchanged from r312127, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c

Copied: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c (from r312127, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c	Sat Jan 14 07:14:25 2017	(r312128, copy of r312127, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c)
@@ -0,0 +1,127 @@
+/*	$NetBSD: t_hmac.c,v 1.1 2016/07/02 14:52:09 christos Exp $	*/
+
+/*-
+ * Copyright (c) 2016 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: t_hmac.c,v 1.1 2016/07/02 14:52:09 christos Exp $");
+
+#include <atf-c.h>
+#include <string.h>
+#include <stdlib.h>
+#include <openssl/evp.h>
+#include <openssl/hmac.h>
+
+static void
+test(void)
+{
+	uint8_t         tmp1[EVP_MAX_MD_SIZE];
+	uint8_t         tmp2[EVP_MAX_MD_SIZE];
+	uint8_t key[256];
+	uint8_t data[4096];
+	unsigned int tmp1len;
+	size_t tmp2len;
+	int stop;
+	void *e1;
+	const void *evps[] = {
+		EVP_md2(),
+		EVP_md4(),
+		EVP_md5(),
+		EVP_ripemd160(),
+		EVP_sha1(),
+		EVP_sha224(),
+		EVP_sha256(),
+		EVP_sha384(),
+		EVP_sha512(),
+	};
+	const char *names[] = {
+		"md2",
+		"md4",
+		"md5",
+		"rmd160",
+		"sha1",
+		"sha224",
+		"sha256",
+		"sha384",
+		"sha512",
+	};
+
+	for (size_t k = 0; k < sizeof(key); k++)
+		key[k] = k;
+	for (size_t d = 0; d < sizeof(data); d++)
+		data[d] = d % 256;
+
+	for (size_t t = 0; t < __arraycount(names); t++)
+	    for (size_t i = 1; i < sizeof(key); i += 9)
+		for (size_t j = 3; j < sizeof(data); j += 111) {
+			stop = 0;
+#ifdef DEBUG
+			printf("%s: keysize = %zu datasize = %zu\n", names[t],
+			    i, j);
+#endif
+			memset(tmp1, 0, sizeof(tmp1));
+			memset(tmp2, 0, sizeof(tmp2));
+			e1 = HMAC(evps[t], key, i, data, j, tmp1, &tmp1len);
+			ATF_REQUIRE(e1 != NULL);
+			tmp2len = hmac(names[t], key, i, data, j, tmp2,
+			    sizeof(tmp2));
+			ATF_REQUIRE_MSG(tmp1len == tmp2len, "hash %s len %u "
+			    "!= %zu", names[t], tmp1len, tmp2len);
+			for (size_t k = 0; k < tmp2len; k++)
+				if (tmp1[k] != tmp2[k]) {
+#ifdef DEBUG
+					printf("%zu %.2x %.2x\n",
+					    k, tmp1[k], tmp2[k]);
+#endif
+					stop = 1;
+					break;
+				}
+			ATF_REQUIRE_MSG(!stop, "hash %s failed for "
+				"keylen=%zu, datalen=%zu", names[t], i, j);
+		}
+}
+
+ATF_TC(t_hmac);
+
+ATF_TC_HEAD(t_hmac, tc)
+{
+	atf_tc_set_md_var(tc, "descr",
+	    "Test hmac functions for consistent results");
+}
+
+ATF_TC_BODY(t_hmac, tc)
+{
+	test();
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+	ATF_TP_ADD_TC(tp, t_hmac);
+	return atf_no_error();
+}
+

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:15:15 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 AB083CAF4E4
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:15:15 +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 64CBD18E3;
 Sat, 14 Jan 2017 07:15:15 +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 v0E7FEfo020709;
 Sat, 14 Jan 2017 07:15:14 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7FEMo020708;
 Sat, 14 Jan 2017 07:15:14 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140715.v0E7FEMo020708@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:15:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312129 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:15:15 -0000

Author: ngie
Date: Sat Jan 14 07:15:14 2017
New Revision: 312129
URL: https://svnweb.freebsd.org/changeset/base/312129

Log:
  Try again with a better commit message

Deleted:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:16:16 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 B3A47CAF533
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:16:16 +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 908C11A35;
 Sat, 14 Jan 2017 07:16:16 +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 v0E7GFbk020810;
 Sat, 14 Jan 2017 07:16:15 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7GFOm020809;
 Sat, 14 Jan 2017 07:16:15 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140716.v0E7GFOm020809@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:16:15 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312130 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:16:16 -0000

Author: ngie
Date: Sat Jan 14 07:16:15 2017
New Revision: 312130
URL: https://svnweb.freebsd.org/changeset/base/312130

Log:
  Copy ^/vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c to
  contrib/netbsd-tests/lib/libc/hash/t_hmac.c
  
  This was missed in r303980

Added:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c
     - copied unchanged from r312129, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c

Copied: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c (from r312129, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_hmac.c	Sat Jan 14 07:16:15 2017	(r312130, copy of r312129, vendor/NetBSD/tests/dist/lib/libc/hash/t_hmac.c)
@@ -0,0 +1,127 @@
+/*	$NetBSD: t_hmac.c,v 1.1 2016/07/02 14:52:09 christos Exp $	*/
+
+/*-
+ * Copyright (c) 2016 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: t_hmac.c,v 1.1 2016/07/02 14:52:09 christos Exp $");
+
+#include <atf-c.h>
+#include <string.h>
+#include <stdlib.h>
+#include <openssl/evp.h>
+#include <openssl/hmac.h>
+
+static void
+test(void)
+{
+	uint8_t         tmp1[EVP_MAX_MD_SIZE];
+	uint8_t         tmp2[EVP_MAX_MD_SIZE];
+	uint8_t key[256];
+	uint8_t data[4096];
+	unsigned int tmp1len;
+	size_t tmp2len;
+	int stop;
+	void *e1;
+	const void *evps[] = {
+		EVP_md2(),
+		EVP_md4(),
+		EVP_md5(),
+		EVP_ripemd160(),
+		EVP_sha1(),
+		EVP_sha224(),
+		EVP_sha256(),
+		EVP_sha384(),
+		EVP_sha512(),
+	};
+	const char *names[] = {
+		"md2",
+		"md4",
+		"md5",
+		"rmd160",
+		"sha1",
+		"sha224",
+		"sha256",
+		"sha384",
+		"sha512",
+	};
+
+	for (size_t k = 0; k < sizeof(key); k++)
+		key[k] = k;
+	for (size_t d = 0; d < sizeof(data); d++)
+		data[d] = d % 256;
+
+	for (size_t t = 0; t < __arraycount(names); t++)
+	    for (size_t i = 1; i < sizeof(key); i += 9)
+		for (size_t j = 3; j < sizeof(data); j += 111) {
+			stop = 0;
+#ifdef DEBUG
+			printf("%s: keysize = %zu datasize = %zu\n", names[t],
+			    i, j);
+#endif
+			memset(tmp1, 0, sizeof(tmp1));
+			memset(tmp2, 0, sizeof(tmp2));
+			e1 = HMAC(evps[t], key, i, data, j, tmp1, &tmp1len);
+			ATF_REQUIRE(e1 != NULL);
+			tmp2len = hmac(names[t], key, i, data, j, tmp2,
+			    sizeof(tmp2));
+			ATF_REQUIRE_MSG(tmp1len == tmp2len, "hash %s len %u "
+			    "!= %zu", names[t], tmp1len, tmp2len);
+			for (size_t k = 0; k < tmp2len; k++)
+				if (tmp1[k] != tmp2[k]) {
+#ifdef DEBUG
+					printf("%zu %.2x %.2x\n",
+					    k, tmp1[k], tmp2[k]);
+#endif
+					stop = 1;
+					break;
+				}
+			ATF_REQUIRE_MSG(!stop, "hash %s failed for "
+				"keylen=%zu, datalen=%zu", names[t], i, j);
+		}
+}
+
+ATF_TC(t_hmac);
+
+ATF_TC_HEAD(t_hmac, tc)
+{
+	atf_tc_set_md_var(tc, "descr",
+	    "Test hmac functions for consistent results");
+}
+
+ATF_TC_BODY(t_hmac, tc)
+{
+	test();
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+	ATF_TP_ADD_TC(tp, t_hmac);
+	return atf_no_error();
+}
+

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:39:08 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 53C8DCAFA79
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:39:08 +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 177C9129B;
 Sat, 14 Jan 2017 07:39:08 +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 v0E7d7Hv029121;
 Sat, 14 Jan 2017 07:39:07 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7d7W0029120;
 Sat, 14 Jan 2017 07:39:07 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140739.v0E7d7W0029120@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:39:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312131 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/db
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:39:08 -0000

Author: ngie
Date: Sat Jan 14 07:39:07 2017
New Revision: 312131
URL: https://svnweb.freebsd.org/changeset/base/312131

Log:
  Diff reduce with upstream

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/db/t_db.sh

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/db/t_db.sh
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/db/t_db.sh	Sat Jan 14 07:16:15 2017	(r312130)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/db/t_db.sh	Sat Jan 14 07:39:07 2017	(r312131)
@@ -42,7 +42,6 @@ dict()
 	elif [ -f /usr/dict/words ]; then
 		echo /usr/dict/words
 	else
-		echo ""
 		atf_fail "no dictionary found"
 	fi
 }

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:46:04 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 C2589CAFBF4
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:46:04 +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 91E501702;
 Sat, 14 Jan 2017 07:46:04 +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 v0E7k3UC033222;
 Sat, 14 Jan 2017 07:46:03 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7k3i8033221;
 Sat, 14 Jan 2017 07:46:03 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140746.v0E7k3i8033221@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:46:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312132 -
 projects/netbsd-tests-upstream-01-2017/lib/libnetbsd
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:46:04 -0000

Author: ngie
Date: Sat Jan 14 07:46:03 2017
New Revision: 312132
URL: https://svnweb.freebsd.org/changeset/base/312132

Log:
  Add stdio.h #include for fparseln
  
  fparseln on FreeBSD requires stdio.h, then libutil.h, whereas NetBSD only
  requires util.h

Modified:
  projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/util.h

Modified: projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/util.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/util.h	Sat Jan 14 07:39:07 2017	(r312131)
+++ projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/util.h	Sat Jan 14 07:46:03 2017	(r312132)
@@ -30,9 +30,10 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _UTIL_H_
-#define _UTIL_H_
+#ifndef _LIBNETBSD_UTIL_H_
+#define _LIBNETBSD_UTIL_H_
 
+#include <stdio.h>	/* for fparseln(3) */
 #include <libutil.h>
 
 char	*flags_to_string(u_long flags, const char *def);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:48:23 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 9CAC4CAFC5D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:48:23 +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 64BAE185B;
 Sat, 14 Jan 2017 07:48:23 +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 v0E7mMMd033390;
 Sat, 14 Jan 2017 07:48:22 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7mMYs033389;
 Sat, 14 Jan 2017 07:48:22 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140748.v0E7mMYs033389@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:48:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312133 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:48:23 -0000

Author: ngie
Date: Sat Jan 14 07:48:22 2017
New Revision: 312133
URL: https://svnweb.freebsd.org/changeset/base/312133

Log:
  Diff reduce with upstream by using util.h from libnetbsd instead of libutil.h

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c	Sat Jan 14 07:46:03 2017	(r312132)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c	Sat Jan 14 07:48:22 2017	(r312133)
@@ -34,11 +34,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#ifdef __FreeBSD__
 #include <libutil.h>
-#else
-#include <util.h>
-#endif
 
 const struct hnopts {
 	size_t ho_len;

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:50:30 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 6B56DCAFC83
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:50:30 +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 3AAF31986;
 Sat, 14 Jan 2017 07:50:30 +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 v0E7oT1a033570;
 Sat, 14 Jan 2017 07:50:29 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7oTRM033569;
 Sat, 14 Jan 2017 07:50:29 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140750.v0E7oTRM033569@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:50:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312134 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:50:30 -0000

Author: ngie
Date: Sat Jan 14 07:50:29 2017
New Revision: 312134
URL: https://svnweb.freebsd.org/changeset/base/312134

Log:
  r312133 should have used the non-FreeBSD block

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c	Sat Jan 14 07:48:22 2017	(r312133)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/gen/t_humanize_number.c	Sat Jan 14 07:50:29 2017	(r312134)
@@ -34,7 +34,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <libutil.h>
+#include <util.h>
 
 const struct hnopts {
 	size_t ho_len;

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:57:35 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 92B37CAFE57
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:57: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 621F71DCC;
 Sat, 14 Jan 2017 07:57: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 v0E7vYKS037724;
 Sat, 14 Jan 2017 07:57:34 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7vYYG037723;
 Sat, 14 Jan 2017 07:57:34 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140757.v0E7vYYG037723@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:57:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312135 -
 projects/netbsd-tests-upstream-01-2017/lib/libnetbsd
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:57:35 -0000

Author: ngie
Date: Sat Jan 14 07:57:34 2017
New Revision: 312135
URL: https://svnweb.freebsd.org/changeset/base/312135

Log:
  libnetbsd: improve sha1.h compat with FreeBSD
  
  Map SHA1_CTX to SHA_CTX and SHA1Final to SHA1_Final

Modified:
  projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha1.h

Modified: projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha1.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha1.h	Sat Jan 14 07:50:29 2017	(r312134)
+++ projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha1.h	Sat Jan 14 07:57:34 2017	(r312135)
@@ -35,8 +35,11 @@
 
 #include <sha.h>
 
+#define	SHA1_CTX	SHA_CTX
+
 #define	SHA1End		SHA1_End
 #define	SHA1File	SHA1_File
+#define	SHA1Final	SHA1_Final
 #define	SHA1Init	SHA1_Init
 #define	SHA1Update	SHA1_Update
 

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:58:42 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 58B2FCAFEE8
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:58:42 +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 0D2F61FAF;
 Sat, 14 Jan 2017 07:58:41 +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 v0E7wftX037969;
 Sat, 14 Jan 2017 07:58:41 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7wfLW037967;
 Sat, 14 Jan 2017 07:58:41 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140758.v0E7wfLW037967@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:58:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312136 - in projects/netbsd-tests-upstream-01-2017:
 contrib/netbsd-tests/lib/libc/hash lib/libc/tests/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:58:42 -0000

Author: ngie
Date: Sat Jan 14 07:58:40 2017
New Revision: 312136
URL: https://svnweb.freebsd.org/changeset/base/312136

Log:
  Diff reduce with upstream using lib/libnetbsd's updated copy of sha1.h

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c
  projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c	Sat Jan 14 07:57:34 2017	(r312135)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c	Sat Jan 14 07:58:40 2017	(r312136)
@@ -35,13 +35,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <md5.h>
-#ifdef __NetBSD__
 #include <sha1.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <sha.h>
-#endif
 
 int mflag, rflag, sflag, tflag;
 
@@ -107,32 +101,17 @@ regress(void)
 			MD5Final(out, &ctx);
 			outlen = 16;
 		} else {
-#ifdef __FreeBSD__
-			SHA_CTX ctx;
-
-			SHA1_Init(&ctx);
-			SHA1_Update(&ctx, buf, len);
-#else
 			SHA1_CTX ctx;
 
 			SHA1Init(&ctx);
 			SHA1Update(&ctx, buf, len);
-#endif
 			while (!last &&
 			    fgets((char *)buf, sizeof(buf), stdin) != NULL) {
 				len = strlen((char *)buf);
 				CHOMP(buf, len, last);				
-#ifdef __FreeBSD__
-				SHA1_Update(&ctx, buf, len);
-#else
 				SHA1Update(&ctx, buf, len);
-#endif
 			}
-#ifdef __FreeBSD__
-			SHA1_Final(out, &ctx);
-#else
 			SHA1Final(out, &ctx);
-#endif
 			outlen = 20;
 		}
 		hexdump(out, outlen);

Modified: projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile	Sat Jan 14 07:57:34 2017	(r312135)
+++ projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile	Sat Jan 14 07:58:40 2017	(r312136)
@@ -32,6 +32,7 @@ ${PACKAGE}DATA_FILES+=	data/sha1test2-ou
 LIBADD+=		md
 LIBADD.sha2_test+=	crypto
 
+CFLAGS.h_hash+=		-I${SRCTOP}/lib/libnetbsd
 CFLAGS.sha2_test+=	-I${SRCTOP}/crypto/openssh/openbsd-compat
 CFLAGS.sha2_test+=	-I${SRCTOP}/crypto/openssh
 

From owner-svn-src-projects@freebsd.org  Sat Jan 14 07:59:34 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 5C0C6CAFF1D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 07:59:34 +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 2BA031166;
 Sat, 14 Jan 2017 07:59:34 +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 v0E7xX3s038048;
 Sat, 14 Jan 2017 07:59:33 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E7xXl1038047;
 Sat, 14 Jan 2017 07:59:33 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140759.v0E7xXl1038047@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 07:59:33 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312137 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 07:59:34 -0000

Author: ngie
Date: Sat Jan 14 07:59:33 2017
New Revision: 312137
URL: https://svnweb.freebsd.org/changeset/base/312137

Log:
  Restore deleted line

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c	Sat Jan 14 07:58:40 2017	(r312136)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/h_hash.c	Sat Jan 14 07:59:33 2017	(r312137)
@@ -37,6 +37,7 @@
 #include <md5.h>
 #include <sha1.h>
 
+
 int mflag, rflag, sflag, tflag;
 
 static void

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:10:39 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 108F9CAE3DE
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:10:39 +0000 (UTC)
 (envelope-from ngie@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id D442716C3;
 Sat, 14 Jan 2017 08:10:38 +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 v0E8AcmB042152;
 Sat, 14 Jan 2017 08:10:38 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8ActE042151;
 Sat, 14 Jan 2017 08:10:38 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140810.v0E8ActE042151@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:10:38 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312138 -
 projects/netbsd-tests-upstream-01-2017/lib/libnetbsd
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:10:39 -0000

Author: ngie
Date: Sat Jan 14 08:10:37 2017
New Revision: 312138
URL: https://svnweb.freebsd.org/changeset/base/312138

Log:
  libnetbsd: improve sha2.h compat with FreeBSD
  
  Add sha384 #include to libnetbsd's copy of sha2.h to expose all of the
  SHA384 support via the header.

Modified:
  projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha2.h

Modified: projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha2.h
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha2.h	Sat Jan 14 07:59:33 2017	(r312137)
+++ projects/netbsd-tests-upstream-01-2017/lib/libnetbsd/sha2.h	Sat Jan 14 08:10:37 2017	(r312138)
@@ -34,6 +34,7 @@
 #define _SHA2_H_
 
 #include <sha256.h>
+#include <sha384.h>
 #include <sha512.h>
 
 #endif /* _SHA2_H_ */

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:11:18 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 BB6BECAE53E
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:11:18 +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 879C41993;
 Sat, 14 Jan 2017 08:11:18 +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 v0E8BHTB043851;
 Sat, 14 Jan 2017 08:11:17 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8BH1r043850;
 Sat, 14 Jan 2017 08:11:17 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140811.v0E8BH1r043850@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:11:17 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312139 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:11:18 -0000

Author: ngie
Date: Sat Jan 14 08:11:17 2017
New Revision: 312139
URL: https://svnweb.freebsd.org/changeset/base/312139

Log:
  Use copy of sha2.h from libnetbsd

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_sha2.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_sha2.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_sha2.c	Sat Jan 14 08:10:37 2017	(r312138)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/hash/t_sha2.c	Sat Jan 14 08:11:17 2017	(r312139)
@@ -36,23 +36,9 @@ __RCSID("$NetBSD: t_sha2.c,v 1.3 2012/09
 
 #include <atf-c.h>
 #include <sys/types.h>
-#ifdef __NetBSD__
 #include <sha2.h>
-#endif
 #include <string.h>
 
-#ifdef __FreeBSD__
-#include <openssl/sha.h>
-typedef SHA512_CTX SHA384_CTX;
-/* From /usr/src/crypto/openssh/openbsd-compat/sha2.h */
-#define SHA256_DIGEST_LENGTH		32
-#define SHA256_DIGEST_STRING_LENGTH	(SHA256_DIGEST_LENGTH * 2 + 1)
-#define SHA384_DIGEST_LENGTH		48
-#define SHA384_DIGEST_STRING_LENGTH	(SHA384_DIGEST_LENGTH * 2 + 1)
-#define SHA512_DIGEST_LENGTH		64
-#define SHA512_DIGEST_STRING_LENGTH	(SHA512_DIGEST_LENGTH * 2 + 1)
-#endif
-
 ATF_TC(t_sha256);
 ATF_TC(t_sha384);
 ATF_TC(t_sha512);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:12:58 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 64091CAE574
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:12:58 +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 3452C1BE3;
 Sat, 14 Jan 2017 08:12:58 +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 v0E8Cvxf046062;
 Sat, 14 Jan 2017 08:12:57 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8Cvsd046061;
 Sat, 14 Jan 2017 08:12:57 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140812.v0E8Cvsd046061@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:12:57 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312140 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:12:58 -0000

Author: ngie
Date: Sat Jan 14 08:12:57 2017
New Revision: 312140
URL: https://svnweb.freebsd.org/changeset/base/312140

Log:
  Diff reduce with upstream

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c	Sat Jan 14 08:11:17 2017	(r312139)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c	Sat Jan 14 08:12:57 2017	(r312140)
@@ -61,7 +61,6 @@ ATF_TC_BODY(bad_big5_wprintf, tc)
 	/* XXX implementation detail knowledge (wchar_t encoding) */
 	wchar_t ibuf[] = { 0xcf10, 0 };
 	setlocale(LC_CTYPE, "zh_TW.Big5");
-
 	ATF_REQUIRE_ERRNO(EILSEQ, wprintf(L"%ls\n", ibuf) < 0);
 	ATF_REQUIRE(ferror(stdout));
 }

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:35:30 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 409D0CAEAA2
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:35:30 +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 10B54144D;
 Sat, 14 Jan 2017 08:35:29 +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 v0E8ZTw6055637;
 Sat, 14 Jan 2017 08:35:29 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8ZToW055636;
 Sat, 14 Jan 2017 08:35:29 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140835.v0E8ZToW055636@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:35:29 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312141 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/stdlib
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:35:30 -0000

Author: ngie
Date: Sat Jan 14 08:35:29 2017
New Revision: 312141
URL: https://svnweb.freebsd.org/changeset/base/312141

Log:
  :strtold_nan: remove unnecessary strcmp check
  
  It gets checked again later on in the testcase

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c	Sat Jan 14 08:12:57 2017	(r312140)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c	Sat Jan 14 08:35:29 2017	(r312141)
@@ -218,9 +218,7 @@ ATF_TC_BODY(strtold_nan, tc)
 
 	volatile long double ld = strtold(nan_string, &end);
 	ATF_REQUIRE(isnan(ld) != 0);
-#ifdef __FreeBSD__
-	ATF_REQUIRE(strcmp(end, "y") == 0);
-#else
+#ifndef __FreeBSD__
 	ATF_REQUIRE(__isnanl(ld) != 0);
 #endif
 	ATF_REQUIRE(strcmp(end, "y") == 0);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:36:44 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 99735CAEAF3
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:36:44 +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 69B3415B8;
 Sat, 14 Jan 2017 08:36:44 +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 v0E8ah6A055745;
 Sat, 14 Jan 2017 08:36:43 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8ahXG055744;
 Sat, 14 Jan 2017 08:36:43 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140836.v0E8ahXG055744@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:36:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312142 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:36:44 -0000

Author: ngie
Date: Sat Jan 14 08:36:43 2017
New Revision: 312142
URL: https://svnweb.freebsd.org/changeset/base/312142

Log:
  Diff reduce with upstream

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_clock_gettime.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_clock_gettime.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_clock_gettime.c	Sat Jan 14 08:35:29 2017	(r312141)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_clock_gettime.c	Sat Jan 14 08:36:43 2017	(r312142)
@@ -63,6 +63,7 @@ __RCSID("$NetBSD: t_clock_gettime.c,v 1.
 #include <sys/param.h>
 #include <sys/sysctl.h>
 
+
 #include <atf-c.h>
 #include <errno.h>
 #include <limits.h>

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:38:22 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 D6B84CAEB73
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:38:22 +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 A64241729;
 Sat, 14 Jan 2017 08:38:22 +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 v0E8cLh4055879;
 Sat, 14 Jan 2017 08:38:21 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8cLog055878;
 Sat, 14 Jan 2017 08:38:21 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140838.v0E8cLog055878@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:38:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312143 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:38:22 -0000

Author: ngie
Date: Sat Jan 14 08:38:21 2017
New Revision: 312143
URL: https://svnweb.freebsd.org/changeset/base/312143

Log:
  Remove comment no longer true since the test no longer bombs out earlier on

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_mbtowc.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_mbtowc.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_mbtowc.c	Sat Jan 14 08:36:43 2017	(r312142)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_mbtowc.c	Sat Jan 14 08:38:21 2017	(r312143)
@@ -137,7 +137,6 @@ ATF_TC_BODY(mbtowc, tc)
 	h_mbtowc("ja_JP.ISO2022-JP", "\033$B", "\033$B$\"\033(B");
 	h_mbtowc("ja_JP.SJIS", "\202", "\202\240");
 	h_mbtowc("ja_JP.eucJP", "\244", "\244\242");
-	/* Moved last as it fails */
 	h_mbtowc("zh_CN.GB18030", "\241", "\241\241");
 	h_mbtowc("zh_TW.Big5", "\241", "\241@");
 	h_mbtowc("zh_TW.eucTW", "\241", "\241\241");

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:39:54 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 B4A52CAEBA2
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:39:54 +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 86875186E;
 Sat, 14 Jan 2017 08:39:54 +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 v0E8dr36056005;
 Sat, 14 Jan 2017 08:39:53 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8drp9056004;
 Sat, 14 Jan 2017 08:39:53 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140839.v0E8drp9056004@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:39:53 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312144 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:39:54 -0000

Author: ngie
Date: Sat Jan 14 08:39:53 2017
New Revision: 312144
URL: https://svnweb.freebsd.org/changeset/base/312144

Log:
  Diff reduce with upstream

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c	Sat Jan 14 08:38:21 2017	(r312143)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/locale/t_io.c	Sat Jan 14 08:39:53 2017	(r312144)
@@ -57,7 +57,6 @@ ATF_TC_BODY(bad_big5_wprintf, tc)
 	atf_tc_skip("does not fail as expected (may be implementation "
 	    "specific issue with the test)");
 #endif
-
 	/* XXX implementation detail knowledge (wchar_t encoding) */
 	wchar_t ibuf[] = { 0xcf10, 0 };
 	setlocale(LC_CTYPE, "zh_TW.Big5");
@@ -77,12 +76,10 @@ ATF_TC_BODY(bad_big5_swprintf, tc)
 	atf_tc_skip("does not fail as expected (may be implementation "
 	    "specific issue with the test)");
 #endif
-
 	/* XXX implementation detail knowledge (wchar_t encoding) */
 	wchar_t ibuf[] = { 0xcf10, 0 };
 	wchar_t obuf[20];
 	setlocale(LC_CTYPE, "zh_TW.Big5");
-
 	ATF_REQUIRE_ERRNO(EILSEQ,
 			  swprintf(obuf, sizeof(obuf), L"%ls\n", ibuf) < 0);
 }

From owner-svn-src-projects@freebsd.org  Sat Jan 14 08:47:01 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 78D5DCAC078
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 08:47:01 +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 20D931E47;
 Sat, 14 Jan 2017 08:47:01 +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 v0E8l0C7060222;
 Sat, 14 Jan 2017 08:47:00 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E8l004060221;
 Sat, 14 Jan 2017 08:47:00 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140847.v0E8l004060221@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 08:47:00 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312145 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 08:47:01 -0000

Author: ngie
Date: Sat Jan 14 08:47:00 2017
New Revision: 312145
URL: https://svnweb.freebsd.org/changeset/base/312145

Log:
  Try to consolidate the #ifdef soup into FreeBSD vs non-FreeBSD blocks better

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c	Sat Jan 14 08:39:53 2017	(r312144)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c	Sat Jan 14 08:47:00 2017	(r312145)
@@ -51,12 +51,14 @@ run(int n, ...)
 	ATF_REQUIRE_EQ(n, DEPTH - calls - 1);
 
 	va_start(va, n);
-#if defined(__FreeBSD__) && defined(__amd64__)
+#ifdef __FreeBSD__
+#if defined(__amd64__)
 	for (i = 0; i < 5; i++) {
-#elif defined(__FreeBSD__) && defined(__aarch64__)
+#elif defined(__aarch64__)
 	for (i = 0; i < 7; i++) {
-#elif defined(__FreeBSD__) && defined(__mips__)
+#elif defined(__mips__)
 	for (i = 0; i < 5; i++) {
+#endif
 #else
 	for (i = 0; i < 9; i++) {
 #endif
@@ -116,18 +118,20 @@ ATF_TC_BODY(setcontext_link, tc)
 		uc[i].uc_stack.ss_size = STACKSZ;
 		uc[i].uc_link = (i > 0) ? &uc[i - 1] : &save;
 
-#if defined(__FreeBSD__) && defined(__amd64__)
+#ifdef __FreeBSD__
+#if defined(__amd64__)
 		/* FreeBSD/amd64 only permits up to 6 arguments. */
 		makecontext(&uc[i], (void *)run, 6, i,
 			0, 1, 2, 3, 4);
-#elif defined(__FreeBSD__) && defined(__aarch64__)
+#elif defined(__aarch64__)
 		/* FreeBSD/arm64 only permits up to 8 arguments. */
 		makecontext(&uc[i], (void *)run, 8, i,
 			0, 1, 2, 3, 4, 5, 6);
-#elif defined(__FreeBSD__) && defined(__mips__)
+#elif defined(__mips__)
 		/* FreeBSD/mips only permits up to 6 arguments. */
 		makecontext(&uc[i], (void *)run, 6, i,
 			0, 1, 2, 3, 4);
+#endif
 #else
 		makecontext(&uc[i], (void *)run, 10, i,
 			0, 1, 2, 3, 4, 5, 6, 7, 8);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:20:56 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 00593CACE91
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:20:56 +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 AC9ED1E2E;
 Sat, 14 Jan 2017 09:20:55 +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 v0E9Ksu8072368;
 Sat, 14 Jan 2017 09:20:54 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9KsCI072367;
 Sat, 14 Jan 2017 09:20:54 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140920.v0E9KsCI072367@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:20:54 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312146 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:20:56 -0000

Author: ngie
Date: Sat Jan 14 09:20:54 2017
New Revision: 312146
URL: https://svnweb.freebsd.org/changeset/base/312146

Log:
  Diff reduce with upstream
  
  Use CMSG_FIRSTHDR macro to properly link the kqueue to the socket to
  get it to now return -1/EBADF with sendmsg per the testcase expectations

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 08:47:00 2017	(r312145)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 09:20:54 2017	(r312146)
@@ -117,15 +117,9 @@ ATF_TC_BODY(kqueue_desc_passing, tc)
 		if (recvmsg(s[1], &m, 0) == -1)
 			err(1, "child: could not recvmsg");
 
-#ifdef __FreeBSD__
-		bcopy(CMSG_DATA(msg), &kq, sizeof(kq));
-		printf("child (pid %d): received kq fd %d\n", getpid(), kq);
-		_exit(0);
-#else
 		kq = *(int *)CMSG_DATA(msg);
 		printf("child (pid %d): received kq fd %d\n", getpid(), kq);
 		exit(0);
-#endif
 	}
 
 	close(s[1]);
@@ -133,33 +127,21 @@ ATF_TC_BODY(kqueue_desc_passing, tc)
 	iov.iov_base = &storage;
 	iov.iov_len = sizeof(int);
 
+#ifdef __FreeBSD__
+	msg = CMSG_FIRSTHDR(&m);
+#endif
 	msg->cmsg_level = SOL_SOCKET;
 	msg->cmsg_type = SCM_RIGHTS;
 	msg->cmsg_len = CMSG_LEN(sizeof(int));
 
-#ifdef __FreeBSD__
-	/* 
-	 * What is should have been
-	 *   bcopy(&s[0], CMSG_DATA(msg), sizeof(kq));
-	 */
-	bcopy(&kq, CMSG_DATA(msg), sizeof(kq));
-#else
-	*(int *)CMSG_DATA(msg) = kq;
-#endif
-
+	EV_SET(&ev, 1, EVFILT_TIMER, EV_ADD|EV_ENABLE, 0, 1, 0);
 	EV_SET(&ev, 1, EVFILT_TIMER, EV_ADD|EV_ENABLE, 0, 1, 0);
 	ATF_CHECK(kevent(kq, &ev, 1, NULL, 0, NULL) != -1);
 
 	printf("parent (pid %d): sending kq fd %d\n", getpid(), kq);
 	if (sendmsg(s[0], &m, 0) == -1) {
-#ifdef __NetBSD__
 		ATF_REQUIRE_EQ_MSG(errno, EBADF, "errno is %d", errno);
 		atf_tc_skip("PR kern/46523");
-#endif
-#ifdef __FreeBSD__
-		ATF_REQUIRE_EQ_MSG(errno, EOPNOTSUPP, "errno is %d", errno);
-		close(s[0]);
-#endif
 	}
 
 	close(kq);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:21:37 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 99C91CACEBF
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:21:37 +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 5C76F1FDE;
 Sat, 14 Jan 2017 09:21:37 +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 v0E9LaqS074520;
 Sat, 14 Jan 2017 09:21:36 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9Lab9074519;
 Sat, 14 Jan 2017 09:21:36 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140921.v0E9Lab9074519@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:21:36 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312147 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:21:37 -0000

Author: ngie
Date: Sat Jan 14 09:21:36 2017
New Revision: 312147
URL: https://svnweb.freebsd.org/changeset/base/312147

Log:
  Remove extra EVSET I added in r312146 by accident

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 09:20:54 2017	(r312146)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 09:21:36 2017	(r312147)
@@ -135,7 +135,6 @@ ATF_TC_BODY(kqueue_desc_passing, tc)
 	msg->cmsg_len = CMSG_LEN(sizeof(int));
 
 	EV_SET(&ev, 1, EVFILT_TIMER, EV_ADD|EV_ENABLE, 0, 1, 0);
-	EV_SET(&ev, 1, EVFILT_TIMER, EV_ADD|EV_ENABLE, 0, 1, 0);
 	ATF_CHECK(kevent(kq, &ev, 1, NULL, 0, NULL) != -1);
 
 	printf("parent (pid %d): sending kq fd %d\n", getpid(), kq);

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:25:10 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 80FA3CACF0F
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:25:10 +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 5059612F2;
 Sat, 14 Jan 2017 09:25:10 +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 v0E9P94d076304;
 Sat, 14 Jan 2017 09:25:09 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9P9o1076303;
 Sat, 14 Jan 2017 09:25:09 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140925.v0E9P9o1076303@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:25:09 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312148 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:25:10 -0000

Author: ngie
Date: Sat Jan 14 09:25:09 2017
New Revision: 312148
URL: https://svnweb.freebsd.org/changeset/base/312148

Log:
  Readd the CMSG_DATA for assigning the kqueue... this testcase isn't officially
  correct yet, but it's getting closer.

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 09:21:36 2017	(r312147)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_kevent.c	Sat Jan 14 09:25:09 2017	(r312148)
@@ -134,6 +134,10 @@ ATF_TC_BODY(kqueue_desc_passing, tc)
 	msg->cmsg_type = SCM_RIGHTS;
 	msg->cmsg_len = CMSG_LEN(sizeof(int));
 
+#ifdef __NetBSD__
+	*(int *)CMSG_DATA(msg) = kq;
+#endif
+
 	EV_SET(&ev, 1, EVFILT_TIMER, EV_ADD|EV_ENABLE, 0, 1, 0);
 	ATF_CHECK(kevent(kq, &ev, 1, NULL, 0, NULL) != -1);
 

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:38:42 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 74441CAD18D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:38:42 +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 4BD721845;
 Sat, 14 Jan 2017 09:38:42 +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 v0E9cfMx080295;
 Sat, 14 Jan 2017 09:38:41 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9ce22080284;
 Sat, 14 Jan 2017 09:38:40 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140938.v0E9ce22080284@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:38:40 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312149 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:38:42 -0000

Author: ngie
Date: Sat Jan 14 09:38:40 2017
New Revision: 312149
URL: https://svnweb.freebsd.org/changeset/base/312149

Log:
  Diff reduce with upstream by taking diff hunks that were contributed back

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_connect.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_dup.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_link.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_listen.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgctl.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgrcv.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgsnd.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_stat.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_truncate.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_connect.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_connect.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_connect.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -37,10 +37,6 @@
 
 #include <atf-c.h>
 
-#ifdef __FreeBSD__
-#include <sys/socket.h>
-#endif
-
 ATF_TC(connect_low_port);
 ATF_TC_HEAD(connect_low_port, tc)
 {

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_dup.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_dup.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_dup.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -46,10 +46,6 @@ __RCSID("$NetBSD: t_dup.c,v 1.9 2017/01/
 #include <unistd.h>
 #include <sysexits.h>
 
-#ifdef __FreeBSD__
-#include <stdbool.h>
-#endif
-
 static char	path[] = "dup";
 #ifdef __NetBSD__
 static void	check_mode(bool, bool, bool);

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_link.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_link.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_link.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -42,10 +42,6 @@ __RCSID("$NetBSD: t_link.c,v 1.3 2017/01
 #include <string.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
-
 static const char	*getpath(void);
 static char		 path[] = "link";
 static const char	*pathl;

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_listen.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_listen.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_listen.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -37,10 +37,6 @@
 #include <arpa/inet.h>
 #include <netinet/in.h>
 
-#ifdef __FreeBSD__
-#include <sys/socket.h>
-#endif
-
 static const char *path = "listen";
 
 ATF_TC_WITH_CLEANUP(listen_err);

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgctl.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgctl.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgctl.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -47,10 +47,6 @@ __RCSID("$NetBSD: t_msgctl.c,v 1.5 2017/
 #include <time.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
-
 #define MSG_KEY		12345689
 #define MSG_MTYPE_1	0x41
 

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgrcv.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgrcv.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgrcv.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -48,10 +48,6 @@ __RCSID("$NetBSD: t_msgrcv.c,v 1.4 2017/
 #include <time.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
-
 #define MSG_KEY		1234
 #define MSG_MTYPE_1	0x41
 #define	MSG_MTYPE_2	0x42

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgsnd.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgsnd.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msgsnd.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -48,10 +48,6 @@ __RCSID("$NetBSD: t_msgsnd.c,v 1.3 2017/
 #include <time.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
-
 #define MSG_KEY		1234
 #define MSG_MTYPE_1	0x41
 #define	MSG_MTYPE_2	0x42

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -65,22 +65,33 @@ msync_sync(const char *garbage, int flag
 	if (buf == NULL)
 		return NULL;
 
+#ifdef __FreeBSD__
+	memset(buf, 'x', page);
+#else
 	for (i = 0; i < (size_t)page; i++)
 		buf[i] = 'x';
+#endif
 
 	fd = open(path, O_RDWR | O_CREAT, 0700);
 
 	if (fd < 0) {
+#ifdef	__FreeBSD__
+		free(buf);
+		return "failed to open";
+#else
 		str = "failed to open";
 		goto out;
+#endif
 	}
 
+#if __FreeBSD__
+	(void)write(fd, buf, page);
+#else
 	tot = 0;
 
 	while (tot < page) {
 
 		rv = write(fd, buf, sizeof(buf));
-
 		if (rv < 0) {
 			str = "failed to write";
 			goto out;
@@ -88,6 +99,7 @@ msync_sync(const char *garbage, int flag
 
 		tot += rv;
 	}
+#endif
 
 	map = mmap(NULL, page, PROT_READ | PROT_WRITE, MAP_FILE|MAP_PRIVATE,
 	     fd, 0);

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -41,11 +41,6 @@ __RCSID("$NetBSD: t_sigqueue.c,v 1.7 201
 #include <sched.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <err.h>
-#include <stdio.h>
-#endif
-
 static void	handler(int, siginfo_t *, void *);
 
 #define VALUE (int)0xc001dad1
@@ -212,7 +207,6 @@ ATF_TC_BODY(sigqueue_rt, tc)
 		if (sigaddset(&mask, signals[i]) == -1)
 			warn("sigaddset");
 
-
 	ATF_REQUIRE(sigprocmask(SIG_BLOCK, &mask, &orig) != -1);
 	
 	for (size_t i = 0; i < CNT; i++)
@@ -222,7 +216,6 @@ ATF_TC_BODY(sigqueue_rt, tc)
 	sleep(1);
 	ATF_CHECK_MSG((size_t)count == ndelivered,
 	    "count %zu != ndelivered %zu", (size_t)count, ndelivered);
-
 	for (size_t i = 0; i < ndelivered; i++)
 		ATF_REQUIRE_MSG(ordered[i] == delivered[i],
 		    "%zu: ordered %d != delivered %d",

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_stat.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_stat.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_stat.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -48,10 +48,6 @@ __RCSID("$NetBSD: t_stat.c,v 1.5 2017/01
 
 #include <stdio.h>
 
-#ifdef __FreeBSD__
-#include <netinet/in.h>
-#endif
-
 static const char *path = "stat";
 
 ATF_TC_WITH_CLEANUP(stat_chflags);
@@ -400,9 +396,6 @@ ATF_TC_BODY(stat_symlink, tc)
 	(void)close(fd);
 	ATF_REQUIRE(unlink(path) == 0);
 	ATF_REQUIRE(unlink(pathlink) == 0);
-#ifdef	__FreeBSD__
-	(void)close(fd);
-#endif
 }
 
 ATF_TC_CLEANUP(stat_symlink, tc)

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_truncate.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_truncate.c	Sat Jan 14 09:25:09 2017	(r312148)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_truncate.c	Sat Jan 14 09:38:40 2017	(r312149)
@@ -41,10 +41,6 @@ __RCSID("$NetBSD: t_truncate.c,v 1.3 201
 #include <string.h>
 #include <unistd.h>
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
-
 static const char path[] = "truncate";
 static const size_t sizes[] = { 8, 16, 512, 1024, 2048, 4094, 3000, 30 };
 

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:42:08 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 16B35CAD487
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:42:08 +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 C177E1DCA;
 Sat, 14 Jan 2017 09:42:07 +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 v0E9g6lP084235;
 Sat, 14 Jan 2017 09:42:06 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9g6w9084234;
 Sat, 14 Jan 2017 09:42:06 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140942.v0E9g6w9084234@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:42:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312150 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librt
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:42:08 -0000

Author: ngie
Date: Sat Jan 14 09:42:06 2017
New Revision: 312150
URL: https://svnweb.freebsd.org/changeset/base/312150

Log:
  Use cleanup routines to remove POSIX semaphores instead of just blindly
  unlinking them at the beginning of the testcase
  
  This is a lot more intelligent in cleaning up the semaphores if the testcase
  fails before sem_unlink is called.
  
  Contributed back as bin/51872 upstream.

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librt/t_sem.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librt/t_sem.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librt/t_sem.c	Sat Jan 14 09:38:40 2017	(r312149)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/librt/t_sem.c	Sat Jan 14 09:42:06 2017	(r312150)
@@ -72,7 +72,7 @@ __RCSID("$NetBSD: t_sem.c,v 1.2 2010/11/
 
 #define NCHILDREN 10
 
-ATF_TC(basic);
+ATF_TC_WITH_CLEANUP(basic);
 ATF_TC_HEAD(basic, tc)
 {
 	atf_tc_set_md_var(tc, "descr", "Checks basic functionality of POSIX "
@@ -86,9 +86,6 @@ ATF_TC_BODY(basic, tc)
 	if (sysconf(_SC_SEMAPHORES) == -1)
 		atf_tc_skip("POSIX semaphores not supported");
 
-#ifdef __FreeBSD__
-	sem_unlink("/sem_b");
-#endif
 	sem_b = sem_open("/sem_b", O_CREAT | O_EXCL, 0644, 0);
 	ATF_REQUIRE(sem_b != SEM_FAILED);
 
@@ -111,8 +108,12 @@ ATF_TC_BODY(basic, tc)
 	ATF_REQUIRE_EQ(sem_close(sem_b), 0);
 	ATF_REQUIRE_EQ(sem_unlink("/sem_b"), 0);
 }
+ATF_TC_CLEANUP(basic, tc)
+{
+	(void)sem_unlink("/sem_b");
+}
 
-ATF_TC(child);
+ATF_TC_WITH_CLEANUP(child);
 ATF_TC_HEAD(child, tc)
 {
 	atf_tc_set_md_var(tc, "descr", "Checks using semaphores to synchronize "
@@ -127,12 +128,9 @@ ATF_TC_BODY(child, tc)
 
 	pid_t pid;
 
-	if (sysconf(_SC_SEMAPHORES) == -1)         
+	if (sysconf(_SC_SEMAPHORES) == -1)
 		atf_tc_skip("POSIX semaphores not supported");
 
-#ifdef __FreeBSD__
-	sem_unlink("/sem_a");
-#endif
 	sem_a = sem_open("/sem_a", O_CREAT | O_EXCL, 0644, 0);
 	ATF_REQUIRE(sem_a != SEM_FAILED);
 
@@ -170,6 +168,10 @@ ATF_TC_BODY(child, tc)
 	ATF_REQUIRE_EQ(sem_close(sem_a), 0);
 	ATF_REQUIRE_EQ(sem_unlink("/sem_a"), 0);
 }
+ATF_TC_CLEANUP(child, tc)
+{
+	(void)sem_unlink("/sem_a");
+}
 
 ATF_TP_ADD_TCS(tp)
 {

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:45:47 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 C879FCAD4CF
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:45:47 +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 7DBE51F4D;
 Sat, 14 Jan 2017 09:45:47 +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 v0E9jk2F084421;
 Sat, 14 Jan 2017 09:45:46 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9jkDB084418;
 Sat, 14 Jan 2017 09:45:46 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140945.v0E9jkDB084418@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:45:46 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312151 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:45:47 -0000

Author: ngie
Date: Sat Jan 14 09:45:46 2017
New Revision: 312151
URL: https://svnweb.freebsd.org/changeset/base/312151

Log:
  Clarify why sys/types.h #include is needed on FreeBSD

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c	Sat Jan 14 09:42:06 2017	(r312150)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc2.c	Sat Jan 14 09:45:46 2017	(r312151)
@@ -35,7 +35,7 @@ __COPYRIGHT("@(#) Copyright (c) 2008\
 __RCSID("$NetBSD: t_proc2.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
-#include <sys/types.h>
+#include <sys/types.h> /* for kqueue(2) */
 #endif
 #include <sys/event.h>
 #include <sys/time.h>

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c	Sat Jan 14 09:42:06 2017	(r312150)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_proc3.c	Sat Jan 14 09:45:46 2017	(r312151)
@@ -33,7 +33,7 @@
 __RCSID("$NetBSD: t_proc3.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
-#include <sys/types.h>
+#include <sys/types.h> /* for kqueue(2) */
 #endif
 #include <sys/event.h>
 #include <sys/time.h>

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c	Sat Jan 14 09:42:06 2017	(r312150)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_sig.c	Sat Jan 14 09:45:46 2017	(r312151)
@@ -35,7 +35,7 @@ __COPYRIGHT("@(#) Copyright (c) 2008\
 __RCSID("$NetBSD: t_sig.c,v 1.3 2017/01/13 21:30:41 christos Exp $");
 
 #ifdef __FreeBSD__
-#include <sys/types.h>
+#include <sys/types.h> /* for kqueue(2) */
 #endif
 #include <sys/event.h>
 #include <sys/ioctl.h>

From owner-svn-src-projects@freebsd.org  Sat Jan 14 09:47:08 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 0C9ACCAD4EF
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 09:47:08 +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 D2E47106E;
 Sat, 14 Jan 2017 09:47:07 +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 v0E9l7IR084510;
 Sat, 14 Jan 2017 09:47:07 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0E9l7sf084509;
 Sat, 14 Jan 2017 09:47:07 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701140947.v0E9l7sf084509@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 09:47:07 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312152 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 09:47:08 -0000

Author: ngie
Date: Sat Jan 14 09:47:06 2017
New Revision: 312152
URL: https://svnweb.freebsd.org/changeset/base/312152

Log:
  One more sys/types.h kevent clarification missed in r312151

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_vnode.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_vnode.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_vnode.c	Sat Jan 14 09:45:46 2017	(r312151)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/kernel/kqueue/t_vnode.c	Sat Jan 14 09:47:06 2017	(r312152)
@@ -1,5 +1,5 @@
 #ifdef __FreeBSD__
-#include <sys/types.h>
+#include <sys/types.h> /* for kqueue(2) */
 #endif
 #include <sys/event.h>
 #include <sys/stat.h>

From owner-svn-src-projects@freebsd.org  Sat Jan 14 10:05:27 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 8E92ECADB1B
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 10:05:27 +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 530AE19EF;
 Sat, 14 Jan 2017 10:05:27 +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 v0EA5QH2092439;
 Sat, 14 Jan 2017 10:05:26 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EA5QiZ092437;
 Sat, 14 Jan 2017 10:05:26 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701141005.v0EA5QiZ092437@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 10:05:26 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312154 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 10:05:27 -0000

Author: ngie
Date: Sat Jan 14 10:05:26 2017
New Revision: 312154
URL: https://svnweb.freebsd.org/changeset/base/312154

Log:
  Diff reduce with upstream post-accepted contributions

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_ilogb.c
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_ilogb.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_ilogb.c	Sat Jan 14 09:56:01 2017	(r312153)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_ilogb.c	Sat Jan 14 10:05:26 2017	(r312154)
@@ -31,9 +31,6 @@
 #include <sys/cdefs.h>
 __RCSID("$NetBSD: t_ilogb.c,v 1.7 2017/01/13 19:23:40 christos Exp $");
 
-#ifdef __FreeBSD__
-#include <limits.h>
-#endif
 #include <atf-c.h>
 #include <fenv.h>
 #include <limits.h>

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c	Sat Jan 14 09:56:01 2017	(r312153)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c	Sat Jan 14 10:05:26 2017	(r312154)
@@ -34,10 +34,6 @@ __RCSID("$NetBSD: t_pow.c,v 1.4 2015/09/
 #include <atf-c.h>
 #include <math.h>
 
-#ifdef __FreeBSD__
-#define isinff isinf
-#endif
-
 /*
  * pow(3)
  */

From owner-svn-src-projects@freebsd.org  Sat Jan 14 10:08:23 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 9E9B0CADB4B
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 10:08:23 +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 653891B0F;
 Sat, 14 Jan 2017 10:08:23 +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 v0EA8MLC092577;
 Sat, 14 Jan 2017 10:08:22 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EA8MaG092576;
 Sat, 14 Jan 2017 10:08:22 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701141008.v0EA8MaG092576@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 10:08:22 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312155 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 10:08:23 -0000

Author: ngie
Date: Sat Jan 14 10:08:22 2017
New Revision: 312155
URL: https://svnweb.freebsd.org/changeset/base/312155

Log:
  Fix the build using hunks pending upstream contributions

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c	Sat Jan 14 10:05:26 2017	(r312154)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libc/sys/t_msync.c	Sat Jan 14 10:08:22 2017	(r312155)
@@ -52,8 +52,12 @@ msync_sync(const char *garbage, int flag
 {
 	char *buf, *map = MAP_FAILED;
 	const char *str = NULL;
+#ifdef __FreeBSD__
+	size_t len;
+#else
 	size_t i, len;
 	ssize_t tot;
+#endif
 	int fd, rv;
 
 	/*

From owner-svn-src-projects@freebsd.org  Sat Jan 14 10:10:50 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 92895CADB9C
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 10:10:50 +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 56FAC1C84;
 Sat, 14 Jan 2017 10:10:50 +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 v0EAAnhm092736;
 Sat, 14 Jan 2017 10:10:49 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EAAnrV092735;
 Sat, 14 Jan 2017 10:10:49 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701141010.v0EAAnrV092735@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 10:10:49 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312156 -
 projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 10:10:50 -0000

Author: ngie
Date: Sat Jan 14 10:10:49 2017
New Revision: 312156
URL: https://svnweb.freebsd.org/changeset/base/312156

Log:
  Revert t_pow@r312154
  
  This hunk hasn't been accepted yet

Modified:
  projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c

Modified: projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c	Sat Jan 14 10:08:22 2017	(r312155)
+++ projects/netbsd-tests-upstream-01-2017/contrib/netbsd-tests/lib/libm/t_pow.c	Sat Jan 14 10:10:49 2017	(r312156)
@@ -34,6 +34,10 @@ __RCSID("$NetBSD: t_pow.c,v 1.4 2015/09/
 #include <atf-c.h>
 #include <math.h>
 
+#ifdef __FreeBSD__
+#define isinff isinf
+#endif
+
 /*
  * pow(3)
  */

From owner-svn-src-projects@freebsd.org  Sat Jan 14 12:55:33 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 DDDAFCAE834
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 12:55: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 AFAFC1951;
 Sat, 14 Jan 2017 12:55: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 v0ECtWEu061901;
 Sat, 14 Jan 2017 12:55:32 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0ECtW7p061900;
 Sat, 14 Jan 2017 12:55:32 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701141255.v0ECtW7p061900@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 12:55:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312172 -
 projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 12:55:34 -0000

Author: ngie
Date: Sat Jan 14 12:55:32 2017
New Revision: 312172
URL: https://svnweb.freebsd.org/changeset/base/312172

Log:
  Remove CFLAGS for sha2_test
  
  The previous code used to grab definitions from these openssl/openssh,
  but this is no longer needed and is no longer correct. libnetbsd
  provides all of the needed definitions
  
  libnetbsd is added to CFLAGS automatically via netbsd-tests.test.mk --
  hence all of CFLAGS can be cleared

Modified:
  projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile

Modified: projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile
==============================================================================
--- projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile	Sat Jan 14 11:27:11 2017	(r312171)
+++ projects/netbsd-tests-upstream-01-2017/lib/libc/tests/hash/Makefile	Sat Jan 14 12:55:32 2017	(r312172)
@@ -33,8 +33,6 @@ LIBADD+=		md
 LIBADD.sha2_test+=	crypto
 
 CFLAGS.h_hash+=		-I${SRCTOP}/lib/libnetbsd
-CFLAGS.sha2_test+=	-I${SRCTOP}/crypto/openssh/openbsd-compat
-CFLAGS.sha2_test+=	-I${SRCTOP}/crypto/openssh
 
 .include "../Makefile.netbsd-tests"
 

From owner-svn-src-projects@freebsd.org  Sat Jan 14 20:21:23 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 1DBA1CAEE16
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 20:21:23 +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 C50E31644;
 Sat, 14 Jan 2017 20:21:22 +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 v0EKLLAm042897;
 Sat, 14 Jan 2017 20:21:21 GMT (envelope-from ngie@FreeBSD.org)
Received: (from ngie@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EKLLIP042892;
 Sat, 14 Jan 2017 20:21:21 GMT (envelope-from ngie@FreeBSD.org)
Message-Id: <201701142021.v0EKLLIP042892@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ngie set sender to
 ngie@FreeBSD.org using -f
From: Ngie Cooper <ngie@FreeBSD.org>
Date: Sat, 14 Jan 2017 20:21:21 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312193 - in
 projects/netbsd-tests-upstream-01-2017/tests/sys: fs kern kqueue mac
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 20:21:23 -0000

Author: ngie
Date: Sat Jan 14 20:21:21 2017
New Revision: 312193
URL: https://svnweb.freebsd.org/changeset/base/312193

Log:
  Add include Makefiles for tests/sys/{fs,kern,kqueue,mac}/...
  
  The primary goal for doing this is to leverage the work done in r312114
  for enabling WARNS to address trivial code quality issues with new tests
  
  MFC after:	6 days
  Tested with:	make tinderbox
  Sponsored by:	Dell EMC Isilon

Added:
  projects/netbsd-tests-upstream-01-2017/tests/sys/fs/Makefile.inc   (contents, props changed)
  projects/netbsd-tests-upstream-01-2017/tests/sys/kern/Makefile.inc   (contents, props changed)
  projects/netbsd-tests-upstream-01-2017/tests/sys/kqueue/Makefile.inc   (contents, props changed)
  projects/netbsd-tests-upstream-01-2017/tests/sys/mac/Makefile.inc   (contents, props changed)

Added: projects/netbsd-tests-upstream-01-2017/tests/sys/fs/Makefile.inc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/fs/Makefile.inc	Sat Jan 14 20:21:21 2017	(r312193)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"

Added: projects/netbsd-tests-upstream-01-2017/tests/sys/kern/Makefile.inc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/kern/Makefile.inc	Sat Jan 14 20:21:21 2017	(r312193)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"

Added: projects/netbsd-tests-upstream-01-2017/tests/sys/kqueue/Makefile.inc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/kqueue/Makefile.inc	Sat Jan 14 20:21:21 2017	(r312193)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"

Added: projects/netbsd-tests-upstream-01-2017/tests/sys/mac/Makefile.inc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/netbsd-tests-upstream-01-2017/tests/sys/mac/Makefile.inc	Sat Jan 14 20:21:21 2017	(r312193)
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"

From owner-svn-src-projects@freebsd.org  Sat Jan 14 22:12:17 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 C6D93CAFD28
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 22:12:17 +0000 (UTC) (envelope-from dim@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 607021CAD;
 Sat, 14 Jan 2017 22:12:17 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0EMCGuY092712;
 Sat, 14 Jan 2017 22:12:16 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EMCErj092683;
 Sat, 14 Jan 2017 22:12:14 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701142212.v0EMCErj092683@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sat, 14 Jan 2017 22:12:14 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312197 - in projects/clang400-import: contrib/llvm
 contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis
 contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/CodeGen/...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 22:12:17 -0000

Author: dim
Date: Sat Jan 14 22:12:13 2017
New Revision: 312197
URL: https://svnweb.freebsd.org/changeset/base/312197

Log:
  Merge llvm, clang, lld and lldb release_40 branch r292009.  Also update
  build glue.

Added:
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumperBase.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumperBase.h
  projects/clang400-import/contrib/llvm/include/llvm/Object/Decompressor.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/Object/Decompressor.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/IVUsersPrinter.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/IVUsersPrinter.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h
     - copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopPassManager.h
  projects/clang400-import/contrib/llvm/include/llvm/XRay/
     - copied from r312186, vendor/llvm/dist/include/llvm/XRay/
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopAnalysisManager.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/Analysis/LoopAnalysisManager.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeDumper.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
  projects/clang400-import/contrib/llvm/lib/Object/Decompressor.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/Object/Decompressor.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/IVUsersPrinter.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/IVUsersPrinter.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopPassManager.cpp
     - copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/LoopPassManager.cpp
  projects/clang400-import/contrib/llvm/lib/XRay/
     - copied from r312186, vendor/llvm/dist/lib/XRay/
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyBuiltinDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyBuiltinDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyClassDefinitionDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyClassDefinitionDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyCompilandDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyCompilandDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyEnumDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyEnumDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyExternalSymbolDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyExternalSymbolDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyFunctionDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyFunctionDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypeDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypeDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypedefDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypedefDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyVariableDumper.cpp
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyVariableDumper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-xray/func-id-helper.cc
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/func-id-helper.cc
  projects/clang400-import/contrib/llvm/tools/llvm-xray/func-id-helper.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/func-id-helper.h
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-account.cc
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-account.cc
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-account.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-account.h
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-converter.cc
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-converter.cc
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-converter.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-converter.h
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-record-yaml.h
     - copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-record-yaml.h
Deleted:
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopPassManager.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumper.h
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopPassManager.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/BuiltinDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/CompilandDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/CompilandDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/EnumDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/EnumDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ExternalSymbolDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ExternalSymbolDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/FunctionDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/FunctionDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypeDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypeDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypedefDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypedefDumper.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/VariableDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/VariableDumper.h
Modified:
  projects/clang400-import/contrib/llvm/LICENSE.TXT
  projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h
  projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
  projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
  projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
  projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/DIBuilder.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/DebugInfoMetadata.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/GlobalObject.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/Intrinsics.td
  projects/clang400-import/contrib/llvm/include/llvm/IR/IntrinsicsAArch64.td
  projects/clang400-import/contrib/llvm/include/llvm/IR/IntrinsicsARM.td
  projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndex.h
  projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
  projects/clang400-import/contrib/llvm/include/llvm/ObjectYAML/DWARFYAML.h
  projects/clang400-import/contrib/llvm/include/llvm/ObjectYAML/MachOYAML.h
  projects/clang400-import/contrib/llvm/include/llvm/Passes/PassBuilder.h
  projects/clang400-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h
  projects/clang400-import/contrib/llvm/include/llvm/Support/CommandLine.h
  projects/clang400-import/contrib/llvm/include/llvm/Support/Dwarf.h
  projects/clang400-import/contrib/llvm/include/llvm/Support/FileOutputBuffer.h
  projects/clang400-import/contrib/llvm/include/llvm/Support/GenericDomTree.h
  projects/clang400-import/contrib/llvm/include/llvm/Target/TargetLowering.h
  projects/clang400-import/contrib/llvm/include/llvm/Target/TargetMachine.h
  projects/clang400-import/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td
  projects/clang400-import/contrib/llvm/include/llvm/Target/TargetSubtargetInfo.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/IndVarSimplify.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LICM.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopDeletion.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopInstSimplify.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopRotation.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Utils/LoopUtils.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Utils/UnrollLoop.h
  projects/clang400-import/contrib/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
  projects/clang400-import/contrib/llvm/lib/Analysis/AssumptionCache.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/CostModel.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/IVUsers.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/InlineCost.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/LazyValueInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopAccessAnalysis.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/LoopPass.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/TargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegisterBank.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/ScheduleDAG.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
  projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
  projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
  projects/clang400-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
  projects/clang400-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
  projects/clang400-import/contrib/llvm/lib/IR/DIBuilder.cpp
  projects/clang400-import/contrib/llvm/lib/IR/Globals.cpp
  projects/clang400-import/contrib/llvm/lib/IR/LLVMContextImpl.h
  projects/clang400-import/contrib/llvm/lib/LTO/LTOBackend.cpp
  projects/clang400-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  projects/clang400-import/contrib/llvm/lib/ObjectYAML/DWARFYAML.cpp
  projects/clang400-import/contrib/llvm/lib/Passes/PassBuilder.cpp
  projects/clang400-import/contrib/llvm/lib/ProfileData/InstrProf.cpp
  projects/clang400-import/contrib/llvm/lib/Support/FileOutputBuffer.cpp
  projects/clang400-import/contrib/llvm/lib/Support/Host.cpp
  projects/clang400-import/contrib/llvm/lib/Support/TarWriter.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64GenRegisterBankInfo.def
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/EvergreenInstructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOP1Instructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOP2Instructions.td
  projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOPCInstructions.td
  projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h
  projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/ManagedStringPool.h
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXSection.h
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetObjectFile.h
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/TargetMachine.cpp
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86.td
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86Subtarget.h
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
  projects/clang400-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.h
  projects/clang400-import/contrib/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LICM.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopDistribute.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopSink.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  projects/clang400-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
  projects/clang400-import/contrib/llvm/tools/clang/include/clang-c/Index.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/StmtOpenMP.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/OpenMPKinds.def
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Driver/CLCompatOptions.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Index/IndexSymbol.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Lex/ModuleMap.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  projects/clang400-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/Decl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/Expr.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/BodyFarm.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/ReachableCode.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/OpenMPKinds.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/Version.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Headers/altivec.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexSymbol.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexTypeSourceInfo.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexingContext.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexingContext.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/ModuleMap.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/Parser.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaCoroutine.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
  projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
  projects/clang400-import/contrib/llvm/tools/lld/CMakeLists.txt
  projects/clang400-import/contrib/llvm/tools/lld/COFF/PDB.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Driver.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Error.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Error.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/InputSection.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/InputSection.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/OutputSections.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Relocations.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Symbols.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Symbols.h
  projects/clang400-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Target.cpp
  projects/clang400-import/contrib/llvm/tools/lld/ELF/Writer.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/include/lldb/Core/Error.h
  projects/clang400-import/contrib/llvm/tools/lldb/include/lldb/Symbol/Type.h
  projects/clang400-import/contrib/llvm/tools/lldb/source/Core/Module.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/Type.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/TypeList.cpp
  projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/TypeMap.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.h
  projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
  projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-extract.cc
  projects/clang400-import/contrib/llvm/tools/opt/NewPMDriver.cpp
  projects/clang400-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang400-import/lib/clang/include/clang/Config/config.h
  projects/clang400-import/lib/clang/include/lld/Config/Version.inc
  projects/clang400-import/lib/clang/include/llvm/Config/config.h
  projects/clang400-import/lib/clang/include/llvm/Config/llvm-config.h
  projects/clang400-import/lib/clang/libclang/Makefile
  projects/clang400-import/lib/clang/libllvm/Makefile
  projects/clang400-import/usr.bin/clang/llvm-pdbdump/Makefile
Directory Properties:
  projects/clang400-import/contrib/llvm/   (props changed)
  projects/clang400-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang400-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang400-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang400-import/contrib/llvm/LICENSE.TXT
==============================================================================
--- projects/clang400-import/contrib/llvm/LICENSE.TXT	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/LICENSE.TXT	Sat Jan 14 22:12:13 2017	(r312197)
@@ -4,7 +4,7 @@ LLVM Release License
 University of Illinois/NCSA
 Open Source License
 
-Copyright (c) 2003-2016 University of Illinois at Urbana-Champaign.
+Copyright (c) 2003-2017 University of Illinois at Urbana-Champaign.
 All rights reserved.
 
 Developed by:

Modified: projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -94,7 +94,7 @@ public:
     return HelperT::template Lookup<N>::TraitsT::getFromVoidPointer(getImpl());
   }
 
-  operator bool() const { return Value & HelperT::PointerMask; }
+  explicit operator bool() const { return Value & HelperT::PointerMask; }
   bool operator==(const PointerSumType &R) const { return Value == R.Value; }
   bool operator!=(const PointerSumType &R) const { return Value != R.Value; }
   bool operator<(const PointerSumType &R) const { return Value < R.Value; }

Modified: projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -33,6 +33,32 @@ namespace llvm {
 /// Another abstraction that this doesn't provide is implementing increment in
 /// terms of addition of one. These aren't equivalent for all iterator
 /// categories, and respecting that adds a lot of complexity for little gain.
+///
+/// Classes wishing to use `iterator_facade_base` should implement the following
+/// methods:
+///
+/// Forward Iterators:
+///   (All of the following methods)
+///   - DerivedT &operator=(const DerivedT &R);
+///   - bool operator==(const DerivedT &R) const;
+///   - const T &operator*() const;
+///   - T &operator*();
+///   - DerivedT &operator++();
+///
+/// Bidirectional Iterators:
+///   (All methods of forward iterators, plus the following)
+///   - DerivedT &operator--();
+///
+/// Random-access Iterators:
+///   (All methods of bidirectional iterators excluding the following)
+///   - DerivedT &operator++();
+///   - DerivedT &operator--();
+///   (and plus the following)
+///   - bool operator<(const DerivedT &RHS) const;
+///   - DifferenceTypeT operator-(const DerivedT &R) const;
+///   - DerivedT &operator+=(DifferenceTypeT N);
+///   - DerivedT &operator-=(DifferenceTypeT N);
+///
 template <typename DerivedT, typename IteratorCategoryT, typename T,
           typename DifferenceTypeT = std::ptrdiff_t, typename PointerT = T *,
           typename ReferenceT = T &>

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -46,6 +46,30 @@ class AssumptionCache {
   /// intrinsic.
   SmallVector<WeakVH, 4> AssumeHandles;
 
+  class AffectedValueCallbackVH final : public CallbackVH {
+    AssumptionCache *AC;
+    void deleted() override;
+    void allUsesReplacedWith(Value *) override;
+
+  public:
+    using DMI = DenseMapInfo<Value *>;
+
+    AffectedValueCallbackVH(Value *V, AssumptionCache *AC = nullptr)
+        : CallbackVH(V), AC(AC) {}
+  };
+
+  friend AffectedValueCallbackVH;
+
+  /// \brief A map of values about which an assumption might be providing
+  /// information to the relevant set of assumptions.
+  using AffectedValuesMap =
+    DenseMap<AffectedValueCallbackVH, SmallVector<WeakVH, 1>,
+             AffectedValueCallbackVH::DMI>;
+  AffectedValuesMap AffectedValues;
+
+  /// Get the vector of assumptions which affect a value from the cache.
+  SmallVector<WeakVH, 1> &getAffectedValues(Value *V);
+
   /// \brief Flag tracking whether we have scanned the function yet.
   ///
   /// We want to be as lazy about this as possible, and so we scan the function
@@ -66,11 +90,16 @@ public:
   /// not already be in the cache.
   void registerAssumption(CallInst *CI);
 
+  /// \brief Update the cache of values being affected by this assumption (i.e.
+  /// the values about which this assumption provides information).
+  void updateAffectedValues(CallInst *CI);
+
   /// \brief Clear the cache of @llvm.assume intrinsics for a function.
   ///
   /// It will be re-scanned the next time it is requested.
   void clear() {
     AssumeHandles.clear();
+    AffectedValues.clear();
     Scanned = false;
   }
 
@@ -87,6 +116,18 @@ public:
       scanFunction();
     return AssumeHandles;
   }
+
+  /// \brief Access the list of assumptions which affect this value.
+  MutableArrayRef<WeakVH> assumptionsFor(const Value *V) {
+    if (!Scanned)
+      scanFunction();
+
+    auto AVI = AffectedValues.find_as(const_cast<Value *>(V));
+    if (AVI == AffectedValues.end())
+      return MutableArrayRef<WeakVH>();
+
+    return AVI->second;
+  }
 };
 
 /// \brief A function analysis which provides an \c AssumptionCache.

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -15,8 +15,8 @@
 #ifndef LLVM_ANALYSIS_IVUSERS_H
 #define LLVM_ANALYSIS_IVUSERS_H
 
+#include "llvm/Analysis/LoopAnalysisManager.h"
 #include "llvm/Analysis/LoopPass.h"
-#include "llvm/Analysis/LoopPassManager.h"
 #include "llvm/Analysis/ScalarEvolutionNormalization.h"
 #include "llvm/IR/ValueHandle.h"
 
@@ -193,17 +193,10 @@ class IVUsersAnalysis : public AnalysisI
 public:
   typedef IVUsers Result;
 
-  IVUsers run(Loop &L, LoopAnalysisManager &AM);
+  IVUsers run(Loop &L, LoopAnalysisManager &AM,
+              LoopStandardAnalysisResults &AR);
 };
 
-/// Printer pass for the \c IVUsers for a loop.
-class IVUsersPrinterPass : public PassInfoMixin<IVUsersPrinterPass> {
-  raw_ostream &OS;
-
-public:
-  explicit IVUsersPrinterPass(raw_ostream &OS) : OS(OS) {}
-  PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM);
-};
 }
 
 #endif

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -148,7 +148,7 @@ public:
     ///
     /// This happens when an edge has been deleted. We leave the edge objects
     /// around but clear them.
-    operator bool() const;
+    explicit operator bool() const;
 
     /// Returnss the \c Kind of the edge.
     Kind getKind() const;

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -20,7 +20,7 @@
 #include "llvm/ADT/SetVector.h"
 #include "llvm/Analysis/AliasAnalysis.h"
 #include "llvm/Analysis/AliasSetTracker.h"
-#include "llvm/Analysis/LoopPassManager.h"
+#include "llvm/Analysis/LoopAnalysisManager.h"
 #include "llvm/Analysis/ScalarEvolutionExpressions.h"
 #include "llvm/IR/DiagnosticInfo.h"
 #include "llvm/IR/ValueHandle.h"
@@ -753,18 +753,8 @@ class LoopAccessAnalysis
 
 public:
   typedef LoopAccessInfo Result;
-  Result run(Loop &, LoopAnalysisManager &);
-  static StringRef name() { return "LoopAccessAnalysis"; }
-};
-
-/// \brief Printer pass for the \c LoopAccessInfo results.
-class LoopAccessInfoPrinterPass
-    : public PassInfoMixin<LoopAccessInfoPrinterPass> {
-  raw_ostream &OS;
 
-public:
-  explicit LoopAccessInfoPrinterPass(raw_ostream &OS) : OS(OS) {}
-  PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM);
+  Result run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR);
 };
 
 inline Instruction *MemoryDepChecker::Dependence::getSource(

Copied: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h (from r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h	Sat Jan 14 22:12:13 2017	(r312197, copy of r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h)
@@ -0,0 +1,155 @@
+//===- LoopAnalysisManager.h - Loop analysis management ---------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This header provides classes for managing per-loop analyses. These are
+/// typically used as part of a loop pass pipeline over the loop nests of
+/// a function.
+///
+/// Loop analyses are allowed to make some simplifying assumptions:
+/// 1) Loops are, where possible, in simplified form.
+/// 2) Loops are *always* in LCSSA form.
+/// 3) A collection of analysis results are available:
+///    - LoopInfo
+///    - DominatorTree
+///    - ScalarEvolution
+///    - AAManager
+///
+/// The primary mechanism to provide these invariants is the loop pass manager,
+/// but they can also be manually provided in order to reason about a loop from
+/// outside of a dedicated pass manager.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
+#define LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
+
+#include "llvm/ADT/PostOrderIterator.h"
+#include "llvm/ADT/PriorityWorklist.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/Analysis/BasicAliasAnalysis.h"
+#include "llvm/Analysis/GlobalsModRef.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Analysis/ScalarEvolution.h"
+#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
+#include "llvm/Analysis/TargetLibraryInfo.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/IR/Dominators.h"
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+/// The adaptor from a function pass to a loop pass computes these analyses and
+/// makes them available to the loop passes "for free". Each loop pass is
+/// expected expected to update these analyses if necessary to ensure they're
+/// valid after it runs.
+struct LoopStandardAnalysisResults {
+  AAResults &AA;
+  AssumptionCache &AC;
+  DominatorTree &DT;
+  LoopInfo &LI;
+  ScalarEvolution &SE;
+  TargetLibraryInfo &TLI;
+  TargetTransformInfo &TTI;
+};
+
+/// Extern template declaration for the analysis set for this IR unit.
+extern template class AllAnalysesOn<Loop>;
+
+extern template class AnalysisManager<Loop, LoopStandardAnalysisResults &>;
+/// \brief The loop analysis manager.
+///
+/// See the documentation for the AnalysisManager template for detail
+/// documentation. This typedef serves as a convenient way to refer to this
+/// construct in the adaptors and proxies used to integrate this into the larger
+/// pass manager infrastructure.
+typedef AnalysisManager<Loop, LoopStandardAnalysisResults &>
+    LoopAnalysisManager;
+
+/// A proxy from a \c LoopAnalysisManager to a \c Function.
+typedef InnerAnalysisManagerProxy<LoopAnalysisManager, Function>
+    LoopAnalysisManagerFunctionProxy;
+
+/// A specialized result for the \c LoopAnalysisManagerFunctionProxy which
+/// retains a \c LoopInfo reference.
+///
+/// This allows it to collect loop objects for which analysis results may be
+/// cached in the \c LoopAnalysisManager.
+template <> class LoopAnalysisManagerFunctionProxy::Result {
+public:
+  explicit Result(LoopAnalysisManager &InnerAM, LoopInfo &LI)
+      : InnerAM(&InnerAM), LI(&LI) {}
+  Result(Result &&Arg) : InnerAM(std::move(Arg.InnerAM)), LI(Arg.LI) {
+    // We have to null out the analysis manager in the moved-from state
+    // because we are taking ownership of the responsibilty to clear the
+    // analysis state.
+    Arg.InnerAM = nullptr;
+  }
+  Result &operator=(Result &&RHS) {
+    InnerAM = RHS.InnerAM;
+    LI = RHS.LI;
+    // We have to null out the analysis manager in the moved-from state
+    // because we are taking ownership of the responsibilty to clear the
+    // analysis state.
+    RHS.InnerAM = nullptr;
+    return *this;
+  }
+  ~Result() {
+    // InnerAM is cleared in a moved from state where there is nothing to do.
+    if (!InnerAM)
+      return;
+
+    // Clear out the analysis manager if we're being destroyed -- it means we
+    // didn't even see an invalidate call when we got invalidated.
+    InnerAM->clear();
+  }
+
+  /// Accessor for the analysis manager.
+  LoopAnalysisManager &getManager() { return *InnerAM; }
+
+  /// Handler for invalidation of the proxy for a particular function.
+  ///
+  /// If the proxy, \c LoopInfo, and associated analyses are preserved, this
+  /// will merely forward the invalidation event to any cached loop analysis
+  /// results for loops within this function.
+  ///
+  /// If the necessary loop infrastructure is not preserved, this will forcibly
+  /// clear all of the cached analysis results that are keyed on the \c
+  /// LoopInfo for this function.
+  bool invalidate(Function &F, const PreservedAnalyses &PA,
+                  FunctionAnalysisManager::Invalidator &Inv);
+
+private:
+  LoopAnalysisManager *InnerAM;
+  LoopInfo *LI;
+};
+
+/// Provide a specialized run method for the \c LoopAnalysisManagerFunctionProxy
+/// so it can pass the \c LoopInfo to the result.
+template <>
+LoopAnalysisManagerFunctionProxy::Result
+LoopAnalysisManagerFunctionProxy::run(Function &F, FunctionAnalysisManager &AM);
+
+// Ensure the \c LoopAnalysisManagerFunctionProxy is provided as an extern
+// template.
+extern template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
+
+extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
+                                                LoopStandardAnalysisResults &>;
+/// A proxy from a \c FunctionAnalysisManager to a \c Loop.
+typedef OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
+                                  LoopStandardAnalysisResults &>
+    FunctionAnalysisManagerLoopProxy;
+
+/// Returns the minimum set of Analyses that all loop passes must preserve.
+PreservedAnalyses getLoopPassPreservedAnalyses();
+}
+
+#endif // LLVM_ANALYSIS_LOOPANALYSISMANAGER_H

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -853,17 +853,8 @@ public:
   void getAnalysisUsage(AnalysisUsage &AU) const override;
 };
 
-/// \brief Pass for printing a loop's contents as LLVM's text IR assembly.
-class PrintLoopPass : public PassInfoMixin<PrintLoopPass> {
-  raw_ostream &OS;
-  std::string Banner;
-
-public:
-  PrintLoopPass();
-  PrintLoopPass(raw_ostream &OS, const std::string &Banner = "");
-
-  PreservedAnalyses run(Loop &L, AnalysisManager<Loop> &);
-};
+/// Function to print a loop's contents as LLVM's text IR assembly.
+void printLoop(Loop &L, raw_ostream &OS, const std::string &Banner = "");
 
 } // End llvm namespace
 

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -302,6 +302,10 @@ private:
     NonLocalPointerInfo() : Size(MemoryLocation::UnknownSize) {}
   };
 
+  /// Cache storing single nonlocal def for the instruction.
+  /// It is set when nonlocal def would be found in function returning only
+  /// local dependencies.
+  DenseMap<Instruction *, NonLocalDepResult> NonLocalDefsCache;
   /// This map stores the cached results of doing a pointer lookup at the
   /// bottom of a block.
   ///
@@ -441,9 +445,9 @@ public:
   /// This analysis looks for other loads and stores with invariant.group
   /// metadata and the same pointer operand. Returns Unknown if it does not
   /// find anything, and Def if it can be assumed that 2 instructions load or
-  /// store the same value.
-  /// FIXME: This analysis works only on single block because of restrictions
-  /// at the call site.
+  /// store the same value and NonLocal which indicate that non-local Def was
+  /// found, which can be retrieved by calling getNonLocalPointerDependency
+  /// with the same queried instruction.
   MemDepResult getInvariantGroupPointerDependency(LoadInst *LI, BasicBlock *BB);
 
   /// Looks at a memory location for a load (specified by MemLocBase, Offs, and

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -55,6 +55,11 @@ struct MemIntrinsicInfo {
   // Same Id is set by the target for corresponding load/store intrinsics.
   unsigned short MatchingId;
   int NumMemRefs;
+
+  /// This is the pointer that the intrinsic is loading from or storing to.
+  /// If this is non-null, then analysis/optimization passes can assume that
+  /// this intrinsic is functionally equivalent to a load/store from this
+  /// pointer.
   Value *PtrVal;
 };
 
@@ -518,11 +523,15 @@ public:
   unsigned getMaxInterleaveFactor(unsigned VF) const;
 
   /// \return The expected cost of arithmetic ops, such as mul, xor, fsub, etc.
+  /// \p Args is an optional argument which holds the instruction operands  
+  /// values so the TTI can analyize those values searching for special 
+  /// cases\optimizations based on those values.
   int getArithmeticInstrCost(
       unsigned Opcode, Type *Ty, OperandValueKind Opd1Info = OK_AnyValue,
       OperandValueKind Opd2Info = OK_AnyValue,
       OperandValueProperties Opd1PropInfo = OP_None,
-      OperandValueProperties Opd2PropInfo = OP_None) const;
+      OperandValueProperties Opd2PropInfo = OP_None,
+      ArrayRef<const Value *> Args = ArrayRef<const Value *>()) const;
 
   /// \return The cost of a shuffle instruction of kind Kind and of type Tp.
   /// The index and subtype parameters are used by the subvector insertion and
@@ -763,7 +772,8 @@ public:
   getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
                          OperandValueKind Opd2Info,
                          OperandValueProperties Opd1PropInfo,
-                         OperandValueProperties Opd2PropInfo) = 0;
+                         OperandValueProperties Opd2PropInfo,
+                         ArrayRef<const Value *> Args) = 0;
   virtual int getShuffleCost(ShuffleKind Kind, Type *Tp, int Index,
                              Type *SubTp) = 0;
   virtual int getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src) = 0;
@@ -984,9 +994,10 @@ public:
   getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
                          OperandValueKind Opd2Info,
                          OperandValueProperties Opd1PropInfo,
-                         OperandValueProperties Opd2PropInfo) override {
+                         OperandValueProperties Opd2PropInfo,
+                         ArrayRef<const Value *> Args) override {
     return Impl.getArithmeticInstrCost(Opcode, Ty, Opd1Info, Opd2Info,
-                                       Opd1PropInfo, Opd2PropInfo);
+                                       Opd1PropInfo, Opd2PropInfo, Args);
   }
   int getShuffleCost(ShuffleKind Kind, Type *Tp, int Index,
                      Type *SubTp) override {

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -306,7 +306,8 @@ public:
                                   TTI::OperandValueKind Opd1Info,
                                   TTI::OperandValueKind Opd2Info,
                                   TTI::OperandValueProperties Opd1PropInfo,
-                                  TTI::OperandValueProperties Opd2PropInfo) {
+                                  TTI::OperandValueProperties Opd2PropInfo,
+                                  ArrayRef<const Value *> Args) {
     return 1;
   }
 
@@ -427,6 +428,63 @@ public:
     return VF;
   }
 protected:
+  // Obtain the minimum required size to hold the value (without the sign)
+  // In case of a vector it returns the min required size for one element.
+  unsigned minRequiredElementSize(const Value* Val, bool &isSigned) {
+    if (isa<ConstantDataVector>(Val) || isa<ConstantVector>(Val)) {
+      const auto* VectorValue = cast<Constant>(Val);
+
+      // In case of a vector need to pick the max between the min
+      // required size for each element
+      auto *VT = cast<VectorType>(Val->getType());
+
+      // Assume unsigned elements
+      isSigned = false;
+
+      // The max required size is the total vector width divided by num
+      // of elements in the vector
+      unsigned MaxRequiredSize = VT->getBitWidth() / VT->getNumElements();
+
+      unsigned MinRequiredSize = 0;
+      for(unsigned i = 0, e = VT->getNumElements(); i < e; ++i) {
+        if (auto* IntElement =
+              dyn_cast<ConstantInt>(VectorValue->getAggregateElement(i))) {
+          bool signedElement = IntElement->getValue().isNegative();
+          // Get the element min required size.
+          unsigned ElementMinRequiredSize =
+            IntElement->getValue().getMinSignedBits() - 1;
+          // In case one element is signed then all the vector is signed.
+          isSigned |= signedElement;
+          // Save the max required bit size between all the elements.
+          MinRequiredSize = std::max(MinRequiredSize, ElementMinRequiredSize);
+        }
+        else {
+          // not an int constant element
+          return MaxRequiredSize;
+        }
+      }
+      return MinRequiredSize;
+    }
+
+    if (const auto* CI = dyn_cast<ConstantInt>(Val)) {
+      isSigned = CI->getValue().isNegative();
+      return CI->getValue().getMinSignedBits() - 1;
+    }
+
+    if (const auto* Cast = dyn_cast<SExtInst>(Val)) {
+      isSigned = true;
+      return Cast->getSrcTy()->getScalarSizeInBits() - 1;
+    }
+
+    if (const auto* Cast = dyn_cast<ZExtInst>(Val)) {
+      isSigned = false;
+      return Cast->getSrcTy()->getScalarSizeInBits();
+    }
+
+    isSigned = false;
+    return Val->getType()->getScalarSizeInBits();
+  }
+
   bool isStridedAccess(const SCEV *Ptr) {
     return Ptr && isa<SCEVAddRecExpr>(Ptr);
   }

Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -169,8 +169,12 @@ template <typename T> class ArrayRef;
 
   /// Return true if we can prove that the specified FP value is either a NaN or
   /// never less than 0.0.
-  bool CannotBeOrderedLessThanZero(const Value *V, const TargetLibraryInfo *TLI,
-                                   unsigned Depth = 0);
+  /// If \p IncludeNeg0 is false, -0.0 is considered less than 0.0.
+  bool CannotBeOrderedLessThanZero(const Value *V, const TargetLibraryInfo *TLI);
+
+  /// \returns true if we can prove that the specified FP value has a 0 sign
+  /// bit.
+  bool SignBitMustBeZero(const Value *V, const TargetLibraryInfo *TLI);
 
   /// If the specified value can be set by repeating the same byte in memory,
   /// return the i8 value that it is represented with. This is true for all i8

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -308,7 +308,8 @@ public:
       TTI::OperandValueKind Opd1Info = TTI::OK_AnyValue,
       TTI::OperandValueKind Opd2Info = TTI::OK_AnyValue,
       TTI::OperandValueProperties Opd1PropInfo = TTI::OP_None,
-      TTI::OperandValueProperties Opd2PropInfo = TTI::OP_None) {
+      TTI::OperandValueProperties Opd2PropInfo = TTI::OP_None,
+      ArrayRef<const Value *> Args = ArrayRef<const Value *>()) {
     // Check if any of the operands are vector operands.
     const TargetLoweringBase *TLI = getTLI();
     int ISD = TLI->InstructionOpcodeToISD(Opcode);

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -52,13 +52,20 @@ class DIEAbbrevData {
   /// Dwarf form code.
   dwarf::Form Form;
 
+  /// Dwarf attribute value for DW_FORM_implicit_const
+  int64_t Value;
+
 public:
-  DIEAbbrevData(dwarf::Attribute A, dwarf::Form F) : Attribute(A), Form(F) {}
+  DIEAbbrevData(dwarf::Attribute A, dwarf::Form F)
+      : Attribute(A), Form(F), Value(0) {}
+  DIEAbbrevData(dwarf::Attribute A, int64_t V)
+      : Attribute(A), Form(dwarf::DW_FORM_implicit_const), Value(V) {}
 
   /// Accessors.
   /// @{
   dwarf::Attribute getAttribute() const { return Attribute; }
   dwarf::Form getForm() const { return Form; }
+  int64_t getValue() const { return Value; }
   /// @}
 
   /// Used to gather unique data for the abbreviation folding set.
@@ -102,6 +109,11 @@ public:
     Data.push_back(DIEAbbrevData(Attribute, Form));
   }
 
+  /// Adds attribute with DW_FORM_implicit_const value
+  void AddImplicitConstAttribute(dwarf::Attribute Attribute, int64_t Value) {
+    Data.push_back(DIEAbbrevData(Attribute, Value));
+  }
+
   /// Used to gather unique data for the abbreviation folding set.
   void Profile(FoldingSetNodeID &ID) const;
 

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -76,6 +76,7 @@ class MachineBlockFrequencyInfo;
 class MachineRegisterInfo;
 class TargetPassConfig;
 class TargetRegisterInfo;
+class raw_ostream;
 
 /// This pass implements the reg bank selector pass used in the GlobalISel
 /// pipeline. At the end of this pass, all register operands have been assigned
@@ -450,6 +451,18 @@ private:
     bool operator>(const MappingCost &Cost) const {
       return *this != Cost && Cost < *this;
     }
+
+    /// Print this on dbgs() stream.
+    void dump() const;
+
+    /// Print this on \p OS;
+    void print(raw_ostream &OS) const;
+
+    /// Overload the stream operator for easy debug printing.
+    friend raw_ostream &operator<<(raw_ostream &OS, const MappingCost &Cost) {
+      Cost.print(OS);
+      return OS;
+    }
   };
 
   /// Interface to the target lowering info related
@@ -626,6 +639,7 @@ public:
   /// \endcode
   bool runOnMachineFunction(MachineFunction &MF) override;
 };
+
 } // End namespace llvm.
 
 #endif

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -41,11 +41,8 @@ private:
   friend RegisterBankInfo;
 
 public:
-  /// The default constructor will leave the object in
-  /// an invalid state. I.e. isValid() == false.
-  /// The fields must be updated to fix that and only
-  /// RegisterBankInfo instances are allowed to do that
-  RegisterBank();
+  RegisterBank(unsigned ID, const char *Name, unsigned Size,
+               const uint32_t *ContainedRegClasses);
 
   /// Get the identifier of this register bank.
   unsigned getID() const { return ID; }

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -384,10 +384,6 @@ protected:
 
   /// Create a RegisterBankInfo that can accomodate up to \p NumRegBanks
   /// RegisterBank instances.
-  ///
-  /// \note For the verify method to succeed all the \p NumRegBanks
-  /// must be initialized by createRegisterBank and updated with
-  /// addRegBankCoverage RegisterBank.
   RegisterBankInfo(RegisterBank **RegBanks, unsigned NumRegBanks);
 
   /// This constructor is meaningless.
@@ -400,31 +396,6 @@ protected:
     llvm_unreachable("This constructor should not be executed");
   }
 
-  /// Create a new register bank with the given parameter and add it
-  /// to RegBanks.
-  /// \pre \p ID must not already be used.
-  /// \pre \p ID < NumRegBanks.
-  void createRegisterBank(unsigned ID, const char *Name);
-
-  /// Add \p RCId to the set of register class that the register bank,
-  /// identified \p ID, covers.
-  /// This method transitively adds all the sub classes and the subreg-classes
-  /// of \p RCId to the set of covered register classes.
-  /// It also adjusts the size of the register bank to reflect the maximal
-  /// size of a value that can be hold into that register bank.
-  ///
-  /// \note This method does *not* add the super classes of \p RCId.
-  /// The rationale is if \p ID covers the registers of \p RCId, that
-  /// does not necessarily mean that \p ID covers the set of registers
-  /// of RCId's superclasses.
-  /// This method does *not* add the superreg classes as well for consistents.
-  /// The expected use is to add the coverage top-down with respect to the
-  /// register hierarchy.
-  ///
-  /// \todo TableGen should just generate the BitSet vector for us.
-  void addRegBankCoverage(unsigned ID, unsigned RCId,
-                          const TargetRegisterInfo &TRI);
-
   /// Get the register bank identified by \p ID.
   RegisterBank &getRegBank(unsigned ID) {
     assert(ID < getNumRegBanks() && "Accessing an unknown register bank");

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -503,19 +503,6 @@ namespace ISD {
     /// address spaces.
     ADDRSPACECAST,
 
-    /// CONVERT_RNDSAT - This operator is used to support various conversions
-    /// between various types (float, signed, unsigned and vectors of those
-    /// types) with rounding and saturation. NOTE: Avoid using this operator as
-    /// most target don't support it and the operator might be removed in the
-    /// future. It takes the following arguments:
-    ///   0) value
-    ///   1) dest type (type to convert to)
-    ///   2) src type (type to convert from)
-    ///   3) rounding imm
-    ///   4) saturation imm
-    ///   5) ISD::CvtCode indicating the type of conversion to do
-    CONVERT_RNDSAT,
-
     /// FP16_TO_FP, FP_TO_FP16 - These operators are used to perform promotions
     /// and truncation for half-precision (16 bit) floating numbers. These nodes
     /// form a semi-softened interface for dealing with f16 (as an i16), which
@@ -927,21 +914,6 @@ namespace ISD {
   /// SETCC_INVALID if it is not possible to represent the resultant comparison.
   CondCode getSetCCAndOperation(CondCode Op1, CondCode Op2, bool isInteger);
 
-  //===--------------------------------------------------------------------===//
-  /// This enum defines the various converts CONVERT_RNDSAT supports.
-  enum CvtCode {
-    CVT_FF,     /// Float from Float
-    CVT_FS,     /// Float from Signed
-    CVT_FU,     /// Float from Unsigned
-    CVT_SF,     /// Signed from Float
-    CVT_UF,     /// Unsigned from Float
-    CVT_SS,     /// Signed from Signed
-    CVT_SU,     /// Signed from Unsigned
-    CVT_US,     /// Unsigned from Signed
-    CVT_UU,     /// Unsigned from Unsigned
-    CVT_INVALID /// Marker - Invalid opcode
-  };
-
 } // end llvm::ISD namespace
 
 } // end llvm namespace

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -626,12 +626,6 @@ public:
 
   SDValue getCondCode(ISD::CondCode Cond);
 
-  /// Returns the ConvertRndSat Note: Avoid using this node because it may
-  /// disappear in the future and most targets don't support it.
-  SDValue getConvertRndSat(EVT VT, const SDLoc &dl, SDValue Val, SDValue DTy,
-                           SDValue STy, SDValue Rnd, SDValue Sat,
-                           ISD::CvtCode Code);
-
   /// Return an ISD::VECTOR_SHUFFLE node. The number of elements in VT,
   /// which must be a vector type, must match the number of mask elements
   /// NumElts. An integer mask element equal to -1 is treated as undefined.

Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -1860,26 +1860,6 @@ public:
   }
 };
 
-/// NOTE: avoid using this node as this may disappear in the
-/// future and most targets don't support it.
-class CvtRndSatSDNode : public SDNode {
-  ISD::CvtCode CvtCode;
-
-  friend class SelectionDAG;
-
-  explicit CvtRndSatSDNode(EVT VT, unsigned Order, const DebugLoc &dl,
-                           ISD::CvtCode Code)
-      : SDNode(ISD::CONVERT_RNDSAT, Order, dl, getSDVTList(VT)), CvtCode(Code) {
-  }
-
-public:
-  ISD::CvtCode getCvtCode() const { return CvtCode; }
-
-  static bool classof(const SDNode *N) {
-    return N->getOpcode() == ISD::CONVERT_RNDSAT;
-  }
-};
-
 /// This class is used to represent EVT's, which are used
 /// to parameterize some operations.
 class VTSDNode : public SDNode {
@@ -2041,7 +2021,7 @@ public:
   friend class SelectionDAG;
 
   MaskedStoreSDNode(unsigned Order, const DebugLoc &dl, SDVTList VTs,
-                    bool isTrunc, bool isCompressing, EVT MemVT, 
+                    bool isTrunc, bool isCompressing, EVT MemVT,
                     MachineMemOperand *MMO)
       : MaskedLoadStoreSDNode(ISD::MSTORE, Order, dl, VTs, MemVT, MMO) {
     StoreSDNodeBits.IsTruncating = isTrunc;
@@ -2054,8 +2034,8 @@ public:
   bool isTruncatingStore() const { return StoreSDNodeBits.IsTruncating; }
 
   /// Returns true if the op does a compression to the vector before storing.
-  /// The node contiguously stores the active elements (integers or floats) 
-  /// in src (those with their respective bit set in writemask k) to unaligned 
+  /// The node contiguously stores the active elements (integers or floats)
+  /// in src (those with their respective bit set in writemask k) to unaligned
   /// memory at base_addr.
   bool isCompressingStore() const { return StoreSDNodeBits.IsCompressing; }
 

Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h	Sat Jan 14 22:12:13 2017	(r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h)
@@ -0,0 +1,56 @@
+//===-- CVTypeDumper.h - CodeView type info dumper --------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_CVTYPEDUMPER_H
+#define LLVM_DEBUGINFO_CODEVIEW_CVTYPEDUMPER_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/StringSet.h"
+#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
+#include "llvm/Support/ScopedPrinter.h"
+
+namespace llvm {
+
+namespace codeview {
+
+/// Dumper for CodeView type streams found in COFF object files and PDB files.
+class CVTypeDumper {
+public:
+  explicit CVTypeDumper(TypeDatabase &TypeDB) : TypeDB(TypeDB) {}
+
+  /// Dumps one type record.  Returns false if there was a type parsing error,
+  /// and true otherwise.  This should be called in order, since the dumper
+  /// maintains state about previous records which are necessary for cross
+  /// type references.
+  Error dump(const CVType &Record, TypeVisitorCallbacks &Dumper);
+
+  /// Dumps the type records in Types. Returns false if there was a type stream
+  /// parse error, and true otherwise.
+  Error dump(const CVTypeArray &Types, TypeVisitorCallbacks &Dumper);
+
+  /// Dumps the type records in Data. Returns false if there was a type stream
+  /// parse error, and true otherwise. Use this method instead of the
+  /// CVTypeArray overload when type records are laid out contiguously in
+  /// memory.
+  Error dump(ArrayRef<uint8_t> Data, TypeVisitorCallbacks &Dumper);
+
+  static void printTypeIndex(ScopedPrinter &Printer, StringRef FieldName,
+                             TypeIndex TI, TypeDatabase &DB);
+
+private:
+  TypeDatabase &TypeDB;
+};
+
+} // end namespace codeview
+} // end namespace llvm
+
+#endif // LLVM_DEBUGINFO_CODEVIEW_TYPEDUMPER_H

Modified: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h	Sat Jan 14 22:06:25 2017	(r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h	Sat Jan 14 22:12:13 2017	(r312197)
@@ -20,15 +20,15 @@ namespace llvm {
 class ScopedPrinter;
 
 namespace codeview {
-class CVTypeDumper;
+class TypeDatabase;
 
 /// Dumper for CodeView symbol streams found in COFF object files and PDB files.
 class CVSymbolDumper {
 public:
-  CVSymbolDumper(ScopedPrinter &W, CVTypeDumper &CVTD,
+  CVSymbolDumper(ScopedPrinter &W, TypeDatabase &TypeDB,
                  std::unique_ptr<SymbolDumpDelegate> ObjDelegate,
                  bool PrintRecordBytes)
-      : W(W), CVTD(CVTD), ObjDelegate(std::move(ObjDelegate)),
+      : W(W), TypeDB(TypeDB), ObjDelegate(std::move(ObjDelegate)),
         PrintRecordBytes(PrintRecordBytes) {}
 
   /// Dumps one type record.  Returns false if there was a type parsing error,
@@ -43,7 +43,7 @@ public:
 
 private:
   ScopedPrinter &W;
-  CVTypeDumper &CVTD;
+  TypeDatabase &TypeDB;
   std::unique_ptr<SymbolDumpDelegate> ObjDelegate;
 
   bool PrintRecordBytes;

Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h	Sat Jan 14 22:12:13 2017	(r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h)
@@ -0,0 +1,55 @@
+//===- TypeDatabase.h - A collection of CodeView type records ---*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASE_H
+#define LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASE_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/Support/Allocator.h"
+#include "llvm/Support/StringSaver.h"
+
+namespace llvm {
+namespace codeview {
+class TypeDatabase {
+public:
+  TypeDatabase() : TypeNameStorage(Allocator) {}
+
+  /// Gets the type index for the next type record.
+  TypeIndex getNextTypeIndex() const;
+
+  /// Records the name of a type, and reserves its type index.
+  void recordType(StringRef Name, CVType Data);
+
+  /// Saves the name in a StringSet and creates a stable StringRef.
+  StringRef saveTypeName(StringRef TypeName);
+
+  StringRef getTypeName(TypeIndex Index) const;
+
+  bool containsTypeIndex(TypeIndex Index) const;
+
+  uint32_t size() const;
+
+private:
+  BumpPtrAllocator Allocator;
+
+  /// All user defined type records in .debug$T live in here. Type indices
+  /// greater than 0x1000 are user defined. Subtract 0x1000 from the index to
+  /// index into this vector.
+  SmallVector<StringRef, 10> CVUDTNames;
+  SmallVector<CVType, 10> TypeRecords;
+
+  StringSaver TypeNameStorage;
+};
+}
+}
+
+#endif
\ No newline at end of file

Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h	Sat Jan 14 22:12:13 2017	(r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h)
@@ -0,0 +1,53 @@
+//===-- TypeDatabaseVisitor.h -----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASEVISITOR_H
+#define LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASEVISITOR_H
+
+#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
+
+namespace llvm {
+namespace codeview {
+
+/// Dumper for CodeView type streams found in COFF object files and PDB files.
+class TypeDatabaseVisitor : public TypeVisitorCallbacks {
+public:
+  explicit TypeDatabaseVisitor(TypeDatabase &TypeDB) : TypeDB(TypeDB) {}
+
+  /// Paired begin/end actions for all types. Receives all record data,
+  /// including the fixed-length record prefix.
+  Error visitTypeBegin(CVType &Record) override;
+  Error visitTypeEnd(CVType &Record) override;
+  Error visitMemberBegin(CVMemberRecord &Record) override;
+  Error visitMemberEnd(CVMemberRecord &Record) override;
+
+#define TYPE_RECORD(EnumName, EnumVal, Name)                                   \
+  Error visitKnownRecord(CVType &CVR, Name##Record &Record) override;
+#define MEMBER_RECORD(EnumName, EnumVal, Name)                                 \
+  Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record) override;
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#include "TypeRecords.def"
+
+private:
+  bool IsInFieldList = false;

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

From owner-svn-src-projects@freebsd.org  Sat Jan 14 22:16:07 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 CAC0ECAFF30
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 22:16:07 +0000 (UTC) (envelope-from dim@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 80D9C1ECF;
 Sat, 14 Jan 2017 22:16:07 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0EMG6l3093114;
 Sat, 14 Jan 2017 22:16:06 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EMG1JW093019;
 Sat, 14 Jan 2017 22:16:01 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701142216.v0EMG1JW093019@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sat, 14 Jan 2017 22:16:01 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312198 - in
 projects/clang400-import/contrib/compiler-rt/lib: asan builtins/arm sancov
 sanitizer_common scudo tsan/rtl xray
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 22:16:07 -0000

Author: dim
Date: Sat Jan 14 22:16:01 2017
New Revision: 312198
URL: https://svnweb.freebsd.org/changeset/base/312198

Log:
  Merge compiler-rt release_40 branch r292009.

Added:
  projects/clang400-import/contrib/compiler-rt/lib/sancov/
     - copied from r312197, vendor/compiler-rt/dist/lib/sancov/
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_crc32.cpp
     - copied unchanged from r312197, vendor/compiler-rt/dist/lib/scudo/scudo_crc32.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_crc32.h
     - copied unchanged from r312197, vendor/compiler-rt/dist/lib/scudo/scudo_crc32.h
Modified:
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
  projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.cc
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/adddf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/addsf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divdf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divsf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/extendsfdf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixdfsivfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixsfsivfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunsdfsivfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunssfsivfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsidfvfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsisfvfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssidfvfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssisfvfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/muldf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/mulsf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negdf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subdf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subsf3vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/truncdfsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_utils.cpp
  projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_utils.h
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_flags.inc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
  projects/clang400-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interceptors.h
  projects/clang400-import/contrib/compiler-rt/lib/xray/xray_AArch64.cc
Directory Properties:
  projects/clang400-import/contrib/compiler-rt/   (props changed)

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation.cc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -77,12 +77,13 @@ static struct AsanDeactivatedFlags {
 
   void Print() {
     Report(
-        "quarantine_size_mb %d, max_redzone %d, poison_heap %d, "
-        "malloc_context_size %d, alloc_dealloc_mismatch %d, "
-        "allocator_may_return_null %d, coverage %d, coverage_dir %s, "
-        "allocator_release_to_os_interval_ms %d\n",
-        allocator_options.quarantine_size_mb, allocator_options.max_redzone,
-        poison_heap, malloc_context_size,
+        "quarantine_size_mb %d, thread_local_quarantine_size_kb %d, "
+        "max_redzone %d, poison_heap %d, malloc_context_size %d, "
+        "alloc_dealloc_mismatch %d, allocator_may_return_null %d, coverage %d, "
+        "coverage_dir %s, allocator_release_to_os_interval_ms %d\n",
+        allocator_options.quarantine_size_mb,
+        allocator_options.thread_local_quarantine_size_kb,
+        allocator_options.max_redzone, poison_heap, malloc_context_size,
         allocator_options.alloc_dealloc_mismatch,
         allocator_options.may_return_null, coverage, coverage_dir,
         allocator_options.release_to_os_interval_ms);
@@ -109,6 +110,7 @@ void AsanDeactivate() {
 
   AllocatorOptions disabled = asan_deactivated_flags.allocator_options;
   disabled.quarantine_size_mb = 0;
+  disabled.thread_local_quarantine_size_kb = 0;
   disabled.min_redzone = 16;  // Redzone must be at least 16 bytes long.
   disabled.max_redzone = 16;
   disabled.alloc_dealloc_mismatch = false;

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_activation_flags.inc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -24,6 +24,7 @@
 ASAN_ACTIVATION_FLAG(int, redzone)
 ASAN_ACTIVATION_FLAG(int, max_redzone)
 ASAN_ACTIVATION_FLAG(int, quarantine_size_mb)
+ASAN_ACTIVATION_FLAG(int, thread_local_quarantine_size_kb)
 ASAN_ACTIVATION_FLAG(bool, alloc_dealloc_mismatch)
 ASAN_ACTIVATION_FLAG(bool, poison_heap)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -269,24 +269,24 @@ struct Allocator {
   }
 
   void RePoisonChunk(uptr chunk) {
-    // This could a user-facing chunk (with redzones), or some internal
+    // This could be a user-facing chunk (with redzones), or some internal
     // housekeeping chunk, like TransferBatch. Start by assuming the former.
     AsanChunk *ac = GetAsanChunk((void *)chunk);
     uptr allocated_size = allocator.GetActuallyAllocatedSize((void *)ac);
     uptr beg = ac->Beg();
     uptr end = ac->Beg() + ac->UsedSize(true);
     uptr chunk_end = chunk + allocated_size;
-    if (chunk < beg && beg < end && end <= chunk_end) {
-      // Looks like a valid AsanChunk. Or maybe not. Be conservative and only
-      // poison the redzones.
+    if (chunk < beg && beg < end && end <= chunk_end &&
+        ac->chunk_state == CHUNK_ALLOCATED) {
+      // Looks like a valid AsanChunk in use, poison redzones only.
       PoisonShadow(chunk, beg - chunk, kAsanHeapLeftRedzoneMagic);
       uptr end_aligned_down = RoundDownTo(end, SHADOW_GRANULARITY);
       FastPoisonShadowPartialRightRedzone(
           end_aligned_down, end - end_aligned_down,
           chunk_end - end_aligned_down, kAsanHeapLeftRedzoneMagic);
     } else {
-      // This can not be an AsanChunk. Poison everything. It may be reused as
-      // AsanChunk later.
+      // This is either not an AsanChunk or freed or quarantined AsanChunk.
+      // In either case, poison everything.
       PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
     }
   }

Modified: projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.cc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/asan/asan_flags.cc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -169,6 +169,11 @@ void InitializeFlags() {
         (ASAN_LOW_MEMORY) ? 1 << 6 : FIRST_32_SECOND_64(1 << 8, 1 << 10);
     f->thread_local_quarantine_size_kb = kDefaultThreadLocalQuarantineSizeKb;
   }
+  if (f->thread_local_quarantine_size_kb == 0 && f->quarantine_size_mb > 0) {
+    Report("%s: thread_local_quarantine_size_kb can be set to 0 only when "
+           "quarantine_size_mb is set to 0\n", SanitizerToolName);
+    Die();
+  }
   if (!f->replace_str && common_flags()->intercept_strlen) {
     Report("WARNING: strlen interceptor is enabled even though replace_str=0. "
            "Use intercept_strlen=0 to disable it.");

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/adddf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/adddf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/adddf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__adddf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vadd.f64 d0, d0, d1
+#else
 	vmov	d6, r0, r1		// move first param from r0/r1 pair into d6
 	vmov	d7, r2, r3		// move second param from r2/r3 pair into d7
 	vadd.f64 d6, d6, d7		
 	vmov	r0, r1, d6		// move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__adddf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/addsf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/addsf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/addsf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__addsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vadd.f32 s0, s0, s1
+#else
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vadd.f32 s14, s14, s15
 	vmov	r0, s14		// move result back to r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__addsf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/comparesf2.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -43,8 +43,14 @@
 .thumb
 #endif
 
-.p2align 2
+@ int __eqsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqsf2)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov r0, s0
+    vmov r1, s1
+#endif
     // Make copies of a and b with the sign bit shifted off the top.  These will
     // be used to detect zeros and NaNs.
 #if __ARM_ARCH_ISA_THUMB == 1
@@ -166,16 +172,23 @@ LOCAL_LABEL(CHECK_NAN):
     JMP(lr)
 #endif
 END_COMPILERRT_FUNCTION(__eqsf2)
+
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__lesf2, __eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__ltsf2, __eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__nesf2, __eqsf2)
 
-.p2align 2
+@ int __gtsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtsf2)
     // Identical to the preceding except in that we return -1 for NaN values.
     // Given that the two paths share so much code, one might be tempted to
     // unify them; however, the extra code needed to do so makes the code size
     // to performance tradeoff very hard to justify for such small functions.
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov r0, s0
+    vmov r1, s1
+#endif
 #if __ARM_ARCH_ISA_THUMB == 1
     push    {r6, lr}
     lsls    r2,        r0, #1
@@ -215,6 +228,8 @@ LOCAL_LABEL(CHECK_NAN_2):
 6:
     pop     {r6, pc}
 #else
+    mov     r2,         r0, lsl #1
+    mov     r3,         r1, lsl #1
     orrs    r12,    r2, r3, lsr #1
     it ne
     eorsne  r12,    r0, r1
@@ -233,10 +248,17 @@ LOCAL_LABEL(CHECK_NAN_2):
     JMP(lr)
 #endif
 END_COMPILERRT_FUNCTION(__gtsf2)
+
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__gesf2, __gtsf2)
 
-.p2align 2
+@ int __unordsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__unordsf2)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov    r0,         s0
+    vmov    r1,         s1
+#endif
     // Return 1 for NaN values, 0 otherwise.
     lsls    r2,         r0, #1
     lsls    r3,         r1, #1
@@ -260,7 +282,15 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2)
     JMP(lr)
 END_COMPILERRT_FUNCTION(__unordsf2)
 
+#if defined(COMPILER_RT_ARMHF_TARGET)
+DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmpum):
+	vmov s0, r0
+	vmov s1, r1
+	b SYMBOL_NAME(__unordsf2)
+END_COMPILERRT_FUNCTION(__aeabi_fcmpum)
+#else
 DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_fcmpun, __unordsf2)
+#endif
 
 NO_EXEC_STACK_DIRECTIVE
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divdf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divdf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divdf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__divdf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vdiv.f64 d0, d0, d1
+#else
 	vmov	d6, r0, r1		// move first param from r0/r1 pair into d6
 	vmov	d7, r2, r3		// move second param from r2/r3 pair into d7
-	vdiv.f64 d5, d6, d7		
+	vdiv.f64 d5, d6, d7
 	vmov	r0, r1, d5		// move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__divdf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divsf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divsf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/divsf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__divsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vdiv.f32 s0, s0, s1
+#else
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vdiv.f32 s13, s14, s15
 	vmov	r0, s13		// move result back to r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__divsf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov	d6, r0, r1	// load r0/r1 pair in double register
 	vmov	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7		
+#endif
 	vmrs	apsr_nzcv, fpscr
 	moveq	r0, #1		// set result register to 1 if equal
 	movne	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	moveq	r0, #1      // set result register to 1 if equal
 	movne	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/extendsfdf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/extendsfdf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/extendsfdf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__extendsfdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.f64.f32 d0, s0
+#else
 	vmov	s15, r0      // load float register from R0
 	vcvt.f64.f32 d7, s15 // convert single to double
 	vmov	r0, r1, d7   // return result in r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__extendsfdf2vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixdfsivfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixdfsivfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixdfsivfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixdfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.s32.f64 s0, d0
+	vmov r0, s0
+#else
 	vmov	d7, r0, r1    // load double register from R0/R1
 	vcvt.s32.f64 s15, d7  // convert double to 32-bit int into s15
 	vmov	r0, s15	      // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixdfsivfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixsfsivfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixsfsivfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixsfsivfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixsfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.s32.f32 s0, s0
+	vmov r0, s0
+#else
 	vmov	s15, r0        // load float register from R0
 	vcvt.s32.f32 s15, s15  // convert single to 32-bit int into s15
 	vmov	r0, s15	       // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixsfsivfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunsdfsivfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunsdfsivfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunsdfsivfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -20,9 +20,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixunsdfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.u32.f64 s0, d0
+	vmov r0, s0
+#else
 	vmov	d7, r0, r1    // load double register from R0/R1
 	vcvt.u32.f64 s15, d7  // convert double to 32-bit int into s15
 	vmov	r0, s15	      // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixunsdfsivfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunssfsivfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunssfsivfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/fixunssfsivfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -20,9 +20,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixunssfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.u32.f32 s0, s0
+	vmov r0, s0
+#else
 	vmov	s15, r0        // load float register from R0
 	vcvt.u32.f32 s15, s15  // convert single to 32-bit unsigned into s15
 	vmov	r0, s15	       // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixunssfsivfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsidfvfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsidfvfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsidfvfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatsidfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f64.s32 d0, s0
+#else
 	vmov	s15, r0        // move int to float register s15
 	vcvt.f64.s32 d7, s15   // convert 32-bit int in s15 to double in d7
 	vmov	r0, r1, d7     // move d7 to result register pair r0/r1
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatsidfvfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsisfvfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsisfvfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatsisfvfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatsisfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f32.s32 s0, s0
+#else
 	vmov	s15, r0	       // move int to float register s15
 	vcvt.f32.s32 s15, s15  // convert 32-bit int in s15 to float in s15
 	vmov	r0, s15        // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatsisfvfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssidfvfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssidfvfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssidfvfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f64.u32 d0, s0
+#else
 	vmov	s15, r0        // move int to float register s15
 	vcvt.f64.u32 d7, s15   // convert 32-bit int in s15 to double in d7
 	vmov	r0, r1, d7     // move d7 to result register pair r0/r1
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatunssidfvfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssisfvfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssisfvfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/floatunssisfvfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatunssisfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f32.u32 s0, s0
+#else
 	vmov	s15, r0	       // move int to float register s15
 	vcvt.f32.u32 s15, s15  // convert 32-bit int in s15 to float in s15
 	vmov	r0, s15        // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatunssisfvfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gedf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movge	r0, #1      // set result register to 1 if greater than or equal
 	movlt	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gesf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0	    // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movge	r0, #1      // set result register to 1 if greater than or equal
 	movlt	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movgt	r0, #1		// set result register to 1 if equal
 	movle	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0		// move from GPR 0 to float register
 	vmov	s15, r1		// move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movgt	r0, #1		// set result register to 1 if equal
 	movle	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ledf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movls	r0, #1		// set result register to 1 if equal
 	movhi	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__lesf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1     // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movls	r0, #1      // set result register to 1 if equal
 	movhi	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movmi	r0, #1		// set result register to 1 if equal
 	movpl	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1     // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movmi	r0, #1      // set result register to 1 if equal
 	movpl	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/muldf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/muldf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/muldf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__muldf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmul.f64 d0, d0, d1
+#else
 	vmov 	d6, r0, r1         // move first param from r0/r1 pair into d6
 	vmov 	d7, r2, r3         // move second param from r2/r3 pair into d7
-	vmul.f64 d6, d6, d7		
+	vmul.f64 d6, d6, d7
 	vmov 	r0, r1, d6         // move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__muldf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/mulsf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/mulsf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/mulsf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,9 +18,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__mulsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmul.f32 s0, s0, s1
+#else
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vmul.f32 s13, s14, s15
+#endif
 	vmov	r0, s13		// move result back to r0
 	bx	lr
 END_COMPILERRT_FUNCTION(__mulsf3vfp)

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__nedf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7		
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movne	r0, #1		// set result register to 0 if unequal
 	moveq	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negdf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negdf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negdf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,7 +18,11 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__negdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vneg.f64 d0, d0
+#else
 	eor	r1, r1, #-2147483648	// flip sign bit on double in r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__negdf2vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/negsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,7 +18,11 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__negsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vneg.f32 s0, s0
+#else
 	eor	r0, r0, #-2147483648	// flip sign bit on float in r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__negsf2vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__nesf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0	    // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movne	r0, #1      // set result register to 1 if unequal
 	moveq	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subdf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subdf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subdf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__subdf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vsub.f64 d0, d0, d1
+#else
 	vmov 	d6, r0, r1         // move first param from r0/r1 pair into d6
 	vmov 	d7, r2, r3         // move second param from r2/r3 pair into d7
 	vsub.f64 d6, d6, d7		
 	vmov 	r0, r1, d6         // move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__subdf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subsf3vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subsf3vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/subsf3vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -12,17 +12,21 @@
 //
 // extern float __subsf3vfp(float a, float b);
 //
-// Returns the difference between two single precision floating point numbers 
+// Returns the difference between two single precision floating point numbers
 // using the Darwin calling convention where single arguments are passsed
 // like 32-bit ints.
 //
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__subsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vsub.f32 s0, s0, s1
+#elsee
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vsub.f32 s14, s14, s15
 	vmov	r0, s14		// move result back to r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__subsf3vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/truncdfsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/truncdfsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/truncdfsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__truncdfsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.f32.f64 s0, d0
+#else
 	vmov 	d7, r0, r1   // load double from r0/r1 pair
 	vcvt.f32.f64 s15, d7 // convert double to single (trucate precision)
 	vmov 	r0, s15      // return result in r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__truncdfsf2vfp)
 

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
-	vcmp.f64 d6, d7		
+	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movvs	r0, #1      // set result register to 1 if "overflow" (any NaNs)
 	movvc	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S	Sat Jan 14 22:16:01 2017	(r312198)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movvs	r0, #1      // set result register to 1 if "overflow" (any NaNs)
 	movvc	r0, #0

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h	Sat Jan 14 22:16:01 2017	(r312198)
@@ -690,6 +690,7 @@ inline const char *ModuleArchToString(Mo
       return "arm64";
   }
   CHECK(0 && "Invalid module arch");
+  return "";
 }
 
 const uptr kModuleUUIDSize = 16;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -954,7 +954,9 @@ SANITIZER_INTERFACE_ATTRIBUTE void __san
 }
 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_dump() {
   coverage_data.DumpAll();
+#if SANITIZER_LINUX
   __sanitizer_dump_trace_pc_guard_coverage();
+#endif
 }
 SANITIZER_INTERFACE_ATTRIBUTE void
 __sanitizer_cov_module_init(s32 *guards, uptr npcs, u8 *counters,

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.cc	Sat Jan 14 22:16:01 2017	(r312198)
@@ -78,10 +78,12 @@ void LibIgnore::OnLibraryLoaded(const ch
                 lib->templ, mod.full_name());
         lib->loaded = true;
         lib->name = internal_strdup(mod.full_name());
-        const uptr idx = atomic_load(&loaded_count_, memory_order_relaxed);
-        code_ranges_[idx].begin = range.beg;
-        code_ranges_[idx].end = range.end;
-        atomic_store(&loaded_count_, idx + 1, memory_order_release);
+        const uptr idx =
+            atomic_load(&ignored_ranges_count_, memory_order_relaxed);
+        CHECK_LT(idx, kMaxLibs);
+        ignored_code_ranges_[idx].begin = range.beg;
+        ignored_code_ranges_[idx].end = range.end;
+        atomic_store(&ignored_ranges_count_, idx + 1, memory_order_release);
         break;
       }
     }
@@ -92,6 +94,29 @@ void LibIgnore::OnLibraryLoaded(const ch
       Die();
     }
   }
+
+  // Track instrumented ranges.
+  if (track_instrumented_libs_) {
+    for (const auto &mod : modules) {
+      if (!mod.instrumented())
+        continue;
+      for (const auto &range : mod.ranges()) {
+        if (!range.executable)
+          continue;
+        if (IsPcInstrumented(range.beg) && IsPcInstrumented(range.end - 1))
+          continue;
+        VReport(1, "Adding instrumented range %p-%p from library '%s'\n",
+                range.beg, range.end, mod.full_name());
+        const uptr idx =
+            atomic_load(&instrumented_ranges_count_, memory_order_relaxed);
+        CHECK_LT(idx, kMaxLibs);
+        instrumented_code_ranges_[idx].begin = range.beg;
+        instrumented_code_ranges_[idx].end = range.end;
+        atomic_store(&instrumented_ranges_count_, idx + 1,
+                     memory_order_release);
+      }
+    }
+  }
 }
 
 void LibIgnore::OnLibraryUnloaded() {

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.h	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_libignore.h	Sat Jan 14 22:16:01 2017	(r312198)
@@ -30,6 +30,9 @@ class LibIgnore {
 
   // Must be called during initialization.
   void AddIgnoredLibrary(const char *name_templ);
+  void IgnoreNoninstrumentedModules(bool enable) {
+    track_instrumented_libs_ = enable;
+  }
 
   // Must be called after a new dynamic library is loaded.
   void OnLibraryLoaded(const char *name);
@@ -37,8 +40,14 @@ class LibIgnore {
   // Must be called after a dynamic library is unloaded.
   void OnLibraryUnloaded();
 
-  // Checks whether the provided PC belongs to one of the ignored libraries.
-  bool IsIgnored(uptr pc) const;
+  // Checks whether the provided PC belongs to one of the ignored libraries or
+  // the PC should be ignored because it belongs to an non-instrumented module
+  // (when ignore_noninstrumented_modules=1). Also returns true via
+  // "pc_in_ignored_lib" if the PC is in an ignored library, false otherwise.
+  bool IsIgnored(uptr pc, bool *pc_in_ignored_lib) const;
+
+  // Checks whether the provided PC belongs to an instrumented module.
+  bool IsPcInstrumented(uptr pc) const;
 
  private:
   struct Lib {
@@ -53,26 +62,48 @@ class LibIgnore {
     uptr end;
   };
 
+  inline bool IsInRange(uptr pc, const LibCodeRange &range) const {
+    return (pc >= range.begin && pc < range.end);
+  }
+
   static const uptr kMaxLibs = 128;
 
   // Hot part:
-  atomic_uintptr_t loaded_count_;
-  LibCodeRange code_ranges_[kMaxLibs];
+  atomic_uintptr_t ignored_ranges_count_;
+  LibCodeRange ignored_code_ranges_[kMaxLibs];
+
+  atomic_uintptr_t instrumented_ranges_count_;
+  LibCodeRange instrumented_code_ranges_[kMaxLibs];
 
   // Cold part:
   BlockingMutex mutex_;
   uptr count_;
   Lib libs_[kMaxLibs];
+  bool track_instrumented_libs_;
 
   // Disallow copying of LibIgnore objects.
   LibIgnore(const LibIgnore&);  // not implemented
   void operator = (const LibIgnore&);  // not implemented
 };
 
-inline bool LibIgnore::IsIgnored(uptr pc) const {
-  const uptr n = atomic_load(&loaded_count_, memory_order_acquire);
+inline bool LibIgnore::IsIgnored(uptr pc, bool *pc_in_ignored_lib) const {
+  const uptr n = atomic_load(&ignored_ranges_count_, memory_order_acquire);
+  for (uptr i = 0; i < n; i++) {
+    if (IsInRange(pc, ignored_code_ranges_[i])) {
+      *pc_in_ignored_lib = true;
+      return true;
+    }
+  }
+  *pc_in_ignored_lib = false;
+  if (track_instrumented_libs_ && !IsPcInstrumented(pc))
+    return true;
+  return false;
+}
+
+inline bool LibIgnore::IsPcInstrumented(uptr pc) const {
+  const uptr n = atomic_load(&instrumented_ranges_count_, memory_order_acquire);
   for (uptr i = 0; i < n; i++) {
-    if (pc >= code_ranges_[i].begin && pc < code_ranges_[i].end)
+    if (IsInRange(pc, instrumented_code_ranges_[i]))
       return true;
   }
   return false;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h	Sat Jan 14 22:16:01 2017	(r312198)
@@ -639,9 +639,12 @@ namespace __sanitizer {
 #ifndef __mips__
 #if defined(__sparc__)
 #if __GLIBC_PREREQ (2, 20)
-    // On sparc glibc 2.19 and earlier sa_flags was unsigned long, and
-    // __glibc_reserved0 didn't exist.
+    // On sparc glibc 2.19 and earlier sa_flags was unsigned long.
+#if defined(__arch64__)
+    // To maintain ABI compatibility on sparc64 when switching to an int,
+    // __glibc_reserved0 was added.
     int __glibc_reserved0;
+#endif
     int sa_flags;
 #else
     unsigned long sa_flags;

Modified: projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_quarantine.h	Sat Jan 14 22:16:01 2017	(r312198)
@@ -49,18 +49,31 @@ class Quarantine {
   }
 
   void Init(uptr size, uptr cache_size) {
-    atomic_store(&max_size_, size, memory_order_release);
+    // Thread local quarantine size can be zero only when global quarantine size
+    // is zero (it allows us to perform just one atomic read per Put() call).
+    CHECK((size == 0 && cache_size == 0) || cache_size != 0);
+
+    atomic_store(&max_size_, size, memory_order_relaxed);
     atomic_store(&min_size_, size / 10 * 9,
-                 memory_order_release); // 90% of max size.
-    max_cache_size_ = cache_size;
+                 memory_order_relaxed);  // 90% of max size.
+    atomic_store(&max_cache_size_, cache_size, memory_order_relaxed);
   }
 
-  uptr GetSize() const { return atomic_load(&max_size_, memory_order_acquire); }
-  uptr GetCacheSize() const { return max_cache_size_; }
+  uptr GetSize() const { return atomic_load(&max_size_, memory_order_relaxed); }
+  uptr GetCacheSize() const {
+    return atomic_load(&max_cache_size_, memory_order_relaxed);
+  }
 
   void Put(Cache *c, Callback cb, Node *ptr, uptr size) {
-    c->Enqueue(cb, ptr, size);
-    if (c->Size() > max_cache_size_)
+    uptr cache_size = GetCacheSize();
+    if (cache_size) {
+      c->Enqueue(cb, ptr, size);
+    } else {
+      // cache_size == 0 only when size == 0 (see Init).
+      cb.Recycle(ptr);
+    }
+    // Check cache size anyway to accommodate for runtime cache_size change.
+    if (c->Size() > cache_size)
       Drain(c, cb);
   }
 
@@ -83,7 +96,7 @@ class Quarantine {
   char pad0_[kCacheLineSize];
   atomic_uintptr_t max_size_;
   atomic_uintptr_t min_size_;
-  uptr max_cache_size_;
+  atomic_uintptr_t max_cache_size_;
   char pad1_[kCacheLineSize];
   SpinMutex cache_mutex_;
   SpinMutex recycle_mutex_;
@@ -92,7 +105,7 @@ class Quarantine {
 
   void NOINLINE Recycle(Callback cb) {
     Cache tmp;
-    uptr min_size = atomic_load(&min_size_, memory_order_acquire);
+    uptr min_size = atomic_load(&min_size_, memory_order_relaxed);
     {
       SpinMutexLock l(&cache_mutex_);
       while (cache_.Size() > min_size) {
@@ -205,6 +218,7 @@ class QuarantineCache {
     return b;
   }
 };
+
 } // namespace __sanitizer
 
 #endif // SANITIZER_QUARANTINE_H

Modified: projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
==============================================================================
--- projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp	Sat Jan 14 22:12:13 2017	(r312197)
+++ projects/clang400-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp	Sat Jan 14 22:16:01 2017	(r312198)
@@ -15,6 +15,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "scudo_allocator.h"
+#include "scudo_crc32.h"
 #include "scudo_utils.h"
 
 #include "sanitizer_common/sanitizer_allocator_interface.h"
@@ -25,22 +26,6 @@
 
 #include <cstring>
 
-// Hardware CRC32 is supported at compilation via the following:
-// - for i386 & x86_64: -msse4.2
-// - for ARM & AArch64: -march=armv8-a+crc
-// An additional check must be performed at runtime as well to make sure the
-// emitted instructions are valid on the target host.
-#if defined(__SSE4_2__) || defined(__ARM_FEATURE_CRC32)
-# ifdef __SSE4_2__
-#  include <smmintrin.h>

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

From owner-svn-src-projects@freebsd.org  Sat Jan 14 22:17:14 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 50938CB003C
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 22:17:14 +0000 (UTC) (envelope-from dim@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 1F0201236;
 Sat, 14 Jan 2017 22:17:14 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0EMHDVA093246;
 Sat, 14 Jan 2017 22:17:13 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EMHC6p093236;
 Sat, 14 Jan 2017 22:17:12 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701142217.v0EMHC6p093236@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sat, 14 Jan 2017 22:17:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312200 - in projects/clang400-import/contrib/libc++:
 include include/experimental src
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 22:17:14 -0000

Author: dim
Date: Sat Jan 14 22:17:12 2017
New Revision: 312200
URL: https://svnweb.freebsd.org/changeset/base/312200

Log:
  Merge libc++ release_40 branch r292009.

Modified:
  projects/clang400-import/contrib/libc++/include/__config
  projects/clang400-import/contrib/libc++/include/__mutex_base
  projects/clang400-import/contrib/libc++/include/__string
  projects/clang400-import/contrib/libc++/include/__threading_support
  projects/clang400-import/contrib/libc++/include/experimental/string_view
  projects/clang400-import/contrib/libc++/include/ios
  projects/clang400-import/contrib/libc++/include/memory
  projects/clang400-import/contrib/libc++/include/mutex
  projects/clang400-import/contrib/libc++/src/chrono.cpp
  projects/clang400-import/contrib/libc++/src/new.cpp
Directory Properties:
  projects/clang400-import/contrib/libc++/   (props changed)

Modified: projects/clang400-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__config	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/__config	Sat Jan 14 22:17:12 2017	(r312200)
@@ -396,6 +396,15 @@ namespace std {
 #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow")))
 #endif 
 
+// A constexpr version of __builtin_memcmp was added in clang 4.0
+#if __has_builtin(__builtin_memcmp)
+# ifdef __apple_build_version__
+// No shipping version of Apple's clang has constexpr __builtin_memcmp
+# elif __clang_major__ > 3
+#  define _LIBCPP_BUILTIN_MEMCMP_ISCONSTEXPR
+# endif
+#endif
+
 #elif defined(_LIBCPP_COMPILER_GCC)
 
 #define _ALIGNAS(x) __attribute__((__aligned__(x)))
@@ -763,7 +772,7 @@ template <unsigned> struct __static_asse
 #define _NOALIAS
 #endif
 
-#if __has_extension(cxx_explicit_conversions) || defined(__IBMCPP__) || \
+#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__) || \
     (!defined(_LIBCPP_CXX03_LANG) && defined(__GNUC__)) // All supported GCC versions
 #   define _LIBCPP_EXPLICIT explicit
 #else

Modified: projects/clang400-import/contrib/libc++/include/__mutex_base
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__mutex_base	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/__mutex_base	Sat Jan 14 22:17:12 2017	(r312200)
@@ -410,8 +410,8 @@ condition_variable::wait_for(unique_lock
     typedef time_point<system_clock, duration<long double, nano> > __sys_tpf;
     typedef time_point<system_clock, nanoseconds> __sys_tpi;
     __sys_tpf _Max = __sys_tpi::max();
-    system_clock::time_point __s_now = system_clock::now();
     steady_clock::time_point __c_now = steady_clock::now();
+    system_clock::time_point __s_now = system_clock::now();
     if (_Max - __d > __s_now)
         __do_timed_wait(__lk, __s_now + __ceil<nanoseconds>(__d));
     else

Modified: projects/clang400-import/contrib/libc++/include/__string
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__string	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/__string	Sat Jan 14 22:17:12 2017	(r312200)
@@ -26,13 +26,14 @@ struct char_traits
     typedef streampos pos_type;
     typedef mbstate_t state_type;
 
-    static void assign(char_type& c1, const char_type& c2) noexcept;
+    static constexpr void assign(char_type& c1, const char_type& c2) noexcept;
     static constexpr bool eq(char_type c1, char_type c2) noexcept;
     static constexpr bool lt(char_type c1, char_type c2) noexcept;
 
-    static int              compare(const char_type* s1, const char_type* s2, size_t n);
-    static size_t           length(const char_type* s);
-    static const char_type* find(const char_type* s, size_t n, const char_type& a);
+    static constexpr int    compare(const char_type* s1, const char_type* s2, size_t n);
+    static constexpr size_t length(const char_type* s);
+    static constexpr const char_type* 
+                            find(const char_type* s, size_t n, const char_type& a);
     static char_type*       move(char_type* s1, const char_type* s2, size_t n);
     static char_type*       copy(char_type* s1, const char_type* s2, size_t n);
     static char_type*       assign(char_type* s, size_t n, char_type a);
@@ -77,18 +78,19 @@ struct _LIBCPP_TEMPLATE_VIS char_traits
     typedef streampos pos_type;
     typedef mbstate_t state_type;
 
-    static inline void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT
-        {__c1 = __c2;}
+    static inline void _LIBCPP_CONSTEXPR_AFTER_CXX14
+        assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
     static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 == __c2;}
     static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 < __c2;}
 
-    static int              compare(const char_type* __s1, const char_type* __s2, size_t __n);
-    _LIBCPP_INLINE_VISIBILITY
-    static size_t           length(const char_type* __s);
-    _LIBCPP_INLINE_VISIBILITY
-    static const char_type* find(const char_type* __s, size_t __n, const char_type& __a);
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    int compare(const char_type* __s1, const char_type* __s2, size_t __n);
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    size_t length(const char_type* __s);
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    const char_type* find(const char_type* __s, size_t __n, const char_type& __a);
     static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n);
     _LIBCPP_INLINE_VISIBILITY
     static char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n);
@@ -108,7 +110,7 @@ struct _LIBCPP_TEMPLATE_VIS char_traits
 };
 
 template <class _CharT>
-int
+_LIBCPP_CONSTEXPR_AFTER_CXX14 int
 char_traits<_CharT>::compare(const char_type* __s1, const char_type* __s2, size_t __n)
 {
     for (; __n; --__n, ++__s1, ++__s2)
@@ -123,7 +125,7 @@ char_traits<_CharT>::compare(const char_
 
 template <class _CharT>
 inline
-size_t
+_LIBCPP_CONSTEXPR_AFTER_CXX14 size_t
 char_traits<_CharT>::length(const char_type* __s)
 {
     size_t __len = 0;
@@ -134,7 +136,7 @@ char_traits<_CharT>::length(const char_t
 
 template <class _CharT>
 inline
-const _CharT*
+_LIBCPP_CONSTEXPR_AFTER_CXX14 const _CharT*
 char_traits<_CharT>::find(const char_type* __s, size_t __n, const char_type& __a)
 {
     for (; __n; --__n)
@@ -200,18 +202,19 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
     typedef streampos pos_type;
     typedef mbstate_t state_type;
 
-    static inline void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT
-        {__c1 = __c2;}
+    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
     static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
             {return __c1 == __c2;}
     static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
         {return (unsigned char)__c1 < (unsigned char)__c2;}
 
-    static inline int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
-        {return __n == 0 ? 0 : memcmp(__s1, __s2, __n);}
-    static inline size_t length(const char_type* __s)  _NOEXCEPT {return strlen(__s);}
-    static inline const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
-        {return __n == 0 ? NULL : (const char_type*) memchr(__s, to_int_type(__a), __n);}
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
+    static inline size_t _LIBCPP_CONSTEXPR_AFTER_CXX14
+    length(const char_type* __s)  _NOEXCEPT {return __builtin_strlen(__s);}
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
     static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
         {return __n == 0 ? __s1 : (char_type*) memmove(__s1, __s2, __n);}
     static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
@@ -234,6 +237,48 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
         {return int_type(EOF);}
 };
 
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+int
+char_traits<char>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
+{
+    if (__n == 0)
+        return 0;
+#ifdef _LIBCPP_BUILTIN_MEMCMP_ISCONSTEXPR
+    return __builtin_memcmp(__s1, __s2, __n);
+#elif _LIBCPP_STD_VER <= 14
+    return memcmp(__s1, __s2, __n);
+#else
+    for (; __n; --__n, ++__s1, ++__s2)
+    {
+        if (lt(*__s1, *__s2))
+            return -1;
+        if (lt(*__s2, *__s1))
+            return 1;
+    }
+    return 0;
+#endif
+}
+
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+const char*
+char_traits<char>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
+{
+    if (__n == 0)
+        return NULL;
+#if _LIBCPP_STD_VER <= 14
+    return (const char_type*) memchr(__s, to_int_type(__a), __n);
+#else
+    for (; __n; --__n)
+    {
+        if (eq(*__s, __a))
+            return __s;
+        ++__s;
+    }
+    return NULL;
+#endif
+}
+
+
 // char_traits<wchar_t>
 
 template <>
@@ -245,19 +290,19 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
     typedef streampos pos_type;
     typedef mbstate_t state_type;
 
-    static inline void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT
-        {__c1 = __c2;}
+    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
     static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 == __c2;}
     static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 < __c2;}
 
-    static inline int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
-        {return __n == 0 ? 0 : wmemcmp(__s1, __s2, __n);}
-    static inline size_t length(const char_type* __s) _NOEXCEPT
-        {return wcslen(__s);}
-    static inline const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
-        {return __n == 0 ? NULL : (const char_type*)wmemchr(__s, __a, __n);}
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    int compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    size_t length(const char_type* __s) _NOEXCEPT;
+    static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
     static inline char_type* move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
         {return __n == 0 ? __s1 : (char_type*)wmemmove(__s1, __s2, __n);}
     static inline char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
@@ -280,6 +325,66 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
         {return int_type(WEOF);}
 };
 
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+int
+char_traits<wchar_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
+{
+    if (__n == 0)
+        return 0;
+#if __has_builtin(__builtin_wmemcmp)
+    return __builtin_wmemcmp(__s1, __s2, __n);
+#elif _LIBCPP_STD_VER <= 14
+    return wmemcmp(__s1, __s2, __n);
+#else
+    for (; __n; --__n, ++__s1, ++__s2)
+    {
+        if (lt(*__s1, *__s2))
+            return -1;
+        if (lt(*__s2, *__s1))
+            return 1;
+    }
+    return 0;
+#endif
+}
+
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+size_t
+char_traits<wchar_t>::length(const char_type* __s) _NOEXCEPT
+{
+#if __has_builtin(__builtin_wcslen)
+    return __builtin_wcslen(__s);
+#elif _LIBCPP_STD_VER <= 14
+    return wcslen(__s);
+#else
+    size_t __len = 0;
+    for (; !eq(*__s, char_type(0)); ++__s)
+        ++__len;
+    return __len;
+#endif
+}
+
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+const wchar_t*
+char_traits<wchar_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
+{
+    if (__n == 0)
+        return NULL;
+#if __has_builtin(__builtin_wmemchr)
+        return __builtin_wmemchr(__s, __a, __n);
+#elif _LIBCPP_STD_VER <= 14
+    return wmemchr(__s, __a, __n);
+#else
+    for (; __n; --__n)
+    {
+        if (eq(*__s, __a))
+            return __s;
+        ++__s;
+    }
+    return NULL;
+#endif
+}
+
+
 #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 
 template <>
@@ -291,19 +396,19 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
     typedef u16streampos   pos_type;
     typedef mbstate_t      state_type;
 
-    static inline void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT
-        {__c1 = __c2;}
+    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
     static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 == __c2;}
     static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 < __c2;}
 
-    _LIBCPP_INLINE_VISIBILITY
-    static int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
-    _LIBCPP_INLINE_VISIBILITY
-    static size_t           length(const char_type* __s) _NOEXCEPT;
-    _LIBCPP_INLINE_VISIBILITY
-    static const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    size_t           length(const char_type* __s) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
     _LIBCPP_INLINE_VISIBILITY
     static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
     _LIBCPP_INLINE_VISIBILITY
@@ -323,7 +428,7 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
         {return int_type(0xFFFF);}
 };
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 int
 char_traits<char16_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
 {
@@ -337,7 +442,7 @@ char_traits<char16_t>::compare(const cha
     return 0;
 }
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 size_t
 char_traits<char16_t>::length(const char_type* __s) _NOEXCEPT
 {
@@ -347,7 +452,7 @@ char_traits<char16_t>::length(const char
     return __len;
 }
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 const char16_t*
 char_traits<char16_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
 {
@@ -410,19 +515,19 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
     typedef u32streampos   pos_type;
     typedef mbstate_t      state_type;
 
-    static inline void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT
-        {__c1 = __c2;}
+    static inline _LIBCPP_CONSTEXPR_AFTER_CXX14
+    void assign(char_type& __c1, const char_type& __c2) _NOEXCEPT {__c1 = __c2;}
     static inline _LIBCPP_CONSTEXPR bool eq(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 == __c2;}
     static inline _LIBCPP_CONSTEXPR bool lt(char_type __c1, char_type __c2) _NOEXCEPT
         {return __c1 < __c2;}
 
-    _LIBCPP_INLINE_VISIBILITY
-    static int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
-    _LIBCPP_INLINE_VISIBILITY
-    static size_t           length(const char_type* __s) _NOEXCEPT;
-    _LIBCPP_INLINE_VISIBILITY
-    static const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    int              compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    size_t           length(const char_type* __s) _NOEXCEPT;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR_AFTER_CXX14
+    const char_type* find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT;
     _LIBCPP_INLINE_VISIBILITY
     static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT;
     _LIBCPP_INLINE_VISIBILITY
@@ -442,7 +547,7 @@ struct _LIBCPP_TEMPLATE_VIS char_traits<
         {return int_type(0xFFFFFFFF);}
 };
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 int
 char_traits<char32_t>::compare(const char_type* __s1, const char_type* __s2, size_t __n) _NOEXCEPT
 {
@@ -456,7 +561,7 @@ char_traits<char32_t>::compare(const cha
     return 0;
 }
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 size_t
 char_traits<char32_t>::length(const char_type* __s) _NOEXCEPT
 {
@@ -466,7 +571,7 @@ char_traits<char32_t>::length(const char
     return __len;
 }
 
-inline
+inline _LIBCPP_CONSTEXPR_AFTER_CXX14
 const char32_t*
 char_traits<char32_t>::find(const char_type* __s, size_t __n, const char_type& __a) _NOEXCEPT
 {

Modified: projects/clang400-import/contrib/libc++/include/__threading_support
==============================================================================
--- projects/clang400-import/contrib/libc++/include/__threading_support	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/__threading_support	Sat Jan 14 22:17:12 2017	(r312200)
@@ -385,7 +385,7 @@ int __libcpp_recursive_mutex_unlock(__li
 
 int __libcpp_recursive_mutex_destroy(__libcpp_recursive_mutex_t *__m)
 {
-  static_cast<void>(__m);
+  DeleteCriticalSection(__m);
   return 0;
 }
 

Modified: projects/clang400-import/contrib/libc++/include/experimental/string_view
==============================================================================
--- projects/clang400-import/contrib/libc++/include/experimental/string_view	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/experimental/string_view	Sat Jan 14 22:17:12 2017	(r312200)
@@ -340,12 +340,7 @@ _LIBCPP_BEGIN_NAMESPACE_LFTS
         // [string.view.ops], string operations:
         template<class _Allocator>
         _LIBCPP_INLINE_VISIBILITY
-        // Clang's extended C++11 explict conversions don't work with
-        // string_view in C++03.
-#ifndef _LIBCPP_CXX03_LANG
-        _LIBCPP_EXPLICIT
-#endif
-        operator basic_string<_CharT, _Traits, _Allocator>() const
+        _LIBCPP_EXPLICIT operator basic_string<_CharT, _Traits, _Allocator>() const
         { return basic_string<_CharT, _Traits, _Allocator>( begin(), end()); }
 
         template<class _Allocator = allocator<_CharT> >

Modified: projects/clang400-import/contrib/libc++/include/ios
==============================================================================
--- projects/clang400-import/contrib/libc++/include/ios	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/ios	Sat Jan 14 22:17:12 2017	(r312200)
@@ -572,6 +572,13 @@ ios_base::exceptions(iostate __iostate)
     clear(__rdstate_);
 }
 
+#if defined(_LIBCPP_CXX03_LANG)
+struct _LIBCPP_TYPE_VIS __cxx03_bool {
+  typedef void (__cxx03_bool::*__bool_type)();
+  void __true_value() {}
+};
+#endif
+
 template <class _CharT, class _Traits>
 class _LIBCPP_TEMPLATE_VIS basic_ios
     : public ios_base
@@ -585,8 +592,15 @@ public:
     typedef typename traits_type::pos_type pos_type;
     typedef typename traits_type::off_type off_type;
 
+#if defined(_LIBCPP_CXX03_LANG)
+    _LIBCPP_ALWAYS_INLINE
+    operator __cxx03_bool::__bool_type() const {
+        return !fail() ? &__cxx03_bool::__true_value : nullptr;
+    }
+#else
     _LIBCPP_ALWAYS_INLINE
     _LIBCPP_EXPLICIT operator bool() const {return !fail();}
+#endif
 
     _LIBCPP_ALWAYS_INLINE bool operator!() const    {return  fail();}
     _LIBCPP_ALWAYS_INLINE iostate rdstate() const   {return ios_base::rdstate();}

Modified: projects/clang400-import/contrib/libc++/include/memory
==============================================================================
--- projects/clang400-import/contrib/libc++/include/memory	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/memory	Sat Jan 14 22:17:12 2017	(r312200)
@@ -3884,6 +3884,7 @@ class _LIBCPP_TEMPLATE_VIS shared_ptr
 {
 public:
     typedef _Tp element_type;
+
 #if _LIBCPP_STD_VER > 14
     typedef weak_ptr<_Tp> weak_type;
 #endif
@@ -3914,17 +3915,17 @@ public:
     template<class _Yp>
         _LIBCPP_INLINE_VISIBILITY
         shared_ptr(const shared_ptr<_Yp>& __r,
-                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat())
+                   typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat())
                        _NOEXCEPT;
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
     _LIBCPP_INLINE_VISIBILITY
     shared_ptr(shared_ptr&& __r) _NOEXCEPT;
     template<class _Yp> _LIBCPP_INLINE_VISIBILITY  shared_ptr(shared_ptr<_Yp>&& __r,
-                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat())
+                   typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat())
                        _NOEXCEPT;
 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
     template<class _Yp> explicit shared_ptr(const weak_ptr<_Yp>& __r,
-                   typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type= __nat());
+                   typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type= __nat());
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
     template<class _Yp>
         shared_ptr(auto_ptr<_Yp>&& __r,
@@ -4316,7 +4317,7 @@ template<class _Tp>
 template<class _Yp>
 inline
 shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r,
-                            typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type)
+                            typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type)
          _NOEXCEPT
     : __ptr_(__r.__ptr_),
       __cntrl_(__r.__cntrl_)
@@ -4341,7 +4342,7 @@ template<class _Tp>
 template<class _Yp>
 inline
 shared_ptr<_Tp>::shared_ptr(shared_ptr<_Yp>&& __r,
-                            typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type)
+                            typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type)
          _NOEXCEPT
     : __ptr_(__r.__ptr_),
       __cntrl_(__r.__cntrl_)
@@ -4639,7 +4640,7 @@ template<class _Yp>
 inline
 typename enable_if
 <
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>&
 >::type
 shared_ptr<_Tp>::operator=(const shared_ptr<_Yp>& __r) _NOEXCEPT
@@ -4664,7 +4665,7 @@ template<class _Yp>
 inline
 typename enable_if
 <
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>&
 >::type
 shared_ptr<_Tp>::operator=(shared_ptr<_Yp>&& __r)
@@ -4679,7 +4680,7 @@ inline
 typename enable_if
 <
     !is_array<_Yp>::value &&
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>
 >::type&
 shared_ptr<_Tp>::operator=(auto_ptr<_Yp>&& __r)
@@ -4694,7 +4695,8 @@ inline
 typename enable_if
 <
     !is_array<_Yp>::value &&
-    is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, _Tp*>::value,
+    is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, 
+                   typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>&
 >::type
 shared_ptr<_Tp>::operator=(unique_ptr<_Yp, _Dp>&& __r)
@@ -4711,7 +4713,7 @@ inline _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     !is_array<_Yp>::value &&
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>&
 >::type
 shared_ptr<_Tp>::operator=(auto_ptr<_Yp> __r)
@@ -4726,7 +4728,8 @@ inline _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     !is_array<_Yp>::value &&
-    is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, _Tp*>::value,
+    is_convertible<typename unique_ptr<_Yp, _Dp>::pointer, 
+                   typename shared_ptr<_Tp>::element_type*>::value,
     shared_ptr<_Tp>&
 >::type
 shared_ptr<_Tp>::operator=(unique_ptr<_Yp, _Dp> __r)
@@ -4759,7 +4762,7 @@ template<class _Yp>
 inline
 typename enable_if
 <
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     void
 >::type
 shared_ptr<_Tp>::reset(_Yp* __p)
@@ -4772,7 +4775,7 @@ template<class _Yp, class _Dp>
 inline
 typename enable_if
 <
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     void
 >::type
 shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d)
@@ -4785,7 +4788,7 @@ template<class _Yp, class _Dp, class _Al
 inline
 typename enable_if
 <
-    is_convertible<_Yp*, _Tp*>::value,
+    is_convertible<_Yp*, typename shared_ptr<_Tp>::element_type*>::value,
     void
 >::type
 shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d, _Alloc __a)
@@ -5350,7 +5353,7 @@ weak_ptr<_Tp>::reset() _NOEXCEPT
 template<class _Tp>
 template<class _Yp>
 shared_ptr<_Tp>::shared_ptr(const weak_ptr<_Yp>& __r,
-                            typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type)
+                            typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type)
     : __ptr_(__r.__ptr_),
       __cntrl_(__r.__cntrl_ ? __r.__cntrl_->lock() : __r.__cntrl_)
 {

Modified: projects/clang400-import/contrib/libc++/include/mutex
==============================================================================
--- projects/clang400-import/contrib/libc++/include/mutex	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/include/mutex	Sat Jan 14 22:17:12 2017	(r312200)
@@ -559,6 +559,7 @@ public:
 #endif
 
 template <class _Fp>
+inline _LIBCPP_INLINE_VISIBILITY
 void
 __call_once_proxy(void* __vp)
 {

Modified: projects/clang400-import/contrib/libc++/src/chrono.cpp
==============================================================================
--- projects/clang400-import/contrib/libc++/src/chrono.cpp	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/src/chrono.cpp	Sat Jan 14 22:17:12 2017	(r312200)
@@ -42,7 +42,7 @@
 #include <winapifamily.h>
 #endif
 #else
-#if !defined(CLOCK_REALTIME)
+#if !defined(CLOCK_REALTIME) || !defined(_LIBCXX_USE_CLOCK_GETTIME)
 #include <sys/time.h>        // for gettimeofday and timeval
 #endif // !defined(CLOCK_REALTIME)
 #endif // defined(_LIBCPP_WIN32API)

Modified: projects/clang400-import/contrib/libc++/src/new.cpp
==============================================================================
--- projects/clang400-import/contrib/libc++/src/new.cpp	Sat Jan 14 22:16:03 2017	(r312199)
+++ projects/clang400-import/contrib/libc++/src/new.cpp	Sat Jan 14 22:17:12 2017	(r312200)
@@ -198,7 +198,11 @@ void
 operator delete(void* ptr, std::align_val_t) _NOEXCEPT
 {
     if (ptr)
+#if defined(_LIBCPP_MSVCRT)
+        ::_aligned_free(ptr);
+#else
         ::free(ptr);
+#endif
 }
 
 _LIBCPP_WEAK

From owner-svn-src-projects@freebsd.org  Sat Jan 14 22:20:14 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
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 D811FCB0136
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sat, 14 Jan 2017 22:20:14 +0000 (UTC) (envelope-from dim@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 5279A143C;
 Sat, 14 Jan 2017 22:20:14 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0EMKDm3093515;
 Sat, 14 Jan 2017 22:20:13 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EMKDTJ093508;
 Sat, 14 Jan 2017 22:20:13 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201701142220.v0EMKDTJ093508@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sat, 14 Jan 2017 22:20:13 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r312201 - in projects/clang400-import: .
 contrib/elftoolchain/libelftc contrib/netbsd-tests
 contrib/netbsd-tests/crypto/libcrypto contrib/netbsd-tests/dev/audio
 contrib/netbsd-tests/dev...
X-SVN-Group: projects
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 &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sat, 14 Jan 2017 22:20:14 -0000

Author: dim
Date: Sat Jan 14 22:20:12 2017
New Revision: 312201
URL: https://svnweb.freebsd.org/changeset/base/312201

Log:
  Merge ^/head r311940 through r312200.

Added:
  projects/clang400-import/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/dev/cgd/t_cgd_3des.c
  projects/clang400-import/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/dev/cgd/t_cgd_aes.c
  projects/clang400-import/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/dev/cgd/t_cgd_blowfish.c
  projects/clang400-import/contrib/netbsd-tests/kernel/msg.h
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/msg.h
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_wait.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_wait.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_wait.h
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_wait.h
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_wait3.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_wait3.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_wait4.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_wait4.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_wait6.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_wait6.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_waitid.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_waitid.c
  projects/clang400-import/contrib/netbsd-tests/kernel/t_ptrace_waitpid.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/kernel/t_ptrace_waitpid.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_clock_nanosleep.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libc/sys/t_clock_nanosleep.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc_wnohang.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libc/sys/t_wait_noproc_wnohang.c
  projects/clang400-import/contrib/netbsd-tests/lib/libm/t_casinh.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libm/t_casinh.c
  projects/clang400-import/contrib/netbsd-tests/lib/libm/t_fe_round.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libm/t_fe_round.c
  projects/clang400-import/contrib/netbsd-tests/lib/libm/t_ilogb.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libm/t_ilogb.c
  projects/clang400-import/contrib/netbsd-tests/lib/libpthread/t_timedmutex.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/lib/libpthread/t_timedmutex.c
  projects/clang400-import/contrib/netbsd-tests/net/net/t_mtudisc.sh
     - copied unchanged from r312200, head/contrib/netbsd-tests/net/net/t_mtudisc.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_mtudisc6.sh
     - copied unchanged from r312200, head/contrib/netbsd-tests/net/net/t_mtudisc6.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_ping6_opts.sh
     - copied unchanged from r312200, head/contrib/netbsd-tests/net/net/t_ping6_opts.sh
  projects/clang400-import/contrib/netbsd-tests/net/net_common.sh
     - copied unchanged from r312200, head/contrib/netbsd-tests/net/net_common.sh
  projects/clang400-import/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_union.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_union.c
  projects/clang400-import/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_cast.c
     - copied unchanged from r312200, head/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_cast.c
  projects/clang400-import/tests/sys/Makefile.inc
     - copied unchanged from r312200, head/tests/sys/Makefile.inc
  projects/clang400-import/tests/sys/fs/Makefile.inc
     - copied unchanged from r312200, head/tests/sys/fs/Makefile.inc
  projects/clang400-import/tests/sys/kern/Makefile.inc
     - copied unchanged from r312200, head/tests/sys/kern/Makefile.inc
  projects/clang400-import/tests/sys/kqueue/Makefile.inc
     - copied unchanged from r312200, head/tests/sys/kqueue/Makefile.inc
  projects/clang400-import/tests/sys/mac/Makefile.inc
     - copied unchanged from r312200, head/tests/sys/mac/Makefile.inc
  projects/clang400-import/usr.sbin/fstyp/exfat.c
     - copied unchanged from r312200, head/usr.sbin/fstyp/exfat.c
  projects/clang400-import/usr.sbin/fstyp/tests/dfr-01-xfat.img.bz2
     - copied unchanged from r312200, head/usr.sbin/fstyp/tests/dfr-01-xfat.img.bz2
Deleted:
  projects/clang400-import/contrib/netbsd-tests/fs/nfs/nfsservice/rpcbind/
Modified:
  projects/clang400-import/UPDATING
  projects/clang400-import/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c
  projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_libcrypto.sh
  projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_pubkey.sh
  projects/clang400-import/contrib/netbsd-tests/dev/audio/h_pad.c
  projects/clang400-import/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue
  projects/clang400-import/contrib/netbsd-tests/fs/ffs/ffs_common.sh
  projects/clang400-import/contrib/netbsd-tests/fs/fifofs/t_fifo.c
  projects/clang400-import/contrib/netbsd-tests/fs/psshfs/t_psshfs.sh
  projects/clang400-import/contrib/netbsd-tests/fs/puffs/t_basic.c
  projects/clang400-import/contrib/netbsd-tests/fs/vfs/t_vnops.c
  projects/clang400-import/contrib/netbsd-tests/h_macros.h
  projects/clang400-import/contrib/netbsd-tests/kernel/t_mqueue.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/arch/sparc64/exec_prot_support.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/arch/sparc64/return_one.S
  projects/clang400-import/contrib/netbsd-tests/lib/libc/db/h_db.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/db/t_db.sh
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/posix_spawn/t_spawnattr.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_dir.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_fnmatch.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/gen/t_sleep.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/string/t_memcpy.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/string/t_memmem.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sync/cpp_atomic_ops_linkable.cc
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_access.c
  projects/clang400-import/contrib/netbsd-tests/lib/libc/sys/t_getrusage.c
  projects/clang400-import/contrib/netbsd-tests/lib/libm/t_ldexp.c
  projects/clang400-import/contrib/netbsd-tests/lib/libm/t_precision.c
  projects/clang400-import/contrib/netbsd-tests/lib/libpthread/h_common.h
  projects/clang400-import/contrib/netbsd-tests/lib/libpthread/t_mutex.c
  projects/clang400-import/contrib/netbsd-tests/lib/librumpclient/h_execthr.c
  projects/clang400-import/contrib/netbsd-tests/lib/librumphijack/t_tcpip.sh
  projects/clang400-import/contrib/netbsd-tests/lib/libusbhid/t_usbhid.c
  projects/clang400-import/contrib/netbsd-tests/net/arp/t_arp.sh
  projects/clang400-import/contrib/netbsd-tests/net/arp/t_dad.sh
  projects/clang400-import/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh
  projects/clang400-import/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh
  projects/clang400-import/contrib/netbsd-tests/net/if/t_compat.c
  projects/clang400-import/contrib/netbsd-tests/net/if/t_ifconfig.sh
  projects/clang400-import/contrib/netbsd-tests/net/if_bridge/t_bridge.sh
  projects/clang400-import/contrib/netbsd-tests/net/if_gif/t_gif.sh
  projects/clang400-import/contrib/netbsd-tests/net/if_pppoe/t_pppoe.sh
  projects/clang400-import/contrib/netbsd-tests/net/if_tap/t_tap.sh
  projects/clang400-import/contrib/netbsd-tests/net/mcast/t_mcast.sh
  projects/clang400-import/contrib/netbsd-tests/net/ndp/t_dad.sh
  projects/clang400-import/contrib/netbsd-tests/net/ndp/t_ndp.sh
  projects/clang400-import/contrib/netbsd-tests/net/ndp/t_ra.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_forwarding.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_ipaddress.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_ipv6_lifetime.sh
  projects/clang400-import/contrib/netbsd-tests/net/net/t_ipv6address.sh
  projects/clang400-import/contrib/netbsd-tests/net/route/t_change.sh
  projects/clang400-import/contrib/netbsd-tests/net/route/t_flags.sh
  projects/clang400-import/contrib/netbsd-tests/net/route/t_flags6.sh
  projects/clang400-import/contrib/netbsd-tests/net/route/t_route.sh
  projects/clang400-import/contrib/netbsd-tests/rump/modautoload/t_modautoload.c
  projects/clang400-import/contrib/netbsd-tests/rump/rumpkern/t_lwproc.c
  projects/clang400-import/contrib/netbsd-tests/sys/net/t_print.c
  projects/clang400-import/contrib/netbsd-tests/usr.bin/config/t_config.sh
  projects/clang400-import/contrib/netbsd-tests/usr.bin/netpgpverify/t_netpgpverify.sh
  projects/clang400-import/lib/libc/gen/tcsendbreak.3
  projects/clang400-import/lib/libc/sys/shm_open.2
  projects/clang400-import/lib/libc/tests/db/Makefile
  projects/clang400-import/lib/libc/tests/gen/Makefile
  projects/clang400-import/lib/libc/tests/stdlib/Makefile
  projects/clang400-import/lib/libc/tests/sys/Makefile
  projects/clang400-import/lib/libgcc_s/Makefile
  projects/clang400-import/lib/libnetbsd/sys/cdefs.h
  projects/clang400-import/lib/libthr/tests/Makefile
  projects/clang400-import/lib/msun/tests/Makefile
  projects/clang400-import/libexec/rtld-elf/rtld.c
  projects/clang400-import/share/man/man4/em.4
  projects/clang400-import/share/man/man4/sfxge.4
  projects/clang400-import/share/man/man4/tty.4
  projects/clang400-import/sys/cam/cam_ccb.h
  projects/clang400-import/sys/cam/cam_periph.c
  projects/clang400-import/sys/cam/ctl/ctl_frontend_cam_sim.c
  projects/clang400-import/sys/cam/ctl/scsi_ctl.c
  projects/clang400-import/sys/cam/nvme/nvme_da.c
  projects/clang400-import/sys/cam/scsi/scsi_all.c
  projects/clang400-import/sys/cam/scsi/scsi_xpt.c
  projects/clang400-import/sys/conf/NOTES
  projects/clang400-import/sys/conf/options
  projects/clang400-import/sys/contrib/ipfilter/netinet/ip_fil.h
  projects/clang400-import/sys/dev/cxgbe/tom/t4_connect.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_cpl_io.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_ddp.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_listen.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_tom.c
  projects/clang400-import/sys/dev/cxgbe/tom/t4_tom.h
  projects/clang400-import/sys/dev/e1000/if_em.c
  projects/clang400-import/sys/dev/e1000/if_em.h
  projects/clang400-import/sys/dev/iscsi_initiator/isc_soc.c
  projects/clang400-import/sys/dev/iscsi_initiator/iscsi.c
  projects/clang400-import/sys/dev/mmc/mmcsd.c
  projects/clang400-import/sys/dev/mpr/mpr_table.c
  projects/clang400-import/sys/dev/mps/mps_table.c
  projects/clang400-import/sys/dev/nand/nand_geom.c
  projects/clang400-import/sys/dev/netmap/netmap_generic.c
  projects/clang400-import/sys/dev/nvd/nvd.c
  projects/clang400-import/sys/dev/rtwn/rtl8188e/r88e_fw.c
  projects/clang400-import/sys/dev/rtwn/rtl8192c/r92c_fw.c
  projects/clang400-import/sys/dev/rtwn/rtl8192c/r92c_tx_desc.h
  projects/clang400-import/sys/dev/sdhci/sdhci_fdt_gpio.c
  projects/clang400-import/sys/dev/sfxge/common/efx_mcdi.c
  projects/clang400-import/sys/dev/sfxge/common/efx_mcdi.h
  projects/clang400-import/sys/dev/sfxge/sfxge.h
  projects/clang400-import/sys/dev/sfxge/sfxge_port.c
  projects/clang400-import/sys/dev/uart/uart_bus_pci.c
  projects/clang400-import/sys/dev/uart/uart_core.c
  projects/clang400-import/sys/fs/tmpfs/tmpfs.h
  projects/clang400-import/sys/fs/tmpfs/tmpfs_subr.c
  projects/clang400-import/sys/fs/tmpfs/tmpfs_vfsops.c
  projects/clang400-import/sys/geom/geom_disk.c
  projects/clang400-import/sys/geom/geom_disk.h
  projects/clang400-import/sys/geom/raid/md_ddf.c
  projects/clang400-import/sys/geom/raid/md_promise.c
  projects/clang400-import/sys/i386/i386/pmap.c
  projects/clang400-import/sys/kern/kern_acct.c
  projects/clang400-import/sys/kern/kern_descrip.c
  projects/clang400-import/sys/kern/kern_shutdown.c
  projects/clang400-import/sys/kern/subr_unit.c
  projects/clang400-import/sys/kern/tty.c
  projects/clang400-import/sys/kern/tty_inq.c
  projects/clang400-import/sys/kern/tty_outq.c
  projects/clang400-import/sys/kern/uipc_mbuf2.c
  projects/clang400-import/sys/libkern/bcmp.c
  projects/clang400-import/sys/libkern/bsearch.c
  projects/clang400-import/sys/libkern/iconv_ucs.c
  projects/clang400-import/sys/libkern/iconv_xlat16.c
  projects/clang400-import/sys/libkern/memmem.c
  projects/clang400-import/sys/libkern/qdivrem.c
  projects/clang400-import/sys/libkern/qsort.c
  projects/clang400-import/sys/libkern/random.c
  projects/clang400-import/sys/libkern/scanc.c
  projects/clang400-import/sys/libkern/strcmp.c
  projects/clang400-import/sys/libkern/strncpy.c
  projects/clang400-import/sys/mips/mips/mem.c
  projects/clang400-import/sys/modules/em/Makefile
  projects/clang400-import/sys/net80211/ieee80211.c
  projects/clang400-import/sys/net80211/ieee80211_adhoc.c
  projects/clang400-import/sys/net80211/ieee80211_hostap.c
  projects/clang400-import/sys/net80211/ieee80211_ht.c
  projects/clang400-import/sys/net80211/ieee80211_ht.h
  projects/clang400-import/sys/net80211/ieee80211_input.c
  projects/clang400-import/sys/net80211/ieee80211_node.c
  projects/clang400-import/sys/net80211/ieee80211_output.c
  projects/clang400-import/sys/net80211/ieee80211_scan_sta.c
  projects/clang400-import/sys/net80211/ieee80211_sta.c
  projects/clang400-import/sys/net80211/ieee80211_var.h
  projects/clang400-import/sys/netinet/raw_ip.c
  projects/clang400-import/sys/netinet/sctp_syscalls.c
  projects/clang400-import/sys/netinet/tcp_var.h
  projects/clang400-import/sys/sparc64/sparc64/mem.c
  projects/clang400-import/sys/sys/file.h
  projects/clang400-import/sys/sys/param.h
  projects/clang400-import/sys/sys/tty.h
  projects/clang400-import/sys/sys/ttyqueue.h
  projects/clang400-import/sys/vm/vnode_pager.c
  projects/clang400-import/sys/x86/x86/mca.c
  projects/clang400-import/tests/sys/file/ftruncate_test.c
  projects/clang400-import/tests/sys/kern/execve/execve_helper.c
  projects/clang400-import/tests/sys/mac/bsdextended/ugidfw_test.c
  projects/clang400-import/tests/sys/vfs/Makefile
  projects/clang400-import/tests/sys/vfs/lookup_cap_dotdot.c
  projects/clang400-import/tests/sys/vm/mmap_test.c
  projects/clang400-import/usr.bin/fortune/fortune/fortune.6
  projects/clang400-import/usr.bin/rpcgen/rpc_cout.c
  projects/clang400-import/usr.bin/rpcgen/rpc_svcout.c
  projects/clang400-import/usr.sbin/ctld/ctld.c
  projects/clang400-import/usr.sbin/ctld/ctld.h
  projects/clang400-import/usr.sbin/ctld/login.c
  projects/clang400-import/usr.sbin/fstyp/Makefile
  projects/clang400-import/usr.sbin/fstyp/fstyp.8
  projects/clang400-import/usr.sbin/fstyp/fstyp.c
  projects/clang400-import/usr.sbin/fstyp/fstyp.h
  projects/clang400-import/usr.sbin/fstyp/tests/Makefile
  projects/clang400-import/usr.sbin/fstyp/tests/fstyp_test.sh
  projects/clang400-import/usr.sbin/inetd/Makefile
  projects/clang400-import/usr.sbin/inetd/inetd.c
  projects/clang400-import/usr.sbin/iscsid/iscsid.c
  projects/clang400-import/usr.sbin/iscsid/iscsid.h
  projects/clang400-import/usr.sbin/iscsid/login.c
  projects/clang400-import/usr.sbin/pciconf/pciconf.c
  projects/clang400-import/usr.sbin/route6d/route6d.c
Directory Properties:
  projects/clang400-import/   (props changed)
  projects/clang400-import/contrib/elftoolchain/   (props changed)
  projects/clang400-import/contrib/netbsd-tests/   (props changed)
  projects/clang400-import/sys/contrib/ipfilter/   (props changed)

Modified: projects/clang400-import/UPDATING
==============================================================================
--- projects/clang400-import/UPDATING	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/UPDATING	Sat Jan 14 22:20:12 2017	(r312201)
@@ -56,6 +56,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
 	Please see the 20141231 entry below for information about prerequisites
 	and upgrading, if you are not already using clang 3.5.0 or higher.
 
+20170112:
+	The EM_MULTIQUEUE kernel configuration option is deprecated now that
+	the em(4) driver conforms to iflib specifications.
+
 20170109:
 	The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
 	IFLIB.  If you have a custom kernel configuration that excludes em(4)

Modified: projects/clang400-import/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c
==============================================================================
--- projects/clang400-import/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c	Sat Jan 14 22:20:12 2017	(r312201)
@@ -501,6 +501,120 @@ elftc_reloc_type_str(unsigned int mach, 
 		case 116: return "R_PPC_EMB_RELSDA";
 		}
 		break;
+	case EM_PPC64:
+		switch(type) {
+		case 0: return "R_PPC64_NONE";
+		case 1: return "R_PPC64_ADDR32";
+		case 2: return "R_PPC64_ADDR24";
+		case 3: return "R_PPC64_ADDR16";
+		case 4: return "R_PPC64_ADDR16_LO";
+		case 5: return "R_PPC64_ADDR16_HI";
+		case 6: return "R_PPC64_ADDR16_HA";
+		case 7: return "R_PPC64_ADDR14";
+		case 8: return "R_PPC64_ADDR14_BRTAKEN";
+		case 9: return "R_PPC64_ADDR14_BRNTAKEN";
+		case 10: return "R_PPC64_REL24";
+		case 11: return "R_PPC64_REL14";
+		case 12: return "R_PPC64_REL14_BRTAKEN";
+		case 13: return "R_PPC64_REL14_BRNTAKEN";
+		case 14: return "R_PPC64_GOT16";
+		case 15: return "R_PPC64_GOT16_LO";
+		case 16: return "R_PPC64_GOT16_HI";
+		case 17: return "R_PPC64_GOT16_HA";
+		case 19: return "R_PPC64_COPY";
+		case 20: return "R_PPC64_GLOB_DAT";
+		case 21: return "R_PPC64_JMP_SLOT";
+		case 22: return "R_PPC64_RELATIVE";
+		case 24: return "R_PPC64_UADDR32";
+		case 25: return "R_PPC64_UADDR16";
+		case 26: return "R_PPC64_REL32";
+		case 27: return "R_PPC64_PLT32";
+		case 28: return "R_PPC64_PLTREL32";
+		case 29: return "R_PPC64_PLT16_LO";
+		case 30: return "R_PPC64_PLT16_HI";
+		case 31: return "R_PPC64_PLT16_HA";
+		case 33: return "R_PPC64_SECTOFF";
+		case 34: return "R_PPC64_SECTOFF_LO";
+		case 35: return "R_PPC64_SECTOFF_HI";
+		case 36: return "R_PPC64_SECTOFF_HA";
+		case 37: return "R_PPC64_ADDR30";
+		case 38: return "R_PPC64_ADDR64";
+		case 39: return "R_PPC64_ADDR16_HIGHER";
+		case 40: return "R_PPC64_ADDR16_HIGHERA";
+		case 41: return "R_PPC64_ADDR16_HIGHEST";
+		case 42: return "R_PPC64_ADDR16_HIGHESTA";
+		case 43: return "R_PPC64_UADDR64";
+		case 44: return "R_PPC64_REL64";
+		case 45: return "R_PPC64_PLT64";
+		case 46: return "R_PPC64_PLTREL64";
+		case 47: return "R_PPC64_TOC16";
+		case 48: return "R_PPC64_TOC16_LO";
+		case 49: return "R_PPC64_TOC16_HI";
+		case 50: return "R_PPC64_TOC16_HA";
+		case 51: return "R_PPC64_TOC";
+		case 52: return "R_PPC64_PLTGOT16";
+		case 53: return "R_PPC64_PLTGOT16_LO";
+		case 54: return "R_PPC64_PLTGOT16_HI";
+		case 55: return "R_PPC64_PLTGOT16_HA";
+		case 56: return "R_PPC64_ADDR16_DS";
+		case 57: return "R_PPC64_ADDR16_LO_DS";
+		case 58: return "R_PPC64_GOT16_DS";
+		case 59: return "R_PPC64_GOT16_LO_DS";
+		case 60: return "R_PPC64_PLT16_LO_DS";
+		case 61: return "R_PPC64_SECTOFF_DS";
+		case 62: return "R_PPC64_SECTOFF_LO_DS";
+		case 63: return "R_PPC64_TOC16_DS";
+		case 64: return "R_PPC64_TOC16_LO_DS";
+		case 65: return "R_PPC64_PLTGOT16_DS";
+		case 66: return "R_PPC64_PLTGOT16_LO_DS";
+		case 67: return "R_PPC64_TLS";
+		case 68: return "R_PPC64_DTPMOD64";
+		case 69: return "R_PPC64_TPREL16";
+		case 70: return "R_PPC64_TPREL16_LO";
+		case 71: return "R_PPC64_TPREL16_HI";
+		case 72: return "R_PPC64_TPREL16_HA";
+		case 73: return "R_PPC64_TPREL64";
+		case 74: return "R_PPC64_DTPREL16";
+		case 75: return "R_PPC64_DTPREL16_LO";
+		case 76: return "R_PPC64_DTPREL16_HI";
+		case 77: return "R_PPC64_DTPREL16_HA";
+		case 78: return "R_PPC64_DTPREL64";
+		case 79: return "R_PPC64_GOT_TLSGD16";
+		case 80: return "R_PPC64_GOT_TLSGD16_LO";
+		case 81: return "R_PPC64_GOT_TLSGD16_HI";
+		case 82: return "R_PPC64_GOT_TLSGD16_HA";
+		case 83: return "R_PPC64_GOT_TLSLD16";
+		case 84: return "R_PPC64_GOT_TLSLD16_LO";
+		case 85: return "R_PPC64_GOT_TLSLD16_HI";
+		case 86: return "R_PPC64_GOT_TLSLD16_HA";
+		case 87: return "R_PPC64_GOT_TPREL16_DS";
+		case 88: return "R_PPC64_GOT_TPREL16_LO_DS";
+		case 89: return "R_PPC64_GOT_TPREL16_HI";
+		case 90: return "R_PPC64_GOT_TPREL16_HA";
+		case 91: return "R_PPC64_GOT_DTPREL16_DS";
+		case 92: return "R_PPC64_GOT_DTPREL16_LO_DS";
+		case 93: return "R_PPC64_GOT_DTPREL16_HI";
+		case 94: return "R_PPC64_GOT_DTPREL16_HA";
+		case 95: return "R_PPC64_TPREL16_DS";
+		case 96: return "R_PPC64_TPREL16_LO_DS";
+		case 97: return "R_PPC64_TPREL16_HIGHER";
+		case 98: return "R_PPC64_TPREL16_HIGHERA";
+		case 99: return "R_PPC64_TPREL16_HIGHEST";
+		case 100: return "R_PPC64_TPREL16_HIGHESTA";
+		case 101: return "R_PPC64_DTPREL16_DS";
+		case 102: return "R_PPC64_DTPREL16_LO_DS";
+		case 103: return "R_PPC64_DTPREL16_HIGHER";
+		case 104: return "R_PPC64_DTPREL16_HIGHERA";
+		case 105: return "R_PPC64_DTPREL16_HIGHEST";
+		case 106: return "R_PPC64_DTPREL16_HIGHESTA";
+		case 107: return "R_PPC64_TLSGD";
+		case 108: return "R_PPC64_TLSLD";
+		case 249: return "R_PPC64_REL16";
+		case 250: return "R_PPC64_REL16_LO";
+		case 251: return "R_PPC64_REL16_HI";
+		case 252: return "R_PPC64_REL16_HA";
+		}
+		break;
 	case EM_RISCV:
 		switch(type) {
 		case 0: return "R_RISCV_NONE";
@@ -550,6 +664,37 @@ elftc_reloc_type_str(unsigned int mach, 
 		case 48: return "R_RISCV_GPREL_S";
 		}
 		break;
+	case EM_S390:
+		switch (type) {
+		case 0: return "R_390_NONE";
+		case 1: return "R_390_8";
+		case 2: return "R_390_12";
+		case 3: return "R_390_16";
+		case 4: return "R_390_32";
+		case 5: return "R_390_PC32";
+		case 6: return "R_390_GOT12";
+		case 7: return "R_390_GOT32";
+		case 8: return "R_390_PLT32";
+		case 9: return "R_390_COPY";
+		case 10: return "R_390_GLOB_DAT";
+		case 11: return "R_390_JMP_SLOT";
+		case 12: return "R_390_RELATIVE";
+		case 13: return "R_390_GOTOFF";
+		case 14: return "R_390_GOTPC";
+		case 15: return "R_390_GOT16";
+		case 16: return "R_390_PC16";
+		case 17: return "R_390_PC16DBL";
+		case 18: return "R_390_PLT16DBL";
+		case 19: return "R_390_PC32DBL";
+		case 20: return "R_390_PLT32DBL";
+		case 21: return "R_390_GOTPCDBL";
+		case 22: return "R_390_64";
+		case 23: return "R_390_PC64";
+		case 24: return "R_390_GOT64";
+		case 25: return "R_390_PLT64";
+		case 26: return "R_390_GOTENT";
+		}
+		break;
 	case EM_SPARC:
 	case EM_SPARCV9:
 		switch(type) {

Modified: projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_libcrypto.sh
==============================================================================
--- projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_libcrypto.sh	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_libcrypto.sh	Sat Jan 14 22:20:12 2017	(r312201)
@@ -1,4 +1,4 @@
-# $NetBSD: t_libcrypto.sh,v 1.3 2010/11/08 19:06:12 pooka Exp $
+# $NetBSD: t_libcrypto.sh,v 1.4 2016/10/13 09:25:37 martin Exp $
 #
 # Copyright (c) 2008, 2009, 2010 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -49,7 +49,7 @@ atf_test_case bn
 bn_head()
 {
 	atf_set "descr" "Checks BIGNUM library"
-	atf_set "timeout" "300"
+	atf_set "timeout" "360"
 }
 bn_body()
 {

Modified: projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_pubkey.sh
==============================================================================
--- projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_pubkey.sh	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/contrib/netbsd-tests/crypto/libcrypto/t_pubkey.sh	Sat Jan 14 22:20:12 2017	(r312201)
@@ -1,4 +1,4 @@
-# $NetBSD: t_pubkey.sh,v 1.3 2011/06/09 05:25:21 spz Exp $
+# $NetBSD: t_pubkey.sh,v 1.4 2016/10/13 09:25:37 martin Exp $
 #
 # Copyright (c) 2008, 2009, 2010 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -49,7 +49,7 @@ atf_test_case rsa
 rsa_head()
 {
 	atf_set "descr" "Checks RSA"
-	atf_set "timeout" "300"
+	atf_set "timeout" "420"
 }
 rsa_body()
 {
@@ -60,7 +60,7 @@ atf_test_case ec
 ec_head()
 {
 	atf_set "descr" "Checks EC cipher"
-	atf_set "timeout" "300"
+	atf_set "timeout" "480"
 }
 ec_body()
 {
@@ -81,7 +81,7 @@ atf_test_case ecdsa
 ecdsa_head()
 {
 	atf_set "descr" "Checks ECDSA algorithm"
-	atf_set "timeout" "300"
+	atf_set "timeout" "480"
 }
 ecdsa_body()
 {

Modified: projects/clang400-import/contrib/netbsd-tests/dev/audio/h_pad.c
==============================================================================
--- projects/clang400-import/contrib/netbsd-tests/dev/audio/h_pad.c	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/contrib/netbsd-tests/dev/audio/h_pad.c	Sat Jan 14 22:20:12 2017	(r312201)
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_pad.c,v 1.1 2010/08/04 13:15:15 pooka Exp $	*/
+/*	$NetBSD: h_pad.c,v 1.2 2016/10/15 07:08:06 nat Exp $	*/
 
 /*
  * Copyright (c) 2010 Antti Kantee.  All Rights Reserved.
@@ -56,14 +56,14 @@ main(int argc, char *argv[])
 	ssize_t n;
 
 	rump_init();
-	audiofd = rump_sys_open("/dev/audio0", O_RDWR);
-	if (audiofd == -1)
-		err(1, "open audio");
-
 	padfd = rump_sys_open("/dev/pad0", O_RDONLY);
 	if (padfd == -1)
 		err(1, "open pad");
 
+	audiofd = rump_sys_open("/dev/audio0", O_RDWR);
+	if (audiofd == -1)
+		err(1, "open audio");
+
 	if ((n = rump_sys_write(audiofd, musa, sizeof(musa))) != sizeof(musa))
 		err(1, "write");
 

Modified: projects/clang400-import/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue
==============================================================================
--- projects/clang400-import/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue	Sat Jan 14 22:17:12 2017	(r312200)
+++ projects/clang400-import/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue	Sat Jan 14 22:20:12 2017	(r312201)
@@ -1,1035 +1,1040 @@
 begin 644 t_pad_output.bz2
-M0EIH.3%!629369%IQ#X`<IM_____________________________________
-M________X)OO)A21(@B``4"A15``"A2!1E]V5*%%*`!0JJ7"HT*HVT6^LZTT
-M13<F#E#=<'#>MT#FU'+1O7<;MT;NYNNYW<[N[OO;K>W7+>^Y[M;[LV]??=M]
-MYZ[MMMO>WO;6=W.KIOKNUF:EFEJVK5I"+:J;8:B5K1JJIJVUJV,K6IK5MJJ6
-M--%5FJLS55K158M5K:U5FU4RVMJ(K0BK-6Q0-L+6JVLJ6MK559M5556*M54J
-MJMIMFS-"U6LJRUBRJJRV;55::M6U[G=0JI5-4W66J=KVZ]LNW=]W=FW=S;YM
-MDO<]LW>Z[WW%E@WUOD-[G!SN<'=W$CD8@[K<FVD6>N<36:PVO=W;*I*E%4SC
-MV]XE)5!54*"@*JJMH)J0H*`4&V4`!11(``!4BJI27O>Z(]5()`22)**%4``I
-M0`!*B5`D(DB*5@:5``AH`"8F3"8`F0#3(Q,FF@#1H&(&C)H-#3330!ID,C`C
-M!-,F)IIA`TQ-,!,33$831@@R9&$T`!,`@TD@FC$``````&@```:-`3`F$P0T
-M,$!@`$``#03T!H-`U,`33$TTQJ-,$P$P%/$R8",!-02FDI"!$QJ>S,`0`$!H
-M:!#":$Q-,28$V@0-`34]$:;*:>D]1I[0H'HGDRC:AD&@]0&@/4`]0R`R,AH-
-M!H`VHS2`:`(4E)*)&R>J-^GBGL!2,:::2;48GI$IO%)Y)Y)[3TE/U1^FFC*C
-MQ&H>IZC$T,AIZAZF31H>4``'J!DTTT---```#U```-`9#0T``T!(I((28-)B
-M>A3TTF>14]3VT&IJ>R,@F$TQ'DT3&@FU3\4GFDT>J>333&IBFTPF$T]$-,32
-MGM-4]IDTR)ZI^1I3V332;(93-4_5/R>D#":GDU-D:FIZ>IM3U-HTH)-25)%1
-MM3:3]L/-2$FWD4S4U-B:::FB;4V3"4_4R4>H>U0;4]JGJ&33T]4T`#(T-&0]
-M0!HT-`_5`!Z@T````9!IH:```````_Q$/Z:,D&8X$&L.'B.D00+!M12TQ2">
-MGH4)$$U776'(,NA5T"`@H&+#%`;<'^;2<4$`CK#I>?6\SY]KTOQX,LDD%=#]
-M=K=W[.S5.*PD:9EE+#8V,8RRL@"_3]+%\'Y\OE<[XY25)9,&QL(&#!(B3@T.
-MCTYNF5=LVA0D0'QD+"T]J]AX/R0)P"P$\13QX$Q,/GR(O5_U5.R7J.DE`0K(
-MEC0PL$_ONQ0)A@@60_";^_OE&;Q_:\_3BPGL8?\=O:KUNG!-MF0A03X9PPMX
-MF'WE;&SK)O(N2J"`80_J9Y6*=6(?DZ7*_=I%;(JB,Q$/X5S@P$*M6IZ6$>F.
-M&L;Y&C($S\KC'O`Q#')%M:;\FTP-4ET5[;UV7JU<$0D7*H[&KC\]MFO+$`\&
-MK%L^,?8,8N-=10VF1`%ZT<0V#-6C#OCSQ<+:D1!\*'M+14@>!P\/!T&+LDA`
-MM>S!`Y))"PU-A7RRF1#XLD2TAAXFXPES0HB!="\G,MI5;+<6\:#8!?:^9F[%
-ME',L8MFO;T)7.GR!;_`/D0:1+;UF7Y[3=J&V"``O/U.NE!"#*9$.X86#N,8I
-M`#2>Y2VR.+WM3?[`$7UIE`R.12-/ADE3=;A$1!:]O_:**7`0NS1[]JFWB&;,
-M9H]?3J1$29(D`##!T*ZI]K?Y2?W`!+<"-:V[)FM&)64CY`27=R&1(43Q0:.3
-M57.RL\G5'0B!%DUBC6R2:/8GH36'00V/_3FF$$BHG7;+O%I3X!8&S2LK'/>1
-M8OS=Z#;4Y$43X>>W=G@!;JCZJXZ+CG@"_SV[O7ZI=P8DJ:+_5D',I4)`;G=/
-M'LMX@K6`@UZ4;>CQD0!>G1L^>LPH@:>W<=.CS^7@)?+I``+POTESZ]3/ZA2!
-M75?3@*BYG9V,AZN4Q4&IJ@(<=6[N*2:B4T<QKI#O,ZO-HP0'U-93XT^"A:<5
-MT6-2(HM3`Y[CJ.+14K[U\5;*A$78H:]/`WME:,[SII]<4D!%9=VZ6J(N'#C<
-MKS'M=:II1G0(2!?].M0MLAD.O>)ITB]VC:@%[*8[4SK5EZR_]5WDD@B*BP]Z
-MM&`(P"9NX?<(%_4:IX/(`!5M=`Y*J0ALV/=9UEH,?/)])PN4S.3Q*JX(OE@.
-M2:Z?"+C-^RQK#(AH^YZF'"(N4H(.K.`QOV&@=HI"`,-P0@1,W5)#ZE916Z/V
-MDMCV8^`4YS\-7R*L!D&Y@OT/@[O\HB+8?+K:EP*>6KQIHI#9&]*\I@AOG`B[
-ME!(1^\3.":<CW*ZM?*Q*Q`M9(]AW:5CCD*E1DZ>TV[8($^"X\PV,D"7'@5IA
-M_&HS5?4^K5(@17-'D>"%FJ8^%HE-%-GP07=Y"M@$+JL?O=<_H_;+X"$$)/+$
-M(#&Y%>VSVDIS6@!!PH[W&3U(!SXV;RV<\".VZ\"A!%NDZM&LY*JMTR0+GH5%
-M-UD0(OWQ1PM=G=;!V2D>(AEP2@)MH6&EBU77QS:R7B0`5P)?N)=]4'"%!``L
-M6>;IEY>3]?^J#F8Y((@VJ'9(3=(Y;EL/U*W3_M""&*6LOPA)`2G2\;XHZ?,1
-MN@9?--I!`7BU)`)6&?V2\RV=GPPO_+AI`13_]&!9NI8WF&D8=EAD>=1@A]-M
-M2*,@.#^UP_^]`1,'Y@7\>&O=GPWW86]K`46*"9"107H9R&2FIS4QC(C9?S9E
-M0`/+,`K\G03>F3F0D&K]O^I"WC##9]90$6;P/K*\,L":#V^TRY\OGS?!Z.>D
-M($R4A>S*K^+BN!7^#D(`!):^.YO0(#Y_7L:3*O#7:[G5>S#2DD#:[ZDW8'GX
-M2)284[['@*/]+TCLR$C2\R=8*W5,5CI?!P%6`2B(:+04!>;6K6S6]]<H]_T8
-M'])`!/+^!Q/?6.L&C>(_;T]*B(`QH.-:D+F0Y<GK\<MQTJ@(NSSWHBDECQC7
-M\U6/P<R$`(2A!FBDZ2;7S&G.#H;S]]![200F8L$DO:GRND<"7MTP&@)`%8+]
-M]<H'.S@##D@`'KUN8M0/S1,/-<R?^,>(DOX[O8A^D&ZOMFWV'@4'P8^/`G6'
-M4MT7D&'K95`"'TM;8HC'LCRM8)T%MM8^D+N/=;2(V#3NCX`4ISMR_2ZY!(<<
-MOD<CL)<\5UVP2KOK)#O8?R:KPK=M2)!`<WFX+>MH/*.`-_8\FLT9T`6L6N;B
-ML+\].#\V8R;3BE920@#2V<!/@EWP:5@-=/0[_U2=-[40`S?H?N7RB%;"I]KD
-M-'*\CP14VB`'5!,B+)?#\X;3>1+PA(E.R3ONAYKUN//A^GSGB+*OAX\D`:G4
-M:N6A>'`4Q\%%^V;+*\"K@=4D2`OFKMZ-$0*_[`*>S-)N7WOTB9UK:P8!A_-*
-M!#IK6Q(LWF_4F>(UJO>>(9:Z7`0D,+EMF0/N3>?#*1()V)O8Z86&8^!<<S?9
-MV-!#!I?WS=C*.^]M["(8[.I2@7>^ZRS=X!-^V>ZVP;`ZT!\%Z,_M4O]>(!*Q
-M%78V.MY[<?!&R'\W%!";Z).'0,EXHGP@AOI>N[_RBAL(JLA?)W_"-+S/ZED0
-M;/3I;2@T6N\'?(;S])2EU,C6-+$@`&SZ+)688"[5QVM98;-GB%YN\`AY&9IE
-MW6!=**T2J@+$5]."ANQ]8K\>S;J0'=Q541?&&5H]>H.:O/8H/BC(H+5TL-!%
-MC&+N0$H<`3/0LN='R;P@R<.!'<-C*;7FPP#W3-<!"<*VU@/@"R^%V`,2`C0M
-M<[CZSS8'P0@F+N6%N0@O7^_#$V$K\#Y:_8@6+=(6^T.%JL]J>Z"8=_X,P_=A
-MXHKO&(2"G=D,QU$C((T6%6GP&!#S"XF5-4V6YAT`'5EB!2_H5<S!6VSSJ4DH
-M2&55(%+Z8*<:C36G8KKWP/D+,%[:GB]%5Q_.4YOQPAA$1:P!;6N@[QYP8J&L
-M`7F,-$$P&O=5:@6!LB4^CW/&0_GH.-/QFH&=/@5]I$\8`<3]>R+\+"TB'N$`
-M+T%X4&3]-]G#I0>*@2%GIH<DS;8TZ`,SUUGE@7"K"^(WP2&)^#.@SM/.-LYH
-M50@)_':RR3$3A7+=[&JUS1-*F0]7FI,B0#+L?EQ._.2&EP?/2I:00FV[@$0A
-M.*;AY"`6%?2Q/BSU56-J,BD+2#GP775X%-,NR-RM9U?0D+8`(%7!F[PVZV>7
-MSW9O]0D`OIGB+^\1)&P36=Y]RD/%JD1%"5@`[_O_LUM7*JV1\K6;+I3/![/Q
-M.#`S2;N_U[:(B>+8XRN,SF.'J%WW8:0"&DUMP7<C>D:"XONX&O-1"LFTT^RG
-MR+S^5?!8/;3Y9K[##DDM+1(B+E*B/MD%:Y4H%W4-P>!,]+^'3!:;H\PZRRFC
-M,*N]1$`Y3OHLIC/@I?18G7MEW5J04*WZE9NVEJCX]O3A@!"*.^XTQR#K_H+B
-MK`_GST-]:GHOXGP6;!7_\>WC/V4[-<>[Y"(A'>SUX`+BNS=W40.$/SF;@#%7
-M/G9ZN`.E)(9E.O"`OX'_/=0TANWS\@%ZGZ"Q`@[-KB[#G4C"?(+B9O2!?3V?
-MU(RWC7&#H]VG6T@"3_+P0#-+4"/+:-K195`'/]=0!>5EY/E\%"0EO%WYN;I\
-M,!92L^L[-@(=H^*F`-%2<NZEB&1F/C\T$JD_D^6%<V9$.]\[G[?P9SX'GV5^
-M,(NX=2`'9'5X2ME6F9SL"*!$0TU6`7PTWM43<ME'QBG+SQT\R1>+>M'^T?2W
-M'C:U,<Z;(8:YW.JT*.)4=93(3]2M_,U\1+5KF=GU(;HIFB54)$BR>6=Z7MD-
-M!S,3Y&RP>BX!RT^M!(O4_R)^"A]\?+TU4;M'@"5;;:ZIS@]DEP@`GW#)=.K]
-MO\7W&3'^J?:TH`>FSXA%M?%/2O67]%.K"6EKOD22)U:K(B<XN>^/<O]"HGRU
-M=1G0!BL2>TNND%OAGR,>$A17>EHS;U89'SEZ,TK*[C@G2H>W_/QJP2&S5GGO
-MJE2]X=O]U=K22`\/)G.A*\;1D5Y8TB9-1"S]]V@!)?#_OC6ZNP(-L@?M71N)
-MF5SY`+]]\X//8((6RI`6'=Q<E;-&T9U!02033.8U3B>>`,79HH,_*7BDQ5B$
-MF#C;\$,9E\_=O%KQ8180+*XJ:0$1[TM:]]/]?3>UY$I,\SDOR,#I1E=JFS"!
-M)D6KO$6H8D4OU,[!)!$>B\C[>U3$!Z^KJW(<\.5K:U&!G41!!%$5_Y/6QC<L
-M&&>+5MNVCN4"&]Z]DJ<WB:O&S"`?1]Q4Q9D4Q[^2JY+.G1S&7[J8(,^[JG+N
-M[C*+KV@(??>O`(9_'6]7?*ZF8/$&+R1H`D$,1>.+._G@W*)DDB;]VG`*5YF7
-MWD]IU[X\&5T,-")):A_]LR"]=;MJN5!LX6;D=]@@KQ`@^-G`>;-=H$6+3?0;
-MYG3YLP?<=K)H?)5`"JW_5R6!`Q9OZ8Z#_17<BY98V5E\T^1C@6Q[&6U$Q9:9
-MK[7?NG'$22+63?0X&UV%F`(+]O/YV.Z[)XGX$)F*O6R;%@K>/+4<,$0*_:]M
-M['1B(#.(QC+-;7CH'N\LREOH(>W0-/OY\=&_S[F9)"7_77XA@06;X>OJ&IOK
-M]_"/D$]\6"(#S']/.AK:OAKS"CC7-%WN:`*S+_$Q\,^Z5>:9-EA;.ZD`(GSF
-MIQ:L*`\3U-]F](KQ2F<&;.+!Y/Y?&`$JI5%RF94'0/-]9,`:CO;'C<7'S6Y/
-MC(IK?C@3Z*)/UJ'6-^%6!`"074SY(^7^GX$0[^K\-)/;:';#_=4R9TB+O0^G
-M[]]7D3#&W$Q$WJ'_>WZV-KK`!WGEP^O)3UHKSY6'>%*ZJN$_$'M<RW'N3@VG
-MC_>>40"Y'4TKT[6!UHFC)`&?/)6ALNE4_=YKB+#=*OU0?%/4DSB6RY5I(*1T
-MBS_(D<8`16E0,O"KK9W:_/'P9`7LW2]VZ=L6P&CX1W4GLP1+"_P[R>#N[U"/
-M6WJ(6I\<?P_[X?6R!#(LG/STLX<^7MD`NK*!S0`\N8DE:_:=6>K#MUC,*=$&
-M1:KI+^\1_-\P/5`$`\H[779:X^25NX"RC<8`-!NW(+E)7#8<-$0NNC.=8%;Y
-M""W5''H1A\USP=7IXRZHLP`5SU[KII-+72^YR&2"Z82`/&[YW!C^'UK5S(MO
-MW&B.-PG"G%8BH=8XL2#/=7#/E$X>/AR(5Z^AT]%#>CG.$(E5&]2?[<@D>*0/
-MLZ<&PTK&10ST<\S7A0!X<3B>_3^EJE_\RHP"TFVYCEX^77UK9&C9T20A*]99
-M7K6E``:<-TKEE8"N>WK92J@43N+VH+CGZ#],-YHU(37CX]<0)-RJOCFS%/><
-MAQN%3[ZBT6R(:O24[5N6@(0PW=6K8XBYT._;F*0;7N`AGO:TU&>^N%)?1CJ+
-MGA$!F<DBZRR@+A?1R45Q`-D'C;CU._QU\Y_L3J>/HR`O_,-OQ]:S+*EE+7F;
-M)8:Y8$Z23!0[=.AU<55;Y+G00EZ:%X+;4.QH1$7K^V(=S>;QJF5!%*(66:M6
-M[]<2>?+NA5:@B'.L/3K<LY,LFX^[PSH!:J[>#D=IF8CCD"I:=]2]C(V:VB`Z
-MOS\_5M\P`2K/>9)C:<PLX]54P&;1?=&O((:!0M#[J_P6J;EY#BS`%!%]#O=#
-MJ<P^0+4\R!M:CJJX/`W&=%K'L95T@'CGU'+/W)&/M#$JGRCN6]_XTD0K4JSN
-MCTJK)%50IA1I&(%\>#G,^D1A32(@7>9.&JW(0D0'@NOJ*)ZVW.3&/<M?A@U)
-M)3;K%=N-RPD3AVEX'E0QL(X#:*O;P63.>)46P09QKXZA5D`53`!D=\)LX*R1
-M!$VM(PTC]$J02F,8P,".;C\K*?9X_7%;MH6>P6<2HYV8U=JFL3)L0P;&-M=6
-MQ"QWM=K46:O@8B=]_\<9C+E\'NRM?3;$*AU\"9&FVFFQH!@"],<7:RQP[:(X
-M(.&1#:N&(>`2H-SY3E0:Q```RU<;/1R="%-3!('Y%^`@'U3/^:?U'4DDD^2K
-M_QSJ>F@<3(!_<D\LKFH(Y-$6D@X(T(H!0B$UDK38+]F,CAWJHEZ?5`GCKH+4
-M`+/;,#O&C)0JD<)S8TE?Z%?S+H'?'7R+RR)GCF_;C-"$B<'F6EZCQ)F6HN$0
-M(0$=UD75WP*Q0XM>5_39XX%+[S0)3Q!$2G$(CR,W5,0ALWVR5@^PNW\Z?G("
-M`E5V)'F?/MYL@H'05?I>U/0;5$JNX(9@PLAMWF/]5Y=G2)KZA/W]\6KGP7TW
-M=W;`93G$(W[@4<N?D]^`\1>7APG.]9PXDV619K+/GQ=Y"H#*8MA2K<.U0:]J
-M:[P_S0(`0S@3L$R/6W=-GT;+A'"+='OL8`Z36_XSN)T+M;(@*I\0Q$P[W.QU
-M75`U^S3T[*WDD"J.S-BXH)4"-NVA`QPE7A^H`7^G#K^Y#]GW<Z0-U'L9XQBX
-M/G,0/2L<L65+0XI"0#1\P,&*RMK](;[L)G0$!<XWS*K9:XI`0B&#2;!.WF&4
-M5])X>?Z@6;MLN!LH;Y8V[TBAUSY!77`-3DZ).?CA%NN(3U]N[8L)PO7=2[[?
-MK?+IP4G)+./7E[L39T%%XY?YT$-0U[8TLY4Z3UDGQ6P.(=`BEAE9/#\#15F/
-M`>_ME9OM"".@E3DR84IGAU)L@Y9W1:M_[OX_)?[G)6:Y=`;!--*(GTMVGOC@
-M"M.:85V$\*TYC78\0T]2+KO*6=_-F75H3!"RI[5E%MF-L:((=8,M2&70#ZW-
-M$O9J/0@H[BV!#T_DCO-3-M>J1$32[58X'"UIXHV&4I<18I##UHY6XXEJN&P/
-M[+_)I,DH:BVYVQQZ_O,X=!-]/8)XA,][37V[KG"[%TA.S(Y(\1:.1<'+8>P!
-MTC2B]U(SYL#9%1^*\-#T-R]I/8`]M.T2RK3'>,$!HM`\3#=>9@\`-?GY`S\]
-M'^7GF;T%I/11:4V6BU8@[1!]C9"PV\A^?P9`WL8!?79D"YCUK:`64G<=<^![
-MM#C.5F/_>8BBW!5>]G?,QPK`MOE8>+$X\S@'%B3EB66;K,\3Q-+A\#<Z_]4Y
-ML1N7V49^0.F=[,3)9XT"X3)P@7VF]AA.D-LN2^T:$@S7`LX'IFB]6EG1Z%CE
-MW1LA'="6']C_L:&OVUTPF`/LW=;J@6JVKFAQ6C5C(>=1PS8&'6ONW(<G':I7
-M4D!684-YQ?:#(?'R_;D[E!BL8!V>L^Y$^,ALR-E)'%'RR'Z;,8\@125W#0>(
-M(#Y96:QO(.%EGH"N6U!T\/&,'04QB=/WB-#*@D^2;)<3QA^2D?DHA$Z%2-6M
-M55_<:_/.C6[D.'%]GX_2?C`.K";8T6'&:5+CS0_F4Z)>K:&\@;TVTVP'I=^:
-MY=HX3U'3"E-E/-<7;]7*'2RO(T-)_@5+]/#*EW,7;/R1#'2:/\X@06H4X2+?
-M`);^=S>ZPX(A-FAP#!KYMMM\W+;4D_I/>>`'+KI;G\$G;W7IKB3!)@6L?=9B
-M8*,D]4:LO-(+-(:$GC_"'/22E/38XZ!EYB]IL#7&,F0SV+_9H#_L$NH_NN$;
-M`YY;>`WRW)2(R_EGS0Y>4R/2%0UT!H>XOSJ#,5UEL#1:S819LJ2Y9YXR$;:*
-M+2R9H5&H;4'TW\@&]O?C08ZIYG"M.?O$WF_L;$_+KZ/I@,;.8VO8-DAQLE_@
-M*F+&8>S(8K^[BR.2[.:J/%0B[B^IOZ/H"=7ELT(5Z3P-M%;0Y0'"PW0%B^-L
-M^CHCB]9>CRF/0VMBJ084\S(]"?`EVGY&D]WJF)<7_849]9\T%NQU1^_WH&,_
-M5^:^K6L2FR(J\PH/W*3)P.C^9'<E3"M<*&0(L5OJVLECG+H@(#YIZNJ\P9[V
-MF=UY$X,?HBX=L.%>,6$)OO<O5&R#@KE37#!RS8Q'H%[O5-YI;.3KW#X(I-%L
-MS0#!/+'-`\_Q59XQ*%-K?WN%>0-%D1.;GY>Z%(/[H^5!\IJCTY>TVV!=^XZ]
-M/D?;R_(6)'WW?`>S2].TI:(%$?*%L3XD%Z`_[1*CVU3[S"EBV,S3O&V(D7C?
-M<Y`<@ZXQ0*%Y]6:%E+1NJ_I,<(S?;&\C+D.[JO)%31QN"CN\SDOJ6EV$(:JK
-MLF;C5N0(2=G\:69VYTI$%X)]Z_[?[!+N\,*-:9B/#.F,AN2&6EI#L.+IK#PS
-MES5?G>CX7#((<L-E^36.22W"&6%![_GX0+/)M@'@M:6Y-I5%:`9JR^'.`]+I
-M[M;OSA+FU_*];@-T>A-/5OOM."4.=)P3%-$'!ZQ;SBG8+&8(;Y]WO/QB!8>_
-M1`09PN#_L;#77^>^Z%CSS_RF*D%4_LM6Y\0W(7R&+SJ10?Z[!0X^R(2VMM<7
-MZ#@QIZ_ML697.F[D/>_WWC^,Z;,J'`[$<)J(QAJ.R^W['JQ@*YSF!LV#'(0G
-MINP0WMHSPE6@)+;2#N0I#RQP\XZOY8'[VWX$,"E;-W,?+W,3.!;[=@838['X
-MN'5^;;`/^,,G%+:5H+V&^EX>L`)7RZ=4\T.LI[4M4,2"M_G>?%I`_EHW'7=U
-M+'\NP(?YXV&)GD&EZ'@@71ZH48<^!BD^E^U2EAOE3@"A4:9C6">_N/?-+AH:
-MV$R>6I6S($%7H_C2_"R$&>,CKU`#E3X^\=.6!@_1^I.?=:Q_$04>S+1J?7[P
-MOT8K<\G7.YV1#<?7<[WV.+S.6:92!@SJ=-&X#-CB",TO[I$AGZK=S`)V;:V`
-M^)TX@VF6S(V3(R9[Q@?H]7*+0H,RN:\#%PD-3J6T0\+<D+P\<3/]';Z11J.!
-M;?(ZS\^PD)==V?U_XHH]<;:53MHPM-UW\Y!&3&ECK5_Y8>T(@W_3_Y[^,B6:
-MEF)6-335TB(-Y'S(@B&TWK?H@"KS3:49A_AC%$T#$SB3$_&C7A%PGX%@U%E#
-MH3OAQ,#V+C%%TJMF6WRU[G>I.+H?NE^<7ZO7[4$JNYWJ7W[J"60W_3]NLWF+
-MRZ7*TDY,V)/9C`GOL=[=+.]8$$0`E5TIH!H:),G*`Y\F'SZ6&"/IHYD84M7-
-MB@SK9"-\W8^A%&3A-<X6"P'=;;J;@)G68>3T0L_8UBV<SU"=V-TF+0U<Z?F*
-MF],]_QM/Q,5>6.(/_'+6Y_4<_W0:X/95G9K<NP"#Q?H\'R+Y;K&C(2GS-[18
-M4:AS[O@/D-0NS7`."=A&P^APVYIDDQ[#\49Y]8R1)+IAZ6H*Z0YSJV&T\I-'
-M5+K<&=8[PONB/%@"+F&NKW?0.'/FJTP0,55<J?$N%RQ,'6.&"J`:*(?3P-UU
-M\AX3T+INHB.C>[]6,VW;)RW[BL&"4QI*+FQIL3-;]0MTG<?/R!^_S84CE1CG
-M?QGIAK^9P"O;,SH]&#UY7$>,P&5];4I-/<#MZ[$G6F\QXH3/S1?6PP?`?+Q$
-M]R*YE='TQ>X[,Z+H34N>&#L0FK==ON$!U>%8>&^_LQ7N:&03DMT_&/"P<QNW
-M(P\[9WRC-W%"H8XP\7N](H_4U1V1(?7'B]7=_T<G[K!@F_>/5EL4ZUQPD"B_
-M&<%C2OQET?ZHSC`WFH*3S?D6R3B,6V'?[-W>B$Q@W>M,_N;\<`M2)=NG;C07
-M>9]X%OU`=]09"9P(UX,A^TM<,V7&O82A?MG/#`EKFD#9CS(HRZ_O6S(@.2:6
-M92'[SCA]-D@A0XX!P&6[(P'*M+1[4=/><0R]>^8MH)B>5ZXD?R9(8"OG#+]/
-MXU#^`[.XMGMC-!X*,,;J-L\ZJ[9JT&"-'.[P5%`A]1L53J-Z8O^1B&F(?/F?
-MEZ6-.7H;)E,M&+ISG+`U?ZT)VCVXY'G]3\C'Y&&]UV(.<P$OFSN?\P4,!6-/
-M7B$4C@?>+R!'\3#[M"',]^NSG/W!-`R+(=B;KN?>=B0!7YM]TGPN?R]6>&E?
-M2\]9^5R5!!-?`^Q<C9C814H>G\F?HCEEH)^F(2RF_6)I0OS;,8,&8'4?ISN>
-M4>5)YWW/\][[2T/#PW\^+!DC(RF'_+C\3NG0WN\FGH(:C?6_:G#U_-QO`]/L
-MS0O9V;_2/OARD3*]*Q#?(@?&GTWP$_1TUJX%51#[8U%HU5L747&5+ST6H,!2
-M$X;-DZ;MV/:X!CJ#M-XM6U<O7#MP;A"<?2E7N$BT=;&&M?GQ>]D;/`Z@0PP%
-MF8::)8Q5B+;K[!7`E<!J]L=H?,*%VS[O]QL\^/9V!Q=C4/+$9R_=]$*)GD%8
-MVEL:C<S[:<-YF;U`=M?TJ70F0^C0F,7&UVSS<AA8-U&%P[*<SLJ51T,.5$-2
-MYL=HM!::BD.PM]@^GL8R!]42`O1EX_0.N._06O"WWP,\=POAD#[8JFQ4[Y#/
-MR?("[$';1VNP7*V6>GD7FR+Y68,^N&P?O`G.GY'PAY'?!EACMOFL9%XRW$LB
-M2'AGMOZ+&XPU;+URN9\?W'D-6+ZHR5Y\[7_/)CNNL@J\UM&A5Q%+NN]]&.=%
-M$U4\8`_>`>'`,HH/SN[`*'XE]#\?44AD&_N:@Q(@E("%]S%59Y!(SB/1:].4
-MW5K]Z+_CFN-\O"ZRF5<<61,*,QBB<Y[]]R)4Z6X<LU@$(@\<0/0JG@,,<70_
-MKO/#O3Z(*!,57PEZH">QXIKL0[ZB\?,S(&W)JZN4#'B-$WN"P)EZU%:7!\\_
-MG(CG+4Z09+L97)['"&1WNL:^#0DW7G*"RRF!3,OP,:)>2;LNA)RV"3ZU,^R*
-M4.IG6(!CK#(+B8.'T2_W^NROX2A*1LH=*[VT&VU\\HRN/SG/#=KGH['/O<.#
-M:MD,GO^/']`S!X]Q"]Y&MNP8FX^)U,5ME6[+T>)FM#Q2<K"8-JK#9;FU53/Y
-M2E0?+T9]5T\UJ.YA*S9_;H<-71R!J*5&D,_=?DW/`J,WB>_S3_%VXB)5LUEX
-M>+7;'D@[U-(:=6'&SD-&)[Z=DZAX<8/0;,9:/#^/J'9@J"U5#Z%&CSR(T0)V
-MS.Y84,1>/W<3VO2T.].F:1;VG!XQH@Z<C$$(,.NT'KJS+)`=3<:-VTID8.9^
-M8_T=+C$W3=43@H3B9DV/D'VAEL9>)_,\(KV&\\PX%;;=Y/2.8S_ZS4_/=LX2
-MVN:NW,>H7RAPLC<R!LJ!G':,6J0X_138OFL,U)Z+WF/>FW?KW"Q0#G0^A/!=
-MP<([\FPL?J-D>"ZJB[,K_26\6@VQVD7L_`CR2IQ76S4JX\.6S6#&)2VE,7G+
-M3%:>?-AUK$ZV[*N&],3ZW.J+FV#:*#KV,^YD]6>2I*C$JJL2\7L&MZ:5Y\?>
-MFZC=+!FI!PQTM68V@V7$888RN<*)`:TP=[R\]U$&_C;4F:,-':'75;7BZ?)[
-M:->K&P^#J_ZP.M(R$//!/IKX:D:#WJ/O*#T_!J)VF3#.,JZ\9GIRTY"\23IL
-M[7GQWV+W#DZXJ?S*:M^Z^94<4.IJO:%]CN=[Q=&N1;J5O3Q6`BS@%]",K!&?
-M;D]5YWW9KDY8FPV5)@E1M^=X="Z=95@N+B?B8A2[V.&;T3V!F^:R\7J"K&^5
-M>B4GI=!W*.@Q0$I:WC\K%/[R=-92FE"N;C72E0_U$DRCA%.MAXU7G#%G=*5W
-MI'''Q@<<X4G(V:$Q1M(&U=S1\VN+`KH9M\0UV.@06B931BRV[Z),8AO71+=7
-MJ$3R;76XG2P433;&8IB/F_RX]_6-41!0A\`']7^WS230G[B72C!"D2C45-(%
-M4TT@`5`VT@T#`B;:$?(,_^L,01<6$>"!KUFH=&EX?'G-2+BX\H72GD2#6;J3
-M[M!IO)0^%X\.1R"A\;JB^=/["Q?9"(*5_A_;RO;D:<S.\/GXPE(F?H<ZJ](U
-M#?\S9NG">8MIG2$S]>8SN=@NGQZ!RY9'U7`WG;M>";K1[:9B$VB\<#)XCYV;
-M=D8C`ZWY0NRS5^#$]6^RGZ#%!X6[A\IPI9-IA:KV)FG'(/%)6F0^4=H#ORE_
-M*0>K[,L;Z_OVL8YXT+^_I!BDS)"A]8R=)C$#HPW9[!%AT8K$*`W/?%^($=7/
-M/-ZT&8!)T'',A*Z_B'#V'B]3DQ^DB%LP^Q@P=[K[VNN&\-&V'3QK#)OQF7R\
-MFB_T=B?K>K6-_0.T;6*KK4E4X#0C.>C4:EL'),%X?6]^.;BY*,:3(RVI;K0V
-MI[FDQ7J;,?GN#^M[3F%'KBU\L#)1LG0X1[*W:)RE3#6CW,.?@//J)#2\"S.7
-M\V1XS`6JQ\L>$'K==I'+F\KS.N7_RHPC6R$*9!3;CI.^%Q=1UM%9F-Q?P-S>
-M(&DQZ8'4\=.<C,/HJ%#)8F&@ZB*4EGPS#S.[@"VG2VAH</[Y>>PAJ9Y&'[81
-MBU!XS]NLQK6PEH;8R@A[%F-;+C15JNUH\4:WSVWW3D58ZQC'T*'*;JUU&XJ]
-M#N=&QG:27'&21/0F)\3F"IFV').61IE7[!M*A;^'0B$[B$\*?;3:B4PT!,MM
-MV]H<!/BV"UI4^LH<]ME.Y";=#23>A%3>-R?[A1Y@YT&.I$4SEF+:OI;\2-Z=
-ML]CLQ!48G=#\+[HFA=8$Z`M'\!.(#Y[H%J!SPR$VV6OSF^<;N#%^;%&+/.9X
-M<1/#3.YW.`TMZ^`)[L%G??@EE0P*+I1[JR1HX-+>6V<W48;&85P8G'\RR&2R
-MR2A'!9JJJ#]!"']A**4$6QD5XAO%Q6*3O;C([6*`T6C,ZC*YT4)O9?T[3WN?
-M>K/.<KX*KKC@SM&)C/PX<I)TYPQ9QJ"H[#-F*\;_P1?^/]4R=DCGPG$R?,?U
-MN"X^>Y<QT7UB(6&C']<+3O$P0D67E%B.%Q`:Y7PLQ8C$<%[>F!JF1=*7EX2<
-M&\7:DPEVSXTW??#PV/G7),\&,=;;=K]5#?].'AT6,RM<:`P/@U)IC%WH198Q
-MC8S]Z`=Z<\:7=5](-56M?`RKAS^<T4D`?8G*U"4F#_OX9=:>Z6_U>.S9=BA>
-M)FZ)9&HQ^$]0W`M`C@`MH[9.[]RRC`@'1U3UI.T)PQ?1`T>:%K'RVC:S61OF
-M96XXV.DU^PY,-S60)MG3"YC3OQ1/0^5!`.$YA<C-/)21IIC^036EE7LW3J'&
-M-*AG=[792*@NCKM'^8]4C-:2OJJ,"B&!1%6V*=]']4..@D@L8CH2\L'BQ9:^
-MI1_M$>EIHL@@R(=G'A:'QT<;8&&6B0)61_[4IJ!K'%5).TB*[WJ(['O&K_"$
-MP$-C#YE/FZP?AHLWGK#.ZO)7=WF;NSUC]+%,.U^W9IENONCJG0L,UFK*QS+I
-M%S&LU<X?IH[81N<UT'KF4QAJY!^TVX,OZF+)O'0S]/`@8#S<;DGD-9$O2?I.
-M`H&P:/23;;!B1`954#"'UI/_%%**3YB'T;)N/3]7$/FRS[<\[YOU5H"BDN3<
-M)!3V[R\)T-%(8<%WP)!ZCV85-#LS=>I;]C3FA<Y,R[JO4^E[6-BW(.O=5-Q1
-MXLB#+&Z[:<N$A+W'US"N4Z!9W^$5%YKAF^\;+9ABA%[S\ZJD@J2#QTI;V_X6
-MEU[2ZC+D3`8NRM<)KVX6WXQ1+;_B-\%TLS:$\YI0Y-;T;Y*"^MQ?RW&]O_@H
-M<V*]O-YQ`^"DI=0%'R4'/0G??9L3A,J;@]#QF;N$X+S+/',&^97S;]':*PX-
-MY./)F]7QH_=M&>E2]T<$T!A,?%YRAGK\H[/*_Q)?;TJN)Q11Z^0<PQ?[A[=5
-M_K2IX79/8J=QE6N/K^XHI]9IQVJ)9HTUKPHNCL.)O_YTL2^YY4JYEV#T_%T;
-M$[+Y3+#!T5"5<_O(RR\'%`]!05>ZXM@CO`,Q7B1->Q(S2S3NE6Q,$\^N-[]M
-M1#Z^YM_X?!J&J"7*?,7LP:X$1;"MH6LVCJPR95[HKIT&G2N8VCU_J>[:,:=I
-MJ#/6K>VTNSHABWO(Z7/Y-";,/35L^NXO69)D49Q#L]CE5QHC(,4+Q,T.9E6@
-M:5,#D!PM!]1[$]'\A\OH^![X>_)[X(P_1H3YA^>2:6T0BP#\<`OX=I&,1(?2
-ML7WQ4]NC\&D])_,[`,]4^F]_R_(,!I-!(`.QYJ5Y<\^:0[1&>5F:=3<86763
-M!N/,2PEV>JAC'AO9<=<S)]`5%4)3M\WZC1H:$V2BXC386W2]=)`&X'2M(Z:D
-M<Q_&JNDE9KE71_FT?$)MHX]_VTB3"C7RUFT>`8_-=]Z#%(C&5/W9CQ+BE0`-
-M.9S0/H5)3M.4S:$9%/._OL]QH;?'^,3RS')<,<\?MF9[#C7.+@:5Z]ZEO,KR
-ME&C4<'I%0M]O&,<O4!-]*19"--OG,F\]5GYIOLLE)A25(HZ<9:7"G9!X"@2L
-MC.TT(\O[GLGTJ6B8,X_T%VBL92O9I04.A\]ME-+)A1]T,UO:]"RB22KJI4A<
-M=;Z9;O(:PFJ"<EQ2P34WN7D565OJPHYQL9/P*Y+&O0DK3RI61Y:!V62A#)VF
-M5>0GL[;V9P,XS?P2[@;&REA!(_8PSB01DFHU7")L([$DQ&<\`-5A(EH'/YZ&
-M=,[$\]=\SCN#4*CN^;=T#K3V883?\TMN,R.2\4'>;]@ZS_72Y[?)_"W>'L7<
-M6S9N9LKFPQX5>+Q[H."G=U6,'0O>D]RQTDUN/$"'[M9/W[T+`N8A!'?APTSB
-MUX-PK>+,MGQ&37<+7?8)Z6O:AA4LBV5&3&998%K7DR'LO32L%#.]P:9?V-WN
-M5F"FOXC?#\V_(()7\<HL+0JI1%-I]Y[!MW[_5%OQ(-THEH_`&5Y5="?@2.^0
-ME^KICXCI2Q>#XSU)[\7J,M%BE,%9#(/;5&H!5ML6(*M/+*UHXU]<#U(GFTE*
-MIAIAV7%BBJF6EJ'QU#M"4C4X343C7D\K6(DS]"^KIX/PIJ;[N]&0_;AO"[MW
-M1Y<OY5A5N*`8TRS3%)#+,*J#WG]7K-$`?R)!$PKL'_)D/+_)9]CP:<2T1!-N
-M855ES+W_*53+LR!N,)C#ULMEWS"BJO^NL^/[L-368X7>GT_YZW*<EBDX@2AW
-M:J:\.4,:WTVV7^C"U::_Y`EU'%].%C/LT?6T4:K=U?27U/Z!?4(@>_/\5:_R
-M@.?#1+X.-.[U4RU-((0^J_)?%17?S*GO@<XJ""88I(9]S3MZE'296!9&-GND
-M@#I`[..Y/Y&2K/B@8;X7T4L=%T@XR'JUGNSJ3'(%T+%BGB\:KPTF)Z?==W"L
-M0BU!TRZJ\I['9_<YY_FI&EI,@H5^!!E%QL8P?"?>H5/`-LFI3L]0&&\"&M>>
-MK3+DQ&F*>4+\=]-4F,H*JJJBEFR,^VJH-*J&VQ55U?=10H7!N*"'0$E,@8?D
-M0<]8&>G6D=/Z?+9K_1DT?J-A(F!@1WXT)R4QD1AT^U7G946<)I]*P]2=QG[4
-M?J*3?,"%^*QR;#>]SV6%A?:S4VEMRJA.W1CV!+^`G?']ZBKBM1MXM7@4U,X7
-M^:-=#C%L<>8VH1\Y*&+2%M12J_`ALFD'S9_^S,=]FY3N?\74R_+_6+D#0K`-
-MT996(1ZC!"&>_NE(M;>W#?"*WR<\F;P<:,$==RB8?65C6S-",BY")BF^G<*:
-M^01=<XM?]+4FS]/T-$(T")W,C,Q$M:RV7DU]:<&-9,9*]RTF(/J3AY?ZBL9V
-M9X60CH*OP7!8?9J;3U9V1JL<,<*&8QK;5'8TCH@-C^-847XV9-04H:=1FBR6
-MR%*)#!MB6$Z5_@=XH43O_>&:?=^"];C^^CO_V)=K"JHI^[6K87'QF7-<+]9E
-MCXU-JIP89K=QN6ZV+HZJ_%\\^ZQ7M^RFI@CRYG!])\`F+C>`TK]HQSK*WYW_
-M>S(4V@?L.P5IF"2+BJF^D/-8"SE.1BXW,+[-XL."9%:OKI%"RDF>VR>>GEH;
-MJ-?AXUC\+B)TS7N7IZ#^P-1^*8PYL\([&0QD6L0FR7W80IY-&(ZM/`O,#(,4
-M6$\C/6FHI[\5ZAU=1J\#V.K?;26[DZ>H3IZAJEA3*FI@(S%>X"@T/W6W\/55
-M`'U`*B3[R1_O</Q(99GUX?Q%#&"B8?=:\25"I(,*BH-WQH>YH+QC?'/MQM2M
-MQ]E>Y&()C1,<Q*C(_[F]H;1:D/#N'OPI=@(S%I.<-[$$(?T6]UPJF^OHC7OE
-M5^_XQ*2/@*OI/*#`S+X^IG;6L7KD-GS'J!<@OEMU^$:'DTP^-"HBMTK:S!]>
-M\JZ-O^KYF1&Y,L$N+Z-X3L\`PK+H\0ZT.LH>'D]K/._PL&MQ<:^N;K`\:%B#
-MTD?I(+1L#TB/'3T_.P$4R3L[AY8GZWWZ50??!-3]]JQ`@BB;PX*,5L<!@VD8
-M5-A!I77"EVPIV4-<S!G/AAX\U7>-A_:I(TIALLN=V?KPE63I3Z#68#WDT#*0
-M""I&=IDJE4$?6:_-<ZT(#$/XM=[6W,:U3WMNAUWWW(9AI6FH1U'>4$-UWUDY
-M*LR^RI'^7TO'-RPH'381J9M:5V>Z9<8O,$<<WRTI^#]H,Y^C7-R=;C,NB5M?
-M5AQ=[P+%RH%R`9.H`>U!QB!YP79`\>/!3-*Q(*#Z09/T@DE/A&J@HD#Z26L<
-MOI9`2@,:;2Y+2P6<1@FE7QM7:*,N'"&"P:9@Y8N_>Y[!6`,1X6X5Z>`?TE3R
-MY1ZJN(Y7N3UKJF)57>OWMAGD^E4O_?+VRJ+/(,4H!@;)1&PSZRR(6S4(/UPV
-M;NN+-;=<SS1?&B@SN5VE(.;(Y;C^5)K21:5Q0N\8W*SNU+8859B7G#!W=G'@
-M_R?(M[&A#L=OX[(N_@=VQNSMN]LP;KOY/;9';9,D)@[;(^C.301DHW[ZS[RP
-MC,QA<^\@*OS)^&$E/^,1P-*RLKM36VRV@F#MC@92B[!X:;6=D9"CM>)77]FW
-M85FS>;!F.S)_5<TKCRTC:KZ!/YZ<E#Y5"S7X&:3S+(E56,A_C"KC0OK:?I$U
-M.6`G)7/Q;?VX;W+Z;D-*RG#-TOI+)T2S]PNK;&YGWM:4FU<;'-85I??B93/4
-MB^RZDNA^UDO)2I*9C`X`2<G)4?1`I3Z('T9,*@U:@R$<&OHT"]N`1-";&@=N
-MRO;Q^X1:;K&;]V>")LW'2CW'RZ+IT="*+5:Z.N.'/D1=]'H;B2'AN<37<BEE
-M:?:>AXKL+T*Z_9KOR7,/I=-+1_+?NCBO&6NVI^-ITR6QVBZC:97@K&2^6_JV
-MF(2A@,"Q3<7%_SXJ]:P2%4H0:7CG#')";RDM,^?+9U3#21D':*7=*RJD5"M#
-MDON*3<,;#HE^;A9%@<$+2BA7Q_=E_-IH9B+CM%)'22X<(N=-F[]F?L[WOYX^
-MO?%_!^NE$>+PX_@TQ)T?7</!F$4+H_`RK5E9.`FAJ"`/P2HAX?X<?@/UW]I0
-MC/&,2+%G&.0/N>#W1=_=&I%:&,*DV$-(EQ.[TY7,RU-I&A+".'68<*R6U[G4
-M:5"4/:5=4B@_RNQWM>EV[4%*:3QRUOC+JW@I=MUU#N,:Q'I/Q/FNY@-'+Q_8
-MR6*,8YE^C@U[.O5SL)H='FT^/@HDZ,USGWLF+\^GYGM-#M&W)Y/:@;7M)W/)
-M\EH6.PR'"TEJ\TE>8J,\T6"*(0L`QD/,0Q@8XX1YB!HX""!C0XCK0TJ\ON9Y
-M\5(R-SU;YR3\Q]Y$JLKBM(_QAL[!@JXPGA2V[E=JERN_#Q'E;N+I]?/:]@6%
-MAA1K*L;7+:TJ/M^##4LS[3&8#C4S\$V'J/!ZMGJLQO%\LE/<^6:M2?+JHHA/
-M?6UBQM&TG,"'$F`@EJ)MH;$_K-Y9]34,[\_V#^#G9M7H$N;ZVK=M6JKM3YJO
-M!K?P@3RYE3#I+LIJ?3:K9]?8+;UL&UG%32(SZRQ'VE<X:1@RJ\9@:1+I2_')
-MMS\*9_/]M;WG'DS-ENK9RFTL/1&*H:L-D0C9!W?8S*0]Y-8XS1`F![^&'@A?
-M?HHF$@-_L383DR/"7/"Z*+28:<UWUP6P=!^DQ68GXBQR7#LH2=CB>7_&3LJO
-M]_Q^4\@4UA'UVW>L;TP*ZNKJR\KZC3+J1_7%PT^@K<D<2&",;#$\MP)H$"=#
-M9]E]_\S/@S,]F?F?`<@^#Q887P6>>'[+8F1;+%/4TVS'*LPR@H4,,L,PQCU0
-M/[63`H)YB@X!.SR@X!/3S+F=\.DWUABBNIU7.WE`4%W[QV(N_'T>2R*0?+4Q
-M7AB5@(3UN?\ND$VJ3-H[MZS.LJ_^_[P#2N+JU[UI>>.N%5@A&1?782V0H>K\
-M[?:VO.OZS7J>I.KO+/30Z83I#NT5"=,!G2T+(`J`&(Q`!`1\!Z3!,8)CB/GP
-M>ERR"9^?CGUN?*E\M#JG.R/YK_^4Y6WWV[5I+[QQF6NE&L07E;V/:A-($MF3
-M9[U)?V,DI+">K(3JDLIZ<G*:FJ*T=0I"]/TR?2]'T?BGH^BTWRK+NMW[3=WD
-M)>B;Z0;YC&2-\$D)54AWP[]5$12!1$8I#OC&3X0=^3UCUL4UC;:C\Y,UE'G^
-MKGAV>S_PO?Q#-AO2[I3XQ__(=FP6?24:T(+8Y8(?"E)E:J*2@E*6=HR<[Z]C
-M@]B/I0EK2Q19]?G:7RMI;7WAKMKLM<US6;79EKIQG$AH7Y44ROREI(HJ$.Y+
-M69(?*H"<Z[X1Y\?!.SIITJ\]7F>A/OU>)K<>WY<!PR&0USEYX,:QG=53TAD_
-M0Y82G)$:PK*R*9V/Y+/Q_.PL$"YI!,O2\]3!BEYA\,`F"8)F<XY,8`QX$8&4
-M[J$8(CTU)&08J=+(,BLUM+`DQ/8,9\`?'R7"8/0>ZD26[Z5M"]ZLHGC[_'QA
-MY7:SZEFD_7S'S/BHNK*)5\?HYVAT>?XGC^1T?'[?17R-3'[O%6R`^3"-A,1B
-M<@[LR=,[IQ5(^<"AH0\X$D>>!\^M:)="><^[/J8.=0Z#OL[N-4'2UY7;2)_:
-MXWALJV0D`I0N^IUIW;-<E75E7VZTM!9DUHRI12?B\WR/'R<NEZ7T>EI<NJA:
-MFG!/JZHT&G-5M5(U00AM422K9@OI'Y$X$1`'I2(B?3`$4'IPQ`0!YX,488/(
-M.>104$;71QVZ.34/"R'/J]-R.!94"2UYVVQ:'*;-,?2HT"5(>+SNAT/%Y_/.
-MAT?]W.^?^J1]UZM[%B/44&QH$D8PY^/$C$F!\9WZQ#2$,5$@;!G9:T9"'H39
-MKOQ&0F,`F0B#)GF6XS^?]^^^59,<^4OO!UJ+GN_??DI,1+/0$:84$A`C.(D1
-M])26$[,^I]H^]>UR>;S3FY:.:C<:>8.8YN8G-(C!!('(![D&665K,E#220ON
-M20_(`]S,Q/<`Z.X=CHX6P?%YX#OPLAJZ;.JM\?K*C3FU3W90Z58.0*7O4S*Z
-M155T:O9/+-$/7D:GH6,.,,=]\)BAB/$Q0$V)H`03H8Q,"$(3,W>!)44#WMY\
-MPS%\^N]-FR'8?,_6?XV?Q9];Y!YOK<>LX$LX,YI#3_JX_^6)E<F7I(D4D4&$
-M:%&D54FJ#@XM:LVM9X@9M;3S:<#!LA/(I:PPE=`Q"'D0@\>.0AADV+C"-QT$
-M%OWF[P_3;0<P7;MYRW^Q\KO"V_N?N-#[_/T+7,^Q-_CXC[.?6K<WQ>AL^+S.
-M=[:MM[;<\+(K+6K*+53L[0$DDF"TP)`-@!B1233`1DS(LTG!14X(:=(L:SD(
-M?@UOHG!'#1X":+-3?:_.8/5R>NIH3FM`CZB0R)--34;-"M#8X'!P;<P\W3=O
-MF.KPZ-?%\P#YGA#VW@V&`^9>VV:R*A>@297S%1F!T4'F^"[C#R7W67;^\U\'
-M^[_&=_]I^A_Y_V]G\WYW,SL^'@^=X;_VY:*BAKEEV03E0E2G3.#4C"$0E>0,
-M30/,:/;UH-49*'B6CQ2E4F20;0]DL[:VW>VK1R6_?W-S[#_/K?@^1G?1T/MS
-M0S_QO4S]@RJK+GZ)G,UK-3,BS@EJRM*'882TFTE(@R`[,A,%10AT/2FJI"<F
-MUH*<G]X;'R/^.R>F?9,_R_V!^Z-#SNU;^#[K*^<O0N7>)]E(N7B_X\"\7AKI
-M>82&+PD-:S**:$.T*I8A3M&[;"(UCBA$AMQX`-%K+87$T/4R=]RCY-9A8W-(
-MV^C..RYZNN43Z_P9HFJ+V?9B/@.SCG)X\.08E!R62-2,+,%`'GS_*R<]J(99
-M5*A0+D(SQ9AXU/5]5/6/'W_F?+_*_TN?]OKD/Q>E9SXWK<V4DU\^8@R4LP(D
-M3NX3#"9,!@T;\,`,&@^[_[L-0!Q:*4XAJS<[B$)FG$IO'4,YYU-+.CC^!VK/
-M/H;]'XRU3%O5L[M=7YYG]4Y?=^UGQ]7L/8TG8TUP)-46R"QA2$L`Q60SAFT)
-M"I,LZJEAP9J9GM_6?%/E\_+_BM^6*PQ3TSF^Z_/[8^2'9NPVFX@V-`;F87<A
-M2;H<(*0,4[M^C4RAA5+;S+-X[R]S@\,/N?F1W]?7-<[^]M7>BYL'9@O(/UG[
-MWJZS:-JYH.%LR6[0K;F>]M"4>.@]H?'X]:-9B&EO'K0&#!-`'Q%/#!P:VQ;:
-MU;!%NVXY;A;A`M'@J%<W;5NT?.V__7Y"_+^V2OW][Y6A>U;]^^7;PK8@5ZZG
-M"\$"XBXAQKS`D$$Y6IZ+9L$(`BI4\H>5HI/+W';YO;_5GZWU]SXGW3IM6BV.
-MA+X7,+JEAM>S%,+T#>J\ZJ(6`&"(K)#8DET*5D*EJHN@)@S%6'@LB<=Q-CV<
-M9O[_\C?^M_@]A_DD(;W^'EX/3+=NWAJZ:LEE#52R+F9JHB!D!F(1@,51DF89
-ML*4$"@6`YE.:"0H0,O7,O7];OGP^Q8AN]3\DG.665-)DER23*"":#"&F=W:6
-M9IG=,.S$%E)MQ'@B:@RUC@!P'4AA4+A/#.@PY,3.+'!G,A`X:)Z.W1_:R?6^
-M/A^B.\.YAZ6&S245550/%G+'Q&.O$\XYQ)XEU?'UB!H#Q892FQ!*HA:#25(9
-M994J;^4XS)JIQYZ.[I/-JU>;L>F&3\;\3?7YKKQ/+U![MXNW++%PMW&>Y`0D
-M)!<&=!:@SS41IV+0#L`+%).I(,0FD>P2LLV.>71:6I^AJB_![$F:+J]7:CDC
-MD(H1R00.!([C.,))),&Y&J:!W`[H##+%<-UE,IC[EFM0$VI+"P:DPIG1@^T^
-MJ\=R.WL7$;"'!Y%$.I"*1VD<UC&Y:W0$I%5([D2*MLA"3%DWB+"X+O0WJJK;
-MW#;?MO[P]CGZ$Y^?Q'3^V]#];:?OULO3S\7=[._=QYL\@V<FS'H.4LARC"%Q
-M?ST)88&H'2\LXD:1,(C5!R#S<.6>GA_`?SFLUFSPKM3T-FD*@H;(4RA(;,#9
-M84BR%2,8I#9BJ39V:H*ZLX=DV=7PML>]_*YO1[1MF_A-S?Q*)B"K,8.+02B&
-M+`&&*2HPE28I!I#%PQ5%](ZVBX7T3W#7WT^O^G^57L:].E*HY]O/ESNWF<PY
-M\>C'GS(RH<1H38!0$U`<A.<&/18)H*.68=&&`;-G,YG/F<SGRH_<'9\WYOXO
-MM_;<3K.OKQZM!UY'7F%(8!,TCTD(N*2D)0"XI46(!44AB8AB8&==V#@^AD\/
-M=/FZ_\O_9@L<6Q?ZDN5")AW>:8$I@FD<&=F+A5A,@8K1,AV+1%0AP:`Z%,#S
-M7Y^ILH2HZB]QP^'\CR^]DEEDRS#K*G>>>=W=)IB8.`L,+P%FS,%X)$02/!R$
-MWE,PDTS2J9H;%81BG6OS=[?HW_.ZVK_6_\^O^5N^'=N]E];=WGV%>O":[2CR
-M%>[=N)VAVE4O:">50F![4.-0:UA2NA[2(\C)'E[=9VGSK+#R'D\??]#P]_A]
-M<0JB;8[=1FW!2;<@]5H#;(BC(;9%),=)CVZ`6>[MTNDZQ:*-%\0ZV3!?KOL'
-MA[511Q6)&D,W1N#<;@I-U!1&W`=R153,4)B,SMC)3"D[-V9MUV'I]C[;[GN[
-M>GU_#AY'1FM:RCIZ;,/7Z8]>RI.D=`TA$"=*!0$2'3`DI3EC"=(=,Y4A@69E
-M#;-S*80X(0ROV,]T@I0%F>8A\4^/['C\?UWQOOA\TX3J^=[GFR\<1XR]JS/'
-MX\#Q^,\9XPU/V?C1R#QK3*2%B2S(:IJ2A)0"PU!JRF@\/9[>YMG5V?0*.J=4
-M39LU):+$9U06*;+5JD+2'50*!"&R0LBQHJ`5#9#9.(VN'A-.K5Y/KNYZ_Q#B
-M_2?*]ST]I],XG&X''3@8\<JPC,P>`<4XV;,30IQ6XXG&<4I]_,B!T''#%X\L
-MG8<MA\"Q19C.XCP6H*.?Z`VS;\NX<9@CAN8.YZ&`!487I4\/3B:=FM*25,!T
-MCT21=-CCZ_28=(0M(JL_=__?!]WXOI<G#YBU)<N4E"0:65#(D2)6((#>-%#,
-M:@?M$*-XN\"MX5O-V_?1ORW-JC[>'CO?28:=G<F`;@&$BPV&A@5!18]5B2!@
-M4%`=5F/4]755#TG5>OTWRNGVCZ6'T/5_#'R#L]CU?-/0:=QXG=F9NL@S=E@1
-MNS*#!;=@;A"J0P'=A@.)MW;C=J/B;MQN\7Z'T;SD-LW-L]_[C-@))YLF/+A$
-M*IREZ2D8B9A)(&I9AY`PD>:ERQ.99''2<9V!SN9AT'/P5R-\S9I9M2_$2)F%
-MK(&1?4HI94AB6M(]\FDFA`F8UF.Q`B.!(PL0)P#=..L`X-$H::99XXTPE*3%
-MZ_1J4G7U*L'=>UP8.N<%JBIBJ:A4.J'4/%"8#D)L@,I@I`Y#J=1J$*`2H"BA
-MWH>!0034$RG)YY\M&KAK82(B%$6[DD,PW1%!NC<X%.YW61DLM*5$CN0V1DAN
-M7;&%0Y9AD&V-SV=EM[.STG9M[O2Z^-JO+X7W"8S%!D6"AC5$*(""0F(CU@99
-M5U2%=6,778Y<LKJR.O/#U;_E]N?=')Z_=WN;=YEWM'63,WU-\WPWV1)OLD2!
-MOLI5F'8)4,F'=VE$0A"""4A%*57HBR=?CQ[\>]%%$=QV=D9G9J.S69V)V02G
-ML&8)V`'7&0.)%I`-B7T6M*L+IOIT\^[W<,*VC:-J;2S:-H-DE#0GA$I\,F$#
-M@>&$PD</#+X<:9X0(3WKU)7#+%E-K8VHK%ZDR5(D4CH2:12.R))$!!2AN1H#
-M=($M#NE-S$X'L6""1H/(H,\B4>JE?CU[.SQ:K_3W^K\7)9[^SLFRK(6=NFI%
-M44,I,D!@9-"LA1!9,F%,A02DPE\04AS&(.>S6/,\3WYZ.'?]C^5ZNF/>ZNH[
-MO27P1=YV=C2=G9F8TT=@/7AB!@!V9@&(TP10GL#[$=CAWSE[!EHVY>?WN_M\
-MW<?.^?]3O[*W>[?HHI34SO0]`4!0[NT[!0AJ&9D@*&`2!J&)T,)4.BB>=(WM
-MC"074X>#'P1UU%%%?C:-1D<84FU`B#9`[5:VP$@;8)R"MI''?@)G:33:27@E
-M,V*<P8/-P9O3WJ+RLU244N[4E3L[5"60*"F4!9.!`0BR512R&4BP&("IBEW2
-M8<:H53B2+Q952EFWKO6Y.+CY?K3XYJ)R<X[N'`UA@Z(C@-)P%X`$0\+*E#!D
-MAD@)F$DB:9W3M,3$I>PF':/:[7F'5-_?V+$S[CS\.!Y_B5QQN/"XV&5)Q7A.
-MR'B)PCC:8#H1JD8B,P324)QJ@Z*'C<>.LM;?Z'K'9[_/HT:+F*7:I#$PPHQM
-M:J7"JA6%J,4(=63B/7!Z\]$;"I=B4]<&69@F`QG)TP5S2KK2R"LY2)6MK(?5
-M_`^%>EEM)I`DM(BE4JU!@&\[)#?&R'!**!6(7>"1B<8K`)DS2!+*[I,X26I2
-M5\`1YD2/U+>\<9=TWS;XLP-#H=`:`T(H"30P*40E%TFBIT2!@FNC,M5`8!9A
-MG98Y=F7EA@THPCC2+I<-N]-BFVR;S_!W35*2B_1?TPI*54D.U"(XWB?$63B>
-M*;,4P79(85`&(9#5!4BM!V(#4U.R9W03U4E)=IH[L_8KV+$5?%&8B!M#;Z^W
-M&-N&+B-#M!:3:!6V*`(0D@SW42(V=KHDT1BED5V]!Y9I;LO%K<&_RX<.'-BS
-M7;A=OJO-Z#ROC\KY4P"E\H^2!\MJ!Q/+)080F+,)L"O+EF$'EC3E'E\KY#T=
-MN9XO%\O^/EC[IEUY"6/3FU-6,9HV&2`C9@2",8C3,($(-4&@N8'$>7L[7QO@
-M_!,WT,PS.JKF%06/H5*51(;,$8L1`L0ALDV4A20J.=0&;5JA0YT[66YGT8_>
-M>UOF]OX8"WQ,;8VCB@ABLK9B'6E!U%UFL`-*Z)"=1T]4#MO<M@=OG_@?H?A_
-M1\&0W,<3#+%!,)=+DIK"B+!`LP+@18%Y%D50+AN-,IR+F)D9+,&W'O;G!O^2
-M>"?O]S-KZNOB>FJFI%105"35`5#,Z!U0,B3*JIA%("`LG`JAP91<GCK+?\/7
-MX^?W-_=[_-V1W:31HOB(7H$06%R+`62Y`NBD9+H+(R]JE,4M<L#C:J.R:#!@
-M@8)(B3=ZVU,]PCCJT:[A8<+"9D5G'9P2`0H%X12"(LAA%+L"A)*DNTE1N6(:
-M(5ZK#K7R1V#:X>][FYRW+N]PJ&R<NIQ%.I48E45"253$RJB4D0`RA!2&0L.N
-M9'!EP5V>/W?N7?ZURY[OO79['RH._;M-M-=^6$;B(W.Z('=F#@!NS!,$HW5&
-M29FW6C=`6XV?)WWHST7HS@=]&7.0YR'?W?#^IWO1M'+M7,=TLU6K>\D0$BV[
-MN6RVG3.>.D]KQZT&*Y!H#4^.1E/'!E11@!;3""TK:<=EC+@0>FYM4[NWL<(D
-M19(H\<DA&U>.31EHPW&49CB[LQ<4H=PKN1R-VL!V2$FD2"0C"/$^.52CUL9R
-M[\K\,_6V?8_A>7O;V"S9JWH6L].DJ.FDTR:4C!RHI-(&ED$!=A"4,"@AI0I)
-M41%)IFEJJB+F<>>FDK/O>KZ?XO9YSW._.PW[]V[:;C=6Z"MSNB$-UNLD)"W8
-M@Z&D<2C<5N*=V;MV[N+=N[[W#O\_VWU?>UM8GIN[\**A5((D544,E0P]#IFH
-M3"$:"!V8H#("S$<4Y60YPUF$$5'(Y&XWW:M^4XNL;'6S38,2DCEDDP2X1Y@4
-MT$TR$,3`),PTJE`G`:2DWA54[^&</+ZO-W<M<N/@SD_!]/S]]7R?O_5[WK_=
-M=WUN0P<;:V#6PWK]TO)!?+Y?:^A`6T05],*#9*X"GF1H<LE#H"B@NU/,]%YO
-M5WNCH['"GSG3>_/<QFW@8%*;C@%$6;4%(+)A#XTYF4.9BDIU9F5(0TUU3!T]
-M7A[_7\I:.$[/'LF;:B6U9VK4MJ$$2*4=I6E2)9$$K#"0*0,$I-\M*R4;I#>:
-MM6IRW&_VN'M7O9GO\MG+T_8^GS\F_LH[#KZNO'*,&"NO,#$ZX**`E.N,D<%R
-M7J'KDEZ]=.!U7P&CKT;5O9ZZ-$]/U]?P]8O2<1=DT[UYDB<=VG@B<0F2)F%)
-MQAD*WYB&"4<;(,`B.)7;QCB4+65+TE_4LC\'A]SI7C(\=C1B'B,Z#Q$0T2<0
-M:#,R3J"%>P"D*0[$J@["*@[-=G1I"KZ)?1Q<GAKM'MGN>UTFHTXZ#&[>U2K4
-M5+X5)0*"DPD610+`7O04142I=ED*+E8E#A=J]<NCRU\+<UX=-=PNF1663-W>
-M%WM%5O*&\19L4J@:0W4FV+,B1P3LW80&62XD1HD'=/&\CH)&DP/>O]G?J]?3
-M.#M12J5WE4I(T<N&]-";QB3?`R-.^:R'$9@-X),)$$-*TJ$$KN\I*2J*-:>$
-MO+9Q=_:DX)<N`EF)C=PW.^M89!M2@HB7>!0;H<D-\)9BTP*1W]]$WS=W]^E[
-M4[_/S->J<7/B<N[T3W.WLVF&4;3;%M2C;MP<&J3$:`VRLZ9@<`C'3-&-&R1&
-MHX"CCTS45[!/V-/S[74:Q<N&@N2X%V`D`Q(%7H!@MTB&!:L5&X=$T]/1?@.S
-MY/F^UX-\S7X\&&_APK;>=Z7SJ$J!S$4I@1R`.8%`<Y3(`Y*FB#(<4H3D-2BD
-M3IWQ.FQ8E@@V$=*W9MLC">IEX*;$:45@PQ1HVL]EAM%ITE+MC)'$*:-LA(I!
-M&$8J[@\<5:Q'A>0>&O'N'F:NJ2;UV]<G4[H33$MO-YK6@T;YWNZ!WJY"$[HP
-MLC)#`%WW?M8HWCN'6;[VKGX:W/4<=.G157Q-N^%R]*"13899"I%BEV1`6$QD
-M+I!@B(FL"36-*NZL0=-5:KYCR^]2U.G*E*I7E".J6:9VF=$H\!X2S0<)@2EX
-M(4M"<!B%X#3)$JE)4I7>J6DIQ5^J9(M..,C:.*-1NXY&$8Q2;5VSDY#`4+0F
-MU`VP$!V"2C:VA*,MRJ.0P+=VL1W.6V1S3#S2RRJ4E4J3L*44YF.^2#?8VZ34
-M4++0IO"ET--.\WY8;H,WQ&ZV:]K*+A=![A[GCW?H.X][?>7K+MRXL,2XQ27(
-MI%"%X"S%"Y%`4H0$)A>(+-P,>IJV^+7PGNGI]WDT7Y#DU<0\1Y3><.#OUAPW
-M[*.`.`7#!]B5P%RR0Q8F3,E,X"9Y(3#JZ.IT(U\E*><ZGDR6Y5JMCB*^&-.-
-MC0E7J%4,&%V+25`1"D)B!7>Q`""`0,ZL/7.EB1?.EPYN+E+N_?[=Z]=)&E=Y
-M;LG!X!PF#?OA#A++5)9B2IOA.`-2;\ZRQ0X3A/2[7A[S[>[X^4W>7><9BF+4
-M*Q#:MA:K$ZHZNO#0FO!K2NA"ET]5UR%`0U#&6F-<5!Q:#I$Z=WR^#OZL,W3A
-M>Y>]ZHPJ@L799DHEV2#)%4;T><A9(4!93'&BXEK()N"7>YR=RO/K0:S;ZVX<
-M/%A2XTN.*8T&&-+#B=<9+@-'39`/6!J,@ZR$^U,S!<MEA9TW481UG$]CE'L\
-MOSO5OZ]9CZYTW2=+Z\]+CZ_3A0Q2Y*2GYS'$*1P"@Z8.E@P4V;;=MPH=R574
-M-O?Z*:R.CE^2?*]WNG3QXFXXF,U$'7F!A!`G7(P]<M&0XCUP&)BN-HUT5V22
-M9Z[5Z:46+IN;7'U^&8[NON+B\_L=W8.K9V[.3W?D'N^Z7ISTG=J[LS#N.[+)
-MH[B)*\TAVPF(4>:$H92D-0TLE'<EW&$=UF&-6R.Y^XCSEX-'S/N_SYZP>L!Z
-MQ>MAJU)H(GUHD*%]8;9A\>U(&"GK#]F'K7K?:>MF9LQS#CQFPDEB.SAQ=KN;
-MG%:M;F6Y;MA;II*6HH=J0$F'8I=V'&&*6!T,%*I!TU%-%-%#VF@$*JLK(JX>
-MWR=B68FPSF&4$)*4G@Y,$PD$KIQD!,[H09`P$0+P1VPO`'@[,,.#T.\X%;22
-M7J[F%^0V_*E+$A'(6[DI+,TR221+,FE0$PR3$TP!2;YV0ZAQ#A-#&RM_#,R#
-MR<=W#P[W6Y.R8F[C>L+LNWBW-QN1$EV,(WJ`A%D-@A>&+3>FE"]38*B51@'!
-MCP8+PZ/#V.]YVOU>3DQ;>9[-ZBFJF#JH2*G14DJL^`[-4[L5)F@TR01L,819
-M"DC)E5`B!9(6)E64&$!`J80@NWK5IK0M;6N'%FB]MHM?B?I5])AW=QM&8>KI
-MP<0H0^R"BCJ"Z>AUU9!J;/7^3TFP[AXCU.][7LNG2XUS&6C/&KV-C<SKSC1!
-M2:"79*830$BP//(NPK((++F@,3+=OEE63R>IS:O'[7'R<$\'!6OO^IISSZAQ
-M]=R3(TLV(4AF&8"A,LZC+KV<0-@&0%`0>S,>SD'H[\##9KQZPU.KTLWIU:N]
-MO[VO=Q*;IHN8J"PN!BA+)+DLP62)%-BJEF2\4QO+U11>]ZKJ8%SBUE^V>CV^
-MO?%QV\<>O2I4O30,<;V$)/.)"S")%DNQ:8%03:HC%+MS%P/1-M];GU\_N?=O
-MI?)[?+]N.GEZ3@/!EGEV3,SS0SI,Z0I4S<T"H%"06"D&!G9M8"D@R*!G2&68
-MT@^"TUI[I9MT]RW;[O5W=K@MZM5!11CG=3J<G"=,(9)B:6!.)!+D<7C!<<<<
-MSAG'(XAZ>'IRST^]/5R\WAZ?2WC#6G5O,;I,1;-K0HA=NEF%D$A9DB!YU4I*
-M%A<,871V+6O>[YV/%K^&?/_'[^G/+`PF$<4*(F-1),80Q0$`PM03%DL%("D2
-M8CAMEDW*J8XY<"Y2]]'9[7E^Y]S@WNX]SSAY_E<3E<C.'(IDXQR0R#)3`'DJ
-M<@FF&F(/-11/`>%RM-N\/3Y>I8-+1TC2$C11I#LD-I)+IM2FE>HLE3`(NDFD
-MDHI.ANDH3!:VZW-O2<VWWJ^1\CC.MAMX81H,#"8)%@@8$-*2-)0]0GKSU%U8
-M&G'J.DZLX&CSXG'Q\_EY/%P^/LZ-T;C-=&C=$-#3-TLQA2;J*$FV6@)`[,Q3
-M:61LG4I"TNP[*)-&T*T($$B/.LM%9>,CM7<[?O=WE\L\E^SK;INO4561:]H.
-M--.K5*SU1-0B:5`U*$4U)$FG502U.,(&@F$R06W1;M,ZP-KW,2(/<LU:NU9Z
-MN[QVK13/R#B<"N7(Y<@W\LT6'("Y80/1F-91+(4`<4>6850&20<6RY'+9OX%
-MW\.[._O*39R]/(9.UYOKU&GO;.S/+.\Z<<@E.)A,$Z9(81"R'&$9#C+D&)OB
-M/?LGB\BX]%<LU"?4*)MG3ZT^U'DCDR9=/$9*)YP0B<&)P)T,.[L"&2">=V'9
-MDA)IYT(E,I)+,^7?Y>2[VXRN:1L5_=S6:?-GL9V-LS9&P'LF0NLUFA.Q#80&
-M1*`NAH2%$4-"6==]!KW9T;V]T6X^@[AXGA-/3;3=V/7M=VLPW6X#H1W9C0%!
-MB[B<S![$S.`.)1D;R%L(Y8V=2Q1-V\N++W>S=FY=34ZG4-4LX5EGIJLC-3,,
-MZI2I)FD9#-(1A'@SL2E#.G'=#50(/!D69Z<.&K!O:I:Y)Y8XT16(E@>.-HU#
-MMU@8.W;CJ-2]$CB)L@90VPP;5&F<3)\`21R.\F"(\/L6-B+>NO%92C(FC0B-
-M((FZMNI=ILP3%-L(2!2&V!A?!F68B8TG=HV2(V49''H&1HZM:6S[SYE_!EQ9
-MB\KVQ*TJ!22N6(;Y,C!-X1OEP`S,6AR&@88)20)22,5C8B<S>Z]:O>KV+%LM
-MW'N$5B)E!X*P,Q8$ZO8]CLV"FAU(RQ;'LUFK3V9KQ^38;KQ^2.'!>[W_-\KI
-MW[F.Z,N7#07`T--:**)*A-"+`$#&J4"F1DO12E!L-F:#`QNZ+%%]C1K5L^!B
-M.38WEZ_ON]Z/GO/ZG:S;FYL[ES*9+H[O=+MVZ@97+KH,'QR0ODO+(4LIY81A
-MU&&8$4>5"9U=:RPKCJU;M]-]DW;TDLFL9IL>:AZTY.MBB`XZH;D\GE$W)Y1`
-M<BH8'?<2+C@Y+*2&H(),*LV1C3$;&Q)+Z&+:FDCKAI'2/;K1;1<1TJVC!Q#(
-M$E=?I<PM2!0F#TR=1U3'3U>3R6!*Y%;7I=3KWJY=(BS:%(6;1-*TS5G9PD4Q
-M!5H,X;))3?(4,!NM^8#(4#2&+OG$2J`SDC8732P@^&3"_%-Q=[W$]<.D:)HM
-MHH0:+,:)*R'3(9#B'3"$O2GM)TDW5F=/KGAZ?:T'PZ6[BR9-6HJ:J-Q$1%&X
-M[$97K0:`"591IDS1K*@<1VUF/L2AH#XL?%@,#;09S#=""NTBYKJ-Z:V"MPQ&
-M]O6]0L11#Q(2NMHM$D$:9$8&ZD4!@*!NDEV$$#=9NL*8D-TW1&;NDOEUST=>
-MX;2FV[4V6SM(J6VD&*;0&T)3(5`#902;(@A6U0L-FIM*;4KK:LY]&A$M[M9.
-MQU/6Z??\GP>AEWZ>79M6K]J^)%M[5M-2BV-;9.G":8A%!A-40+,*"=29I$>I
-M1J.!S-1J-<=8-A;'?-3NYI8S(5Y(FBC=AVC0FC`KI(83,[9R3HDU#"[0S$`P
-M<DR0-HVW!DSN\01*P9().^[7U1X[_+Z^#C,I+EENR/=GG>=GD)C?/`<)WQB/
-M`E"`T30,!P(,G@F:#.[RIB#30K.#LE-=N2%R@GVJ?7W\9TM)%P\?2'0=2'5&
-MR-0Z'J"&1V0E)#U&8N2P@TDYI#FD8:XA>/O^Z]YV>3O[&S@X2XKUV%X=%UY&
-MEEK6H-6\B"MY$AO@LUOV!L<S,@R'`=WW%BE)*;I:3(<#?G`V>##AT7ICM?-K
-MJ0()SBPWRK"C?/`4%_S-2FE3$LSN[*4F@F:-3(0VL*-D;5=Q`=&L4-">`LER
-M$@=\P*5#(E2$I3`387=R,DCDPMYO&W7.P98R3+>DD16XRK<;G=MQU.D-T&2X
-MH4[(6`(02$2DA)6@[O<N71T\@H\MCG<GE]HX>W)'7"OI.]<"#U=>)#C-($-'
-MQH!A>N:2E)-%)W*Z"%=W:"1!(M6[<<!1Q/%;MVR7A.7L]@[GKZF;5\O(.G//
-MO'>Y#DG.'+6LUNN4ZU02"ZXBJ"CY@FC+S0Z$,)-0Y+`'FD)\V92FLUJ<.OL'
-MGZ\O;W>,\7:[FY?$QQQIF`LQIH2&*,2#)Z#%BA$)3),8&*.PF)CA,3`R6!TG
-M?6T\AC@NW,</<VPM-M6B4F)H-*.IF2FF=QGJ.&"6[,F@D<&20X2N^`P#@1!M
-M5K%HIO;O6K'H[O2XZS7MFV.W6U6V"V86&.V;6V`Q!";0P4C";<0!D-M%+)'#
-MI'MW=(2?V]D@.\'Z152:6]2CJZ^H8=W!J:KXX05N>Y>2X\^9AF<PY\N>6%+R
-M8"$YSSD.4II71%`LO.B6'EG1HV0;-5S/0'EO0>^?H^]N]OHY./T=\IPQ2Z71
-M,=BB\ED278%"2B1$)C)<8L(R&-5+B4R47"_43CJY3=8'OZV;'P][T?4]3V-[
-M?T\<^/&U.)Z1ZG!-4#U.PBH"IE(P,A@)#)%)3(5"9"(U14C,N"IE:THR%4[O
-M@^%VL=''HQ,3%QQQG->K72T+K5AL4+:`WIH:`2%UC)&!=A%(D+HI!`NA25+H
-MP2]`\VM->LX=?I^GX?:Z.CWO[V;OT]+;-G%CVML@/=K.[7;;%UU=>Z7;HURZ
-M"2'=V+KXX!Y925\L'VLC`%+28/EK,*P+B=0NU@NM=%L[5O3O*Z=;COKDS<EN
-MS:HHH$ITDB6>=VXAQJI@>)-`P(;UXYB&+Q>)QH]^"8G((U#9U<LLGI\:[6WI
-MZE%$YD-/)D++V2%DLM99[)9&SIH*0J#G423.,*9*(&8BYI9(6&@DR3%2&2J*
-M7V:;_@ZW+8O\2V%'%'8B(X(B@.Y6A'8;2-M-M`VV9FKLUE,IMF(*2@)'23D&
-M*W7E1&$&!MF3NO/AOW]WG;7$IC%MX<W<]7?W+)R54TM2T\]-!/"B":`U#3NS
-MLS4)2;(,5V4P#*<IS'E1PY9RQB^;SZ.[N]7S>#'U>M%BCQ0>*.,2L!%$XXS.
-MS$43.DDPR8&<&$$-`D2*:$B;DT=GLF'P^/#V/,?<##`<,\7$QF>/4L6ES8D+
-ME502ZL(D"XJ0$A+@6$R$]F%@B51&T:(JI.KK]O\[S?>[GO:V;=TZJ=RBEJ6I
-MH#EPUSV#L4YP%+*=%1$#(<RR*'&H0J4Z-.A%$W$U[<XMW=W7]?'']J>'T^Q[
-M[T3;-AF*N:JD#/1`R`RF2Y5*A41F0Q@*"PR@+UTDR(4,4`23@.YG0AT63,TN
-M?K<_1US]__O?7[5KXW/2-$T:)?1!00#0*D$DT(BB`P*ZB2(.SH9!$-62KQ.A
-M%@Y%CBWCN8ML_E%KM]HY/T7RS/5YO5SN8<SG<\Y\PYH5SJ25.<!J7$><Q#00
-M/.*$DW<PXEW1ASUS\6>#F_.W<):X:SVNYQ']XYEOO]4[-K8M54U,J2@*$U+`
-M[)W&*44ZS"@)3G$0)"<Z(RU*:;GCRF0BCK9:%V>SQ\9Q>E^/II>3'&-DCTW1
-M*2A*DTJ$U9$H[EWQ2$`6_'(`P4W5OL6MELM!6R.XY#'D%,1[6/3VIINM\'M5
-M_PSSO<9#U=,T[74JM<\M-:69T)O&'M>T.>UEK,B!,CVB$H2!*4>:%I#(!U:+
-M6FF?4+E8S0<@)75<XS/M5<>;3U/4X>=UBH\&>?!DY=O/(>O#@!F3*`,F#"<"
-M*!P6HI(%B!DL6,A$DL'`!E5%&67`=O-[QWN?7Z=[P_;'^MUR>?J4ST\F["BR
-MZJ*K)G)&JK3LK36F23)K0!>T>UFM0L)HD-D!@'M&S$P/:G),]I&:1TG`?\B_
-M#?AG?^)NUO&]NM;SO;"7EZ2]Z2E%Q"7&"D$DO54R*`P+F#0*1DJ#N5Q)J]^Q
-M=MG>][H'9Y9HIGZQ8W(BU%;MRRC2LTHA,2DDANB(20W;\I&`RI"6\>'`Q-I?
-M%G)X(2X<VO]CMB^)WE['H="MH8,$LA+)*RE:52A*F$!0;XD-\,AOS,WX`8.2
-M!#O:C>TA(*6_N;9M'5ZF_A]+V7O7Y9>;(T1&A$9&-'$XSC1IEE#1$04%*0O8
-M42$.V2VE$3*)U&W34FOP%92S;$^*CZ7USR.O\/L[7?T-G0VGW<UR[=MW7=T8
-MO1VG;,%VF,/;%F8!VB=I^>Q<4,HFI%@D.(03B8AQ4TJ'$CPTG8.QPZ?C?E3Z
-M_ZDNSY_NFT]W;V.LVEM3LVA=ED&MJ[&0A=I020#M*)2E@=M[$N;8C069M#Y&
-M2>.+36,\SX7F:_K=7R]AZ_JUO>OW.(ZGJ\5;X6Y#F&VC*9<N7'?8RB1^?//V
-MG<'=&S'#N0[JH'N990[B^I@8!!W9DS8!,)EA"_APNYWS:6#9NWO^GZ/U3\WV
-M*U:$>S(ZDT,H4F_O`-]V11)-$9`9"XBA$DT#'0,.6"P6$E8;>-D7)ZLG!*?5
-M^ELEGW?Z8K?[\_ZG#!<4%]QMYOX/1[//Q>0UTZYQ=R+PZ]8:Y#7$@L!8)#7$
-M#4&*^:(BD(1\R^;Y.:\&!I-AGF\W=LSY/G7'R<FQ\;O_`\]?V_WA]@\[S[7J
-M\SB+?=XKEPN9U:Y:+=QSB:RA)!=1`>6S!/*R]48IY8@A(3R20'ELC@9L;FX-
-MP@QBH."A#CA!P2@1<)"RASENG2ON,!Q^AC(3W8&4A)^C//5EF,7M?:O</%/I
-M#[[T<O.)SKVT9VWE[99C)2C&$YD8D%`23FY4HD8%(L!ARO,D;6#E7FTSB#CX
-M^.&MW<!+^6>/[LA\'@X.PFE2)=^932\V8'9E,Z9/F$?'D@#@Q10[)3%=Q&0F
-M(%!,)G0.$Q,!O%A1R2%.WV.WER_<Z.G-#ET*S]8Y_%Z')S6]D]G[,Y[W.)QF
-M`N!G%'#C&"RI@WXED@;)3$>47+!Q,BB>1WGH>>M8<]G/[CT'V_MF?/_4_OOW
-M-]?/IY;MWR'>;]YO@S`WVYH#%=VLP8)`MV4TY(&#^/.ZU#O#1OMYM=>_PK>3
-M9%V3WZJF/M<F?GR?*]N=29KT[[11!;5-#3@BAG10F3,<>38F1(&9F/(PT6K9
-M)B&^Z(AY&N,4)$*U:<V:5%[J%_!LU'FM9X;7Z3\SY'WP\/G%;Q<^BF<QA0Z*
-M$XH\IDI$R.55X+$('E3*PF^3)D,E,F9!0T]#4"<<GGH9\6N:_F/9TRSYG4_J
-MKXERX[^;P_>?L^8N9O]R[Q=?M<>UM<S$VUC2+YB2#`L()8DF8AA1B0G?6S!,
-M0-C%]K8I(=]1LE,3ODDAD8L",6*$,1]##APW[WC?]:S_^X+F>P16(GW6>/64
-MD<4@%4RNZAIDD:-U5&Z,7"6`D@FL($TC.[B3<+1+6#64%8DUMZ7XWRN/ZAC_
-M$K<_P_4^SSGYO.SNO]-?`Y_0_2^S[[P:]YB_>:^=&Z%Y)7B\RO.DF9KB$DDP
-M23AMQ!9CR4=2T*).H(`S64AQ37SO/SEG`N=WSVOP_R?E_,A?SOZ?TK3\S.K5
-MN9S.IZONKO`6^FBU::S9W!QVM%2;2V&B66`78(Y,"I`J(Q",CG0B9`64BET6
-M0LJH[9NEE[6;=?=6X=KZ'T^]_M\D]SUU6K>A>YF;WOK=IWYS>)\;>P>,K^ZV
-M&_@;!A@-?AA0L,`%A3NS&%DWF@<0\]LUK12,)L)/^F<3O)([I[PPG*`!@XF<
-MS1Z>;9,S80K*?Y?)8UO+]U$RJ:+E(3(>8J-34IAI2DT,QYI/-#2"9)#H@,L0
-M/$5XLR3KG$#X\)L_#L`$,%E`BR9\'++.GLAN)6FS=Z7TZJH?SOW'X7S?Q=WY
-MSZ&A^9\W._7_CZ-;@YU;0S_O?D^)H>=P8/.;"8,`L`Q@#!:08`>"9BZ24A`U
-MTRLAY6"?)%Y/+!Y?T?J^Z/5W9]S_&][DY?]O=M7.'YGC^+^)E)20T:)#MCUO
-MD9*T<3I%Q<0XPH1N0<C!R<C!Q.,##SGGF`//),TL`WGPKSR&*820N1QQQ.(#
-MB((QW:/2!G-T!G%TC\HXC;743L3OLJF/;;((:_=[BI1N=-0"?H/1^E^P'I^O
-M\G[&/N/HO1[>C*3T2![:VHQ3VX38&;,]NT)D21('MQ1[>&4TDJY,FJ/<Y:FP
-MP0E,63:9*A.46>->7D7W>;F^B\BOE>`<[A7LU:R[O3-Z-%FD!O#F#3?N4DWL
-M0JZ`^J,SUO&)79@XJKDY*SC%!R<`Y.0/'9#C(=6"*,`XT4C).L"*?BF%=#25
-MMB<!C&Q#2MHVV%M;O1:9N;O3RN;OG?8:;V64V_(Z6%?&F$#&@RV[1:-8,L(T
-MJDCCG=45F41,6(P1ASJ'>+=S30<G1T,&$G0@/0,$I>?'OM3BO?&;,H21HTG?
-M$1G,@XF%HZ1I^-,Z!U/68=XP^[!V,:9I*W[I17!U1X9;3JN9'Y+:%\/\R_HO
-M6V(0SNAT.9G\_Q.=@PX7\3R/6.)L38C2383$R98G0"1B=#RG?+1DAB!WQ7?+
-MDC"&40R.9@1@<Y@2!@#$S63J<443DXC3N6BM=!#N<WUL(-/@Q+)%\]%H8:8V
-MZ5-D?'HT2ISDJRK=M$M_!:654]RE5)M6EA6=TI9YD$&?/(E]U6F)FN0G/5H:
-M"9W].+\)TY>H/@]3ZC[2E]54!ZE]50DC[_JS/PMFE1(48;;30PGE%%"=?@PM
-MU%@L!DIJQ3WL457XVUUGV:DI])L.PU&12:I2OU)R>OT8WI4YZ1=G=X?9LDO:
-MWJXXS#_;.O,:18>$*LMKB:##2S,:RLLZ$*3>R;?HYGM<S-Z.8W-%"G6YZ"$M
-MS)NLV[`(..DC=!MS,A@DO@LEE#)H2#JJ#YA\S'\>T:O[+;^!_$?@?.!@SLME
-ME:CC/#<\M9AQXQAYCX7:BS?J7/[1,R^P0"7P3.74$F&AU.\M<_P/=&PX\V%`
-MYY56;R<0JMXU;+X)%QH94;'PCA4ZRJ:V2P5]$RQ+`IL3E`LS<JQ$TL0KI`J\
-M<[-[?3_=Q]"6<Z6'/[^B7_E_/U?:.0/,K8E#P>9L7K'E,KM/E`XYY"\H\IOA
-MI^$'X:\D`9.14$2A\,I(_>990,0$H86IP.,>YZCSRJ@E!E"A1M%#GH,P^<]-
-M]^NQN\BMKF>GUEI]YOD86)25S9RJK%S]]QZ^\8/S(SZ;%)?18KRVTJ21A4V+
-MJ3/#.64OG;6!D9T3FW,<HXM2^XI6@9]XY:=BKJ_#/B?%?CX>AP\(L/3.FJNF
-MQT_&882=#.R$;SM@)JU/XF.+LAP&^<&?5C']/!]`Q]5F/S_G^%;U2"//6FI=
-M#TBXF\S%[9UTQCN>U*0A;_R9^71"DS$SD(<(DJ53_YF7O6*VNVWO64NMAL!X
-M[:+60#:TH#[7UD>;K'@-RZLKRVA95MR:E^+S+,X$KM=,&=<QT8U7HBA5%M6Z
-MP_):;:/9H7L\N%>SQXV3'#Q#-MIG7$GW'@F@NLF<8WD&<E\E.PF#/0Z'8.-)
-M>RX/!SK\IJ'WWP.8+S>P9G'0[LLWQ<]GA"YO)2,B@T5E";(XDXC@^W\"ZA4=
-M_*FR5:S3UC)*'N@U5%T6]*Y/H#%Z,:I+C`SKBVRJ3$P\)5R4Y`[-Y;&40[&2
-M`Y>18#,NMB6,=V)9:&IN;$BRP!I6&`^=GE\?C/5\1X8=92'B62>PB,1!).YX
-M*+,I4D80\]@@HA$D\#3*$9X/!/D8>'U_#ZGK^`G]MFI/PH]O1J*!E8>]MY7<
-M^;<H3:=:*<T^Y`_W,4J:Y3_%9\U8;P)/]V35/A[5I'C!45'!=>?2L5JM%M$`
-MUIEBVI5O;M'1<5M*DADH\GW+-6Q)65H:EL-+HE=FI?6`Y+OSQ[';Z_/S^][W
-MO>3+M^,^K[)PP\3Y)-;Y!&/DZA`5&**+!)/(J)^QK]8DM`\"##V5#V3OD\IY
-M?9]XXS9IBCHB/]AFKP>(]T-C#(>-V=_#^R6#U0QGO,XY7L:NK\>A2[;]5]LY
-MK'%L-3RJD,OVP]$N+0/SYS)F6C[+_<;F)F56U)--:PZ34&O-:^WN#>QI,TNH
-MW=68'!J:41\,+EQ=GR>3C\?C\6Z3PU7AW=@GL69&54HD\"(BD8$?G8?/B8*$
-MA;,^59#`8_//G:_WOH?0=G#Y_Y7SC]KF%:V!J#N#%!M6^I$,=U-[MJP_ZS)S
-M;=M'2=Z(^+3P$_<&ZNP/4&\5F^)F<5]TY9Y\;!*(4T*9*F^O1,OO01REU(M;
-MGD$-I4@P?"BC3T*HJ(QDE==T*6GF4_@+[&TL"H<R%O%K;..797P\G)R'(%;D
-M;CAQN9'=#!QB0S'&@XW'#(<!,"3OS*65Y_O^$PSD$OVZ?;W6%`)[=SS&1?3`
-M5_+\6.3#S^'%FMEVL_RO9=C=H-*>_Z9NG"=CD4S?1)Y0QWQ?$:2NUZA0+'[Q
-M2WE,5H[QJ-SV#H0KK1I(_!U>5\PC6JA;Z:NONJ@HCNL31S5E.VK//!>S43^^
-MR:G/V=^_ENZ.YXVV48/&K_>GP^B&AKU=?L[:#L]ANR;-9,=E*6^['Q`!3SWS
-M*/FJI!`*9OI0L(OF&#-@^<>[)W]R*"%.-(VF@DS6!X'OZ:_W%KHAB:OA969S
-M43C,9<4%@/VOPR9?>0.73<M1&#ZI]I5%2OGO$9?3Z@GR9@B%JH\)<_P-C]LW
-M>_BPZJ<*RU'6/5:.F6N`O^-2-5.QYYEKO0*M\U):WF"?[[.^=I&L+ZP)EMG?
-MLWAK<7Q7#4M1#$_C^$CLMGO,T%^!SOL]Z3I_4WL._N^-9D-?>U]K`W[?ZQT]
-MDN7/(/Y/N3TDN%JU@(>@_F'H+5@?-^L?5UAB'WTS40A]68AOWN9!3(E2-T1`
-M1!"I!HN\!%(-D&,\/$&(C^O$&MD/M\4'X3XG_16SOGH`=);1T?75?BY]_:6&
-M+FT%^Z7W?9-_TK0D!];^AB(/R$=CHKZG26/T]%JW+P:6,Y;4V!Z<N;KF6NL)
-M_R^[G+FW8MOW]&[F'!TB-D9-C<3+5^QAX?Y7AZFVV7/2%2'1/3JJ+C(Y2;3S
-MV%F$@>9H".;EJ:?'Z((@VO%,U>X;6FAG:!56R'M;Z-1.7$=[KMNMM?QEYO]G
-M.23COHYBZ8K$`\0'9#&B?I%>6P.^/OR^;@&6D7/T631$10L+]]'U/O=:#IC!
-M?D=&!F&5[MEY(Q-@_4_A,^'9L#'\/9GT#][F4@2E(Q^+B#_N+0>),Y^3&RNR
-MTEOQ!36APMM+HG37+@P</A\:#^+U2\;+^N[$2>^']\4WP-Q\M3*\%<:K60_'
-MX&92+LOS&'>.-V;AT>LW.$9O,.=#??D*RGB_/JMQLG+2YH[&<UNZ<)JY/*N3
-M-=8$;<X'"EA$_!/I[.*O`WVN$[+[B9]_(RO=.^HA]E$0`A].?<=.L\!AV6G2
-MZ=J@'J)?D4!KTE5'Q"293/TJ]IN0V'?YLY!L_UEF>A,/>+7Y1,[M9\0-6^1R
-M=\<18SVQ_.37F&$E#9OEL-/`!-=-9Y@^,BLSX6C4\8*6:F5]6+LNCM*+4O5+
-M-!1;X2L+,S([83MX-/ORULE>KRMN+@'R;*MM*JM2LK,B%H1B,=K-(D".BJJ"
-MA`2D2E"*D%D9"(A&)`60(L)!@?+3\:C_%6+*[-!@2?&)#(^/!$9!A^0_^-_+
-M)^0EM+4\/&_6S!O;;[7!WNN<N:SAX)\0'7%$T&Z726FN3497BKFW,$/]"HR8
-M\]T%UKQC8+6UU?#HH1^+@[+N7VL4NN8NT_<F`PY`=<](J5AYV1?VUYVZ[I4<
-M6P9H<"QN_]XE#BULAZ:G9HOJ#.*'?,)["K2=BHX\Q9L^P9U3$MI]^_YQ5]WN
-MS(S,:U*RKZX%V4$??D>!>*/;%10]_#V'\1AW2D5J,2S/.;^=,.1A"W2E/8#J
-MU<+M<9^A7F3E:$+HXG7J9#2=3J0LK^'$6[*5[%\W_37+S4\TGP7=4;)Q2G!4
-M[H:@D;6!MZYW)/:/N.CKS'X^3<0OU/H=FT.E(=!X[36&2D71[KW@7KJ!/U,/
-MH%%!+43UF'D/=5]8QF:7PH%;RM<'V#K5RA:>6RZ&MBF"J/QNAT-7CIJN.@+8
-MP=DP8+AH8QF@,[57.7F?R/@6)BSPX?I/TVCX:0^]:H_.0/Y=4444"?EIA9?#
-M!0$>(R(;J?<B"(%6-M&08;9D6ETNE;K&UX5$S;KHX,7C'#:51DWR\8!SNSS#
-M7OCA1UB3VY'9693/'W%;NTRC;U)3&JDFLUF\>H[?SS5'0VKOH-CZ$=;4H^*?
-M"[MQL#Y9)--Y>*2_R6J21P'OI\#!W_<P)AJ@I>AUJ;7-<5<'<T9"%M1U%>2A
-M'99R]BXQ^PX;JA;M@*[+<J&DX[`_&6306ADHOXR:<POG9PCYK8,H5C:6BB6H
-MJA_TV8_1'BO.?R/:I&?OI_^\(1-HE7(X_;PL=-TE`\>''S>!!B('</9Z#/"F
-MIJ!DAX82[;.)Z*G^>((BA"E*-OZ4`/"X>AI(>M@8]3^9B(3[-?IA(ILD?>::
-MBTU0QTOE3ACA<<OL#I4T$(JR]3)"L'_53-IK6B<8L9^JHJZN;`]QD;CS"3KC
-M2!GA02)5F#Y9P*C_6.&4#!FBGC>3-X]WG,T5@84>:!41KR]1H:A"[/B65Y])
-MYA?BS'ZZ!*JD_6R!@CRB#]=GZ_64C/QHJE_SIUX,\%&K']I^PPT'V1)?"QHS
-M#6\-%HC11X$-"RLRD7S?.M(?;XF)Q?`@J0L[?4H)>P4FM]7.)WW$*03=!N;&
-MH.\SF62KS\5R.\L&6GG1U2KT2?6A-E<UH1L_O'/5#5Y(&](IQ.-HKGOB2/E_
-MW+3OGFY["]X\BE*&"`WOG.0O@2<S:V.1BY>FIS>HXVO@KWIM+?5&1G;MA.3_
-MKK%.P8PT^S^^"U[O&\.`D@WRQS]Y.Y_3UPXZY"JV1HU+Z;XL/K%_K81C&^KM
-M\(-\_\W[Y[A->IF?X*G[C>^P;B(`D\?#86,8L_49PPR4+W<.:RTM!Y"0W;^Z
-MKJH?`TSS%NUNX[G$G8@9]G%^K5&4?Y*&PJZ>EQ-9.:JIZ).3QYJ1\^6+2BI6
-MR8A1O)[5D`J)QBK":D8BB&;;H497&3G-9!2MVQFLA<:ZRD9Z/#[9/F.NUAI=
-M89JD73,B4>S6E>H%***JG9%]R,!&9-J,=6Y'-`N4G,9P;GNT,5EE!H9$\6=!
-M@8OHY^,+^4U1NE#\H*D)$_*JJ_)S*OU__5FF)R[;$3;2&CVW.UE97,#'JXX0
-M:D!6!PV9,;SR]F,&1WFK[,5,Q!C*.JEX1\BQ-W%K2XV5%2^+"]UE\5?Q@.1R
-M7AMH?+G?LX#[#Z'RTG\Y0?6>!L?/1S:AJVAK[W^Q_W8&8:AU#:1JD;&=U6=C
-M]^8.L[WM?U=@^VZVWMVF9?[([7+#0RR&(-.A'PY/B1LUK?C'+O]+\MS;UC$\
-MC"P9J'55NY$"%/R:-]XIA6)N+#[E\H9VKW/6S,YXQ_YC<MYN^G9==R6!]K.E
-M;\BI3LQ.EZPW4-\G86?."AD)J?O;)AF;>29"^>*,X:5N1)R?H.=D99V8:*BQ
-M&1X$BSEJSC08#0^O&/7UFO<PU;O`O-WZECF4(WFY@[U75CT%]V4SD@QC@6:A
-MV0U+FKO(97363CJ:O-)^OE&(/;EIVC;LW8/W87X8EU>N42L(?^ESRY6[E)<;
-MQ`\22F?CL?53^ZCZ@4VF8EL-DG.+=:F[8A1FIMB?=9J:CJ948&DL5H:."K'9
-MA?"TKWG8@*98\D%\HV?6ZT@%=RLFC/,<5;F9+7.G:CU"KM6>7+(+6.+J--FN
-M@:'6[%W`7TT'LV>XUX!XXM9>2Z8I\^"&R5MG;H#^S*"E/Y_\S]9\0V3$`?&C
-M]A\M-F@P1TWGD<$]:/RZB*G_LP,@_-_8I^QUAL_5;#7[+#_/VPPX1NCM;^O.
-M./FQFA`\C#(/L[G<'I1^WV>P.U?--D5VQYJ!.G_:CNPOP9QHQ?Z!O[+S<%@W
-MSR_\K>C>BD21,8<73+]&G9[W>>H+OXPP6'5H,!XQ.TEVW68%@LB9N.`*G'/7
-M',''2,O[HH]LOF3>YUE+>,4SG$!C!M@`J3*TP>F,WZU@5HT2UX#`7+OD%%1S
-MGM&G3OJP4F[?#(M<JQ]FQP1<*-YJ\B^MT:T35^'.XTS`-,<^V8:\,P'OV4V)
-MB*+J8V^-^IK0^/@ECU2L^$(D"7ZSN]KA"L<JH(\2FJLC7_)HL>N]=GU#"V37
-M>@Y^KD/)A\V6ZC/;7N3@5FZY+/UQ]9M$<F@$2O0S1P=2S5V3,LIWIWFNV7(Q
-MD@[VO#YBO@3&S1.SB+R9%Z%BK.:1^AH1SQ?833D-QC0ODJH([\ZQ[+$\;,/,
-M>D1>Z!/`HACQH),ZXT.GQE?`<GG-?HSWZ<?]M"*A)BZ8V3G!N/M5>%M&)6*Q
-MGB[K)O(/[7^B/1+>'\ORT(FI(X15F$)FJ&7ETPM:O`3(F[C7',=(OA4TU7O5
-M3A9E46C7^0UM%K\P+^V>[!MG*II`;MC^28+)M&_[LU[G+C);'%*-/N-?48%\
-MZ@+$,[T^PNE]K"^G#]27F;OHO1,>,#X6=XV5GS7^U.4M)HQ1A1E8N_M-F'?:
-M'#`FF.DO`4:@"&U-96>9`BO^NAJ,^UV;"0Z]_#;K;N4@+SXQ!H"CB4&."_K(
-MP4_;0.?W@8T_J8<5*#P2?<RXA!EJ:4"NM*W>N>N\A:UW$B/%HGX']HQZ^:<Y
-M5&`V_=V#ZHBN3'G5FRG]_`F%4O<`"Z54-"O;\W<\`A^"7"L^SGWJ#W-)4M/2
-MQ/9<?FMY6Q]!XHM$7S\`_=KU?*2?R-P)02;AT-<JXK$I--X"OL,1;1E!5]$R
-M(>8@!I'^<YGF9KKQ^XAKYJAP8$D5B/SWAZH%*?1=EGK^%<[=O_S@^G=*N07<
-MR]N3O:<OS,^B?T^-`\#AVCGBQ?3'(>8_"U:$A^NK?^FH3;_B$@',-)T7HUOJ
-MR'OHLBT-N<DM!B8K#=7<:QP<$ZZ<6MUE%]M+Z&1#O=MSH(7Y@[P!>OL?QBZ*
-M2\K*O]D?*2NH<?5\$]/S]$8NOIHVIX=>\EG+J_VO\,8N>SJMIQ<S0+M7D<%8
-M]S?^N?1PUZI<?IH&4X+G,?K\EIEW^@@E^!<:'B''G$^<C#I/H#RQ<F-=6^-\
-M"-PL-C+JH;@QF(^^]5:\C7F-`-_E`@M;+YU'@%YX,G]M[X2F[7X!-%?2'B"B
-M#=6;&6-B4D>7Z<!WNWV;Z^-"'>Q$L<*#W,E<<,:_]N?CCY`4SU@;]AZN!@#8
-MST"]\>`6B[#B1_&GND-DZEK[G?FIUOHH_,Y,P1#8>@4RKE7^RD*VPF^"(D^7
-MS2C(K#ZN7:X'D-!I@=ZVG/"X`<U(#@KQ^XJ6O^S?$AIHZ1C_!A:\;3<&MIL7
-M>6:K$^!M*,Z<2-9TJW#@'SA)Y\E;:U1HF`H^?J!4]X'N5?YPS@2Z:\&47!)R
-M;`O'Q@BOUO"VV@%U]3LW$3PRK5K^\$!2$FO]U6QO#7#+X^\\<TQA8Z.:-':(
-MU1$O,VUA#7L8#6<X-:NG2J0EW?M2\;!Y+O"0&]R>:DN*R=\^0SF^K]!&)CR*
-MJ9:0"%H8S"ES>QI*V.L'8K%<$@!(K^<G:RPKG_B:SH;2Y[*X&;X?\M=_'4UA
-MN7T%\F8@SU-[!%3[](R)RF>5?,CO_/@KJT1I7T/C/9]!5N98:,>O@&8L,K$%
-MT;,6P14,DMM-#&!/YZ$^2SB?):D2?C$J'SS%A/YWLT?U7^'>H'VQA?H7R*.I
-M5DD'O6?PB-NU@<YG8Q[3"O+4-ZO4>E&",KSPR)J,8>ZFO-D^*V]0@IA!R#L:
-M=/2Q)OU,.<=Q)[3ES\%G\I00Y<'`O14"#2IKA1IPWLK^:2_O>KJ6,ZQPZN;A
-M>\8L[8X[M]@>WDR5X-;MG74<T7L.\\RH%'F;NKT7DT:U<A</[N%_GEDG'F5F
-M\&,K_O`G[7D>S_3FY\94&,;)R5S2Y%%1^[M;@6ERKAVJ3-=S8$MJDF!!N79%
-MY;)^J\4OQ^_TU:TFFG/?6/UOU&-QE^-^0]K73^@ACQ&<FUQ<UJ3/=U]7#>4S
-M;U5T\<A7:?$:`])U5]].:+2N.@8ZRV0>D`Y(\(I4^??LG"[<R`KZJUNFLRBO
-M-HMX;Q!@_8GK[!5?4X@L_[#P,=M"^'947<=\.^*AA>V(?O!:,]?=&@]^MI!-
-M<5;CW_8;$X"`@!J#?W5P\N<'&N\PA?-FK+S6WWQ/0FOUL_%]RWOF9KC?39=C
-M\4[VEL)C#P.9DEP,'?'UNI>.@6S=],^GF954%[U-%P]YE,KRS`Z;6F$DP+'[
-M]:]'DT?%&JG2:9#99+;O_JOMM9TN9WI\"G432$RQ^',Q+3LF`YR_]]J5#*M*
-MCYIOXMDEZRX=.+ENC30F-'OI%BZV6G3(S`$F8BAH>AU6XLDD;;SA%V<&XYXJ
-MG[CX\V,FM<OB],=<QXFF=U)B*Y`>5N@#'J_W?2&D,.5/1&$W47ENY8^\#DU*
-MW^7!6WE=H9KI;VRU>&TT,O0'"[>SQ*C[;T?H9+A9'L5@<ED]5L>(]857IY"E
-ME!+ZZ[L6P<+G%,F'R:]@=X=7I-Q*&1T^W(F';ZNA)A@+FY&A"Z8G:J6)MZER
-M>6667-Y[#9#7=,[BE`:],6]^APSV;K17V8XQNT*!1$;0M2:-V1?J'Y5"Z;*1
-MW)Z*G)G%85!"-,/VYG`*22+'*W_Z9B-56GBC,*BU?EJG,5/17G,K%D.$I4NL
-M'B]:5_BNA%-1SK&I>E_#KI!G(("'^^WZF2V=X!U%4Y/6%N37P%'AI*RA+CU1
-MSI7%F^O/G'233ENB&KG=[@TVDF$_Z=AE8YXHJSY&*?BE\@=TM"5`M_QQ*S97
-M)>O+:FMPE[SR52T'!:";XB\^1L?5W^2MWG\#E3VL#?O*YLQN=*'W.)V"[FPB
-M"";-H\>8()>Y)$)4\!S,67%8P[WM5;]]?,5M>LGKBF,&9PR&%^A#!%%+3/<*
-M+X0XX>.UL3=\6`HL7P06+OOIQ+K0'IX4W50$>0PV1-4#]6']SJP@G[V#/CM2
-M_JF/S?Q<#;L3N4#A98H\*TQ0_WN^>::P?R>Z)Y.ZXF$F[@":SV/;2B#M0\1G
-M^S.$[LW1Z:`"AU#\?V_Y0@8[!/J4SF'YJ7M^KSVJM;_]T,,;`X?&M*6A(*.Z
-M8_>S&2SWAL^:N[X\)#`J&8?8-(]G@R22Q&=Z-AF"-T<7$=MUENMN;<?<\*(G
-MKAO/+`T&H$)PX2LI7UU=NK^M6>%QX[3#Q!1X.;X?\CI_.SUND2BB2MH&VO<K
-MF.PXRYA7RV6KVW4&/S5Q`TM-B$R5_B*<SXI?X"\RKFH/X@;5(NM9'G47C0DN
-MV8PL_W%,Y5!ZW)Y/,C]==F@'-Z,&0-U)4O9X=\`P>M;Q!4<G.0!DO-,`:UER
-MNOVBEYR9LPL9@PVRZ=(\ZEX[8-#^)WU]7UY7[#KS7O]98;)MJ+OYO[ICH'B'
-M\>MA$D&<X%I<YU&_/>>E%S;?+"<+A4_H&H.6Y@L_6VO]T&AH?HE:3M$_QV.I
-M7CD&A&FY09.`6:_CI!I&W9G@MC<_X@_HO\AKSYF\W85]A'&'\36-&<YL,>)U
-MN\.;4'`<"%X<XHU0!O+6XV1[@^TQVX9^,#10&4089;/V@>OX\C27J^^/-*^&
-M1C9ZP>S(S57HHXR.W7Y%X4M;F2B/Z^ONZ.%)SOH_#]2UBT8$Q4P1AML^*(`P
-M3?1#"T^C<?7/G2$E;<7"?L/;J>&/'OSK3_9Y1VRM>9XS>S_W]D-9C,^R]TPJ
-MJ_U]_:<E+B&$H[\[\]N<+M@YW^EG5'9G0CC*:KQ9X2/D"<A(2'(_1BM3AU6_
-MP@<2"*1]NH;L''H0+7$IOZ#EJK.P1^\-_\:O^""(!O@/QH!,XY0#[-3N!3F2
-M5-2HCQ&$O+?\/0HKS@FYI9G-"@>'P\0@_77#*89PU,(.M^75TGODAXWKTL6(
-M43O0)-!Q.UJ/8P6($A8#P&KUA,"XQ4Z(R8,EYJ^;'P2;#W?,_#V=O(@:OR;8
-MT(8?OA&>J%#)F1IG>Y&&ZF=-TKVG,6]I+X>R?!?I$?F:&&!XP(*%IMMUSSE>
-M6:08]B85"[?]'_KU)-<JM].WAP_&[%%8%#;WS<8!3,7)6.]4F\\R!ELH<+C]
-M%OU-7HNX,X=E5GQAS!F*4^B'R$'UY)F62M"7<H<=^\P57S3(FN!`@=SQ7^@-
-MCQ+NW?JWH%Z\-2SIO1E=UVG-%H-;2C$,&Z60!*DU04@Y_D')*+K/6C-CB[]'
-M*A1J5ZR]AC/X>>WH'(,"!I[[O.X++S$$Z(CA4.!Z!<Y_+6HU+MA%IV8S,8*#
-M>=?;TP'7?3*N%)_O!V-O2RY9OTYD]H(&8+B4.'[>/;$/(WR9XMG8"<,2B77@
-MNIH6E_BZ)7<#LR!6=&<@3?`Q-#H,?J2#E&.IKU=I6QY0600$A(=#!G+P=M.S

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