From owner-svn-src-projects@freebsd.org  Sun Jul  2 11:41:19 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 98F1EDA3C37
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  2 Jul 2017 11:41:19 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id F2BCE644E5;
 Sun,  2 Jul 2017 11:41:18 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v62BfIiK071104;
 Sun, 2 Jul 2017 11:41:18 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v62BfGks071084;
 Sun, 2 Jul 2017 11:41:16 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201707021141.v62BfGks071084@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 2 Jul 2017 11:41:16 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320572 - in projects/clang500-import:
 contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/lsan
 contrib/compiler-rt/lib/msan contrib/compiler-rt/lib/profile
 contrib/compiler-rt/lib/san...
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: in projects/clang500-import: contrib/compiler-rt/lib/asan
 contrib/compiler-rt/lib/lsan contrib/compiler-rt/lib/msan
 contrib/compiler-rt/lib/profile contrib/compiler-rt/lib/sanitizer_common
 contrib/com...
X-SVN-Commit-Revision: 320572
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Jul 2017 11:41:19 -0000

Author: dim
Date: Sun Jul  2 11:41:15 2017
New Revision: 320572
URL: https://svnweb.freebsd.org/changeset/base/320572

Log:
  Merge llvm, clang, lld, lldb, compiler-rt and libc++ r306956, and update
  build glue.

Added:
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c
     - copied unchanged from r320555, vendor/compiler-rt/dist/lib/profile/InstrProfilingNameVar.c
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_always_instrument.txt
     - copied unchanged from r320555, vendor/compiler-rt/dist/lib/xray/xray_always_instrument.txt
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_never_instrument.txt
     - copied unchanged from r320555, vendor/compiler-rt/dist/lib/xray/xray_never_instrument.txt
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/CFLAliasAnalysisUtils.h
     - copied unchanged from r320553, vendor/llvm/dist/include/llvm/Analysis/CFLAliasAnalysisUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
     - copied unchanged from r320553, vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDataExtractor.cpp
     - copied unchanged from r320553, vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDataExtractor.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
     - copied unchanged from r320553, vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
     - copied unchanged from r320553, vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.h
     - copied unchanged from r320553, vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFStreamer.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMScheduleM3.td
     - copied unchanged from r320553, vendor/llvm/dist/lib/Target/ARM/ARMScheduleM3.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrSystem.td
     - copied unchanged from r320553, vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrSystem.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsNios2.def
     - copied unchanged from r320553, vendor/clang/dist/include/clang/Basic/BuiltinsNios2.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Tooling/Refactoring/Rename/
     - copied from r320553, vendor/clang/dist/include/clang/Tooling/Refactoring/Rename/
  projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/Refactoring/Rename/
     - copied from r320553, vendor/clang/dist/lib/Tooling/Refactoring/Rename/
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/SPARCV9.cpp
     - copied unchanged from r320555, vendor/lld/dist/ELF/Arch/SPARCV9.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/Connection.h
     - copied unchanged from r320555, vendor/lldb/dist/include/lldb/Utility/Connection.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/IOObject.h
     - copied unchanged from r320555, vendor/lldb/dist/include/lldb/Utility/IOObject.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/StructuredData.h
     - copied unchanged from r320555, vendor/lldb/dist/include/lldb/Utility/StructuredData.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/Timer.h
     - copied unchanged from r320555, vendor/lldb/dist/include/lldb/Utility/Timer.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/TraceOptions.h
     - copied unchanged from r320555, vendor/lldb/dist/include/lldb/Utility/TraceOptions.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/Connection.cpp
     - copied unchanged from r320555, vendor/lldb/dist/source/Utility/Connection.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/IOObject.cpp
     - copied unchanged from r320555, vendor/lldb/dist/source/Utility/IOObject.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/StructuredData.cpp
     - copied unchanged from r320555, vendor/lldb/dist/source/Utility/StructuredData.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/Timer.cpp
     - copied unchanged from r320555, vendor/lldb/dist/source/Utility/Timer.cpp
Deleted:
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.h
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SITypeRewriter.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/Connection.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/StructuredData.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/Timer.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/TraceOptions.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/IOObject.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Connection.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/StructuredData.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Timer.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/IOObject.cpp
Modified:
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc
  projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
  projects/clang500-import/contrib/compiler-rt/lib/msan/msan_new_delete.cc
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfiling.c
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingBuffer.c
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h
  projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingWriter.c
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary64.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator_combined.h
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_new_delete.cpp
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.cpp
  projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.cc
  projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc
  projects/clang500-import/contrib/libc++/include/__config
  projects/clang500-import/contrib/libc++/include/new
  projects/clang500-import/contrib/libc++/include/string
  projects/clang500-import/contrib/llvm/include/llvm-c/Transforms/Vectorize.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/CFLAndersAliasAnalysis.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/CFLSteensAliasAnalysis.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/IteratedDominanceFrontier.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemorySSA.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/OptimizationDiagnosticInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/RegionInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/RegionInfoImpl.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/RegionIterator.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Dwarf.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Wasm.h
  projects/clang500-import/contrib/llvm/include/llvm/Bitcode/BitcodeReader.h
  projects/clang500-import/contrib/llvm/include/llvm/Bitcode/BitcodeWriter.h
  projects/clang500-import/contrib/llvm/include/llvm/Bitcode/LLVMBitCodes.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Types.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachinePassRegistry.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineScheduler.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineValueType.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MacroFusion.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/PseudoSourceValue.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/TargetPassConfig.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ValueTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/EnumTables.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/Formatters.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeSerializer.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeServerHandler.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/IPDBDataStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/Hash.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/HashTable.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeSession.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/PDB.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/PDBExtras.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/PDBTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/UDTLayout.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Argument.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Constant.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Constants.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/DerivedTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Dominators.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Function.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalAlias.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalIFunc.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalIndirectSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalObject.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalVariable.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InlineAsm.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Instruction.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicInst.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsWebAssembly.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/LLVMContext.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/LegacyPassNameParser.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Metadata.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Operator.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/PatternMatch.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Statepoint.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/User.h
  projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h
  projects/clang500-import/contrib/llvm/include/llvm/LinkAllPasses.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCAsmBackend.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/Archive.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/COFFImportFile.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/ELFObjectFile.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/IRObjectFile.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/IRSymtab.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/MachOUniversal.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/ObjectFile.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/SymbolicFile.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/Wasm.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/COFFYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/DWARFEmitter.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/DWARFYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/ELFYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/MachOYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/ObjectYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/WasmYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/YAML.h
  projects/clang500-import/contrib/llvm/include/llvm/Passes/PassBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Errno.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTree.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTreeConstruction.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/TargetParser.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLParser.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLTraits.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/GenericOpcodes.td
  projects/clang500-import/contrib/llvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLowering.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetOpcodes.def
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/SampleProfile.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/ConstantHoisting.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/LoopUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/OrderedInstructions.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/PredicateInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Vectorize.h
  projects/clang500-import/contrib/llvm/lib/Analysis/CFLAndersAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/CFLSteensAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/InlineCost.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/IteratedDominanceFrontier.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/MemoryBuiltins.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/RegionInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/TargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/BinaryFormat/Magic.cpp
  projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
  projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/LiveRangeCalc.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/LiveRangeCalc.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/MIRParser/MIParser.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MacroFusion.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterCoalescer.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/RenameIndependentSubregs.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/TargetPassConfig.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugChecksumsSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugCrossExSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugCrossImpSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugInlineeLinesSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugLinesSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSubsectionRecord.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSymbolRVASubsection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/EnumTables.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/Formatters.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolSerializer.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeSerializer.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleList.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/Hash.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/HashTable.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NamedStreamMap.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeEnumModules.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/PDB.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/PDBExtras.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/UDTLayout.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
  projects/clang500-import/contrib/llvm/lib/IR/Constants.cpp
  projects/clang500-import/contrib/llvm/lib/IR/Dominators.cpp
  projects/clang500-import/contrib/llvm/lib/IR/LLVMContext.cpp
  projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.h
  projects/clang500-import/contrib/llvm/lib/LTO/LTO.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCAssembler.cpp
  projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Object/COFFObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/IRSymtab.cpp
  projects/clang500-import/contrib/llvm/lib/Object/WasmObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/WindowsResource.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/COFFYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLDebugSections.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/DWARFEmitter.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/DWARFYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/ELFYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/MachOYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/ObjectYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/WasmYAML.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/YAML.cpp
  projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProf.cpp
  projects/clang500-import/contrib/llvm/lib/Support/AMDGPUCodeObjectMetadata.cpp
  projects/clang500-import/contrib/llvm/lib/Support/Host.cpp
  projects/clang500-import/contrib/llvm/lib/Support/MemoryBuffer.cpp
  projects/clang500-import/contrib/llvm/lib/Support/TargetParser.cpp
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Path.inc
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Process.inc
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64CondBrTuning.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ConditionalCompares.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64LegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MCInstLower.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MCInstLower.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedThunderX2T99.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetObjectFile.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64FixupKinds.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARM.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSchedule.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetObjectFile.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMFixupKinds.h
  projects/clang500-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRAsmBackend.h
  projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonFrameLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MicroMips64r6InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCFixupKinds.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPC.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCCTRLoops.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/README.txt
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZ.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZFeatures.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZScheduleZ13.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZScheduleZ196.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZScheduleZEC12.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroInstr.h
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/SampleProfile.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/ConstantHoisting.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/CodeExtractor.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LowerMemIntrinsics.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/OrderedInstructions.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/PredicateInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/Vectorize.cpp
  projects/clang500-import/contrib/llvm/tools/bugpoint/ToolRunner.cpp
  projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/Index.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/ASTStructuralEquivalence.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/NSAPI.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/OpenMPClause.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Redeclarable.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsWebAssembly.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticASTKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/OpenMPKinds.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/SourceLocation.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/TargetBuiltins.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/TargetOptions.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Visibility.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Driver.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Format/Format.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticRenderer.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/PTHLexer.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/module.modulemap
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTStructuralEquivalence.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/Decl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/Expr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ODRHash.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/SourceLocation.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/SanitizerArgs.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/ARM.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/CommonArgs.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/MipsLinux.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/Format.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/FormatToken.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/NamespaceEndCommentsFixer.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineFormatter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTMerge.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ChainedIncludesSource.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/DependencyFile.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/DiagnosticRenderer.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ModuleDependencyCollector.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/ModuleMap.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/Refactoring/AtomicChange.cpp
  projects/clang500-import/contrib/llvm/tools/clang/tools/driver/driver.cpp
  projects/clang500-import/contrib/llvm/tools/llc/llc.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/MarkLive.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Symbols.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Writer.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/CMakeLists.txt
  projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp
  projects/clang500-import/contrib/llvm/tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Breakpoint/Breakpoint.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointOptions.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/Event.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/SearchFilter.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/StructuredDataImpl.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeSummary.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/DataFormatters/TypeSynthetic.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/File.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Host.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/MainLoopBase.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Socket.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/XML.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/NativeProcessProtocol.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Interpreter/ScriptInterpreter.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/DWARFCallFrameInfo.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/FuncUnwinders.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/UnwindTable.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/ABI.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/InstrumentationRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/InstrumentationRuntimeStopInfo.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/Process.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/StopInfo.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/StructuredDataPlugin.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/SystemRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/Thread.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanPython.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/ThreadSpec.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/JSON.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-enumerations.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-private-interfaces.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBCommunication.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBStructuredData.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBTarget.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBThread.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBThreadPlan.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBTraceOptions.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SystemInitializerFull.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectFrame.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectLog.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectTarget.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectThread.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Communication.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Disassembler.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/FormatEntity.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Mangled.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Module.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Host.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Symbols.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/freebsd/Host.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/netbsd/Host.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/openbsd/Host.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Initialization/SystemInitializerCommon.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Interpreter/CommandInterpreter.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm/ABISysV_arm.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-i386/ABISysV_i386.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-mips/ABISysV_mips.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-mips/ABISysV_mips.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-ppc/ABISysV_ppc.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-ppc/ABISysV_ppc.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-ppc64/ABISysV_ppc64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-ppc64/ABISysV_ppc64.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-s390x/ABISysV_s390x.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-s390x/ABISysV_s390x.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ASan/ASanRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/TSan/TSanRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/Cocoa.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/NSSet.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/JIT/ObjectFileJIT.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolVendor/ELF/SymbolVendorELF.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/DWARFCallFrameInfo.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/FuncUnwinders.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/ObjectFile.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/Symtab.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/UnwindTable.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/Variable.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/ABI.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/ObjCLanguageRuntime.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Platform.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Process.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Target.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/TargetList.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/ThreadSpec.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/JSON.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/tools/lldb-server/Acceptor.h
  projects/clang500-import/contrib/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-lto2/llvm-lto2.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-nm/llvm-nm.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-objdump/llvm-objdump.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/PdbYaml.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.h
  projects/clang500-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-readobj/WasmDumper.cpp
  projects/clang500-import/contrib/llvm/tools/opt/opt.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenRegisters.h
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenSchedule.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/DAGISelMatcher.h
  projects/clang500-import/contrib/llvm/utils/TableGen/GlobalISelEmitter.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/SubtargetEmitter.cpp
  projects/clang500-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang500-import/lib/clang/include/lld/Config/Version.inc
  projects/clang500-import/lib/clang/include/llvm/Support/VCSRevision.h
  projects/clang500-import/lib/clang/liblldb/Makefile
  projects/clang500-import/lib/clang/libllvm/Makefile
  projects/clang500-import/lib/libclang_rt/profile/Makefile
  projects/clang500-import/usr.bin/clang/lld/Makefile
Directory Properties:
  projects/clang500-import/contrib/compiler-rt/   (props changed)
  projects/clang500-import/contrib/libc++/   (props changed)
  projects/clang500-import/contrib/llvm/   (props changed)
  projects/clang500-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -160,7 +160,11 @@ struct QuarantineCallback {
   }
 
   void *Allocate(uptr size) {
-    return get_allocator().Allocate(cache_, size, 1);
+    void *res = get_allocator().Allocate(cache_, size, 1);
+    // TODO(alekseys): Consider making quarantine OOM-friendly.
+    if (UNLIKELY(!res))
+      return DieOnFailure::OnOOM();
+    return res;
   }
 
   void Deallocate(void *p) {
@@ -524,8 +528,7 @@ struct Allocator {
 
   // Expects the chunk to already be marked as quarantined by using
   // AtomicallySetQuarantineFlagIfAllocated.
-  void QuarantineChunk(AsanChunk *m, void *ptr, BufferedStackTrace *stack,
-                       AllocType alloc_type) {
+  void QuarantineChunk(AsanChunk *m, void *ptr, BufferedStackTrace *stack) {
     CHECK_EQ(m->chunk_state, CHUNK_QUARANTINE);
     CHECK_GE(m->alloc_tid, 0);
     if (SANITIZER_WORDSIZE == 64)  // On 32-bits this resides in user area.
@@ -603,7 +606,7 @@ struct Allocator {
       ReportNewDeleteSizeMismatch(p, delete_size, stack);
     }
 
-    QuarantineChunk(m, ptr, stack, alloc_type);
+    QuarantineChunk(m, ptr, stack);
   }
 
   void *Reallocate(void *old_ptr, uptr new_size, BufferedStackTrace *stack) {
@@ -632,7 +635,7 @@ struct Allocator {
   }
 
   void *Calloc(uptr nmemb, uptr size, BufferedStackTrace *stack) {
-    if (CallocShouldReturnNullDueToOverflow(size, nmemb))
+    if (CheckForCallocOverflow(size, nmemb))
       return AsanAllocator::FailureHandler::OnBadRequest();
     void *ptr = Allocate(nmemb * size, 8, stack, FROM_MALLOC, false);
     // If the memory comes from the secondary allocator no need to clear it

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -579,17 +579,6 @@ INTERCEPTOR(char*, __strdup, const char *s) {
 }
 #endif // ASAN_INTERCEPT___STRDUP
 
-INTERCEPTOR(SIZE_T, wcslen, const wchar_t *s) {
-  void *ctx;
-  ASAN_INTERCEPTOR_ENTER(ctx, wcslen);
-  SIZE_T length = internal_wcslen(s);
-  if (!asan_init_is_running) {
-    ENSURE_ASAN_INITED();
-    ASAN_READ_RANGE(ctx, s, (length + 1) * sizeof(wchar_t));
-  }
-  return length;
-}
-
 INTERCEPTOR(char*, strncpy, char *to, const char *from, uptr size) {
   void *ctx;
   ASAN_INTERCEPTOR_ENTER(ctx, strncpy);
@@ -722,7 +711,6 @@ void InitializeAsanInterceptors() {
   // Intercept str* functions.
   ASAN_INTERCEPT_FUNC(strcat);  // NOLINT
   ASAN_INTERCEPT_FUNC(strcpy);  // NOLINT
-  ASAN_INTERCEPT_FUNC(wcslen);
   ASAN_INTERCEPT_FUNC(strncat);
   ASAN_INTERCEPT_FUNC(strncpy);
   ASAN_INTERCEPT_FUNC(strdup);

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_new_delete.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -25,23 +25,27 @@
 // dllexport would normally do. We need to export them in order to make the
 // VS2015 dynamic CRT (MD) work.
 #if SANITIZER_WINDOWS
-# define CXX_OPERATOR_ATTRIBUTE
-# ifdef _WIN64
-#  pragma comment(linker, "/export:??2@YAPEAX_K@Z")   // operator new
-#  pragma comment(linker, "/export:??3@YAXPEAX@Z")    // operator delete
-#  pragma comment(linker, "/export:??3@YAXPEAX_K@Z")  // sized operator delete
-#  pragma comment(linker, "/export:??_U@YAPEAX_K@Z")  // operator new[]
-#  pragma comment(linker, "/export:??_V@YAXPEAX@Z")   // operator delete[]
-# else
-#  pragma comment(linker, "/export:??2@YAPAXI@Z")   // operator new
-#  pragma comment(linker, "/export:??3@YAXPAX@Z")   // operator delete
-#  pragma comment(linker, "/export:??3@YAXPAXI@Z")  // sized operator delete
-#  pragma comment(linker, "/export:??_U@YAPAXI@Z")  // operator new[]
-#  pragma comment(linker, "/export:??_V@YAXPAX@Z")  // operator delete[]
-# endif
+#define CXX_OPERATOR_ATTRIBUTE
+#define COMMENT_EXPORT(sym) __pragma(comment(linker, "/export:"##sym))
+#ifdef _WIN64
+COMMENT_EXPORT("??2@YAPEAX_K@Z")                     // operator new
+COMMENT_EXPORT("??2@YAPEAX_KAEBUnothrow_t@std@@@Z")  // operator new nothrow
+COMMENT_EXPORT("??3@YAXPEAX@Z")                      // operator delete
+COMMENT_EXPORT("??3@YAXPEAX_K@Z")                    // sized operator delete
+COMMENT_EXPORT("??_U@YAPEAX_K@Z")                    // operator new[]
+COMMENT_EXPORT("??_V@YAXPEAX@Z")                     // operator delete[]
 #else
-# define CXX_OPERATOR_ATTRIBUTE INTERCEPTOR_ATTRIBUTE
+COMMENT_EXPORT("??2@YAPAXI@Z")                    // operator new
+COMMENT_EXPORT("??2@YAPAXIABUnothrow_t@std@@@Z")  // operator new nothrow
+COMMENT_EXPORT("??3@YAXPAX@Z")                    // operator delete
+COMMENT_EXPORT("??3@YAXPAXI@Z")                   // sized operator delete
+COMMENT_EXPORT("??_U@YAPAXI@Z")                   // operator new[]
+COMMENT_EXPORT("??_V@YAXPAX@Z")                   // operator delete[]
 #endif
+#undef COMMENT_EXPORT
+#else
+#define CXX_OPERATOR_ATTRIBUTE INTERCEPTOR_ATTRIBUTE
+#endif
 
 using namespace __asan;  // NOLINT
 
@@ -63,12 +67,17 @@ struct nothrow_t {};
 enum class align_val_t: size_t {};
 }  // namespace std
 
-#define OPERATOR_NEW_BODY(type) \
+// TODO(alekseys): throw std::bad_alloc instead of dying on OOM.
+#define OPERATOR_NEW_BODY(type, nothrow) \
   GET_STACK_TRACE_MALLOC;\
-  return asan_memalign(0, size, &stack, type);
-#define OPERATOR_NEW_BODY_ALIGN(type) \
+  void *res = asan_memalign(0, size, &stack, type);\
+  if (!nothrow && UNLIKELY(!res)) DieOnFailure::OnOOM();\
+  return res;
+#define OPERATOR_NEW_BODY_ALIGN(type, nothrow) \
   GET_STACK_TRACE_MALLOC;\
-  return asan_memalign((uptr)align, size, &stack, type);
+  void *res = asan_memalign((uptr)align, size, &stack, type);\
+  if (!nothrow && UNLIKELY(!res)) DieOnFailure::OnOOM();\
+  return res;
 
 // On OS X it's not enough to just provide our own 'operator new' and
 // 'operator delete' implementations, because they're going to be in the
@@ -79,40 +88,42 @@ enum class align_val_t: size_t {};
 // OS X we need to intercept them using their mangled names.
 #if !SANITIZER_MAC
 CXX_OPERATOR_ATTRIBUTE
-void *operator new(size_t size) { OPERATOR_NEW_BODY(FROM_NEW); }
+void *operator new(size_t size)
+{ OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
-void *operator new[](size_t size) { OPERATOR_NEW_BODY(FROM_NEW_BR); }
+void *operator new[](size_t size)
+{ OPERATOR_NEW_BODY(FROM_NEW_BR, false /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new(size_t size, std::nothrow_t const&)
-{ OPERATOR_NEW_BODY(FROM_NEW); }
+{ OPERATOR_NEW_BODY(FROM_NEW, true /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new[](size_t size, std::nothrow_t const&)
-{ OPERATOR_NEW_BODY(FROM_NEW_BR); }
+{ OPERATOR_NEW_BODY(FROM_NEW_BR, true /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new(size_t size, std::align_val_t align)
-{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW); }
+{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW, false /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new[](size_t size, std::align_val_t align)
-{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR); }
+{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR, false /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new(size_t size, std::align_val_t align, std::nothrow_t const&)
-{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW); }
+{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW, true /*nothrow*/); }
 CXX_OPERATOR_ATTRIBUTE
 void *operator new[](size_t size, std::align_val_t align, std::nothrow_t const&)
-{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR); }
+{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR, true /*nothrow*/); }
 
 #else  // SANITIZER_MAC
 INTERCEPTOR(void *, _Znwm, size_t size) {
-  OPERATOR_NEW_BODY(FROM_NEW);
+  OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/);
 }
 INTERCEPTOR(void *, _Znam, size_t size) {
-  OPERATOR_NEW_BODY(FROM_NEW_BR);
+  OPERATOR_NEW_BODY(FROM_NEW_BR, false /*nothrow*/);
 }
 INTERCEPTOR(void *, _ZnwmRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
-  OPERATOR_NEW_BODY(FROM_NEW);
+  OPERATOR_NEW_BODY(FROM_NEW, true /*nothrow*/);
 }
 INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
-  OPERATOR_NEW_BODY(FROM_NEW_BR);
+  OPERATOR_NEW_BODY(FROM_NEW_BR, true /*nothrow*/);
 }
 #endif
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win_dll_thunk.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -85,6 +85,7 @@ INTERCEPT_LIBRARY_FUNCTION(strstr);
 INTERCEPT_LIBRARY_FUNCTION(strtok);
 INTERCEPT_LIBRARY_FUNCTION(strtol);
 INTERCEPT_LIBRARY_FUNCTION(wcslen);
+INTERCEPT_LIBRARY_FUNCTION(wcsnlen);
 
 #ifdef _WIN64
 INTERCEPT_LIBRARY_FUNCTION(__C_specific_handler);

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -74,7 +74,7 @@ void *Allocate(const StackTrace &stack, uptr size, upt
     size = 1;
   if (size > kMaxAllowedMallocSize) {
     Report("WARNING: LeakSanitizer failed to allocate %zu bytes\n", size);
-    return nullptr;
+    return Allocator::FailureHandler::OnBadRequest();
   }
   void *p = allocator.Allocate(GetAllocatorCache(), size, alignment);
   // Do not rely on the allocator to clear the memory (it's slow).
@@ -99,7 +99,7 @@ void *Reallocate(const StackTrace &stack, void *p, upt
   if (new_size > kMaxAllowedMallocSize) {
     Report("WARNING: LeakSanitizer failed to allocate %zu bytes\n", new_size);
     allocator.Deallocate(GetAllocatorCache(), p);
-    return nullptr;
+    return Allocator::FailureHandler::OnBadRequest();
   }
   p = allocator.Reallocate(GetAllocatorCache(), p, new_size, alignment);
   RegisterAllocation(stack, p, new_size);
@@ -134,6 +134,8 @@ void *lsan_realloc(void *p, uptr size, const StackTrac
 }
 
 void *lsan_calloc(uptr nmemb, uptr size, const StackTrace &stack) {
+  if (CheckForCallocOverflow(size, nmemb))
+    return Allocator::FailureHandler::OnBadRequest();
   size *= nmemb;
   return Allocate(stack, size, 1, true);
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -70,7 +70,6 @@ INTERCEPTOR(void*, calloc, uptr nmemb, uptr size) {
     CHECK(allocated < kCallocPoolSize);
     return mem;
   }
-  if (CallocShouldReturnNullDueToOverflow(size, nmemb)) return nullptr;
   ENSURE_LSAN_INITED;
   GET_STACK_TRACE_MALLOC;
   return lsan_calloc(nmemb, size, stack);
@@ -199,34 +198,70 @@ INTERCEPTOR(int, mprobe, void *ptr) {
 }
 #endif // SANITIZER_INTERCEPT_MCHECK_MPROBE
 
-#define OPERATOR_NEW_BODY                              \
-  ENSURE_LSAN_INITED;                                  \
-  GET_STACK_TRACE_MALLOC;                              \
-  return Allocate(stack, size, 1, kAlwaysClearMemory);
 
-INTERCEPTOR_ATTRIBUTE
-void *operator new(size_t size) { OPERATOR_NEW_BODY; }
-INTERCEPTOR_ATTRIBUTE
-void *operator new[](size_t size) { OPERATOR_NEW_BODY; }
-INTERCEPTOR_ATTRIBUTE
-void *operator new(size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }
-INTERCEPTOR_ATTRIBUTE
-void *operator new[](size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }
+// TODO(alekseys): throw std::bad_alloc instead of dying on OOM.
+#define OPERATOR_NEW_BODY(nothrow)                         \
+  ENSURE_LSAN_INITED;                                      \
+  GET_STACK_TRACE_MALLOC;                                  \
+  void *res = Allocate(stack, size, 1, kAlwaysClearMemory);\
+  if (!nothrow && UNLIKELY(!res)) DieOnFailure::OnOOM();\
+  return res;
 
 #define OPERATOR_DELETE_BODY \
   ENSURE_LSAN_INITED;        \
   Deallocate(ptr);
 
+// On OS X it's not enough to just provide our own 'operator new' and
+// 'operator delete' implementations, because they're going to be in the runtime
+// dylib, and the main executable will depend on both the runtime dylib and
+// libstdc++, each of has its implementation of new and delete.
+// To make sure that C++ allocation/deallocation operators are overridden on
+// OS X we need to intercept them using their mangled names.
+#if !SANITIZER_MAC
+
 INTERCEPTOR_ATTRIBUTE
+void *operator new(size_t size) { OPERATOR_NEW_BODY(false /*nothrow*/); }
+INTERCEPTOR_ATTRIBUTE
+void *operator new[](size_t size) { OPERATOR_NEW_BODY(false /*nothrow*/); }
+INTERCEPTOR_ATTRIBUTE
+void *operator new(size_t size, std::nothrow_t const&)
+{ OPERATOR_NEW_BODY(true /*nothrow*/); }
+INTERCEPTOR_ATTRIBUTE
+void *operator new[](size_t size, std::nothrow_t const&)
+{ OPERATOR_NEW_BODY(true /*nothrow*/); }
+
+INTERCEPTOR_ATTRIBUTE
 void operator delete(void *ptr) NOEXCEPT { OPERATOR_DELETE_BODY; }
 INTERCEPTOR_ATTRIBUTE
 void operator delete[](void *ptr) NOEXCEPT { OPERATOR_DELETE_BODY; }
 INTERCEPTOR_ATTRIBUTE
 void operator delete(void *ptr, std::nothrow_t const&) { OPERATOR_DELETE_BODY; }
 INTERCEPTOR_ATTRIBUTE
-void operator delete[](void *ptr, std::nothrow_t const &) {
-  OPERATOR_DELETE_BODY;
-}
+void operator delete[](void *ptr, std::nothrow_t const &)
+{ OPERATOR_DELETE_BODY; }
+
+#else  // SANITIZER_MAC
+
+INTERCEPTOR(void *, _Znwm, size_t size)
+{ OPERATOR_NEW_BODY(false /*nothrow*/); }
+INTERCEPTOR(void *, _Znam, size_t size)
+{ OPERATOR_NEW_BODY(false /*nothrow*/); }
+INTERCEPTOR(void *, _ZnwmRKSt9nothrow_t, size_t size, std::nothrow_t const&)
+{ OPERATOR_NEW_BODY(true /*nothrow*/); }
+INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&)
+{ OPERATOR_NEW_BODY(true /*nothrow*/); }
+
+INTERCEPTOR(void, _ZdlPv, void *ptr)
+{ OPERATOR_DELETE_BODY; }
+INTERCEPTOR(void, _ZdaPv, void *ptr)
+{ OPERATOR_DELETE_BODY; }
+INTERCEPTOR(void, _ZdlPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
+{ OPERATOR_DELETE_BODY; }
+INTERCEPTOR(void, _ZdaPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
+{ OPERATOR_DELETE_BODY; }
+
+#endif  // !SANITIZER_MAC
+
 
 ///// Thread initialization and finalization. /////
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -195,7 +195,7 @@ void MsanDeallocate(StackTrace *stack, void *p) {
 }
 
 void *MsanCalloc(StackTrace *stack, uptr nmemb, uptr size) {
-  if (CallocShouldReturnNullDueToOverflow(size, nmemb))
+  if (CheckForCallocOverflow(size, nmemb))
     return Allocator::FailureHandler::OnBadRequest();
   return MsanReallocate(stack, nullptr, nmemb * size, sizeof(u64), true);
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -538,49 +538,6 @@ INTERCEPTOR(int, mbrtowc, wchar_t *dest, const char *s
   return res;
 }
 
-INTERCEPTOR(SIZE_T, wcslen, const wchar_t *s) {
-  ENSURE_MSAN_INITED();
-  SIZE_T res = REAL(wcslen)(s);
-  CHECK_UNPOISONED(s, sizeof(wchar_t) * (res + 1));
-  return res;
-}
-
-INTERCEPTOR(SIZE_T, wcsnlen, const wchar_t *s, SIZE_T n) {
-  ENSURE_MSAN_INITED();
-  SIZE_T res = REAL(wcsnlen)(s, n);
-  CHECK_UNPOISONED(s, sizeof(wchar_t) * Min(res + 1, n));
-  return res;
-}
-
-// wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
-INTERCEPTOR(wchar_t *, wcschr, void *s, wchar_t wc, void *ps) {
-  ENSURE_MSAN_INITED();
-  wchar_t *res = REAL(wcschr)(s, wc, ps);
-  return res;
-}
-
-// wchar_t *wcscpy(wchar_t *dest, const wchar_t *src);
-INTERCEPTOR(wchar_t *, wcscpy, wchar_t *dest, const wchar_t *src) {
-  ENSURE_MSAN_INITED();
-  GET_STORE_STACK_TRACE;
-  wchar_t *res = REAL(wcscpy)(dest, src);
-  CopyShadowAndOrigin(dest, src, sizeof(wchar_t) * (REAL(wcslen)(src) + 1),
-                      &stack);
-  return res;
-}
-
-INTERCEPTOR(wchar_t *, wcsncpy, wchar_t *dest, const wchar_t *src,
-            SIZE_T n) {  // NOLINT
-  ENSURE_MSAN_INITED();
-  GET_STORE_STACK_TRACE;
-  SIZE_T copy_size = REAL(wcsnlen)(src, n);
-  if (copy_size < n) copy_size++;           // trailing \0
-  wchar_t *res = REAL(wcsncpy)(dest, src, n);  // NOLINT
-  CopyShadowAndOrigin(dest, src, copy_size * sizeof(wchar_t), &stack);
-  __msan_unpoison(dest + copy_size, (n - copy_size) * sizeof(wchar_t));
-  return res;
-}
-
 // wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, SIZE_T n);
 INTERCEPTOR(wchar_t *, wmemcpy, wchar_t *dest, const wchar_t *src, SIZE_T n) {
   ENSURE_MSAN_INITED();
@@ -1344,11 +1301,11 @@ int OnExit() {
     return __msan_memcpy(to, from, size);                   \
   }
 
-#define COMMON_INTERCEPTOR_COPY_STRING(ctx, to, from, size)                    \
-  do {                                                                         \
-    GET_STORE_STACK_TRACE;                                                     \
-    CopyShadowAndOrigin(to, from, size, &stack);                               \
-    __msan_unpoison(to + size, 1);                                             \
+#define COMMON_INTERCEPTOR_COPY_STRING(ctx, to, from, size) \
+  do {                                                      \
+    GET_STORE_STACK_TRACE;                                  \
+    CopyShadowAndOrigin(to, from, size, &stack);            \
+    __msan_unpoison(to + size, 1);                          \
   } while (false)
 
 #include "sanitizer_common/sanitizer_platform_interceptors.h"
@@ -1421,6 +1378,35 @@ INTERCEPTOR(int, dl_iterate_phdr, dl_iterate_phdr_cb c
   cbdata.callback = callback;
   cbdata.data = data;
   int res = REAL(dl_iterate_phdr)(msan_dl_iterate_phdr_cb, (void *)&cbdata);
+  return res;
+}
+
+// wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
+INTERCEPTOR(wchar_t *, wcschr, void *s, wchar_t wc, void *ps) {
+  ENSURE_MSAN_INITED();
+  wchar_t *res = REAL(wcschr)(s, wc, ps);
+  return res;
+}
+
+// wchar_t *wcscpy(wchar_t *dest, const wchar_t *src);
+INTERCEPTOR(wchar_t *, wcscpy, wchar_t *dest, const wchar_t *src) {
+  ENSURE_MSAN_INITED();
+  GET_STORE_STACK_TRACE;
+  wchar_t *res = REAL(wcscpy)(dest, src);
+  CopyShadowAndOrigin(dest, src, sizeof(wchar_t) * (REAL(wcslen)(src) + 1),
+                      &stack);
+  return res;
+}
+
+INTERCEPTOR(wchar_t *, wcsncpy, wchar_t *dest, const wchar_t *src,
+            SIZE_T n) {  // NOLINT
+  ENSURE_MSAN_INITED();
+  GET_STORE_STACK_TRACE;
+  SIZE_T copy_size = REAL(wcsnlen)(src, n);
+  if (copy_size < n) copy_size++;           // trailing \0
+  wchar_t *res = REAL(wcsncpy)(dest, src, n);  // NOLINT
+  CopyShadowAndOrigin(dest, src, copy_size * sizeof(wchar_t), &stack);
+  __msan_unpoison(dest + copy_size, (n - copy_size) * sizeof(wchar_t));
   return res;
 }
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_new_delete.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_new_delete.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_new_delete.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -14,6 +14,7 @@
 
 #include "msan.h"
 #include "interception/interception.h"
+#include "sanitizer_common/sanitizer_allocator.h"
 
 #if MSAN_REPLACE_OPERATORS_NEW_AND_DELETE
 
@@ -27,18 +28,25 @@ namespace std {
 }  // namespace std
 
 
-#define OPERATOR_NEW_BODY \
+// TODO(alekseys): throw std::bad_alloc instead of dying on OOM.
+#define OPERATOR_NEW_BODY(nothrow) \
   GET_MALLOC_STACK_TRACE; \
-  return MsanReallocate(&stack, 0, size, sizeof(u64), false)
+  void *res = MsanReallocate(&stack, 0, size, sizeof(u64), false);\
+  if (!nothrow && UNLIKELY(!res)) DieOnFailure::OnOOM();\
+  return res
 
 INTERCEPTOR_ATTRIBUTE
-void *operator new(size_t size) { OPERATOR_NEW_BODY; }
+void *operator new(size_t size) { OPERATOR_NEW_BODY(false /*nothrow*/); }
 INTERCEPTOR_ATTRIBUTE
-void *operator new[](size_t size) { OPERATOR_NEW_BODY; }
+void *operator new[](size_t size) { OPERATOR_NEW_BODY(false /*nothrow*/); }
 INTERCEPTOR_ATTRIBUTE
-void *operator new(size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }
+void *operator new(size_t size, std::nothrow_t const&) {
+  OPERATOR_NEW_BODY(true /*nothrow*/);
+}
 INTERCEPTOR_ATTRIBUTE
-void *operator new[](size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; }
+void *operator new[](size_t size, std::nothrow_t const&) {
+  OPERATOR_NEW_BODY(true /*nothrow*/);
+}
 
 #define OPERATOR_DELETE_BODY \
   GET_MALLOC_STACK_TRACE; \

Modified: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfiling.c
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfiling.c	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfiling.c	Sun Jul  2 11:41:15 2017	(r320572)
@@ -19,8 +19,6 @@
 
 COMPILER_RT_WEAK uint64_t INSTR_PROF_RAW_VERSION_VAR = INSTR_PROF_RAW_VERSION;
 
-COMPILER_RT_WEAK char INSTR_PROF_PROFILE_NAME_VAR[1] = {0};
-
 COMPILER_RT_VISIBILITY uint64_t __llvm_profile_get_magic(void) {
   return sizeof(void *) == sizeof(uint64_t) ? (INSTR_PROF_RAW_MAGIC_64)
                                             : (INSTR_PROF_RAW_MAGIC_32);

Modified: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingBuffer.c
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingBuffer.c	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingBuffer.c	Sun Jul  2 11:41:15 2017	(r320572)
@@ -45,15 +45,24 @@ uint64_t __llvm_profile_get_size_for_buffer_internal(
          (CountersEnd - CountersBegin) * sizeof(uint64_t) + NamesSize + Padding;
 }
 
+COMPILER_RT_VISIBILITY
+void initBufferWriter(ProfDataWriter *BufferWriter, char *Buffer) {
+  BufferWriter->Write = lprofBufferWriter;
+  BufferWriter->WriterCtx = Buffer;
+}
+
 COMPILER_RT_VISIBILITY int __llvm_profile_write_buffer(char *Buffer) {
-  return lprofWriteData(lprofBufferWriter, Buffer, 0);
+  ProfDataWriter BufferWriter;
+  initBufferWriter(&BufferWriter, Buffer);
+  return lprofWriteData(&BufferWriter, 0, 0);
 }
 
 COMPILER_RT_VISIBILITY int __llvm_profile_write_buffer_internal(
     char *Buffer, const __llvm_profile_data *DataBegin,
     const __llvm_profile_data *DataEnd, const uint64_t *CountersBegin,
     const uint64_t *CountersEnd, const char *NamesBegin, const char *NamesEnd) {
-  return lprofWriteDataImpl(lprofBufferWriter, Buffer, DataBegin, DataEnd,
-                            CountersBegin, CountersEnd, 0, NamesBegin,
-                            NamesEnd);
+  ProfDataWriter BufferWriter;
+  initBufferWriter(&BufferWriter, Buffer);
+  return lprofWriteDataImpl(&BufferWriter, DataBegin, DataEnd, CountersBegin,
+                            CountersEnd, 0, NamesBegin, NamesEnd, 0);
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingFile.c	Sun Jul  2 11:41:15 2017	(r320572)
@@ -91,24 +91,39 @@ static const char *getCurFilename(char *FilenameBuf);
 static unsigned doMerging() { return lprofCurFilename.MergePoolSize; }
 
 /* Return 1 if there is an error, otherwise return  0.  */
-static uint32_t fileWriter(ProfDataIOVec *IOVecs, uint32_t NumIOVecs,
-                           void **WriterCtx) {
+static uint32_t fileWriter(ProfDataWriter *This, ProfDataIOVec *IOVecs,
+                           uint32_t NumIOVecs) {
   uint32_t I;
-  FILE *File = (FILE *)*WriterCtx;
+  FILE *File = (FILE *)This->WriterCtx;
   for (I = 0; I < NumIOVecs; I++) {
-    if (fwrite(IOVecs[I].Data, IOVecs[I].ElmSize, IOVecs[I].NumElm, File) !=
-        IOVecs[I].NumElm)
-      return 1;
+    if (IOVecs[I].Data) {
+      if (fwrite(IOVecs[I].Data, IOVecs[I].ElmSize, IOVecs[I].NumElm, File) !=
+          IOVecs[I].NumElm)
+        return 1;
+    } else {
+      if (fseek(File, IOVecs[I].ElmSize * IOVecs[I].NumElm, SEEK_CUR) == -1)
+        return 1;
+    }
   }
   return 0;
 }
 
+static void initFileWriter(ProfDataWriter *This, FILE *File) {
+  This->Write = fileWriter;
+  This->WriterCtx = File;
+}
+
 COMPILER_RT_VISIBILITY ProfBufferIO *
 lprofCreateBufferIOInternal(void *File, uint32_t BufferSz) {
   FreeHook = &free;
   DynamicBufferIOBuffer = (uint8_t *)calloc(BufferSz, 1);
   VPBufferSize = BufferSz;
-  return lprofCreateBufferIO(fileWriter, File);
+  ProfDataWriter *fileWriter =
+      (ProfDataWriter *)calloc(sizeof(ProfDataWriter), 1);
+  initFileWriter(fileWriter, File);
+  ProfBufferIO *IO = lprofCreateBufferIO(fileWriter);
+  IO->OwnFileWriter = 1;
+  return IO;
 }
 
 static void setupIOBuffer() {
@@ -122,9 +137,10 @@ static void setupIOBuffer() {
 
 /* Read profile data in \c ProfileFile and merge with in-memory
    profile counters. Returns -1 if there is fatal error, otheriwse
-   0 is returned.
+   0 is returned. Returning 0 does not mean merge is actually
+   performed. If merge is actually done, *MergeDone is set to 1.
 */
-static int doProfileMerging(FILE *ProfileFile) {
+static int doProfileMerging(FILE *ProfileFile, int *MergeDone) {
   uint64_t ProfileFileSize;
   char *ProfileBuffer;
 
@@ -169,6 +185,8 @@ static int doProfileMerging(FILE *ProfileFile) {
   __llvm_profile_merge_from_buffer(ProfileBuffer, ProfileFileSize);
   (void)munmap(ProfileBuffer, ProfileFileSize);
 
+  *MergeDone = 1;
+
   return 0;
 }
 
@@ -190,7 +208,7 @@ static void createProfileDir(const char *Filename) {
  * dumper. With profile merging enabled, each executable as well as any of
  * its instrumented shared libraries dump profile data into their own data file.
 */
-static FILE *openFileForMerging(const char *ProfileFileName) {
+static FILE *openFileForMerging(const char *ProfileFileName, int *MergeDone) {
   FILE *ProfileFile;
   int rc;
 
@@ -199,15 +217,14 @@ static FILE *openFileForMerging(const char *ProfileFil
   if (!ProfileFile)
     return NULL;
 
-  rc = doProfileMerging(ProfileFile);
-  if (rc || COMPILER_RT_FTRUNCATE(ProfileFile, 0L) ||
+  rc = doProfileMerging(ProfileFile, MergeDone);
+  if (rc || (!*MergeDone && COMPILER_RT_FTRUNCATE(ProfileFile, 0L)) ||
       fseek(ProfileFile, 0L, SEEK_SET) == -1) {
     PROF_ERR("Profile Merging of file %s failed: %s\n", ProfileFileName,
              strerror(errno));
     fclose(ProfileFile);
     return NULL;
   }
-  fseek(ProfileFile, 0L, SEEK_SET);
   return ProfileFile;
 }
 
@@ -216,17 +233,20 @@ static int writeFile(const char *OutputName) {
   int RetVal;
   FILE *OutputFile;
 
+  int MergeDone = 0;
   if (!doMerging())
     OutputFile = fopen(OutputName, "ab");
   else
-    OutputFile = openFileForMerging(OutputName);
+    OutputFile = openFileForMerging(OutputName, &MergeDone);
 
   if (!OutputFile)
     return -1;
 
   FreeHook = &free;
   setupIOBuffer();
-  RetVal = lprofWriteData(fileWriter, OutputFile, lprofGetVPDataReader());
+  ProfDataWriter fileWriter;
+  initFileWriter(&fileWriter, OutputFile);
+  RetVal = lprofWriteData(&fileWriter, lprofGetVPDataReader(), MergeDone);
 
   fclose(OutputFile);
   return RetVal;

Modified: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingInternal.h	Sun Jul  2 11:41:15 2017	(r320572)
@@ -48,17 +48,21 @@ typedef struct ProfDataIOVec {
   size_t NumElm;
 } ProfDataIOVec;
 
-typedef uint32_t (*WriterCallback)(ProfDataIOVec *, uint32_t NumIOVecs,
-                                   void **WriterCtx);
+struct ProfDataWriter;
+typedef uint32_t (*WriterCallback)(struct ProfDataWriter *This, ProfDataIOVec *,
+                                   uint32_t NumIOVecs);
 
+typedef struct ProfDataWriter {
+  WriterCallback Write;
+  void *WriterCtx;
+} ProfDataWriter;
+
 /*!
  * The data structure for buffered IO of profile data.
  */
 typedef struct ProfBufferIO {
-  /* File handle.  */
-  void *File;
-  /* Low level IO callback. */
-  WriterCallback FileWriter;
+  ProfDataWriter *FileWriter;
+  uint32_t OwnFileWriter;
   /* The start of the buffer. */
   uint8_t *BufferStart;
   /* Total size of the buffer. */
@@ -73,7 +77,7 @@ ProfBufferIO *lprofCreateBufferIOInternal(void *File, 
 /*!
  * This is the interface to create a handle for buffered IO.
  */
-ProfBufferIO *lprofCreateBufferIO(WriterCallback FileWriter, void *File);
+ProfBufferIO *lprofCreateBufferIO(ProfDataWriter *FileWriter);
 
 /*!
  * The interface to destroy the bufferIO handle and reclaim
@@ -96,8 +100,9 @@ int lprofBufferIOFlush(ProfBufferIO *BufferIO);
 /* The low level interface to write data into a buffer. It is used as the
  * callback by other high level writer methods such as buffered IO writer
  * and profile data writer.  */
-uint32_t lprofBufferWriter(ProfDataIOVec *IOVecs, uint32_t NumIOVecs,
-                           void **WriterCtx);
+uint32_t lprofBufferWriter(ProfDataWriter *This, ProfDataIOVec *IOVecs,
+                           uint32_t NumIOVecs);
+void initBufferWriter(ProfDataWriter *BufferWriter, char *Buffer);
 
 struct ValueProfData;
 struct ValueProfRecord;
@@ -133,15 +138,17 @@ typedef struct VPDataReaderType {
                                         uint32_t N);
 } VPDataReaderType;
 
-int lprofWriteData(WriterCallback Writer, void *WriterCtx,
-                   VPDataReaderType *VPDataReader);
-int lprofWriteDataImpl(WriterCallback Writer, void *WriterCtx,
+/* Write profile data to destinitation. If SkipNameDataWrite is set to 1,
+   the name data is already in destintation, we just skip over it. */
+int lprofWriteData(ProfDataWriter *Writer, VPDataReaderType *VPDataReader,
+                   int SkipNameDataWrite);
+int lprofWriteDataImpl(ProfDataWriter *Writer,
                        const __llvm_profile_data *DataBegin,
                        const __llvm_profile_data *DataEnd,
                        const uint64_t *CountersBegin,
                        const uint64_t *CountersEnd,
                        VPDataReaderType *VPDataReader, const char *NamesBegin,
-                       const char *NamesEnd);
+                       const char *NamesEnd, int SkipNameDataWrite);
 
 /* Merge value profile data pointed to by SrcValueProfData into
  * in-memory profile counters pointed by to DstData.  */

Copied: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c (from r320555, vendor/compiler-rt/dist/lib/profile/InstrProfilingNameVar.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingNameVar.c	Sun Jul  2 11:41:15 2017	(r320572, copy of r320555, vendor/compiler-rt/dist/lib/profile/InstrProfilingNameVar.c)
@@ -0,0 +1,18 @@
+//===- InstrProfilingNameVar.c - profile name variable setup --------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "InstrProfiling.h"
+
+/* char __llvm_profile_filename[1]
+ *
+ * The runtime should only provide its own definition of this symbol when the
+ * user has not specified one. Set this up by moving the runtime's copy of this
+ * symbol to an object file within the archive.
+ */
+COMPILER_RT_WEAK char INSTR_PROF_PROFILE_NAME_VAR[1] = {0};

Modified: projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingWriter.c
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingWriter.c	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/profile/InstrProfilingWriter.c	Sun Jul  2 11:41:15 2017	(r320572)
@@ -31,41 +31,44 @@ COMPILER_RT_VISIBILITY uint32_t VPBufferSize = 0;
 /* The buffer writer is reponsponsible in keeping writer state
  * across the call.
  */
-COMPILER_RT_VISIBILITY uint32_t lprofBufferWriter(ProfDataIOVec *IOVecs,
-                                                  uint32_t NumIOVecs,
-                                                  void **WriterCtx) {
+COMPILER_RT_VISIBILITY uint32_t lprofBufferWriter(ProfDataWriter *This,
+                                                  ProfDataIOVec *IOVecs,
+                                                  uint32_t NumIOVecs) {
   uint32_t I;
-  char **Buffer = (char **)WriterCtx;
+  char **Buffer = (char **)&This->WriterCtx;
   for (I = 0; I < NumIOVecs; I++) {
     size_t Length = IOVecs[I].ElmSize * IOVecs[I].NumElm;
-    memcpy(*Buffer, IOVecs[I].Data, Length);
+    if (IOVecs[I].Data)
+      memcpy(*Buffer, IOVecs[I].Data, Length);
     *Buffer += Length;
   }
   return 0;
 }
 
-static void llvmInitBufferIO(ProfBufferIO *BufferIO, WriterCallback FileWriter,
-                             void *File, uint8_t *Buffer, uint32_t BufferSz) {
-  BufferIO->File = File;
+static void llvmInitBufferIO(ProfBufferIO *BufferIO, ProfDataWriter *FileWriter,
+                             uint8_t *Buffer, uint32_t BufferSz) {
   BufferIO->FileWriter = FileWriter;
+  BufferIO->OwnFileWriter = 0;
   BufferIO->BufferStart = Buffer;
   BufferIO->BufferSz = BufferSz;
   BufferIO->CurOffset = 0;
 }
 
 COMPILER_RT_VISIBILITY ProfBufferIO *
-lprofCreateBufferIO(WriterCallback FileWriter, void *File) {
+lprofCreateBufferIO(ProfDataWriter *FileWriter) {
   uint8_t *Buffer = DynamicBufferIOBuffer;
   uint32_t BufferSize = VPBufferSize;
   if (!Buffer) {
     Buffer = &BufferIOBuffer[0];
     BufferSize = sizeof(BufferIOBuffer);
   }
-  llvmInitBufferIO(&TheBufferIO, FileWriter, File, Buffer, BufferSize);
+  llvmInitBufferIO(&TheBufferIO, FileWriter, Buffer, BufferSize);
   return &TheBufferIO;
 }
 
 COMPILER_RT_VISIBILITY void lprofDeleteBufferIO(ProfBufferIO *BufferIO) {
+  if (BufferIO->OwnFileWriter)
+    FreeHook(BufferIO->FileWriter);
   if (DynamicBufferIOBuffer) {
     FreeHook(DynamicBufferIOBuffer);
     DynamicBufferIOBuffer = 0;
@@ -83,13 +86,16 @@ lprofBufferIOWrite(ProfBufferIO *BufferIO, const uint8
   /* Special case, bypass the buffer completely. */
   ProfDataIOVec IO[] = {{Data, sizeof(uint8_t), Size}};
   if (Size > BufferIO->BufferSz) {
-    if (BufferIO->FileWriter(IO, 1, &BufferIO->File))
+    if (BufferIO->FileWriter->Write(BufferIO->FileWriter, IO, 1))
       return -1;
   } else {
     /* Write the data to buffer */
     uint8_t *Buffer = BufferIO->BufferStart + BufferIO->CurOffset;
-    lprofBufferWriter(IO, 1, (void **)&Buffer);
-    BufferIO->CurOffset = Buffer - BufferIO->BufferStart;
+    ProfDataWriter BufferWriter;
+    initBufferWriter(&BufferWriter, (char *)Buffer);
+    lprofBufferWriter(&BufferWriter, IO, 1);
+    BufferIO->CurOffset =
+        (uint8_t *)BufferWriter.WriterCtx - BufferIO->BufferStart;
   }
   return 0;
 }
@@ -98,7 +104,7 @@ COMPILER_RT_VISIBILITY int lprofBufferIOFlush(ProfBuff
   if (BufferIO->CurOffset) {
     ProfDataIOVec IO[] = {
         {BufferIO->BufferStart, sizeof(uint8_t), BufferIO->CurOffset}};
-    if (BufferIO->FileWriter(IO, 1, &BufferIO->File))
+    if (BufferIO->FileWriter->Write(BufferIO->FileWriter, IO, 1))
       return -1;
     BufferIO->CurOffset = 0;
   }
@@ -201,7 +207,7 @@ static int writeOneValueProfData(ProfBufferIO *BufferI
   return 0;
 }
 
-static int writeValueProfData(WriterCallback Writer, void *WriterCtx,
+static int writeValueProfData(ProfDataWriter *Writer,
                               VPDataReaderType *VPDataReader,
                               const __llvm_profile_data *DataBegin,
                               const __llvm_profile_data *DataEnd) {
@@ -211,7 +217,7 @@ static int writeValueProfData(WriterCallback Writer, v
   if (!VPDataReader)
     return 0;
 
-  BufferIO = lprofCreateBufferIO(Writer, WriterCtx);
+  BufferIO = lprofCreateBufferIO(Writer);
 
   for (DI = DataBegin; DI < DataEnd; DI++) {
     if (writeOneValueProfData(BufferIO, VPDataReader, DI))
@@ -225,9 +231,9 @@ static int writeValueProfData(WriterCallback Writer, v
   return 0;
 }
 
-COMPILER_RT_VISIBILITY int lprofWriteData(WriterCallback Writer,
-                                          void *WriterCtx,
-                                          VPDataReaderType *VPDataReader) {
+COMPILER_RT_VISIBILITY int lprofWriteData(ProfDataWriter *Writer,
+                                          VPDataReaderType *VPDataReader,
+                                          int SkipNameDataWrite) {
   /* Match logic in __llvm_profile_write_buffer(). */
   const __llvm_profile_data *DataBegin = __llvm_profile_begin_data();
   const __llvm_profile_data *DataEnd = __llvm_profile_end_data();
@@ -235,18 +241,17 @@ COMPILER_RT_VISIBILITY int lprofWriteData(WriterCallba
   const uint64_t *CountersEnd = __llvm_profile_end_counters();
   const char *NamesBegin = __llvm_profile_begin_names();
   const char *NamesEnd = __llvm_profile_end_names();
-  return lprofWriteDataImpl(Writer, WriterCtx, DataBegin, DataEnd,
-                            CountersBegin, CountersEnd, VPDataReader,
-                            NamesBegin, NamesEnd);
+  return lprofWriteDataImpl(Writer, DataBegin, DataEnd, CountersBegin,
+                            CountersEnd, VPDataReader, NamesBegin, NamesEnd,
+                            SkipNameDataWrite);
 }
 
 COMPILER_RT_VISIBILITY int
-lprofWriteDataImpl(WriterCallback Writer, void *WriterCtx,
-                   const __llvm_profile_data *DataBegin,
+lprofWriteDataImpl(ProfDataWriter *Writer, const __llvm_profile_data *DataBegin,
                    const __llvm_profile_data *DataEnd,
                    const uint64_t *CountersBegin, const uint64_t *CountersEnd,
                    VPDataReaderType *VPDataReader, const char *NamesBegin,
-                   const char *NamesEnd) {
+                   const char *NamesEnd, int SkipNameDataWrite) {
 
   /* Calculate size of sections. */
   const uint64_t DataSize = __llvm_profile_get_data_size(DataBegin, DataEnd);
@@ -268,14 +273,14 @@ lprofWriteDataImpl(WriterCallback Writer, void *Writer
 #include "InstrProfData.inc"
 
   /* Write the data. */
-  ProfDataIOVec IOVec[] = {{&Header, sizeof(__llvm_profile_header), 1},
-                           {DataBegin, sizeof(__llvm_profile_data), DataSize},
-                           {CountersBegin, sizeof(uint64_t), CountersSize},
-                           {NamesBegin, sizeof(uint8_t), NamesSize},
-                           {Zeroes, sizeof(uint8_t), Padding}};
-  if (Writer(IOVec, sizeof(IOVec) / sizeof(*IOVec), &WriterCtx))
+  ProfDataIOVec IOVec[] = {
+      {&Header, sizeof(__llvm_profile_header), 1},
+      {DataBegin, sizeof(__llvm_profile_data), DataSize},
+      {CountersBegin, sizeof(uint64_t), CountersSize},
+      {SkipNameDataWrite ? NULL : NamesBegin, sizeof(uint8_t), NamesSize},
+      {Zeroes, sizeof(uint8_t), Padding}};
+  if (Writer->Write(Writer, IOVec, sizeof(IOVec) / sizeof(*IOVec)))
     return -1;
 
-  return writeValueProfData(Writer, WriterCtx, VPDataReader, DataBegin,
-                            DataEnd);
+  return writeValueProfData(Writer, VPDataReader, DataBegin, DataEnd);
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc	Sun Jul  2 11:41:15 2017	(r320572)
@@ -160,7 +160,7 @@ void *InternalRealloc(void *addr, uptr size, InternalA
 }
 
 void *InternalCalloc(uptr count, uptr size, InternalAllocatorCache *cache) {
-  if (CallocShouldReturnNullDueToOverflow(count, size))
+  if (CheckForCallocOverflow(count, size))
     return InternalAllocator::FailureHandler::OnBadRequest();
   void *p = InternalAlloc(count * size, cache);
   if (p) internal_memset(p, 0, count * size);
@@ -202,7 +202,7 @@ void SetLowLevelAllocateCallback(LowLevelAllocateCallb
   low_level_alloc_callback = callback;
 }
 
-bool CallocShouldReturnNullDueToOverflow(uptr size, uptr n) {
+bool CheckForCallocOverflow(uptr size, uptr n) {
   if (!size) return false;
   uptr max = (uptr)-1L;
   return (max / size) < n;
@@ -246,11 +246,11 @@ void *ReturnNullOrDieOnFailure::OnOOM() {
   ReportAllocatorCannotReturnNull();
 }
 
-void *DieOnFailure::OnBadRequest() {
+void NORETURN *DieOnFailure::OnBadRequest() {
   ReportAllocatorCannotReturnNull();
 }
 
-void *DieOnFailure::OnOOM() {
+void NORETURN *DieOnFailure::OnOOM() {
   atomic_store_relaxed(&allocator_out_of_memory, 1);
   ReportAllocatorCannotReturnNull();
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h	Sun Jul  2 11:41:15 2017	(r320572)
@@ -39,8 +39,8 @@ struct ReturnNullOrDieOnFailure {
 };
 // Always dies on the failure.
 struct DieOnFailure {
-  static void *OnBadRequest();
-  static void *OnOOM();
+  static void NORETURN *OnBadRequest();
+  static void NORETURN *OnOOM();
 };
 
 // Returns true if allocator detected OOM condition. Can be used to avoid memory
@@ -56,8 +56,10 @@ struct NoOpMapUnmapCallback {
 // Callback type for iterating over chunks.
 typedef void (*ForEachChunkCallback)(uptr chunk, void *arg);
 
-// Returns true if calloc(size, n) should return 0 due to overflow in size*n.
-bool CallocShouldReturnNullDueToOverflow(uptr size, uptr n);
+// Returns true if calloc(size, n) call overflows on size*n calculation.
+// The caller should "return POLICY::OnBadRequest();" where POLICY is the
+// current allocator failure handling policy.
+bool CheckForCallocOverflow(uptr size, uptr n);
 
 #include "sanitizer_allocator_size_class_map.h"
 #include "sanitizer_allocator_stats.h"

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h	Sun Jul  2 08:52:08 2017	(r320571)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h	Sun Jul  2 11:41:15 2017	(r320572)
@@ -46,8 +46,10 @@ struct SizeClassAllocator64LocalCache {
     CHECK_NE(class_id, 0UL);
     CHECK_LT(class_id, kNumClasses);
     PerClass *c = &per_class_[class_id];
-    if (UNLIKELY(c->count == 0))
-      Refill(c, allocator, class_id);
+    if (UNLIKELY(c->count == 0)) {
+      if (UNLIKELY(!Refill(c, allocator, class_id)))
+        return nullptr;
+    }
     stats_.Add(AllocatorStatAllocated, c->class_size);
     CHECK_GT(c->count, 0);
     CompactPtrT chunk = c->chunks[--c->count];
@@ -101,13 +103,15 @@ struct SizeClassAllocator64LocalCache {
     }
   }
 
-  NOINLINE void Refill(PerClass *c, SizeClassAllocator *allocator,
+  NOINLINE bool Refill(PerClass *c, SizeClassAllocator *allocator,
                        uptr class_id) {
     InitCache();
     uptr num_requested_chunks = c->max_count / 2;
-    allocator->GetFromAllocator(&stats_, class_id, c->chunks,
-                                num_requested_chunks);
+    if (UNLIKELY(!allocator->GetFromAllocator(&stats_, class_id, c->chunks,
+                                              num_requested_chunks)))
+      return false;
     c->count = num_requested_chunks;
+    return true;
   }
 

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

From owner-svn-src-projects@freebsd.org  Sun Jul  2 11:48:11 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id AAF22DA3DEE
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Sun,  2 Jul 2017 11:48:11 +0000 (UTC) (envelope-from dim@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 1E65B647C7;
 Sun,  2 Jul 2017 11:48:11 +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 v62BmArx075324;
 Sun, 2 Jul 2017 11:48:10 GMT (envelope-from dim@FreeBSD.org)
Received: (from dim@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v62Bm8sH075301;
 Sun, 2 Jul 2017 11:48:08 GMT (envelope-from dim@FreeBSD.org)
Message-Id: <201707021148.v62Bm8sH075301@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org
 using -f
From: Dimitry Andric <dim@FreeBSD.org>
Date: Sun, 2 Jul 2017 11:48:08 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320573 - in projects/clang500-import: .
 contrib/atf/atf-sh contrib/ipfilter/lib contrib/ipfilter/tools
 contrib/jemalloc contrib/jemalloc/doc
 contrib/jemalloc/include/jemalloc/internal ...
X-SVN-Group: projects
X-SVN-Commit-Author: dim
X-SVN-Commit-Paths: in projects/clang500-import: . contrib/atf/atf-sh
 contrib/ipfilter/lib contrib/ipfilter/tools contrib/jemalloc
 contrib/jemalloc/doc contrib/jemalloc/include/jemalloc/internal
 contrib/netbsd-tests/usr....
X-SVN-Commit-Revision: 320573
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 02 Jul 2017 11:48:11 -0000

Author: dim
Date: Sun Jul  2 11:48:07 2017
New Revision: 320573
URL: https://svnweb.freebsd.org/changeset/base/320573

Log:
  Merge ^/head r320398 through r320572.

Added:
  projects/clang500-import/contrib/pjdfstest/.gitignore
     - copied unchanged from r320572, head/contrib/pjdfstest/.gitignore
  projects/clang500-import/contrib/pjdfstest/.travis.yml
     - copied unchanged from r320572, head/contrib/pjdfstest/.travis.yml
  projects/clang500-import/contrib/pjdfstest/AUTHORS
     - copied unchanged from r320572, head/contrib/pjdfstest/AUTHORS
  projects/clang500-import/contrib/pjdfstest/COPYING
     - copied unchanged from r320572, head/contrib/pjdfstest/COPYING
  projects/clang500-import/contrib/pjdfstest/ChangeLog
     - copied unchanged from r320572, head/contrib/pjdfstest/ChangeLog
  projects/clang500-import/contrib/pjdfstest/Makefile.am
     - copied unchanged from r320572, head/contrib/pjdfstest/Makefile.am
  projects/clang500-import/contrib/pjdfstest/NEWS
     - copied unchanged from r320572, head/contrib/pjdfstest/NEWS
  projects/clang500-import/contrib/pjdfstest/configure.ac
     - copied unchanged from r320572, head/contrib/pjdfstest/configure.ac
  projects/clang500-import/contrib/pjdfstest/tests/utimensat/
     - copied from r320572, head/contrib/pjdfstest/tests/utimensat/
  projects/clang500-import/contrib/pjdfstest/travis/
     - copied from r320572, head/contrib/pjdfstest/travis/
  projects/clang500-import/sbin/nvmecontrol/util.c
     - copied unchanged from r320572, head/sbin/nvmecontrol/util.c
  projects/clang500-import/share/examples/tests/tests/tap/
     - copied from r320572, head/share/examples/tests/tests/tap/
  projects/clang500-import/sys/dev/iicbus/iic_recover_bus.c
     - copied unchanged from r320572, head/sys/dev/iicbus/iic_recover_bus.c
  projects/clang500-import/sys/dev/iicbus/iic_recover_bus.h
     - copied unchanged from r320572, head/sys/dev/iicbus/iic_recover_bus.h
  projects/clang500-import/sys/sys/bus_dma_internal.h
     - copied unchanged from r320572, head/sys/sys/bus_dma_internal.h
  projects/clang500-import/sys/x86/include/bus_dma.h
     - copied unchanged from r320572, head/sys/x86/include/bus_dma.h
  projects/clang500-import/tests/sys/pjdfstest/config.h
     - copied unchanged from r320572, head/tests/sys/pjdfstest/config.h
  projects/clang500-import/tests/sys/pjdfstest/tests/utimensat/
     - copied from r320572, head/tests/sys/pjdfstest/tests/utimensat/
Deleted:
  projects/clang500-import/contrib/pjdfstest/Makefile
Modified:
  projects/clang500-import/MAINTAINERS   (contents, props changed)
  projects/clang500-import/UPDATING
  projects/clang500-import/contrib/atf/atf-sh/atf-sh.3
  projects/clang500-import/contrib/ipfilter/lib/hostname.c
  projects/clang500-import/contrib/ipfilter/lib/portname.c
  projects/clang500-import/contrib/ipfilter/lib/printstate.c
  projects/clang500-import/contrib/ipfilter/tools/ippool.c
  projects/clang500-import/contrib/jemalloc/FREEBSD-diffs
  projects/clang500-import/contrib/jemalloc/FREEBSD-upgrade
  projects/clang500-import/contrib/jemalloc/doc/jemalloc.3
  projects/clang500-import/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h
  projects/clang500-import/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
  projects/clang500-import/contrib/pjdfstest/README
  projects/clang500-import/contrib/pjdfstest/pjdfstest.c
  projects/clang500-import/contrib/pjdfstest/tests/chflags/00.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/01.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/02.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/03.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/04.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/05.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/06.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/07.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/08.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/09.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/10.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/11.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/12.t
  projects/clang500-import/contrib/pjdfstest/tests/chflags/13.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/00.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/01.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/02.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/03.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/04.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/05.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/06.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/07.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/08.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/09.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/10.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/11.t
  projects/clang500-import/contrib/pjdfstest/tests/chmod/12.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/00.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/01.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/02.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/03.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/04.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/05.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/06.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/07.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/08.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/09.t
  projects/clang500-import/contrib/pjdfstest/tests/chown/10.t
  projects/clang500-import/contrib/pjdfstest/tests/conf
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/00.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/01.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/02.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/03.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/04.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/05.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/06.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/07.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/08.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/09.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/10.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/11.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/12.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/13.t
  projects/clang500-import/contrib/pjdfstest/tests/ftruncate/14.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/00.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/01.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/02.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/03.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/04.t
  projects/clang500-import/contrib/pjdfstest/tests/granular/05.t
  projects/clang500-import/contrib/pjdfstest/tests/link/00.t
  projects/clang500-import/contrib/pjdfstest/tests/link/01.t
  projects/clang500-import/contrib/pjdfstest/tests/link/02.t
  projects/clang500-import/contrib/pjdfstest/tests/link/03.t
  projects/clang500-import/contrib/pjdfstest/tests/link/04.t
  projects/clang500-import/contrib/pjdfstest/tests/link/05.t
  projects/clang500-import/contrib/pjdfstest/tests/link/06.t
  projects/clang500-import/contrib/pjdfstest/tests/link/07.t
  projects/clang500-import/contrib/pjdfstest/tests/link/08.t
  projects/clang500-import/contrib/pjdfstest/tests/link/09.t
  projects/clang500-import/contrib/pjdfstest/tests/link/10.t
  projects/clang500-import/contrib/pjdfstest/tests/link/11.t
  projects/clang500-import/contrib/pjdfstest/tests/link/12.t
  projects/clang500-import/contrib/pjdfstest/tests/link/13.t
  projects/clang500-import/contrib/pjdfstest/tests/link/14.t
  projects/clang500-import/contrib/pjdfstest/tests/link/15.t
  projects/clang500-import/contrib/pjdfstest/tests/link/16.t
  projects/clang500-import/contrib/pjdfstest/tests/link/17.t
  projects/clang500-import/contrib/pjdfstest/tests/misc.sh
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/00.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/01.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/02.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/03.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/04.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/05.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/06.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/07.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/08.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/09.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/10.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/11.t
  projects/clang500-import/contrib/pjdfstest/tests/mkdir/12.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/00.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/01.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/02.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/03.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/04.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/05.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/06.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/07.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/08.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/09.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/10.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/11.t
  projects/clang500-import/contrib/pjdfstest/tests/mkfifo/12.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/00.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/01.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/02.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/03.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/04.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/05.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/06.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/07.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/08.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/09.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/10.t
  projects/clang500-import/contrib/pjdfstest/tests/mknod/11.t
  projects/clang500-import/contrib/pjdfstest/tests/open/00.t
  projects/clang500-import/contrib/pjdfstest/tests/open/01.t
  projects/clang500-import/contrib/pjdfstest/tests/open/02.t
  projects/clang500-import/contrib/pjdfstest/tests/open/03.t
  projects/clang500-import/contrib/pjdfstest/tests/open/04.t
  projects/clang500-import/contrib/pjdfstest/tests/open/05.t
  projects/clang500-import/contrib/pjdfstest/tests/open/06.t
  projects/clang500-import/contrib/pjdfstest/tests/open/07.t
  projects/clang500-import/contrib/pjdfstest/tests/open/08.t
  projects/clang500-import/contrib/pjdfstest/tests/open/09.t
  projects/clang500-import/contrib/pjdfstest/tests/open/10.t
  projects/clang500-import/contrib/pjdfstest/tests/open/11.t
  projects/clang500-import/contrib/pjdfstest/tests/open/12.t
  projects/clang500-import/contrib/pjdfstest/tests/open/13.t
  projects/clang500-import/contrib/pjdfstest/tests/open/14.t
  projects/clang500-import/contrib/pjdfstest/tests/open/15.t
  projects/clang500-import/contrib/pjdfstest/tests/open/16.t
  projects/clang500-import/contrib/pjdfstest/tests/open/17.t
  projects/clang500-import/contrib/pjdfstest/tests/open/18.t
  projects/clang500-import/contrib/pjdfstest/tests/open/19.t
  projects/clang500-import/contrib/pjdfstest/tests/open/20.t
  projects/clang500-import/contrib/pjdfstest/tests/open/21.t
  projects/clang500-import/contrib/pjdfstest/tests/open/22.t
  projects/clang500-import/contrib/pjdfstest/tests/open/23.t
  projects/clang500-import/contrib/pjdfstest/tests/open/24.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/00.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/01.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/02.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/03.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/04.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/05.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/06.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/07.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/08.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/09.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/10.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/11.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/12.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/13.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/14.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/15.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/16.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/17.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/18.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/19.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/20.t
  projects/clang500-import/contrib/pjdfstest/tests/rename/21.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/00.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/01.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/02.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/03.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/04.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/05.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/06.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/07.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/08.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/09.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/10.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/11.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/12.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/13.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/14.t
  projects/clang500-import/contrib/pjdfstest/tests/rmdir/15.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/00.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/01.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/02.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/03.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/04.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/05.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/06.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/07.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/08.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/09.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/10.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/11.t
  projects/clang500-import/contrib/pjdfstest/tests/symlink/12.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/00.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/01.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/02.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/03.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/04.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/05.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/06.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/07.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/08.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/09.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/10.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/11.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/12.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/13.t
  projects/clang500-import/contrib/pjdfstest/tests/truncate/14.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/00.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/01.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/02.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/03.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/04.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/05.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/06.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/07.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/08.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/09.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/10.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/11.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/12.t
  projects/clang500-import/contrib/pjdfstest/tests/unlink/13.t
  projects/clang500-import/etc/mtree/BSD.tests.dist
  projects/clang500-import/lib/libc/arm/gen/_setjmp.S
  projects/clang500-import/lib/libc/arm/gen/setjmp.S
  projects/clang500-import/lib/libc/gen/_pthread_stubs.c
  projects/clang500-import/lib/libc/include/libc_private.h
  projects/clang500-import/lib/libc/rpc/getnetconfig.c
  projects/clang500-import/lib/libc/stdio/fclose.c
  projects/clang500-import/lib/libc/stdio/fflush.c
  projects/clang500-import/lib/libc/stdio/fgetc.c
  projects/clang500-import/lib/libc/stdio/fgetln.c
  projects/clang500-import/lib/libc/stdio/fgets.c
  projects/clang500-import/lib/libc/stdio/fgetwc.c
  projects/clang500-import/lib/libc/stdio/fgetwln.c
  projects/clang500-import/lib/libc/stdio/fgetws.c
  projects/clang500-import/lib/libc/stdio/fputc.c
  projects/clang500-import/lib/libc/stdio/fputs.c
  projects/clang500-import/lib/libc/stdio/fputwc.c
  projects/clang500-import/lib/libc/stdio/fputws.c
  projects/clang500-import/lib/libc/stdio/fread.c
  projects/clang500-import/lib/libc/stdio/freopen.c
  projects/clang500-import/lib/libc/stdio/fscanf.c
  projects/clang500-import/lib/libc/stdio/fseek.c
  projects/clang500-import/lib/libc/stdio/fwrite.c
  projects/clang500-import/lib/libc/stdio/getc.c
  projects/clang500-import/lib/libc/stdio/getchar.c
  projects/clang500-import/lib/libc/stdio/getdelim.c
  projects/clang500-import/lib/libc/stdio/gets.c
  projects/clang500-import/lib/libc/stdio/local.h
  projects/clang500-import/lib/libc/stdio/perror.c
  projects/clang500-import/lib/libc/stdio/putc.c
  projects/clang500-import/lib/libc/stdio/putchar.c
  projects/clang500-import/lib/libc/stdio/puts.c
  projects/clang500-import/lib/libc/stdio/putw.c
  projects/clang500-import/lib/libc/stdio/refill.c
  projects/clang500-import/lib/libc/stdio/scanf.c
  projects/clang500-import/lib/libc/stdio/setvbuf.c
  projects/clang500-import/lib/libc/stdio/stdio.c
  projects/clang500-import/lib/libc/stdio/ungetc.c
  projects/clang500-import/lib/libc/stdio/ungetwc.c
  projects/clang500-import/lib/libc/stdio/vfprintf.c
  projects/clang500-import/lib/libc/stdio/vfscanf.c
  projects/clang500-import/lib/libc/stdio/vfwprintf.c
  projects/clang500-import/lib/libc/stdio/vfwscanf.c
  projects/clang500-import/lib/libc/stdio/vscanf.c
  projects/clang500-import/lib/libmd/Makefile
  projects/clang500-import/lib/libprocstat/libprocstat.3
  projects/clang500-import/lib/libprocstat/libprocstat.c
  projects/clang500-import/lib/libstand/bzipfs.c
  projects/clang500-import/lib/libstand/gzipfs.c
  projects/clang500-import/lib/libstand/lseek.c
  projects/clang500-import/lib/libxo/tests/functional_test.sh
  projects/clang500-import/libexec/atf/atf-sh/Makefile
  projects/clang500-import/libexec/rshd/rshd.c
  projects/clang500-import/release/arm64/RPI3.conf
  projects/clang500-import/sbin/nvmecontrol/Makefile
  projects/clang500-import/sbin/nvmecontrol/identify.c
  projects/clang500-import/sbin/nvmecontrol/logpage.c
  projects/clang500-import/sbin/nvmecontrol/nvmecontrol.h
  projects/clang500-import/sbin/nvmecontrol/wdc.c
  projects/clang500-import/share/examples/tests/tests/Makefile
  projects/clang500-import/share/examples/tests/tests/atf/Makefile
  projects/clang500-import/share/examples/tests/tests/plain/Makefile
  projects/clang500-import/share/misc/committers-src.dot
  projects/clang500-import/share/mk/bsd.linker.mk
  projects/clang500-import/share/mk/src.opts.mk
  projects/clang500-import/share/zoneinfo/Makefile
  projects/clang500-import/sys/amd64/amd64/pmap.c
  projects/clang500-import/sys/amd64/include/bus_dma.h
  projects/clang500-import/sys/arm/arm/busdma_machdep-v4.c
  projects/clang500-import/sys/arm/arm/busdma_machdep-v6.c
  projects/clang500-import/sys/arm/freescale/imx/imx_gpio.c
  projects/clang500-import/sys/arm/freescale/imx/imx_i2c.c
  projects/clang500-import/sys/arm/include/bus_dma.h
  projects/clang500-import/sys/arm64/arm64/busdma_machdep.c
  projects/clang500-import/sys/arm64/arm64/pmap.c
  projects/clang500-import/sys/arm64/include/atomic.h
  projects/clang500-import/sys/arm64/include/bus_dma.h
  projects/clang500-import/sys/arm64/include/bus_dma_impl.h
  projects/clang500-import/sys/arm64/include/endian.h
  projects/clang500-import/sys/boot/arm/uboot/Makefile
  projects/clang500-import/sys/boot/efi/boot1/Makefile
  projects/clang500-import/sys/boot/efi/libefi/efipart.c
  projects/clang500-import/sys/boot/efi/loader/Makefile
  projects/clang500-import/sys/boot/efi/loader/arch/arm/start.S
  projects/clang500-import/sys/boot/i386/libi386/libi386.h
  projects/clang500-import/sys/boot/i386/loader/chain.c
  projects/clang500-import/sys/cam/cam_periph.c
  projects/clang500-import/sys/cam/ctl/ctl_backend_ramdisk.c
  projects/clang500-import/sys/cam/ctl/scsi_ctl.c
  projects/clang500-import/sys/cam/nvme/nvme_da.c
  projects/clang500-import/sys/cam/scsi/scsi_da.c
  projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/clang500-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/clang500-import/sys/compat/freebsd32/freebsd32.h
  projects/clang500-import/sys/compat/freebsd32/freebsd32_misc.c
  projects/clang500-import/sys/compat/freebsd32/freebsd32_signal.h
  projects/clang500-import/sys/conf/files
  projects/clang500-import/sys/dev/aac/aac.c
  projects/clang500-import/sys/dev/aacraid/aacraid.c
  projects/clang500-import/sys/dev/ath/ah_osdep.c
  projects/clang500-import/sys/dev/bnxt/bnxt.h
  projects/clang500-import/sys/dev/cxgb/cxgb_adapter.h
  projects/clang500-import/sys/dev/cxgb/cxgb_main.c
  projects/clang500-import/sys/dev/cxgb/cxgb_sge.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cq.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_dbg.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_ev.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_hal.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_mem.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_qp.c
  projects/clang500-import/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_resource.c
  projects/clang500-import/sys/dev/cxgbe/iw_cxgbe/cm.c
  projects/clang500-import/sys/dev/cxgbe/tom/t4_cpl_io.c
  projects/clang500-import/sys/dev/cxgbe/tom/t4_listen.c
  projects/clang500-import/sys/dev/hyperv/input/hv_kbdc.c
  projects/clang500-import/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
  projects/clang500-import/sys/dev/iicbus/iiconf.c
  projects/clang500-import/sys/dev/isp/isp_freebsd.c
  projects/clang500-import/sys/dev/mfi/mfi.c
  projects/clang500-import/sys/dev/mfi/mfi_cam.c
  projects/clang500-import/sys/dev/mpt/mpt.h
  projects/clang500-import/sys/dev/nvme/nvme.h
  projects/clang500-import/sys/dev/tsec/if_tsec.c
  projects/clang500-import/sys/dev/xdma/xdma.c
  projects/clang500-import/sys/dev/xen/blkfront/blkfront.c
  projects/clang500-import/sys/dev/xen/netfront/netfront.c
  projects/clang500-import/sys/fs/ext2fs/ext2_inode_cnv.c
  projects/clang500-import/sys/fs/fuse/fuse_io.c
  projects/clang500-import/sys/fs/nfs/nfs_commonsubs.c
  projects/clang500-import/sys/fs/nfsclient/nfs_clport.c
  projects/clang500-import/sys/fs/pseudofs/pseudofs_vnops.c
  projects/clang500-import/sys/geom/virstor/g_virstor.h
  projects/clang500-import/sys/i386/i386/pmap.c
  projects/clang500-import/sys/i386/include/bus_dma.h
  projects/clang500-import/sys/kern/imgact_elf.c
  projects/clang500-import/sys/kern/kern_event.c
  projects/clang500-import/sys/kern/kern_exec.c
  projects/clang500-import/sys/kern/kern_rwlock.c
  projects/clang500-import/sys/kern/subr_blist.c
  projects/clang500-import/sys/kern/sys_process.c
  projects/clang500-import/sys/kern/uipc_mbuf.c
  projects/clang500-import/sys/kern/uipc_shm.c
  projects/clang500-import/sys/kern/uipc_sockbuf.c
  projects/clang500-import/sys/kern/vfs_syscalls.c
  projects/clang500-import/sys/mips/conf/DIR-825C1
  projects/clang500-import/sys/mips/conf/std.AR_MIPS_BASE
  projects/clang500-import/sys/mips/include/bus_dma.h
  projects/clang500-import/sys/mips/mips/busdma_machdep.c
  projects/clang500-import/sys/modules/crypto/Makefile
  projects/clang500-import/sys/net/iflib.h
  projects/clang500-import/sys/netpfil/ipfw/nat64/nat64_translate.c
  projects/clang500-import/sys/netpfil/ipfw/nptv6/nptv6.c
  projects/clang500-import/sys/netpfil/ipfw/pmod/tcpmod.c
  projects/clang500-import/sys/powerpc/booke/pmap.c
  projects/clang500-import/sys/powerpc/include/bus_dma.h
  projects/clang500-import/sys/powerpc/powerpc/busdma_machdep.c
  projects/clang500-import/sys/riscv/include/bus_dma.h
  projects/clang500-import/sys/riscv/riscv/busdma_machdep.c
  projects/clang500-import/sys/sparc64/include/bus_dma.h
  projects/clang500-import/sys/sys/bus_dma.h
  projects/clang500-import/sys/sys/param.h
  projects/clang500-import/sys/sys/ptrace.h
  projects/clang500-import/sys/sys/refcount.h
  projects/clang500-import/sys/sys/signal.h
  projects/clang500-import/sys/ufs/ffs/ffs_alloc.c
  projects/clang500-import/sys/ufs/ffs/ffs_extern.h
  projects/clang500-import/sys/ufs/ffs/ffs_snapshot.c
  projects/clang500-import/sys/ufs/ffs/ffs_vfsops.c
  projects/clang500-import/sys/ufs/ufs/ufs_gjournal.c
  projects/clang500-import/sys/vm/vm_map.c
  projects/clang500-import/sys/vm/vm_map.h
  projects/clang500-import/sys/vm/vm_mmap.c
  projects/clang500-import/sys/x86/include/busdma_impl.h
  projects/clang500-import/sys/x86/iommu/busdma_dmar.c
  projects/clang500-import/sys/x86/x86/busdma_bounce.c
  projects/clang500-import/sys/x86/x86/busdma_machdep.c
  projects/clang500-import/tests/sys/pjdfstest/pjdfstest/Makefile
  projects/clang500-import/tests/sys/pjdfstest/tests/Makefile
  projects/clang500-import/tests/sys/vfs/Makefile
  projects/clang500-import/tests/sys/vfs/trailing_slash.sh
  projects/clang500-import/usr.bin/calendar/calendars/calendar.history
  projects/clang500-import/usr.bin/gcore/elf32core.c
  projects/clang500-import/usr.bin/gcore/elfcore.c
  projects/clang500-import/usr.sbin/bsdinstall/scripts/hardening
  projects/clang500-import/usr.sbin/diskinfo/diskinfo.8
  projects/clang500-import/usr.sbin/diskinfo/diskinfo.c
  projects/clang500-import/usr.sbin/sesutil/Makefile
  projects/clang500-import/usr.sbin/sesutil/eltsub.c
  projects/clang500-import/usr.sbin/sesutil/sesutil.8
  projects/clang500-import/usr.sbin/sesutil/sesutil.c
  projects/clang500-import/usr.sbin/watchdogd/watchdogd.c
Directory Properties:
  projects/clang500-import/   (props changed)
  projects/clang500-import/contrib/atf/   (props changed)
  projects/clang500-import/contrib/ipfilter/   (props changed)
  projects/clang500-import/contrib/netbsd-tests/   (props changed)
  projects/clang500-import/contrib/pjdfstest/   (props changed)
  projects/clang500-import/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/clang500-import/MAINTAINERS
==============================================================================
--- projects/clang500-import/MAINTAINERS	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/MAINTAINERS	Sun Jul  2 11:48:07 2017	(r320573)
@@ -43,7 +43,7 @@ contrib/libcxxrt	dim	Pre-commit review preferred.
 contrib/llvm		dim	Pre-commit review preferred.
 contrib/llvm/tools/lldb	emaste	Pre-commit review preferred.
 contrib/netbsd-tests	freebsd-testing,ngie	Pre-commit review requested.
-contrib/pjdfstest	freebsd-testing,ngie,pjd	Pre-commit review requested.
+contrib/pjdfstest	freebsd-testing,asomers,ngie,pjd	Pre-commit review requested.
 dev/usb/wlan	adrian	Pre-commit review requested, send to freebsd-wireless@freebsd.org
 *env(3)		secteam	Due to the problematic security history of this
 			code, please have patches reviewed by secteam.

Modified: projects/clang500-import/UPDATING
==============================================================================
--- projects/clang500-import/UPDATING	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/UPDATING	Sun Jul  2 11:48:07 2017	(r320573)
@@ -56,6 +56,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
 	Please see the 20141231 entry below for information about prerequisites
 	and upgrading, if you are not already using clang 3.5.0 or higher.
 
+20170701:
+	WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need them to be
+	built with the base system.
+
 20170625:
 	The FreeBSD/powerpc platform now uses a 64-bit type for time_t.  This is
 	a very major ABI incompatible change, so users of FreeBSD/powerpc must

Modified: projects/clang500-import/contrib/atf/atf-sh/atf-sh.3
==============================================================================
--- projects/clang500-import/contrib/atf/atf-sh/atf-sh.3	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/atf/atf-sh/atf-sh.3	Sun Jul  2 11:48:07 2017	(r320573)
@@ -40,6 +40,7 @@
 .Nm atf_fail ,
 .Nm atf_get ,
 .Nm atf_get_srcdir ,
+.Nm atf_init_test_cases ,
 .Nm atf_pass ,
 .Nm atf_require_prog ,
 .Nm atf_set ,
@@ -82,6 +83,8 @@
 .Nm atf_get
 .Qq var_name
 .Nm atf_get_srcdir
+.Nm atf_init_test_cases
+.Qq name
 .Nm atf_pass
 .Nm atf_require_prog
 .Qq prog_name

Modified: projects/clang500-import/contrib/ipfilter/lib/hostname.c
==============================================================================
--- projects/clang500-import/contrib/ipfilter/lib/hostname.c	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/ipfilter/lib/hostname.c	Sun Jul  2 11:48:07 2017	(r320573)
@@ -10,9 +10,8 @@
 
 #include "ipf.h"
 
-char *hostname(family, ip)
-	int family;
-	void *ip;
+char *
+hostname(int family, void *ip)
 {
 	static char hostbuf[MAXHOSTNAMELEN+1];
 	struct hostent *hp;
@@ -24,7 +23,7 @@ char *hostname(family, ip)
 	if (family == AF_INET) {
 		ipa.s_addr = *(u_32_t *)ip;
 		if (ipa.s_addr == htonl(0xfedcba98))
-			return "test.host.dots";
+			return ("test.host.dots");
 	}
 
 	if ((opts & OPT_NORESOLVE) == 0) {
@@ -34,7 +33,7 @@ char *hostname(family, ip)
 			    *hp->h_name != '\0') {
 				strncpy(hostbuf, hp->h_name, sizeof(hostbuf));
 				hostbuf[sizeof(hostbuf) - 1] = '\0';
-				return hostbuf;
+				return (hostbuf);
 			}
 
 			np = getnetbyaddr(ipa.s_addr, AF_INET);
@@ -42,19 +41,19 @@ char *hostname(family, ip)
 			    *np->n_name != '\0') {
 				strncpy(hostbuf, np->n_name, sizeof(hostbuf));
 				hostbuf[sizeof(hostbuf) - 1] = '\0';
-				return hostbuf;
+				return (hostbuf);
 			}
 		}
 	}
 
 	if (family == AF_INET) {
-		return inet_ntoa(ipa);
+		return (inet_ntoa(ipa));
 	}
 #ifdef  USE_INET6
 	(void) inet_ntop(AF_INET6, ip, hostbuf, sizeof(hostbuf) - 1);
 	hostbuf[MAXHOSTNAMELEN] = '\0';
-	return hostbuf;
+	return (hostbuf);
 #else
-	return "IPv6";
+	return ("IPv6");
 #endif
 }

Modified: projects/clang500-import/contrib/ipfilter/lib/portname.c
==============================================================================
--- projects/clang500-import/contrib/ipfilter/lib/portname.c	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/ipfilter/lib/portname.c	Sun Jul  2 11:48:07 2017	(r320573)
@@ -10,8 +10,8 @@
 #include "ipf.h"
 
 
-char *portname(pr, port)
-	int pr, port;
+char *
+portname(int pr, int port)
 {
 	static char buf[32];
 	struct protoent *p = NULL;
@@ -28,16 +28,16 @@ char *portname(pr, port)
 				     NULL : sv1;
 			}
 			if (sv)
-				return buf;
+				return (buf);
 		} else if ((pr != -2) && (p = getprotobynumber(pr))) {
 			if ((sv = getservbyport(htons(port), p->p_name))) {
 				strncpy(buf, sv->s_name, sizeof(buf)-1);
 				buf[sizeof(buf)-1] = '\0';
-				return buf;
+				return (buf);
 			}
 		}
 	}
 
 	(void) sprintf(buf, "%d", port);
-	return buf;
+	return (buf);
 }

Modified: projects/clang500-import/contrib/ipfilter/lib/printstate.c
==============================================================================
--- projects/clang500-import/contrib/ipfilter/lib/printstate.c	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/ipfilter/lib/printstate.c	Sun Jul  2 11:48:07 2017	(r320573)
@@ -11,10 +11,7 @@
 
 
 ipstate_t *
-printstate(sp, opts, now)
-	ipstate_t *sp;
-	int opts;
-	u_long now;
+printstate(ipstate_t *sp, int opts, u_long now)
 {
 	struct protoent *pr;
 	synclist_t ipsync;
@@ -210,7 +207,7 @@ printstate(sp, opts, now)
 		if (kmemcpy((char *)&ipsync, (u_long)sp->is_sync,
 			    sizeof(ipsync))) {
 			PRINTF("status could not be retrieved\n");
-			return NULL;
+			return (NULL);
 		}
 
 		PRINTF("idx %d num %d v %d pr %d rev %d\n",
@@ -220,5 +217,5 @@ printstate(sp, opts, now)
 		PRINTF("not synchronized\n");
 	}
 
-	return sp->is_next;
+	return (sp->is_next);
 }

Modified: projects/clang500-import/contrib/ipfilter/tools/ippool.c
==============================================================================
--- projects/clang500-import/contrib/ipfilter/tools/ippool.c	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/ipfilter/tools/ippool.c	Sun Jul  2 11:48:07 2017	(r320573)
@@ -75,7 +75,7 @@ usage(prog)
 	char *prog;
 {
 	fprintf(stderr, "Usage:\t%s\n", prog);
-	fprintf(stderr, "\t-a [-dnv] [-m <name>] [-o <role>] [-t type] [-T ttl] -i <ipaddr>[/netmask]\n");
+	fprintf(stderr, "\t-a [-dnv] -m <name> [-o <role>] [-t type] [-T ttl] -i <ipaddr>[/netmask]\n");
 	fprintf(stderr, "\t-A [-dnv] [-m <name>] [-o <role>] [-S <seed>] [-t <type>]\n");
 	fprintf(stderr, "\t-f <file> [-dnuv]\n");
 	fprintf(stderr, "\t-F [-dv] [-o <role>] [-t <type>]\n");

Modified: projects/clang500-import/contrib/jemalloc/FREEBSD-diffs
==============================================================================
--- projects/clang500-import/contrib/jemalloc/FREEBSD-diffs	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/jemalloc/FREEBSD-diffs	Sun Jul  2 11:48:07 2017	(r320573)
@@ -1,8 +1,8 @@
 diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in
-index 21e401ac..f977c5f5 100644
+index 21e401ac..c26f9f4a 100644
 --- a/doc/jemalloc.xml.in
 +++ b/doc/jemalloc.xml.in
-@@ -53,11 +53,21 @@
+@@ -53,11 +53,22 @@
      <para>This manual describes jemalloc @jemalloc_version@.  More information
      can be found at the <ulink
      url="http://jemalloc.net/">jemalloc website</ulink>.</para>
@@ -10,7 +10,8 @@ index 21e401ac..f977c5f5 100644
 +    <para>The following configuration options are enabled in libc's built-in
 +    jemalloc: <option>--enable-fill</option>,
 +    <option>--enable-lazy-lock</option>, <option>--enable-stats</option>,
-+    <option>--enable-utrace</option>, and <option>--enable-xmalloc</option>.
++    <option>--enable-utrace</option>, <option>--enable-xmalloc</option>, and
++    <option>--with-malloc-conf=abort_conf:false</option>.
 +    Additionally, <option>--enable-debug</option> is enabled in development
 +    versions of FreeBSD (controlled by the
 +    <constant>MALLOC_PRODUCTION</constant> make variable).</para>
@@ -25,7 +26,7 @@ index 21e401ac..f977c5f5 100644
        <refsect2>
          <title>Standard API</title>
          <funcprototype>
-@@ -3252,4 +3262,18 @@ malloc_conf = "narenas:1";]]></programlisting></para>
+@@ -3252,4 +3263,18 @@ malloc_conf = "narenas:1";]]></programlisting></para>
      <para>The <function>posix_memalign()</function> function conforms
      to IEEE Std 1003.1-2001 (<quote>POSIX.1</quote>).</para>
    </refsect1>

Modified: projects/clang500-import/contrib/jemalloc/FREEBSD-upgrade
==============================================================================
--- projects/clang500-import/contrib/jemalloc/FREEBSD-upgrade	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/jemalloc/FREEBSD-upgrade	Sun Jul  2 11:48:07 2017	(r320573)
@@ -96,6 +96,7 @@ do_extract_helper() {
 
 do_autogen() {
   ./autogen.sh --enable-xmalloc --enable-utrace \
+    --with-malloc-conf=abort_conf:false \
     --with-xslroot=/usr/local/share/xsl/docbook --with-private-namespace=__ \
     --with-lg-page-sizes=12,13,14,16
 }

Modified: projects/clang500-import/contrib/jemalloc/doc/jemalloc.3
==============================================================================
--- projects/clang500-import/contrib/jemalloc/doc/jemalloc.3	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/jemalloc/doc/jemalloc.3	Sun Jul  2 11:48:07 2017	(r320573)
@@ -2,12 +2,12 @@
 .\"     Title: JEMALLOC
 .\"    Author: Jason Evans
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 06/14/2017
+.\"      Date: 06/29/2017
 .\"    Manual: User Manual
 .\"    Source: jemalloc 5.0.0-4-g84f6c2cae0fb1399377ef6aea9368444c4987cc6
 .\"  Language: English
 .\"
-.TH "JEMALLOC" "3" "06/14/2017" "jemalloc 5.0.0-4-g84f6c2cae0fb" "User Manual"
+.TH "JEMALLOC" "3" "06/29/2017" "jemalloc 5.0.0-4-g84f6c2cae0fb" "User Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -38,8 +38,9 @@ The following configuration options are enabled in lib
 \fB\-\-enable\-fill\fR,
 \fB\-\-enable\-lazy\-lock\fR,
 \fB\-\-enable\-stats\fR,
-\fB\-\-enable\-utrace\fR, and
-\fB\-\-enable\-xmalloc\fR\&. Additionally,
+\fB\-\-enable\-utrace\fR,
+\fB\-\-enable\-xmalloc\fR, and
+\fB\-\-with\-malloc\-conf=abort_conf:false\fR\&. Additionally,
 \fB\-\-enable\-debug\fR
 is enabled in development versions of FreeBSD (controlled by the
 \fBMALLOC_PRODUCTION\fR

Modified: projects/clang500-import/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h
==============================================================================
--- projects/clang500-import/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h	Sun Jul  2 11:48:07 2017	(r320573)
@@ -329,7 +329,7 @@
 /* #undef JEMALLOC_EXPORT */
 
 /* config.malloc_conf options string. */
-#define JEMALLOC_CONFIG_MALLOC_CONF ""
+#define JEMALLOC_CONFIG_MALLOC_CONF "abort_conf:false"
 
 /* If defined, jemalloc takes the malloc/free/etc. symbol names. */
 #define JEMALLOC_IS_MALLOC 1

Modified: projects/clang500-import/contrib/netbsd-tests/usr.bin/grep/t_grep.sh
==============================================================================
--- projects/clang500-import/contrib/netbsd-tests/usr.bin/grep/t_grep.sh	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/netbsd-tests/usr.bin/grep/t_grep.sh	Sun Jul  2 11:48:07 2017	(r320573)
@@ -658,6 +658,8 @@ mmap_eof_not_eol_body()
 		atf_expect_fail "gnu grep from ports has no --mmap option"
 	fi
 
+	atf_expect_fail "relies on jemalloc feature no longer available; needs to be rewritten - bug 220309"
+
 	printf "ABC" > test1
 	jot -b " "  -s "" 4096 >> test2
 

Copied: projects/clang500-import/contrib/pjdfstest/.gitignore (from r320572, head/contrib/pjdfstest/.gitignore)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/.gitignore	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/.gitignore)
@@ -0,0 +1,19 @@
+autom4te.cache
+aclocal.m4
+compile
+configure
+config.h*
+config.guess
+config.log
+config.status
+config.sub
+depcomp
+install-sh
+missing
+pjdfstest
+stamp-h1
+INSTALL
+Makefile
+Makefile.in
+.deps
+*.o

Copied: projects/clang500-import/contrib/pjdfstest/.travis.yml (from r320572, head/contrib/pjdfstest/.travis.yml)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/.travis.yml	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/.travis.yml)
@@ -0,0 +1,19 @@
+language: c
+sudo: required
+
+matrix:
+    include:
+        - os: linux
+          compiler: clang
+          dist: xenial
+        - os: linux
+          compiler: gcc
+          dist: xenial
+        - os: osx
+          compiler: clang
+        - os: osx
+          compiler: gcc
+
+script:
+    - ./travis/build.sh
+    - ./travis/test.sh

Copied: projects/clang500-import/contrib/pjdfstest/AUTHORS (from r320572, head/contrib/pjdfstest/AUTHORS)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/AUTHORS	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/AUTHORS)
@@ -0,0 +1,3 @@
+* Alan Somers <asomers@FreeBSD.org>		- contributor/co-maintainer
+* Ngie Cooper <ngie@FreeBSD.org>		- contributor/co-maintainer
+* Pawel Jakub Dawidek <pawel@dawidek.net>	- pjdfstest author/maintainer

Copied: projects/clang500-import/contrib/pjdfstest/COPYING (from r320572, head/contrib/pjdfstest/COPYING)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/COPYING	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/COPYING)
@@ -0,0 +1,27 @@
+$FreeBSD: head/tools/regression/pjdfstest/LICENSE 211354 2010-08-15 21:29:03Z pjd $
+
+License for all regression tests available with pjdfstest:
+
+Copyright (c) 2006-2012 Pawel Jakub Dawidek <pawel@dawidek.net>
+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 AUTHORS 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 AUTHORS 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.

Copied: projects/clang500-import/contrib/pjdfstest/ChangeLog (from r320572, head/contrib/pjdfstest/ChangeLog)
==============================================================================

Copied: projects/clang500-import/contrib/pjdfstest/Makefile.am (from r320572, head/contrib/pjdfstest/Makefile.am)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/Makefile.am	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/Makefile.am)
@@ -0,0 +1,5 @@
+AM_CFLAGS=	-Wall -Werror
+
+bin_PROGRAMS=	pjdfstest
+
+pjdfstest_SOURCES=	pjdfstest.c

Copied: projects/clang500-import/contrib/pjdfstest/NEWS (from r320572, head/contrib/pjdfstest/NEWS)
==============================================================================

Modified: projects/clang500-import/contrib/pjdfstest/README
==============================================================================
--- projects/clang500-import/contrib/pjdfstest/README	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/pjdfstest/README	Sun Jul  2 11:48:07 2017	(r320573)
@@ -1,22 +1,57 @@
 $FreeBSD: head/tools/regression/pjdfstest/README 211354 2010-08-15 21:29:03Z pjd $
 
-Few notes on how to use pjdfstest in short steps:
+============
+Introduction
+============
 
-	# cd pjdfstest
-	# vi tests/conf
-	Change 'fs' to file system type you want to test (UFS or ZFS).
-	# vi Makefile
-	You need to manually tweak few things by editing CFLAGS lines
-	at the top of the file.
-	# make
-	It will compile pjdfstest utility which is used by regression tests.
-	# cd /path/to/file/system/you/want/to/test/
-	# prove -r /path/to/pjdfstest/tests
+pjdfstest is a test suite that helps exercise POSIX system calls.
 
-That's all. Enjoy.
+pjdfstest supports the following operating systems/filesystems:
 
-Currently supported operating systems: FreeBSD, Solaris.
-Currently supported file system types: UFS, ZFS.
+- Supported Operating Systems: FreeBSD, Linux, Solaris
+- Supported Filesystems: ext4, UFS, ZFS
 
--- 
-Pawel Jakub Dawidek <pawel@dawidek.net>
+==================
+Building pjdfstest
+==================
+
+-------------
+Prerequisites
+-------------
+
+- autoconf 2.69 or newer
+- automake 1.15 or newer
+- cc (clang or gcc)
+- make
+- appropriate system headers (please install your distribution appropriate
+  header package)
+
+---------
+Procedure
+---------
+
+  $ autoreconf -ifs
+  $ ./configure
+  $ make pjdfstest
+
+=================
+Running pjdfstest
+=================
+
+-------------
+Prerequisites
+-------------
+- You must be root when running these testcases.
+
+----------------------
+Software Prerequisites
+----------------------
+- perl
+- TAP-Harness (perl package)
+
+---------
+Procedure
+---------
+
+  # cd /path/to/filesystem/under/test
+  # prove -rv /path/to/pjdfstest/tests

Copied: projects/clang500-import/contrib/pjdfstest/configure.ac (from r320572, head/contrib/pjdfstest/configure.ac)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/pjdfstest/configure.ac	Sun Jul  2 11:48:07 2017	(r320573, copy of r320572, head/contrib/pjdfstest/configure.ac)
@@ -0,0 +1,107 @@
+AC_PREREQ(2.61)
+AC_INIT([pjdfstest],[0.1],)
+AC_CONFIG_AUX_DIR([.])
+AM_INIT_AUTOMAKE
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([ \
+    Makefile \
+])
+
+AC_CANONICAL_HOST
+
+AC_PROG_CC([cc])
+
+# For _GNU_SOURCE on Linux, etc.
+AC_USE_SYSTEM_EXTENSIONS
+
+AC_CHECK_HEADERS([ \
+    sys/mkdev.h \
+])
+
+#HAS_FREEBSD_ACL
+
+AC_CHECK_FUNC([bindat],
+	      [AC_DEFINE([HAVE_BINDAT], [1], [Define if bindat exists])])
+AC_CHECK_FUNC([chflags],
+	      [AC_DEFINE([HAVE_CHFLAGS], [1], [Define if chflags exists])])
+AC_CHECK_FUNC([chflagsat],
+	      [AC_DEFINE([HAVE_CHFLAGSAT], [1], [Define if chflagsat exists])])
+AC_CHECK_FUNC([connectat],
+	      [AC_DEFINE([HAVE_CONNECTAT], [1], [Define if connectat exists])])
+AC_CHECK_FUNC([faccessat],
+	      [AC_DEFINE([HAVE_FACCESSAT], [1], [Define if faccessat exists])])
+AC_CHECK_FUNC([fchflags],
+	      [AC_DEFINE([HAVE_FCHFLAGS], [1], [Define if fchflags exists])])
+AC_CHECK_FUNC([fchmodat],
+	      [AC_DEFINE([HAVE_FCHMODAT], [1], [Define if fchmodat exists])])
+AC_CHECK_FUNC([fchownat],
+	      [AC_DEFINE([HAVE_FCHOWNAT], [1], [Define if fchownat exists])])
+AC_CHECK_FUNC([fstatat],
+	      [AC_DEFINE([HAVE_FSTATAT], [1], [Define if fstatat exists])])
+AC_CHECK_FUNC([lchflags],
+	      [AC_DEFINE([HAVE_LCHFLAGS], [1], [Define if lchflags exists])])
+AC_CHECK_FUNC([lchmod],
+	      [AC_DEFINE([HAVE_LCHMOD], [1], [Define if lchmod exists])])
+AC_CHECK_FUNC([linkat],
+	      [AC_DEFINE([HAVE_LINKAT], [1], [Define if linkat exists])])
+AC_CHECK_FUNC([lpathconf],
+	      [AC_DEFINE([HAVE_LPATHCONF], [1], [Define if lpathconf exists])])
+AC_CHECK_FUNC([mkdirat],
+	      [AC_DEFINE([HAVE_MKDIRAT], [1], [Define if mkdirat exists])])
+AC_CHECK_FUNC([mkfifoat],
+	      [AC_DEFINE([HAVE_MKFIFOAT], [1], [Define if mkfifoat exists])])
+AC_CHECK_FUNC([mknodat],
+	      [AC_DEFINE([HAVE_MKNODAT], [1], [Define if mknodat exists])])
+AC_CHECK_FUNC([openat],
+	      [AC_DEFINE([HAVE_OPENAT], [1], [Define if openat exists])])
+AC_CHECK_FUNC([posix_fallocate],
+	      [AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Define if posix_fallocate exists])])
+AC_CHECK_FUNC([readlinkat],
+	      [AC_DEFINE([HAVE_READLINKAT], [1], [Define if readlinkat exists])])
+AC_CHECK_FUNC([renameat],
+	      [AC_DEFINE([HAVE_RENAMEAT], [1], [Define if renameat exists])])
+AC_CHECK_FUNC([symlinkat],
+	      [AC_DEFINE([HAVE_SYMLINKAT], [1], [Define if symlinkat exists])])
+AC_CHECK_FUNC([utimensat],
+	      [AC_DEFINE([HAVE_UTIMENSAT], [1], [Define if utimensat exists])])
+
+# ACL test battery.
+AC_CHECK_HEADER([sys/acl.h], [has_sys_acl_h=yes], [has_sys_acl_h=no])
+has_acl_funcs=no
+if test x$has_sys_acl_h = xyes; then
+	AC_DEFINE([HAVE_SYS_ACL_H], [1],
+		  [Define to 1 if sys/acl.h is available])
+	AC_CHECK_FUNCS([acl_create_entry_np acl_from_text acl_get_entry acl_get_file acl_set_file],
+		       [has_acl_funcs=yes],[])
+fi
+if test x$has_acl_funcs = xyes; then
+	# Check for NFSv4 ACL support.
+	AC_CHECK_DECL([ACL_TYPE_NFS4],
+		      [has_nfsv4_acl_support=yes], [has_nfsv4_acl_support=no],[[#include <sys/acl.h>]])
+	if test x$has_nfsv4_acl_support = xyes; then
+	      AC_DEFINE([HAS_NFSV4_ACL_SUPPORT], [1],
+			[Define to 1 if NFSv4 ACL support is available])
+	fi
+fi
+
+AC_CHECK_MEMBERS([struct stat.st_atim, struct stat.st_atimespec], [], [], [[
+#include <sys/types.h>
+#include <sys/stat.h>
+]])
+
+AC_CHECK_MEMBERS([struct stat.st_birthtim, struct stat.st_birthtime, struct stat.st_birthtimespec], [], [], [[
+#include <sys/types.h>
+#include <sys/stat.h>
+]])
+
+AC_CHECK_MEMBERS([struct stat.st_ctim, struct stat.st_ctimespec], [], [], [[
+#include <sys/types.h>
+#include <sys/stat.h>
+]])
+
+AC_CHECK_MEMBERS([struct stat.st_mtim, struct stat.st_mtimespec], [], [], [[
+#include <sys/types.h>
+#include <sys/stat.h>
+]])
+
+AC_OUTPUT

Modified: projects/clang500-import/contrib/pjdfstest/pjdfstest.c
==============================================================================
--- projects/clang500-import/contrib/pjdfstest/pjdfstest.c	Sun Jul  2 11:41:15 2017	(r320572)
+++ projects/clang500-import/contrib/pjdfstest/pjdfstest.c	Sun Jul  2 11:48:07 2017	(r320573)
@@ -26,14 +26,19 @@
  * $FreeBSD$
  */
 
+/* Needs to be first to twiddle appropriate system configuration/HAVE_* flags */
+#include "config.h"
+
 #include <sys/param.h>
-#include <sys/types.h>
+#ifdef	HAVE_SYS_ACL_H
+#include <sys/acl.h>
+#endif
+#ifdef	HAVE_SYS_MKDEV_H
+#include <sys/mkdev.h>
+#endif
 #include <sys/stat.h>
 #include <sys/socket.h>
 #include <sys/un.h>
-#ifndef makedev
-#include <sys/mkdev.h>
-#endif
 
 #include <assert.h>
 #include <ctype.h>
@@ -45,18 +50,15 @@
 #include <string.h>
 #include <unistd.h>
 
-#ifndef HAS_TRUNCATE64
-#define	truncate64	truncate
-#define	ftruncate64	ftruncate
+#ifdef	__sun__
+#define	_USE_STAT64
 #endif
-#ifndef HAS_STAT64
-#define	stat64	stat
-#define	fstat64	fstat
-#define	lstat64	lstat
+
+#ifdef	_USE_STAT64
+typedef	struct stat64	stat_t;
+#else
+typedef	struct stat	stat_t;
 #endif
-#ifdef HAS_FREEBSD_ACL
-#include <sys/acl.h>
-#endif
 
 #ifndef ALLPERMS
 #define	ALLPERMS	(S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
@@ -64,69 +66,91 @@
 
 enum action {
 	ACTION_OPEN,
+#ifdef	HAVE_OPENAT
 	ACTION_OPENAT,
+#endif
 	ACTION_CREATE,
 	ACTION_UNLINK,
+#ifdef	HAVE_UNLINKAT
 	ACTION_UNLINKAT,
+#endif
 	ACTION_MKDIR,
+#ifdef	HAVE_MKDIRAT
 	ACTION_MKDIRAT,
+#endif
 	ACTION_RMDIR,
 	ACTION_LINK,
+#ifdef	HAVE_LINKAT
 	ACTION_LINKAT,
+#endif
 	ACTION_SYMLINK,
+#ifdef	HAVE_SYMLINKAT
 	ACTION_SYMLINKAT,
+#endif
 	ACTION_RENAME,
+#ifdef	HAVE_RENAMEAT
 	ACTION_RENAMEAT,
+#endif
 	ACTION_MKFIFO,
+#ifdef	HAVE_MKFIFOAT
 	ACTION_MKFIFOAT,
+#endif
 	ACTION_MKNOD,
 	ACTION_MKNODAT,
 	ACTION_BIND,
-#ifdef HAS_BINDAT
+#ifdef	HAVE_BINDAT
 	ACTION_BINDAT,
 #endif
 	ACTION_CONNECT,
-#ifdef HAS_CONNECTAT
+#ifdef	HAVE_CONNECTAT
 	ACTION_CONNECTAT,
 #endif
 	ACTION_CHMOD,
 	ACTION_FCHMOD,
-#ifdef HAS_LCHMOD
+#ifdef	HAVE_LCHMOD
 	ACTION_LCHMOD,
 #endif
 	ACTION_FCHMODAT,
 	ACTION_CHOWN,
 	ACTION_FCHOWN,
 	ACTION_LCHOWN,
+#ifdef	HAVE_FCHOWNAT
 	ACTION_FCHOWNAT,
-#ifdef HAS_CHFLAGS
+#endif
+#ifdef	HAVE_CHFLAGS
 	ACTION_CHFLAGS,
 #endif
-#ifdef HAS_FCHFLAGS
+#ifdef	HAVE_FCHFLAGS
 	ACTION_FCHFLAGS,
 #endif
-#ifdef HAS_CHFLAGSAT
+#ifdef	HAVE_CHFLAGSAT
 	ACTION_CHFLAGSAT,
 #endif
-#ifdef HAS_LCHFLAGS
+#ifdef	HAVE_LCHFLAGS
 	ACTION_LCHFLAGS,
 #endif
 	ACTION_TRUNCATE,
 	ACTION_FTRUNCATE,
+#ifdef	HAVE_POSIX_FALLOCATE
+	ACTION_POSIX_FALLOCATE,
+#endif
 	ACTION_STAT,
 	ACTION_FSTAT,
 	ACTION_LSTAT,
 	ACTION_FSTATAT,
 	ACTION_PATHCONF,
 	ACTION_FPATHCONF,
-#ifdef HAS_LPATHCONF
+#ifdef	HAVE_LPATHCONF
 	ACTION_LPATHCONF,
 #endif
-#ifdef HAS_FREEBSD_ACL
+#ifdef	HAS_NFSV4_ACL_SUPPORT
 	ACTION_PREPENDACL,
 	ACTION_READACL,
 #endif
 	ACTION_WRITE,
+#ifdef	HAVE_UTIMENSAT
+	ACTION_UTIMENSAT,
+#endif
 };
 
 #define	TYPE_NONE	0x0000
@@ -147,69 +171,104 @@ struct syscall_desc {
 
 static struct syscall_desc syscalls[] = {
 	{ "open", ACTION_OPEN, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } },
+#ifdef	HAVE_OPENAT
 	{ "openat", ACTION_OPENAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } },
+#endif
 	{ "create", ACTION_CREATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
 	{ "unlink", ACTION_UNLINK, { TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_UNLINKAT
 	{ "unlinkat", ACTION_UNLINKAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "mkdir", ACTION_MKDIR, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#ifdef	HAVE_MKDIRAT
 	{ "mkdirat", ACTION_MKDIRAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#endif
 	{ "rmdir", ACTION_RMDIR, { TYPE_STRING, TYPE_NONE } },
 	{ "link", ACTION_LINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_LINKAT
 	{ "linkat", ACTION_LINKAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "symlink", ACTION_SYMLINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_SYMLINKAT
 	{ "symlinkat", ACTION_SYMLINKAT, { TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "rename", ACTION_RENAME, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_RENAMEAT
 	{ "renameat", ACTION_RENAMEAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "mkfifo", ACTION_MKFIFO, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#ifdef	HAVE_MKFIFOAT
 	{ "mkfifoat", ACTION_MKFIFOAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
+#endif
 	{ "mknod", ACTION_MKNOD, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} },
+#ifdef	HAVE_MKNODAT
 	{ "mknodat", ACTION_MKNODAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} },
+#endif
 	{ "bind", ACTION_BIND, { TYPE_STRING, TYPE_NONE } },
-#ifdef HAS_BINDAT
+#ifdef	HAVE_BINDAT
 	{ "bindat", ACTION_BINDAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
 #endif
 	{ "connect", ACTION_CONNECT, { TYPE_STRING, TYPE_NONE } },
-#ifdef HAS_CONNECTAT
+#ifdef	HAVE_CONNECTAT
 	{ "connectat", ACTION_CONNECTAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
 #endif
 	{ "chmod", ACTION_CHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
 	{ "fchmod", ACTION_FCHMOD, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NONE } },
-#ifdef HAS_LCHMOD
+#ifdef	HAVE_LCHMOD
 	{ "lchmod", ACTION_LCHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
 #endif
+#ifdef	HAVE_FCHMODAT
 	{ "fchmodat", ACTION_FCHMODAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "chown", ACTION_CHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
 	{ "fchown", ACTION_FCHOWN, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
 	{ "lchown", ACTION_LCHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
+#ifdef	HAVE_FCHOWNAT
 	{ "fchownat", ACTION_FCHOWNAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_STRING, TYPE_NONE } },
-#ifdef HAS_CHFLAGS
+#endif
+#ifdef	HAVE_CHFLAGS
 	{ "chflags", ACTION_CHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 #endif
-#ifdef HAS_FCHFLAGS
+#ifdef	HAVE_FCHFLAGS
 	{ "fchflags", ACTION_FCHFLAGS, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
 #endif
-#ifdef HAS_CHFLAGSAT
+#ifdef	HAVE_CHFLAGSAT
 	{ "chflagsat", ACTION_CHFLAGSAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 #endif
-#ifdef HAS_LCHFLAGS
+#ifdef	HAVE_LCHFLAGS
 	{ "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 #endif
 	{ "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
 	{ "ftruncate", ACTION_FTRUNCATE, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NONE } },
+#ifdef	HAVE_POSIX_FALLOCATE
+	{ "posix_fallocate", ACTION_POSIX_FALLOCATE, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } },
+#endif
 	{ "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 	{ "fstat", ACTION_FSTAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
 	{ "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_FSTATAT
 	{ "fstatat", ACTION_FSTATAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#endif
 	{ "pathconf", ACTION_PATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 	{ "fpathconf", ACTION_FPATHCONF, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
-#ifdef HAS_LPATHCONF
+#ifdef	HAVE_LPATHCONF
 	{ "lpathconf", ACTION_LPATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 #endif
-#ifdef HAS_FREEBSD_ACL
+#ifdef	HAS_NFSV4_ACL_SUPPORT
 	{ "prependacl", ACTION_PREPENDACL, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
 	{ "readacl", ACTION_READACL, { TYPE_STRING, TYPE_NONE } },
 #endif
 	{ "write", ACTION_WRITE, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } },
+#ifdef	HAVE_UTIMENSAT
+	{ "utimensat", ACTION_UTIMENSAT, {
+						 TYPE_DESCRIPTOR, /* Directory */
+						 TYPE_STRING, /* Relative path */
+						 TYPE_NUMBER, /* atime seconds */
+						 TYPE_STRING, /* atime nanoseconds */
+						 TYPE_NUMBER, /* mtime seconds */
+						 TYPE_STRING, /* mtime nanoseconds */
+						 TYPE_STRING, /* flags */}},
+#endif
 	{ NULL, -1, { TYPE_NONE } }
 };
 
@@ -219,122 +278,136 @@ struct flag {
 };
 
 static struct flag open_flags[] = {
-#ifdef O_RDONLY
+#ifdef	O_RDONLY
 	{ O_RDONLY, "O_RDONLY" },
 #endif
-#ifdef O_WRONLY
+#ifdef	O_WRONLY
 	{ O_WRONLY, "O_WRONLY" },
 #endif
-#ifdef O_RDWR
+#ifdef	O_RDWR
 	{ O_RDWR, "O_RDWR" },
 #endif
-#ifdef O_NONBLOCK
+#ifdef	O_NONBLOCK
 	{ O_NONBLOCK, "O_NONBLOCK" },
 #endif
-#ifdef O_APPEND
+#ifdef	O_APPEND
 	{ O_APPEND, "O_APPEND" },
 #endif
-#ifdef O_CREAT
+#ifdef	O_CREAT
 	{ O_CREAT, "O_CREAT" },
 #endif
-#ifdef O_TRUNC
+#ifdef	O_TRUNC
 	{ O_TRUNC, "O_TRUNC" },
 #endif
-#ifdef O_EXCL
+#ifdef	O_EXCL
 	{ O_EXCL, "O_EXCL" },
 #endif
-#ifdef O_SHLOCK
+#ifdef	O_SHLOCK
 	{ O_SHLOCK, "O_SHLOCK" },
 #endif
-#ifdef O_EXLOCK
+#ifdef	O_EXLOCK
 	{ O_EXLOCK, "O_EXLOCK" },
 #endif
-#ifdef O_DIRECT
+#ifdef	O_DIRECT
 	{ O_DIRECT, "O_DIRECT" },
 #endif
-#ifdef O_FSYNC
+#ifdef	O_FSYNC
 	{ O_FSYNC, "O_FSYNC" },
 #endif
-#ifdef O_SYNC
+#ifdef	O_SYNC
 	{ O_SYNC, "O_SYNC" },
 #endif
-#ifdef O_NOFOLLOW
+#ifdef	O_NOFOLLOW
 	{ O_NOFOLLOW, "O_NOFOLLOW" },
 #endif
-#ifdef O_NOCTTY
+#ifdef	O_NOCTTY
 	{ O_NOCTTY, "O_NOCTTY" },
 #endif
-#ifdef O_DIRECTORY
+#ifdef	O_DIRECTORY
 	{ O_DIRECTORY, "O_DIRECTORY" },
 #endif
 	{ 0, NULL }
 };
 
-#ifdef HAS_CHFLAGS
+#ifdef	HAVE_CHFLAGS
 static struct flag chflags_flags[] = {
-#ifdef UF_NODUMP
+#ifdef	UF_NODUMP
 	{ UF_NODUMP, "UF_NODUMP" },
 #endif
-#ifdef UF_IMMUTABLE
+#ifdef	UF_IMMUTABLE
 	{ UF_IMMUTABLE, "UF_IMMUTABLE" },
 #endif
-#ifdef UF_APPEND
+#ifdef	UF_APPEND
 	{ UF_APPEND, "UF_APPEND" },
 #endif
-#ifdef UF_NOUNLINK
+#ifdef	UF_NOUNLINK
 	{ UF_NOUNLINK, "UF_NOUNLINK" },
 #endif
-#ifdef UF_OPAQUE
+#ifdef	UF_OPAQUE
 	{ UF_OPAQUE, "UF_OPAQUE" },
 #endif
-#ifdef SF_ARCHIVED
+#ifdef	SF_ARCHIVED
 	{ SF_ARCHIVED, "SF_ARCHIVED" },
 #endif
-#ifdef SF_IMMUTABLE
+#ifdef	SF_IMMUTABLE
 	{ SF_IMMUTABLE, "SF_IMMUTABLE" },
 #endif
-#ifdef SF_APPEND
+#ifdef	SF_APPEND
 	{ SF_APPEND, "SF_APPEND" },
 #endif
-#ifdef SF_NOUNLINK
+#ifdef	SF_NOUNLINK
 	{ SF_NOUNLINK, "SF_NOUNLINK" },
 #endif
-#ifdef SF_SNAPSHOT
+#ifdef	SF_SNAPSHOT
 	{ SF_SNAPSHOT, "SF_SNAPSHOT" },
 #endif
 	{ 0, NULL }
 };
 #endif
 
+#ifdef	HAVE_UNLINKAT
 static struct flag unlinkat_flags[] = {
 	{ AT_REMOVEDIR, "AT_REMOVEDIR" },
 	{ 0, NULL }
 };
+#endif
 
+#ifdef	HAVE_LINKAT
 static struct flag linkat_flags[] = {
+#ifdef	AT_SYMLINK_FOLLOW
 	{ AT_SYMLINK_FOLLOW, "AT_SYMLINK_FOLLOW" },
+#endif
 	{ 0, NULL }
 };
+#endif
 
+#ifdef	HAVE_CHFLAGSAT
 static struct flag chflagsat_flags[] = {
 	{ AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
 	{ 0, NULL }
 };
+#endif
 
+#ifdef	HAVE_FCHMODAT
 static struct flag fchmodat_flags[] = {
 	{ AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
 	{ 0, NULL }
 };
+#endif
 
+#ifdef	HAVE_FCHOWNAT
 static struct flag fchownat_flags[] = {
 	{ AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
 	{ 0, NULL }
 };
+#endif
 
+#ifdef	HAVE_FSTATAT
 static struct flag fstatat_flags[] = {
 	{ AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" },
 	{ 0, NULL }
 };
+#endif
 
 struct name {
 	int		 n_name;
@@ -342,16 +415,16 @@ struct name {
 };
 
 static struct name pathconf_names[] = {
-#ifdef _PC_LINK_MAX
+#ifdef	_PC_LINK_MAX
 	{ _PC_LINK_MAX, "_PC_LINK_MAX" },
 #endif
-#ifdef _PC_NAME_MAX
+#ifdef	_PC_NAME_MAX
 	{ _PC_NAME_MAX, "_PC_NAME_MAX" },
 #endif
-#ifdef _PC_PATH_MAX
+#ifdef	_PC_PATH_MAX
 	{ _PC_PATH_MAX, "_PC_PATH_MAX" },
 #endif
-#ifdef _PC_SYMLINK_MAX
+#ifdef	_PC_SYMLINK_MAX
 	{ _PC_SYMLINK_MAX, "_PC_SYMLINK_MAX" },
 #endif
 	{ 0, NULL }
@@ -394,7 +467,7 @@ str2flags(struct flag *tflags, char *sflags)
 	return (flags);
 }
 
-#ifdef HAS_CHFLAGS
+#ifdef	HAVE_CHFLAGS
 static char *
 flags2str(struct flag *tflags, long long flags)

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

From owner-svn-src-projects@freebsd.org  Mon Jul  3 08:28:36 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id C71299E1110
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  3 Jul 2017 08:28:36 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 9E9572DFB;
 Mon,  3 Jul 2017 08:28:36 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v638SZT7086685;
 Mon, 3 Jul 2017 08:28:35 GMT (envelope-from hselasky@FreeBSD.org)
Received: (from hselasky@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v638SZ3X086684;
 Mon, 3 Jul 2017 08:28:35 GMT (envelope-from hselasky@FreeBSD.org)
Message-Id: <201707030828.v638SZ3X086684@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: hselasky set sender to
 hselasky@FreeBSD.org using -f
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Mon, 3 Jul 2017 08:28:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320589 -
 projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core
X-SVN-Group: projects
X-SVN-Commit-Author: hselasky
X-SVN-Commit-Paths: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core
X-SVN-Commit-Revision: 320589
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 08:28:36 -0000

Author: hselasky
Date: Mon Jul  3 08:28:35 2017
New Revision: 320589
URL: https://svnweb.freebsd.org/changeset/base/320589

Log:
  ibcore: Make sure all GID entries are deleted upon a network device
  departure.
  
  Sponsored by:	Mellanox Technologies

Modified:
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/core_priv.h
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c

Modified: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/core_priv.h
==============================================================================
--- projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/core_priv.h	Mon Jul  3 05:42:55 2017	(r320588)
+++ projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/core_priv.h	Mon Jul  3 08:28:35 2017	(r320589)
@@ -115,6 +115,7 @@ int ib_cache_gid_del(struct ib_device *ib_dev, u8 port
 
 int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port,
 				     struct net_device *ndev);
+void ib_cache_gid_del_all_by_netdev(struct net_device *ndev);
 
 int roce_gid_mgmt_init(void);
 void roce_gid_mgmt_cleanup(void);

Modified: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c
==============================================================================
--- projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c	Mon Jul  3 05:42:55 2017	(r320588)
+++ projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c	Mon Jul  3 08:28:35 2017	(r320589)
@@ -48,7 +48,7 @@ enum gid_op_type {
 	GID_ADD
 };
 
-struct roce_gid_scan_event_work {
+struct roce_netdev_event_work {
 	struct work_struct work;
 	struct net_device *ndev;
 };
@@ -288,8 +288,8 @@ roce_gid_update_addr_callback(struct ib_device *device
 static void
 roce_gid_queue_scan_event_handler(struct work_struct *_work)
 {
-	struct roce_gid_scan_event_work *work =
-		container_of(_work, struct roce_gid_scan_event_work, work);
+	struct roce_netdev_event_work *work =
+		container_of(_work, struct roce_netdev_event_work, work);
 
 	ib_enum_all_roce_netdevs(roce_gid_match_netdev, work->ndev,
 	    roce_gid_update_addr_callback, NULL);
@@ -301,7 +301,7 @@ roce_gid_queue_scan_event_handler(struct work_struct *
 static void
 roce_gid_queue_scan_event(struct net_device *ndev)
 {
-	struct roce_gid_scan_event_work *work;
+	struct roce_netdev_event_work *work;
 
 retry:
 	if (is_eth_ipoib_intf(ndev))
@@ -330,14 +330,44 @@ retry:
 	queue_work(roce_gid_mgmt_wq, &work->work);
 }
 
+static void
+roce_gid_delete_all_event_handler(struct work_struct *_work)
+{
+	struct roce_netdev_event_work *work =
+		container_of(_work, struct roce_netdev_event_work, work);
+
+	ib_cache_gid_del_all_by_netdev(work->ndev);
+	dev_put(work->ndev);
+	kfree(work);
+}
+
+static void
+roce_gid_delete_all_event(struct net_device *ndev)
+{
+	struct roce_netdev_event_work *work;
+
+	work = kmalloc(sizeof(*work), GFP_ATOMIC);
+	if (!work) {
+		pr_warn("roce_gid_mgmt: Couldn't allocate work for addr_event\n");
+		return;
+	}
+
+	INIT_WORK(&work->work, roce_gid_delete_all_event_handler);
+	dev_hold(ndev);
+	work->ndev = ndev;
+	queue_work(roce_gid_mgmt_wq, &work->work);
+}
+
 static int
 inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
 	struct net_device *ndev = ptr;
 
 	switch (event) {
-	case NETDEV_REGISTER:
 	case NETDEV_UNREGISTER:
+		roce_gid_delete_all_event(ndev);
+		break;
+	case NETDEV_REGISTER:
 	case NETDEV_CHANGEADDR:
 	case NETDEV_CHANGEIFADDR:
 		roce_gid_queue_scan_event(ndev);

From owner-svn-src-projects@freebsd.org  Mon Jul  3 08:29:51 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 312BC9E1139
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  3 Jul 2017 08:29:51 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 001852EE6;
 Mon,  3 Jul 2017 08:29:50 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v638Toth086768;
 Mon, 3 Jul 2017 08:29:50 GMT (envelope-from hselasky@FreeBSD.org)
Received: (from hselasky@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v638ToW7086767;
 Mon, 3 Jul 2017 08:29:50 GMT (envelope-from hselasky@FreeBSD.org)
Message-Id: <201707030829.v638ToW7086767@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: hselasky set sender to
 hselasky@FreeBSD.org using -f
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Mon, 3 Jul 2017 08:29:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320590 -
 projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core
X-SVN-Group: projects
X-SVN-Commit-Author: hselasky
X-SVN-Commit-Paths: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core
X-SVN-Commit-Revision: 320590
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 08:29:51 -0000

Author: hselasky
Date: Mon Jul  3 08:29:49 2017
New Revision: 320590
URL: https://svnweb.freebsd.org/changeset/base/320590

Log:
  ibcore: Fix for accessing invalid network device.
  
  Sponsored by:	Mellanox Technologies

Modified:
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cache.c

Modified: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cache.c
==============================================================================
--- projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cache.c	Mon Jul  3 08:28:35 2017	(r320589)
+++ projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cache.c	Mon Jul  3 08:29:49 2017	(r320590)
@@ -455,8 +455,13 @@ static int __ib_cache_gid_get(struct ib_device *ib_dev
 	memcpy(gid, &table->data_vec[index].gid, sizeof(*gid));
 	if (attr) {
 		memcpy(attr, &table->data_vec[index].attr, sizeof(*attr));
-		if (attr->ndev)
+		/* make sure network device is valid and attached */
+		if (attr->ndev != NULL &&
+		    (attr->ndev->if_flags & IFF_DYING) == 0 &&
+		    attr->ndev->if_addr != NULL)
 			dev_hold(attr->ndev);
+		else
+			attr->ndev = NULL;
 	}
 
 	return 0;

From owner-svn-src-projects@freebsd.org  Mon Jul  3 08:30:45 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5DA6F9E1161
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  3 Jul 2017 08:30:45 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 270272FDF;
 Mon,  3 Jul 2017 08:30:45 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v638UiOe086864;
 Mon, 3 Jul 2017 08:30:44 GMT (envelope-from hselasky@FreeBSD.org)
Received: (from hselasky@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v638UiDn086863;
 Mon, 3 Jul 2017 08:30:44 GMT (envelope-from hselasky@FreeBSD.org)
Message-Id: <201707030830.v638UiDn086863@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: hselasky set sender to
 hselasky@FreeBSD.org using -f
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Mon, 3 Jul 2017 08:30:44 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320591 - projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma
X-SVN-Group: projects
X-SVN-Commit-Author: hselasky
X-SVN-Commit-Paths: projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma
X-SVN-Commit-Revision: 320591
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 08:30:45 -0000

Author: hselasky
Date: Mon Jul  3 08:30:43 2017
New Revision: 320591
URL: https://svnweb.freebsd.org/changeset/base/320591

Log:
  ibcore: Fix for compiling header files from user-space.
  
  Sponsored by:	Mellanox Technologies

Modified:
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx4-abi.h
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx5-abi.h

Modified: projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx4-abi.h
==============================================================================
--- projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx4-abi.h	Mon Jul  3 08:29:49 2017	(r320590)
+++ projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx4-abi.h	Mon Jul  3 08:30:43 2017	(r320591)
@@ -34,7 +34,11 @@
 #ifndef MLX4_ABI_USER_H
 #define MLX4_ABI_USER_H
 
+#ifdef _KERNEL
 #include <linux/types.h>
+#else
+#include <infiniband/types.h>
+#endif
 
 /*
  * Increment this value if any changes that break userspace ABI

Modified: projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx5-abi.h
==============================================================================
--- projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx5-abi.h	Mon Jul  3 08:29:49 2017	(r320590)
+++ projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/mlx5-abi.h	Mon Jul  3 08:30:43 2017	(r320591)
@@ -33,7 +33,11 @@
 #ifndef MLX5_ABI_USER_H
 #define MLX5_ABI_USER_H
 
+#ifdef _KERNEL
 #include <linux/types.h>
+#else
+#include <infiniband/types.h>
+#endif
 
 enum {
 	MLX5_QP_FLAG_SIGNATURE		= 1 << 0,

From owner-svn-src-projects@freebsd.org  Mon Jul  3 08:32:53 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9AC239E127D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  3 Jul 2017 08:32:53 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 626143362;
 Mon,  3 Jul 2017 08:32:53 +0000 (UTC)
 (envelope-from hselasky@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v638Wq8k090489;
 Mon, 3 Jul 2017 08:32:52 GMT (envelope-from hselasky@FreeBSD.org)
Received: (from hselasky@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v638Wqag090486;
 Mon, 3 Jul 2017 08:32:52 GMT (envelope-from hselasky@FreeBSD.org)
Message-Id: <201707030832.v638Wqag090486@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: hselasky set sender to
 hselasky@FreeBSD.org using -f
From: Hans Petter Selasky <hselasky@FreeBSD.org>
Date: Mon, 3 Jul 2017 08:32:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320592 - in projects/bsd_rdma_4_9/sys/ofed:
 drivers/infiniband/core include/rdma include/uapi/rdma
X-SVN-Group: projects
X-SVN-Commit-Author: hselasky
X-SVN-Commit-Paths: in projects/bsd_rdma_4_9/sys/ofed: drivers/infiniband/core
 include/rdma include/uapi/rdma
X-SVN-Commit-Revision: 320592
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 08:32:53 -0000

Author: hselasky
Date: Mon Jul  3 08:32:52 2017
New Revision: 320592
URL: https://svnweb.freebsd.org/changeset/base/320592

Log:
  ibcore: Delete old files and add new ones missed in the initial commit
  for this projects branch.
  
  Sponsored by:	Mellanox Technologies

Added:
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_agent.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cm.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cma.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_device.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_fmr_pool.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_iwcm.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_mad.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_mad_rmpp.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_multicast.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_packer.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_sa_query.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_ucm.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_ucma.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_ud_header.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_user_mad.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_uverbs_main.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_uverbs_marshall.c   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/ib_user_cm.h   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/ib_user_mad.h   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/ib_user_sa.h   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/ib_user_verbs.h   (contents, props changed)
  projects/bsd_rdma_4_9/sys/ofed/include/uapi/rdma/rdma_user_cm.h   (contents, props changed)
Deleted:
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/agent.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/cm.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/cma.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/device.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/fmr_pool.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/iwcm.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/mad.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/mad_rmpp.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/multicast.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/packer.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/sa_query.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ucm.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ucma.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ud_header.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/user_mad.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/uverbs_cmd.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/uverbs_main.c
  projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/uverbs_marshall.c
  projects/bsd_rdma_4_9/sys/ofed/include/rdma/ib_user_cm.h
  projects/bsd_rdma_4_9/sys/ofed/include/rdma/ib_user_mad.h
  projects/bsd_rdma_4_9/sys/ofed/include/rdma/ib_user_sa.h
  projects/bsd_rdma_4_9/sys/ofed/include/rdma/ib_user_verbs.h
  projects/bsd_rdma_4_9/sys/ofed/include/rdma/rdma_user_cm.h

Added: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_agent.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_agent.c	Mon Jul  3 08:32:52 2017	(r320592)
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2004, 2005 Mellanox Technologies Ltd.  All rights reserved.
+ * Copyright (c) 2004, 2005 Infinicon Corporation.  All rights reserved.
+ * Copyright (c) 2004, 2005 Intel Corporation.  All rights reserved.
+ * Copyright (c) 2004, 2005 Topspin Corporation.  All rights reserved.
+ * Copyright (c) 2004-2007 Voltaire Corporation.  All rights reserved.
+ * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - 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.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#include <linux/slab.h>
+#include <linux/string.h>
+
+#include "agent.h"
+#include "smi.h"
+#include "mad_priv.h"
+
+#define SPFX "ib_agent: "
+
+struct ib_agent_port_private {
+	struct list_head port_list;
+	struct ib_mad_agent *agent[2];
+};
+
+static DEFINE_SPINLOCK(ib_agent_port_list_lock);
+static LIST_HEAD(ib_agent_port_list);
+
+static struct ib_agent_port_private *
+__ib_get_agent_port(const struct ib_device *device, int port_num)
+{
+	struct ib_agent_port_private *entry;
+
+	list_for_each_entry(entry, &ib_agent_port_list, port_list) {
+		if (entry->agent[1]->device == device &&
+		    entry->agent[1]->port_num == port_num)
+			return entry;
+	}
+	return NULL;
+}
+
+static struct ib_agent_port_private *
+ib_get_agent_port(const struct ib_device *device, int port_num)
+{
+	struct ib_agent_port_private *entry;
+	unsigned long flags;
+
+	spin_lock_irqsave(&ib_agent_port_list_lock, flags);
+	entry = __ib_get_agent_port(device, port_num);
+	spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
+	return entry;
+}
+
+void agent_send_response(const struct ib_mad_hdr *mad_hdr, const struct ib_grh *grh,
+			 const struct ib_wc *wc, const struct ib_device *device,
+			 int port_num, int qpn, size_t resp_mad_len, bool opa)
+{
+	struct ib_agent_port_private *port_priv;
+	struct ib_mad_agent *agent;
+	struct ib_mad_send_buf *send_buf;
+	struct ib_ah *ah;
+	struct ib_mad_send_wr_private *mad_send_wr;
+
+	if (rdma_cap_ib_switch(device))
+		port_priv = ib_get_agent_port(device, 0);
+	else
+		port_priv = ib_get_agent_port(device, port_num);
+
+	if (!port_priv) {
+		dev_err(&device->dev, "Unable to find port agent\n");
+		return;
+	}
+
+	agent = port_priv->agent[qpn];
+	ah = ib_create_ah_from_wc(agent->qp->pd, wc, grh, port_num);
+	if (IS_ERR(ah)) {
+		dev_err(&device->dev, "ib_create_ah_from_wc error %ld\n",
+			PTR_ERR(ah));
+		return;
+	}
+
+	if (opa && mad_hdr->base_version != OPA_MGMT_BASE_VERSION)
+		resp_mad_len = IB_MGMT_MAD_SIZE;
+
+	send_buf = ib_create_send_mad(agent, wc->src_qp, wc->pkey_index, 0,
+				      IB_MGMT_MAD_HDR,
+				      resp_mad_len - IB_MGMT_MAD_HDR,
+				      GFP_KERNEL,
+				      mad_hdr->base_version);
+	if (IS_ERR(send_buf)) {
+		dev_err(&device->dev, "ib_create_send_mad error\n");
+		goto err1;
+	}
+
+	memcpy(send_buf->mad, mad_hdr, resp_mad_len);
+	send_buf->ah = ah;
+
+	if (rdma_cap_ib_switch(device)) {
+		mad_send_wr = container_of(send_buf,
+					   struct ib_mad_send_wr_private,
+					   send_buf);
+		mad_send_wr->send_wr.port_num = port_num;
+	}
+
+	if (ib_post_send_mad(send_buf, NULL)) {
+		dev_err(&device->dev, "ib_post_send_mad error\n");
+		goto err2;
+	}
+	return;
+err2:
+	ib_free_send_mad(send_buf);
+err1:
+	ib_destroy_ah(ah);
+}
+
+static void agent_send_handler(struct ib_mad_agent *mad_agent,
+			       struct ib_mad_send_wc *mad_send_wc)
+{
+	ib_destroy_ah(mad_send_wc->send_buf->ah);
+	ib_free_send_mad(mad_send_wc->send_buf);
+}
+
+int ib_agent_port_open(struct ib_device *device, int port_num)
+{
+	struct ib_agent_port_private *port_priv;
+	unsigned long flags;
+	int ret;
+
+	/* Create new device info */
+	port_priv = kzalloc(sizeof *port_priv, GFP_KERNEL);
+	if (!port_priv) {
+		dev_err(&device->dev, "No memory for ib_agent_port_private\n");
+		ret = -ENOMEM;
+		goto error1;
+	}
+
+	if (rdma_cap_ib_smi(device, port_num)) {
+		/* Obtain send only MAD agent for SMI QP */
+		port_priv->agent[0] = ib_register_mad_agent(device, port_num,
+							    IB_QPT_SMI, NULL, 0,
+							    &agent_send_handler,
+							    NULL, NULL, 0);
+		if (IS_ERR(port_priv->agent[0])) {
+			ret = PTR_ERR(port_priv->agent[0]);
+			goto error2;
+		}
+	}
+
+	/* Obtain send only MAD agent for GSI QP */
+	port_priv->agent[1] = ib_register_mad_agent(device, port_num,
+						    IB_QPT_GSI, NULL, 0,
+						    &agent_send_handler,
+						    NULL, NULL, 0);
+	if (IS_ERR(port_priv->agent[1])) {
+		ret = PTR_ERR(port_priv->agent[1]);
+		goto error3;
+	}
+
+	spin_lock_irqsave(&ib_agent_port_list_lock, flags);
+	list_add_tail(&port_priv->port_list, &ib_agent_port_list);
+	spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
+
+	return 0;
+
+error3:
+	if (port_priv->agent[0])
+		ib_unregister_mad_agent(port_priv->agent[0]);
+error2:
+	kfree(port_priv);
+error1:
+	return ret;
+}
+
+int ib_agent_port_close(struct ib_device *device, int port_num)
+{
+	struct ib_agent_port_private *port_priv;
+	unsigned long flags;
+
+	spin_lock_irqsave(&ib_agent_port_list_lock, flags);
+	port_priv = __ib_get_agent_port(device, port_num);
+	if (port_priv == NULL) {
+		spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
+		dev_err(&device->dev, "Port %d not found\n", port_num);
+		return -ENODEV;
+	}
+	list_del(&port_priv->port_list);
+	spin_unlock_irqrestore(&ib_agent_port_list_lock, flags);
+
+	ib_unregister_mad_agent(port_priv->agent[1]);
+	if (port_priv->agent[0])
+		ib_unregister_mad_agent(port_priv->agent[0]);
+
+	kfree(port_priv);
+	return 0;
+}

Added: projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cm.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/bsd_rdma_4_9/sys/ofed/drivers/infiniband/core/ib_cm.c	Mon Jul  3 08:32:52 2017	(r320592)
@@ -0,0 +1,4141 @@
+/*
+ * Copyright (c) 2004-2007 Intel Corporation.  All rights reserved.
+ * Copyright (c) 2004 Topspin Corporation.  All rights reserved.
+ * Copyright (c) 2004, 2005 Voltaire Corporation.  All rights reserved.
+ * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - 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.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <linux/completion.h>
+#include <linux/dma-mapping.h>
+#include <linux/device.h>
+#include <linux/module.h>
+#include <linux/err.h>
+#include <linux/idr.h>
+#include <linux/interrupt.h>
+#include <linux/random.h>
+#include <linux/rbtree.h>
+#include <linux/spinlock.h>
+#include <linux/slab.h>
+#include <linux/sysfs.h>
+#include <linux/workqueue.h>
+#include <linux/kdev_t.h>
+#include <linux/etherdevice.h>
+
+#include <asm/atomic-long.h>
+
+#include <rdma/ib_cache.h>
+#include <rdma/ib_cm.h>
+#include "cm_msgs.h"
+
+MODULE_AUTHOR("Sean Hefty");
+MODULE_DESCRIPTION("InfiniBand CM");
+MODULE_LICENSE("Dual BSD/GPL");
+
+static void cm_add_one(struct ib_device *device);
+static void cm_remove_one(struct ib_device *device, void *client_data);
+
+static struct ib_client cm_client = {
+	.name   = "cm",
+	.add    = cm_add_one,
+	.remove = cm_remove_one
+};
+
+static struct ib_cm {
+	spinlock_t lock;
+	struct list_head device_list;
+	rwlock_t device_lock;
+	struct rb_root listen_service_table;
+	u64 listen_service_id;
+	/* struct rb_root peer_service_table; todo: fix peer to peer */
+	struct rb_root remote_qp_table;
+	struct rb_root remote_id_table;
+	struct rb_root remote_sidr_table;
+	struct idr local_id_table;
+	__be32 random_id_operand;
+	struct list_head timewait_list;
+	struct workqueue_struct *wq;
+	/* Sync on cm change port state */
+	spinlock_t state_lock;
+} cm;
+
+/* Counter indexes ordered by attribute ID */
+enum {
+	CM_REQ_COUNTER,
+	CM_MRA_COUNTER,
+	CM_REJ_COUNTER,
+	CM_REP_COUNTER,
+	CM_RTU_COUNTER,
+	CM_DREQ_COUNTER,
+	CM_DREP_COUNTER,
+	CM_SIDR_REQ_COUNTER,
+	CM_SIDR_REP_COUNTER,
+	CM_LAP_COUNTER,
+	CM_APR_COUNTER,
+	CM_ATTR_COUNT,
+	CM_ATTR_ID_OFFSET = 0x0010,
+};
+
+enum {
+	CM_XMIT,
+	CM_XMIT_RETRIES,
+	CM_RECV,
+	CM_RECV_DUPLICATES,
+	CM_COUNTER_GROUPS
+};
+
+static char const counter_group_names[CM_COUNTER_GROUPS]
+				     [sizeof("cm_rx_duplicates")] = {
+	"cm_tx_msgs", "cm_tx_retries",
+	"cm_rx_msgs", "cm_rx_duplicates"
+};
+
+struct cm_counter_group {
+	struct kobject obj;
+	atomic_long_t counter[CM_ATTR_COUNT];
+};
+
+struct cm_counter_attribute {
+	struct attribute attr;
+	int index;
+};
+
+#define CM_COUNTER_ATTR(_name, _index) \
+struct cm_counter_attribute cm_##_name##_counter_attr = { \
+	.attr = { .name = __stringify(_name), .mode = 0444 }, \
+	.index = _index \
+}
+
+static CM_COUNTER_ATTR(req, CM_REQ_COUNTER);
+static CM_COUNTER_ATTR(mra, CM_MRA_COUNTER);
+static CM_COUNTER_ATTR(rej, CM_REJ_COUNTER);
+static CM_COUNTER_ATTR(rep, CM_REP_COUNTER);
+static CM_COUNTER_ATTR(rtu, CM_RTU_COUNTER);
+static CM_COUNTER_ATTR(dreq, CM_DREQ_COUNTER);
+static CM_COUNTER_ATTR(drep, CM_DREP_COUNTER);
+static CM_COUNTER_ATTR(sidr_req, CM_SIDR_REQ_COUNTER);
+static CM_COUNTER_ATTR(sidr_rep, CM_SIDR_REP_COUNTER);
+static CM_COUNTER_ATTR(lap, CM_LAP_COUNTER);
+static CM_COUNTER_ATTR(apr, CM_APR_COUNTER);
+
+static struct attribute *cm_counter_default_attrs[] = {
+	&cm_req_counter_attr.attr,
+	&cm_mra_counter_attr.attr,
+	&cm_rej_counter_attr.attr,
+	&cm_rep_counter_attr.attr,
+	&cm_rtu_counter_attr.attr,
+	&cm_dreq_counter_attr.attr,
+	&cm_drep_counter_attr.attr,
+	&cm_sidr_req_counter_attr.attr,
+	&cm_sidr_rep_counter_attr.attr,
+	&cm_lap_counter_attr.attr,
+	&cm_apr_counter_attr.attr,
+	NULL
+};
+
+struct cm_port {
+	struct cm_device *cm_dev;
+	struct ib_mad_agent *mad_agent;
+	struct kobject port_obj;
+	u8 port_num;
+	struct list_head cm_priv_prim_list;
+	struct list_head cm_priv_altr_list;
+	struct cm_counter_group counter_group[CM_COUNTER_GROUPS];
+};
+
+struct cm_device {
+	struct list_head list;
+	struct ib_device *ib_device;
+	struct device *device;
+	u8 ack_delay;
+	int going_down;
+	struct cm_port *port[0];
+};
+
+struct cm_av {
+	struct cm_port *port;
+	union ib_gid dgid;
+	struct ib_ah_attr ah_attr;
+	u16 pkey_index;
+	u8 timeout;
+};
+
+struct cm_work {
+	struct delayed_work work;
+	struct list_head list;
+	struct cm_port *port;
+	struct ib_mad_recv_wc *mad_recv_wc;	/* Received MADs */
+	__be32 local_id;			/* Established / timewait */
+	__be32 remote_id;
+	struct ib_cm_event cm_event;
+	struct ib_sa_path_rec path[0];
+};
+
+struct cm_timewait_info {
+	struct cm_work work;			/* Must be first. */
+	struct list_head list;
+	struct rb_node remote_qp_node;
+	struct rb_node remote_id_node;
+	__be64 remote_ca_guid;
+	__be32 remote_qpn;
+	u8 inserted_remote_qp;
+	u8 inserted_remote_id;
+};
+
+struct cm_id_private {
+	struct ib_cm_id	id;
+
+	struct rb_node service_node;
+	struct rb_node sidr_id_node;
+	spinlock_t lock;	/* Do not acquire inside cm.lock */
+	struct completion comp;
+	atomic_t refcount;
+	/* Number of clients sharing this ib_cm_id. Only valid for listeners.
+	 * Protected by the cm.lock spinlock. */
+	int listen_sharecount;
+
+	struct ib_mad_send_buf *msg;
+	struct cm_timewait_info *timewait_info;
+	/* todo: use alternate port on send failure */
+	struct cm_av av;
+	struct cm_av alt_av;
+
+	void *private_data;
+	__be64 tid;
+	__be32 local_qpn;
+	__be32 remote_qpn;
+	enum ib_qp_type qp_type;
+	__be32 sq_psn;
+	__be32 rq_psn;
+	int timeout_ms;
+	enum ib_mtu path_mtu;
+	__be16 pkey;
+	u8 private_data_len;
+	u8 max_cm_retries;
+	u8 peer_to_peer;
+	u8 responder_resources;
+	u8 initiator_depth;
+	u8 retry_count;
+	u8 rnr_retry_count;
+	u8 service_timeout;
+	u8 target_ack_delay;
+
+	struct list_head prim_list;
+	struct list_head altr_list;
+	/* Indicates that the send port mad is registered and av is set */
+	int prim_send_port_not_ready;
+	int altr_send_port_not_ready;
+
+	struct list_head work_list;
+	atomic_t work_count;
+};
+
+static void cm_work_handler(struct work_struct *work);
+
+static inline void cm_deref_id(struct cm_id_private *cm_id_priv)
+{
+	if (atomic_dec_and_test(&cm_id_priv->refcount))
+		complete(&cm_id_priv->comp);
+}
+
+static int cm_alloc_msg(struct cm_id_private *cm_id_priv,
+			struct ib_mad_send_buf **msg)
+{
+	struct ib_mad_agent *mad_agent;
+	struct ib_mad_send_buf *m;
+	struct ib_ah *ah;
+	struct cm_av *av;
+	unsigned long flags, flags2;
+	int ret = 0;
+
+	/* don't let the port to be released till the agent is down */
+	spin_lock_irqsave(&cm.state_lock, flags2);
+	spin_lock_irqsave(&cm.lock, flags);
+	if (!cm_id_priv->prim_send_port_not_ready)
+		av = &cm_id_priv->av;
+	else if (!cm_id_priv->altr_send_port_not_ready &&
+		 (cm_id_priv->alt_av.port))
+		av = &cm_id_priv->alt_av;
+	else {
+		pr_info("%s: not valid CM id\n", __func__);
+		ret = -ENODEV;
+		spin_unlock_irqrestore(&cm.lock, flags);
+		goto out;
+	}
+	spin_unlock_irqrestore(&cm.lock, flags);
+	/* Make sure the port haven't released the mad yet */
+	mad_agent = cm_id_priv->av.port->mad_agent;
+	if (!mad_agent) {
+		pr_info("%s: not a valid MAD agent\n", __func__);
+		ret = -ENODEV;
+		goto out;
+	}
+	ah = ib_create_ah(mad_agent->qp->pd, &av->ah_attr);
+	if (IS_ERR(ah)) {
+		ret = PTR_ERR(ah);
+		goto out;
+	}
+
+	m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn,
+			       av->pkey_index,
+			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
+			       GFP_ATOMIC,
+			       IB_MGMT_BASE_VERSION);
+	if (IS_ERR(m)) {
+		ib_destroy_ah(ah);
+		ret = PTR_ERR(m);
+		goto out;
+	}
+
+	/* Timeout set by caller if response is expected. */
+	m->ah = ah;
+	m->retries = cm_id_priv->max_cm_retries;
+
+	atomic_inc(&cm_id_priv->refcount);
+	m->context[0] = cm_id_priv;
+	*msg = m;
+
+out:
+	spin_unlock_irqrestore(&cm.state_lock, flags2);
+	return ret;
+}
+
+static int cm_alloc_response_msg(struct cm_port *port,
+				 struct ib_mad_recv_wc *mad_recv_wc,
+				 struct ib_mad_send_buf **msg)
+{
+	struct ib_mad_send_buf *m;
+	struct ib_ah *ah;
+
+	ah = ib_create_ah_from_wc(port->mad_agent->qp->pd, mad_recv_wc->wc,
+				  mad_recv_wc->recv_buf.grh, port->port_num);
+	if (IS_ERR(ah))
+		return PTR_ERR(ah);
+
+	m = ib_create_send_mad(port->mad_agent, 1, mad_recv_wc->wc->pkey_index,
+			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
+			       GFP_ATOMIC,
+			       IB_MGMT_BASE_VERSION);
+	if (IS_ERR(m)) {
+		ib_destroy_ah(ah);
+		return PTR_ERR(m);
+	}
+	m->ah = ah;
+	*msg = m;
+	return 0;
+}
+
+static void cm_free_msg(struct ib_mad_send_buf *msg)
+{
+	ib_destroy_ah(msg->ah);
+	if (msg->context[0])
+		cm_deref_id(msg->context[0]);
+	ib_free_send_mad(msg);
+}
+
+static void * cm_copy_private_data(const void *private_data,
+				   u8 private_data_len)
+{
+	void *data;
+
+	if (!private_data || !private_data_len)
+		return NULL;
+
+	data = kmemdup(private_data, private_data_len, GFP_KERNEL);
+	if (!data)
+		return ERR_PTR(-ENOMEM);
+
+	return data;
+}
+
+static void cm_set_private_data(struct cm_id_private *cm_id_priv,
+				 void *private_data, u8 private_data_len)
+{
+	if (cm_id_priv->private_data && cm_id_priv->private_data_len)
+		kfree(cm_id_priv->private_data);
+
+	cm_id_priv->private_data = private_data;
+	cm_id_priv->private_data_len = private_data_len;
+}
+
+static void cm_init_av_for_response(struct cm_port *port, struct ib_wc *wc,
+				    struct ib_grh *grh, struct cm_av *av)
+{
+	av->port = port;
+	av->pkey_index = wc->pkey_index;
+	ib_init_ah_from_wc(port->cm_dev->ib_device, port->port_num, wc,
+			   grh, &av->ah_attr);
+}
+
+static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av,
+			      struct cm_id_private *cm_id_priv)
+{
+	struct cm_device *cm_dev;
+	struct cm_port *port = NULL;
+	unsigned long flags;
+	int ret;
+	u8 p;
+	struct net_device *ndev = ib_get_ndev_from_path(path);
+
+	read_lock_irqsave(&cm.device_lock, flags);
+	list_for_each_entry(cm_dev, &cm.device_list, list) {
+		if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
+					path->gid_type, ndev, &p, NULL)) {
+			port = cm_dev->port[p-1];
+			break;
+		}
+	}
+	read_unlock_irqrestore(&cm.device_lock, flags);
+
+	if (ndev)
+		dev_put(ndev);
+
+	if (!port)
+		return -EINVAL;
+
+	ret = ib_find_cached_pkey(cm_dev->ib_device, port->port_num,
+				  be16_to_cpu(path->pkey), &av->pkey_index);
+	if (ret)
+		return ret;
+
+	av->port = port;
+	ret = ib_init_ah_from_path(cm_dev->ib_device, port->port_num,
+				   path, &av->ah_attr);
+	if (ret)
+		return ret;
+
+	av->timeout = path->packet_life_time + 1;
+
+	spin_lock_irqsave(&cm.lock, flags);
+	if (&cm_id_priv->av == av)
+		list_add_tail(&cm_id_priv->prim_list, &port->cm_priv_prim_list);
+	else if (&cm_id_priv->alt_av == av)
+		list_add_tail(&cm_id_priv->altr_list, &port->cm_priv_altr_list);
+	else
+		ret = -EINVAL;
+
+	spin_unlock_irqrestore(&cm.lock, flags);
+
+	return ret;
+}
+
+static int cm_alloc_id(struct cm_id_private *cm_id_priv)
+{
+	unsigned long flags;
+	int id;
+
+	idr_preload(GFP_KERNEL);
+	spin_lock_irqsave(&cm.lock, flags);
+
+	id = idr_alloc_cyclic(&cm.local_id_table, cm_id_priv, 0, 0, GFP_NOWAIT);
+
+	spin_unlock_irqrestore(&cm.lock, flags);
+	idr_preload_end();
+
+	cm_id_priv->id.local_id = (__force __be32)id ^ cm.random_id_operand;
+	return id < 0 ? id : 0;
+}
+
+static void cm_free_id(__be32 local_id)
+{
+	spin_lock_irq(&cm.lock);
+	idr_remove(&cm.local_id_table,
+		   (__force int) (local_id ^ cm.random_id_operand));
+	spin_unlock_irq(&cm.lock);
+}
+
+static struct cm_id_private * cm_get_id(__be32 local_id, __be32 remote_id)
+{
+	struct cm_id_private *cm_id_priv;
+
+	cm_id_priv = idr_find(&cm.local_id_table,
+			      (__force int) (local_id ^ cm.random_id_operand));
+	if (cm_id_priv) {
+		if (cm_id_priv->id.remote_id == remote_id)
+			atomic_inc(&cm_id_priv->refcount);
+		else
+			cm_id_priv = NULL;
+	}
+
+	return cm_id_priv;
+}
+
+static struct cm_id_private * cm_acquire_id(__be32 local_id, __be32 remote_id)
+{
+	struct cm_id_private *cm_id_priv;
+
+	spin_lock_irq(&cm.lock);
+	cm_id_priv = cm_get_id(local_id, remote_id);
+	spin_unlock_irq(&cm.lock);
+
+	return cm_id_priv;
+}
+
+/*
+ * Trivial helpers to strip endian annotation and compare; the
+ * endianness doesn't actually matter since we just need a stable
+ * order for the RB tree.
+ */
+static int be32_lt(__be32 a, __be32 b)
+{
+	return (__force u32) a < (__force u32) b;
+}
+
+static int be32_gt(__be32 a, __be32 b)
+{
+	return (__force u32) a > (__force u32) b;
+}
+
+static int be64_lt(__be64 a, __be64 b)
+{
+	return (__force u64) a < (__force u64) b;
+}
+
+static int be64_gt(__be64 a, __be64 b)
+{
+	return (__force u64) a > (__force u64) b;
+}
+
+static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv)
+{
+	struct rb_node **link = &cm.listen_service_table.rb_node;
+	struct rb_node *parent = NULL;
+	struct cm_id_private *cur_cm_id_priv;
+	__be64 service_id = cm_id_priv->id.service_id;
+	__be64 service_mask = cm_id_priv->id.service_mask;
+
+	while (*link) {
+		parent = *link;
+		cur_cm_id_priv = rb_entry(parent, struct cm_id_private,
+					  service_node);
+		if ((cur_cm_id_priv->id.service_mask & service_id) ==
+		    (service_mask & cur_cm_id_priv->id.service_id) &&
+		    (cm_id_priv->id.device == cur_cm_id_priv->id.device))
+			return cur_cm_id_priv;
+
+		if (cm_id_priv->id.device < cur_cm_id_priv->id.device)
+			link = &(*link)->rb_left;
+		else if (cm_id_priv->id.device > cur_cm_id_priv->id.device)
+			link = &(*link)->rb_right;
+		else if (be64_lt(service_id, cur_cm_id_priv->id.service_id))
+			link = &(*link)->rb_left;
+		else if (be64_gt(service_id, cur_cm_id_priv->id.service_id))
+			link = &(*link)->rb_right;
+		else
+			link = &(*link)->rb_right;
+	}
+	rb_link_node(&cm_id_priv->service_node, parent, link);
+	rb_insert_color(&cm_id_priv->service_node, &cm.listen_service_table);
+	return NULL;
+}
+
+static struct cm_id_private * cm_find_listen(struct ib_device *device,
+					     __be64 service_id)
+{
+	struct rb_node *node = cm.listen_service_table.rb_node;
+	struct cm_id_private *cm_id_priv;
+
+	while (node) {
+		cm_id_priv = rb_entry(node, struct cm_id_private, service_node);
+		if ((cm_id_priv->id.service_mask & service_id) ==
+		     cm_id_priv->id.service_id &&
+		    (cm_id_priv->id.device == device))
+			return cm_id_priv;
+
+		if (device < cm_id_priv->id.device)
+			node = node->rb_left;
+		else if (device > cm_id_priv->id.device)
+			node = node->rb_right;
+		else if (be64_lt(service_id, cm_id_priv->id.service_id))
+			node = node->rb_left;
+		else if (be64_gt(service_id, cm_id_priv->id.service_id))
+			node = node->rb_right;
+		else
+			node = node->rb_right;
+	}
+	return NULL;
+}
+
+static struct cm_timewait_info * cm_insert_remote_id(struct cm_timewait_info
+						     *timewait_info)
+{
+	struct rb_node **link = &cm.remote_id_table.rb_node;
+	struct rb_node *parent = NULL;
+	struct cm_timewait_info *cur_timewait_info;
+	__be64 remote_ca_guid = timewait_info->remote_ca_guid;
+	__be32 remote_id = timewait_info->work.remote_id;
+
+	while (*link) {
+		parent = *link;
+		cur_timewait_info = rb_entry(parent, struct cm_timewait_info,
+					     remote_id_node);
+		if (be32_lt(remote_id, cur_timewait_info->work.remote_id))
+			link = &(*link)->rb_left;
+		else if (be32_gt(remote_id, cur_timewait_info->work.remote_id))
+			link = &(*link)->rb_right;
+		else if (be64_lt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
+			link = &(*link)->rb_left;
+		else if (be64_gt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
+			link = &(*link)->rb_right;
+		else
+			return cur_timewait_info;
+	}
+	timewait_info->inserted_remote_id = 1;
+	rb_link_node(&timewait_info->remote_id_node, parent, link);
+	rb_insert_color(&timewait_info->remote_id_node, &cm.remote_id_table);
+	return NULL;
+}
+
+static struct cm_timewait_info * cm_find_remote_id(__be64 remote_ca_guid,
+						   __be32 remote_id)
+{
+	struct rb_node *node = cm.remote_id_table.rb_node;
+	struct cm_timewait_info *timewait_info;
+
+	while (node) {
+		timewait_info = rb_entry(node, struct cm_timewait_info,
+					 remote_id_node);
+		if (be32_lt(remote_id, timewait_info->work.remote_id))
+			node = node->rb_left;
+		else if (be32_gt(remote_id, timewait_info->work.remote_id))
+			node = node->rb_right;
+		else if (be64_lt(remote_ca_guid, timewait_info->remote_ca_guid))
+			node = node->rb_left;
+		else if (be64_gt(remote_ca_guid, timewait_info->remote_ca_guid))
+			node = node->rb_right;
+		else
+			return timewait_info;
+	}
+	return NULL;
+}
+
+static struct cm_timewait_info * cm_insert_remote_qpn(struct cm_timewait_info
+						      *timewait_info)
+{
+	struct rb_node **link = &cm.remote_qp_table.rb_node;
+	struct rb_node *parent = NULL;
+	struct cm_timewait_info *cur_timewait_info;
+	__be64 remote_ca_guid = timewait_info->remote_ca_guid;
+	__be32 remote_qpn = timewait_info->remote_qpn;
+
+	while (*link) {
+		parent = *link;
+		cur_timewait_info = rb_entry(parent, struct cm_timewait_info,
+					     remote_qp_node);
+		if (be32_lt(remote_qpn, cur_timewait_info->remote_qpn))
+			link = &(*link)->rb_left;
+		else if (be32_gt(remote_qpn, cur_timewait_info->remote_qpn))
+			link = &(*link)->rb_right;
+		else if (be64_lt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
+			link = &(*link)->rb_left;
+		else if (be64_gt(remote_ca_guid, cur_timewait_info->remote_ca_guid))
+			link = &(*link)->rb_right;
+		else
+			return cur_timewait_info;
+	}
+	timewait_info->inserted_remote_qp = 1;
+	rb_link_node(&timewait_info->remote_qp_node, parent, link);
+	rb_insert_color(&timewait_info->remote_qp_node, &cm.remote_qp_table);
+	return NULL;
+}
+
+static struct cm_id_private * cm_insert_remote_sidr(struct cm_id_private
+						    *cm_id_priv)
+{
+	struct rb_node **link = &cm.remote_sidr_table.rb_node;
+	struct rb_node *parent = NULL;
+	struct cm_id_private *cur_cm_id_priv;
+	union ib_gid *port_gid = &cm_id_priv->av.dgid;
+	__be32 remote_id = cm_id_priv->id.remote_id;
+
+	while (*link) {
+		parent = *link;
+		cur_cm_id_priv = rb_entry(parent, struct cm_id_private,
+					  sidr_id_node);
+		if (be32_lt(remote_id, cur_cm_id_priv->id.remote_id))
+			link = &(*link)->rb_left;
+		else if (be32_gt(remote_id, cur_cm_id_priv->id.remote_id))
+			link = &(*link)->rb_right;
+		else {
+			int cmp;
+			cmp = memcmp(port_gid, &cur_cm_id_priv->av.dgid,
+				     sizeof *port_gid);
+			if (cmp < 0)
+				link = &(*link)->rb_left;
+			else if (cmp > 0)
+				link = &(*link)->rb_right;
+			else
+				return cur_cm_id_priv;
+		}
+	}
+	rb_link_node(&cm_id_priv->sidr_id_node, parent, link);
+	rb_insert_color(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table);
+	return NULL;
+}
+
+static void cm_reject_sidr_req(struct cm_id_private *cm_id_priv,
+			       enum ib_cm_sidr_status status)
+{
+	struct ib_cm_sidr_rep_param param;
+
+	memset(&param, 0, sizeof param);
+	param.status = status;
+	ib_send_cm_sidr_rep(&cm_id_priv->id, &param);
+}
+
+struct ib_cm_id *ib_create_cm_id(struct ib_device *device,
+				 ib_cm_handler cm_handler,
+				 void *context)
+{
+	struct cm_id_private *cm_id_priv;
+	int ret;
+
+	cm_id_priv = kzalloc(sizeof *cm_id_priv, GFP_KERNEL);
+	if (!cm_id_priv)
+		return ERR_PTR(-ENOMEM);
+
+	cm_id_priv->id.state = IB_CM_IDLE;
+	cm_id_priv->id.device = device;
+	cm_id_priv->id.cm_handler = cm_handler;
+	cm_id_priv->id.context = context;
+	cm_id_priv->id.remote_cm_qpn = 1;
+	ret = cm_alloc_id(cm_id_priv);
+	if (ret)
+		goto error;
+
+	spin_lock_init(&cm_id_priv->lock);
+	init_completion(&cm_id_priv->comp);
+	INIT_LIST_HEAD(&cm_id_priv->work_list);
+	INIT_LIST_HEAD(&cm_id_priv->prim_list);
+	INIT_LIST_HEAD(&cm_id_priv->altr_list);
+	atomic_set(&cm_id_priv->work_count, -1);
+	atomic_set(&cm_id_priv->refcount, 1);
+	return &cm_id_priv->id;
+
+error:
+	kfree(cm_id_priv);
+	return ERR_PTR(-ENOMEM);
+}
+EXPORT_SYMBOL(ib_create_cm_id);
+
+static struct cm_work * cm_dequeue_work(struct cm_id_private *cm_id_priv)
+{
+	struct cm_work *work;
+
+	if (list_empty(&cm_id_priv->work_list))
+		return NULL;
+
+	work = list_entry(cm_id_priv->work_list.next, struct cm_work, list);
+	list_del(&work->list);
+	return work;
+}
+
+static void cm_free_work(struct cm_work *work)
+{
+	if (work->mad_recv_wc)
+		ib_free_recv_mad(work->mad_recv_wc);
+	kfree(work);
+}
+
+static inline int cm_convert_to_ms(int iba_time)
+{
+	/* approximate conversion to ms from 4.096us x 2^iba_time */
+	return 1 << max(iba_time - 8, 0);
+}
+

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

From owner-svn-src-projects@freebsd.org  Mon Jul  3 13:41:07 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3FD319E715E
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Mon,  3 Jul 2017 13:41:07 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 09FC370D43;
 Mon,  3 Jul 2017 13:41:06 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v63Df6Ka017040;
 Mon, 3 Jul 2017 13:41:06 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v63Df6bm017039;
 Mon, 3 Jul 2017 13:41:06 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201707031341.v63Df6bm017039@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Mon, 3 Jul 2017 13:41:06 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320597 -
 projects/clang500-import/contrib/llvm/tools/lld/ELF
X-SVN-Group: projects
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: projects/clang500-import/contrib/llvm/tools/lld/ELF
X-SVN-Commit-Revision: 320597
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 13:41:07 -0000

Author: emaste
Date: Mon Jul  3 13:41:05 2017
New Revision: 320597
URL: https://svnweb.freebsd.org/changeset/base/320597

Log:
  Revert LLVM r306813: Resolve references properly when using .symver
  
  This LLD commit was intended to fix one case of symbol versioning
  (LLVM PR28414) but broke FreeBSD buildworld.  It has been reverted
  upstream in LLVM r306996.
  
  Discussed with:	dim

Modified:
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp

Modified: projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
==============================================================================
--- projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp	Mon Jul  3 13:02:21 2017	(r320596)
+++ projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp	Mon Jul  3 13:41:05 2017	(r320597)
@@ -712,31 +712,15 @@ void SymbolTable<ELFT>::assignWildcardVersion(SymbolVe
       B->symbol()->VersionId = VersionId;
 }
 
-static bool isDefaultVersion(SymbolBody *B) {
-  return B->isInCurrentDSO() && B->getName().find("@@") != StringRef::npos;
-}
-
 // This function processes version scripts by updating VersionId
 // member of symbols.
 template <class ELFT> void SymbolTable<ELFT>::scanVersionScript() {
   // Symbol themselves might know their versions because symbols
   // can contain versions in the form of <name>@<version>.
-  // Let them parse and update their names to exclude version suffix.
-  for (Symbol *Sym : SymVector) {
-    SymbolBody *Body = Sym->body();
-    bool IsDefault = isDefaultVersion(Body);
-    Body->parseSymbolVersion();
-
-    if (!IsDefault)
-      continue;
-
-    // <name>@@<version> means the symbol is the default version. If that's the
-    // case, the symbol is not used only to resolve <name> of version <version>
-    // but also undefined unversioned symbols with name <name>.
-    SymbolBody *S = find(Body->getName());
-    if (S && S->isUndefined())
-      S->copy(Body);
-  }
+  // Let them parse their names.
+  if (!Config->VersionDefinitions.empty())
+    for (Symbol *Sym : SymVector)
+      Sym->body()->parseSymbolVersion();
 
   // Handle edge cases first.
   handleAnonymousVersion();

From owner-svn-src-projects@freebsd.org  Tue Jul  4 17:32:52 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 65AA5D96915
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue,  4 Jul 2017 17:32:52 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 3458181D0A;
 Tue,  4 Jul 2017 17:32:52 +0000 (UTC)
 (envelope-from emaste@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v64HWpgX023627;
 Tue, 4 Jul 2017 17:32:51 GMT (envelope-from emaste@FreeBSD.org)
Received: (from emaste@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v64HWp0u023626;
 Tue, 4 Jul 2017 17:32:51 GMT (envelope-from emaste@FreeBSD.org)
Message-Id: <201707041732.v64HWp0u023626@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: emaste set sender to
 emaste@FreeBSD.org using -f
From: Ed Maste <emaste@FreeBSD.org>
Date: Tue, 4 Jul 2017 17:32:51 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320649 -
 projects/clang500-import/contrib/llvm/tools/lld/ELF
X-SVN-Group: projects
X-SVN-Commit-Author: emaste
X-SVN-Commit-Paths: projects/clang500-import/contrib/llvm/tools/lld/ELF
X-SVN-Commit-Revision: 320649
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Jul 2017 17:32:52 -0000

Author: emaste
Date: Tue Jul  4 17:32:51 2017
New Revision: 320649
URL: https://svnweb.freebsd.org/changeset/base/320649

Log:
  lld: [ELF] Remove unused synthetic sections from script commands
  
  Script commands are processed before unused synthetic sections are
  removed. Therefore, if a linker script matches one of these sections
  it'll get emitted as an empty output section because the logic for
  removing unused synthetic sections ignores script commands which
  could have already matched and captured one of these sections. This
  patch fixes that by also removing the unused synthetic sections from
  the script commands.
  
  Discussed with:	dim
  Obtained from:	LLVM r307037
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp

Modified: projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp
==============================================================================
--- projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp	Tue Jul  4 17:15:23 2017	(r320648)
+++ projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp	Tue Jul  4 17:32:51 2017	(r320649)
@@ -1149,8 +1149,17 @@ static void removeUnusedSyntheticSections(std::vector<
     SS->Live = false;
     // If there are no other sections in the output section, remove it from the
     // output.
-    if (OS->Sections.empty())
+    if (OS->Sections.empty()) {
       V.erase(std::find(V.begin(), V.end(), OS));
+      // Also remove script commands matching the output section.
+      auto &Cmds = Script->Opt.Commands;
+      auto I = std::remove_if(Cmds.begin(), Cmds.end(), [&](BaseCommand *Cmd) {
+        if (auto *OSCmd = dyn_cast<OutputSectionCommand>(Cmd))
+          return OSCmd->Sec == OS;
+        return false;
+      });
+      Cmds.erase(I, Cmds.end());
+    }
   }
 }
 

From owner-svn-src-projects@freebsd.org  Tue Jul  4 23:02:13 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5FD72D9CC04
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue,  4 Jul 2017 23:02:13 +0000 (UTC)
 (envelope-from rmacklem@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 3C952662F3;
 Tue,  4 Jul 2017 23:02:13 +0000 (UTC)
 (envelope-from rmacklem@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v64N2Cxv059202;
 Tue, 4 Jul 2017 23:02:12 GMT (envelope-from rmacklem@FreeBSD.org)
Received: (from rmacklem@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v64N2CVa059200;
 Tue, 4 Jul 2017 23:02:12 GMT (envelope-from rmacklem@FreeBSD.org)
Message-Id: <201707042302.v64N2CVa059200@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to
 rmacklem@FreeBSD.org using -f
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Tue, 4 Jul 2017 23:02:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320660 - projects/pnfs-planb-server/usr.sbin/nfsd
X-SVN-Group: projects
X-SVN-Commit-Author: rmacklem
X-SVN-Commit-Paths: projects/pnfs-planb-server/usr.sbin/nfsd
X-SVN-Commit-Revision: 320660
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Jul 2017 23:02:13 -0000

Author: rmacklem
Date: Tue Jul  4 23:02:12 2017
New Revision: 320660
URL: https://svnweb.freebsd.org/changeset/base/320660

Log:
  Add a pnfs.4 man page.

Added:
  projects/pnfs-planb-server/usr.sbin/nfsd/pnfs.4   (contents, props changed)
Modified:
  projects/pnfs-planb-server/usr.sbin/nfsd/Makefile

Modified: projects/pnfs-planb-server/usr.sbin/nfsd/Makefile
==============================================================================
--- projects/pnfs-planb-server/usr.sbin/nfsd/Makefile	Tue Jul  4 22:20:30 2017	(r320659)
+++ projects/pnfs-planb-server/usr.sbin/nfsd/Makefile	Tue Jul  4 23:02:12 2017	(r320660)
@@ -2,6 +2,6 @@
 # $FreeBSD$
 
 PROG=	nfsd
-MAN=	nfsd.8 nfsv4.4 stablerestart.5
+MAN=	nfsd.8 nfsv4.4 stablerestart.5 pnfs.4
 
 .include <bsd.prog.mk>

Added: projects/pnfs-planb-server/usr.sbin/nfsd/pnfs.4
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/pnfs-planb-server/usr.sbin/nfsd/pnfs.4	Tue Jul  4 23:02:12 2017	(r320660)
@@ -0,0 +1,165 @@
+.\" Copyright (c) 2017 Rick Macklem
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 2, 2017
+.Dt PNFS 4
+.Os
+.Sh NAME
+.Nm pNFS
+.Nd NFS Version 4.1 Parallel NFS Protocol
+.Sh DESCRIPTION
+The NFSv4.1 client and server provides support for the
+.Tn pNFS
+specification; see
+.%T "Network File System (NFS) Version 4 Minor Version 1 Protocol RFC 5661" .
+A pNFS service separates the Read/Write operations from all other NFSv4.1
+operations, which are referred to as Metadata operations.
+The Read/Write operations are performed directly on the Data Server (DS)
+where the file's data resides, bypassing the NFS server.
+All other operations are performed on the NFS server, which is referred to
+as a Metadata Server (MDS).
+NFS clients that do not support
+.Tn pNFS
+perform Read/Write operations on the MDS, which acts as a proxy for the
+appropriate DS.
+.Pp
+A FreeBSD pNFS service consists of a single MDS server plus one or more
+DS servers, all of which are FreeBSD systems.
+.Tn pNFS
+clients mount the MDS as they would a single NFS server.
+.Pp
+A
+.Tn pNFS
+client must be running the
+.Xr nfscbd 8
+daemon and use the mount options ''nfsv4,minorversion=1,pnfs''.
+.Pp
+A pNFS DS server must be configured as a NFSv4.1 server, where there is an
+exported directory with subdirectories named ds0, ds1, ..., ds<N> created
+in it.
+For example, if the exported directory is /ds and the number of subdirectories is 20, the subdirectories are named
+/ds/ds0, /ds/ds1, ..., /ds/ds19.
+This exported directory is the one that the MDS will mount via NFSv4.1 to use as
+a DS.
+The subdirectories are created simply to reduce the size of the directories
+by spreading the data storage files across them.
+If the
+.Tn pNFS
+service will be storing a large number of files, the service should be
+configured with a large number of subdirectories.
+There really is no disadvantage in having a large number of subdirectories,
+so sysadmins should err on the side of creating many of them.
+Each of these subdirectories must be owned by the <user> that the -maproot
+.Xr exports 5
+option maps to, since the MDS accesses these directories as <root>.
+These directories should have file mode 0700, so that only the <user> mapped
+for <root> has access to them.
+See
+.Xr exports 5
+for more information on this.
+These subdirectories must be created by the sysadmin on all DS servers before
+the
+.Tn pNFS
+service is started.
+.Pp
+The sysctl
+.sp
+.Bd -literal -offset indent
+vfs.nfsd.dsdirsize
+.Ed
+.Pp
+defines the number of subdirectories named ds0, ds1, ... , ds<N>, where N is
+vfs.nfsd.dsdirsize - 1, with the default set to 20.
+The number of subdirectories can be increased after the server has been
+running, but only when the
+.Xr nfsd 8
+daemon is not running.
+.Pp
+When files are created, the MDS creates a file tree identical to what a
+single NFS server creates, except that all the regular (VREG) files will
+be empty.
+As such, if you look at the exported tree on the MDS directly
+on the MDS server (not via an NFS mount), the files will all be of size zero.
+Each of these files will also have two extended attributes in the system
+attribute name space:
+.sp
+.Bd -literal -offset indent
+pnfsd.dsfile - This extended attrbute stores the information that the
+    MDS needs to find the data storage file on a DS for this file.
+pnfsd.dsattr - This extended attribute stores the Size, AccessTime,
+    ModifyTime and Change attributes for the file.
+.Ed
+.Pp
+For each regular (VREG) file, the MDS creates a data storage file on one
+of the DSs, in one of the ds<N> subdirectories of the exported DS directory.
+The name of this file is
+the file handle of the file on the MDS in hexadecimal at time of creation.
+.Pp
+For
+.Tn pNFS
+clients, the service generates File Layout layouts and associated DeviceInfo.
+For NFS clients that do not support NFSv4.1 pNFS, there will be a performance
+hit, since the I/O RPCs will be proxied by the MDS for the DS server the
+data storage file resides on.
+.Pp
+Configuration of a DS is done exactly as any other NFS server is configured,
+with the data storage directory exported to the MDS.
+.Pp
+The MDS is configured to mount the data storage directories of the DSs.
+For example, if there are 2 DSs named nfsv4-ds0 and nfsv4-ds1 and both of
+these have a /ds directory exported to the MDS, the
+.Xr fstab 5
+entries might be:
+.sp
+.Bd -literal -offset indent
+nfsv4-ds0:/ds	/ds0	nfs	rw,nfsv4,minorversion=1	0	0
+nfsv4-ds1:/ds	/ds1	nfs	rw,nfsv4,minorversion=1	0	0
+.Ed
+.Pp
+The MDS will require a "-p" flag option specifying the DSs. For the above
+mounts, the nfs_server_flags entry in
+.Xr rc.conf 5
+might be:
+.sp
+.Bd -literal -offset indent
+nfs_server_flags="-u -t -n 256 -p nfsv4-ds0:/ds0,nfsv4-ds1:/ds1"
+.Ed
+.Pp
+Note that the "-p" flag requires the "mounted-on" directory path on the MDS.
+.Sh SEE ALSO
+.Xr pnfsdsfile 1 ,
+.Xr nfsv4 4 ,
+.Xr exports 5 ,
+.Xr fstab 5 ,
+.Xr rc.conf 5 ,
+.Xr nfscbd 8 ,
+.Xr nfsd 8 ,
+.Xr nfsuserd 8
+.Sh BUGS
+At this time, there is no support for DS mirroring.
+As such, the MDS plus all DS servers are single points of failure for the
+.Tn pNFS
+service.

From owner-svn-src-projects@freebsd.org  Tue Jul  4 23:04:31 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 484E3D9CC40
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Tue,  4 Jul 2017 23:04:31 +0000 (UTC)
 (envelope-from rmacklem@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 1C1A166413;
 Tue,  4 Jul 2017 23:04:31 +0000 (UTC)
 (envelope-from rmacklem@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v64N4Uuc059329;
 Tue, 4 Jul 2017 23:04:30 GMT (envelope-from rmacklem@FreeBSD.org)
Received: (from rmacklem@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v64N4U2p059327;
 Tue, 4 Jul 2017 23:04:30 GMT (envelope-from rmacklem@FreeBSD.org)
Message-Id: <201707042304.v64N4U2p059327@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to
 rmacklem@FreeBSD.org using -f
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Tue, 4 Jul 2017 23:04:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320661 -
 projects/pnfs-planb-server-stable11/usr.sbin/nfsd
X-SVN-Group: projects
X-SVN-Commit-Author: rmacklem
X-SVN-Commit-Paths: projects/pnfs-planb-server-stable11/usr.sbin/nfsd
X-SVN-Commit-Revision: 320661
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 04 Jul 2017 23:04:31 -0000

Author: rmacklem
Date: Tue Jul  4 23:04:29 2017
New Revision: 320661
URL: https://svnweb.freebsd.org/changeset/base/320661

Log:
  Add a pnfs.4 man page.

Added:
  projects/pnfs-planb-server-stable11/usr.sbin/nfsd/pnfs.4   (contents, props changed)
Modified:
  projects/pnfs-planb-server-stable11/usr.sbin/nfsd/Makefile

Modified: projects/pnfs-planb-server-stable11/usr.sbin/nfsd/Makefile
==============================================================================
--- projects/pnfs-planb-server-stable11/usr.sbin/nfsd/Makefile	Tue Jul  4 23:02:12 2017	(r320660)
+++ projects/pnfs-planb-server-stable11/usr.sbin/nfsd/Makefile	Tue Jul  4 23:04:29 2017	(r320661)
@@ -2,6 +2,6 @@
 # $FreeBSD$
 
 PROG=	nfsd
-MAN=	nfsd.8 nfsv4.4 stablerestart.5
+MAN=	nfsd.8 nfsv4.4 stablerestart.5 pnfs.4
 
 .include <bsd.prog.mk>

Added: projects/pnfs-planb-server-stable11/usr.sbin/nfsd/pnfs.4
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/pnfs-planb-server-stable11/usr.sbin/nfsd/pnfs.4	Tue Jul  4 23:04:29 2017	(r320661)
@@ -0,0 +1,165 @@
+.\" Copyright (c) 2017 Rick Macklem
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 2, 2017
+.Dt PNFS 4
+.Os
+.Sh NAME
+.Nm pNFS
+.Nd NFS Version 4.1 Parallel NFS Protocol
+.Sh DESCRIPTION
+The NFSv4.1 client and server provides support for the
+.Tn pNFS
+specification; see
+.%T "Network File System (NFS) Version 4 Minor Version 1 Protocol RFC 5661" .
+A pNFS service separates the Read/Write operations from all other NFSv4.1
+operations, which are referred to as Metadata operations.
+The Read/Write operations are performed directly on the Data Server (DS)
+where the file's data resides, bypassing the NFS server.
+All other operations are performed on the NFS server, which is referred to
+as a Metadata Server (MDS).
+NFS clients that do not support
+.Tn pNFS
+perform Read/Write operations on the MDS, which acts as a proxy for the
+appropriate DS.
+.Pp
+A FreeBSD pNFS service consists of a single MDS server plus one or more
+DS servers, all of which are FreeBSD systems.
+.Tn pNFS
+clients mount the MDS as they would a single NFS server.
+.Pp
+A
+.Tn pNFS
+client must be running the
+.Xr nfscbd 8
+daemon and use the mount options ''nfsv4,minorversion=1,pnfs''.
+.Pp
+A pNFS DS server must be configured as a NFSv4.1 server, where there is an
+exported directory with subdirectories named ds0, ds1, ..., ds<N> created
+in it.
+For example, if the exported directory is /ds and the number of subdirectories is 20, the subdirectories are named
+/ds/ds0, /ds/ds1, ..., /ds/ds19.
+This exported directory is the one that the MDS will mount via NFSv4.1 to use as
+a DS.
+The subdirectories are created simply to reduce the size of the directories
+by spreading the data storage files across them.
+If the
+.Tn pNFS
+service will be storing a large number of files, the service should be
+configured with a large number of subdirectories.
+There really is no disadvantage in having a large number of subdirectories,
+so sysadmins should err on the side of creating many of them.
+Each of these subdirectories must be owned by the <user> that the -maproot
+.Xr exports 5
+option maps to, since the MDS accesses these directories as <root>.
+These directories should have file mode 0700, so that only the <user> mapped
+for <root> has access to them.
+See
+.Xr exports 5
+for more information on this.
+These subdirectories must be created by the sysadmin on all DS servers before
+the
+.Tn pNFS
+service is started.
+.Pp
+The sysctl
+.sp
+.Bd -literal -offset indent
+vfs.nfsd.dsdirsize
+.Ed
+.Pp
+defines the number of subdirectories named ds0, ds1, ... , ds<N>, where N is
+vfs.nfsd.dsdirsize - 1, with the default set to 20.
+The number of subdirectories can be increased after the server has been
+running, but only when the
+.Xr nfsd 8
+daemon is not running.
+.Pp
+When files are created, the MDS creates a file tree identical to what a
+single NFS server creates, except that all the regular (VREG) files will
+be empty.
+As such, if you look at the exported tree on the MDS directly
+on the MDS server (not via an NFS mount), the files will all be of size zero.
+Each of these files will also have two extended attributes in the system
+attribute name space:
+.sp
+.Bd -literal -offset indent
+pnfsd.dsfile - This extended attrbute stores the information that the
+    MDS needs to find the data storage file on a DS for this file.
+pnfsd.dsattr - This extended attribute stores the Size, AccessTime,
+    ModifyTime and Change attributes for the file.
+.Ed
+.Pp
+For each regular (VREG) file, the MDS creates a data storage file on one
+of the DSs, in one of the ds<N> subdirectories of the exported DS directory.
+The name of this file is
+the file handle of the file on the MDS in hexadecimal at time of creation.
+.Pp
+For
+.Tn pNFS
+clients, the service generates File Layout layouts and associated DeviceInfo.
+For NFS clients that do not support NFSv4.1 pNFS, there will be a performance
+hit, since the I/O RPCs will be proxied by the MDS for the DS server the
+data storage file resides on.
+.Pp
+Configuration of a DS is done exactly as any other NFS server is configured,
+with the data storage directory exported to the MDS.
+.Pp
+The MDS is configured to mount the data storage directories of the DSs.
+For example, if there are 2 DSs named nfsv4-ds0 and nfsv4-ds1 and both of
+these have a /ds directory exported to the MDS, the
+.Xr fstab 5
+entries might be:
+.sp
+.Bd -literal -offset indent
+nfsv4-ds0:/ds	/ds0	nfs	rw,nfsv4,minorversion=1	0	0
+nfsv4-ds1:/ds	/ds1	nfs	rw,nfsv4,minorversion=1	0	0
+.Ed
+.Pp
+The MDS will require a "-p" flag option specifying the DSs. For the above
+mounts, the nfs_server_flags entry in
+.Xr rc.conf 5
+might be:
+.sp
+.Bd -literal -offset indent
+nfs_server_flags="-u -t -n 256 -p nfsv4-ds0:/ds0,nfsv4-ds1:/ds1"
+.Ed
+.Pp
+Note that the "-p" flag requires the "mounted-on" directory path on the MDS.
+.Sh SEE ALSO
+.Xr pnfsdsfile 1 ,
+.Xr nfsv4 4 ,
+.Xr exports 5 ,
+.Xr fstab 5 ,
+.Xr rc.conf 5 ,
+.Xr nfscbd 8 ,
+.Xr nfsd 8 ,
+.Xr nfsuserd 8
+.Sh BUGS
+At this time, there is no support for DS mirroring.
+As such, the MDS plus all DS servers are single points of failure for the
+.Tn pNFS
+service.

From owner-svn-src-projects@freebsd.org  Fri Jul  7 21:23:38 2017
Return-Path: <owner-svn-src-projects@freebsd.org>
Delivered-To: svn-src-projects@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id D64BADABC0D
 for <svn-src-projects@mailman.ysv.freebsd.org>;
 Fri,  7 Jul 2017 21:23:38 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
 [IPv6:2610:1c1:1:6068::e6a:0])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id 8D4493C8B;
 Fri,  7 Jul 2017 21:23:38 +0000 (UTC) (envelope-from cy@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v67LNbg0016556;
 Fri, 7 Jul 2017 21:23:37 GMT (envelope-from cy@FreeBSD.org)
Received: (from cy@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id v67LNb5U016555;
 Fri, 7 Jul 2017 21:23:37 GMT (envelope-from cy@FreeBSD.org)
Message-Id: <201707072123.v67LNb5U016555@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org
 using -f
From: Cy Schubert <cy@FreeBSD.org>
Date: Fri, 7 Jul 2017 21:23:37 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject: svn commit: r320793 - projects/krb5
X-SVN-Group: projects
X-SVN-Commit-Author: cy
X-SVN-Commit-Paths: projects/krb5
X-SVN-Commit-Revision: 320793
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
 tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects/>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
 <mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 07 Jul 2017 21:23:38 -0000

Author: cy
Date: Fri Jul  7 21:23:37 2017
New Revision: 320793
URL: https://svnweb.freebsd.org/changeset/base/320793

Log:
  Create a project for importing MIT KRB5 into base with the eventual goal
  of the graceful replacement KTH Heimdal.
  
  Discussed with:	pfg
  Thanks to:	pfg (for all your tireless behind-the-scenes effort)

Added:
     - copied from r320792, head/
Directory Properties:
  projects/krb5/   (props changed)