From owner-svn-src-projects@freebsd.org Sun Jul 2 11:41:19 2017 Return-Path: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 ] [-o ] [-t type] [-T ttl] -i [/netmask]\n"); + fprintf(stderr, "\t-a [-dnv] -m [-o ] [-t type] [-T ttl] -i [/netmask]\n"); fprintf(stderr, "\t-A [-dnv] [-m ] [-o ] [-S ] [-t ]\n"); fprintf(stderr, "\t-f [-dnuv]\n"); fprintf(stderr, "\t-F [-dv] [-o ] [-t ]\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 @@ This manual describes jemalloc @jemalloc_version@. More information can be found at the jemalloc website. @@ -10,7 +10,8 @@ index 21e401ac..f977c5f5 100644 + The following configuration options are enabled in libc's built-in + jemalloc: , + , , -+ , and . ++ , , and ++ . + Additionally, is enabled in development + versions of FreeBSD (controlled by the + MALLOC_PRODUCTION make variable). @@ -25,7 +26,7 @@ index 21e401ac..f977c5f5 100644 Standard API -@@ -3252,4 +3262,18 @@ malloc_conf = "narenas:1";]]> +@@ -3252,4 +3263,18 @@ malloc_conf = "narenas:1";]]> The posix_memalign() function conforms to IEEE Std 1003.1-2001 (POSIX.1). 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 -.\" 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 - contributor/co-maintainer +* Ngie Cooper - contributor/co-maintainer +* Pawel Jakub Dawidek - 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 +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 +================== +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 ]]) + 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 +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_birthtim, struct stat.st_birthtime, struct stat.st_birthtimespec], [], [], [[ +#include +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_ctim, struct stat.st_ctimespec], [], [], [[ +#include +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_mtim, struct stat.st_mtimespec], [], [], [[ +#include +#include +]]) + +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 -#include +#ifdef HAVE_SYS_ACL_H +#include +#endif +#ifdef HAVE_SYS_MKDEV_H +#include +#endif #include #include #include -#ifndef makedev -#include -#endif #include #include @@ -45,18 +50,15 @@ #include #include -#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 -#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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 +#else +#include +#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 +#else +#include +#endif enum { MLX5_QP_FLAG_SIGNATURE = 1 << 0, From owner-svn-src-projects@freebsd.org Mon Jul 3 08:32:53 2017 Return-Path: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 +#include + +#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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#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(¶m, 0, sizeof param); + param.status = status; + ib_send_cm_sidr_rep(&cm_id_priv->id, ¶m); +} + +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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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::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 void SymbolTable::scanVersionScript() { // Symbol themselves might know their versions because symbols // can contain versions in the form of @. - // 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; - - // @@ means the symbol is the default version. If that's the - // case, the symbol is not used only to resolve of version - // but also undefined unversioned symbols with 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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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(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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 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 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 that the -maproot +.Xr exports 5 +option maps to, since the MDS accesses these directories as . +These directories should have file mode 0700, so that only the mapped +for 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, 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 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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 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 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 that the -maproot +.Xr exports 5 +option maps to, since the MDS accesses these directories as . +These directories should have file mode 0700, so that only the mapped +for 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, 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 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: 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 ; 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 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 " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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)