Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Sep 2018 19:50:36 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r338690 - in projects/clang700-import: . bin/dd bin/rm bin/rm/tests contrib/libarchive contrib/libarchive/cpio/test contrib/libarchive/libarchive contrib/llvm/tools/lld/ELF contrib/llvm...
Message-ID:  <201809141950.w8EJoaXX056594@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Fri Sep 14 19:50:36 2018
New Revision: 338690
URL: https://svnweb.freebsd.org/changeset/base/338690

Log:
  Merge ^/head r338595 through r338689, and resolve conflicts.

Added:
  projects/clang700-import/bin/rm/tests/
     - copied from r338689, head/bin/rm/tests/
  projects/clang700-import/lib/libpam/pam.d/
     - copied from r338689, head/lib/libpam/pam.d/
  projects/clang700-import/tests/sys/netinet/reuseport_lb.c
     - copied unchanged from r338689, head/tests/sys/netinet/reuseport_lb.c
  projects/clang700-import/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD
     - copied unchanged from r338689, head/tools/build/options/WITHOUT_REPRODUCIBLE_BUILD
Deleted:
  projects/clang700-import/etc/pam.d/
Modified:
  projects/clang700-import/UPDATING
  projects/clang700-import/bin/dd/misc.c
  projects/clang700-import/bin/rm/Makefile
  projects/clang700-import/bin/rm/rm.1
  projects/clang700-import/bin/rm/rm.c
  projects/clang700-import/contrib/libarchive/NEWS
  projects/clang700-import/contrib/libarchive/README.md
  projects/clang700-import/contrib/libarchive/cpio/test/test_basic.c
  projects/clang700-import/contrib/libarchive/cpio/test/test_format_newc.c
  projects/clang700-import/contrib/libarchive/libarchive/archive.h
  projects/clang700-import/contrib/libarchive/libarchive/archive_cryptor.c
  projects/clang700-import/contrib/libarchive/libarchive/archive_entry.h
  projects/clang700-import/contrib/libarchive/libarchive/archive_pack_dev.c
  projects/clang700-import/contrib/llvm/tools/lld/ELF/Config.h
  projects/clang700-import/contrib/llvm/tools/lld/ELF/Driver.cpp
  projects/clang700-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
  projects/clang700-import/contrib/llvm/tools/lld/docs/ld.lld.1
  projects/clang700-import/contrib/ofed/infiniband-diags/src/ibdiag_common.c
  projects/clang700-import/contrib/tcpdump/tcpdump.c
  projects/clang700-import/etc/Makefile
  projects/clang700-import/etc/mtree/BSD.tests.dist
  projects/clang700-import/lib/Makefile
  projects/clang700-import/lib/libpam/Makefile
  projects/clang700-import/lib/libpmc/Makefile
  projects/clang700-import/lib/libpmc/libpmc_pmu_util.c
  projects/clang700-import/lib/libusb/libusb10.c
  projects/clang700-import/lib/libusb/libusb10.h
  projects/clang700-import/lib/libusb/libusb10_io.c
  projects/clang700-import/sbin/geom/core/geom.8
  projects/clang700-import/sbin/geom/core/geom.c
  projects/clang700-import/sbin/reboot/reboot.c
  projects/clang700-import/sbin/umount/umount.c
  projects/clang700-import/share/man/man4/ig4.4
  projects/clang700-import/share/man/man5/src.conf.5
  projects/clang700-import/share/mk/src.opts.mk
  projects/clang700-import/sys/amd64/amd64/machdep.c
  projects/clang700-import/sys/amd64/amd64/support.S
  projects/clang700-import/sys/amd64/conf/GENERIC
  projects/clang700-import/sys/amd64/conf/MINIMAL
  projects/clang700-import/sys/arm/conf/std.armv6
  projects/clang700-import/sys/arm/conf/std.armv7
  projects/clang700-import/sys/arm64/conf/GENERIC-MMCCAM
  projects/clang700-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/clang700-import/sys/compat/x86bios/x86bios.c
  projects/clang700-import/sys/conf/files.arm64
  projects/clang700-import/sys/conf/kern.opts.mk
  projects/clang700-import/sys/conf/kern.post.mk
  projects/clang700-import/sys/conf/newvers.sh
  projects/clang700-import/sys/dev/cpuctl/cpuctl.c
  projects/clang700-import/sys/dev/cxgbe/iw_cxgbe/cm.c
  projects/clang700-import/sys/dev/cxgbe/t4_main.c
  projects/clang700-import/sys/dev/hwpmc/hwpmc_mod.c
  projects/clang700-import/sys/dev/ichiic/ig4_pci.c
  projects/clang700-import/sys/dev/xen/privcmd/privcmd.c
  projects/clang700-import/sys/kern/imgact_elf.c
  projects/clang700-import/sys/kern/vfs_vnops.c
  projects/clang700-import/sys/net/vnet.h
  projects/clang700-import/sys/netinet/tcp_stacks/rack.c
  projects/clang700-import/sys/riscv/conf/GENERIC
  projects/clang700-import/sys/riscv/riscv/elf_machdep.c
  projects/clang700-import/sys/sys/pcpu.h
  projects/clang700-import/sys/x86/include/ucode.h
  projects/clang700-import/sys/x86/x86/local_apic.c
  projects/clang700-import/sys/x86/x86/msi.c
  projects/clang700-import/sys/x86/x86/ucode.c
  projects/clang700-import/sys/x86/xen/hvm.c
  projects/clang700-import/sys/x86/xen/pv.c
  projects/clang700-import/sys/x86/xen/pvcpu_enum.c
  projects/clang700-import/sys/x86/xen/xen_apic.c
  projects/clang700-import/sys/x86/xen/xen_intr.c
  projects/clang700-import/sys/xen/xen_intr.h
  projects/clang700-import/tests/sys/netinet/Makefile
  projects/clang700-import/usr.bin/bsdcat/Makefile
  projects/clang700-import/usr.bin/cpio/Makefile
  projects/clang700-import/usr.bin/objcopy/Makefile
  projects/clang700-import/usr.bin/tar/Makefile
  projects/clang700-import/usr.sbin/Makefile
Directory Properties:
  projects/clang700-import/   (props changed)
  projects/clang700-import/contrib/libarchive/   (props changed)
  projects/clang700-import/contrib/llvm/   (props changed)
  projects/clang700-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang700-import/contrib/tcpdump/   (props changed)
  projects/clang700-import/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/clang700-import/UPDATING
==============================================================================
--- projects/clang700-import/UPDATING	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/UPDATING	Fri Sep 14 19:50:36 2018	(r338690)
@@ -113,7 +113,9 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
 20180719:
 	New uid:gid added, ntpd:ntpd (123:123).  Be sure to run mergemaster
 	or take steps to update /etc/passwd before doing installworld on
-	existing systems.  Also, rc.d/ntpd now starts ntpd(8) as user ntpd
+	existing systems.  Do not skip the "mergemaster -Fp" step before
+	installworld, as described in the update procedures near the bottom
+	of this document.  Also, rc.d/ntpd now starts ntpd(8) as user ntpd
 	if the new mac_ntpd(4) policy is available, unless ntpd_flags or
 	the ntp config file contain options that change file/dir locations.
 	When such options (e.g., "statsdir" or "crypto") are used, ntpd can

Modified: projects/clang700-import/bin/dd/misc.c
==============================================================================
--- projects/clang700-import/bin/dd/misc.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/bin/dd/misc.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -111,7 +111,7 @@ progress(void)
 {
 	static int outlen;
 	char si[4 + 1 + 2 + 1];		/* 123 <space> <suffix> NUL */
-	char iec[4 + 1 + 2 + 1];	/* 123 <space> <suffix> NUL */
+	char iec[4 + 1 + 3 + 1];	/* 123 <space> <suffix> NUL */
 	char persec[4 + 1 + 2 + 1];	/* 123 <space> <suffix> NUL */
 	char *buf;
 	double secs;
@@ -121,11 +121,11 @@ progress(void)
 	    HN_DECIMAL | HN_DIVISOR_1000);
 	humanize_number(iec, sizeof(iec), (int64_t)st.bytes, "B", HN_AUTOSCALE,
 	    HN_DECIMAL | HN_IEC_PREFIXES);
-	humanize_number(persec, sizeof(iec), (int64_t)(st.bytes / secs), "B",
+	humanize_number(persec, sizeof(persec), (int64_t)(st.bytes / secs), "B",
 	    HN_AUTOSCALE, HN_DECIMAL | HN_DIVISOR_1000);
 	asprintf(&buf, "  %'ju bytes (%s, %s) transferred %.3fs, %s/s",
 	    (uintmax_t)st.bytes, si, iec, secs, persec);
-	outlen = fprintf(stderr, "%-*s\r", outlen, buf);
+	outlen = fprintf(stderr, "%-*s\r", outlen, buf) - 1;
 	fflush(stderr);
 	free(buf);
 	need_progress = 0;

Modified: projects/clang700-import/bin/rm/Makefile
==============================================================================
--- projects/clang700-import/bin/rm/Makefile	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/bin/rm/Makefile	Fri Sep 14 19:50:36 2018	(r338690)
@@ -1,10 +1,15 @@
 #	@(#)Makefile	8.1 (Berkeley) 5/31/93
 # $FreeBSD$
 
+.include <src.opts.mk>
+
 PACKAGE=runtime
 PROG=	rm
 
 LINKS=	${BINDIR}/rm ${BINDIR}/unlink
 MLINKS=	rm.1 unlink.1
+
+HAS_TESTS=
+SUBDIR.${MK_TESTS}+= tests
 
 .include <bsd.prog.mk>

Modified: projects/clang700-import/bin/rm/rm.1
==============================================================================
--- projects/clang700-import/bin/rm/rm.1	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/bin/rm/rm.1	Fri Sep 14 19:50:36 2018	(r338690)
@@ -32,7 +32,7 @@
 .\"	@(#)rm.1	8.5 (Berkeley) 12/5/94
 .\" $FreeBSD$
 .\"
-.Dd November 7, 2015
+.Dd September 12, 2018
 .Dt RM 1
 .Os
 .Sh NAME
@@ -45,6 +45,7 @@
 .Op Fl dIPRrvWx
 .Ar
 .Nm unlink
+.Op Fl -
 .Ar file
 .Sh DESCRIPTION
 The
@@ -154,6 +155,9 @@ No options may be supplied in this simple mode of oper
 which performs an
 .Xr unlink 2
 operation on the passed argument.
+However, the usual option-end delimiter,
+.Fl - ,
+may optionally precede the argument.
 .Sh EXIT STATUS
 The
 .Nm
@@ -201,11 +205,12 @@ directory hierarchy:
 .Pp
 .Dl $ rm -rf foobar
 .Pp
-Either of these commands will remove the file
+Any of these commands will remove the file
 .Pa -f :
 .Bd -literal -offset indent
 $ rm -- -f
 $ rm ./-f
+$ unlink -f
 .Ed
 .Sh COMPATIBILITY
 The

Modified: projects/clang700-import/bin/rm/rm.c
==============================================================================
--- projects/clang700-import/bin/rm/rm.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/bin/rm/rm.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -101,13 +101,12 @@ main(int argc, char *argv[])
 	else
 		++p;
 	if (strcmp(p, "unlink") == 0) {
-		while (getopt(argc, argv, "") != -1)
+		if (argc == 2)
+			rm_file(&argv[1]);
+		else if (argc == 3 && strcmp(argv[1], "--") == 0)
+			rm_file(&argv[2]);
+		else
 			usage();
-		argc -= optind;
-		argv += optind;
-		if (argc != 1)
-			usage();
-		rm_file(&argv[0]);
 		exit(eval);
 	}
 
@@ -634,7 +633,7 @@ usage(void)
 
 	(void)fprintf(stderr, "%s\n%s\n",
 	    "usage: rm [-f | -i] [-dIPRrvWx] file ...",
-	    "       unlink file");
+	    "       unlink [--] file");
 	exit(EX_USAGE);
 }
 

Modified: projects/clang700-import/contrib/libarchive/NEWS
==============================================================================
--- projects/clang700-import/contrib/libarchive/NEWS	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/NEWS	Fri Sep 14 19:50:36 2018	(r338690)
@@ -1,3 +1,13 @@
+Sep 03, 2018: libarchive 3.3.3 released
+
+Jul 19, 2018: Avoid super-linear slowdown on malformed mtree files
+
+Jan 27, 2018: Many fixes for building with Visual Studio
+
+Oct 19, 2017: NO_OVERWRITE doesn't change existing directory attributes
+
+Aug 12, 2017: New support for Zstandard read and write filters
+
 Jul 09, 2017: libarchive 3.3.2 released
 
 Mar 16, 2017: NFSv4 ACL support for Linux (librichacl)

Modified: projects/clang700-import/contrib/libarchive/README.md
==============================================================================
--- projects/clang700-import/contrib/libarchive/README.md	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/README.md	Fri Sep 14 19:50:36 2018	(r338690)
@@ -99,6 +99,7 @@ The library also detects and handles any of the follow
   * lzma, lzip, and xz compression
   * lz4 compression
   * lzop compression
+  * zstandard compression
 
 The library can create archives in any of the following formats:
   * POSIX ustar
@@ -125,6 +126,7 @@ When creating archives, the result can be filtered wit
   * lzma, lzip, and xz compression
   * lz4 compression
   * lzop compression
+  * zstandard compression
 
 ## Notes about the Library Design
 
@@ -159,7 +161,7 @@ questions we are asked about libarchive:
 
 * On read, compression and format are always detected automatically.
 
-* The same API is used for all formats; in particular, it's very
+* The same API is used for all formats; it should be very
   easy for software using libarchive to transparently handle
   any of libarchive's archiving formats.
 

Modified: projects/clang700-import/contrib/libarchive/cpio/test/test_basic.c
==============================================================================
--- projects/clang700-import/contrib/libarchive/cpio/test/test_basic.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/cpio/test/test_basic.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -144,49 +144,79 @@ DEFINE_TEST(test_basic)
 	/* File with 10 bytes content. */
 	assertMakeFile("file", 0644, "1234567890");
 	fprintf(filelist, "file\n");
-	if (is_LargeInode("file"))
+	if (is_LargeInode("file")) {
 		strncat(result,
-		    "bsdcpio: file: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: file: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
 
 	/* hardlink to above file. */
 	assertMakeHardlink("linkfile", "file");
 	fprintf(filelist, "linkfile\n");
-	if (is_LargeInode("linkfile"))
+	if (is_LargeInode("linkfile")) {
 		strncat(result,
-		    "bsdcpio: linkfile: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: linkfile: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
 
 	/* Symlink to above file. */
 	if (canSymlink()) {
 		assertMakeSymlink("symlink", "file");
 		fprintf(filelist, "symlink\n");
-		if (is_LargeInode("symlink"))
+		if (is_LargeInode("symlink")) {
 			strncat(result,
-			    "bsdcpio: symlink: large inode number truncated: "
-				"Numerical result out of range\n",
+			    "bsdcpio: symlink: large inode number truncated: ",
 			    sizeof(result) - strlen(result) -1);
+			strncat(result,
+			    strerror(ERANGE),
+			    sizeof(result) - strlen(result) -1);
+			strncat(result,
+			    "\n",
+			    sizeof(result) - strlen(result) -1);
+		}
 	}
 
 	/* Another file with different permissions. */
 	assertMakeFile("file2", 0777, "1234567890");
 	fprintf(filelist, "file2\n");
-	if (is_LargeInode("file2"))
+	if (is_LargeInode("file2")) {
 		strncat(result,
-		    "bsdcpio: file2: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: file2: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
 
 	/* Directory. */
 	assertMakeDir("dir", 0775);
 	fprintf(filelist, "dir\n");
-	if (is_LargeInode("dir"))
+	if (is_LargeInode("dir")) {
 		strncat(result,
-		    "bsdcpio: dir: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: dir: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result,
+		    "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
 	strncat(result, "2 blocks\n", sizeof(result) - strlen(result) -1);
 
 	/* All done. */

Modified: projects/clang700-import/contrib/libarchive/cpio/test/test_format_newc.c
==============================================================================
--- projects/clang700-import/contrib/libarchive/cpio/test/test_format_newc.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/cpio/test/test_format_newc.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -124,26 +124,42 @@ DEFINE_TEST(test_format_newc)
 
 	/* Setup result message. */
 	memset(result, 0, sizeof(result));
-	if (is_LargeInode("file1"))
+	if (is_LargeInode("file1")) {
 		strncat(result,
-		    "bsdcpio: file1: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: file1: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
-	if (canSymlink() && is_LargeInode("symlink"))
+		strncat(result, strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result, "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
+	if (canSymlink() && is_LargeInode("symlink")) {
 		strncat(result,
-		    "bsdcpio: symlink: large inode number truncated: "
-			"Numerical result out of range\n",
+		    "bsdcpio: symlink: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
-	if (is_LargeInode("dir"))
+		strncat(result, strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result, "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
+	if (is_LargeInode("dir")) {
 		strncat(result,
-		    "bsdcpio: dir: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: dir: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
-	if (is_LargeInode("hardlink"))
+		strncat(result, strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result, "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
+	if (is_LargeInode("hardlink")) {
 		strncat(result,
-		    "bsdcpio: hardlink: large inode number truncated: "
-		    "Numerical result out of range\n",
+		    "bsdcpio: hardlink: large inode number truncated: ",
 		    sizeof(result) - strlen(result) -1);
+		strncat(result, strerror(ERANGE),
+		    sizeof(result) - strlen(result) -1);
+		strncat(result, "\n",
+		    sizeof(result) - strlen(result) -1);
+	}
 
 	/* Record some facts about what we just created: */
 	now = time(NULL); /* They were all created w/in last two seconds. */

Modified: projects/clang700-import/contrib/libarchive/libarchive/archive.h
==============================================================================
--- projects/clang700-import/contrib/libarchive/libarchive/archive.h	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/libarchive/archive.h	Fri Sep 14 19:50:36 2018	(r338690)
@@ -36,7 +36,7 @@
  * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
  */
 /* Note: Compiler will complain if this does not match archive_entry.h! */
-#define	ARCHIVE_VERSION_NUMBER 3003002
+#define	ARCHIVE_VERSION_NUMBER 3003003
 
 #include <sys/stat.h>
 #include <stddef.h>  /* for wchar_t */
@@ -155,7 +155,7 @@ __LA_DECL int		archive_version_number(void);
 /*
  * Textual name/version of the library, useful for version displays.
  */
-#define	ARCHIVE_VERSION_ONLY_STRING "3.3.2"
+#define	ARCHIVE_VERSION_ONLY_STRING "3.3.3"
 #define	ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
 __LA_DECL const char *	archive_version_string(void);
 

Modified: projects/clang700-import/contrib/libarchive/libarchive/archive_cryptor.c
==============================================================================
--- projects/clang700-import/contrib/libarchive/libarchive/archive_cryptor.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/libarchive/archive_cryptor.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -153,7 +153,7 @@ aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
 	CCCryptorStatus r;
 
 	r = CCCryptorReset(ref, NULL);
-	if (r != kCCSuccess)
+	if (r != kCCSuccess && r != kCCUnimplemented)
 		return -1;
 	r = CCCryptorUpdate(ref, ctx->nonce, AES_BLOCK_SIZE, ctx->encr_buf,
 	    AES_BLOCK_SIZE, NULL);

Modified: projects/clang700-import/contrib/libarchive/libarchive/archive_entry.h
==============================================================================
--- projects/clang700-import/contrib/libarchive/libarchive/archive_entry.h	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/libarchive/archive_entry.h	Fri Sep 14 19:50:36 2018	(r338690)
@@ -30,7 +30,7 @@
 #define	ARCHIVE_ENTRY_H_INCLUDED
 
 /* Note: Compiler will complain if this does not match archive.h! */
-#define	ARCHIVE_VERSION_NUMBER 3003002
+#define	ARCHIVE_VERSION_NUMBER 3003003
 
 /*
  * Note: archive_entry.h is for use outside of libarchive; the

Modified: projects/clang700-import/contrib/libarchive/libarchive/archive_pack_dev.c
==============================================================================
--- projects/clang700-import/contrib/libarchive/libarchive/archive_pack_dev.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/libarchive/libarchive/archive_pack_dev.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -57,6 +57,9 @@ __RCSID("$NetBSD$");
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
+#ifdef HAVE_SYS_SYSMACROS_H
+#include <sys/sysmacros.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif

Modified: projects/clang700-import/contrib/llvm/tools/lld/ELF/Config.h
==============================================================================
--- projects/clang700-import/contrib/llvm/tools/lld/ELF/Config.h	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/llvm/tools/lld/ELF/Config.h	Fri Sep 14 19:50:36 2018	(r338690)
@@ -183,6 +183,7 @@ struct Configuration {
   bool ZHazardplt;
   bool ZIfuncnoplt;
   bool ZInitfirst;
+  bool ZInterpose;
   bool ZKeepTextSectionPrefix;
   bool ZNodelete;
   bool ZNodlopen;

Modified: projects/clang700-import/contrib/llvm/tools/lld/ELF/Driver.cpp
==============================================================================
--- projects/clang700-import/contrib/llvm/tools/lld/ELF/Driver.cpp	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/llvm/tools/lld/ELF/Driver.cpp	Fri Sep 14 19:50:36 2018	(r338690)
@@ -846,6 +846,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args
   Config->ZHazardplt = hasZOption(Args, "hazardplt");
   Config->ZIfuncnoplt = hasZOption(Args, "ifunc-noplt");
   Config->ZInitfirst = hasZOption(Args, "initfirst");
+  Config->ZInterpose = hasZOption(Args, "interpose");
   Config->ZKeepTextSectionPrefix = getZFlag(
       Args, "keep-text-section-prefix", "nokeep-text-section-prefix", false);
   Config->ZNodelete = hasZOption(Args, "nodelete");

Modified: projects/clang700-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
==============================================================================
--- projects/clang700-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp	Fri Sep 14 19:50:36 2018	(r338690)
@@ -1266,6 +1266,8 @@ template <class ELFT> void DynamicSection<ELFT>::final
     DtFlags |= DF_SYMBOLIC;
   if (Config->ZInitfirst)
     DtFlags1 |= DF_1_INITFIRST;
+  if (Config->ZInterpose)
+    DtFlags1 |= DF_1_INTERPOSE;
   if (Config->ZNodelete)
     DtFlags1 |= DF_1_NODELETE;
   if (Config->ZNodlopen)

Modified: projects/clang700-import/contrib/llvm/tools/lld/docs/ld.lld.1
==============================================================================
--- projects/clang700-import/contrib/llvm/tools/lld/docs/ld.lld.1	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/llvm/tools/lld/docs/ld.lld.1	Fri Sep 14 19:50:36 2018	(r338690)
@@ -3,7 +3,7 @@
 .\"
 .\" This man page documents only lld's ELF linking support, obtained originally
 .\" from FreeBSD.
-.Dd August 22, 2018
+.Dd September 14, 2018
 .Dt LD.LLD 1
 .Os
 .Sh NAME
@@ -462,6 +462,12 @@ environments.
 Sets the
 .Dv DF_1_INITFIRST
 flag to indicate the module should be initialized first.
+.It Cm interpose
+Set the
+.Dv DF_1_INTERPOSE
+flag to indicate that the object is an interposer.
+Runtime linkers perform symbol resolution by first searching the application,
+followed by interposers, and then any other dependencies.
 .It Cm muldefs
 Do not error if a symbol is defined multiple times.
 The first definition will be used.

Modified: projects/clang700-import/contrib/ofed/infiniband-diags/src/ibdiag_common.c
==============================================================================
--- projects/clang700-import/contrib/ofed/infiniband-diags/src/ibdiag_common.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/ofed/infiniband-diags/src/ibdiag_common.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -84,8 +84,7 @@ static const struct ibdiag_opt *opts_map[256];
 
 static const char *get_build_version(void)
 {
-	return "BUILD VERSION: " IBDIAG_VERSION " Build date: " __DATE__ " "
-	    __TIME__;
+	return "BUILD VERSION: " IBDIAG_VERSION;
 }
 
 static void pretty_print(int start, int width, const char *str)

Modified: projects/clang700-import/contrib/tcpdump/tcpdump.c
==============================================================================
--- projects/clang700-import/contrib/tcpdump/tcpdump.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/contrib/tcpdump/tcpdump.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -2069,6 +2069,9 @@ main(int argc, char **argv)
 #else
 	cansandbox = (cansandbox && ndo->ndo_nflag);
 #endif	/* HAVE_CASPER */
+	cansandbox = (cansandbox && (pcap_fileno(pd) != -1 ||
+	    RFileName != NULL));
+
 	if (cansandbox && cap_enter() < 0 && errno != ENOSYS)
 		error("unable to enter the capability mode");
 #endif	/* HAVE_CAPSICUM */

Modified: projects/clang700-import/etc/Makefile
==============================================================================
--- projects/clang700-import/etc/Makefile	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/etc/Makefile	Fri Sep 14 19:50:36 2018	(r338690)
@@ -121,7 +121,6 @@ distribution:
 	${_+_}cd ${.CURDIR}/mtree; ${MAKE} install
 	${_+_}cd ${SRCTOP}/share/termcap; ${MAKE} etc-termcap
 	${_+_}cd ${SRCTOP}/usr.sbin/rmt; ${MAKE} etc-rmt
-	${_+_}cd ${.CURDIR}/pam.d; ${MAKE} install
 .if ${MK_UNBOUND} != "no"
 	if [ ! -e ${DESTDIR}/etc/unbound ]; then \
 		${INSTALL_SYMLINK} ../var/unbound ${DESTDIR}/etc/unbound; \

Modified: projects/clang700-import/etc/mtree/BSD.tests.dist
==============================================================================
--- projects/clang700-import/etc/mtree/BSD.tests.dist	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/etc/mtree/BSD.tests.dist	Fri Sep 14 19:50:36 2018	(r338690)
@@ -34,6 +34,8 @@
         ..
         pwait
         ..
+        rm
+        ..
         rmdir
         ..
         sh

Modified: projects/clang700-import/lib/Makefile
==============================================================================
--- projects/clang700-import/lib/Makefile	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/Makefile	Fri Sep 14 19:50:36 2018	(r338690)
@@ -70,6 +70,8 @@ SUBDIR=	${SUBDIR_BOOTSTRAP} \
 	libpathconv \
 	libpcap \
 	libpjdlog \
+	libpmc \
+	libpmcstat \
 	${_libproc} \
 	libprocstat \
 	libregex \
@@ -198,9 +200,6 @@ _libdl=		libdl
 .endif
 
 SUBDIR.${MK_OPENSSL}+=	libmp
-.if (${COMPILER_TYPE} == "clang" || (${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 60100 && ${MACHINE_CPUARCH} != "riscv"))
-SUBDIR.${MK_PMC}+=	libpmc libpmcstat
-.endif
 SUBDIR.${MK_RADIUS_SUPPORT}+=	libradius
 SUBDIR.${MK_SENDMAIL}+=	libmilter libsm libsmdb libsmutil
 SUBDIR.${MK_TELNET}+=	libtelnet

Modified: projects/clang700-import/lib/libpam/Makefile
==============================================================================
--- projects/clang700-import/lib/libpam/Makefile	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libpam/Makefile	Fri Sep 14 19:50:36 2018	(r338690)
@@ -25,7 +25,7 @@
 # $FreeBSD$
 
 # The modules link in libpam.  They build the static modules as well.
-SUBDIR+=	libpam modules
+SUBDIR+=	libpam modules pam.d
 SUBDIR_DEPEND_modules=	libpam
 SUBDIR+=	static_libpam
 SUBDIR_DEPEND_static_libpam= modules

Modified: projects/clang700-import/lib/libpmc/Makefile
==============================================================================
--- projects/clang700-import/lib/libpmc/Makefile	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libpmc/Makefile	Fri Sep 14 19:50:36 2018	(r338690)
@@ -7,7 +7,7 @@ SRCS=	libpmc.c pmclog.c libpmc_pmu_util.c libpmc_json.
 INCS=	pmc.h pmclog.h pmcformat.h
 
 CFLAGS+= -I${.CURDIR}
-CWARNFLAGS.gcc+= -Wno-shadow
+CWARNFLAGS.gcc+= -Wno-shadow -Wno-cast-align
 
 .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
 

Modified: projects/clang700-import/lib/libpmc/libpmc_pmu_util.c
==============================================================================
--- projects/clang700-import/lib/libpmc/libpmc_pmu_util.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libpmc/libpmc_pmu_util.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -237,6 +237,7 @@ pmu_parse_event(struct pmu_event_desc *ped, const char
 		return (ENOMEM);
 	r = event;
 	bzero(ped, sizeof(*ped));
+	ped->ped_period = DEFAULT_SAMPLE_COUNT;
 	ped->ped_umask = -1;
 	while ((kvp = strsep(&event, ",")) != NULL) {
 		key = strsep(&kvp, "=");

Modified: projects/clang700-import/lib/libusb/libusb10.c
==============================================================================
--- projects/clang700-import/lib/libusb/libusb10.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libusb/libusb10.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -114,6 +114,19 @@ libusb_set_nonblocking(int f)
 	fcntl(f, F_SETFL, flags);
 }
 
+static void
+libusb10_wakeup_event_loop(libusb_context *ctx)
+{
+	uint8_t dummy = 0;
+	int err;
+
+	err = write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
+	if (err < (int)sizeof(dummy)) {
+		/* ignore error, if any */
+		DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "Waking up event loop failed!");
+	}
+}
+
 int
 libusb_init(libusb_context **context)
 {
@@ -484,7 +497,6 @@ libusb_open(libusb_device *dev, libusb_device_handle *
 {
 	libusb_context *ctx = dev->ctx;
 	struct libusb20_device *pdev = dev->os_priv;
-	uint8_t dummy;
 	int err;
 
 	if (devh == NULL)
@@ -506,12 +518,8 @@ libusb_open(libusb_device *dev, libusb_device_handle *
 	    POLLOUT | POLLRDNORM | POLLWRNORM);
 
 	/* make sure our event loop detects the new device */
-	dummy = 0;
-	err = write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
-	if (err < (int)sizeof(dummy)) {
-		/* ignore error, if any */
-		DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_open write failed!");
-	}
+	libusb10_wakeup_event_loop(ctx);
+
 	*devh = pdev;
 
 	return (0);
@@ -564,8 +572,6 @@ libusb_close(struct libusb20_device *pdev)
 {
 	libusb_context *ctx;
 	struct libusb_device *dev;
-	uint8_t dummy;
-	int err;
 
 	if (pdev == NULL)
 		return;			/* be NULL safe */
@@ -581,12 +587,7 @@ libusb_close(struct libusb20_device *pdev)
 	libusb_unref_device(dev);
 
 	/* make sure our event loop detects the closed device */
-	dummy = 0;
-	err = write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
-	if (err < (int)sizeof(dummy)) {
-		/* ignore error, if any */
-		DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_close write failed!");
-	}
+	libusb10_wakeup_event_loop(ctx);
 }
 
 libusb_device *
@@ -1314,7 +1315,6 @@ libusb10_submit_transfer_sub(struct libusb20_device *p
 	int buffsize;
 	int maxframe;
 	int temp;
-	uint8_t dummy;
 
 	dev = libusb_get_device(pdev);
 
@@ -1415,10 +1415,8 @@ found:
 
 failure:
 	libusb10_complete_transfer(pxfer0, sxfer, LIBUSB_TRANSFER_ERROR);
-
 	/* make sure our event loop spins the done handler */
-	dummy = 0;
-	err = write(dev->ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
+	libusb10_wakeup_event_loop(dev->ctx);
 }
 
 /* The following function must be called unlocked */
@@ -1459,6 +1457,8 @@ libusb_submit_transfer(struct libusb_transfer *uxfer)
 	    (libusb20_tr_get_priv_sc1(pxfer0) == sxfer) ||
 	    (libusb20_tr_get_priv_sc1(pxfer1) == sxfer)) {
 		err = LIBUSB_ERROR_BUSY;
+	} else if (dev->device_is_gone != 0) {
+		err = LIBUSB_ERROR_NO_DEVICE;
 	} else {
 
 		/* set pending state */
@@ -1490,6 +1490,7 @@ libusb_cancel_transfer(struct libusb_transfer *uxfer)
 	struct libusb20_transfer *pxfer1;
 	struct libusb_super_transfer *sxfer;
 	struct libusb_device *dev;
+	struct libusb_device_handle *devh;
 	uint8_t endpoint;
 	int retval;
 
@@ -1497,12 +1498,12 @@ libusb_cancel_transfer(struct libusb_transfer *uxfer)
 		return (LIBUSB_ERROR_INVALID_PARAM);
 
 	/* check if not initialised */
-	if (uxfer->dev_handle == NULL)
+	if ((devh = uxfer->dev_handle) == NULL)
 		return (LIBUSB_ERROR_NOT_FOUND);
 
 	endpoint = uxfer->endpoint;
 
-	dev = libusb_get_device(uxfer->dev_handle);
+	dev = libusb_get_device(devh);
 
 	DPRINTF(dev->ctx, LIBUSB_DEBUG_FUNCTION, "libusb_cancel_transfer enter");
 
@@ -1513,8 +1514,8 @@ libusb_cancel_transfer(struct libusb_transfer *uxfer)
 
 	CTX_LOCK(dev->ctx);
 
-	pxfer0 = libusb10_get_transfer(uxfer->dev_handle, endpoint, 0);
-	pxfer1 = libusb10_get_transfer(uxfer->dev_handle, endpoint, 1);
+	pxfer0 = libusb10_get_transfer(devh, endpoint, 0);
+	pxfer1 = libusb10_get_transfer(devh, endpoint, 1);
 
 	if (sxfer->state != LIBUSB_SUPER_XFER_ST_PEND) {
 		/* only update the transfer status */
@@ -1526,23 +1527,38 @@ libusb_cancel_transfer(struct libusb_transfer *uxfer)
 		sxfer->entry.tqe_prev = NULL;
 		libusb10_complete_transfer(NULL,
 		    sxfer, LIBUSB_TRANSFER_CANCELLED);
+		/* make sure our event loop spins the done handler */
+		libusb10_wakeup_event_loop(dev->ctx);
 	} else if (pxfer0 == NULL || pxfer1 == NULL) {
 		/* not started */
 		retval = LIBUSB_ERROR_NOT_FOUND;
 	} else if (libusb20_tr_get_priv_sc1(pxfer0) == sxfer) {
 		libusb10_complete_transfer(pxfer0,
 		    sxfer, LIBUSB_TRANSFER_CANCELLED);
-		libusb20_tr_stop(pxfer0);
-		/* make sure the queue doesn't stall */
-		libusb10_submit_transfer_sub(
-		    uxfer->dev_handle, endpoint);
+		if (dev->device_is_gone != 0) {
+			/* clear transfer pointer */
+			libusb20_tr_set_priv_sc1(pxfer0, NULL);
+			/* make sure our event loop spins the done handler */
+			libusb10_wakeup_event_loop(dev->ctx);
+		} else {
+			libusb20_tr_stop(pxfer0);
+			/* make sure the queue doesn't stall */
+			libusb10_submit_transfer_sub(devh, endpoint);
+		}
 	} else if (libusb20_tr_get_priv_sc1(pxfer1) == sxfer) {
 		libusb10_complete_transfer(pxfer1,
 		    sxfer, LIBUSB_TRANSFER_CANCELLED);
-		libusb20_tr_stop(pxfer1);
-		/* make sure the queue doesn't stall */
-		libusb10_submit_transfer_sub(
-		    uxfer->dev_handle, endpoint);
+		/* check if handle is still active */
+		if (dev->device_is_gone != 0) {
+			/* clear transfer pointer */
+			libusb20_tr_set_priv_sc1(pxfer1, NULL);
+			/* make sure our event loop spins the done handler */
+			libusb10_wakeup_event_loop(dev->ctx);
+		} else {
+			libusb20_tr_stop(pxfer1);
+			/* make sure the queue doesn't stall */
+			libusb10_submit_transfer_sub(devh, endpoint);
+		}
 	} else {
 		/* not started */
 		retval = LIBUSB_ERROR_NOT_FOUND;
@@ -1568,6 +1584,35 @@ libusb10_cancel_all_transfer(libusb_device *dev)
 		if (xfer == NULL)
 			continue;
 		libusb20_tr_close(xfer);
+	}
+}
+
+UNEXPORTED void
+libusb10_cancel_all_transfer_locked(struct libusb20_device *pdev, struct libusb_device *dev)
+{
+	struct libusb_super_transfer *sxfer;
+	unsigned x;
+
+	for (x = 0; x != LIBUSB_NUM_SW_ENDPOINTS; x++) {
+		struct libusb20_transfer *xfer;
+
+		xfer = libusb20_tr_get_pointer(pdev, x);
+		if (xfer == NULL)
+			continue;
+		if (libusb20_tr_pending(xfer) == 0)
+			continue;
+		sxfer = libusb20_tr_get_priv_sc1(xfer);
+		if (sxfer == NULL)
+			continue;
+		/* complete pending transfer */
+		libusb10_complete_transfer(xfer, sxfer, LIBUSB_TRANSFER_ERROR);
+	}
+
+	while ((sxfer = TAILQ_FIRST(&dev->tr_head))) {
+		TAILQ_REMOVE(&dev->tr_head, sxfer, entry);
+
+		/* complete pending transfer */
+		libusb10_complete_transfer(NULL, sxfer, LIBUSB_TRANSFER_ERROR);
 	}
 }
 

Modified: projects/clang700-import/lib/libusb/libusb10.h
==============================================================================
--- projects/clang700-import/lib/libusb/libusb10.h	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libusb/libusb10.h	Fri Sep 14 19:50:36 2018	(r338690)
@@ -41,22 +41,24 @@
 #define	HOTPLUG_LOCK(ctx) pthread_mutex_lock(&(ctx)->hotplug_lock)
 #define	HOTPLUG_UNLOCK(ctx) pthread_mutex_unlock(&(ctx)->hotplug_lock)
 
-#define	DPRINTF(ctx, dbg, format, args...) do {	\
-    if ((ctx)->debug == dbg) {			\
-	switch (dbg) {				\
-	case LIBUSB_DEBUG_FUNCTION:		\
-		printf("LIBUSB_FUNCTION: "	\
-		    format "\n", ## args);	\
-		break;				\
-	case LIBUSB_DEBUG_TRANSFER:		\
-		printf("LIBUSB_TRANSFER: "	\
-		    format "\n", ## args);	\
-		break;				\
-	default:				\
-		break;				\
-	}					\
-    }						\
-} while(0)
+#define	DPRINTF(ctx, dbg, format, ...) do {			\
+	switch (dbg) {						\
+	case LIBUSB_DEBUG_FUNCTION:				\
+		if ((ctx)->debug & LIBUSB_DEBUG_FUNCTION) {	\
+			printf("LIBUSB_FUNCTION: "		\
+			       format "\n", ## __VA_ARGS__);	\
+		}						\
+		break;						\
+	case LIBUSB_DEBUG_TRANSFER:				\
+		if ((ctx)->debug & LIBUSB_DEBUG_TRANSFER) { 	\
+			printf("LIBUSB_TRANSFER: "		\
+			       format "\n", ## __VA_ARGS__);	\
+		}						\
+		break;						\
+	default:						\
+		break;						\
+	}							\
+} while (0)
 
 /* internal structures */
 
@@ -116,6 +118,8 @@ struct libusb_context {
 struct libusb_device {
 	int	refcnt;
 
+	int	device_is_gone;
+
 	uint32_t claimed_interfaces;
 
 	struct libusb_super_pollfd dev_poll;
@@ -134,5 +138,6 @@ extern struct libusb_context *usbi_default_context;
 void	libusb10_add_pollfd(libusb_context *ctx, struct libusb_super_pollfd *pollfd, struct libusb20_device *pdev, int fd, short events);
 void	libusb10_remove_pollfd(libusb_context *ctx, struct libusb_super_pollfd *pollfd);
 void	libusb10_cancel_all_transfer(libusb_device *dev);
+void	libusb10_cancel_all_transfer_locked(struct libusb20_device *pdev, struct libusb_device *dev);
 
 #endif					/* __LIBUSB10_H__ */

Modified: projects/clang700-import/lib/libusb/libusb10_io.c
==============================================================================
--- projects/clang700-import/lib/libusb/libusb10_io.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/lib/libusb/libusb10_io.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -161,17 +161,19 @@ libusb10_handle_events_sub(struct libusb_context *ctx,
 		if (ppdev[i] != NULL) {
 			dev = libusb_get_device(ppdev[i]);
 
-			if (fds[i].revents == 0)
-				err = 0;	/* nothing to do */
-			else
+			if (fds[i].revents != 0) {
 				err = libusb20_dev_process(ppdev[i]);
 
-			if (err) {
-				/* cancel all transfers - device is gone */
-				libusb10_cancel_all_transfer(dev);
+				if (err) {
+					/* set device is gone */
+					dev->device_is_gone = 1;
 
-				/* remove USB device from polling loop */
-				libusb10_remove_pollfd(dev->ctx, &dev->dev_poll);
+					/* remove USB device from polling loop */
+					libusb10_remove_pollfd(dev->ctx, &dev->dev_poll);
+
+					/* cancel all pending transfers */
+					libusb10_cancel_all_transfer_locked(ppdev[i], dev);
+				}
 			}
 			CTX_UNLOCK(ctx);
 			libusb_unref_device(dev);
@@ -180,10 +182,8 @@ libusb10_handle_events_sub(struct libusb_context *ctx,
 		} else {
 			uint8_t dummy;
 
-			while (1) {
-				if (read(fds[i].fd, &dummy, 1) != 1)
-					break;
-			}
+			while (read(fds[i].fd, &dummy, 1) == 1)
+				;
 		}
 	}
 
@@ -489,13 +489,26 @@ libusb_control_transfer(libusb_device_handle *devh,
 	return (actlen);
 }
 
+static libusb_context *
+libusb10_get_context_by_device_handle(libusb_device_handle *devh)
+{
+	libusb_context *ctx;
+
+	if (devh != NULL)
+		ctx = libusb_get_device(devh)->ctx;
+	else
+		ctx = NULL;
+
+	return (GET_CONTEXT(ctx));
+}
+
 static void
 libusb10_do_transfer_cb(struct libusb_transfer *transfer)
 {
 	libusb_context *ctx;
 	int *pdone;
 
-	ctx = GET_CONTEXT(NULL);
+	ctx = libusb10_get_context_by_device_handle(transfer->dev_handle);
 
 	DPRINTF(ctx, LIBUSB_DEBUG_TRANSFER, "sync I/O done");
 
@@ -585,7 +598,8 @@ libusb_bulk_transfer(libusb_device_handle *devh,
 	libusb_context *ctx;
 	int ret;
 
-	ctx = GET_CONTEXT(NULL);
+	ctx = libusb10_get_context_by_device_handle(devh);
+
 	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_bulk_transfer enter");
 
 	ret = libusb10_do_transfer(devh, endpoint, data, length, transferred,
@@ -603,7 +617,8 @@ libusb_interrupt_transfer(libusb_device_handle *devh,
 	libusb_context *ctx;
 	int ret;
 
-	ctx = GET_CONTEXT(NULL);
+	ctx = libusb10_get_context_by_device_handle(devh);
+
 	DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_interrupt_transfer enter");
 
 	ret = libusb10_do_transfer(devh, endpoint, data, length, transferred,

Modified: projects/clang700-import/sbin/geom/core/geom.8
==============================================================================
--- projects/clang700-import/sbin/geom/core/geom.8	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/sbin/geom/core/geom.8	Fri Sep 14 19:50:36 2018	(r338690)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 5, 2011
+.Dd September 14, 2018
 .Dt GEOM 8
 .Os
 .Sh NAME
@@ -52,6 +52,11 @@
 .Ar class
 .Cm unload
 .Op Fl v
+.Nm
+.Fl p
+.Ar provider-name
+.Nm
+.Fl t
 .Sh DESCRIPTION
 The
 .Nm
@@ -101,6 +106,15 @@ sysctl.
 Unload the kernel module which implements the given class.
 This command is only available if the given class is loaded as a
 kernel module.
+.El
+.Pp
+Additional options include:
+.Bl -tag -width ".Cm status"
+.It Fl p Ar provider-name
+Print detailed information about the geom which provides
+.Ar provider-name .
+.It Fl t
+Display geoms hierarchy as a tree.
 .El
 .Pp
 Class-specific commands are implemented as shared libraries which

Modified: projects/clang700-import/sbin/geom/core/geom.c
==============================================================================
--- projects/clang700-import/sbin/geom/core/geom.c	Fri Sep 14 19:25:23 2018	(r338689)
+++ projects/clang700-import/sbin/geom/core/geom.c	Fri Sep 14 19:50:36 2018	(r338690)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <stdint.h>
 #include <string.h>
 #include <unistd.h>
@@ -65,9 +66,13 @@ static uint32_t *version = NULL;
 static int verbose = 0;
 static struct g_command *class_commands = NULL;
 
-#define	GEOM_CLASS_CMDS	0x01
-#define	GEOM_STD_CMDS	0x02
+#define	GEOM_CLASS_CMDS		0x01
+#define	GEOM_STD_CMDS		0x02
+
+#define	GEOM_CLASS_WIDTH	10
+
 static struct g_command *find_command(const char *cmdstr, int flags);
+static void list_one_geom_by_provider(const char *provider_name);
 static int std_available(const char *name);
 
 static void std_help(struct gctl_req *req, unsigned flags);
@@ -146,6 +151,8 @@ usage(void)
 
 	if (class_name == NULL) {
 		fprintf(stderr, "usage: geom <class> <command> [options]\n");
+		fprintf(stderr, "       geom -p <provider-name>\n");
+		fprintf(stderr, "       geom -t\n");
 		exit(EXIT_FAILURE);
 	} else {
 		struct g_command *cmd;
@@ -650,10 +657,187 @@ get_class(int *argc, char ***argv)
 		usage();
 }
 
+static struct ggeom *
+find_geom_by_provider(struct gmesh *mesh, const char *name)
+{
+	struct gclass *classp;
+	struct ggeom *gp;
+	struct gprovider *pp;
+
+	LIST_FOREACH(classp, &mesh->lg_class, lg_class) {
+		LIST_FOREACH(gp, &classp->lg_geom, lg_geom) {
+			LIST_FOREACH(pp, &gp->lg_provider, lg_provider) {
+				if (strcmp(pp->lg_name, name) == 0)
+					return (gp);
+			}
+		}
+	}
+
+	return (NULL);
+}
+
+static int
+compute_tree_width_geom(struct gmesh *mesh, struct ggeom *gp, int indent)
+{
+	struct gclass *classp2;
+	struct ggeom *gp2;
+	struct gconsumer *cp2;

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



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