From owner-svn-src-projects@freebsd.org Wed Jan 30 07:09:02 2019 Return-Path: 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 C12BB14B6CC6 for ; Wed, 30 Jan 2019 07:09:02 +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 5640485419; Wed, 30 Jan 2019 07:09:02 +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 43B291BCDF; Wed, 30 Jan 2019 07:09:02 +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 x0U792YI033078; Wed, 30 Jan 2019 07:09:02 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x0U792dF033077; Wed, 30 Jan 2019 07:09:02 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201901300709.x0U792dF033077@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 30 Jan 2019 07:09:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r343570 - projects/clang800-import/contrib/llvm/tools/lld/ELF X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: projects/clang800-import/contrib/llvm/tools/lld/ELF X-SVN-Commit-Revision: 343570 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 5640485419 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)[-0.999,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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jan 2019 07:09:03 -0000 Author: dim Date: Wed Jan 30 07:09:01 2019 New Revision: 343570 URL: https://svnweb.freebsd.org/changeset/base/343570 Log: Pull in r352407 from upstream lld trunk (by Rui Ueyama): Refactoring. NFC. Pull in r352435 from upstream lld trunk (by Rui Ueyama): Attempt to fix build failure with GCC 5.4. Pull in r352482 from upstream lld trunk (by George Rimar): [ELF] - Remove dead `readBfdName` declaration. NFC. `readBfdName` was removed recently. Pull in r352606 from upstream lld trunk (by me): Recognize FreeBSD specific BFD names in OUTPUT_FORMAT Summary: After rLLD344952 ("Add OUTPUT_FORMAT linker script directive support"), using BFD names such as `elf64-x86-64-freebsd` the `OUTPUT_FORMAT` linker script command does not work anymore, resulting in errors like: ``` ld: error: /home/dim/src/clang800-import/stand/efi/loader/arch/amd64/ldscript.amd64:2: unknown output format name: elf64-x86-64-freebsd >>> OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd") >>> ^ ``` To fix this, recognize a `-freebsd` suffix in BFD names, and also set `Configuration::OSABI` to `ELFOSABI_FREEBSD` for those cases. Add and/or update several test cases to check for the correct results of these new `OUTPUT_FORMAT` arguments. Reviewers: ruiu, atanasyan, grimar, hokein, emaste, espindola Reviewed By: ruiu Subscribers: nemanjai, javed.absar, arichardson, krytarowski, kristof.beyls, kbarton, llvm-commits Differential Revision: https://reviews.llvm.org/D57283 Modified: projects/clang800-import/contrib/llvm/tools/lld/ELF/ScriptParser.cpp Modified: projects/clang800-import/contrib/llvm/tools/lld/ELF/ScriptParser.cpp ============================================================================== --- projects/clang800-import/contrib/llvm/tools/lld/ELF/ScriptParser.cpp Wed Jan 30 05:39:47 2019 (r343569) +++ projects/clang800-import/contrib/llvm/tools/lld/ELF/ScriptParser.cpp Wed Jan 30 07:09:01 2019 (r343570) @@ -94,7 +94,6 @@ class ScriptParser final : ScriptLexer { (private) SortSectionPolicy readSortKind(); SymbolAssignment *readProvideHidden(bool Provide, bool Hidden); SymbolAssignment *readAssignment(StringRef Tok); - std::tuple readBfdName(); void readSort(); Expr readAssert(); Expr readConstant(); @@ -385,39 +384,24 @@ void ScriptParser::readOutputArch() { skip(); } -std::tuple ScriptParser::readBfdName() { - StringRef S = unquote(next()); - if (S == "elf32-i386") - return std::make_tuple(ELF32LEKind, EM_386, false); - if (S == "elf32-iamcu") - return std::make_tuple(ELF32LEKind, EM_IAMCU, false); - if (S == "elf32-littlearm") - return std::make_tuple(ELF32LEKind, EM_ARM, false); - if (S == "elf32-x86-64") - return std::make_tuple(ELF32LEKind, EM_X86_64, false); - if (S == "elf64-littleaarch64") - return std::make_tuple(ELF64LEKind, EM_AARCH64, false); - if (S == "elf64-powerpc") - return std::make_tuple(ELF64BEKind, EM_PPC64, false); - if (S == "elf64-powerpcle") - return std::make_tuple(ELF64LEKind, EM_PPC64, false); - if (S == "elf64-x86-64") - return std::make_tuple(ELF64LEKind, EM_X86_64, false); - if (S == "elf32-tradbigmips") - return std::make_tuple(ELF32BEKind, EM_MIPS, false); - if (S == "elf32-ntradbigmips") - return std::make_tuple(ELF32BEKind, EM_MIPS, true); - if (S == "elf32-tradlittlemips") - return std::make_tuple(ELF32LEKind, EM_MIPS, false); - if (S == "elf32-ntradlittlemips") - return std::make_tuple(ELF32LEKind, EM_MIPS, true); - if (S == "elf64-tradbigmips") - return std::make_tuple(ELF64BEKind, EM_MIPS, false); - if (S == "elf64-tradlittlemips") - return std::make_tuple(ELF64LEKind, EM_MIPS, false); - - setError("unknown output format name: " + S); - return std::make_tuple(ELFNoneKind, EM_NONE, false); +static std::pair parseBfdName(StringRef S) { + return StringSwitch>(S) + .Case("elf32-i386", {ELF32LEKind, EM_386}) + .Case("elf32-iamcu", {ELF32LEKind, EM_IAMCU}) + .Case("elf32-littlearm", {ELF32LEKind, EM_ARM}) + .Case("elf32-x86-64", {ELF32LEKind, EM_X86_64}) + .Case("elf64-aarch64", {ELF64LEKind, EM_AARCH64}) + .Case("elf64-littleaarch64", {ELF64LEKind, EM_AARCH64}) + .Case("elf64-powerpc", {ELF64BEKind, EM_PPC64}) + .Case("elf64-powerpcle", {ELF64LEKind, EM_PPC64}) + .Case("elf64-x86-64", {ELF64LEKind, EM_X86_64}) + .Case("elf32-tradbigmips", {ELF32BEKind, EM_MIPS}) + .Case("elf32-ntradbigmips", {ELF32BEKind, EM_MIPS}) + .Case("elf32-tradlittlemips", {ELF32LEKind, EM_MIPS}) + .Case("elf32-ntradlittlemips", {ELF32LEKind, EM_MIPS}) + .Case("elf64-tradbigmips", {ELF64BEKind, EM_MIPS}) + .Case("elf64-tradlittlemips", {ELF64LEKind, EM_MIPS}) + .Default({ELFNoneKind, EM_NONE}); } // Parse OUTPUT_FORMAT(bfdname) or OUTPUT_FORMAT(bfdname, big, little). @@ -425,9 +409,16 @@ std::tuple ScriptParser::read void ScriptParser::readOutputFormat() { expect("("); - std::tuple BfdTuple = readBfdName(); - if (Config->EKind == ELFNoneKind) - std::tie(Config->EKind, Config->EMachine, Config->MipsN32Abi) = BfdTuple; + StringRef Name = unquote(next()); + StringRef S = Name; + if (S.consume_back("-freebsd")) + Config->OSABI = ELFOSABI_FREEBSD; + + std::tie(Config->EKind, Config->EMachine) = parseBfdName(S); + if (Config->EMachine == EM_NONE) + setError("unknown output format name: " + Name); + if (S == "elf32-ntradlittlemips" || S == "elf32-ntradbigmips") + Config->MipsN32Abi = true; if (consume(")")) return; From owner-svn-src-projects@freebsd.org Wed Jan 30 07:10:37 2019 Return-Path: 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 88C2B14B6D2B for ; Wed, 30 Jan 2019 07:10:37 +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 388968553B; Wed, 30 Jan 2019 07:10:37 +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 2A5AC1BCEA; Wed, 30 Jan 2019 07:10:37 +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 x0U7AbNp033248; Wed, 30 Jan 2019 07:10:37 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x0U7AY72033233; Wed, 30 Jan 2019 07:10:34 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201901300710.x0U7AY72033233@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 30 Jan 2019 07:10:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r343571 - in projects/clang800-import: . bin/sh contrib/ipfilter/man contrib/llvm/tools/clang/lib/Driver/ToolChains contrib/netbsd-tests/lib/libm lib/libbe lib/libc/sys lib/libc/tests/s... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang800-import: . bin/sh contrib/ipfilter/man contrib/llvm/tools/clang/lib/Driver/ToolChains contrib/netbsd-tests/lib/libm lib/libbe lib/libc/sys lib/libc/tests/sys lib/libcasper/libcaspe... X-SVN-Commit-Revision: 343571 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 388968553B 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.98)[-0.981,0]; NEURAL_HAM_LONG(-1.00)[-0.999,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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jan 2019 07:10:38 -0000 Author: dim Date: Wed Jan 30 07:10:33 2019 New Revision: 343571 URL: https://svnweb.freebsd.org/changeset/base/343571 Log: Merge ^/head r343320 through r343570. Added: projects/clang800-import/bin/sh/dot.shrc - copied unchanged from r343570, head/bin/sh/dot.shrc projects/clang800-import/lib/libc/tests/sys/sendfile_test.c - copied unchanged from r343570, head/lib/libc/tests/sys/sendfile_test.c projects/clang800-import/lib/libthr/thread/thr_malloc.c - copied unchanged from r343570, head/lib/libthr/thread/thr_malloc.c projects/clang800-import/libexec/rtld-elf/rtld_malloc.h - copied unchanged from r343570, head/libexec/rtld-elf/rtld_malloc.h projects/clang800-import/sys/arm64/include/sigframe.h - copied unchanged from r343570, head/sys/arm64/include/sigframe.h projects/clang800-import/sys/i386/i386/minidump_machdep_base.c - copied unchanged from r343570, head/sys/i386/i386/minidump_machdep_base.c projects/clang800-import/sys/i386/i386/minidump_machdep_nopae.c - copied unchanged from r343570, head/sys/i386/i386/minidump_machdep_nopae.c projects/clang800-import/sys/i386/i386/minidump_machdep_pae.c - copied unchanged from r343570, head/sys/i386/i386/minidump_machdep_pae.c projects/clang800-import/sys/i386/i386/pmap_base.c - copied unchanged from r343570, head/sys/i386/i386/pmap_base.c projects/clang800-import/sys/i386/i386/pmap_nopae.c - copied unchanged from r343570, head/sys/i386/i386/pmap_nopae.c projects/clang800-import/sys/i386/i386/pmap_pae.c - copied unchanged from r343570, head/sys/i386/i386/pmap_pae.c projects/clang800-import/sys/i386/include/pmap_base.h - copied unchanged from r343570, head/sys/i386/include/pmap_base.h projects/clang800-import/sys/i386/include/pmap_nopae.h - copied unchanged from r343570, head/sys/i386/include/pmap_nopae.h projects/clang800-import/sys/i386/include/pmap_pae.h - copied unchanged from r343570, head/sys/i386/include/pmap_pae.h projects/clang800-import/sys/kern/subr_coverage.c - copied unchanged from r343570, head/sys/kern/subr_coverage.c projects/clang800-import/sys/riscv/include/sigframe.h - copied unchanged from r343570, head/sys/riscv/include/sigframe.h projects/clang800-import/sys/sys/coverage.h - copied unchanged from r343570, head/sys/sys/coverage.h projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_aacraid - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_aacraid projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_al_eth - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_al_eth projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_alpm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_alpm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_altera - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_altera projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_amd_ecc_inject projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_amdgpio projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_amdpm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_amdpm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_amdsmb projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_amdsmn projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_axgbe - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_axgbe projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_beri - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_beri projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_bhnd - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_bhnd projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_bnxt - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_bnxt projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_bvm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_bvm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_cadence - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_cadence projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_chromebook_platform projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_cyapa - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_cyapa projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_dme - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_dme projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_dpaa - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_dpaa projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_drm2 - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_drm2 projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_dwc - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_dwc projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_efidev - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_efidev projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ena - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ena projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_etherswitch projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_evdev - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_evdev projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_extres - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_extres projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ffec - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ffec projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_filemon - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_filemon projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_gxemul - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_gxemul projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_hdmi - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_hdmi projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_hptnr - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_hptnr projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_hyperv - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_hyperv projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ichiic - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ichiic projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_imcsmb projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_intel - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_intel projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_intpm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_intpm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ioat - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ioat projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_isci - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_isci projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_iscsi_initiator projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_iser - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_iser projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_isl - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_isl projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ismt - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ismt projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_iwm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_iwm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ixl - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ixl projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_jedec_dimm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_liquidio - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_liquidio projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mbox - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mbox projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mdio - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mdio projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mlx4 - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mlx4 projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mlx5 - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mlx5 projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mmcnull projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mpr - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mpr projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mrsas - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mrsas projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_mthca - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_mthca projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nand - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nand projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nctgpio projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_neta - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_neta projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_netfpga10g projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nfsmb projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ntb - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ntb projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nvd - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nvd projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nvdimm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nvme - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_nvme projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_oce - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_oce projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ocs_fc projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_otus - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_otus projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ow - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_ow projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_pms - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_pms projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_proto - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_proto projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_psci - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_psci projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_pwm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_pwm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_qlnx - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_qlnx projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_qlxgbe projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_qlxge - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_qlxge projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_rccgpio projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_rl - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_rl projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_rtwn - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_rtwn projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_smartpqi projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_tcp_log projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_terasic - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_terasic projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_veriexec - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_veriexec projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_viapm - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_viapm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_videomode - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_videomode projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_vmware - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_vmware projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_vnic - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_vnic projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_vt - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_vt projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_wbwd - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_wbwd projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_xdma - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_xdma projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_xilinx - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-dev_xilinx projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-xen - copied unchanged from r343570, head/tools/kerneldoc/subsys/Doxyfile-xen Deleted: projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_advansys projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_aha projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ahb projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_aic projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_asr projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_buslogic projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_cm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ct projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_digi projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_dpt projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_en projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_fatm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_hatm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ie projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ieee488 projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_ncv projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nsp projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_nve projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_patm projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_pdq projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_siba projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_snc projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_stg projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_streams projects/clang800-import/tools/kerneldoc/subsys/Doxyfile-dev_utopia Modified: projects/clang800-import/ObsoleteFiles.inc projects/clang800-import/bin/sh/Makefile projects/clang800-import/bin/sh/dot.profile projects/clang800-import/bin/sh/parser.c projects/clang800-import/bin/sh/sh.1 projects/clang800-import/contrib/ipfilter/man/ipnat.5 projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c projects/clang800-import/lib/libbe/be.c projects/clang800-import/lib/libc/sys/sendfile.2 projects/clang800-import/lib/libc/tests/sys/Makefile projects/clang800-import/lib/libcasper/libcasper/libcasper_service.c projects/clang800-import/lib/libcasper/libcasper/service.c projects/clang800-import/lib/libcasper/libcasper/zygote.c projects/clang800-import/lib/libfigpar/string_m.c projects/clang800-import/lib/libkvm/kvm_i386.h projects/clang800-import/lib/libprocstat/Symbol.map projects/clang800-import/lib/libprocstat/libprocstat_compat.c projects/clang800-import/lib/libthr/Makefile projects/clang800-import/lib/libthr/thread/Makefile.inc projects/clang800-import/lib/libthr/thread/thr_fork.c projects/clang800-import/lib/libthr/thread/thr_init.c projects/clang800-import/lib/libthr/thread/thr_mutex.c projects/clang800-import/lib/libthr/thread/thr_private.h projects/clang800-import/lib/libthr/thread/thr_spec.c projects/clang800-import/lib/msun/tests/trig_test.c projects/clang800-import/libexec/getty/chat.c projects/clang800-import/libexec/rc/network.subr projects/clang800-import/libexec/rtld-elf/malloc.c projects/clang800-import/libexec/rtld-elf/rtld.c projects/clang800-import/libexec/rtld-elf/rtld.h projects/clang800-import/libexec/rtld-elf/xmalloc.c projects/clang800-import/sbin/bectl/tests/bectl_test.sh projects/clang800-import/sbin/devd/devd.conf projects/clang800-import/sbin/ifconfig/ifconfig.c projects/clang800-import/sbin/ifconfig/ifieee80211.c projects/clang800-import/sbin/ifconfig/ifpfsync.c projects/clang800-import/sbin/newfs/newfs.8 projects/clang800-import/sbin/newfs/newfs.c projects/clang800-import/sbin/pfctl/parse.y projects/clang800-import/sbin/tunefs/tunefs.8 projects/clang800-import/sbin/tunefs/tunefs.c projects/clang800-import/share/man/man4/ath.4 projects/clang800-import/share/man/man4/ath_hal.4 projects/clang800-import/share/man/man4/otus.4 projects/clang800-import/share/man/man4/rtwn_usb.4 projects/clang800-import/share/man/man4/wlan.4 projects/clang800-import/share/man/man9/Makefile projects/clang800-import/share/man/man9/ucred.9 projects/clang800-import/share/misc/pci_vendors projects/clang800-import/share/skel/dot.shrc projects/clang800-import/sys/amd64/conf/GENERIC projects/clang800-import/sys/amd64/conf/GENERIC-NODEBUG projects/clang800-import/sys/arm64/conf/GENERIC projects/clang800-import/sys/arm64/conf/GENERIC-NODEBUG projects/clang800-import/sys/cam/scsi/scsi_da.c projects/clang800-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/clang800-import/sys/compat/linuxkpi/common/include/linux/pci.h projects/clang800-import/sys/compat/linuxkpi/common/src/linux_pci.c projects/clang800-import/sys/conf/NOTES projects/clang800-import/sys/conf/files projects/clang800-import/sys/conf/files.i386 projects/clang800-import/sys/conf/kern.pre.mk projects/clang800-import/sys/conf/options projects/clang800-import/sys/conf/options.i386 projects/clang800-import/sys/dev/bhnd/cores/pmu/bhnd_pmu_subr.c projects/clang800-import/sys/dev/bwi/if_bwi.c projects/clang800-import/sys/dev/cxgbe/iw_cxgbe/mem.c projects/clang800-import/sys/dev/cxgbe/osdep.h projects/clang800-import/sys/dev/cxgbe/t4_main.c projects/clang800-import/sys/dev/dcons/dcons_os.c projects/clang800-import/sys/dev/e1000/em_txrx.c projects/clang800-import/sys/dev/e1000/if_em.c projects/clang800-import/sys/dev/e1000/igb_txrx.c projects/clang800-import/sys/dev/extres/phy/phy.c projects/clang800-import/sys/dev/extres/phy/phy_internal.h projects/clang800-import/sys/dev/fb/fb.c projects/clang800-import/sys/dev/fb/fbreg.h projects/clang800-import/sys/dev/fb/vga.c projects/clang800-import/sys/dev/fb/vgareg.h projects/clang800-import/sys/dev/iwi/if_iwi.c projects/clang800-import/sys/dev/iwm/if_iwm.c projects/clang800-import/sys/dev/iwm/if_iwm_config.h projects/clang800-import/sys/dev/iwm/if_iwm_debug.h projects/clang800-import/sys/dev/iwm/if_iwm_fw.c projects/clang800-import/sys/dev/iwm/if_iwm_fw.h projects/clang800-import/sys/dev/iwm/if_iwm_led.c projects/clang800-import/sys/dev/iwm/if_iwm_mac_ctxt.c projects/clang800-import/sys/dev/iwm/if_iwm_pcie_trans.c projects/clang800-import/sys/dev/iwm/if_iwm_phy_db.c projects/clang800-import/sys/dev/iwm/if_iwm_scan.c projects/clang800-import/sys/dev/iwm/if_iwm_sta.c projects/clang800-import/sys/dev/iwm/if_iwm_time_event.c projects/clang800-import/sys/dev/iwm/if_iwm_time_event.h projects/clang800-import/sys/dev/iwm/if_iwmreg.h projects/clang800-import/sys/dev/iwm/if_iwmvar.h 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/ixl/ixl_pf_main.c projects/clang800-import/sys/dev/ixl/ixl_txrx.c projects/clang800-import/sys/dev/netmap/if_ptnet.c 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_kern.h projects/clang800-import/sys/dev/netmap/netmap_kloop.c projects/clang800-import/sys/dev/netmap/netmap_monitor.c projects/clang800-import/sys/dev/nvd/nvd.c projects/clang800-import/sys/dev/ocs_fc/ocs_cam.c projects/clang800-import/sys/dev/ocs_fc/ocs_hw.c projects/clang800-import/sys/dev/ocs_fc/ocs_hw_queues.c projects/clang800-import/sys/dev/ocs_fc/ocs_ioctl.c projects/clang800-import/sys/dev/ocs_fc/ocs_mgmt.c projects/clang800-import/sys/dev/ocs_fc/ocs_node.c projects/clang800-import/sys/dev/ocs_fc/ocs_pci.c projects/clang800-import/sys/dev/ocs_fc/ocs_xport.c projects/clang800-import/sys/dev/ocs_fc/sli4.c projects/clang800-import/sys/dev/pcf/pcf_isa.c projects/clang800-import/sys/dev/ral/rt2560.c projects/clang800-import/sys/dev/ral/rt2661.c projects/clang800-import/sys/dev/ral/rt2860.c projects/clang800-import/sys/dev/rtwn/if_rtwn.c projects/clang800-import/sys/dev/rtwn/pci/rtwn_pci_reg.c projects/clang800-import/sys/dev/rtwn/usb/rtwn_usb_attach.h projects/clang800-import/sys/dev/rtwn/usb/rtwn_usb_reg.c projects/clang800-import/sys/dev/sound/pci/hda/hdaa_patches.c projects/clang800-import/sys/dev/sound/pci/hda/hdac.h projects/clang800-import/sys/dev/syscons/syscons.c projects/clang800-import/sys/dev/tpm/tpm20.h projects/clang800-import/sys/dev/tpm/tpm_crb.c projects/clang800-import/sys/dev/tpm/tpm_tis.c projects/clang800-import/sys/dev/usb/quirk/usb_quirk.c projects/clang800-import/sys/dev/usb/usbdevs 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_rum.c projects/clang800-import/sys/dev/usb/wlan/if_run.c projects/clang800-import/sys/dev/usb/wlan/if_runreg.h projects/clang800-import/sys/dev/usb/wlan/if_uath.c projects/clang800-import/sys/dev/usb/wlan/if_upgt.c projects/clang800-import/sys/dev/usb/wlan/if_ural.c projects/clang800-import/sys/dev/usb/wlan/if_urtw.c projects/clang800-import/sys/dev/usb/wlan/if_zyd.c projects/clang800-import/sys/dev/usb/wlan/if_zydreg.h projects/clang800-import/sys/dev/virtio/network/if_vtnet.c projects/clang800-import/sys/fs/ext2fs/ext2_vfsops.c projects/clang800-import/sys/geom/mirror/g_mirror.h projects/clang800-import/sys/geom/uzip/g_uzip.c projects/clang800-import/sys/i386/acpica/acpi_machdep.c projects/clang800-import/sys/i386/conf/GENERIC projects/clang800-import/sys/i386/i386/bios.c projects/clang800-import/sys/i386/i386/copyout.c projects/clang800-import/sys/i386/i386/genassym.c projects/clang800-import/sys/i386/i386/initcpu.c projects/clang800-import/sys/i386/i386/locore.s projects/clang800-import/sys/i386/i386/machdep.c projects/clang800-import/sys/i386/i386/mem.c projects/clang800-import/sys/i386/i386/minidump_machdep.c projects/clang800-import/sys/i386/i386/mp_machdep.c projects/clang800-import/sys/i386/i386/mpboot.s projects/clang800-import/sys/i386/i386/pmap.c projects/clang800-import/sys/i386/i386/trap.c projects/clang800-import/sys/i386/i386/vm86.c projects/clang800-import/sys/i386/i386/vm86bios.s projects/clang800-import/sys/i386/i386/vm_machdep.c projects/clang800-import/sys/i386/include/md_var.h projects/clang800-import/sys/i386/include/param.h projects/clang800-import/sys/i386/include/pmap.h projects/clang800-import/sys/i386/include/vm86.h projects/clang800-import/sys/i386/include/vmparam.h projects/clang800-import/sys/i386/pci/pci_cfgreg.c projects/clang800-import/sys/kern/kern_conf.c projects/clang800-import/sys/kern/kern_kcov.c projects/clang800-import/sys/kern/kern_mbuf.c projects/clang800-import/sys/kern/vfs_bio.c projects/clang800-import/sys/mips/conf/ERL projects/clang800-import/sys/mips/conf/OCTEON1 projects/clang800-import/sys/mips/conf/PB92 projects/clang800-import/sys/mips/conf/std.AR_MIPS_BASE projects/clang800-import/sys/mips/ingenic/jz4780_machdep.c projects/clang800-import/sys/mips/ingenic/jz4780_timer.c projects/clang800-import/sys/mips/mips/tlb.c projects/clang800-import/sys/mips/nlm/cms.c projects/clang800-import/sys/mips/nlm/usb_init.c projects/clang800-import/sys/modules/ath_hal_ar5416/Makefile projects/clang800-import/sys/net/iflib.c projects/clang800-import/sys/net/netmap.h projects/clang800-import/sys/net80211/ieee80211.c projects/clang800-import/sys/net80211/ieee80211_amrr.c projects/clang800-import/sys/net80211/ieee80211_freebsd.c projects/clang800-import/sys/net80211/ieee80211_freebsd.h projects/clang800-import/sys/net80211/ieee80211_ioctl.c projects/clang800-import/sys/net80211/ieee80211_rssadapt.c projects/clang800-import/sys/net80211/ieee80211_scan.c projects/clang800-import/sys/net80211/ieee80211_scan_sta.c projects/clang800-import/sys/net80211/ieee80211_var.h projects/clang800-import/sys/netinet/cc/cc_newreno.c projects/clang800-import/sys/netinet/in.c projects/clang800-import/sys/netinet/tcp_input.c projects/clang800-import/sys/netinet/tcp_reass.c projects/clang800-import/sys/netinet/tcp_stacks/rack.c projects/clang800-import/sys/netinet/tcp_syncache.c projects/clang800-import/sys/netinet/tcp_var.h projects/clang800-import/sys/netinet6/in6.c projects/clang800-import/sys/netinet6/in6_ifattach.c projects/clang800-import/sys/netinet6/in6_mcast.c projects/clang800-import/sys/netinet6/in6_var.h projects/clang800-import/sys/netinet6/mld6.c projects/clang800-import/sys/netinet6/mld6_var.h projects/clang800-import/sys/netpfil/ipfw/ip_fw2.c projects/clang800-import/sys/netpfil/pf/pf_ioctl.c projects/clang800-import/sys/powerpc/conf/GENERIC projects/clang800-import/sys/powerpc/conf/GENERIC64 projects/clang800-import/sys/riscv/riscv/pmap.c projects/clang800-import/sys/sparc64/conf/GENERIC projects/clang800-import/sys/sys/bio.h projects/clang800-import/sys/sys/conf.h projects/clang800-import/sys/sys/kcov.h projects/clang800-import/sys/sys/param.h projects/clang800-import/sys/ufs/ffs/ffs_softdep.c projects/clang800-import/sys/vm/uma_core.c projects/clang800-import/sys/x86/acpica/acpi_wakeup.c projects/clang800-import/sys/x86/include/_types.h projects/clang800-import/sys/x86/include/x86_var.h projects/clang800-import/sys/x86/x86/identcpu.c projects/clang800-import/tools/build/mk/OptionalObsoleteFiles.inc projects/clang800-import/tools/tools/ath/ath_ee_9300_print/Makefile projects/clang800-import/tools/tools/ath/athaggrstats/Makefile projects/clang800-import/tools/tools/ath/athdecode/Makefile projects/clang800-import/tools/tools/ath/athkey/Makefile projects/clang800-import/tools/tools/ath/athpoke/Makefile projects/clang800-import/tools/tools/ath/athprom/Makefile projects/clang800-import/tools/tools/ath/athradar/Makefile projects/clang800-import/tools/tools/ath/athratestats/Makefile projects/clang800-import/tools/tools/ath/athregs/Makefile projects/clang800-import/tools/tools/ath/athspectral/Makefile projects/clang800-import/tools/tools/ath/athstats/Makefile projects/clang800-import/tools/tools/ath/athsurvey/Makefile projects/clang800-import/tools/tools/nanobsd/pcengines/ALIX_DSK projects/clang800-import/tools/tools/tinybsd/tinybsd projects/clang800-import/usr.bin/calendar/calendars/de_AT.ISO_8859-15/calendar.feiertag projects/clang800-import/usr.bin/find/find.c projects/clang800-import/usr.bin/fortune/datfiles/freebsd-tips projects/clang800-import/usr.bin/systat/devs.c projects/clang800-import/usr.bin/whereis/whereis.c projects/clang800-import/usr.bin/write/write.c projects/clang800-import/usr.sbin/acpi/acpidump/acpi.c projects/clang800-import/usr.sbin/freebsd-update/freebsd-update.sh projects/clang800-import/usr.sbin/kbdcontrol/kbdcontrol.c Directory Properties: projects/clang800-import/ (props changed) projects/clang800-import/contrib/ipfilter/ (props changed) projects/clang800-import/contrib/llvm/ (props changed) projects/clang800-import/contrib/llvm/tools/clang/ (props changed) projects/clang800-import/contrib/netbsd-tests/ (props changed) projects/clang800-import/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/clang800-import/ObsoleteFiles.inc ============================================================================== --- projects/clang800-import/ObsoleteFiles.inc Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/ObsoleteFiles.inc Wed Jan 30 07:10:33 2019 (r343571) @@ -190,6 +190,9 @@ 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 +# 20190126: adv(4) / adw(4) removal +OLD_FILES+=usr/share/man/man4/adv.4.gz +OLD_FILES+=usr/share/man/man4/adw.4.gz # 20190114: old pbuf allocator removed OLD_FILES+=usr/share/man/man9/pbuf.9.gz # 20181219: ibcs removal Modified: projects/clang800-import/bin/sh/Makefile ============================================================================== --- projects/clang800-import/bin/sh/Makefile Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/bin/sh/Makefile Wed Jan 30 07:10:33 2019 (r343571) @@ -3,9 +3,12 @@ .include -CONFS= dot.profile profile -CONFSDIR_dot.profile= /root -CONFSNAME_dot.profile= .profile +CONFGROUPS= ETC ROOT +ETC= profile +ROOT= dot.shrc dot.profile +ROOTDIR= /root +ROOTNAME_dot.shrc= .shrc +ROOTNAME_dot.profile= .profile PACKAGE=runtime PROG= sh INSTALLFLAGS= -S Modified: projects/clang800-import/bin/sh/dot.profile ============================================================================== --- projects/clang800-import/bin/sh/dot.profile Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/bin/sh/dot.profile Wed Jan 30 07:10:33 2019 (r343571) @@ -9,6 +9,9 @@ export TERM PAGER=less export PAGER +# set ENV to a file invoked each time sh is started for interactive use. +ENV=$HOME/.shrc; export ENV + # Query terminal size; useful for serial lines. if [ -x /usr/bin/resizewin ] ; then /usr/bin/resizewin -z ; fi Copied: projects/clang800-import/bin/sh/dot.shrc (from r343570, head/bin/sh/dot.shrc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang800-import/bin/sh/dot.shrc Wed Jan 30 07:10:33 2019 (r343571, copy of r343570, head/bin/sh/dot.shrc) @@ -0,0 +1,39 @@ +# $FreeBSD$ +# +# .shrc - bourne shell startup file +# +# This file will be used if the shell is invoked for interactive use and +# the environment variable ENV is set to this file. +# +# see also sh(1), environ(7). +# + + +# file permissions: rwxr-xr-x +# +# umask 022 + +# Uncomment this to enable the builtin vi(1) command line editor in sh(1), +# e.g. ESC to go into visual mode. +# set -o vi + + +# # some useful aliases +# alias h='fc -l' +# alias j=jobs +# alias m="$PAGER" +# alias ll='ls -laFo' +# alias l='ls -l' +# alias g='egrep -i' + +# # be paranoid +# alias cp='cp -ip' +# alias mv='mv -i' +# alias rm='rm -i' + + +# set prompt: ``username@hostname:directory $ '' +PS1="\u@\h:\w \\$ " + +# search path for cd(1) +# CDPATH=:$HOME Modified: projects/clang800-import/bin/sh/parser.c ============================================================================== --- projects/clang800-import/bin/sh/parser.c Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/bin/sh/parser.c Wed Jan 30 07:10:33 2019 (r343571) @@ -40,6 +40,8 @@ static char sccsid[] = "@(#)parser.c 8.7 (Berkeley) 5/ #include __FBSDID("$FreeBSD$"); +#include +#include #include #include #include @@ -130,6 +132,7 @@ static void synexpect(int) __dead2; static void synerror(const char *) __dead2; static void setprompt(int); static int pgetc_linecont(void); +static void getusername(char *, size_t); static void * @@ -1969,6 +1972,53 @@ pgetc_linecont(void) return (c); } + +static struct passwd * +getpwlogin(void) +{ + const char *login; + + login = getlogin(); + if (login == NULL) + return (NULL); + + return (getpwnam(login)); +} + + +static void +getusername(char *name, size_t namelen) +{ + static char cached_name[MAXLOGNAME]; + struct passwd *pw; + uid_t euid; + + if (cached_name[0] == '\0') { + euid = geteuid(); + + /* + * Handle the case when there is more than one + * login with the same UID, or when the login + * returned by getlogin(2) does no longer match + * the current UID. + */ + pw = getpwlogin(); + if (pw == NULL || pw->pw_uid != euid) + pw = getpwuid(euid); + + if (pw != NULL) { + strlcpy(cached_name, pw->pw_name, + sizeof(cached_name)); + } else { + snprintf(cached_name, sizeof(cached_name), + "%u", euid); + } + } + + strlcpy(name, cached_name, namelen); +} + + /* * called by editline -- any expansions to the prompt * should be added here. @@ -2024,6 +2074,17 @@ getprompt(void *unused __unused) while ((ps[i] != '\0') && (ps[i] != trim)) i++; --i; + break; + + /* + * User name. + */ + case 'u': + ps[i] = '\0'; + getusername(&ps[i], PROMPTLEN - i); + /* Skip to end of username. */ + while (ps[i + 1] != '\0') + i++; break; /* Modified: projects/clang800-import/bin/sh/sh.1 ============================================================================== --- projects/clang800-import/bin/sh/sh.1 Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/bin/sh/sh.1 Wed Jan 30 07:10:33 2019 (r343571) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd December 8, 2018 +.Dd January 24, 2019 .Dt SH 1 .Os .Sh NAME @@ -1402,6 +1402,8 @@ which are replaced by the given information: This system's fully-qualified hostname (FQDN). .It Li \eh This system's hostname. +.It Li \eu +User name. .It Li \eW The final component of the current working directory. .It Li \ew Modified: projects/clang800-import/contrib/ipfilter/man/ipnat.5 ============================================================================== --- projects/clang800-import/contrib/ipfilter/man/ipnat.5 Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/contrib/ipfilter/man/ipnat.5 Wed Jan 30 07:10:33 2019 (r343571) @@ -104,7 +104,7 @@ map le0 10.0.0.0/8 -> 192.168.55.0/24 portmap tcp/udp In this instance, the word "auto" tells IPFilter to calculate a private range of port numbers for each address on the LHS to use without fear of them being trampled by others. This can lead to problems if there are -connections being generated mire quickly than IPFilter can expire them. +connections being generated more quickly than IPFilter can expire them. In this instance, and if we want to get away from a private range of port numbers, we can say: .nf Modified: projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp ============================================================================== --- projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp Wed Jan 30 07:10:33 2019 (r343571) @@ -357,6 +357,13 @@ ToolChain::CXXStdlibType FreeBSD::GetDefaultCXXStdlibT return ToolChain::CST_Libstdcxx; } +unsigned FreeBSD::GetDefaultDwarfVersion() const { + // Default to use DWARF 2 before FreeBSD 13. + if (getTriple().getOSMajorVersion() < 13) + return 2; + return 4; +} + void FreeBSD::addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const { Modified: projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h ============================================================================== --- projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h Wed Jan 30 07:10:33 2019 (r343571) @@ -70,7 +70,7 @@ class LLVM_LIBRARY_VISIBILITY FreeBSD : public Generic const llvm::opt::ArgList &Args) const override; bool isPIEDefault() const override; SanitizerMask getSupportedSanitizers() const override; - unsigned GetDefaultDwarfVersion() const override { return 2; } + unsigned GetDefaultDwarfVersion() const override; // Until dtrace (via CTF) and LLDB can deal with distributed debug info, // FreeBSD defaults to standalone/full debug info. bool GetDefaultStandaloneDebug() const override { return true; } Modified: projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c ============================================================================== --- projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Wed Jan 30 07:10:33 2019 (r343571) @@ -268,6 +268,10 @@ ATF_TC_BODY(cbrtl_powl, tc) long double y, z; size_t i; +#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 + atf_tc_expect_fail("test fails with clang 7+ - bug 234040"); +#endif + for (i = 0; i < __arraycount(x); i++) { y = cbrtl(x[i]); Modified: projects/clang800-import/lib/libbe/be.c ============================================================================== --- projects/clang800-import/lib/libbe/be.c Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/lib/libbe/be.c Wed Jan 30 07:10:33 2019 (r343571) @@ -649,32 +649,14 @@ int be_import(libbe_handle_t *lbh, const char *bootenv, int fd) { char buf[BE_MAXPATHLEN]; - time_t rawtime; nvlist_t *props; zfs_handle_t *zfs; - int err, len; - char nbuf[24]; + recvflags_t flags = { .nomount = 1 }; + int err; - /* - * We don't need this to be incredibly random, just unique enough that - * it won't conflict with an existing dataset name. Chopping time - * down to 32 bits is probably good enough for this. - */ - snprintf(nbuf, 24, "tmp%u", - (uint32_t)(time(NULL) & 0xFFFFFFFF)); - if ((err = be_root_concat(lbh, nbuf, buf)) != 0) - /* - * Technically this is our problem, but we try to use short - * enough names that we won't run into problems except in - * worst-case BE root approaching MAXPATHLEN. - */ - return (set_error(lbh, BE_ERR_PATHLEN)); + be_root_concat(lbh, bootenv, buf); - time(&rawtime); - len = strlen(buf); - strftime(buf + len, sizeof(buf) - len, "@%F-%T", localtime(&rawtime)); - - if ((err = lzc_receive(buf, NULL, NULL, false, fd)) != 0) { + if ((err = zfs_receive(lbh->lzh, buf, NULL, &flags, fd, NULL)) != 0) { switch (err) { case EINVAL: return (set_error(lbh, BE_ERR_NOORIGIN)); @@ -687,39 +669,22 @@ be_import(libbe_handle_t *lbh, const char *bootenv, in } } - if ((zfs = zfs_open(lbh->lzh, buf, ZFS_TYPE_SNAPSHOT)) == NULL) + if ((zfs = zfs_open(lbh->lzh, buf, ZFS_TYPE_FILESYSTEM)) == NULL) return (set_error(lbh, BE_ERR_ZFSOPEN)); nvlist_alloc(&props, NV_UNIQUE_NAME, KM_SLEEP); nvlist_add_string(props, "canmount", "noauto"); nvlist_add_string(props, "mountpoint", "/"); - be_root_concat(lbh, bootenv, buf); - - err = zfs_clone(zfs, buf, props); - zfs_close(zfs); + err = zfs_prop_set_list(zfs, props); nvlist_free(props); - if (err != 0) - return (set_error(lbh, BE_ERR_UNKNOWN)); - - /* - * Finally, we open up the dataset we just cloned the snapshot so that - * we may promote it. This is necessary in order to clean up the ghost - * snapshot that doesn't need to be seen after the operation is - * complete. - */ - if ((zfs = zfs_open(lbh->lzh, buf, ZFS_TYPE_DATASET)) == NULL) - return (set_error(lbh, BE_ERR_ZFSOPEN)); - - err = zfs_promote(zfs); zfs_close(zfs); if (err != 0) return (set_error(lbh, BE_ERR_UNKNOWN)); - /* Clean up the temporary snapshot */ - return (be_destroy(lbh, nbuf, 0)); + return (0); } #if SOON Modified: projects/clang800-import/lib/libc/sys/sendfile.2 ============================================================================== --- projects/clang800-import/lib/libc/sys/sendfile.2 Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/lib/libc/sys/sendfile.2 Wed Jan 30 07:10:33 2019 (r343571) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 12, 2018 +.Dd January 25, 2019 .Dt SENDFILE 2 .Os .Sh NAME @@ -104,7 +104,7 @@ variable pointed to by The least significant 16 bits of .Fa flags argument is a bitmap of these values: -.Bl -tag -offset indent +.Bl -tag -offset indent -width "SF_USER_READAHEAD" .It Dv SF_NODISKIO This flag causes .Nm @@ -403,3 +403,14 @@ The .Fx 11 implementation was written by .An Gleb Smirnoff Aq Mt glebius@FreeBSD.org . +.Sh BUGS +The +.Fn sendfile +system call will not fail, i.e., return +.Dv -1 +and set +.Va errno +to +.Er EFAULT , +if provided an invalid address for +.Fa sbytes . Modified: projects/clang800-import/lib/libc/tests/sys/Makefile ============================================================================== --- projects/clang800-import/lib/libc/tests/sys/Makefile Wed Jan 30 07:09:01 2019 (r343570) +++ projects/clang800-import/lib/libc/tests/sys/Makefile Wed Jan 30 07:10:33 2019 (r343571) @@ -8,6 +8,7 @@ PACKAGE= tests ATF_TESTS_C+= brk_test .endif ATF_TESTS_C+= queue_test +ATF_TESTS_C+= sendfile_test # TODO: clone, lwp_create, lwp_ctl, posix_fadvise, recvmmsg, # swapcontext Copied: projects/clang800-import/lib/libc/tests/sys/sendfile_test.c (from r343570, head/lib/libc/tests/sys/sendfile_test.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang800-import/lib/libc/tests/sys/sendfile_test.c Wed Jan 30 07:10:33 2019 (r343571, copy of r343570, head/lib/libc/tests/sys/sendfile_test.c) @@ -0,0 +1,1146 @@ +/*- + * Copyright (c) 2018 Enji Cooper. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +const char DETERMINISTIC_PATTERN[] = + "The past is already gone, the future is not yet here. There's only one moment for you to live.\n"; + +#define SOURCE_FILE "source" +#define DESTINATION_FILE "dest" + +#define PORTRANGE_FIRST "net.inet.ip.portrange.first" +#define PORTRANGE_LAST "net.inet.ip.portrange.last" + +static int portrange_first, portrange_last; + +static int +get_int_via_sysctlbyname(const char *oidname) +{ + size_t oldlen; + int int_value; + + ATF_REQUIRE_EQ_MSG(sysctlbyname(oidname, &int_value, &oldlen, NULL, 0), + 0, "sysctlbyname(%s, ...) failed: %s", oidname, strerror(errno)); + ATF_REQUIRE_EQ_MSG(sizeof(int_value), oldlen, "sanity check failed"); + + return (int_value); +} + +static int +generate_random_port(int seed) +{ + int random_port; + + printf("Generating a random port with seed=%d\n", seed); + if (portrange_first == 0) { + portrange_first = get_int_via_sysctlbyname(PORTRANGE_FIRST); + printf("Port range lower bound: %d\n", portrange_first); + } + + if (portrange_last == 0) { + portrange_last = get_int_via_sysctlbyname(PORTRANGE_LAST); + printf("Port range upper bound: %d\n", portrange_last); + } + + srand((unsigned)seed); + + random_port = rand() % (portrange_last - portrange_first) + + portrange_first; + + printf("Random port generated: %d\n", random_port); + return (random_port); +} + +static void +resolve_localhost(struct addrinfo **res, int domain, int type, int port) +{ + char *serv; + struct addrinfo hints; + int error; + + ATF_REQUIRE_MSG(domain == AF_INET || domain == AF_INET6, + "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_socktype = type; + + error = getaddrinfo("localhost", serv, &hints, res); + ATF_REQUIRE_EQ_MSG(error, 0, + "getaddrinfo failed: %s", gai_strerror(error)); + free(serv); +} + +static int +make_socket(int domain, int type, int protocol) +{ + int sock; + + sock = socket(domain, type, protocol); + ATF_REQUIRE_MSG(sock != -1, "socket(%d, %d, 0) failed: %s", + domain, type, strerror(errno)); + + return (sock); +} + +static int +setup_client(int domain, int type, int port) +{ + struct addrinfo *res; + char host[NI_MAXHOST+1]; + int error, sock; + + resolve_localhost(&res, domain, type, port); + error = getnameinfo( + (const struct sockaddr*)res->ai_addr, res->ai_addrlen, + host, nitems(host) - 1, NULL, 0, NI_NUMERICHOST); + ATF_REQUIRE_EQ_MSG(error, 0, + "getnameinfo failed: %s", gai_strerror(error)); + printf( + "Will try to connect to host='%s', address_family=%d, " + "socket_type=%d\n", + host, res->ai_family, res->ai_socktype); + sock = make_socket(res->ai_family, res->ai_socktype, res->ai_protocol); + error = connect(sock, (struct sockaddr*)res->ai_addr, res->ai_addrlen); + freeaddrinfo(res); + ATF_REQUIRE_EQ_MSG(error, 0, "connect failed: %s", strerror(errno)); + return (sock); +} + +/* + * XXX: use linear probing to find a free port and eliminate `port` argument as + * a [const] int (it will need to be a pointer so it can be passed back out of + * the function and can influence which port `setup_client(..)` connects on. + */ +static int +setup_server(int domain, int type, int port) +{ + struct addrinfo *res; + char host[NI_MAXHOST+1]; + int error, sock; + + resolve_localhost(&res, domain, type, port); + sock = make_socket(res->ai_family, res->ai_socktype, res->ai_protocol); + + error = getnameinfo( + (const struct sockaddr*)res->ai_addr, res->ai_addrlen, + host, nitems(host) - 1, NULL, 0, NI_NUMERICHOST); + ATF_REQUIRE_EQ_MSG(error, 0, + "getnameinfo failed: %s", gai_strerror(error)); + printf( + "Will try to bind socket to host='%s', address_family=%d, " + "socket_type=%d\n", + host, res->ai_family, res->ai_socktype); + error = bind(sock, res->ai_addr, res->ai_addrlen); + freeaddrinfo(res); + ATF_REQUIRE_EQ_MSG(error, 0, "bind failed: %s", strerror(errno)); + error = listen(sock, 1); + ATF_REQUIRE_EQ_MSG(error, 0, "listen failed: %s", strerror(errno)); + + return (sock); +} + +/* + * This function is a helper routine for taking data being sent by `sendfile` via + * `server_sock`, and pushing the received stream out to a file, denoted by + * `dest_filename`. + */ +static void +server_cat(const char *dest_filename, int server_sock, size_t len) +{ + char *buffer; + int recv_sock; + ssize_t received_bytes; + + buffer = calloc(len + 1, sizeof(char)); + if (buffer == NULL) + err(1, "malloc failed"); + + recv_sock = accept(server_sock, NULL, 0); + if (recv_sock == -1) + err(1, "accept failed"); + + /* + * XXX: this assumes the simplest case where all data is received in a + * single recv(2) call. + */ + if (recv(recv_sock, buffer, len, 0) == -1) + err(1, "recv failed"); + + atf_utils_create_file(dest_filename, "%s", buffer); + + /* + * This recv(2) call helps ensure the amount of sent data is exactly + * what was specified by `len`. + */ + received_bytes = recv(recv_sock, buffer, len, 0); + switch (received_bytes) { + case -1: + err(1, "recv failed"); + case 0: + break; + default: + errx(1, "received unexpected data: %s", buffer); + } + + (void)close(recv_sock); + (void)close(server_sock); + free(buffer); +} + +static int +setup_tcp_server(int domain, int port) +{ + + return (setup_server(domain, SOCK_STREAM, port)); +} + +static int +setup_tcp_client(int domain, int port) +{ + + return (setup_client(domain, SOCK_STREAM, port)); +} + +static off_t +file_size_from_fd(int fd) +{ + struct stat st; + + ATF_REQUIRE_EQ_MSG(0, fstat(fd, &st), + "fstat failed: %s", strerror(errno)); + + return (st.st_size); +} + +/* + * NB: `nbytes` == 0 has special connotations given the sendfile(2) API + * contract. In short, "send the whole file" (paraphrased). + */ +static void +verify_source_and_dest(const char* dest_filename, int src_fd, off_t offset, + size_t nbytes) +{ + char *dest_pointer, *src_pointer; + off_t dest_file_size, src_file_size; + size_t length; + int dest_fd; + + atf_utils_cat_file(dest_filename, "dest_file: "); + + dest_fd = open(dest_filename, O_RDONLY); + ATF_REQUIRE_MSG(dest_fd != -1, "open failed"); + + dest_file_size = file_size_from_fd(dest_fd); + src_file_size = file_size_from_fd(src_fd); + + /* + * Per sendfile(2), "send the whole file" (paraphrased). This means + * that we need to grab the file size, as passing in length = 0 with + * mmap(2) will result in a failure with EINVAL (length = 0 is invalid). + */ + length = (nbytes == 0) ? (size_t)(src_file_size - offset) : nbytes; + + ATF_REQUIRE_EQ_MSG(dest_file_size, length, + "number of bytes written out to %s (%ju) doesn't match the " + "expected number of bytes (%zu)", dest_filename, dest_file_size, + length); + + ATF_REQUIRE_EQ_MSG(0, lseek(src_fd, offset, SEEK_SET), + "lseek failed: %s", strerror(errno)); + + dest_pointer = mmap(NULL, length, PROT_READ, MAP_PRIVATE, dest_fd, 0); + ATF_REQUIRE_MSG(dest_pointer != MAP_FAILED, "mmap failed: %s", + strerror(errno)); + + printf("Will mmap in the source file from offset=%jd to length=%zu\n", + offset, length); + + src_pointer = mmap(NULL, length, PROT_READ, MAP_PRIVATE, src_fd, offset); + ATF_REQUIRE_MSG(src_pointer != MAP_FAILED, "mmap failed: %s", + strerror(errno)); + + ATF_REQUIRE_EQ_MSG(0, memcmp(src_pointer, dest_pointer, length), + "Contents of source and destination do not match. '%s' != '%s'", + src_pointer, dest_pointer); + + (void)munmap(src_pointer, length); + (void)munmap(dest_pointer, length); + (void)close(dest_fd); +} + +static void +fd_positive_file_test(int domain) +{ + off_t offset; + size_t nbytes, pattern_size; + int client_sock, error, fd, port, server_sock; + pid_t server_pid; + + pattern_size = strlen(DETERMINISTIC_PATTERN); + + atf_utils_create_file(SOURCE_FILE, "%s", DETERMINISTIC_PATTERN); + fd = open(SOURCE_FILE, O_RDONLY); + ATF_REQUIRE_MSG(fd != -1, "open failed: %s", strerror(errno)); + + port = generate_random_port(__LINE__ + domain); + server_sock = setup_tcp_server(domain, port); + client_sock = setup_tcp_client(domain, port); + + server_pid = atf_utils_fork(); + if (server_pid == 0) { + (void)close(client_sock); + server_cat(DESTINATION_FILE, server_sock, pattern_size); + _exit(0); + } else + (void)close(server_sock); + + nbytes = 0; + offset = 0; + error = sendfile(fd, client_sock, offset, nbytes, NULL, NULL, + SF_FLAGS(0, 0)); + ATF_REQUIRE_EQ_MSG(0, error, "sendfile failed: %s", strerror(errno)); + (void)close(client_sock); + + atf_utils_wait(server_pid, 0, "", ""); + verify_source_and_dest(DESTINATION_FILE, fd, offset, nbytes); + + (void)close(fd); +} + +ATF_TC(fd_positive_file_v4); +ATF_TC_HEAD(fd_positive_file_v4, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify regular file as file descriptor support (IPv4)"); +} +ATF_TC_BODY(fd_positive_file_v4, tc) +{ + + fd_positive_file_test(AF_INET); +} + +ATF_TC(fd_positive_file_v6); +ATF_TC_HEAD(fd_positive_file_v6, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify regular file as file descriptor support (IPv6)"); +} +ATF_TC_BODY(fd_positive_file_v6, tc) +{ + + fd_positive_file_test(AF_INET6); +} + +static void +fd_positive_shm_test(int domain) +{ + char *shm_pointer; + off_t offset; + size_t nbytes, pattern_size; + pid_t server_pid; + int client_sock, error, fd, port, server_sock; + + pattern_size = strlen(DETERMINISTIC_PATTERN); + + printf("pattern size: %zu\n", pattern_size); + + fd = shm_open(SHM_ANON, O_RDWR|O_CREAT, 0600); + ATF_REQUIRE_MSG(fd != -1, "shm_open failed: %s", strerror(errno)); + ATF_REQUIRE_EQ_MSG(0, ftruncate(fd, pattern_size), + "ftruncate failed: %s", strerror(errno)); + shm_pointer = mmap(NULL, pattern_size, PROT_READ|PROT_WRITE, + MAP_SHARED, fd, 0); + ATF_REQUIRE_MSG(shm_pointer != MAP_FAILED, + "mmap failed: %s", strerror(errno)); + memcpy(shm_pointer, DETERMINISTIC_PATTERN, pattern_size); + ATF_REQUIRE_EQ_MSG(0, + memcmp(shm_pointer, DETERMINISTIC_PATTERN, pattern_size), + "memcmp showed data mismatch: '%s' != '%s'", + DETERMINISTIC_PATTERN, shm_pointer); + + port = generate_random_port(__LINE__ + domain); + server_sock = setup_tcp_server(domain, port); + client_sock = setup_tcp_client(domain, port); + + server_pid = atf_utils_fork(); + if (server_pid == 0) { + (void)close(client_sock); + server_cat(DESTINATION_FILE, server_sock, pattern_size); + _exit(0); + } else + (void)close(server_sock); + + nbytes = 0; + offset = 0; + error = sendfile(fd, client_sock, offset, nbytes, NULL, NULL, + SF_FLAGS(0, 0)); + ATF_REQUIRE_EQ_MSG(0, error, "sendfile failed: %s", strerror(errno)); + (void)close(client_sock); + + atf_utils_wait(server_pid, 0, "", ""); + verify_source_and_dest(DESTINATION_FILE, fd, offset, nbytes); + + (void)munmap(shm_pointer, sizeof(DETERMINISTIC_PATTERN)); + (void)close(fd); +} + +ATF_TC(fd_positive_shm_v4); +ATF_TC_HEAD(fd_positive_shm_v4, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify shared memory as file descriptor support (IPv4)"); +} +ATF_TC_BODY(fd_positive_shm_v4, tc) +{ + + fd_positive_shm_test(AF_INET); +} + +ATF_TC(fd_positive_shm_v6); +ATF_TC_HEAD(fd_positive_shm_v6, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify shared memory as file descriptor support (IPv6))"); +} +ATF_TC_BODY(fd_positive_shm_v6, tc) +{ + + fd_positive_shm_test(AF_INET6); +} + +static void +fd_negative_bad_fd_test(int domain) +{ + int client_sock, error, fd, port, server_sock; + + port = generate_random_port(__LINE__ + domain); + server_sock = setup_tcp_server(domain, port); + client_sock = setup_tcp_client(domain, port); + + fd = -1; + + error = sendfile(fd, client_sock, 0, 0, NULL, NULL, SF_FLAGS(0, 0)); + ATF_REQUIRE_ERRNO(EBADF, error == -1); + + (void)close(client_sock); + (void)close(server_sock); +} + +ATF_TC(fd_negative_bad_fd_v4); +ATF_TC_HEAD(fd_negative_bad_fd_v4, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify bad file descriptor returns EBADF (IPv4)"); +} +ATF_TC_BODY(fd_negative_bad_fd_v4, tc) +{ + + fd_negative_bad_fd_test(AF_INET); +} + +ATF_TC(fd_negative_bad_fd_v6); +ATF_TC_HEAD(fd_negative_bad_fd_v6, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Verify bad file descriptor returns EBADF (IPv6)"); +} +ATF_TC_BODY(fd_negative_bad_fd_v6, tc) +{ + + fd_negative_bad_fd_test(AF_INET6); +} + +static void +flags_test(int domain) +{ + off_t offset; + size_t nbytes, pattern_size; + int client_sock, error, fd, i, port, server_sock; + pid_t server_pid; + int16_t number_pages = 10; + + pattern_size = strlen(DETERMINISTIC_PATTERN); + + struct testcase { + int16_t readahead_pages, flags; + } testcases[] = { + /* This is covered in `:fd_positive_file` */ +#if 0 + { + .readahead_pages = 0, + .flags = 0 + }, +#endif + { + .readahead_pages = 0, + .flags = SF_NOCACHE + }, +#ifdef SF_USER_READAHEAD + { + .readahead_pages = 0, + .flags = SF_NOCACHE|SF_USER_READAHEAD + }, + { + .readahead_pages = 0, + .flags = SF_USER_READAHEAD + }, +#endif + { + .readahead_pages = number_pages, + .flags = 0 + }, + { + .readahead_pages = number_pages, + .flags = SF_NOCACHE + }, +#ifdef SF_USER_READAHEAD + { + .readahead_pages = number_pages, + .flags = SF_NOCACHE|SF_USER_READAHEAD + }, +#endif + { + .readahead_pages = number_pages, + .flags = SF_NOCACHE + }, + { + .readahead_pages = number_pages, + .flags = SF_NODISKIO + } + }; + + atf_utils_create_file(SOURCE_FILE, "%s", DETERMINISTIC_PATTERN); + for (i = 0; i < nitems(testcases); i++) { + fd = open(SOURCE_FILE, O_RDONLY); + ATF_REQUIRE_MSG(fd != -1, "open failed: %s", strerror(errno)); + + port = generate_random_port(i * __LINE__ + domain); + server_sock = setup_tcp_server(domain, port); + client_sock = setup_tcp_client(domain, port); + + server_pid = atf_utils_fork(); + if (server_pid == 0) { + (void)close(client_sock); + server_cat(DESTINATION_FILE, server_sock, pattern_size); + _exit(0); + } else + (void)close(server_sock); + + nbytes = 0; + offset = 0; + error = sendfile(fd, client_sock, offset, nbytes, NULL, NULL, + SF_FLAGS(testcases[i].readahead_pages, testcases[i].flags)); + ATF_CHECK_EQ_MSG(error, 0, "sendfile testcase #%d failed: %s", + i, strerror(errno)); + (void)close(client_sock); + + atf_utils_wait(server_pid, 0, "", ""); + verify_source_and_dest(DESTINATION_FILE, fd, offset, nbytes); + + (void)close(fd); + } +} + +ATF_TC(flags_v4); +ATF_TC_HEAD(flags_v4, tc) +{ + + atf_tc_set_md_var(tc, "descr", "Verify flags functionality (IPv4)"); +} +ATF_TC_BODY(flags_v4, tc) +{ + + flags_test(AF_INET); +} + +ATF_TC(flags_v6); +ATF_TC_HEAD(flags_v6, tc) +{ + + atf_tc_set_md_var(tc, "descr", "Verify flags functionality (IPv6)"); +} +ATF_TC_BODY(flags_v6, tc) +{ + + flags_test(AF_INET6); +} + +static void +hdtr_positive_test(int domain) +{ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***