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...
Dimitry Andric
dim at FreeBSD.org
Fri Sep 14 19:50:44 UTC 2018
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 ***
More information about the svn-src-projects
mailing list