From owner-svn-src-projects@freebsd.org  Sun Feb  3 11:41:48 2019
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:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id AD4F914C536E
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  3 Feb 2019 11:41:47 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 5B74F6A367;
 Sun,  3 Feb 2019 11:41:47 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 50B081E250;
 Sun,  3 Feb 2019 11:41:47 +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 x13Bfljf014627;
 Sun, 3 Feb 2019 11:41:47 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x13BfhDj014606;
 Sun, 3 Feb 2019 11:41:43 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201902031141.x13BfhDj014606@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, 3 Feb 2019 11:41:43 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r343712 - in projects/clang800-import: .
 contrib/elftoolchain/readelf contrib/ipfilter contrib/ipfilter/ipsend
 contrib/ipfilter/ipsend/.OLD contrib/ipfilter/lib contrib/ipfilter/tools l...
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: in projects/clang800-import: .
 contrib/elftoolchain/readelf contrib/ipfilter contrib/ipfilter/ipsend
 contrib/ipfilter/ipsend/.OLD contrib/ipfilter/lib contrib/ipfilter/tools
 lib/libc/tests/stdlib lib/...
X-SVN-Commit-Revision: 343712
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 5B74F6A367
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.98 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_SHORT(-0.99)[-0.986,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-1.00)[-1.000,0]
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.29
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, 03 Feb 2019 11:41:48 -0000

Author: dim
Date: Sun Feb  3 11:41:43 2019
New Revision: 343712
URL: https://svnweb.freebsd.org/changeset/base/343712

Log:
  Merge ^/head r343571 through r343711.

Added:
  projects/clang800-import/lib/libc/tests/stdlib/dynthr_mod/
     - copied from r343711, head/lib/libc/tests/stdlib/dynthr_mod/
  projects/clang800-import/lib/libc/tests/stdlib/dynthr_test.c
     - copied unchanged from r343711, head/lib/libc/tests/stdlib/dynthr_test.c
  projects/clang800-import/libexec/rtld-elf/rtld_malloc.c
     - copied unchanged from r343711, head/libexec/rtld-elf/rtld_malloc.c
  projects/clang800-import/sbin/pfilctl/
     - copied from r343711, head/sbin/pfilctl/
  projects/clang800-import/sys/dev/nvdimm/nvdimm_nfit.c
     - copied unchanged from r343711, head/sys/dev/nvdimm/nvdimm_nfit.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/ecore_iwarp.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/ecore_iwarp.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/ecore_ll2.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/ecore_ll2.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/ecore_ooo.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/ecore_ooo.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/ecore_rdma.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/ecore_rdma.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/ecore_roce.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/ecore_roce.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/qlnx_rdma.c
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/qlnx_rdma.c
  projects/clang800-import/sys/dev/qlnx/qlnxe/qlnx_rdma.h
     - copied unchanged from r343711, head/sys/dev/qlnx/qlnxe/qlnx_rdma.h
  projects/clang800-import/sys/dev/qlnx/qlnxr/
     - copied from r343711, head/sys/dev/qlnx/qlnxr/
  projects/clang800-import/sys/modules/iflib/
     - copied from r343711, head/sys/modules/iflib/
  projects/clang800-import/sys/modules/qlnx/qlnxr/
     - copied from r343711, head/sys/modules/qlnx/qlnxr/
  projects/clang800-import/sys/powerpc/powernv/xive.c
     - copied unchanged from r343711, head/sys/powerpc/powernv/xive.c
  projects/clang800-import/usr.sbin/bluetooth/sdpd/audio_sink.c
     - copied unchanged from r343711, head/usr.sbin/bluetooth/sdpd/audio_sink.c
  projects/clang800-import/usr.sbin/bluetooth/sdpd/audio_source.c
     - copied unchanged from r343711, head/usr.sbin/bluetooth/sdpd/audio_source.c
Deleted:
  projects/clang800-import/contrib/ipfilter/ipsend/.OLD/ip_compat.h
  projects/clang800-import/contrib/ipfilter/ml_ipl.c
  projects/clang800-import/contrib/ipfilter/mlf_ipl.c
  projects/clang800-import/contrib/ipfilter/mlf_rule.c
  projects/clang800-import/contrib/ipfilter/mlfk_ipl.c
  projects/clang800-import/contrib/ipfilter/mlh_rule.c
  projects/clang800-import/contrib/ipfilter/mln_ipl.c
  projects/clang800-import/contrib/ipfilter/mln_rule.c
  projects/clang800-import/contrib/ipfilter/mlo_ipl.c
  projects/clang800-import/contrib/ipfilter/mlo_rule.c
  projects/clang800-import/contrib/ipfilter/mls_ipl.c
  projects/clang800-import/contrib/ipfilter/mls_rule.c
  projects/clang800-import/contrib/ipfilter/mlso_rule.c
  projects/clang800-import/libexec/rtld-elf/malloc.c
Modified:
  projects/clang800-import/ObsoleteFiles.inc
  projects/clang800-import/UPDATING
  projects/clang800-import/contrib/elftoolchain/readelf/readelf.c
  projects/clang800-import/contrib/ipfilter/arc4random.c
  projects/clang800-import/contrib/ipfilter/ip_dstlist.c
  projects/clang800-import/contrib/ipfilter/ip_fil.c
  projects/clang800-import/contrib/ipfilter/ip_fil_compat.c
  projects/clang800-import/contrib/ipfilter/ipf.h
  projects/clang800-import/contrib/ipfilter/ipsend/44arp.c
  projects/clang800-import/contrib/ipfilter/ipsend/arp.c
  projects/clang800-import/contrib/ipfilter/ipsend/dlcommon.c
  projects/clang800-import/contrib/ipfilter/ipsend/ip.c
  projects/clang800-import/contrib/ipfilter/ipsend/ipresend.c
  projects/clang800-import/contrib/ipfilter/ipsend/ipsend.c
  projects/clang800-import/contrib/ipfilter/ipsend/ipsend.h
  projects/clang800-import/contrib/ipfilter/ipsend/ipsopt.c
  projects/clang800-import/contrib/ipfilter/ipsend/iptest.c
  projects/clang800-import/contrib/ipfilter/ipsend/iptests.c
  projects/clang800-import/contrib/ipfilter/ipsend/resend.c
  projects/clang800-import/contrib/ipfilter/ipsend/sdlpi.c
  projects/clang800-import/contrib/ipfilter/ipsend/sock.c
  projects/clang800-import/contrib/ipfilter/lib/getifname.c
  projects/clang800-import/contrib/ipfilter/lib/getproto.c
  projects/clang800-import/contrib/ipfilter/lib/inet_addr.c
  projects/clang800-import/contrib/ipfilter/lib/kmem.c
  projects/clang800-import/contrib/ipfilter/lib/printproto.c
  projects/clang800-import/contrib/ipfilter/md5.c
  projects/clang800-import/contrib/ipfilter/tools/ipf.c
  projects/clang800-import/contrib/ipfilter/tools/ipfs.c
  projects/clang800-import/contrib/ipfilter/tools/ipfstat.c
  projects/clang800-import/contrib/ipfilter/tools/ipftest.c
  projects/clang800-import/contrib/ipfilter/tools/ipmon.c
  projects/clang800-import/contrib/ipfilter/tools/ipnat.c
  projects/clang800-import/contrib/ipfilter/tools/ipnat_y.y
  projects/clang800-import/contrib/ipfilter/tools/ippool.c
  projects/clang800-import/contrib/ipfilter/tools/ippool_y.y
  projects/clang800-import/lib/libc/tests/stdlib/Makefile
  projects/clang800-import/lib/libsdp/sdp.h
  projects/clang800-import/lib/libthr/Makefile
  projects/clang800-import/lib/msun/Makefile
  projects/clang800-import/libexec/rtld-elf/Makefile
  projects/clang800-import/libexec/rtld-elf/i386/reloc.c
  projects/clang800-import/sbin/Makefile
  projects/clang800-import/sbin/ifconfig/ifieee80211.c
  projects/clang800-import/share/man/man4/bnxt.4
  projects/clang800-import/share/man/man4/em.4
  projects/clang800-import/share/man/man4/iavf.4
  projects/clang800-import/share/man/man4/imcsmb.4
  projects/clang800-import/share/man/man4/ixgbe.4
  projects/clang800-import/share/man/man4/ixl.4
  projects/clang800-import/share/man/man4/jedec_dimm.4
  projects/clang800-import/share/man/man4/vmx.4
  projects/clang800-import/share/man/man5/src.conf.5
  projects/clang800-import/share/man/man9/Makefile
  projects/clang800-import/share/man/man9/pfil.9
  projects/clang800-import/share/mk/src.opts.mk
  projects/clang800-import/sys/amd64/conf/GENERIC
  projects/clang800-import/sys/arm64/conf/GENERIC
  projects/clang800-import/sys/cam/scsi/scsi_da.c
  projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/clang800-import/sys/compat/ndis/ndis_var.h
  projects/clang800-import/sys/conf/NOTES
  projects/clang800-import/sys/conf/files
  projects/clang800-import/sys/conf/files.powerpc
  projects/clang800-import/sys/contrib/ipfilter/netinet/fil.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_auth.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_compat.h
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_dstlist.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_fil.h
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_frag.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_htable.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_irc_pxy.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_log.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_lookup.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_nat.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_nat.h
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_nat6.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_pool.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_proxy.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_raudio_pxy.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_scan.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_state.c
  projects/clang800-import/sys/contrib/ipfilter/netinet/ip_sync.c
  projects/clang800-import/sys/dev/bwn/if_bwn.c
  projects/clang800-import/sys/dev/cxgbe/adapter.h
  projects/clang800-import/sys/dev/cxgbe/common/common.h
  projects/clang800-import/sys/dev/cxgbe/common/t4_hw.c
  projects/clang800-import/sys/dev/cxgbe/t4_main.c
  projects/clang800-import/sys/dev/cxgbe/t4_sge.c
  projects/clang800-import/sys/dev/e1000/if_em.c
  projects/clang800-import/sys/dev/e1000/if_em.h
  projects/clang800-import/sys/dev/if_ndis/if_ndis.c
  projects/clang800-import/sys/dev/if_ndis/if_ndis_pccard.c
  projects/clang800-import/sys/dev/imcsmb/imcsmb.c
  projects/clang800-import/sys/dev/imcsmb/imcsmb_pci.c
  projects/clang800-import/sys/dev/imcsmb/imcsmb_reg.h
  projects/clang800-import/sys/dev/imcsmb/imcsmb_var.h
  projects/clang800-import/sys/dev/ipw/if_ipw.c
  projects/clang800-import/sys/dev/ixgbe/if_ix.c
  projects/clang800-import/sys/dev/ixgbe/if_ixv.c
  projects/clang800-import/sys/dev/ixgbe/ix_txrx.c
  projects/clang800-import/sys/dev/ixgbe/ixgbe.h
  projects/clang800-import/sys/dev/ixgbe/ixgbe_type.h
  projects/clang800-import/sys/dev/ixl/if_iavf.c
  projects/clang800-import/sys/dev/ixl/if_ixl.c
  projects/clang800-import/sys/dev/ixl/ixl_iw.c
  projects/clang800-import/sys/dev/ixl/ixl_pf_main.c
  projects/clang800-import/sys/dev/jedec_dimm/jedec_dimm.c
  projects/clang800-import/sys/dev/jedec_dimm/jedec_dimm.h
  projects/clang800-import/sys/dev/netmap/netmap.c
  projects/clang800-import/sys/dev/netmap/netmap_freebsd.c
  projects/clang800-import/sys/dev/netmap/netmap_kern.h
  projects/clang800-import/sys/dev/netmap/netmap_kloop.c
  projects/clang800-import/sys/dev/nvdimm/nvdimm.c
  projects/clang800-import/sys/dev/nvdimm/nvdimm_spa.c
  projects/clang800-import/sys/dev/nvdimm/nvdimm_var.h
  projects/clang800-import/sys/dev/sound/usb/uaudio.c
  projects/clang800-import/sys/dev/usb/wlan/if_rsu.c
  projects/clang800-import/sys/dev/usb/wlan/if_rsureg.h
  projects/clang800-import/sys/dev/usb/wlan/if_run.c
  projects/clang800-import/sys/dev/vmware/vmxnet3/if_vmx.c
  projects/clang800-import/sys/dev/wtap/if_wtap.c
  projects/clang800-import/sys/i386/conf/GENERIC
  projects/clang800-import/sys/i386/i386/machdep.c
  projects/clang800-import/sys/i386/i386/minidump_machdep_base.c
  projects/clang800-import/sys/kern/kern_mbuf.c
  projects/clang800-import/sys/kern/makesyscalls.sh
  projects/clang800-import/sys/kern/subr_disk.c
  projects/clang800-import/sys/kern/subr_kobj.c
  projects/clang800-import/sys/kern/systrace_args.c
  projects/clang800-import/sys/mips/conf/OCTEON1
  projects/clang800-import/sys/mips/conf/std.XLP
  projects/clang800-import/sys/modules/Makefile
  projects/clang800-import/sys/modules/nvdimm/Makefile
  projects/clang800-import/sys/modules/qlnx/Makefile
  projects/clang800-import/sys/modules/qlnx/qlnxe/Makefile
  projects/clang800-import/sys/net/if_bridge.c
  projects/clang800-import/sys/net/if_enc.c
  projects/clang800-import/sys/net/if_ethersubr.c
  projects/clang800-import/sys/net/if_lagg.c
  projects/clang800-import/sys/net/if_var.h
  projects/clang800-import/sys/net/iflib.c
  projects/clang800-import/sys/net/netmap.h
  projects/clang800-import/sys/net/pfil.c
  projects/clang800-import/sys/net/pfil.h
  projects/clang800-import/sys/net80211/ieee80211_dfs.c
  projects/clang800-import/sys/net80211/ieee80211_freebsd.c
  projects/clang800-import/sys/net80211/ieee80211_proto.c
  projects/clang800-import/sys/net80211/ieee80211_scan.c
  projects/clang800-import/sys/net80211/ieee80211_scan_sta.c
  projects/clang800-import/sys/net80211/ieee80211_tdma.c
  projects/clang800-import/sys/netinet/ip_fastfwd.c
  projects/clang800-import/sys/netinet/ip_input.c
  projects/clang800-import/sys/netinet/ip_output.c
  projects/clang800-import/sys/netinet/ip_var.h
  projects/clang800-import/sys/netinet/siftr.c
  projects/clang800-import/sys/netinet/tcp_input.c
  projects/clang800-import/sys/netinet/tcp_stacks/rack.c
  projects/clang800-import/sys/netinet6/ip6_fastfwd.c
  projects/clang800-import/sys/netinet6/ip6_forward.c
  projects/clang800-import/sys/netinet6/ip6_input.c
  projects/clang800-import/sys/netinet6/ip6_output.c
  projects/clang800-import/sys/netinet6/ip6_var.h
  projects/clang800-import/sys/netpfil/ipfw/ip_fw2.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_dynamic.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_eaction.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_iface.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_nat.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_pfil.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_private.h
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_sockopt.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_table.c
  projects/clang800-import/sys/netpfil/ipfw/ip_fw_table_value.c
  projects/clang800-import/sys/netpfil/pf/pf_ioctl.c
  projects/clang800-import/sys/powerpc/conf/GENERIC64
  projects/clang800-import/sys/powerpc/conf/MPC85XX
  projects/clang800-import/sys/powerpc/conf/MPC85XXSPE
  projects/clang800-import/sys/powerpc/conf/QORIQ64
  projects/clang800-import/sys/powerpc/conf/dpaa/DPAA
  projects/clang800-import/sys/powerpc/powernv/opal.h
  projects/clang800-import/sys/powerpc/powernv/platform_powernv.c
  projects/clang800-import/sys/powerpc/pseries/xics.c
  projects/clang800-import/sys/sparc64/conf/GENERIC
  projects/clang800-import/sys/sys/elf_common.h
  projects/clang800-import/sys/sys/mbuf.h
  projects/clang800-import/sys/sys/sysproto.h
  projects/clang800-import/sys/teken/teken.c
  projects/clang800-import/sys/vm/uma_core.c
  projects/clang800-import/sys/x86/x86/nexus.c
  projects/clang800-import/sys/x86/xen/hvm.c
  projects/clang800-import/sys/x86/xen/xen_intr.c
  projects/clang800-import/sys/xen/hvm.h
  projects/clang800-import/usr.bin/elfdump/elfdump.c
  projects/clang800-import/usr.bin/shar/shar.1
  projects/clang800-import/usr.bin/xinstall/tests/install_test.sh
  projects/clang800-import/usr.bin/xinstall/xinstall.c
  projects/clang800-import/usr.sbin/bluetooth/sdpd/Makefile
  projects/clang800-import/usr.sbin/bluetooth/sdpd/profile.c
  projects/clang800-import/usr.sbin/freebsd-update/freebsd-update.sh
  projects/clang800-import/usr.sbin/ndiscvt/inf.c
  projects/clang800-import/usr.sbin/ndiscvt/ndiscvt.c
  projects/clang800-import/usr.sbin/rpc.statd/file.c
Directory Properties:
  projects/clang800-import/   (props changed)
  projects/clang800-import/contrib/elftoolchain/   (props changed)
  projects/clang800-import/contrib/ipfilter/   (props changed)
  projects/clang800-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang800-import/sys/contrib/ipfilter/   (props changed)

Modified: projects/clang800-import/ObsoleteFiles.inc
==============================================================================
--- projects/clang800-import/ObsoleteFiles.inc	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/ObsoleteFiles.inc	Sun Feb  3 11:41:43 2019	(r343712)
@@ -190,6 +190,12 @@ OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt
 OLD_DIRS+=usr/lib/clang/7.0.1/lib/freebsd
 OLD_DIRS+=usr/lib/clang/7.0.1/lib
 OLD_DIRS+=usr/lib/clang/7.0.1
+# 20190131: pfil(9) changed
+OLD_FILES+=usr/share/man/man9/pfil_hook_get.9
+OLD_FILES+=usr/share/man/man9/pfil_rlock.9
+OLD_FILES+=usr/share/man/man9/pfil_runlock.9
+OLD_FILES+=usr/share/man/man9/pfil_wlock.9
+OLD_FILES+=usr/share/man/man9/pfil_wunlock.9
 # 20190126: adv(4) / adw(4) removal
 OLD_FILES+=usr/share/man/man4/adv.4.gz
 OLD_FILES+=usr/share/man/man4/adw.4.gz

Modified: projects/clang800-import/UPDATING
==============================================================================
--- projects/clang800-import/UPDATING	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/UPDATING	Sun Feb  3 11:41:43 2019	(r343712)
@@ -37,6 +37,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
 	prerequisites and upgrading, if you are not already using clang 3.5.0
 	or higher.
 
+20190131:
+	Iflib is no longer unconditionally compiled into the kernel.  Drivers
+	using iflib and statically compiled into the kernel, now require
+	the 'device iflib' config option.  For the same drivers loaded as
+	modules on kernels not having 'device iflib', the iflib.ko module
+	is loaded automatically.
+
 20181230:
 	r342635 changes the way efibootmgr(8) works by requiring users to add
 	the -b (bootnum) parameter for commands where the bootnum was previously

Modified: projects/clang800-import/contrib/elftoolchain/readelf/readelf.c
==============================================================================
--- projects/clang800-import/contrib/elftoolchain/readelf/readelf.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/elftoolchain/readelf/readelf.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -220,6 +220,11 @@ struct mips_option {
 	const char *desc;
 };
 
+struct flag_desc {
+	uint64_t flag;
+	const char *desc;
+};
+
 static void add_dumpop(struct readelf *re, size_t si, const char *sn, int op,
     int t);
 static const char *aeabi_adv_simd_arch(uint64_t simd);
@@ -293,6 +298,7 @@ static void dump_dwarf_ranges_foreach(struct readelf *
 static void dump_dwarf_str(struct readelf *re);
 static void dump_eflags(struct readelf *re, uint64_t e_flags);
 static void dump_elf(struct readelf *re);
+static void dump_flags(struct flag_desc *fd, uint64_t flags);
 static void dump_dyn_val(struct readelf *re, GElf_Dyn *dyn, uint32_t stab);
 static void dump_dynamic(struct readelf *re);
 static void dump_liblist(struct readelf *re);
@@ -307,6 +313,8 @@ static void dump_mips_specific_info(struct readelf *re
 static void dump_notes(struct readelf *re);
 static void dump_notes_content(struct readelf *re, const char *buf, size_t sz,
     off_t off);
+static void dump_notes_data(const char *name, uint32_t type, const char *buf,
+    size_t sz);
 static void dump_svr4_hash(struct section *s);
 static void dump_svr4_hash64(struct readelf *re, struct section *s);
 static void dump_gnu_hash(struct readelf *re, struct section *s);
@@ -2721,6 +2729,58 @@ dump_arch_dyn_val(struct readelf *re, GElf_Dyn *dyn)
 }
 
 static void
+dump_flags(struct flag_desc *desc, uint64_t val)
+{
+	struct flag_desc *fd;
+
+	for (fd = desc; fd->flag != 0; fd++) {
+		if (val & fd->flag) {
+			val &= ~fd->flag;
+			printf(" %s", fd->desc);
+		}
+	}
+	if (val != 0)
+		printf(" unknown (0x%jx)", (uintmax_t)val);
+}
+
+static struct flag_desc dt_flags[] = {
+	{ DF_ORIGIN,		"ORIGIN" },
+	{ DF_SYMBOLIC,		"SYMBOLIC" },
+	{ DF_TEXTREL,		"TEXTREL" },
+	{ DF_BIND_NOW,		"BIND_NOW" },
+	{ DF_STATIC_TLS,	"STATIC_TLS" },
+	{ 0, NULL }
+};
+
+static struct flag_desc dt_flags_1[] = {
+	{ DF_1_BIND_NOW,	"NOW" },
+	{ DF_1_GLOBAL,		"GLOBAL" },
+	{ 0x4,			"GROUP" },
+	{ DF_1_NODELETE,	"NODELETE" },
+	{ DF_1_LOADFLTR,	"LOADFLTR" },
+	{ 0x20,			"INITFIRST" },
+	{ DF_1_NOOPEN,		"NOOPEN" },
+	{ DF_1_ORIGIN,		"ORIGIN" },
+	{ 0x100,		"DIRECT" },
+	{ DF_1_INTERPOSE,	"INTERPOSE" },
+	{ DF_1_NODEFLIB,	"NODEFLIB" },
+	{ 0x1000,		"NODUMP" },
+	{ 0x2000,		"CONFALT" },
+	{ 0x4000,		"ENDFILTEE" },
+	{ 0x8000,		"DISPRELDNE" },
+	{ 0x10000,		"DISPRELPND" },
+	{ 0x20000,		"NODIRECT" },
+	{ 0x40000,		"IGNMULDEF" },
+	{ 0x80000,		"NOKSYMS" },
+	{ 0x100000,		"NOHDR" },
+	{ 0x200000,		"EDITED" },
+	{ 0x400000,		"NORELOC" },
+	{ 0x800000,		"SYMINTPOSE" },
+	{ 0x1000000,		"GLOBAUDIT" },
+	{ 0, NULL }
+};
+
+static void
 dump_dyn_val(struct readelf *re, GElf_Dyn *dyn, uint32_t stab)
 {
 	const char *name;
@@ -2804,6 +2864,12 @@ dump_dyn_val(struct readelf *re, GElf_Dyn *dyn, uint32
 	case DT_GNU_PRELINKED:
 		printf(" %s\n", timestamp(dyn->d_un.d_val));
 		break;
+	case DT_FLAGS:
+		dump_flags(dt_flags, dyn->d_un.d_val);
+		break;
+	case DT_FLAGS_1:
+		dump_flags(dt_flags_1, dyn->d_un.d_val);
+		break;
 	default:
 		printf("\n");
 	}
@@ -3422,7 +3488,54 @@ dump_notes(struct readelf *re)
 	}
 }
 
+static struct flag_desc note_feature_ctl_flags[] = {
+	{ NT_FREEBSD_FCTL_ASLR_DISABLE,		"ASLR_DISABLE" },
+	{ 0, NULL }
+};
+
 static void
+dump_notes_data(const char *name, uint32_t type, const char *buf, size_t sz)
+{
+	size_t i;
+	const uint32_t *ubuf;
+
+	/* Note data is at least 4-byte aligned. */
+	if (((uintptr_t)buf & 3) != 0) {
+		warnx("bad note data alignment");
+		goto unknown;
+	}
+	ubuf = (const uint32_t *)(const void *)buf;
+
+	if (strcmp(name, "FreeBSD") == 0) {
+		switch (type) {
+		case NT_FREEBSD_ABI_TAG:
+			if (sz != 4)
+				goto unknown;
+			printf("   ABI tag: %u\n", ubuf[0]);
+			return;
+		/* NT_FREEBSD_NOINIT_TAG carries no data, treat as unknown. */
+		case NT_FREEBSD_ARCH_TAG:
+			if (sz != 4)
+				goto unknown;
+			printf("   Arch tag: %x\n", ubuf[0]);
+			return;
+		case NT_FREEBSD_FEATURE_CTL:
+			if (sz != 4)
+				goto unknown;
+			printf("   Features:");
+			dump_flags(note_feature_ctl_flags, ubuf[0]);
+			printf("\n");
+			return;
+		}
+	}
+unknown:
+	printf("   description data:");
+	for (i = 0; i < sz; i++)
+		printf(" %02x", (unsigned char)buf[i]);
+	printf("\n");
+}
+
+static void
 dump_notes_content(struct readelf *re, const char *buf, size_t sz, off_t off)
 {
 	Elf_Note *note;
@@ -3438,7 +3551,9 @@ dump_notes_content(struct readelf *re, const char *buf
 			return;
 		}
 		note = (Elf_Note *)(uintptr_t) buf;
-		name = (char *)(uintptr_t)(note + 1);
+		buf += sizeof(Elf_Note);
+		name = buf;
+		buf += roundup2(note->n_namesz, 4);
 		/*
 		 * The name field is required to be nul-terminated, and
 		 * n_namesz includes the terminating nul in observed
@@ -3456,8 +3571,8 @@ dump_notes_content(struct readelf *re, const char *buf
 		printf("  %-13s %#010jx", name, (uintmax_t) note->n_descsz);
 		printf("      %s\n", note_type(name, re->ehdr.e_type,
 		    note->n_type));
-		buf += sizeof(Elf_Note) + roundup2(note->n_namesz, 4) +
-		    roundup2(note->n_descsz, 4);
+		dump_notes_data(name, note->n_type, buf, note->n_descsz);
+		buf += roundup2(note->n_descsz, 4);
 	}
 }
 

Modified: projects/clang800-import/contrib/ipfilter/arc4random.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/arc4random.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/arc4random.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -7,7 +7,7 @@
  *
  * Dan Moschuk
  */
-#if !defined(SOLARIS2) && !defined(__osf__)
+#if !defined(SOLARIS2)
 # include <sys/cdefs.h>
 #endif
 
@@ -16,26 +16,16 @@
 #ifdef __FreeBSD__
 # include <sys/kernel.h>
 #endif
-#if !defined(__osf__)
 # include <sys/random.h>
-#endif
 #ifdef __FreeBSD__
 # include <sys/libkern.h>
 #endif
 #include <sys/lock.h>
-#ifndef __osf__
 # include <sys/mutex.h>
-#endif
 #include <sys/time.h>
 
-#if defined(SOLARIS2) && (SOLARIS2 < 9)
-# include <netinet/in_systm.h>
-#endif
 #include <sys/socket.h>
 #include <net/if.h>
-#ifdef __osf__
-# include <net/route.h>
-#endif
 #include <netinet/in.h>
 #include <netinet/ip.h>
 #include "netinet/ip_compat.h"

Modified: projects/clang800-import/contrib/ipfilter/ip_dstlist.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ip_dstlist.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ip_dstlist.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -9,9 +9,6 @@
 # define        KERNEL	1
 # define        _KERNEL	1
 #endif
-#if defined(__osf__)
-# define _PROTO_NET_H_
-#endif
 #include <sys/errno.h>
 #include <sys/types.h>
 #include <sys/param.h>
@@ -21,9 +18,6 @@
 # include <stdlib.h>
 # include <string.h>
 # define _KERNEL
-# ifdef __OpenBSD__
-struct file;
-# endif
 # include <sys/uio.h>
 # undef _KERNEL
 #else
@@ -33,14 +27,12 @@ struct file;
 # endif
 #endif
 #include <sys/time.h>
-#if !defined(linux)
 # include <sys/protosw.h>
-#endif
 #include <sys/socket.h>
-#if defined(_KERNEL) && (!defined(__SVR4) && !defined(__svr4__))
+#if defined(_KERNEL) && !defined(__SVR4)
 # include <sys/mbuf.h>
 #endif
-#if defined(__SVR4) || defined(__svr4__)
+#if defined(__SVR4)
 # include <sys/filio.h>
 # include <sys/byteorder.h>
 # ifdef _KERNEL
@@ -49,7 +41,7 @@ struct file;
 # include <sys/stream.h>
 # include <sys/kmem.h>
 #endif
-#if defined(__FreeBSD_version) && (__FreeBSD_version >= 300000)
+#if defined(__FreeBSD_version)
 # include <sys/malloc.h>
 #endif
 

Modified: projects/clang800-import/contrib/ipfilter/ip_fil.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ip_fil.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ip_fil.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -25,24 +25,10 @@ struct	rtentry;
 
 static	void	ipf_setifpaddr __P((struct ifnet *, char *));
 void	init_ifp __P((void));
-#if defined(__sgi) && (IRIX < 60500)
 static int 	no_output __P((struct ifnet *, struct mbuf *,
-			       struct sockaddr *));
-static int	write_output __P((struct ifnet *, struct mbuf *,
-				  struct sockaddr *));
-#else
-# if TRU64 >= 1885
-static int 	no_output __P((struct ifnet *, struct mbuf *,
-			       struct sockaddr *, struct rtentry *, char *));
-static int	write_output __P((struct ifnet *, struct mbuf *,
-				  struct sockaddr *, struct rtentry *, char *));
-# else
-static int 	no_output __P((struct ifnet *, struct mbuf *,
 			       struct sockaddr *, struct rtentry *));
 static int	write_output __P((struct ifnet *, struct mbuf *,
 				  struct sockaddr *, struct rtentry *));
-# endif
-#endif
 
 struct ifaddr {
 	struct sockaddr_storage ifa_addr;
@@ -123,17 +109,8 @@ ipf_forgetifp(softc, ifp)
 
 
 static int
-#if defined(__sgi) && (IRIX < 60500)
-no_output(ifp, m, s)
-#else
-# if TRU64 >= 1885
-no_output (ifp, m, s, rt, cp)
-	char *cp;
-# else
 no_output(ifp, m, s, rt)
-# endif
 	struct rtentry *rt;
-#endif
 	struct ifnet *ifp;
 	struct mbuf *m;
 	struct sockaddr *s;
@@ -143,17 +120,8 @@ no_output(ifp, m, s, rt)
 
 
 static int
-#if defined(__sgi) && (IRIX < 60500)
-write_output(ifp, m, s)
-#else
-# if TRU64 >= 1885
-write_output (ifp, m, s, rt, cp)
-	char *cp;
-# else
 write_output(ifp, m, s, rt)
-# endif
 	struct rtentry *rt;
-#endif
 	struct ifnet *ifp;
 	struct mbuf *m;
 	struct sockaddr *s;
@@ -167,8 +135,7 @@ write_output(ifp, m, s, rt)
 	ip = MTOD(mb, ip_t *);
 
 #if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199606)) || \
-    (defined(OpenBSD) && (OpenBSD >= 199603)) || defined(linux) || \
-    (defined(__FreeBSD__) && (__FreeBSD_version >= 501113))
+    defined(__FreeBSD__)
 	sprintf(fname, "/tmp/%s", ifp->if_xname);
 #else
 	sprintf(fname, "/tmp/%s%d", ifp->if_name, ifp->if_unit);
@@ -189,42 +156,26 @@ ipf_setifpaddr(ifp, addr)
 	struct ifnet *ifp;
 	char *addr;
 {
-#ifdef __sgi
-	struct in_ifaddr *ifa;
-#else
 	struct ifaddr *ifa;
-#endif
 
-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__)
 	if (ifp->if_addrlist.tqh_first != NULL)
 #else
-# ifdef __sgi
-	if (ifp->in_ifaddr != NULL)
-# else
 	if (ifp->if_addrlist != NULL)
-# endif
 #endif
 		return;
 
 	ifa = (struct ifaddr *)malloc(sizeof(*ifa));
-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__)
 	ifp->if_addrlist.tqh_first = ifa;
 #else
-# ifdef __sgi
-	ifp->in_ifaddr = ifa;
-# else
 	ifp->if_addrlist = ifa;
-# endif
 #endif
 
 	if (ifa != NULL) {
 		struct sockaddr_in *sin;
 
-#ifdef __sgi
-		sin = (struct sockaddr_in *)&ifa->ia_addr;
-#else
 		sin = (struct sockaddr_in *)&ifa->ifa_addr;
-#endif
 #ifdef USE_INET6
 		if (index(addr, ':') != NULL) {
 			struct sockaddr_in6 *sin6;
@@ -263,8 +214,7 @@ get_unit(name, family)
 	struct ifnet *ifp, **ifpp, **old_ifneta;
 	char *addr;
 #if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199606)) || \
-    (defined(OpenBSD) && (OpenBSD >= 199603)) || defined(linux) || \
-    (defined(__FreeBSD__) && (__FreeBSD_version >= 501113))
+    defined(__FreeBSD__)
 
 	if (!*name)
 		return NULL;
@@ -333,12 +283,11 @@ get_unit(name, family)
 	}
 	ifp = ifneta[nifs - 1];
 
-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__)
 	TAILQ_INIT(&ifp->if_addrlist);
 #endif
 #if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199606)) || \
-    (defined(OpenBSD) && (OpenBSD >= 199603)) || defined(linux) || \
-    (defined(__FreeBSD__) && (__FreeBSD_version >= 501113))
+    defined(__FreeBSD__)
 	(void) strncpy(ifp->if_xname, name, sizeof(ifp->if_xname));
 #else
 	s = name + strlen(name) - 1;
@@ -375,8 +324,7 @@ get_ifname(ifp)
 {
 	static char ifname[LIFNAMSIZ];
 
-#if defined(__OpenBSD__) || defined(__NetBSD__) || defined(linux) || \
-    (defined(__FreeBSD__) && (__FreeBSD_version >= 501113))
+#if defined(__NetBSD__) || defined(__FreeBSD__)
 	sprintf(ifname, "%s", ifp->if_xname);
 #else
 	if (ifp->if_unit != -1)
@@ -397,8 +345,7 @@ init_ifp()
 	int fd;
 
 #if (defined(NetBSD) && (NetBSD <= 1991011) && (NetBSD >= 199606)) || \
-    (defined(OpenBSD) && (OpenBSD >= 199603)) || defined(linux) || \
-    (defined(__FreeBSD__) && (__FreeBSD_version >= 501113))
+    defined(__FreeBSD__)
 	for (ifpp = ifneta; ifpp && (ifp = *ifpp); ifpp++) {
 		ifp->if_output = (void *)write_output;
 		sprintf(fname, "/tmp/%s", ifp->if_xname);
@@ -717,20 +664,12 @@ ipf_ifpaddr(softc, v, atype, ifptr, inp, inpmask)
 	i6addr_t *inp, *inpmask;
 {
 	struct ifnet *ifp = ifptr;
-#ifdef __sgi
-	struct in_ifaddr *ifa;
-#else
 	struct ifaddr *ifa;
-#endif
 
-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__)
 	ifa = ifp->if_addrlist.tqh_first;
 #else
-# ifdef __sgi
-	ifa = (struct in_ifaddr *)ifp->in_ifaddr;
-# else
 	ifa = ifp->if_addrlist;
-# endif
 #endif
 	if (ifa != NULL) {
 		if (v == 4) {
@@ -738,11 +677,7 @@ ipf_ifpaddr(softc, v, atype, ifptr, inp, inpmask)
 
 			mask.sin_addr.s_addr = 0xffffffff;
 
-#ifdef __sgi
-			sin = (struct sockaddr_in *)&ifa->ia_addr;
-#else
 			sin = (struct sockaddr_in *)&ifa->ifa_addr;
-#endif
 
 			return ipf_ifpfillv4addr(atype, sin, &mask,
 						 &inp->in4, &inpmask->in4);

Modified: projects/clang800-import/contrib/ipfilter/ip_fil_compat.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ip_fil_compat.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ip_fil_compat.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -9,15 +9,12 @@
 # define        KERNEL	1
 # define        _KERNEL	1
 #endif
-#if defined(__osf__)
-# define _PROTO_NET_H_
-#endif
 #include <sys/param.h>
 #include <sys/errno.h>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <sys/file.h>
-#if __FreeBSD_version >= 220000 && defined(_KERNEL)
+#if defined(__FreeBSD_version) && defined(_KERNEL)
 # include <sys/fcntl.h>
 # include <sys/filio.h>
 #else
@@ -26,17 +23,10 @@
 #if !defined(_KERNEL)
 # include <string.h>
 # define _KERNEL
-# ifdef __OpenBSD__
-struct file;
-# endif
 # include <sys/uio.h>
 # undef _KERNEL
 #endif
 #include <sys/socket.h>
-#if (defined(__osf__) || defined(AIX) || defined(__hpux) || defined(__sgi)) && defined(_KERNEL)
-# include "radix_ipf_local.h"
-# define _RADIX_H_
-#endif
 #include <net/if.h>
 #if defined(__FreeBSD__)
 #  include <sys/cdefs.h>
@@ -44,7 +34,7 @@ struct file;
 #endif
 #if defined(_KERNEL)
 # include <sys/systm.h>
-# if !defined(__SVR4) && !defined(__svr4__)
+# if !defined(__SVR4)
 #  include <sys/mbuf.h>
 # endif
 #endif
@@ -348,9 +338,6 @@ typedef	struct	fr_info_4_1_32 {
 	void	*fin_qpi;
 	char	fin_ifname[LIFNAMSIZ];
 #endif
-#ifdef	__sgi
-	void	*fin_hbuf;
-#endif
 } fr_info_4_1_32_t;
 
 typedef struct  fr_info_4_1_24 {
@@ -389,9 +376,6 @@ typedef struct  fr_info_4_1_24 {
 	void    *fin_qpi;
 	char    fin_ifname[LIFNAMSIZ];
 #endif
-#ifdef  __sgi
-	void    *fin_hbuf;
-#endif
 } fr_info_4_1_24_t;
 
 typedef struct  fr_info_4_1_23 {
@@ -429,9 +413,6 @@ typedef struct  fr_info_4_1_23 {
 	void    *fin_qpi;
 	char    fin_ifname[LIFNAMSIZ];
 #endif
-#ifdef  __sgi
-	void    *fin_hbuf;
-#endif
 } fr_info_4_1_23_t;
 
 typedef struct  fr_info_4_1_11 {
@@ -468,9 +449,6 @@ typedef struct  fr_info_4_1_11 {
 	void    *fin_qpi;
 	char    fin_ifname[LIFNAMSIZ];
 #endif
-#ifdef  __sgi
-	void    *fin_hbuf;
-#endif
 } fr_info_4_1_11_t;
 
 /* ------------------------------------------------------------------------ */
@@ -2678,9 +2656,6 @@ fr_info_4_1_32_to_current(old, current)
 	fin->fin_qfm = old->fin_qfm;
 	fin->fin_qpi = old->fin_qpi;
 #endif
-#ifdef  __sgi
-	fin->fin_hbuf = old->fin_hbuf;
-#endif
 }
 
 
@@ -2719,9 +2694,6 @@ fr_info_4_1_24_to_current(old, current)
 	fin->fin_qfm = old->fin_qfm;
 	fin->fin_qpi = old->fin_qpi;
 #endif
-#ifdef  __sgi
-	fin->fin_hbuf = old->fin_hbuf;
-#endif
 }
 
 
@@ -2759,9 +2731,6 @@ fr_info_4_1_23_to_current(old, current)
 	fin->fin_qfm = old->fin_qfm;
 	fin->fin_qpi = old->fin_qpi;
 #endif
-#ifdef  __sgi
-	fin->fin_hbuf = fin->fin_hbuf;
-#endif
 }
 
 
@@ -2799,9 +2768,6 @@ fr_info_4_1_11_to_current(old, current)
 	fin->fin_qfm = old->fin_qfm;
 	fin->fin_qpi = old->fin_qpi;
 #endif
-#ifdef  __sgi
-	fin->fin_hbuf = fin->fin_hbuf;
-#endif
 }
 
 
@@ -4078,9 +4044,6 @@ fr_info_current_to_4_1_24(current, old)
 	old->fin_qpi = fin->fin_qpi;
 	old->fin_ifname[0] = '\0';
 #endif
-#ifdef  __sgi
-	old->fin_hbuf = fin->fin_hbuf;
-#endif
 }
 
 
@@ -4121,9 +4084,6 @@ fr_info_current_to_4_1_23(current, old)
 	old->fin_qpi = fin->fin_qpi;
 	old->fin_ifname[0] = '\0';
 #endif
-#ifdef  __sgi
-	old->fin_hbuf = fin->fin_hbuf;
-#endif
 }
 
 
@@ -4163,9 +4123,6 @@ fr_info_current_to_4_1_11(current, old)
 	old->fin_qfm = fin->fin_qfm;
 	old->fin_qpi = fin->fin_qpi;
 	old->fin_ifname[0] = '\0';
-#endif
-#ifdef  __sgi
-	old->fin_hbuf = fin->fin_hbuf;
 #endif
 }
 

Modified: projects/clang800-import/contrib/ipfilter/ipf.h
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipf.h	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipf.h	Sun Feb  3 11:41:43 2019	(r343712)
@@ -12,11 +12,6 @@
 #ifndef	__IPF_H__
 #define	__IPF_H__
 
-#if defined(__osf__)
-# define radix_mask ipf_radix_mask
-# define radix_node ipf_radix_node
-# define radix_node_head ipf_radix_node_head
-#endif
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -31,9 +26,6 @@
 # define _KERNEL
 # define KERNEL
 #endif
-#ifdef __OpenBSD__
-struct file;
-#endif
 #include <sys/uio.h>
 #ifdef ADD_KERNEL
 # undef _KERNEL
@@ -188,9 +180,8 @@ typedef	struct	proxyrule {
 } proxyrule_t;
 
 
-#if defined(__NetBSD__) || defined(__OpenBSD__) || \
-        (_BSDI_VERSION >= 199701) || (__FreeBSD_version >= 300000) || \
-	SOLARIS || defined(__sgi) || defined(__osf__) || defined(linux)
+#if defined(__NetBSD__) || defined(__FreeBSD_version) || \
+	SOLARIS
 # include <stdarg.h>
 typedef	int	(* ioctlfunc_t) __P((int, ioctlcmd_t, ...));
 #else
@@ -199,13 +190,6 @@ typedef	int	(* ioctlfunc_t) __P((dev_t, ioctlcmd_t, vo
 typedef	int	(* addfunc_t) __P((int, ioctlfunc_t, void *));
 typedef	int	(* copyfunc_t) __P((void *, void *, size_t));
 
-
-/*
- * SunOS4
- */
-#if defined(sun) && !defined(__SVR4) && !defined(__svr4__)
-extern	int	ioctl __P((int, int, void *));
-#endif
 
 extern	char	thishost[];
 extern	char	flagset[];

Modified: projects/clang800-import/contrib/ipfilter/ipsend/44arp.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/44arp.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/44arp.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -10,9 +10,7 @@
 #include <net/if.h>
 #include <net/if_dl.h>
 #include <net/if_types.h>
-#ifndef __osf__
 # include <net/route.h>
-#endif
 #include <netinet/in.h>
 #include <netinet/if_ether.h>
 #include <arpa/inet.h>

Modified: projects/clang800-import/contrib/ipfilter/ipsend/arp.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/arp.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/arp.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -88,7 +88,6 @@ int	arp(ip, ether)
 	sin = (struct sockaddr_in *)&ar.arp_pa;
 	sin->sin_family = AF_INET;
 	bcopy(ip, (char *)&sin->sin_addr.s_addr, 4);
-#ifndef	hpux
 	if ((hp = gethostbyaddr(ip, 4, AF_INET)))
 # if SOLARIS && (SOLARIS2 >= 10)
 		if (!(ether_hostton(hp->h_name, (struct ether_addr *)ether)))
@@ -96,7 +95,6 @@ int	arp(ip, ether)
 		if (!(ether_hostton(hp->h_name, ether)))
 # endif
 			goto savearp;
-#endif
 
 	if (sfd == -1)
 		if ((sfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)

Modified: projects/clang800-import/contrib/ipfilter/ipsend/dlcommon.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/dlcommon.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/dlcommon.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -20,11 +20,7 @@ typedef	unsigned long	ulong;
 #include	<sys/types.h>
 #include	<sys/stream.h>
 #include	<sys/stropts.h>
-#ifdef __osf__
-# include	<sys/dlpihdr.h>
-#else
 # include	<sys/dlpi.h>
-#endif
 #include	<sys/signal.h>
 #include	<stdio.h>
 #include	<string.h>

Modified: projects/clang800-import/contrib/ipfilter/ipsend/ip.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/ip.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/ip.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -17,11 +17,9 @@ static const char rcsid[] = "@(#)$Id$";
 #include <netinet/in.h>
 #include <netinet/ip.h>
 #include <sys/param.h>
-#ifndef	linux
 # include <net/route.h>
 # include <netinet/if_ether.h>
 # include <netinet/ip_var.h>
-#endif
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>

Modified: projects/clang800-import/contrib/ipfilter/ipsend/ipresend.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/ipresend.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/ipresend.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -18,9 +18,7 @@ static const char rcsid[] = "@(#)$Id$";
 #include <arpa/inet.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
-#ifndef	linux
 #include <netinet/ip_var.h>
-#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -37,9 +35,6 @@ extern	struct	ipread	pcap, iphex, iptext;
 
 int	opts = 0;
 #ifndef	DEFAULT_DEVICE
-# ifdef	linux
-char	default_device[] = "eth0";
-# else
 #  ifdef	sun
 char	default_device[] = "le0";
 #  else
@@ -49,15 +44,10 @@ char	default_device[] = "ln0";
 #    ifdef	__bsdi__
 char	default_device[] = "ef0";
 #    else
-#     ifdef	__sgi
-char	default_device[] = "ec0";
-#     else
 char	default_device[] = "lan0";
-#     endif
 #    endif
 #   endif
 #  endif
-# endif
 #else
 char	default_device[] = DEFAULT_DEVICE;
 #endif

Modified: projects/clang800-import/contrib/ipfilter/ipsend/ipsend.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/ipsend.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/ipsend.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -21,14 +21,10 @@ static const char rcsid[] = "@(#)$Id$";
 #include <netdb.h>
 #include <string.h>
 #include <netinet/ip.h>
-#ifndef	linux
 # include <netinet/ip_var.h>
-#endif
 #include "ipsend.h"
 #include "ipf.h"
-#ifndef	linux
 # include <netinet/udp_var.h>
-#endif
 
 
 extern	char	*optarg;
@@ -37,27 +33,15 @@ extern	void	iplang __P((FILE *));
 
 char	options[68];
 int	opts;
-#ifdef linux
-char	default_device[] = "eth0";
-#else
 # ifdef ultrix
 char	default_device[] = "ln0";
 # else
 #  ifdef __bsdi__
 char	default_device[] = "ef0";
 #  else
-#   ifdef __sgi
-char	default_device[] = "ec0";
-#   else
-#    ifdef __hpux
-char	default_device[] = "lan0";
-#    else
 char	default_device[] = "le0";
-#    endif /* __hpux */
-#   endif /* __sgi */
 #  endif /* __bsdi__ */
 # endif /* ultrix */
-#endif /* linux */
 
 
 static	void	usage __P((char *));

Modified: projects/clang800-import/contrib/ipfilter/ipsend/ipsend.h
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/ipsend.h	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/ipsend.h	Sun Feb  3 11:41:43 2019	(r343712)
@@ -26,9 +26,6 @@
 #include <net/if.h>
 
 #include "ipf.h"
-#ifdef	linux
-#include <linux/sockios.h>
-#endif
 /* XXX:	The following is needed by tcpip.h */
 #include <netinet/ip_var.h>
 #include "netinet/tcpip.h"
@@ -49,11 +46,7 @@ extern	u_32_t	buildopts __P((char *, char *, int));
 extern	int	addipopt __P((char *, struct ipopt_names *, int, char *));
 extern	int	initdevice __P((char *, int));
 extern	int	sendip __P((int, char *, int));
-#ifdef	linux
-extern	struct	sock	*find_tcp __P((int, struct tcpiphdr *));
-#else
 extern	struct	tcpcb	*find_tcp __P((int, struct tcpiphdr *));
-#endif
 extern	int	ip_resend __P((char *, int, struct ipread *, struct in_addr, char *));
 
 extern	void	ip_test1 __P((char *, int, ip_t *, struct in_addr, int));

Modified: projects/clang800-import/contrib/ipfilter/ipsend/ipsopt.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/ipsopt.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/ipsopt.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -20,9 +20,7 @@ static const char rcsid[] = "@(#)$Id$";
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#ifndef	linux
 #include <netinet/ip_var.h>
-#endif
 #include <netinet/tcp.h>
 #include <arpa/inet.h>
 #include "ipsend.h"

Modified: projects/clang800-import/contrib/ipfilter/ipsend/iptest.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/iptest.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/iptest.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -18,12 +18,7 @@ static const char rcsid[] = "@(#)$Id$";
 #include <arpa/inet.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
-#ifndef	linux
 #include <netinet/ip_var.h>
-#endif
-#ifdef	linux
-#include <linux/sockios.h>
-#endif
 #include <stdio.h>
 #include <netdb.h>
 #include <unistd.h>
@@ -36,9 +31,6 @@ extern	char	*optarg;
 extern	int	optind;
 
 char	options[68];
-#ifdef	linux
-char	default_device[] = "eth0";
-#else
 # ifdef	sun
 char	default_device[] = "le0";
 # else
@@ -48,15 +40,10 @@ char	default_device[] = "ln0";
 #   ifdef	__bsdi__
 char	default_device[] = "ef0";
 #   else
-#    ifdef	__sgi
-char	default_device[] = "ec0";
-#    else
 char	default_device[] = "lan0";
-#    endif
 #   endif
 #  endif
 # endif
-#endif
 
 static	void	usage __P((char *));
 int	main __P((int, char **));

Modified: projects/clang800-import/contrib/ipfilter/ipsend/iptests.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/iptests.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/iptests.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -21,7 +21,6 @@ static const char rcsid[] = "@(#)$Id$";
 typedef	int	boolean_t;
 #endif
 #include <sys/time.h>
-#if !defined(__osf__)
 # ifdef __NetBSD__
 #  include <machine/lock.h>
 #  include <machine/mutex.h>
@@ -37,7 +36,6 @@ typedef	int	boolean_t;
 # endif
 # undef  _KERNEL
 # undef  KERNEL
-#endif
 #if !defined(solaris) && !defined(linux) && !defined(__sgi)
 # include <nlist.h>
 # include <sys/user.h>
@@ -66,24 +64,13 @@ typedef	int	boolean_t;
 #endif
 #include <netinet/in_systm.h>
 #include <sys/socket.h>
-#ifdef __hpux
-# define _NET_ROUTE_INCLUDED
-#endif
 #include <net/if.h>
-#if defined(linux) && (LINUX >= 0200)
-# include <asm/atomic.h>
-#endif
-#if !defined(linux)
 # if defined(__FreeBSD__)
 #  include "radix_ipf.h"
 # endif
 # if !defined(solaris)
 #  include <net/route.h>
 # endif
-#else
-# define __KERNEL__	/* because there's a macro not wrapped by this */
-# include <net/route.h>	/* in this file :-/ */
-#endif
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netinet/ip.h>
@@ -94,20 +81,13 @@ typedef	int	boolean_t;
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
-#ifdef __hpux
-# undef _NET_ROUTE_INCLUDED
-#endif
-#if !defined(linux)
 # include <netinet/ip_var.h>
 # if !defined(__hpux) && !defined(solaris)
 #  include <netinet/in_pcb.h>
 # endif
-#endif
 #include "ipsend.h"
-#if !defined(linux) && !defined(__hpux)
 # include <netinet/tcp_timer.h>
 # include <netinet/tcp_var.h>
-#endif
 #if defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106000000)
 # define USE_NANOSLEEP
 #endif
@@ -951,9 +931,7 @@ void	ip_test5(dev, mtu, ip, gwip, ptest)
 	int	nfd, i;
 
 	t = (tcphdr_t *)((char *)ip + (IP_HL(ip) << 2));
-#if !defined(linux) && !defined(__osf__)
 	t->th_x2 = 0;
-#endif
 	TCP_OFF_A(t, 0);
 	t->th_sport = htons(1);
 	t->th_dport = htons(1);

Modified: projects/clang800-import/contrib/ipfilter/ipsend/resend.c
==============================================================================
--- projects/clang800-import/contrib/ipfilter/ipsend/resend.c	Sun Feb  3 11:07:40 2019	(r343711)
+++ projects/clang800-import/contrib/ipfilter/ipsend/resend.c	Sun Feb  3 11:41:43 2019	(r343712)
@@ -19,10 +19,8 @@ static const char rcsid[] = "@(#)$Id$";
 #include <arpa/inet.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
-#ifndef	linux
 # include <netinet/ip_var.h>

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

From owner-svn-src-projects@freebsd.org  Mon Feb  4 17:53:30 2019
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:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id AE9F714AB22C
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  4 Feb 2019 17:53:30 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 4DFDF6A634;
 Mon,  4 Feb 2019 17:53:30 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 33CB397C4;
 Mon,  4 Feb 2019 17:53:30 +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 x14HrU2d077877;
 Mon, 4 Feb 2019 17:53:30 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x14HrUu1077876;
 Mon, 4 Feb 2019 17:53:30 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201902041753.x14HrUu1077876@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, 4 Feb 2019 17:53:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r343747 - projects/clang800-import/sys/i386/i386
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: projects/clang800-import/sys/i386/i386
X-SVN-Commit-Revision: 343747
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4DFDF6A634
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.97 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_SHORT(-0.97)[-0.971,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-1.00)[-1.000,0]
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.29
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, 04 Feb 2019 17:53:30 -0000

Author: dim
Date: Mon Feb  4 17:53:29 2019
New Revision: 343747
URL: https://svnweb.freebsd.org/changeset/base/343747

Log:
  Use NLDT to get number of LDTs on i386
  
  Compiling a GENERIC kernel for i386 with clang 8.0 results in the
  following warning:
  
  /usr/src/sys/i386/i386/sys_machdep.c:542:40: error: 'sizeof ((ldt))' will return the size of the pointer, not the array itself [-Werror,-Wsizeof-pointer-div]
          nldt = pldt != NULL ? pldt->ldt_len : nitems(ldt);
                                                ^~~~~~~~~~~
  /usr/src/sys/sys/param.h:299:32: note: expanded from macro 'nitems'
  #define nitems(x)       (sizeof((x)) / sizeof((x)[0]))
                           ~~~~~~~~~~~ ^
  
  Indeed, 'ldt' is declared as 'union descriptor *', so nitems() is not
  the right way to determine the number of LDTs.  Instead, the NLDT define
  from sys/x86/include/segments.h should be used.
  
  Reviewed by:	kib
  MFC after:	3 days
  Differential Revision: https://reviews.freebsd.org/D19074

Modified:
  projects/clang800-import/sys/i386/i386/sys_machdep.c

Modified: projects/clang800-import/sys/i386/i386/sys_machdep.c
==============================================================================
--- projects/clang800-import/sys/i386/i386/sys_machdep.c	Mon Feb  4 16:55:24 2019	(r343746)
+++ projects/clang800-import/sys/i386/i386/sys_machdep.c	Mon Feb  4 17:53:29 2019	(r343747)
@@ -539,7 +539,7 @@ i386_get_ldt(struct thread *td, struct i386_ldt_args *
 	data = malloc(num * sizeof(union descriptor), M_TEMP, M_WAITOK);
 	mtx_lock_spin(&dt_lock);
 	pldt = td->td_proc->p_md.md_ldt;
-	nldt = pldt != NULL ? pldt->ldt_len : nitems(ldt);
+	nldt = pldt != NULL ? pldt->ldt_len : NLDT;
 	if (uap->start >= nldt) {
 		num = 0;
 	} else {

From owner-svn-src-projects@freebsd.org  Tue Feb  5 19:48:32 2019
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:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3789814CE9BB
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue,  5 Feb 2019 19:48:32 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id C74758E8AE;
 Tue,  5 Feb 2019 19:48:31 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B562A228F4;
 Tue,  5 Feb 2019 19:48:31 +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 x15JmVjF000745;
 Tue, 5 Feb 2019 19:48:31 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x15JmPDM000710;
 Tue, 5 Feb 2019 19:48:25 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201902051948.x15JmPDM000710@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, 5 Feb 2019 19:48:25 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r343806 - in projects/clang800-import:
 contrib/llvm/include/llvm/Support contrib/llvm/include/llvm/Transforms/Utils
 contrib/llvm/lib/CodeGen contrib/llvm/lib/CodeGen/AsmPrinter contrib/...
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: in projects/clang800-import:
 contrib/llvm/include/llvm/Support contrib/llvm/include/llvm/Transforms/Utils
 contrib/llvm/lib/CodeGen contrib/llvm/lib/CodeGen/AsmPrinter
 contrib/llvm/lib/CodeGen/Selectio...
X-SVN-Commit-Revision: 343806
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: C74758E8AE
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.97 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_SHORT(-0.98)[-0.976,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
 NEURAL_HAM_LONG(-1.00)[-1.000,0]
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.29
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, 05 Feb 2019 19:48:32 -0000

Author: dim
Date: Tue Feb  5 19:48:24 2019
New Revision: 343806
URL: https://svnweb.freebsd.org/changeset/base/343806

Log:
  Merge llvm, clang, compiler-rt, libc++, lld, and lldb release_80 branch
  r353167, resolve conflicts, and bump version numbers.

Modified:
  projects/clang800-import/contrib/llvm/include/llvm/Support/JSON.h
  projects/clang800-import/contrib/llvm/include/llvm/Transforms/Utils/FunctionImportUtils.h
  projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  projects/clang800-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
  projects/clang800-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  projects/clang800-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
  projects/clang800-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
  projects/clang800-import/contrib/llvm/lib/Support/JSON.cpp
  projects/clang800-import/contrib/llvm/lib/Target/AArch64/AArch64SpeculationHardening.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMipsInstrInfo.td
  projects/clang800-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.h
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td
  projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp
  projects/clang800-import/contrib/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
  projects/clang800-import/contrib/llvm/lib/Target/X86/X86InsertPrefetch.cpp
  projects/clang800-import/contrib/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp
  projects/clang800-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAArch64.def
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Basic/Features.def
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Basic/FileManager.h
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang800-import/contrib/llvm/tools/clang/include/clang/Tooling/ArgumentsAdjusters.h
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/FileManager.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/Targets/AArch64.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/Targets/ARM.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/Targets/OSTargets.h
  projects/clang800-import/contrib/llvm/tools/clang/lib/Basic/Targets/SPIR.h
  projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/NetBSD.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h
  projects/clang800-import/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
  projects/clang800-import/contrib/llvm/tools/clang/lib/Tooling/ArgumentsAdjusters.cpp
  projects/clang800-import/contrib/llvm/tools/lld/COFF/Chunks.cpp
  projects/clang800-import/contrib/llvm/tools/lld/COFF/Chunks.h
  projects/clang800-import/contrib/llvm/tools/lld/COFF/DLL.cpp
  projects/clang800-import/contrib/llvm/tools/lld/COFF/ICF.cpp
  projects/clang800-import/contrib/llvm/tools/lld/COFF/Writer.cpp
  projects/clang800-import/contrib/llvm/tools/lld/ELF/ICF.cpp
  projects/clang800-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
  projects/clang800-import/contrib/llvm/tools/lld/ELF/InputFiles.h
  projects/clang800-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
  projects/clang800-import/contrib/llvm/tools/lld/docs/ReleaseNotes.rst
  projects/clang800-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang800-import/lib/clang/include/lld/Common/Version.inc
  projects/clang800-import/lib/clang/include/llvm/Support/VCSRevision.h
Directory Properties:
  projects/clang800-import/contrib/compiler-rt/   (props changed)
  projects/clang800-import/contrib/libc++/   (props changed)
  projects/clang800-import/contrib/llvm/   (props changed)
  projects/clang800-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang800-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang800-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang800-import/contrib/llvm/include/llvm/Support/JSON.h
==============================================================================
--- projects/clang800-import/contrib/llvm/include/llvm/Support/JSON.h	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/include/llvm/Support/JSON.h	Tue Feb  5 19:48:24 2019	(r343806)
@@ -481,6 +481,7 @@ class Value { (private)
   mutable llvm::AlignedCharArrayUnion<bool, double, int64_t, llvm::StringRef,
                                       std::string, json::Array, json::Object>
       Union;
+  friend bool operator==(const Value &, const Value &);
 };
 
 bool operator==(const Value &, const Value &);

Modified: projects/clang800-import/contrib/llvm/include/llvm/Transforms/Utils/FunctionImportUtils.h
==============================================================================
--- projects/clang800-import/contrib/llvm/include/llvm/Transforms/Utils/FunctionImportUtils.h	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/include/llvm/Transforms/Utils/FunctionImportUtils.h	Tue Feb  5 19:48:24 2019	(r343806)
@@ -44,6 +44,11 @@ class FunctionImportGlobalProcessing {
   /// to promote any non-renamable values.
   SmallPtrSet<GlobalValue *, 8> Used;
 
+  /// Keep track of any COMDATs that require renaming (because COMDAT
+  /// leader was promoted and renamed). Maps from original COMDAT to one
+  /// with new name.
+  DenseMap<const Comdat *, Comdat *> RenamedComdats;
+
   /// Check if we should promote the given local value to global scope.
   bool shouldPromoteLocalToGlobal(const GlobalValue *SGV);
 

Modified: projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -1836,7 +1836,10 @@ TypeIndex CodeViewDebug::lowerTypeMemberFunction(const
 
   unsigned Index = 0;
   SmallVector<TypeIndex, 8> ArgTypeIndices;
-  TypeIndex ReturnTypeIndex = getTypeIndex(ReturnAndArgs[Index++]);
+  TypeIndex ReturnTypeIndex = TypeIndex::Void();
+  if (ReturnAndArgs.size() > Index) {
+    ReturnTypeIndex = getTypeIndex(ReturnAndArgs[Index++]);
+  }
 
   // If the first argument is a pointer type and this isn't a static method,
   // treat it as the special 'this' parameter, which is encoded separately from

Modified: projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -1956,8 +1956,10 @@ void DebugLocEntry::finalize(const AsmPrinter &AP,
 void DwarfDebug::emitDebugLocEntryLocation(const DebugLocStream::Entry &Entry) {
   // Emit the size.
   Asm->OutStreamer->AddComment("Loc expr size");
-  Asm->emitInt16(DebugLocs.getBytes(Entry).size());
-
+  if (getDwarfVersion() >= 5)
+    Asm->EmitULEB128(DebugLocs.getBytes(Entry).size());
+  else
+    Asm->emitInt16(DebugLocs.getBytes(Entry).size());
   // Emit the entry.
   APByteStreamer Streamer(*Asm);
   emitDebugLocEntry(Streamer, Entry);

Modified: projects/clang800-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -225,12 +225,13 @@ void MachineInstr::addOperand(MachineFunction &MF, con
   }
 
 #ifndef NDEBUG
-  bool isMetaDataOp = Op.getType() == MachineOperand::MO_Metadata;
+  bool isDebugOp = Op.getType() == MachineOperand::MO_Metadata ||
+                   Op.getType() == MachineOperand::MO_MCSymbol;
   // OpNo now points as the desired insertion point.  Unless this is a variadic
   // instruction, only implicit regs are allowed beyond MCID->getNumOperands().
   // RegMask operands go between the explicit and implicit operands.
   assert((isImpReg || Op.isRegMask() || MCID->isVariadic() ||
-          OpNo < MCID->getNumOperands() || isMetaDataOp) &&
+          OpNo < MCID->getNumOperands() || isDebugOp) &&
          "Trying to add an operand to a machine instr that is already done!");
 #endif
 

Modified: projects/clang800-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -16214,23 +16214,29 @@ static SDValue reduceBuildVecToShuffleWithZero(SDNode 
   // The build vector contains some number of undef elements and exactly
   // one other element. That other element must be a zero-extended scalar
   // extracted from a vector at a constant index to turn this into a shuffle.
+  // Also, require that the build vector does not implicitly truncate/extend
+  // its elements.
   // TODO: This could be enhanced to allow ANY_EXTEND as well as ZERO_EXTEND.
+  EVT VT = BV->getValueType(0);
   SDValue Zext = BV->getOperand(ZextElt);
   if (Zext.getOpcode() != ISD::ZERO_EXTEND || !Zext.hasOneUse() ||
       Zext.getOperand(0).getOpcode() != ISD::EXTRACT_VECTOR_ELT ||
-      !isa<ConstantSDNode>(Zext.getOperand(0).getOperand(1)))
+      !isa<ConstantSDNode>(Zext.getOperand(0).getOperand(1)) ||
+      Zext.getValueSizeInBits() != VT.getScalarSizeInBits())
     return SDValue();
 
-  // The zero-extend must be a multiple of the source size.
+  // The zero-extend must be a multiple of the source size, and we must be
+  // building a vector of the same size as the source of the extract element.
   SDValue Extract = Zext.getOperand(0);
   unsigned DestSize = Zext.getValueSizeInBits();
   unsigned SrcSize = Extract.getValueSizeInBits();
-  if (DestSize % SrcSize != 0)
+  if (DestSize % SrcSize != 0 ||
+      Extract.getOperand(0).getValueSizeInBits() != VT.getSizeInBits())
     return SDValue();
 
   // Create a shuffle mask that will combine the extracted element with zeros
   // and undefs.
-  int ZextRatio =  DestSize / SrcSize;
+  int ZextRatio = DestSize / SrcSize;
   int NumMaskElts = NumBVOps * ZextRatio;
   SmallVector<int, 32> ShufMask(NumMaskElts, -1);
   for (int i = 0; i != NumMaskElts; ++i) {
@@ -16260,7 +16266,7 @@ static SDValue reduceBuildVecToShuffleWithZero(SDNode 
   SDValue ZeroVec = DAG.getConstant(0, DL, VecVT);
   SDValue Shuf = DAG.getVectorShuffle(VecVT, DL, Extract.getOperand(0), ZeroVec,
                                       ShufMask);
-  return DAG.getBitcast(BV->getValueType(0), Shuf);
+  return DAG.getBitcast(VT, Shuf);
 }
 
 // Check to see if this is a BUILD_VECTOR of a bunch of EXTRACT_VECTOR_ELT

Modified: projects/clang800-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -184,7 +184,8 @@ DWARFDebugLoclists::parseOneLocationList(DataExtractor
     }
 
     if (Kind != dwarf::DW_LLE_base_address) {
-      unsigned Bytes = Data.getU16(Offset);
+      unsigned Bytes =
+          Version >= 5 ? Data.getULEB128(Offset) : Data.getU16(Offset);
       // A single location description describing the location of the object...
       StringRef str = Data.getData().substr(*Offset, Bytes);
       *Offset += Bytes;

Modified: projects/clang800-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/IR/AutoUpgrade.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/IR/AutoUpgrade.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -469,6 +469,11 @@ static bool UpgradeX86IntrinsicFunction(Function *F, S
     }
   }
 
+  if (Name == "seh.recoverfp") {
+    NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::eh_recoverfp);
+    return true;
+  }
+
   return false;
 }
 
@@ -542,10 +547,6 @@ static bool UpgradeIntrinsicFunction1(Function *F, Fun
     }
     if (Name == "aarch64.thread.pointer" || Name == "arm.thread.pointer") {
       NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::thread_pointer);
-      return true;
-    }
-    if (Name == "x86.seh.recoverfp") {
-      NewFn = Intrinsic::getDeclaration(F->getParent(), Intrinsic::eh_recoverfp);
       return true;
     }
     break;

Modified: projects/clang800-import/contrib/llvm/lib/Support/JSON.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Support/JSON.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Support/JSON.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -182,6 +182,12 @@ bool operator==(const Value &L, const Value &R) {
   case Value::Boolean:
     return *L.getAsBoolean() == *R.getAsBoolean();
   case Value::Number:
+    // Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=323
+    // The same integer must convert to the same double, per the standard.
+    // However we see 64-vs-80-bit precision comparisons with gcc-7 -O3 -m32.
+    // So we avoid floating point promotion for exact comparisons.
+    if (L.Type == Value::T_Integer || R.Type == Value::T_Integer)
+      return L.getAsInteger() == R.getAsInteger();
     return *L.getAsNumber() == *R.getAsNumber();
   case Value::String:
     return *L.getAsString() == *R.getAsString();

Modified: projects/clang800-import/contrib/llvm/lib/Target/AArch64/AArch64SpeculationHardening.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/AArch64/AArch64SpeculationHardening.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/AArch64/AArch64SpeculationHardening.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -103,6 +103,7 @@
 #include "llvm/CodeGen/MachineInstrBuilder.h"
 #include "llvm/CodeGen/MachineOperand.h"
 #include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/RegisterScavenging.h"
 #include "llvm/IR/DebugLoc.h"
 #include "llvm/Pass.h"
 #include "llvm/Support/CodeGen.h"
@@ -146,25 +147,31 @@ class AArch64SpeculationHardening : public MachineFunc
   BitVector RegsAlreadyMasked;
 
   bool functionUsesHardeningRegister(MachineFunction &MF) const;
-  bool instrumentControlFlow(MachineBasicBlock &MBB);
+  bool instrumentControlFlow(MachineBasicBlock &MBB,
+                             bool &UsesFullSpeculationBarrier);
   bool endsWithCondControlFlow(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
                                MachineBasicBlock *&FBB,
                                AArch64CC::CondCode &CondCode) const;
   void insertTrackingCode(MachineBasicBlock &SplitEdgeBB,
                           AArch64CC::CondCode &CondCode, DebugLoc DL) const;
-  void insertSPToRegTaintPropagation(MachineBasicBlock *MBB,
+  void insertSPToRegTaintPropagation(MachineBasicBlock &MBB,
                                      MachineBasicBlock::iterator MBBI) const;
-  void insertRegToSPTaintPropagation(MachineBasicBlock *MBB,
+  void insertRegToSPTaintPropagation(MachineBasicBlock &MBB,
                                      MachineBasicBlock::iterator MBBI,
                                      unsigned TmpReg) const;
+  void insertFullSpeculationBarrier(MachineBasicBlock &MBB,
+                                    MachineBasicBlock::iterator MBBI,
+                                    DebugLoc DL) const;
 
   bool slhLoads(MachineBasicBlock &MBB);
   bool makeGPRSpeculationSafe(MachineBasicBlock &MBB,
                               MachineBasicBlock::iterator MBBI,
                               MachineInstr &MI, unsigned Reg);
-  bool lowerSpeculationSafeValuePseudos(MachineBasicBlock &MBB);
+  bool lowerSpeculationSafeValuePseudos(MachineBasicBlock &MBB,
+                                        bool UsesFullSpeculationBarrier);
   bool expandSpeculationSafeValue(MachineBasicBlock &MBB,
-                                  MachineBasicBlock::iterator MBBI);
+                                  MachineBasicBlock::iterator MBBI,
+                                  bool UsesFullSpeculationBarrier);
   bool insertCSDB(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
                   DebugLoc DL);
 };
@@ -207,15 +214,19 @@ bool AArch64SpeculationHardening::endsWithCondControlF
   return true;
 }
 
+void AArch64SpeculationHardening::insertFullSpeculationBarrier(
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
+    DebugLoc DL) const {
+  // A full control flow speculation barrier consists of (DSB SYS + ISB)
+  BuildMI(MBB, MBBI, DL, TII->get(AArch64::DSB)).addImm(0xf);
+  BuildMI(MBB, MBBI, DL, TII->get(AArch64::ISB)).addImm(0xf);
+}
+
 void AArch64SpeculationHardening::insertTrackingCode(
     MachineBasicBlock &SplitEdgeBB, AArch64CC::CondCode &CondCode,
     DebugLoc DL) const {
   if (UseControlFlowSpeculationBarrier) {
-    // insert full control flow speculation barrier (DSB SYS + ISB)
-    BuildMI(SplitEdgeBB, SplitEdgeBB.begin(), DL, TII->get(AArch64::ISB))
-        .addImm(0xf);
-    BuildMI(SplitEdgeBB, SplitEdgeBB.begin(), DL, TII->get(AArch64::DSB))
-        .addImm(0xf);
+    insertFullSpeculationBarrier(SplitEdgeBB, SplitEdgeBB.begin(), DL);
   } else {
     BuildMI(SplitEdgeBB, SplitEdgeBB.begin(), DL, TII->get(AArch64::CSELXr))
         .addDef(MisspeculatingTaintReg)
@@ -227,7 +238,7 @@ void AArch64SpeculationHardening::insertTrackingCode(
 }
 
 bool AArch64SpeculationHardening::instrumentControlFlow(
-    MachineBasicBlock &MBB) {
+    MachineBasicBlock &MBB, bool &UsesFullSpeculationBarrier) {
   LLVM_DEBUG(dbgs() << "Instrument control flow tracking on MBB: " << MBB);
 
   bool Modified = false;
@@ -263,55 +274,105 @@ bool AArch64SpeculationHardening::instrumentControlFlo
   }
 
   // Perform correct code generation around function calls and before returns.
-  {
-    SmallVector<MachineInstr *, 4> ReturnInstructions;
-    SmallVector<MachineInstr *, 4> CallInstructions;
+  // The below variables record the return/terminator instructions and the call
+  // instructions respectively; including which register is available as a
+  // temporary register just before the recorded instructions.
+  SmallVector<std::pair<MachineInstr *, unsigned>, 4> ReturnInstructions;
+  SmallVector<std::pair<MachineInstr *, unsigned>, 4> CallInstructions;
+  // if a temporary register is not available for at least one of the
+  // instructions for which we need to transfer taint to the stack pointer, we
+  // need to insert a full speculation barrier.
+  // TmpRegisterNotAvailableEverywhere tracks that condition.
+  bool TmpRegisterNotAvailableEverywhere = false;
 
-    for (MachineInstr &MI : MBB) {
-      if (MI.isReturn())
-        ReturnInstructions.push_back(&MI);
-      else if (MI.isCall())
-        CallInstructions.push_back(&MI);
-    }
+  RegScavenger RS;
+  RS.enterBasicBlock(MBB);
 
-    Modified |=
-        (ReturnInstructions.size() > 0) || (CallInstructions.size() > 0);
+  for (MachineBasicBlock::iterator I = MBB.begin(); I != MBB.end(); I++) {
+    MachineInstr &MI = *I;
+    if (!MI.isReturn() && !MI.isCall())
+      continue;
 
-    for (MachineInstr *Return : ReturnInstructions)
-      insertRegToSPTaintPropagation(Return->getParent(), Return, AArch64::X17);
-    for (MachineInstr *Call : CallInstructions) {
+    // The RegScavenger represents registers available *after* the MI
+    // instruction pointed to by RS.getCurrentPosition().
+    // We need to have a register that is available *before* the MI is executed.
+    if (I != MBB.begin())
+      RS.forward(std::prev(I));
+    // FIXME: The below just finds *a* unused register. Maybe code could be
+    // optimized more if this looks for the register that isn't used for the
+    // longest time around this place, to enable more scheduling freedom. Not
+    // sure if that would actually result in a big performance difference
+    // though. Maybe RegisterScavenger::findSurvivorBackwards has some logic
+    // already to do this - but it's unclear if that could easily be used here.
+    unsigned TmpReg = RS.FindUnusedReg(&AArch64::GPR64commonRegClass);
+    LLVM_DEBUG(dbgs() << "RS finds "
+                      << ((TmpReg == 0) ? "no register " : "register ");
+               if (TmpReg != 0) dbgs() << printReg(TmpReg, TRI) << " ";
+               dbgs() << "to be available at MI " << MI);
+    if (TmpReg == 0)
+      TmpRegisterNotAvailableEverywhere = true;
+    if (MI.isReturn())
+      ReturnInstructions.push_back({&MI, TmpReg});
+    else if (MI.isCall())
+      CallInstructions.push_back({&MI, TmpReg});
+  }
+
+  if (TmpRegisterNotAvailableEverywhere) {
+    // When a temporary register is not available everywhere in this basic
+    // basic block where a propagate-taint-to-sp operation is needed, just
+    // emit a full speculation barrier at the start of this basic block, which
+    // renders the taint/speculation tracking in this basic block unnecessary.
+    insertFullSpeculationBarrier(MBB, MBB.begin(),
+                                 (MBB.begin())->getDebugLoc());
+    UsesFullSpeculationBarrier = true;
+    Modified = true;
+  } else {
+    for (auto MI_Reg : ReturnInstructions) {
+      assert(MI_Reg.second != 0);
+      LLVM_DEBUG(
+          dbgs()
+          << " About to insert Reg to SP taint propagation with temp register "
+          << printReg(MI_Reg.second, TRI)
+          << " on instruction: " << *MI_Reg.first);
+      insertRegToSPTaintPropagation(MBB, MI_Reg.first, MI_Reg.second);
+      Modified = true;
+    }
+
+    for (auto MI_Reg : CallInstructions) {
+      assert(MI_Reg.second != 0);
+      LLVM_DEBUG(dbgs() << " About to insert Reg to SP and back taint "
+                           "propagation with temp register "
+                        << printReg(MI_Reg.second, TRI)
+                        << " around instruction: " << *MI_Reg.first);
       // Just after the call:
-      MachineBasicBlock::iterator i = Call;
-      i++;
-      insertSPToRegTaintPropagation(Call->getParent(), i);
+      insertSPToRegTaintPropagation(
+          MBB, std::next((MachineBasicBlock::iterator)MI_Reg.first));
       // Just before the call:
-      insertRegToSPTaintPropagation(Call->getParent(), Call, AArch64::X17);
+      insertRegToSPTaintPropagation(MBB, MI_Reg.first, MI_Reg.second);
+      Modified = true;
     }
   }
-
   return Modified;
 }
 
 void AArch64SpeculationHardening::insertSPToRegTaintPropagation(
-    MachineBasicBlock *MBB, MachineBasicBlock::iterator MBBI) const {
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI) const {
   // If full control flow speculation barriers are used, emit a control flow
   // barrier to block potential miss-speculation in flight coming in to this
   // function.
   if (UseControlFlowSpeculationBarrier) {
-    // insert full control flow speculation barrier (DSB SYS + ISB)
-    BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::DSB)).addImm(0xf);
-    BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::ISB)).addImm(0xf);
+    insertFullSpeculationBarrier(MBB, MBBI, DebugLoc());
     return;
   }
 
   // CMP   SP, #0   === SUBS   xzr, SP, #0
-  BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::SUBSXri))
+  BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::SUBSXri))
       .addDef(AArch64::XZR)
       .addUse(AArch64::SP)
       .addImm(0)
       .addImm(0); // no shift
   // CSETM x16, NE  === CSINV  x16, xzr, xzr, EQ
-  BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::CSINVXr))
+  BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::CSINVXr))
       .addDef(MisspeculatingTaintReg)
       .addUse(AArch64::XZR)
       .addUse(AArch64::XZR)
@@ -319,7 +380,7 @@ void AArch64SpeculationHardening::insertSPToRegTaintPr
 }
 
 void AArch64SpeculationHardening::insertRegToSPTaintPropagation(
-    MachineBasicBlock *MBB, MachineBasicBlock::iterator MBBI,
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
     unsigned TmpReg) const {
   // If full control flow speculation barriers are used, there will not be
   // miss-speculation when returning from this function, and therefore, also
@@ -328,19 +389,19 @@ void AArch64SpeculationHardening::insertRegToSPTaintPr
     return;
 
   // mov   Xtmp, SP  === ADD  Xtmp, SP, #0
-  BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::ADDXri))
+  BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::ADDXri))
       .addDef(TmpReg)
       .addUse(AArch64::SP)
       .addImm(0)
       .addImm(0); // no shift
   // and   Xtmp, Xtmp, TaintReg === AND Xtmp, Xtmp, TaintReg, #0
-  BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::ANDXrs))
+  BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::ANDXrs))
       .addDef(TmpReg, RegState::Renamable)
       .addUse(TmpReg, RegState::Kill | RegState::Renamable)
       .addUse(MisspeculatingTaintReg, RegState::Kill)
       .addImm(0);
   // mov   SP, Xtmp === ADD SP, Xtmp, #0
-  BuildMI(*MBB, MBBI, DebugLoc(), TII->get(AArch64::ADDXri))
+  BuildMI(MBB, MBBI, DebugLoc(), TII->get(AArch64::ADDXri))
       .addDef(AArch64::SP)
       .addUse(TmpReg, RegState::Kill)
       .addImm(0)
@@ -484,7 +545,8 @@ bool AArch64SpeculationHardening::slhLoads(MachineBasi
 /// \brief If MBBI references a pseudo instruction that should be expanded
 /// here, do the expansion and return true. Otherwise return false.
 bool AArch64SpeculationHardening::expandSpeculationSafeValue(
-    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI) {
+    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
+    bool UsesFullSpeculationBarrier) {
   MachineInstr &MI = *MBBI;
   unsigned Opcode = MI.getOpcode();
   bool Is64Bit = true;
@@ -499,7 +561,7 @@ bool AArch64SpeculationHardening::expandSpeculationSaf
     // Just remove the SpeculationSafe pseudo's if control flow
     // miss-speculation isn't happening because we're already inserting barriers
     // to guarantee that.
-    if (!UseControlFlowSpeculationBarrier) {
+    if (!UseControlFlowSpeculationBarrier && !UsesFullSpeculationBarrier) {
       unsigned DstReg = MI.getOperand(0).getReg();
       unsigned SrcReg = MI.getOperand(1).getReg();
       // Mark this register and all its aliasing registers as needing to be
@@ -537,7 +599,7 @@ bool AArch64SpeculationHardening::insertCSDB(MachineBa
 }
 
 bool AArch64SpeculationHardening::lowerSpeculationSafeValuePseudos(
-    MachineBasicBlock &MBB) {
+    MachineBasicBlock &MBB, bool UsesFullSpeculationBarrier) {
   bool Modified = false;
 
   RegsNeedingCSDBBeforeUse.reset();
@@ -572,15 +634,16 @@ bool AArch64SpeculationHardening::lowerSpeculationSafe
           break;
         }
 
-    if (NeedToEmitBarrier)
+    if (NeedToEmitBarrier && !UsesFullSpeculationBarrier)
       Modified |= insertCSDB(MBB, MBBI, DL);
 
-    Modified |= expandSpeculationSafeValue(MBB, MBBI);
+    Modified |=
+        expandSpeculationSafeValue(MBB, MBBI, UsesFullSpeculationBarrier);
 
     MBBI = NMBBI;
   }
 
-  if (RegsNeedingCSDBBeforeUse.any())
+  if (RegsNeedingCSDBBeforeUse.any() && !UsesFullSpeculationBarrier)
     Modified |= insertCSDB(MBB, MBBI, DL);
 
   return Modified;
@@ -609,7 +672,7 @@ bool AArch64SpeculationHardening::runOnMachineFunction
       Modified |= slhLoads(MBB);
   }
 
-  // 2.a Add instrumentation code to function entry and exits.
+  // 2. Add instrumentation code to function entry and exits.
   LLVM_DEBUG(
       dbgs()
       << "***** AArch64SpeculationHardening - track control flow *****\n");
@@ -620,17 +683,15 @@ bool AArch64SpeculationHardening::runOnMachineFunction
     EntryBlocks.push_back(LPI.LandingPadBlock);
   for (auto Entry : EntryBlocks)
     insertSPToRegTaintPropagation(
-        Entry, Entry->SkipPHIsLabelsAndDebug(Entry->begin()));
+        *Entry, Entry->SkipPHIsLabelsAndDebug(Entry->begin()));
 
-  // 2.b Add instrumentation code to every basic block.
-  for (auto &MBB : MF)
-    Modified |= instrumentControlFlow(MBB);
-
-  LLVM_DEBUG(dbgs() << "***** AArch64SpeculationHardening - Lowering "
-                       "SpeculationSafeValue Pseudos *****\n");
-  // Step 3: Lower SpeculationSafeValue pseudo instructions.
-  for (auto &MBB : MF)
-    Modified |= lowerSpeculationSafeValuePseudos(MBB);
+  // 3. Add instrumentation code to every basic block.
+  for (auto &MBB : MF) {
+    bool UsesFullSpeculationBarrier = false;
+    Modified |= instrumentControlFlow(MBB, UsesFullSpeculationBarrier);
+    Modified |=
+        lowerSpeculationSafeValuePseudos(MBB, UsesFullSpeculationBarrier);
+  }
 
   return Modified;
 }

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -65,10 +65,7 @@ class MCInstrInfo;
 
 } // end namespace llvm
 
-static cl::opt<bool>
-EmitJalrReloc("mips-jalr-reloc", cl::Hidden,
-              cl::desc("MIPS: Emit R_{MICRO}MIPS_JALR relocation with jalr"),
-              cl::init(true));
+extern cl::opt<bool> EmitJalrReloc;
 
 namespace {
 

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -15,6 +15,13 @@
 
 using namespace llvm;
 
+// Note: this option is defined here to be visible from libLLVMMipsAsmParser
+//       and libLLVMMipsCodeGen
+cl::opt<bool>
+EmitJalrReloc("mips-jalr-reloc", cl::Hidden,
+              cl::desc("MIPS: Emit R_{MICRO}MIPS_JALR relocation with jalr"),
+              cl::init(true));
+
 namespace {
 static const MCPhysReg O32IntRegs[4] = {Mips::A0, Mips::A1, Mips::A2, Mips::A3};
 

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h	Tue Feb  5 19:48:24 2019	(r343806)
@@ -89,7 +89,10 @@ namespace MipsII {
     MO_GOT_HI16,
     MO_GOT_LO16,
     MO_CALL_HI16,
-    MO_CALL_LO16
+    MO_CALL_LO16,
+
+    /// Helper operand used to generate R_MIPS_JALR
+    MO_JALR
   };
 
   enum {

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -614,8 +614,9 @@ getExprOpValue(const MCExpr *Expr, SmallVectorImpl<MCF
       llvm_unreachable("Unhandled fixup kind!");
       break;
     case MipsMCExpr::MEK_DTPREL:
-      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
-      break;
+      // MEK_DTPREL is used for marking TLS DIEExpr only
+      // and contains a regular sub-expression.
+      return getExprOpValue(MipsExpr->getSubExpr(), Fixups, STI);
     case MipsMCExpr::MEK_CALL_HI16:
       FixupKind = Mips::fixup_Mips_CALL_HI16;
       break;

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -44,8 +44,10 @@ void MipsMCExpr::printImpl(raw_ostream &OS, const MCAs
     llvm_unreachable("MEK_None and MEK_Special are invalid");
     break;
   case MEK_DTPREL:
-    llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
-    break;
+    // MEK_DTPREL is used for marking TLS DIEExpr only
+    // and contains a regular sub-expression.
+    getSubExpr()->print(OS, MAI, true);
+    return;
   case MEK_CALL_HI16:
     OS << "%call_hi";
     break;
@@ -161,7 +163,9 @@ MipsMCExpr::evaluateAsRelocatableImpl(MCValue &Res,
     case MEK_Special:
       llvm_unreachable("MEK_None and MEK_Special are invalid");
     case MEK_DTPREL:
-      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
+      // MEK_DTPREL is used for marking TLS DIEExpr only
+      // and contains a regular sub-expression.
+      return getSubExpr()->evaluateAsRelocatable(Res, Layout, Fixup);
     case MEK_DTPREL_HI:
     case MEK_DTPREL_LO:
     case MEK_GOT:
@@ -249,9 +253,6 @@ void MipsMCExpr::fixELFSymbolsInTLSFixups(MCAssembler 
   case MEK_Special:
     llvm_unreachable("MEK_None and MEK_Special are invalid");
     break;
-  case MEK_DTPREL:
-    llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
-    break;
   case MEK_CALL_HI16:
   case MEK_CALL_LO16:
   case MEK_GOT:
@@ -274,6 +275,7 @@ void MipsMCExpr::fixELFSymbolsInTLSFixups(MCAssembler 
     if (const MipsMCExpr *E = dyn_cast<const MipsMCExpr>(getSubExpr()))
       E->fixELFSymbolsInTLSFixups(Asm);
     break;
+  case MEK_DTPREL:
   case MEK_DTPREL_HI:
   case MEK_DTPREL_LO:
   case MEK_TLSLDM:

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMips32r6InstrInfo.td	Tue Feb  5 19:48:24 2019	(r343806)
@@ -460,6 +460,7 @@ class JALRC16_MMR6_DESC_BASE<string opstr, RegisterOpe
   let isCall = 1;
   let hasDelaySlot = 0;
   let Defs = [RA];
+  let hasPostISelHook = 1;
 }
 class JALRC16_MMR6_DESC : JALRC16_MMR6_DESC_BASE<"jalr", GPR32Opnd>;
 

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMipsInstrInfo.td
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMipsInstrInfo.td	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MicroMipsInstrInfo.td	Tue Feb  5 19:48:24 2019	(r343806)
@@ -426,6 +426,7 @@ class JumpLinkRegMM16<string opstr, RegisterOperand RO
   let isCall = 1;
   let hasDelaySlot = 1;
   let Defs = [RA];
+  let hasPostISelHook = 1;
 }
 
 // 16-bit Jump Reg

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td	Tue Feb  5 19:48:24 2019	(r343806)
@@ -1105,7 +1105,7 @@ def : MipsPat<(select i32:$cond, immz, i32:$f),
 
 // Pseudo instructions
 let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1, hasDelaySlot = 1,
-    hasExtraSrcRegAllocReq = 1, isCTI = 1, Defs = [AT] in {
+    hasExtraSrcRegAllocReq = 1, isCTI = 1, Defs = [AT], hasPostISelHook = 1 in {
   class TailCallRegR6<Instruction JumpInst, Register RT, RegisterOperand RO> :
     PseudoSE<(outs), (ins RO:$rs), [(MipsTailCall RO:$rs)], II_JR>,
     PseudoInstExpansion<(JumpInst RT:$rt, RO:$rs)>;

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -68,6 +68,8 @@ using namespace llvm;
 
 #define DEBUG_TYPE "mips-asm-printer"
 
+extern cl::opt<bool> EmitJalrReloc;
+
 MipsTargetStreamer &MipsAsmPrinter::getTargetStreamer() const {
   return static_cast<MipsTargetStreamer &>(*OutStreamer->getTargetStreamer());
 }
@@ -148,6 +150,40 @@ void MipsAsmPrinter::emitPseudoIndirectBranch(MCStream
   EmitToStreamer(OutStreamer, TmpInst0);
 }
 
+// If there is an MO_JALR operand, insert:
+//
+// .reloc tmplabel, R_{MICRO}MIPS_JALR, symbol
+// tmplabel:
+//
+// This is an optimization hint for the linker which may then replace
+// an indirect call with a direct branch.
+static void emitDirectiveRelocJalr(const MachineInstr &MI,
+                                   MCContext &OutContext,
+                                   TargetMachine &TM,
+                                   MCStreamer &OutStreamer,
+                                   const MipsSubtarget &Subtarget) {
+  for (unsigned int I = MI.getDesc().getNumOperands(), E = MI.getNumOperands();
+       I < E; ++I) {
+    MachineOperand MO = MI.getOperand(I);
+    if (MO.isMCSymbol() && (MO.getTargetFlags() & MipsII::MO_JALR)) {
+      MCSymbol *Callee = MO.getMCSymbol();
+      if (Callee && !Callee->getName().empty()) {
+        MCSymbol *OffsetLabel = OutContext.createTempSymbol();
+        const MCExpr *OffsetExpr =
+            MCSymbolRefExpr::create(OffsetLabel, OutContext);
+        const MCExpr *CaleeExpr =
+            MCSymbolRefExpr::create(Callee, OutContext);
+        OutStreamer.EmitRelocDirective
+            (*OffsetExpr,
+             Subtarget.inMicroMipsMode() ? "R_MICROMIPS_JALR" : "R_MIPS_JALR",
+             CaleeExpr, SMLoc(), *TM.getMCSubtargetInfo());
+        OutStreamer.EmitLabel(OffsetLabel);
+        return;
+      }
+    }
+  }
+}
+
 void MipsAsmPrinter::EmitInstruction(const MachineInstr *MI) {
   MipsTargetStreamer &TS = getTargetStreamer();
   unsigned Opc = MI->getOpcode();
@@ -205,6 +241,11 @@ void MipsAsmPrinter::EmitInstruction(const MachineInst
   case Mips::PATCHABLE_TAIL_CALL:
     LowerPATCHABLE_TAIL_CALL(*MI);
     return;
+  }
+
+  if (EmitJalrReloc &&
+      (MI->isReturn() || MI->isCall() || MI->isIndirectBranch())) {
+    emitDirectiveRelocJalr(*MI, OutContext, TM, *OutStreamer, *Subtarget);
   }
 
   MachineBasicBlock::const_instr_iterator I = MI->getIterator();

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -56,6 +56,7 @@
 #include "llvm/IR/Type.h"
 #include "llvm/IR/User.h"
 #include "llvm/IR/Value.h"
+#include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCInstrDesc.h"
 #include "llvm/MC/MCRegisterInfo.h"
 #include "llvm/MC/MCSymbol.h"
@@ -75,6 +76,8 @@
 
 using namespace llvm;
 
+extern cl::opt<bool> EmitJalrReloc;
+
 namespace {
 
 class MipsFastISel final : public FastISel {
@@ -1550,6 +1553,16 @@ bool MipsFastISel::fastLowerCall(CallLoweringInfo &CLI
   MIB.addRegMask(TRI.getCallPreservedMask(*FuncInfo.MF, CC));
 
   CLI.Call = MIB;
+
+  if (EmitJalrReloc && !Subtarget->inMips16Mode()) {
+    // Attach callee address to the instruction, let asm printer emit
+    // .reloc R_MIPS_JALR.
+    if (Symbol)
+      MIB.addSym(Symbol, MipsII::MO_JALR);
+    else
+      MIB.addSym(FuncInfo.MF->getContext().getOrCreateSymbol(
+	                   Addr.getGlobalValue()->getName()), MipsII::MO_JALR);
+  }
 
   // Finish off the call including any return values.
   return finishCall(CLI, RetVT, NumBytes);

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -57,6 +57,7 @@
 #include "llvm/IR/GlobalValue.h"
 #include "llvm/IR/Type.h"
 #include "llvm/IR/Value.h"
+#include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCRegisterInfo.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/CodeGen.h"
@@ -91,6 +92,8 @@ NoZeroDivCheck("mno-check-zero-division", cl::Hidden,
                cl::desc("MIPS: Don't trap on integer division by zero."),
                cl::init(false));
 
+extern cl::opt<bool> EmitJalrReloc;
+
 static const MCPhysReg Mips64DPRegs[8] = {
   Mips::D12_64, Mips::D13_64, Mips::D14_64, Mips::D15_64,
   Mips::D16_64, Mips::D17_64, Mips::D18_64, Mips::D19_64
@@ -2879,6 +2882,54 @@ getOpndList(SmallVectorImpl<SDValue> &Ops,
     Ops.push_back(InFlag);
 }
 
+void MipsTargetLowering::AdjustInstrPostInstrSelection(MachineInstr &MI,
+                                                       SDNode *Node) const {
+  switch (MI.getOpcode()) {
+    default:
+      return;
+    case Mips::JALR:
+    case Mips::JALRPseudo:
+    case Mips::JALR64:
+    case Mips::JALR64Pseudo:
+    case Mips::JALR16_MM:
+    case Mips::JALRC16_MMR6:
+    case Mips::TAILCALLREG:
+    case Mips::TAILCALLREG64:
+    case Mips::TAILCALLR6REG:
+    case Mips::TAILCALL64R6REG:
+    case Mips::TAILCALLREG_MM:
+    case Mips::TAILCALLREG_MMR6: {
+      if (!EmitJalrReloc ||
+          Subtarget.inMips16Mode() ||
+          !isPositionIndependent() ||
+          Node->getNumOperands() < 1 ||
+          Node->getOperand(0).getNumOperands() < 2) {
+        return;
+      }
+      // We are after the callee address, set by LowerCall().
+      // If added to MI, asm printer will emit .reloc R_MIPS_JALR for the
+      // symbol.
+      const SDValue TargetAddr = Node->getOperand(0).getOperand(1);
+      StringRef Sym;
+      if (const GlobalAddressSDNode *G =
+              dyn_cast_or_null<const GlobalAddressSDNode>(TargetAddr)) {
+        Sym = G->getGlobal()->getName();
+      }
+      else if (const ExternalSymbolSDNode *ES =
+                   dyn_cast_or_null<const ExternalSymbolSDNode>(TargetAddr)) {
+        Sym = ES->getSymbol();
+      }
+
+      if (Sym.empty())
+        return;
+
+      MachineFunction *MF = MI.getParent()->getParent();
+      MCSymbol *S = MF->getContext().getOrCreateSymbol(Sym);
+      MI.addOperand(MachineOperand::CreateMCSymbol(S, MipsII::MO_JALR));
+    }
+  }
+}
+
 /// LowerCall - functions arguments are copied from virtual regs to
 /// (physical regs)/(stack frame), CALLSEQ_START and CALLSEQ_END are emitted.
 SDValue
@@ -2930,7 +2981,7 @@ MipsTargetLowering::LowerCall(TargetLowering::CallLowe
   // the maximum out going argument area (including the reserved area), and
   // preallocates the stack space on entrance to the caller.
   //
-  // FIXME: We should do the same for efficency and space.
+  // FIXME: We should do the same for efficiency and space.
 
   // Note: The check on the calling convention below must match
   //       MipsABIInfo::GetCalleeAllocdArgSizeInBytes().

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.h
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.h	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.h	Tue Feb  5 19:48:24 2019	(r343806)
@@ -341,6 +341,9 @@ class TargetRegisterClass;
     EmitInstrWithCustomInserter(MachineInstr &MI,
                                 MachineBasicBlock *MBB) const override;
 
+    void AdjustInstrPostInstrSelection(MachineInstr &MI,
+                                       SDNode *Node) const override;
+
     void HandleByVal(CCState *, unsigned &, unsigned) const override;
 
     unsigned getRegisterByName(const char* RegName, EVT VT,

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -653,6 +653,16 @@ MipsInstrInfo::genInstrWithNewOpc(unsigned NewOpc,
 
     MIB.addImm(0);
 
+    // If I has an MCSymbol operand (used by asm printer, to emit R_MIPS_JALR),
+    // add it to the new instruction.
+    for (unsigned J = I->getDesc().getNumOperands(), E = I->getNumOperands();
+         J < E; ++J) {
+      const MachineOperand &MO = I->getOperand(J);
+      if (MO.isMCSymbol() && (MO.getTargetFlags() & MipsII::MO_JALR))
+        MIB.addSym(MO.getMCSymbol(), MipsII::MO_JALR);
+    }
+
+
   } else {
     for (unsigned J = 0, E = I->getDesc().getNumOperands(); J < E; ++J) {
       if (BranchWithZeroOperand && (unsigned)ZeroOperandPosition == J)
@@ -825,7 +835,8 @@ MipsInstrInfo::getSerializableDirectMachineOperandTarg
     {MO_GOT_HI16,     "mips-got-hi16"},
     {MO_GOT_LO16,     "mips-got-lo16"},
     {MO_CALL_HI16,    "mips-call-hi16"},
-    {MO_CALL_LO16,    "mips-call-lo16"}
+    {MO_CALL_LO16,    "mips-call-lo16"},
+    {MO_JALR,         "mips-jalr"}
   };
   return makeArrayRef(Flags);
 }

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td	Tue Feb  5 19:48:24 2019	(r343806)
@@ -1623,11 +1623,15 @@ let isCall=1, hasDelaySlot=1, isCTI=1, Defs = [RA] in 
   class JumpLinkRegPseudo<RegisterOperand RO, Instruction JALRInst,
                           Register RetReg, RegisterOperand ResRO = RO>:
     PseudoSE<(outs), (ins RO:$rs), [(MipsJmpLink RO:$rs)], II_JALR>,
-    PseudoInstExpansion<(JALRInst RetReg, ResRO:$rs)>;
+    PseudoInstExpansion<(JALRInst RetReg, ResRO:$rs)> {
+    let hasPostISelHook = 1;
+  }
 
   class JumpLinkReg<string opstr, RegisterOperand RO>:
     InstSE<(outs RO:$rd), (ins RO:$rs), !strconcat(opstr, "\t$rd, $rs"),
-           [], II_JALR, FrmR, opstr>;
+           [], II_JALR, FrmR, opstr> {
+    let hasPostISelHook = 1;
+  }
 
   class BGEZAL_FT<string opstr, DAGOperand opnd,
                   RegisterOperand RO> :
@@ -1646,7 +1650,9 @@ let isCall = 1, isTerminator = 1, isReturn = 1, isBarr
 
   class TailCallReg<Instruction JumpInst, RegisterOperand RO> :
     PseudoSE<(outs), (ins RO:$rs), [(MipsTailCall RO:$rs)], II_JR>,
-    PseudoInstExpansion<(JumpInst RO:$rs)>;
+    PseudoInstExpansion<(JumpInst RO:$rs)> {
+    let hasPostISelHook = 1;
+  }
 }
 
 class BAL_BR_Pseudo<Instruction RealInst, DAGOperand opnd> :

Modified: projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -117,6 +117,8 @@ MCOperand MipsMCInstLower::LowerSymbolOperand(const Ma
   case MipsII::MO_CALL_LO16:
     TargetKind = MipsMCExpr::MEK_CALL_LO16;
     break;
+  case MipsII::MO_JALR:
+    return MCOperand();
   }
 
   switch (MOTy) {

Modified: projects/clang800-import/contrib/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -27,6 +27,14 @@ using namespace llvm;
 
 #define DEBUG_TYPE "x86-discriminate-memops"
 
+static cl::opt<bool> EnableDiscriminateMemops(
+    DEBUG_TYPE, cl::init(false),
+    cl::desc("Generate unique debug info for each instruction with a memory "
+             "operand. Should be enabled for profile-drived cache prefetching, "
+             "both in the build of the binary being profiled, as well as in "
+             "the build of the binary consuming the profile."),
+    cl::Hidden);
+
 namespace {
 
 using Location = std::pair<StringRef, unsigned>;
@@ -67,6 +75,9 @@ char X86DiscriminateMemOps::ID = 0;
 X86DiscriminateMemOps::X86DiscriminateMemOps() : MachineFunctionPass(ID) {}
 
 bool X86DiscriminateMemOps::runOnMachineFunction(MachineFunction &MF) {
+  if (!EnableDiscriminateMemops)
+    return false;
+
   DISubprogram *FDI = MF.getFunction().getSubprogram();
   if (!FDI || !FDI->getUnit()->getDebugInfoForProfiling())
     return false;

Modified: projects/clang800-import/contrib/llvm/lib/Target/X86/X86InsertPrefetch.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Target/X86/X86InsertPrefetch.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Target/X86/X86InsertPrefetch.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -34,7 +34,8 @@ using namespace sampleprof;
 
 static cl::opt<std::string>
     PrefetchHintsFile("prefetch-hints-file",
-                      cl::desc("Path to the prefetch hints profile."),
+                      cl::desc("Path to the prefetch hints profile. See also "
+                               "-x86-discriminate-memops"),
                       cl::Hidden);
 namespace {
 

Modified: projects/clang800-import/contrib/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -249,6 +249,8 @@ void FunctionImportGlobalProcessing::processGlobalForT
   bool DoPromote = false;
   if (GV.hasLocalLinkage() &&
       ((DoPromote = shouldPromoteLocalToGlobal(&GV)) || isPerformingImport())) {
+    // Save the original name string before we rename GV below.
+    auto Name = GV.getName().str();
     // Once we change the name or linkage it is difficult to determine
     // again whether we should promote since shouldPromoteLocalToGlobal needs
     // to locate the summary (based on GUID from name and linkage). Therefore,
@@ -257,6 +259,12 @@ void FunctionImportGlobalProcessing::processGlobalForT
     GV.setLinkage(getLinkage(&GV, DoPromote));
     if (!GV.hasLocalLinkage())
       GV.setVisibility(GlobalValue::HiddenVisibility);
+
+    // If we are renaming a COMDAT leader, ensure that we record the COMDAT
+    // for later renaming as well. This is required for COFF.
+    if (const auto *C = GV.getComdat())
+      if (C->getName() == Name)
+        RenamedComdats.try_emplace(C, M.getOrInsertComdat(GV.getName()));
   } else
     GV.setLinkage(getLinkage(&GV, /* DoPromote */ false));
 
@@ -281,6 +289,16 @@ void FunctionImportGlobalProcessing::processGlobalsFor
     processGlobalForThinLTO(SF);
   for (GlobalAlias &GA : M.aliases())
     processGlobalForThinLTO(GA);
+
+  // Replace any COMDATS that required renaming (because the COMDAT leader was
+  // promoted and renamed).
+  if (!RenamedComdats.empty())
+    for (auto &GO : M.global_objects())
+      if (auto *C = GO.getComdat()) {
+        auto Replacement = RenamedComdats.find(C);
+        if (Replacement != RenamedComdats.end())
+          GO.setComdat(Replacement->second);
+      }
 }
 
 bool FunctionImportGlobalProcessing::run() {

Modified: projects/clang800-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
==============================================================================
--- projects/clang800-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp	Tue Feb  5 18:40:18 2019	(r343805)
+++ projects/clang800-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp	Tue Feb  5 19:48:24 2019	(r343806)
@@ -217,7 +217,10 @@ static Optional<bool> getOptionalBoolLoopAttribute(con
     // When the value is absent it is interpreted as 'attribute set'.
     return true;
   case 2:
-    return mdconst::extract_or_null<ConstantInt>(MD->getOperand(1).get());
+    if (ConstantInt *IntMD =
+            mdconst::extract_or_null<ConstantInt>(MD->getOperand(1).get()))
+      return IntMD->getZExtValue();
+    return true;
   }
   llvm_unreachable("unexpected number of options");
 }
@@ -376,16 +379,16 @@ TransformationMode llvm::hasVectorizeTransformation(Lo
   Optional<int> InterleaveCount =
       getOptionalIntLoopAttribute(L, "llvm.loop.interleave.count");
 
-  if (Enable == true) {
-    // 'Forcing' vector width and interleave count to one effectively disables
-    // this tranformation.
-    if (VectorizeWidth == 1 && InterleaveCount == 1)
-      return TM_SuppressedByUser;
-    return TM_ForcedByUser;
-  }
+  // 'Forcing' vector width and interleave count to one effectively disables

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

From owner-svn-src-projects@freebsd.org  Tue Feb  5 19:50:59 2019
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:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E55714CEA37
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue,  5 Feb 2019 19:50:59 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 server-signature RSA-PSS (4096 bits)
 client-signature RSA-PSS (4096 bits) client-digest SHA256)
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id BAC228EB45;
 Tue,  5 Feb 2019 19:50:58 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A673522917;
 Tue,  5 Feb 2019 19:50:58 +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 x15JowQW000978;
 Tue, 5 Feb 2019 19:50:58 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id x15JolB7000924;
 Tue, 5 Feb 2019 19:50:47 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201902051950.x15JolB7000924@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, 5 Feb 2019 19:50:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r343807 - in projects/clang800-import: etc/mail
 lib/libc/tests/sys lib/libefivar lib/libpmc/pmu-events lib/libsysdecode
 lib/libthr/thread release/arm64 sbin/devmatch sbin/nvmecontrol sb...
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: in projects/clang800-import: etc/mail lib/libc/tests/sys
 lib/libefivar lib/libpmc/pmu-events lib/libsysdecode lib/libthr/thread
 release/arm64 sbin/devmatch sbin/nvmecontrol sbin/nvmecontrol/modules/wd...
X-SVN-Commit-Revision: 343807
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: BAC228EB45
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.97 / 15.00];
 local_wl_from(0.00)[FreeBSD.org];
 NEURAL_HAM_MEDIUM(-1.00)[-0.999,0];
 NEURAL_HAM_SHORT(-0.98)[-0.976,0];
 NEURAL_HAM_LONG(-1.00)[-1.000,0];
 ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "SVN commit messages for the src &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, 05 Feb 2019 19:51:00 -0000

Author: dim
Date: Tue Feb  5 19:50:46 2019
New Revision: 343807
URL: https://svnweb.freebsd.org/changeset/base/343807

Log:
  Merge ^/head r343712 through r343806.

Modified:
  projects/clang800-import/etc/mail/Makefile
  projects/clang800-import/lib/libc/tests/sys/sendfile_test.c
  projects/clang800-import/lib/libefivar/efi-osdep.h
  projects/clang800-import/lib/libefivar/efivar-dp-format.c
  projects/clang800-import/lib/libefivar/efivar-dp-parse.c
  projects/clang800-import/lib/libefivar/efivar-dp-xlate.c
  projects/clang800-import/lib/libefivar/efivar-dp.h
  projects/clang800-import/lib/libefivar/efivar.3
  projects/clang800-import/lib/libefivar/efivar.c
  projects/clang800-import/lib/libefivar/efivar.h
  projects/clang800-import/lib/libefivar/uefi-dplib.h
  projects/clang800-import/lib/libefivar/uefi-dputil.c
  projects/clang800-import/lib/libpmc/pmu-events/jevents.c
  projects/clang800-import/lib/libsysdecode/flags.c
  projects/clang800-import/lib/libthr/thread/thr_malloc.c
  projects/clang800-import/lib/libthr/thread/thr_mutex.c
  projects/clang800-import/release/arm64/PINE64-LTS.conf
  projects/clang800-import/release/arm64/RPI3.conf
  projects/clang800-import/sbin/devmatch/devmatch.8
  projects/clang800-import/sbin/devmatch/devmatch.c
  projects/clang800-import/sbin/nvmecontrol/modules/wdc/wdc.c
  projects/clang800-import/sbin/nvmecontrol/nc_util.c
  projects/clang800-import/sbin/nvmecontrol/ns.c
  projects/clang800-import/sbin/nvmecontrol/nvmecontrol_ext.h
  projects/clang800-import/sbin/nvmecontrol/power.c
  projects/clang800-import/share/man/man4/nda.4
  projects/clang800-import/share/man/man9/kern_testfrwk.9
  projects/clang800-import/stand/efi/libefi/efienv.c
  projects/clang800-import/stand/efi/libefi/env.c
  projects/clang800-import/stand/efi/libefi/wchar.c
  projects/clang800-import/stand/efi/loader/main.c
  projects/clang800-import/stand/forth/efi.4th
  projects/clang800-import/stand/i386/libi386/biospci.c
  projects/clang800-import/stand/libsa/abort.c
  projects/clang800-import/stand/libsa/xlocale_private.h
  projects/clang800-import/sys/amd64/amd64/exception.S
  projects/clang800-import/sys/amd64/conf/GENERIC
  projects/clang800-import/sys/arm/arm/physmem.c
  projects/clang800-import/sys/arm64/conf/GENERIC
  projects/clang800-import/sys/cam/nvme/nvme_all.c
  projects/clang800-import/sys/cam/nvme/nvme_all.h
  projects/clang800-import/sys/cam/nvme/nvme_da.c
  projects/clang800-import/sys/cam/scsi/scsi_enc_ses.c
  projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/clang800-import/sys/conf/files
  projects/clang800-import/sys/conf/kern.pre.mk
  projects/clang800-import/sys/contrib/ipfilter/netinet/fil.c
  projects/clang800-import/sys/crypto/aesni/aesencdec.h
  projects/clang800-import/sys/dev/efidev/efidev.c
  projects/clang800-import/sys/dev/netmap/if_ptnet.c
  projects/clang800-import/sys/dev/netmap/if_vtnet_netmap.h
  projects/clang800-import/sys/dev/netmap/netmap.c
  projects/clang800-import/sys/dev/netmap/netmap_bdg.c
  projects/clang800-import/sys/dev/netmap/netmap_freebsd.c
  projects/clang800-import/sys/dev/netmap/netmap_generic.c
  projects/clang800-import/sys/dev/netmap/netmap_kern.h
  projects/clang800-import/sys/dev/netmap/netmap_legacy.c
  projects/clang800-import/sys/dev/netmap/netmap_mem2.c
  projects/clang800-import/sys/dev/netmap/netmap_monitor.c
  projects/clang800-import/sys/dev/netmap/netmap_null.c
  projects/clang800-import/sys/dev/netmap/netmap_offloadings.c
  projects/clang800-import/sys/dev/netmap/netmap_pipe.c
  projects/clang800-import/sys/dev/netmap/netmap_vale.c
  projects/clang800-import/sys/dev/nvme/nvme_sim.c
  projects/clang800-import/sys/dev/syscons/scterm-teken.c
  projects/clang800-import/sys/dev/tcp_log/tcp_log_dev.c
  projects/clang800-import/sys/dev/tcp_log/tcp_log_dev.h
  projects/clang800-import/sys/dev/vt/vt_core.c
  projects/clang800-import/sys/i386/include/counter.h
  projects/clang800-import/sys/kern/kern_environment.c
  projects/clang800-import/sys/kern/kern_proc.c
  projects/clang800-import/sys/kern/subr_boot.c
  projects/clang800-import/sys/kern/uipc_syscalls.c
  projects/clang800-import/sys/kern/vfs_extattr.c
  projects/clang800-import/sys/net/iflib.c
  projects/clang800-import/sys/netinet/sctp_output.c
  projects/clang800-import/sys/netinet/sctp_usrreq.c
  projects/clang800-import/sys/netinet/tcp_hpts.c
  projects/clang800-import/sys/netinet/tcp_hpts.h
  projects/clang800-import/sys/netinet/tcp_log_buf.c
  projects/clang800-import/sys/netinet/tcp_log_buf.h
  projects/clang800-import/sys/netinet/tcp_stacks/rack.c
  projects/clang800-import/sys/netinet/tcp_stacks/rack_bbr_common.h
  projects/clang800-import/sys/netinet/tcp_stacks/sack_filter.c
  projects/clang800-import/sys/netinet/tcp_stacks/sack_filter.h
  projects/clang800-import/sys/netinet/tcp_stacks/tcp_rack.h
  projects/clang800-import/sys/powerpc/aim/locore32.S
  projects/clang800-import/sys/powerpc/aim/locore64.S
  projects/clang800-import/sys/powerpc/aim/trap_subr32.S
  projects/clang800-import/sys/powerpc/aim/trap_subr64.S
  projects/clang800-import/sys/powerpc/powerpc/cpu.c
  projects/clang800-import/sys/powerpc/pseries/phyp_llan.c
  projects/clang800-import/sys/sys/boot.h
  projects/clang800-import/sys/sys/efiio.h
  projects/clang800-import/sys/sys/kern_prefetch.h
  projects/clang800-import/sys/teken/libteken/teken.3
  projects/clang800-import/sys/teken/teken.c
  projects/clang800-import/sys/teken/teken.h
  projects/clang800-import/sys/tests/callout_test.h
  projects/clang800-import/sys/tests/callout_test/callout_test.c
  projects/clang800-import/sys/tests/framework/kern_testfrwk.c
  projects/clang800-import/sys/tests/kern_testfrwk.h
  projects/clang800-import/sys/vm/vm_page.c
  projects/clang800-import/sys/vm/vm_page.h
  projects/clang800-import/sys/x86/include/specialreg.h
  projects/clang800-import/sys/x86/x86/identcpu.c
  projects/clang800-import/usr.sbin/efibootmgr/efibootmgr.8
  projects/clang800-import/usr.sbin/efibootmgr/efibootmgr.c
  projects/clang800-import/usr.sbin/efidp/efidp.8
  projects/clang800-import/usr.sbin/efidp/efidp.c
  projects/clang800-import/usr.sbin/efivar/efiutil.c
  projects/clang800-import/usr.sbin/efivar/efiutil.h
  projects/clang800-import/usr.sbin/efivar/efivar.8
  projects/clang800-import/usr.sbin/efivar/efivar.c
  projects/clang800-import/usr.sbin/mpsutil/mps_cmd.c
  projects/clang800-import/usr.sbin/mpsutil/mps_debug.c
  projects/clang800-import/usr.sbin/mpsutil/mps_show.c
  projects/clang800-import/usr.sbin/mpsutil/mpsutil.c
  projects/clang800-import/usr.sbin/pmcstat/pmcpl_annotate_cg.c
  projects/clang800-import/usr.sbin/pmcstat/pmcpl_annotate_cg.h
  projects/clang800-import/usr.sbin/pmcstudy/eval_expr.c
  projects/clang800-import/usr.sbin/pmcstudy/eval_expr.h
  projects/clang800-import/usr.sbin/pmcstudy/pmcstudy.8
  projects/clang800-import/usr.sbin/pmcstudy/pmcstudy.c
  projects/clang800-import/usr.sbin/sesutil/sesutil.c
Directory Properties:
  projects/clang800-import/   (props changed)
  projects/clang800-import/sys/cddl/contrib/opensolaris/   (props changed)
  projects/clang800-import/sys/contrib/ipfilter/   (props changed)
  projects/clang800-import/usr.sbin/bhyve/usb_mouse.c   (props changed)

Modified: projects/clang800-import/etc/mail/Makefile
==============================================================================
--- projects/clang800-import/etc/mail/Makefile	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/etc/mail/Makefile	Tue Feb  5 19:50:46 2019	(r343807)
@@ -60,8 +60,8 @@
 # ------------------------------------------------------------------------
 #
 # The Makefile knows about the following maps:
-# access, bitdomain, domaintable, genericstable, mailertable, userdb,
-# uucpdomain, virtusertable
+# access, authinfo, bitdomain, domaintable, genericstable, mailertable,
+# userdb, uucpdomain, virtusertable
 #
 
 .ifndef SENDMAIL_MC
@@ -125,7 +125,7 @@ SENDMAIL_MAP_PERMS?=	0640
 # type to use when calling makemap.
 #
 SENDMAIL_MAP_SRC+=	mailertable domaintable bitdomain uucpdomain \
-			genericstable virtusertable access
+			genericstable virtusertable access authinfo
 SENDMAIL_MAP_OBJ=
 SENDMAIL_MAP_TYPE?=	hash
 

Modified: projects/clang800-import/lib/libc/tests/sys/sendfile_test.c
==============================================================================
--- projects/clang800-import/lib/libc/tests/sys/sendfile_test.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libc/tests/sys/sendfile_test.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -97,22 +97,31 @@ generate_random_port(int seed)
 static void
 resolve_localhost(struct addrinfo **res, int domain, int type, int port)
 {
+	const char *host;
 	char *serv;
 	struct addrinfo hints;
 	int error;
 
-	ATF_REQUIRE_MSG(domain == AF_INET || domain == AF_INET6,
-	    "unhandled domain: %d", domain);
+	switch (domain) {
+	case AF_INET:
+		host = "127.0.0.1";
+		break;
+	case AF_INET6:
+		host = "::1";
+		break;
+	default:
+		atf_tc_fail("unhandled domain: %d", domain);
+	}
 
 	ATF_REQUIRE_MSG(asprintf(&serv, "%d", port) >= 0,
 	    "asprintf failed: %s", strerror(errno));
 
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_family = domain;
-	hints.ai_flags = AI_ADDRCONFIG|AI_NUMERICSERV;
+	hints.ai_flags = AI_ADDRCONFIG|AI_NUMERICSERV|AI_NUMERICHOST;
 	hints.ai_socktype = type;
 
-	error = getaddrinfo("localhost", serv, &hints, res);
+	error = getaddrinfo(host, serv, &hints, res);
 	ATF_REQUIRE_EQ_MSG(error, 0,
 	    "getaddrinfo failed: %s", gai_strerror(error));
 	free(serv);

Modified: projects/clang800-import/lib/libefivar/efi-osdep.h
==============================================================================
--- projects/clang800-import/lib/libefivar/efi-osdep.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efi-osdep.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar-dp-format.c
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar-dp-format.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar-dp-format.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar-dp-parse.c
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar-dp-parse.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar-dp-parse.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar-dp-xlate.c
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar-dp-xlate.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar-dp-xlate.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar-dp.h
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar-dp.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar-dp.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar.3
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar.3	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar.3	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,3 +1,4 @@
+.\"
 .\" Copyright 2016 Netflix, Inc.
 .\" All rights reserved.
 .\"

Modified: projects/clang800-import/lib/libefivar/efivar.c
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2016 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/efivar.h
==============================================================================
--- projects/clang800-import/lib/libefivar/efivar.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/efivar.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2016 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/uefi-dplib.h
==============================================================================
--- projects/clang800-import/lib/libefivar/uefi-dplib.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/uefi-dplib.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libefivar/uefi-dputil.c
==============================================================================
--- projects/clang800-import/lib/libefivar/uefi-dputil.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libefivar/uefi-dputil.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2017 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/lib/libpmc/pmu-events/jevents.c
==============================================================================
--- projects/clang800-import/lib/libpmc/pmu-events/jevents.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libpmc/pmu-events/jevents.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -54,6 +54,10 @@
 #include "json.h"
 #include "jevents.h"
 
+static int
+nftw_ordered(const char *path, int (*fn)(const char *, const struct stat *, int,
+	struct FTW *), int nfds, int ftwflags);
+
 _Noreturn void	 _Exit(int);
 
 int verbose;
@@ -1122,7 +1126,7 @@ int main(int argc, char *argv[])
 
 	maxfds = get_maxfds();
 	mapfile = NULL;
-	rc = nftw(ldirname, preprocess_arch_std_files, maxfds, 0);
+	rc = nftw_ordered(ldirname, preprocess_arch_std_files, maxfds, 0);
 	if (rc && verbose) {
 		pr_info("%s: Error preprocessing arch standard files %s: %s\n",
 			prog, ldirname, strerror(errno));
@@ -1135,7 +1139,7 @@ int main(int argc, char *argv[])
 		goto empty_map;
 	}
 
-	rc = nftw(ldirname, process_one_file, maxfds, 0);
+	rc = nftw_ordered(ldirname, process_one_file, maxfds, 0);
 	if (rc && verbose) {
 		pr_info("%s: Error walking file tree %s\n", prog, ldirname);
 		goto empty_map;
@@ -1168,4 +1172,91 @@ empty_map:
 	create_empty_mapping(output_file);
 	free_arch_std_events();
 	return 0;
+}
+
+#include <fts.h>
+
+static int
+fts_compare(const FTSENT * const *a, const FTSENT * const *b)
+{
+	return (strcmp((*a)->fts_name, (*b)->fts_name));
+}
+
+static int
+nftw_ordered(const char *path, int (*fn)(const char *, const struct stat *, int,
+     struct FTW *), int nfds, int ftwflags)
+{
+	char * const paths[2] = { (char *)path, NULL };
+	struct FTW ftw;
+	FTSENT *cur;
+	FTS *ftsp;
+	int error = 0, ftsflags, fnflag, postorder, sverrno;
+
+	/* XXX - nfds is currently unused */
+	if (nfds < 1) {
+		errno = EINVAL;
+		return (-1);
+	}
+
+	ftsflags = FTS_COMFOLLOW;
+	if (!(ftwflags & FTW_CHDIR))
+		ftsflags |= FTS_NOCHDIR;
+	if (ftwflags & FTW_MOUNT)
+		ftsflags |= FTS_XDEV;
+	if (ftwflags & FTW_PHYS)
+		ftsflags |= FTS_PHYSICAL;
+	else
+		ftsflags |= FTS_LOGICAL;
+	postorder = (ftwflags & FTW_DEPTH) != 0;
+	ftsp = fts_open(paths, ftsflags, fts_compare);
+	if (ftsp == NULL)
+		return (-1);
+	while ((cur = fts_read(ftsp)) != NULL) {
+		switch (cur->fts_info) {
+		case FTS_D:
+			if (postorder)
+				continue;
+			fnflag = FTW_D;
+			break;
+		case FTS_DC:
+			continue;
+		case FTS_DNR:
+			fnflag = FTW_DNR;
+			break;
+		case FTS_DP:
+			if (!postorder)
+				continue;
+			fnflag = FTW_DP;
+			break;
+		case FTS_F:
+		case FTS_DEFAULT:
+			fnflag = FTW_F;
+			break;
+		case FTS_NS:
+		case FTS_NSOK:
+			fnflag = FTW_NS;
+			break;
+		case FTS_SL:
+			fnflag = FTW_SL;
+			break;
+		case FTS_SLNONE:
+			fnflag = FTW_SLN;
+			break;
+		default:
+			error = -1;
+			goto done;
+		}
+		ftw.base = cur->fts_pathlen - cur->fts_namelen;
+		ftw.level = cur->fts_level;
+		error = fn(cur->fts_path, cur->fts_statp, fnflag, &ftw);
+		if (error != 0)
+			break;
+	}
+done:
+	sverrno = errno;
+	if (fts_close(ftsp) != 0 && error == 0)
+		error = -1;
+	else
+		errno = sverrno;
+	return (error);
 }

Modified: projects/clang800-import/lib/libsysdecode/flags.c
==============================================================================
--- projects/clang800-import/lib/libsysdecode/flags.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libsysdecode/flags.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1208,7 +1208,7 @@ sysdecode_sctp_pr_policy(int policy)
 
 static struct name_table sctpsndflags[] = {
 	X(SCTP_EOF) X(SCTP_ABORT) X(SCTP_UNORDERED) X(SCTP_ADDR_OVER)
-	X(SCTP_SENDALL) X(SCTP_SACK_IMMEDIATELY) XEND
+	X(SCTP_SENDALL) X(SCTP_EOR) X(SCTP_SACK_IMMEDIATELY) XEND
 };
 
 bool

Modified: projects/clang800-import/lib/libthr/thread/thr_malloc.c
==============================================================================
--- projects/clang800-import/lib/libthr/thread/thr_malloc.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libthr/thread/thr_malloc.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -46,6 +46,8 @@ void
 __thr_malloc_init(void)
 {
 
+	if (npagesizes != 0)
+		return;
 	npagesizes = getpagesizes(pagesizes_d, nitems(pagesizes_d));
 	if (npagesizes == -1) {
 		npagesizes = 1;
@@ -59,6 +61,8 @@ static void
 thr_malloc_lock(struct pthread *curthread)
 {
 
+	if (curthread == NULL)
+		return;
 	curthread->locklevel++;
 	_thr_umutex_lock(&thr_malloc_umtx, TID(curthread));
 }
@@ -67,6 +71,8 @@ static void
 thr_malloc_unlock(struct pthread *curthread)
 {
 
+	if (curthread == NULL)
+		return;
 	_thr_umutex_unlock(&thr_malloc_umtx, TID(curthread));
 	curthread->locklevel--;
 	_thr_ast(curthread);

Modified: projects/clang800-import/lib/libthr/thread/thr_mutex.c
==============================================================================
--- projects/clang800-import/lib/libthr/thread/thr_mutex.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/lib/libthr/thread/thr_mutex.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -390,6 +390,7 @@ __pthread_mutex_init(pthread_mutex_t * __restrict mute
 	}
 	if (mutex_attr == NULL ||
 	    (*mutex_attr)->m_pshared == PTHREAD_PROCESS_PRIVATE) {
+		__thr_malloc_init();
 		return (mutex_init(mutex, mutex_attr ? *mutex_attr : NULL,
 		    __thr_calloc));
 	}

Modified: projects/clang800-import/release/arm64/PINE64-LTS.conf
==============================================================================
--- projects/clang800-import/release/arm64/PINE64-LTS.conf	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/release/arm64/PINE64-LTS.conf	Tue Feb  5 19:50:46 2019	(r343807)
@@ -6,7 +6,7 @@
 EMBEDDED_TARGET_ARCH="aarch64"
 EMBEDDED_TARGET="arm64"
 EMBEDDEDBUILD=1
-EMBEDDEDPORTS="sysutils/u-boot-sopine"
+EMBEDDEDPORTS="sysutils/u-boot-pine64-lts"
 FAT_SIZE="54m -b 1m"
 FAT_TYPE="16"
 IMAGE_SIZE="2560M"
@@ -18,7 +18,7 @@ FDT_OVERLAYS="sun50i-a64-sid,sun50i-a64-ths,sun50i-a64
 export BOARDNAME="PINE64-LTS"
 
 arm_install_uboot() {
-	UBOOT_DIR="/usr/local/share/u-boot/u-boot-sopine"
+	UBOOT_DIR="/usr/local/share/u-boot/u-boot-pine64-lts"
 	UBOOT_FILES="u-boot-sunxi-with-spl.bin"
 	chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
 		of=/dev/${mddev} bs=1k seek=8 conv=sync

Modified: projects/clang800-import/release/arm64/RPI3.conf
==============================================================================
--- projects/clang800-import/release/arm64/RPI3.conf	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/release/arm64/RPI3.conf	Tue Feb  5 19:50:46 2019	(r343807)
@@ -4,7 +4,7 @@
 #
 
 DTB_DIR="/usr/local/share/rpi-firmware"
-DTB="bcm2710-rpi-3-b.dtb"
+DTB="bcm2710-rpi-3-b.dtb bcm2710-rpi-3-b-plus.dtb"
 EMBEDDED_TARGET_ARCH="aarch64"
 EMBEDDED_TARGET="arm64"
 EMBEDDEDBUILD=1

Modified: projects/clang800-import/sbin/devmatch/devmatch.8
==============================================================================
--- projects/clang800-import/sbin/devmatch/devmatch.8	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/devmatch/devmatch.8	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,5 @@
 .\"
-.\" Copyright (c) 2017 Netflix, Inc
-.\"
-.\" All rights reserved.
+.\" Copyright (c) 2017 Netflix, Inc.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sbin/devmatch/devmatch.c
==============================================================================
--- projects/clang800-import/sbin/devmatch/devmatch.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/devmatch/devmatch.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2017 Netflix, Inc
- * All rights reserved.
+ * Copyright (c) 2017 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sbin/nvmecontrol/modules/wdc/wdc.c
==============================================================================
--- projects/clang800-import/sbin/nvmecontrol/modules/wdc/wdc.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/nvmecontrol/modules/wdc/wdc.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2017 Netflix, Inc
- * All rights reserved.
+ * Copyright (c) 2017 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sbin/nvmecontrol/nc_util.c
==============================================================================
--- projects/clang800-import/sbin/nvmecontrol/nc_util.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/nvmecontrol/nc_util.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2017 Netflix, Inc
- * All rights reserved.
+ * Copyright (c) 2017 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sbin/nvmecontrol/ns.c
==============================================================================
--- projects/clang800-import/sbin/nvmecontrol/ns.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/nvmecontrol/ns.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (c) 2017 Netflix, Inc
+ * Copyright (c) 2017 Netflix, Inc.
  * Copyright (C) 2018 Alexander Motin <mav@FreeBSD.org>
  *
  * Redistribution and use in source and binary forms, with or without

Modified: projects/clang800-import/sbin/nvmecontrol/nvmecontrol_ext.h
==============================================================================
--- projects/clang800-import/sbin/nvmecontrol/nvmecontrol_ext.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/nvmecontrol/nvmecontrol_ext.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (C) 2018 Netflix
+ * Copyright (C) 2018 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sbin/nvmecontrol/power.c
==============================================================================
--- projects/clang800-import/sbin/nvmecontrol/power.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sbin/nvmecontrol/power.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2016 Netflix, Inc
- * All rights reserved.
+ * Copyright (c) 2016 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/share/man/man4/nda.4
==============================================================================
--- projects/clang800-import/share/man/man4/nda.4	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/share/man/man4/nda.4	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
-.\" Copyright (c) 2017 Netflix, Inc
-.\" All rights reserved.
+.\"
+.\" Copyright (c) 2017 Netflix, Inc.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions

Modified: projects/clang800-import/share/man/man9/kern_testfrwk.9
==============================================================================
--- projects/clang800-import/share/man/man9/kern_testfrwk.9	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/share/man/man9/kern_testfrwk.9	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 .\"
-.\" Copyright (c) 2015 Netflix Inc.
-.\" All rights reserved.
+.\" Copyright (c) 2015 Netflix, Inc.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/efi/libefi/efienv.c
==============================================================================
--- projects/clang800-import/stand/efi/libefi/efienv.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/efi/libefi/efienv.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2018 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/efi/libefi/env.c
==============================================================================
--- projects/clang800-import/stand/efi/libefi/env.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/efi/libefi/env.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Netflix, Inc. All Rights Reserved.
+ * Copyright (c) 2015 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/efi/libefi/wchar.c
==============================================================================
--- projects/clang800-import/stand/efi/libefi/wchar.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/efi/libefi/wchar.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2016 Netflix, Inc. All Rights Reserved.
+ * Copyright 2016 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/efi/loader/main.c
==============================================================================
--- projects/clang800-import/stand/efi/loader/main.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/efi/loader/main.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,9 +1,10 @@
 /*-
  * Copyright (c) 2008-2010 Rui Paulo
  * Copyright (c) 2006 Marcel Moolenaar
- * Copyright (c) 2018 Netflix, Inc
  * All rights reserved.
  *
+ * Copyright (c) 2018 Netflix, Inc.
+ * 
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:

Modified: projects/clang800-import/stand/forth/efi.4th
==============================================================================
--- projects/clang800-import/stand/forth/efi.4th	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/forth/efi.4th	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
-\ Copyright (c) 2016 Netflix, Inc
-\ All rights reserved.
+\
+\ Copyright (c) 2016 Netflix, Inc.
 \
 \ Redistribution and use in source and binary forms, with or without
 \ modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/i386/libi386/biospci.c
==============================================================================
--- projects/clang800-import/stand/i386/libi386/biospci.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/i386/libi386/biospci.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,8 @@
 /*-
  * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2016 Netflix, Inc
  * All rights reserved.
+ *
+ * Copyright (c) 2016 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/libsa/abort.c
==============================================================================
--- projects/clang800-import/stand/libsa/abort.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/libsa/abort.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Netflix. All Rights Reserved.
+ * Copyright (c) 2018 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/stand/libsa/xlocale_private.h
==============================================================================
--- projects/clang800-import/stand/libsa/xlocale_private.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/stand/libsa/xlocale_private.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2018 Netflix
+ * Copyright (c) 2018 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/amd64/amd64/exception.S
==============================================================================
--- projects/clang800-import/sys/amd64/amd64/exception.S	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/amd64/amd64/exception.S	Tue Feb  5 19:50:46 2019	(r343807)
@@ -521,12 +521,14 @@ fast_syscall_common:
 	movq	TF_RFLAGS(%rsp),%r11	/* original %rflags */
 	movq	TF_RIP(%rsp),%rcx	/* original %rip */
 	movq	TF_RSP(%rsp),%rsp	/* user stack pointer */
+	xorl	%r8d,%r8d		/* zero the rest of GPRs */
+	xorl	%r10d,%r10d
 	cmpq	$~0,PCPU(UCR3)
 	je	2f
 	movq	PCPU(UCR3),%r9
 	movq	%r9,%cr3
-	xorl	%r9d,%r9d
-2:	swapgs
+2:	xorl	%r9d,%r9d
+	swapgs
 	sysretq
 
 3:	/* AST scheduled. */

Modified: projects/clang800-import/sys/amd64/conf/GENERIC
==============================================================================
--- projects/clang800-import/sys/amd64/conf/GENERIC	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/amd64/conf/GENERIC	Tue Feb  5 19:50:46 2019	(r343807)
@@ -102,8 +102,8 @@ options 	MALLOC_DEBUG_MAXZONES=8	# Separate malloc(9) 
 options 	VERBOSE_SYSINIT=0	# Support debug.verbose_sysinit, off by default
 
 # Kernel Sanitizers
-#options 	COVERAGE		# Generic kernel coverage. Used by KCOV
-#options 	KCOV			# Kernel Coverage Sanitizer
+options 	COVERAGE		# Generic kernel coverage. Used by KCOV
+options 	KCOV			# Kernel Coverage Sanitizer
 # Warning: KUBSAN can result in a kernel too large for loader to load
 #options 	KUBSAN			# Kernel Undefined Behavior Sanitizer
 

Modified: projects/clang800-import/sys/arm/arm/physmem.c
==============================================================================
--- projects/clang800-import/sys/arm/arm/physmem.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/arm/arm/physmem.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -29,6 +29,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_acpi.h"
 #include "opt_ddb.h"
 
 /*
@@ -48,8 +49,13 @@ __FBSDID("$FreeBSD$");
  * that can be allocated, or both, depending on the exclusion flags associated
  * with the region.
  */
+#ifdef DEV_ACPI
+#define	MAX_HWCNT	32	/* ACPI needs more regions */
+#define	MAX_EXCNT	32
+#else
 #define	MAX_HWCNT	16
 #define	MAX_EXCNT	16
+#endif
 
 #if defined(__arm__)
 #define	MAX_PHYS_ADDR	0xFFFFFFFFull

Modified: projects/clang800-import/sys/arm64/conf/GENERIC
==============================================================================
--- projects/clang800-import/sys/arm64/conf/GENERIC	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/arm64/conf/GENERIC	Tue Feb  5 19:50:46 2019	(r343807)
@@ -94,8 +94,8 @@ options 	USB_DEBUG		# enable debug msgs
 options 	VERBOSE_SYSINIT=0	# Support debug.verbose_sysinit, off by default
 
 # Kernel Sanitizers
-#options 	COVERAGE		# Generic kernel coverage. Used by KCOV
-#options 	KCOV			# Kernel Coverage Sanitizer
+options 	COVERAGE		# Generic kernel coverage. Used by KCOV
+options 	KCOV			# Kernel Coverage Sanitizer
 # Warning: KUBSAN can result in a kernel too large for loader to load
 #options 	KUBSAN			# Kernel Undefined Behavior Sanitizer
 

Modified: projects/clang800-import/sys/cam/nvme/nvme_all.c
==============================================================================
--- projects/clang800-import/sys/cam/nvme/nvme_all.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/cam/nvme/nvme_all.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (c) 2015 Netflix, Inc
+ * Copyright (c) 2015 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/cam/nvme/nvme_all.h
==============================================================================
--- projects/clang800-import/sys/cam/nvme/nvme_all.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/cam/nvme/nvme_all.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (c) 2015 Netflix, Inc
+ * Copyright (c) 2015 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/cam/nvme/nvme_da.c
==============================================================================
--- projects/clang800-import/sys/cam/nvme/nvme_da.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/cam/nvme/nvme_da.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,7 @@
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  *
- * Copyright (c) 2015 Netflix, Inc
+ * Copyright (c) 2015 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/cam/scsi/scsi_enc_ses.c
==============================================================================
--- projects/clang800-import/sys/cam/scsi/scsi_enc_ses.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/cam/scsi/scsi_enc_ses.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -2729,13 +2729,13 @@ ses_handle_string(enc_softc_t *enc, encioc_string_t *s
 	if (sstr->bufsiz > 0xffff)
 		return (EINVAL); /* buffer size too large */
 
-	if (ioc == ENCIOC_SETSTRING) {
+	switch (ioc) {
+	case ENCIOC_SETSTRING:
 		payload = sstr->bufsiz + 4; /* header for SEND DIAGNOSTIC */
 		amt = 0 - payload;
 		buf = ENC_MALLOC(payload);
 		if (buf == NULL)
-			return ENOMEM;
-
+			return (ENOMEM);
 		ses_page_cdb(cdb, payload, 0, CAM_DIR_OUT);
 		/* Construct the page request */
 		buf[0] = SesStringOut;
@@ -2743,12 +2743,14 @@ ses_handle_string(enc_softc_t *enc, encioc_string_t *s
 		buf[2] = sstr->bufsiz >> 8;
 		buf[3] = sstr->bufsiz & 0xff;
 		memcpy(&buf[4], sstr->buf, sstr->bufsiz);
-	} else if (ioc == ENCIOC_GETSTRING) {
+		break;
+	case ENCIOC_GETSTRING:
 		payload = sstr->bufsiz;
 		amt = payload;
 		ses_page_cdb(cdb, payload, SesStringIn, CAM_DIR_IN);
 		buf = sstr->buf;
-	} else if (ioc == ENCIOC_GETENCNAME) {
+		break;
+	case ENCIOC_GETENCNAME:
 		if (ses_cache->ses_nsubencs < 1)
 			return (ENODEV);
 		enc_desc = ses_cache->subencs[0];
@@ -2768,7 +2770,7 @@ ses_handle_string(enc_softc_t *enc, encioc_string_t *s
 			size = sstr->bufsiz;
 		copyout(str, sstr->buf, size);
 		return (size == rsize ? 0 : ENOMEM);
-	} else if (ioc == ENCIOC_GETENCID) {
+	case ENCIOC_GETENCID:
 		if (ses_cache->ses_nsubencs < 1)
 			return (ENODEV);
 		enc_desc = ses_cache->subencs[0];
@@ -2782,13 +2784,13 @@ ses_handle_string(enc_softc_t *enc, encioc_string_t *s
 			size = sstr->bufsiz;
 		copyout(str, sstr->buf, size);
 		return (size == rsize ? 0 : ENOMEM);
-	} else
-		return EINVAL;
-
+	default:
+		return (EINVAL);
+	}
 	ret = enc_runcmd(enc, cdb, 6, buf, &amt);
 	if (ioc == ENCIOC_SETSTRING)
 		ENC_FREE(buf);
-	return ret;
+	return (ret);
 }
 
 /**

Modified: projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
==============================================================================
--- projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -165,29 +165,38 @@ static vdev_ops_t *vdev_ops_table[] = {
 
 /* target number of metaslabs per top-level vdev */
 int vdev_max_ms_count = 200;
-SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, max_ms_count, CTLFLAG_RDTUN,
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, max_ms_count, CTLFLAG_RWTUN,
     &vdev_max_ms_count, 0,
-    "Maximum number of metaslabs per top-level vdev");
+    "Target number of metaslabs per top-level vdev");
 
 /* minimum number of metaslabs per top-level vdev */
 int vdev_min_ms_count = 16;
-SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, min_ms_count, CTLFLAG_RDTUN,
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, min_ms_count, CTLFLAG_RWTUN,
     &vdev_min_ms_count, 0,
     "Minimum number of metaslabs per top-level vdev");
 
 /* practical upper limit of total metaslabs per top-level vdev */
 int vdev_ms_count_limit = 1ULL << 17;
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, max_ms_count_limit, CTLFLAG_RWTUN,
+    &vdev_ms_count_limit, 0,
+    "Maximum number of metaslabs per top-level vdev");
 
 /* lower limit for metaslab size (512M) */
 int vdev_default_ms_shift = 29;
-SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, default_ms_shift, CTLFLAG_RDTUN,
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, default_ms_shift, CTLFLAG_RWTUN,
     &vdev_default_ms_shift, 0,
-    "Shift between vdev size and number of metaslabs");
+    "Default shift between vdev size and number of metaslabs");
 
 /* upper limit for metaslab size (256G) */
 int vdev_max_ms_shift = 38;
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, max_ms_shift, CTLFLAG_RWTUN,
+    &vdev_max_ms_shift, 0,
+    "Maximum shift between vdev size and number of metaslabs");
 
 boolean_t vdev_validate_skip = B_FALSE;
+SYSCTL_INT(_vfs_zfs_vdev, OID_AUTO, validate_skip, CTLFLAG_RWTUN,
+    &vdev_validate_skip, 0,
+    "Bypass vdev validation");
 
 /*
  * Since the DTL space map of a vdev is not expected to have a lot of

Modified: projects/clang800-import/sys/conf/files
==============================================================================
--- projects/clang800-import/sys/conf/files	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/conf/files	Tue Feb  5 19:50:46 2019	(r343807)
@@ -3808,7 +3808,7 @@ kern/kern_idle.c		standard
 kern/kern_intr.c		standard
 kern/kern_jail.c		standard
 kern/kern_kcov.c		optional kcov			\
-	compile-with		"${NORMAL_C} -fno-sanitize-coverage=trace-pc,trace-cmp"
+	compile-with		"${NORMAL_C} -fno-sanitize=all"
 kern/kern_khelp.c		standard
 kern/kern_kthread.c		standard
 kern/kern_ktr.c			optional ktr

Modified: projects/clang800-import/sys/conf/kern.pre.mk
==============================================================================
--- projects/clang800-import/sys/conf/kern.pre.mk	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/conf/kern.pre.mk	Tue Feb  5 19:50:46 2019	(r343807)
@@ -120,7 +120,12 @@ SAN_CFLAGS+=	-fsanitize=undefined
 
 COVERAGE_ENABLED!=	grep COVERAGE opt_global.h || true ; echo
 .if !empty(COVERAGE_ENABLED)
+.if ${COMPILER_TYPE} == "clang" || \
+    (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 80100)
 SAN_CFLAGS+=	-fsanitize-coverage=trace-pc,trace-cmp
+.else
+SAN_CFLAGS+=	-fsanitize-coverage=trace-pc
+.endif
 .endif
 
 CFLAGS+=	${SAN_CFLAGS}

Modified: projects/clang800-import/sys/contrib/ipfilter/netinet/fil.c
==============================================================================
--- projects/clang800-import/sys/contrib/ipfilter/netinet/fil.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/contrib/ipfilter/netinet/fil.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -6119,9 +6119,7 @@ ipf_getifname(ifp, buffer)
 	char *buffer;
 {
 	static char namebuf[LIFNAMSIZ];
-# if defined(MENTAT) || defined(__FreeBSD__) || defined(__osf__) || \
-     defined(__sgi) || defined(linux) || defined(_AIX51) || \
-     (defined(sun) && !defined(__SVR4) && !defined(__svr4__))
+# if defined(MENTAT) || defined(__FreeBSD__)
 	int unit, space;
 	char temp[20];
 	char *s;
@@ -6131,9 +6129,7 @@ ipf_getifname(ifp, buffer)
 		buffer = namebuf;
 	(void) strncpy(buffer, ifp->if_name, LIFNAMSIZ);
 	buffer[LIFNAMSIZ - 1] = '\0';
-# if defined(MENTAT) || defined(__FreeBSD__) || defined(__osf__) || \
-     defined(__sgi) || defined(_AIX51) || \
-     (defined(sun) && !defined(__SVR4) && !defined(__svr4__))
+# if defined(MENTAT) || defined(__FreeBSD__)
 	for (s = buffer; *s; s++)
 		;
 	unit = ifp->if_unit;

Modified: projects/clang800-import/sys/crypto/aesni/aesencdec.h
==============================================================================
--- projects/clang800-import/sys/crypto/aesni/aesencdec.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/crypto/aesni/aesencdec.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,7 +1,8 @@
 /*-
  * Copyright 2013 John-Mark Gurney <jmg@FreeBSD.org>
- * Copyright 2015 Netflix, Inc.
  * All rights reserved.
+ *
+ * Copyright 2015 Netflix, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/dev/efidev/efidev.c
==============================================================================
--- projects/clang800-import/sys/dev/efidev/efidev.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/dev/efidev/efidev.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 2016 Netflix, Inc.
- * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: projects/clang800-import/sys/dev/netmap/if_ptnet.c
==============================================================================
--- projects/clang800-import/sys/dev/netmap/if_ptnet.c	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/dev/netmap/if_ptnet.c	Tue Feb  5 19:50:46 2019	(r343807)
@@ -1151,10 +1151,10 @@ ptnet_sync_from_csb(struct ptnet_softc *sc, struct net
 		kring->nr_hwtail = kring->rtail =
 			kring->ring->tail = ktoa->hwtail;
 
-		ND("%d,%d: csb {hc %u h %u c %u ht %u}", t, i,
+		nm_prdis("%d,%d: csb {hc %u h %u c %u ht %u}", t, i,
 		   ktoa->hwcur, atok->head, atok->cur,
 		   ktoa->hwtail);
-		ND("%d,%d: kring {hc %u rh %u rc %u h %u c %u ht %u rt %u t %u}",
+		nm_prdis("%d,%d: kring {hc %u rh %u rc %u h %u c %u ht %u rt %u t %u}",
 		   t, i, kring->nr_hwcur, kring->rhead, kring->rcur,
 		   kring->ring->head, kring->ring->cur, kring->nr_hwtail,
 		   kring->rtail, kring->ring->tail);
@@ -1179,7 +1179,6 @@ ptnet_nm_register(struct netmap_adapter *na, int onoff
 	struct ptnet_softc *sc = if_getsoftc(ifp);
 	int native = (na == &sc->ptna->hwup.up);
 	struct ptnet_queue *pq;
-	enum txrx t;
 	int ret = 0;
 	int i;
 
@@ -1194,7 +1193,7 @@ ptnet_nm_register(struct netmap_adapter *na, int onoff
 	 * in the RX rings, since we will not receive further interrupts
 	 * until these will be processed. */
 	if (native && !onoff && na->active_fds == 0) {
-		D("Exit netmap mode, re-enable interrupts");
+		nm_prinf("Exit netmap mode, re-enable interrupts");
 		for (i = 0; i < sc->num_rings; i++) {
 			pq = sc->queues + i;
 			pq->atok->appl_need_kick = 1;
@@ -1230,30 +1229,14 @@ ptnet_nm_register(struct netmap_adapter *na, int onoff
 		/* If not native, don't call nm_set_native_flags, since we don't want
 		 * to replace if_transmit method, nor set NAF_NETMAP_ON */
 		if (native) {
-			for_rx_tx(t) {
-				for (i = 0; i <= nma_get_nrings(na, t); i++) {
-					struct netmap_kring *kring = NMR(na, t)[i];
-
-					if (nm_kring_pending_on(kring)) {
-						kring->nr_mode = NKR_NETMAP_ON;
-					}
-				}
-			}
+			netmap_krings_mode_commit(na, onoff);
 			nm_set_native_flags(na);
 		}
 
 	} else {
 		if (native) {
 			nm_clear_native_flags(na);
-			for_rx_tx(t) {
-				for (i = 0; i <= nma_get_nrings(na, t); i++) {
-					struct netmap_kring *kring = NMR(na, t)[i];
-
-					if (nm_kring_pending_off(kring)) {
-						kring->nr_mode = NKR_NETMAP_OFF;
-					}
-				}
-			}
+			netmap_krings_mode_commit(na, onoff);
 		}
 
 		if (sc->ptna->backend_users == 0) {
@@ -1728,7 +1711,7 @@ ptnet_drain_transmit_queue(struct ptnet_queue *pq, uns
 
 	if (!PTNET_Q_TRYLOCK(pq)) {
 		/* We failed to acquire the lock, schedule the taskqueue. */
-		RD(1, "Deferring TX work");
+		nm_prlim(1, "Deferring TX work");
 		if (may_resched) {
 			taskqueue_enqueue(pq->taskq, &pq->task);
 		}
@@ -1738,7 +1721,7 @@ ptnet_drain_transmit_queue(struct ptnet_queue *pq, uns
 
 	if (unlikely(!(ifp->if_drv_flags & IFF_DRV_RUNNING))) {
 		PTNET_Q_UNLOCK(pq);
-		RD(1, "Interface is down");
+		nm_prlim(1, "Interface is down");
 		return ENETDOWN;
 	}
 
@@ -1776,7 +1759,7 @@ ptnet_drain_transmit_queue(struct ptnet_queue *pq, uns
 					break;
 				}
 
-				RD(1, "Found more slots by doublecheck");
+				nm_prlim(1, "Found more slots by doublecheck");
 				/* More slots were freed before reactivating
 				 * the interrupts. */
 				atok->appl_need_kick = 0;
@@ -1815,7 +1798,7 @@ ptnet_drain_transmit_queue(struct ptnet_queue *pq, uns
 					continue;
 				}
 			}
-			ND(1, "%s: [csum_flags %lX] vnet hdr: flags %x "
+			nm_prdis(1, "%s: [csum_flags %lX] vnet hdr: flags %x "
 			      "csum_start %u csum_ofs %u hdr_len = %u "
 			      "gso_size %u gso_type %x", __func__,
 			      mhead->m_pkthdr.csum_flags, vh->flags,
@@ -1890,7 +1873,7 @@ ptnet_drain_transmit_queue(struct ptnet_queue *pq, uns
 	}
 
 	if (count >= budget && may_resched) {
-		DBG(RD(1, "out of budget: resched, %d mbufs pending\n",
+		DBG(nm_prlim(1, "out of budget: resched, %d mbufs pending\n",
 					drbr_inuse(ifp, pq->bufring)));
 		taskqueue_enqueue(pq->taskq, &pq->task);
 	}
@@ -1932,7 +1915,7 @@ ptnet_transmit(if_t ifp, struct mbuf *m)
 	err = drbr_enqueue(ifp, pq->bufring, m);
 	if (err) {
 		/* ENOBUFS when the bufring is full */
-		RD(1, "%s: drbr_enqueue() failed %d\n",
+		nm_prlim(1, "%s: drbr_enqueue() failed %d\n",
 			__func__, err);
 		pq->stats.errors ++;
 		return err;
@@ -2077,13 +2060,13 @@ host_sync:
 				/* There is no good reason why host should
 				 * put the header in multiple netmap slots.
 				 * If this is the case, discard. */
-				RD(1, "Fragmented vnet-hdr: dropping");
+				nm_prlim(1, "Fragmented vnet-hdr: dropping");
 				head = ptnet_rx_discard(kring, head);
 				pq->stats.iqdrops ++;
 				deliver = 0;
 				goto skip;
 			}
-			ND(1, "%s: vnet hdr: flags %x csum_start %u "
+			nm_prdis(1, "%s: vnet hdr: flags %x csum_start %u "
 			      "csum_ofs %u hdr_len = %u gso_size %u "
 			      "gso_type %x", __func__, vh->flags,
 			      vh->csum_start, vh->csum_offset, vh->hdr_len,
@@ -2147,7 +2130,7 @@ host_sync:
 				/* The very last slot prepared by the host has
 				 * the NS_MOREFRAG set. Drop it and continue
 				 * the outer cycle (to do the double-check). */
-				RD(1, "Incomplete packet: dropping");
+				nm_prlim(1, "Incomplete packet: dropping");
 				m_freem(mhead);
 				pq->stats.iqdrops ++;
 				goto host_sync;
@@ -2185,7 +2168,7 @@ host_sync:
 					| VIRTIO_NET_HDR_F_DATA_VALID))) {
 			if (unlikely(ptnet_rx_csum(mhead, vh))) {
 				m_freem(mhead);
-				RD(1, "Csum offload error: dropping");
+				nm_prlim(1, "Csum offload error: dropping");
 				pq->stats.iqdrops ++;
 				deliver = 0;
 			}
@@ -2231,7 +2214,7 @@ escape:
 	if (count >= budget && may_resched) {
 		/* If we ran out of budget or the double-check found new
 		 * slots to process, schedule the taskqueue. */
-		DBG(RD(1, "out of budget: resched h %u t %u\n",
+		DBG(nm_prlim(1, "out of budget: resched h %u t %u\n",
 					head, ring->tail));
 		taskqueue_enqueue(pq->taskq, &pq->task);
 	}
@@ -2246,7 +2229,7 @@ ptnet_rx_task(void *context, int pending)
 {
 	struct ptnet_queue *pq = context;
 
-	DBG(RD(1, "%s: pq #%u\n", __func__, pq->kring_id));
+	DBG(nm_prlim(1, "%s: pq #%u\n", __func__, pq->kring_id));
 	ptnet_rx_eof(pq, PTNET_RX_BUDGET, true);
 }
 
@@ -2255,7 +2238,7 @@ ptnet_tx_task(void *context, int pending)
 {
 	struct ptnet_queue *pq = context;
 
-	DBG(RD(1, "%s: pq #%u\n", __func__, pq->kring_id));
+	DBG(nm_prlim(1, "%s: pq #%u\n", __func__, pq->kring_id));
 	ptnet_drain_transmit_queue(pq, PTNET_TX_BUDGET, true);
 }
 
@@ -2273,7 +2256,7 @@ ptnet_poll(if_t ifp, enum poll_cmd cmd, int budget)
 
 	KASSERT(sc->num_rings > 0, ("Found no queues in while polling ptnet"));
 	queue_budget = MAX(budget / sc->num_rings, 1);
-	RD(1, "Per-queue budget is %d", queue_budget);
+	nm_prlim(1, "Per-queue budget is %d", queue_budget);
 
 	while (budget) {
 		unsigned int rcnt = 0;

Modified: projects/clang800-import/sys/dev/netmap/if_vtnet_netmap.h
==============================================================================
--- projects/clang800-import/sys/dev/netmap/if_vtnet_netmap.h	Tue Feb  5 19:48:24 2019	(r343806)
+++ projects/clang800-import/sys/dev/netmap/if_vtnet_netmap.h	Tue Feb  5 19:50:46 2019	(r343807)
@@ -90,7 +90,6 @@ vtnet_netmap_reg(struct netmap_adapter *na, int state)

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