From owner-svn-src-projects@FreeBSD.ORG Sun Jun 12 20:12:03 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19AA8106564A; Sun, 12 Jun 2011 20:12:03 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0626B8FC08; Sun, 12 Jun 2011 20:12:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CKC3qJ039540; Sun, 12 Jun 2011 20:12:03 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CKC2KO039507; Sun, 12 Jun 2011 20:12:02 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106122012.p5CKC2KO039507@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 12 Jun 2011 20:12:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223021 - in projects/llvm-ia64: bin/sh cddl/compat/opensolaris/include contrib/less contrib/llvm/include/llvm contrib/llvm/include/llvm-c contrib/llvm/include/llvm/ADT contrib/llvm/inc... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 12 Jun 2011 20:12:03 -0000 Author: marcel Date: Sun Jun 12 20:12:01 2011 New Revision: 223021 URL: http://svn.freebsd.org/changeset/base/223021 Log: Sync with head@223020 Added: projects/llvm-ia64/contrib/llvm/include/llvm/ADT/PackedVector.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/ADT/PackedVector.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/DefaultPasses.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/DefaultPasses.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCWin64EH.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/MC/MCWin64EH.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/BranchProbability.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/Support/BranchProbability.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/PassManagerBuilder.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/Support/PassManagerBuilder.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/Win64EH.h - copied unchanged from r223020, head/contrib/llvm/include/llvm/Support/Win64EH.h projects/llvm-ia64/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp - copied unchanged from r223020, head/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp - copied unchanged from r223020, head/contrib/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp - copied unchanged from r223020, head/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegisterClassInfo.h - copied unchanged from r223020, head/contrib/llvm/lib/CodeGen/RegisterClassInfo.h projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp - copied unchanged from r223020, head/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCWin64EH.cpp - copied unchanged from r223020, head/contrib/llvm/lib/MC/MCWin64EH.cpp projects/llvm-ia64/contrib/llvm/lib/Support/BranchProbability.cpp - copied unchanged from r223020, head/contrib/llvm/lib/Support/BranchProbability.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp - copied unchanged from r223020, head/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp - copied unchanged from r223020, head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/SetTheory.cpp - copied unchanged from r223020, head/contrib/llvm/utils/TableGen/SetTheory.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/SetTheory.h - copied unchanged from r223020, head/contrib/llvm/utils/TableGen/SetTheory.h projects/llvm-ia64/tools/regression/bin/sh/builtins/case6.0 - copied unchanged from r223020, head/tools/regression/bin/sh/builtins/case6.0 projects/llvm-ia64/tools/regression/bin/sh/builtins/case7.0 - copied unchanged from r223020, head/tools/regression/bin/sh/builtins/case7.0 projects/llvm-ia64/tools/regression/bin/sh/execution/set-x3.0 - copied unchanged from r223020, head/tools/regression/bin/sh/execution/set-x3.0 projects/llvm-ia64/tools/regression/bin/sh/parameters/env1.0 - copied unchanged from r223020, head/tools/regression/bin/sh/parameters/env1.0 projects/llvm-ia64/usr.sbin/bsdinstall/bsdinstall.8 - copied unchanged from r223020, head/usr.sbin/bsdinstall/bsdinstall.8 Deleted: projects/llvm-ia64/contrib/llvm/include/llvm/Support/StandardPasses.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfTableException.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/MCJIT/TargetSelect.cpp projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Tooling/Tooling.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/DiagChecker.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Tooling/Tooling.cpp Modified: projects/llvm-ia64/bin/sh/eval.c projects/llvm-ia64/bin/sh/expand.c projects/llvm-ia64/bin/sh/main.c projects/llvm-ia64/bin/sh/parser.c projects/llvm-ia64/bin/sh/parser.h projects/llvm-ia64/bin/sh/sh.1 projects/llvm-ia64/cddl/compat/opensolaris/include/assert.h projects/llvm-ia64/contrib/less/NEWS projects/llvm-ia64/contrib/less/README projects/llvm-ia64/contrib/less/command.c projects/llvm-ia64/contrib/less/funcs.h projects/llvm-ia64/contrib/less/less.man projects/llvm-ia64/contrib/less/less.nro projects/llvm-ia64/contrib/less/lessecho.man projects/llvm-ia64/contrib/less/lessecho.nro projects/llvm-ia64/contrib/less/lesskey.man projects/llvm-ia64/contrib/less/lesskey.nro projects/llvm-ia64/contrib/less/optfunc.c projects/llvm-ia64/contrib/less/opttbl.c projects/llvm-ia64/contrib/less/version.c projects/llvm-ia64/contrib/llvm/include/llvm-c/Core.h projects/llvm-ia64/contrib/llvm/include/llvm-c/Disassembler.h projects/llvm-ia64/contrib/llvm/include/llvm/ADT/FoldingSet.h projects/llvm-ia64/contrib/llvm/include/llvm/ADT/StringRef.h projects/llvm-ia64/contrib/llvm/include/llvm/ADT/Triple.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/CallGraph.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DIBuilder.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DebugInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/IVUsers.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/RegionPass.h projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h projects/llvm-ia64/contrib/llvm/include/llvm/Argument.h projects/llvm-ia64/contrib/llvm/include/llvm/Attributes.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/FastISel.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/LiveInterval.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/MachineInstr.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/MachineOperand.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/PseudoSourceValue.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/RegAllocPBQP.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/ScheduleDAG.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/llvm-ia64/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h projects/llvm-ia64/contrib/llvm/include/llvm/CompilerDriver/Common.td projects/llvm-ia64/contrib/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h projects/llvm-ia64/contrib/llvm/include/llvm/Function.h projects/llvm-ia64/contrib/llvm/include/llvm/InitializePasses.h projects/llvm-ia64/contrib/llvm/include/llvm/IntrinsicInst.h projects/llvm-ia64/contrib/llvm/include/llvm/Intrinsics.td projects/llvm-ia64/contrib/llvm/include/llvm/IntrinsicsARM.td projects/llvm-ia64/contrib/llvm/include/llvm/IntrinsicsX86.td projects/llvm-ia64/contrib/llvm/include/llvm/IntrinsicsXCore.td projects/llvm-ia64/contrib/llvm/include/llvm/LinkAllPasses.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCAsmInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCDwarf.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCELFSymbolFlags.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCExpr.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCInstPrinter.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCParser/MCAsmParser.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h projects/llvm-ia64/contrib/llvm/include/llvm/MC/MCStreamer.h projects/llvm-ia64/contrib/llvm/include/llvm/Metadata.h projects/llvm-ia64/contrib/llvm/include/llvm/Operator.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/Casting.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/CrashRecoveryContext.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/Dwarf.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/IRBuilder.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/MemoryBuffer.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/PatternMatch.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/Program.h projects/llvm-ia64/contrib/llvm/include/llvm/Support/SourceMgr.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/Target.td projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetAsmInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetInstrItineraries.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetLowering.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetLoweringObjectFile.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetOptions.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h projects/llvm-ia64/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td projects/llvm-ia64/contrib/llvm/include/llvm/Transforms/Instrumentation.h projects/llvm-ia64/contrib/llvm/include/llvm/Transforms/Utils/Local.h projects/llvm-ia64/contrib/llvm/include/llvm/Transforms/Utils/SSAUpdater.h projects/llvm-ia64/contrib/llvm/include/llvm/Type.h projects/llvm-ia64/contrib/llvm/lib/Analysis/Analysis.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/ConstantFolding.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/DIBuilder.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/IPA/CallGraph.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/IPA/FindUsedTypes.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/IVUsers.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/InlineCost.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/LazyValueInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/Loads.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/RegionPass.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/llvm-ia64/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/llvm-ia64/contrib/llvm/lib/AsmParser/LLLexer.cpp projects/llvm-ia64/contrib/llvm/lib/AsmParser/LLLexer.h projects/llvm-ia64/contrib/llvm/lib/AsmParser/LLParser.cpp projects/llvm-ia64/contrib/llvm/lib/AsmParser/LLToken.h projects/llvm-ia64/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp projects/llvm-ia64/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp projects/llvm-ia64/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AllocationOrder.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AllocationOrder.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AntiDepBreaker.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/ARMException.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfException.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/BranchFolding.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/CalcSpillWeights.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/CallingConvLower.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/IfConversion.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/InlineSpiller.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/LiveDebugVariables.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/LiveRangeEdit.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/LiveRangeEdit.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/MachineFunction.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/MachineRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/MachineVerifier.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegAllocBase.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegAllocBasic.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegAllocFast.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SplitKit.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/SplitKit.h projects/llvm-ia64/contrib/llvm/lib/CodeGen/TailDuplication.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/TargetInstrInfoImpl.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/UnreachableBlockElim.cpp projects/llvm-ia64/contrib/llvm/lib/CodeGen/VirtRegMap.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/ExecutionEngine.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/JIT/JIT.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/JIT/JIT.h projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h projects/llvm-ia64/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp projects/llvm-ia64/contrib/llvm/lib/MC/ELFObjectWriter.cpp projects/llvm-ia64/contrib/llvm/lib/MC/ELFObjectWriter.h projects/llvm-ia64/contrib/llvm/lib/MC/MCAsmInfo.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCAsmInfoDarwin.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCAsmStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCAssembler.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCDisassembler/Disassembler.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCDwarf.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCELF.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCELFStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCExpr.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCInstPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCMachOStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCObjectStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCParser/AsmLexer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCParser/AsmParser.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCParser/COFFAsmParser.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCParser/DarwinAsmParser.cpp projects/llvm-ia64/contrib/llvm/lib/MC/MCStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/MC/WinCOFFStreamer.cpp projects/llvm-ia64/contrib/llvm/lib/Support/APInt.cpp projects/llvm-ia64/contrib/llvm/lib/Support/Dwarf.cpp projects/llvm-ia64/contrib/llvm/lib/Support/FoldingSet.cpp projects/llvm-ia64/contrib/llvm/lib/Support/Host.cpp projects/llvm-ia64/contrib/llvm/lib/Support/MemoryBuffer.cpp projects/llvm-ia64/contrib/llvm/lib/Support/SourceMgr.cpp projects/llvm-ia64/contrib/llvm/lib/Support/Unix/Host.inc projects/llvm-ia64/contrib/llvm/lib/Support/Unix/Program.inc projects/llvm-ia64/contrib/llvm/lib/Support/Windows/Program.inc projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMAsmBackend.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMCodeEmitter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMFixupKinds.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMMCAsmInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMPerfectShuffle.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h projects/llvm-ia64/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/CBackend/CBackend.cpp projects/llvm-ia64/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/Mips/Mips.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsFrameLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsFrameLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsInstrInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsMCAsmInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsMachineFunction.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Mips/MipsTargetMachine.h projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTX.td projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXSubtarget.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PTX/PTXSubtarget.h projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPC.h projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/TargetLibraryInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/TargetLoweringObjectFile.cpp projects/llvm-ia64/contrib/llvm/lib/Target/TargetMachine.cpp projects/llvm-ia64/contrib/llvm/lib/Target/TargetRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h projects/llvm-ia64/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86FastISel.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrCompiler.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrExtension.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrMMX.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86MCAsmInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86RegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86RegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/X86/X86Subtarget.cpp projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.td projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.h projects/llvm-ia64/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.td projects/llvm-ia64/contrib/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/IPO/ExtractGV.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/IPO/PruneEH.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombine.h projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Instrumentation/PathProfiling.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/GVN.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/LICM.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp projects/llvm-ia64/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/Attributes.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/AutoUpgrade.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/DebugInfoProbe.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/Function.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/IRBuilder.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/InlineAsm.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/Instructions.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/PassManager.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/Type.cpp projects/llvm-ia64/contrib/llvm/lib/VMCore/Verifier.cpp projects/llvm-ia64/contrib/llvm/tools/clang/include/clang-c/Index.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/APValue.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/CanonicalType.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/DeclObjC.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/Expr.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/StmtVisitor.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/Type.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/AST/TypeNodes.def projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationType.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/IdentifierTable.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/SourceLocation.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/TypeTraits.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Driver/CC1AsOptions.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticOptions.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/LangStandard.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOptions.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Lex/LiteralSupport.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/CodeCompleteConsumer.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Overload.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Scope.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Sema/Template.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/Checker.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/GRState.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ObjCMessage.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h projects/llvm-ia64/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/APValue.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/Decl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/DumpXML.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/Expr.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/Mangle.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/Type.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Analysis/AnalysisContext.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Analysis/CocoaConventions.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Analysis/LiveVariables.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/FileManager.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGCall.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGVTT.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/ModuleBuilder.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/ToolChains.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/Tools.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Driver/Tools.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/ASTConsumers.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Frontend/Warnings.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Headers/emmintrin.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Headers/mmintrin.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Index/CallGraph.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Index/Indexer.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/JumpDiagnostics.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaCXXCast.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaTemplateVariadic.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicStore.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicValueFactory.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CFRefCount.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CXXExprEngine.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Environment.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/FlatStore.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/GRState.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp projects/llvm-ia64/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp projects/llvm-ia64/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/CodeGenIntrinsics.h projects/llvm-ia64/contrib/llvm/utils/TableGen/CodeGenRegisters.h projects/llvm-ia64/contrib/llvm/utils/TableGen/CodeGenTarget.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/CodeGenTarget.h projects/llvm-ia64/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/EDEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/FastISelEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/NeonEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/Record.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/TGLexer.cpp projects/llvm-ia64/contrib/llvm/utils/TableGen/TGLexer.h projects/llvm-ia64/contrib/llvm/utils/TableGen/TGParser.h projects/llvm-ia64/contrib/llvm/utils/TableGen/TableGen.cpp projects/llvm-ia64/etc/defaults/rc.conf projects/llvm-ia64/etc/network.subr projects/llvm-ia64/etc/rc.d/mountcritremote projects/llvm-ia64/etc/rc.d/nfsclient projects/llvm-ia64/etc/rc.d/rtadvd projects/llvm-ia64/etc/rc.subr projects/llvm-ia64/lib/clang/include/clang/Basic/Version.inc projects/llvm-ia64/lib/clang/libclangfrontend/Makefile projects/llvm-ia64/lib/clang/libllvmasmprinter/Makefile projects/llvm-ia64/lib/clang/libllvmcodegen/Makefile projects/llvm-ia64/lib/clang/libllvmmc/Makefile projects/llvm-ia64/lib/clang/libllvmmipscodegen/Makefile projects/llvm-ia64/lib/libstand/bswap.c projects/llvm-ia64/release/powerpc/mkisoimages.sh projects/llvm-ia64/sbin/fsck_ffs/suj.c projects/llvm-ia64/share/misc/committers-ports.dot projects/llvm-ia64/share/skel/dot.shrc projects/llvm-ia64/sys/Makefile projects/llvm-ia64/sys/amd64/amd64/legacy.c projects/llvm-ia64/sys/amd64/conf/GENERIC projects/llvm-ia64/sys/boot/i386/zfsboot/Makefile projects/llvm-ia64/sys/cam/ata/ata_all.c projects/llvm-ia64/sys/cam/ata/ata_xpt.c projects/llvm-ia64/sys/cddl/compat/opensolaris/sys/kstat.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/llvm-ia64/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/llvm-ia64/sys/conf/files projects/llvm-ia64/sys/dev/aac/aac.c projects/llvm-ia64/sys/dev/aac/aacvar.h projects/llvm-ia64/sys/dev/acpica/acpi.c projects/llvm-ia64/sys/dev/atkbdc/atkbd.c projects/llvm-ia64/sys/dev/cxgbe/adapter.h projects/llvm-ia64/sys/dev/cxgbe/t4_ioctl.h projects/llvm-ia64/sys/dev/cxgbe/t4_main.c projects/llvm-ia64/sys/dev/cxgbe/t4_sge.c projects/llvm-ia64/sys/dev/iwn/if_iwn.c projects/llvm-ia64/sys/dev/pci/pci_pci.c projects/llvm-ia64/sys/dev/xen/blkback/blkback.c projects/llvm-ia64/sys/dev/xen/blkfront/blkfront.c projects/llvm-ia64/sys/dev/xen/control/control.c projects/llvm-ia64/sys/dev/xen/netfront/netfront.c projects/llvm-ia64/sys/i386/conf/GENERIC projects/llvm-ia64/sys/i386/i386/legacy.c projects/llvm-ia64/sys/ia64/ia64/machdep.c projects/llvm-ia64/sys/kern/vfs_bio.c projects/llvm-ia64/sys/powerpc/conf/GENERIC projects/llvm-ia64/sys/powerpc/conf/GENERIC64 projects/llvm-ia64/sys/sys/vnode.h projects/llvm-ia64/sys/ufs/ffs/ffs_alloc.c projects/llvm-ia64/sys/ufs/ffs/ffs_balloc.c projects/llvm-ia64/sys/ufs/ffs/ffs_extern.h projects/llvm-ia64/sys/ufs/ffs/ffs_inode.c projects/llvm-ia64/sys/ufs/ffs/ffs_snapshot.c projects/llvm-ia64/sys/ufs/ffs/ffs_softdep.c projects/llvm-ia64/sys/ufs/ffs/ffs_vfsops.c projects/llvm-ia64/sys/ufs/ffs/ffs_vnops.c projects/llvm-ia64/sys/ufs/ffs/fs.h projects/llvm-ia64/sys/ufs/ffs/softdep.h projects/llvm-ia64/sys/ufs/ufs/inode.h projects/llvm-ia64/sys/ufs/ufs/quota.h projects/llvm-ia64/sys/ufs/ufs/ufs_lookup.c projects/llvm-ia64/sys/ufs/ufs/ufs_quota.c projects/llvm-ia64/sys/ufs/ufs/ufs_vnops.c projects/llvm-ia64/sys/ufs/ufs/ufsmount.h projects/llvm-ia64/sys/vm/vm_page.c projects/llvm-ia64/sys/vm/vm_page.h projects/llvm-ia64/sys/vm/vnode_pager.c projects/llvm-ia64/sys/xen/interface/io/xenbus.h projects/llvm-ia64/sys/xen/xenbus/xenbus.c projects/llvm-ia64/sys/xen/xenbus/xenbus_if.m projects/llvm-ia64/sys/xen/xenbus/xenbusb.c projects/llvm-ia64/sys/xen/xenbus/xenbusb.h projects/llvm-ia64/sys/xen/xenbus/xenbusb_back.c projects/llvm-ia64/sys/xen/xenbus/xenbusb_front.c projects/llvm-ia64/sys/xen/xenbus/xenbusb_if.m projects/llvm-ia64/sys/xen/xenbus/xenbusvar.h projects/llvm-ia64/sys/xen/xenstore/xenstorevar.h projects/llvm-ia64/tools/tools/cxgbetool/cxgbetool.c projects/llvm-ia64/usr.bin/calendar/calendars/calendar.freebsd projects/llvm-ia64/usr.bin/clang/tblgen/Makefile projects/llvm-ia64/usr.bin/grep/fastgrep.c projects/llvm-ia64/usr.bin/grep/grep.c projects/llvm-ia64/usr.bin/grep/util.c projects/llvm-ia64/usr.sbin/bsdinstall/Makefile projects/llvm-ia64/usr.sbin/rtadvd/config.c projects/llvm-ia64/usr.sbin/rtadvd/config.h projects/llvm-ia64/usr.sbin/rtadvd/rtadvd.8 projects/llvm-ia64/usr.sbin/rtadvd/rtadvd.c projects/llvm-ia64/usr.sbin/rtadvd/rtadvd.h Directory Properties: projects/llvm-ia64/ (props changed) projects/llvm-ia64/cddl/contrib/opensolaris/ (props changed) projects/llvm-ia64/contrib/bind9/ (props changed) projects/llvm-ia64/contrib/binutils/ (props changed) projects/llvm-ia64/contrib/bzip2/ (props changed) projects/llvm-ia64/contrib/compiler-rt/ (props changed) projects/llvm-ia64/contrib/dialog/ (props changed) projects/llvm-ia64/contrib/ee/ (props changed) projects/llvm-ia64/contrib/expat/ (props changed) projects/llvm-ia64/contrib/file/ (props changed) projects/llvm-ia64/contrib/gcc/ (props changed) projects/llvm-ia64/contrib/gdb/ (props changed) projects/llvm-ia64/contrib/gdtoa/ (props changed) projects/llvm-ia64/contrib/gnu-sort/ (props changed) projects/llvm-ia64/contrib/groff/ (props changed) projects/llvm-ia64/contrib/less/ (props changed) projects/llvm-ia64/contrib/libpcap/ (props changed) projects/llvm-ia64/contrib/libstdc++/ (props changed) projects/llvm-ia64/contrib/llvm/ (props changed) projects/llvm-ia64/contrib/llvm/tools/clang/ (props changed) projects/llvm-ia64/contrib/ncurses/ (props changed) projects/llvm-ia64/contrib/netcat/ (props changed) projects/llvm-ia64/contrib/ntp/ (props changed) projects/llvm-ia64/contrib/one-true-awk/ (props changed) projects/llvm-ia64/contrib/openbsm/ (props changed) projects/llvm-ia64/contrib/openpam/ (props changed) projects/llvm-ia64/contrib/pf/ (props changed) projects/llvm-ia64/contrib/sendmail/ (props changed) projects/llvm-ia64/contrib/tcpdump/ (props changed) projects/llvm-ia64/contrib/tcsh/ (props changed) projects/llvm-ia64/contrib/top/ (props changed) projects/llvm-ia64/contrib/top/install-sh (props changed) projects/llvm-ia64/contrib/tzcode/stdtime/ (props changed) projects/llvm-ia64/contrib/tzcode/zic/ (props changed) projects/llvm-ia64/contrib/tzdata/ (props changed) projects/llvm-ia64/contrib/wpa/ (props changed) projects/llvm-ia64/contrib/xz/ (props changed) projects/llvm-ia64/crypto/openssh/ (props changed) projects/llvm-ia64/crypto/openssl/ (props changed) projects/llvm-ia64/gnu/lib/ (props changed) projects/llvm-ia64/gnu/usr.bin/binutils/ (props changed) projects/llvm-ia64/gnu/usr.bin/cc/cc_tools/ (props changed) projects/llvm-ia64/gnu/usr.bin/gdb/ (props changed) projects/llvm-ia64/lib/libc/ (props changed) projects/llvm-ia64/lib/libc/stdtime/ (props changed) projects/llvm-ia64/lib/libutil/ (props changed) projects/llvm-ia64/lib/libz/ (props changed) projects/llvm-ia64/sbin/ (props changed) projects/llvm-ia64/sbin/ipfw/ (props changed) projects/llvm-ia64/share/mk/bsd.arch.inc.mk (props changed) projects/llvm-ia64/share/zoneinfo/ (props changed) projects/llvm-ia64/sys/ (props changed) projects/llvm-ia64/sys/amd64/include/xen/ (props changed) projects/llvm-ia64/sys/boot/ (props changed) projects/llvm-ia64/sys/boot/i386/efi/ (props changed) projects/llvm-ia64/sys/boot/ia64/efi/ (props changed) projects/llvm-ia64/sys/boot/ia64/ski/ (props changed) projects/llvm-ia64/sys/boot/powerpc/boot1.chrp/ (props changed) projects/llvm-ia64/sys/boot/powerpc/ofw/ (props changed) projects/llvm-ia64/sys/cddl/contrib/opensolaris/ (props changed) projects/llvm-ia64/sys/conf/ (props changed) projects/llvm-ia64/sys/contrib/dev/acpica/ (props changed) projects/llvm-ia64/sys/contrib/octeon-sdk/ (props changed) projects/llvm-ia64/sys/contrib/pf/ (props changed) projects/llvm-ia64/sys/contrib/x86emu/ (props changed) projects/llvm-ia64/usr.bin/calendar/ (props changed) projects/llvm-ia64/usr.bin/csup/ (props changed) projects/llvm-ia64/usr.bin/procstat/ (props changed) projects/llvm-ia64/usr.sbin/ndiscvt/ (props changed) projects/llvm-ia64/usr.sbin/zic/ (props changed) Modified: projects/llvm-ia64/bin/sh/eval.c ============================================================================== --- projects/llvm-ia64/bin/sh/eval.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/eval.c Sun Jun 12 20:12:01 2011 (r223021) @@ -745,8 +745,9 @@ evalcommand(union node *cmd, int flags, /* Print the command if xflag is set. */ if (xflag) { char sep = 0; - const char *p; - out2str(ps4val()); + const char *p, *ps4; + ps4 = expandstr(ps4val()); + out2str(ps4 != NULL ? ps4 : ps4val()); for (sp = varlist.list ; sp ; sp = sp->next) { if (sep != 0) out2c(' '); Modified: projects/llvm-ia64/bin/sh/expand.c ============================================================================== --- projects/llvm-ia64/bin/sh/expand.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/expand.c Sun Jun 12 20:12:01 2011 (r223021) @@ -174,6 +174,7 @@ expandarg(union node *arg, struct arglis ifslastp = NULL; argstr(arg->narg.text, flag); if (arglist == NULL) { + STACKSTRNUL(expdest); return; /* here document expanded */ } STPUTC('\0', expdest); @@ -1429,7 +1430,7 @@ patmatch(const char *pattern, const char if (localeisutf8) wc = get_wc(&q); else - wc = *q++; + wc = (unsigned char)*q++; if (wc == '\0') return 0; break; @@ -1486,7 +1487,7 @@ patmatch(const char *pattern, const char if (localeisutf8) chr = get_wc(&q); else - chr = *q++; + chr = (unsigned char)*q++; if (chr == '\0') return 0; c = *p++; @@ -1501,7 +1502,7 @@ patmatch(const char *pattern, const char if (wc == 0) /* bad utf-8 */ return 0; } else - wc = c; + wc = (unsigned char)c; if (*p == '-' && p[1] != ']') { p++; while (*p == CTLQUOTEMARK) @@ -1513,7 +1514,7 @@ patmatch(const char *pattern, const char if (wc2 == 0) /* bad utf-8 */ return 0; } else - wc2 = *p++; + wc2 = (unsigned char)*p++; if ( collate_range_cmp(chr, wc) >= 0 && collate_range_cmp(chr, wc2) <= 0 ) Modified: projects/llvm-ia64/bin/sh/main.c ============================================================================== --- projects/llvm-ia64/bin/sh/main.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/main.c Sun Jun 12 20:12:01 2011 (r223021) @@ -78,7 +78,7 @@ int rootshell; struct jmploc main_handler; int localeisutf8, initial_localeisutf8; -static void read_profile(const char *); +static void read_profile(char *); static char *find_dot_file(char *); /* @@ -92,7 +92,7 @@ static char *find_dot_file(char *); int main(int argc, char *argv[]) { - struct stackmark smark; + struct stackmark smark, smark2; volatile int state; char *shinit; @@ -139,6 +139,7 @@ main(int argc, char *argv[]) rootshell = 1; init(); setstackmark(&smark); + setstackmark(&smark2); procargs(argc, argv); pwd_init(iflag); if (iflag) @@ -149,7 +150,7 @@ main(int argc, char *argv[]) state1: state = 2; if (privileged == 0) - read_profile(".profile"); + read_profile("${HOME-}/.profile"); else read_profile("/etc/suid_profile"); } @@ -163,6 +164,7 @@ state2: } state3: state = 4; + popstackmark(&smark2); if (minusc) { evalstring(minusc, sflag ? 0 : EV_EXIT); } @@ -235,12 +237,16 @@ cmdloop(int top) */ static void -read_profile(const char *name) +read_profile(char *name) { int fd; + const char *expandedname; + expandedname = expandstr(name); + if (expandedname == NULL) + return; INTOFF; - if ((fd = open(name, O_RDONLY)) >= 0) + if ((fd = open(expandedname, O_RDONLY)) >= 0) setinputfd(fd, 1); INTON; if (fd < 0) Modified: projects/llvm-ia64/bin/sh/parser.c ============================================================================== --- projects/llvm-ia64/bin/sh/parser.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/parser.c Sun Jun 12 20:12:01 2011 (r223021) @@ -2029,3 +2029,47 @@ getprompt(void *unused __unused) ps[i] = '\0'; return (ps); } + + +const char * +expandstr(char *ps) +{ + union node n; + struct jmploc jmploc; + struct jmploc *const savehandler = handler; + const int saveprompt = doprompt; + struct parsefile *const savetopfile = getcurrentfile(); + struct parser_temp *const saveparser_temp = parser_temp; + const char *result = NULL; + + if (!setjmp(jmploc.loc)) { + handler = &jmploc; + parser_temp = NULL; + setinputstring(ps, 1); + doprompt = 0; + readtoken1(pgetc(), DQSYNTAX, "\n\n", 0); + if (backquotelist != NULL) + error("Command substitution not allowed here"); + + n.narg.type = NARG; + n.narg.next = NULL; + n.narg.text = wordtext; + n.narg.backquote = backquotelist; + + expandarg(&n, NULL, 0); + result = stackblock(); + INTOFF; + } + handler = savehandler; + doprompt = saveprompt; + popfilesupto(savetopfile); + if (parser_temp != saveparser_temp) { + parser_temp_free_all(); + parser_temp = saveparser_temp; + } + if (result != NULL) { + INTON; + } else if (exception == EXINT) + raise(SIGINT); + return result; +} Modified: projects/llvm-ia64/bin/sh/parser.h ============================================================================== --- projects/llvm-ia64/bin/sh/parser.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/parser.h Sun Jun 12 20:12:01 2011 (r223021) @@ -82,3 +82,4 @@ void fixredir(union node *, const char * int goodname(const char *); int isassignment(const char *); char *getprompt(void *); +const char *expandstr(char *); Modified: projects/llvm-ia64/bin/sh/sh.1 ============================================================================== --- projects/llvm-ia64/bin/sh/sh.1 Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/bin/sh/sh.1 Sun Jun 12 20:12:01 2011 (r223021) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd May 21, 2011 +.Dd June 10, 2011 .Dt SH 1 .Os .Sh NAME @@ -124,8 +124,8 @@ If the environment variable .Ev ENV is set on entry to a shell, or is set in the .Pa .profile -of a login shell, the shell then reads commands from the file named in -.Ev ENV . +of a login shell, the shell then subjects its value to parameter expansion +and arithmetic expansion and reads commands from the named file. Therefore, a user should place commands that are to be executed only at login time in the .Pa .profile @@ -324,7 +324,7 @@ Useful for debugging. Write each command (preceded by the value of the .Va PS4 -variable) +variable subjected to parameter expansion and arithmetic expansion) to standard error before it is executed. Useful for debugging. .El Modified: projects/llvm-ia64/cddl/compat/opensolaris/include/assert.h ============================================================================== --- projects/llvm-ia64/cddl/compat/opensolaris/include/assert.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/cddl/compat/opensolaris/include/assert.h Sun Jun 12 20:12:01 2011 (r223021) @@ -43,6 +43,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + static __inline void __assert(const char *expr, const char *file, int line) { @@ -52,4 +56,9 @@ __assert(const char *expr, const char *f abort(); /* NOTREACHED */ } + +#ifdef __cplusplus +} +#endif + #endif /* !_ASSERT_H_ */ Modified: projects/llvm-ia64/contrib/less/NEWS ============================================================================== --- projects/llvm-ia64/contrib/less/NEWS Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/NEWS Sun Jun 12 20:12:01 2011 (r223021) @@ -12,6 +12,15 @@ ====================================================================== + Major changes between "less" versions 443 and 444 + +* Fix bug in unget handling that can cause strange effects on the + command line. + +* Remove vestiges of obsolete -l option that can cause a crash. + +====================================================================== + Major changes between "less" versions 436 and 443 * Change search behavior such that when a search is given an explicit Modified: projects/llvm-ia64/contrib/less/README ============================================================================== --- projects/llvm-ia64/contrib/less/README Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/README Sun Jun 12 20:12:01 2011 (r223021) @@ -7,9 +7,9 @@ ************************************************************************** ************************************************************************** - Less, version 443 + Less, version 444 - This is the distribution of less, version 443, released 09 Apr 2011. + This is the distribution of less, version 444, released 09 Jun 2011. This program is part of the GNU project (http://www.gnu.org). This program is free software. You may redistribute it and/or Modified: projects/llvm-ia64/contrib/less/command.c ============================================================================== --- projects/llvm-ia64/contrib/less/command.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/command.c Sun Jun 12 20:12:01 2011 (r223021) @@ -302,7 +302,7 @@ is_erase_char(c) */ static int mca_opt_first_char(c) - int c; + int c; { int flag = (optflag & ~OPT_NO_PROMPT); if (flag == OPT_NO_TOGGLE) @@ -846,6 +846,7 @@ ungetcc(c) ug->ug_char = c; ug->ug_next = ungot; ungot = ug; + unget_end = 0; } /* Modified: projects/llvm-ia64/contrib/less/funcs.h ============================================================================== --- projects/llvm-ia64/contrib/less/funcs.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/funcs.h Sun Jun 12 20:12:01 2011 (r223021) @@ -194,7 +194,6 @@ public void unmark (); public void opt_o (); public void opt__O (); - public void opt_l (); public void opt_j (); public void calc_jump_sline (); public void opt_shift (); Modified: projects/llvm-ia64/contrib/less/less.man ============================================================================== --- projects/llvm-ia64/contrib/less/less.man Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/less.man Sun Jun 12 20:12:01 2011 (r223021) @@ -1156,7 +1156,7 @@ LESS(1) next 8bcccbcc18b95.bb125.bb If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings - "UTF-8", "UTF8", "utf-8" or "utf8" is found in the LC_ALL, LC_TYPE or + "UTF-8", "UTF8", "utf-8" or "utf8" is found in the LC_ALL, LC_CTYPE or LANG environment variables, then the default character set is utf-8. If that string is not found, but your system supports the setlocale @@ -1580,4 +1580,4 @@ LESS(1) - Version 443: 09 Apr 2011 LESS(1) + Version 444: 09 Jun 2011 LESS(1) Modified: projects/llvm-ia64/contrib/less/less.nro ============================================================================== --- projects/llvm-ia64/contrib/less/less.nro Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/less.nro Sun Jun 12 20:12:01 2011 (r223021) @@ -1,4 +1,4 @@ -.TH LESS 1 "Version 443: 09 Apr 2011" +.TH LESS 1 "Version 444: 09 Jun 2011" .SH NAME less \- opposite of more .SH SYNOPSIS @@ -1276,7 +1276,7 @@ to each of the possible values for LESSC .PP If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8" -is found in the LC_ALL, LC_TYPE or LANG +is found in the LC_ALL, LC_CTYPE or LANG environment variables, then the default character set is utf-8. .PP If that string is not found, but your system supports the Modified: projects/llvm-ia64/contrib/less/lessecho.man ============================================================================== --- projects/llvm-ia64/contrib/less/lessecho.man Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/lessecho.man Sun Jun 12 20:12:01 2011 (r223021) @@ -46,4 +46,4 @@ LESSECHO(1) - Version 443: 09 Apr 2011 LESSECHO(1) + Version 444: 09 Jun 2011 LESSECHO(1) Modified: projects/llvm-ia64/contrib/less/lessecho.nro ============================================================================== --- projects/llvm-ia64/contrib/less/lessecho.nro Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/lessecho.nro Sun Jun 12 20:12:01 2011 (r223021) @@ -1,4 +1,4 @@ -.TH LESSECHO 1 "Version 443: 09 Apr 2011" +.TH LESSECHO 1 "Version 444: 09 Jun 2011" .SH NAME lessecho \- expand metacharacters .SH SYNOPSIS Modified: projects/llvm-ia64/contrib/less/lesskey.man ============================================================================== --- projects/llvm-ia64/contrib/less/lesskey.man Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/lesskey.man Sun Jun 12 20:12:01 2011 (r223021) @@ -354,4 +354,4 @@ LESSKEY(1) - Version 443: 09 Apr 2011 LESSKEY(1) + Version 444: 09 Jun 2011 LESSKEY(1) Modified: projects/llvm-ia64/contrib/less/lesskey.nro ============================================================================== --- projects/llvm-ia64/contrib/less/lesskey.nro Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/lesskey.nro Sun Jun 12 20:12:01 2011 (r223021) @@ -1,4 +1,4 @@ -.TH LESSKEY 1 "Version 443: 09 Apr 2011" +.TH LESSKEY 1 "Version 444: 09 Jun 2011" .SH NAME lesskey \- specify key bindings for less .SH SYNOPSIS Modified: projects/llvm-ia64/contrib/less/optfunc.c ============================================================================== --- projects/llvm-ia64/contrib/less/optfunc.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/optfunc.c Sun Jun 12 20:12:01 2011 (r223021) @@ -132,34 +132,6 @@ opt__O(type, s) #endif /* - * Handlers for -l option. - */ - public void -opt_l(type, s) - int type; - char *s; -{ - int err; - int n; - char *t; - - switch (type) - { - case INIT: - t = s; - n = getnum(&t, "l", &err); - if (err || n <= 0) - { - error("Line number is required after -l", NULL_PARG); - return; - } - plusoption = TRUE; - ungetsc(s); - break; - } -} - -/* * Handlers for -j option. */ public void Modified: projects/llvm-ia64/contrib/less/opttbl.c ============================================================================== --- projects/llvm-ia64/contrib/less/opttbl.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/opttbl.c Sun Jun 12 20:12:01 2011 (r223021) @@ -263,10 +263,6 @@ static struct loption option[] = NULL } }, - { 'l', NULL, - STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_l, - { NULL, NULL, NULL } - }, { 'L', &L__optname, BOOL, OPT_ON, &use_lessopen, NULL, { Modified: projects/llvm-ia64/contrib/less/version.c ============================================================================== --- projects/llvm-ia64/contrib/less/version.c Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/less/version.c Sun Jun 12 20:12:01 2011 (r223021) @@ -742,6 +742,7 @@ v441 1/21/11 Fix semi-infinite loop i v442 3/2/11 Fix search bug. Add ctrl-G line edit command. v443 4/9/11 Fix Windows build. +v444 6/8/11 Fix ungetc bug; remove vestiges of obsolete -l option. */ -char version[] = "443"; +char version[] = "444"; Modified: projects/llvm-ia64/contrib/llvm/include/llvm-c/Core.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm-c/Core.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm-c/Core.h Sun Jun 12 20:12:01 2011 (r223021) @@ -282,6 +282,8 @@ typedef enum { LLVMRealPredicateTrue /**< Always true (always folded) */ } LLVMRealPredicate; +void LLVMInitializeCore(LLVMPassRegistryRef R); + /*===-- Error handling ----------------------------------------------------===*/ @@ -1164,6 +1166,7 @@ namespace llvm { for (LLVMValueRef *I = Vals, *E = Vals + Length; I != E; ++I) cast(*I); #endif + (void)Length; return reinterpret_cast(Vals); } Modified: projects/llvm-ia64/contrib/llvm/include/llvm-c/Disassembler.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm-c/Disassembler.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm-c/Disassembler.h Sun Jun 12 20:12:01 2011 (r223021) @@ -7,16 +7,16 @@ |* *| |*===----------------------------------------------------------------------===*| |* *| -|* This header provides public interface to a disassembler library. *| +|* This header provides a public interface to a disassembler library. *| |* LLVM provides an implementation of this interface. *| |* *| \*===----------------------------------------------------------------------===*/ #ifndef LLVM_C_DISASSEMBLER_H -#define LLVM_C_DISASSEMBLER_H 1 +#define LLVM_C_DISASSEMBLER_H -#include #include "llvm/Support/DataTypes.h" +#include /** * An opaque reference to a disassembler context. @@ -38,14 +38,11 @@ typedef void *LLVMDisasmContextRef; * will be the instruction width. The information is returned in TagBuf and is * Triple specific with its specific information defined by the value of * TagType for that Triple. If symbolic information is returned the function - * returns 1 else it returns 0. + * returns 1, otherwise it returns 0. */ -typedef int (*LLVMOpInfoCallback)(void *DisInfo, - uint64_t PC, - uint64_t Offset, - uint64_t Size, - int TagType, - void *TagBuf); +typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t PC, + uint64_t Offset, uint64_t Size, + int TagType, void *TagBuf); /** * The initial support in LLVM MC for the most general form of a relocatable @@ -68,10 +65,11 @@ typedef int (*LLVMOpInfoCallback)(void * * operands like "_foo@GOT", ":lower16:_foo", etc. */ struct LLVMOpInfoSymbol1 { - uint64_t Present; /* 1 if this symbol is present */ - char *Name; /* symbol name if not NULL */ - uint64_t Value; /* symbol value if name is NULL */ + uint64_t Present; /* 1 if this symbol is present */ + char *Name; /* symbol name if not NULL */ + uint64_t Value; /* symbol value if name is NULL */ }; + struct LLVMOpInfo1 { struct LLVMOpInfoSymbol1 AddSymbol; struct LLVMOpInfoSymbol1 SubtractSymbol; @@ -92,11 +90,11 @@ struct LLVMOpInfo1 { /** * The type for the symbol lookup function. This may be called by the - * disassembler for such things like adding a comment for a PC plus a constant + * disassembler for things like adding a comment for a PC plus a constant * offset load instruction to use a symbol name instead of a load address value. * It is passed the block information is saved when the disassembler context is * created and a value of a symbol to look up. If no symbol is found NULL is - * to be returned. + * returned. */ typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo, uint64_t SymbolValue); @@ -107,40 +105,33 @@ extern "C" { /** * Create a disassembler for the TripleName. Symbolic disassembly is supported - * by passing a block of information in the DisInfo parameter and specifing the - * TagType and call back functions as described above. These can all be passed - * as NULL. If successful this returns a disassembler context if not it + * by passing a block of information in the DisInfo parameter and specifying the + * TagType and callback functions as described above. These can all be passed + * as NULL. If successful, this returns a disassembler context. If not, it * returns NULL. */ -extern LLVMDisasmContextRef -LLVMCreateDisasm(const char *TripleName, - void *DisInfo, - int TagType, - LLVMOpInfoCallback GetOpInfo, - LLVMSymbolLookupCallback SymbolLookUp); +LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo, + int TagType, LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); /** * Dispose of a disassembler context. */ -extern void -LLVMDisasmDispose(LLVMDisasmContextRef DC); +void LLVMDisasmDispose(LLVMDisasmContextRef DC); /** - * Disassmble a single instruction using the disassembler context specified in - * the parameter DC. The bytes of the instruction are specified in the parameter - * Bytes, and contains at least BytesSize number of bytes. The instruction is - * at the address specified by the PC parameter. If a valid instruction can be - * disassembled its string is returned indirectly in OutString which whos size - * is specified in the parameter OutStringSize. This function returns the - * number of bytes in the instruction or zero if there was no valid instruction. - */ -extern size_t -LLVMDisasmInstruction(LLVMDisasmContextRef DC, - uint8_t *Bytes, - uint64_t BytesSize, - uint64_t PC, - char *OutString, - size_t OutStringSize); + * Disassemble a single instruction using the disassembler context specified in + * the parameter DC. The bytes of the instruction are specified in the + * parameter Bytes, and contains at least BytesSize number of bytes. The + * instruction is at the address specified by the PC parameter. If a valid + * instruction can be disassembled, its string is returned indirectly in + * OutString whose size is specified in the parameter OutStringSize. This + * function returns the number of bytes in the instruction or zero if there was + * no valid instruction. + */ +size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, + uint64_t BytesSize, uint64_t PC, + char *OutString, size_t OutStringSize); #ifdef __cplusplus } Modified: projects/llvm-ia64/contrib/llvm/include/llvm/ADT/FoldingSet.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/ADT/FoldingSet.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/ADT/FoldingSet.h Sun Jun 12 20:12:01 2011 (r223021) @@ -671,17 +671,10 @@ public: // Partial specializations of FoldingSetTrait. template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { + static inline void Profile(T *X, FoldingSetNodeID &ID) { ID.AddPointer(X); } }; - -template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { - ID.AddPointer(X); - } -}; - } // End of namespace llvm. #endif Copied: projects/llvm-ia64/contrib/llvm/include/llvm/ADT/PackedVector.h (from r223020, head/contrib/llvm/include/llvm/ADT/PackedVector.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/llvm-ia64/contrib/llvm/include/llvm/ADT/PackedVector.h Sun Jun 12 20:12:01 2011 (r223021, copy of r223020, head/contrib/llvm/include/llvm/ADT/PackedVector.h) @@ -0,0 +1,158 @@ +//===- llvm/ADT/PackedVector.h - Packed values vector -----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the PackedVector class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_PACKEDVECTOR_H +#define LLVM_ADT_PACKEDVECTOR_H + +#include "llvm/ADT/BitVector.h" +#include + +namespace llvm { + +template +class PackedVectorBase; + +// This won't be necessary if we can specialize members without specializing +// the parent template. +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + assert((val >> BitNum) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum-1; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + if (Bits[(Idx << (BitNum-1)) + BitNum-1]) + val = ~val; + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + if (val < 0) { + val = ~val; + Bits.set((Idx << (BitNum-1)) + BitNum-1); + } + assert((val >> (BitNum-1)) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum-1; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +/// \brief Store a vector of values using a specific number of bits for each +/// value. Both signed and unsigned types can be used, e.g +/// @code +/// PackedVector vec; +/// @endcode +/// will create a vector accepting values -2, -1, 0, 1. Any other value will hit +/// an assertion. +template +class PackedVector : public PackedVectorBase::is_signed> { + llvm::BitVector Bits; + typedef PackedVectorBase::is_signed> base; + +public: + class reference { + PackedVector &Vec; + const unsigned Idx; + + reference(); // Undefined + public: + reference(PackedVector &vec, unsigned idx) : Vec(vec), Idx(idx) { } + + reference &operator=(T val) { + Vec.setValue(Vec.Bits, Idx, val); + return *this; + } + operator T() { + return Vec.getValue(Vec.Bits, Idx); + } + }; + + PackedVector() { } + explicit PackedVector(unsigned size) : Bits(size << (BitNum-1)) { } + + bool empty() const { return Bits.empty(); } + + unsigned size() const { return Bits.size() >> (BitNum-1); } + + void clear() { Bits.clear(); } + + void resize(unsigned N) { Bits.resize(N << (BitNum-1)); } + + void reserve(unsigned N) { Bits.reserve(N << (BitNum-1)); } + + PackedVector &reset() { + Bits.reset(); + return *this; + } + + void push_back(T val) { + resize(size()+1); + (*this)[size()-1] = val; + } + + reference operator[](unsigned Idx) { + return reference(*this, Idx); + } + + T operator[](unsigned Idx) const { + return base::getValue(Bits, Idx); + } + + bool operator==(const PackedVector &RHS) const { + return Bits == RHS.Bits; + } + + bool operator!=(const PackedVector &RHS) const { + return Bits != RHS.Bits; + } + + const PackedVector &operator=(const PackedVector &RHS) { + Bits = RHS.Bits; + return *this; + } + + PackedVector &operator|=(const PackedVector &RHS) { + Bits |= RHS.Bits; + return *this; + } + + void swap(PackedVector &RHS) { + Bits.swap(RHS.Bits); + } +}; + +// Leave BitNum=0 undefined. +template +class PackedVector; + +} // end llvm namespace + +#endif Modified: projects/llvm-ia64/contrib/llvm/include/llvm/ADT/StringRef.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/ADT/StringRef.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/ADT/StringRef.h Sun Jun 12 20:12:01 2011 (r223021) @@ -46,7 +46,14 @@ namespace llvm { // integer works around this bug. static size_t min(size_t a, size_t b) { return a < b ? a : b; } static size_t max(size_t a, size_t b) { return a > b ? a : b; } - + + // Workaround memcmp issue with null pointers (undefined behavior) + // by providing a specialized version + static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) { + if (Length == 0) { return 0; } + return ::memcmp(Lhs,Rhs,Length); + } + public: /// @name Constructors /// @{ @@ -56,11 +63,17 @@ namespace llvm { /// Construct a string ref from a cstring. /*implicit*/ StringRef(const char *Str) - : Data(Str), Length(::strlen(Str)) {} + : Data(Str) { + assert(Str && "StringRef cannot be built from a NULL argument"); + Length = ::strlen(Str); // invoking strlen(NULL) is undefined behavior + } /// Construct a string ref from a pointer and length. /*implicit*/ StringRef(const char *data, size_t length) - : Data(data), Length(length) {} + : Data(data), Length(length) { + assert((data || length == 0) && + "StringRef cannot be built from a NULL argument with non-null length"); + } /// Construct a string ref from an std::string. /*implicit*/ StringRef(const std::string &Str) @@ -104,7 +117,7 @@ namespace llvm { /// compare() when the relative ordering of inequal strings isn't needed. bool equals(StringRef RHS) const { return (Length == RHS.Length && - memcmp(Data, RHS.Data, RHS.Length) == 0); + compareMemory(Data, RHS.Data, RHS.Length) == 0); } /// equals_lower - Check for string equality, ignoring case. @@ -116,7 +129,7 @@ namespace llvm { /// is lexicographically less than, equal to, or greater than the \arg RHS. int compare(StringRef RHS) const { // Check the prefix for a mismatch. - if (int Res = memcmp(Data, RHS.Data, min(Length, RHS.Length))) + if (int Res = compareMemory(Data, RHS.Data, min(Length, RHS.Length))) return Res < 0 ? -1 : 1; // Otherwise the prefixes match, so we only need to check the lengths. @@ -183,13 +196,13 @@ namespace llvm { /// startswith - Check if this string starts with the given \arg Prefix. bool startswith(StringRef Prefix) const { return Length >= Prefix.Length && - memcmp(Data, Prefix.Data, Prefix.Length) == 0; + compareMemory(Data, Prefix.Data, Prefix.Length) == 0; } /// endswith - Check if this string ends with the given \arg Suffix. bool endswith(StringRef Suffix) const { return Length >= Suffix.Length && - memcmp(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; + compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; } /// @} @@ -447,6 +460,10 @@ namespace llvm { return LHS.compare(RHS) != -1; } + inline std::string &operator+=(std::string &buffer, llvm::StringRef string) { + return buffer.append(string.data(), string.size()); + } + /// @} // StringRefs can be treated like a POD type. Modified: projects/llvm-ia64/contrib/llvm/include/llvm/ADT/Triple.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/ADT/Triple.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/ADT/Triple.h Sun Jun 12 20:12:01 2011 (r223021) @@ -226,7 +226,7 @@ public: /// if the environment component is present). StringRef getOSAndEnvironmentName() const; - /// getOSNumber - Parse the version number from the OS name component of the + /// getOSVersion - Parse the version number from the OS name component of the /// triple, if present. /// /// For example, "fooos1.2.3" would return (1, 2, 3). Modified: projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Sun Jun 12 20:12:01 2011 (r223021) @@ -38,6 +38,7 @@ #define LLVM_ANALYSIS_ALIAS_ANALYSIS_H #include "llvm/Support/CallSite.h" +#include "llvm/ADT/DenseMap.h" namespace llvm { @@ -488,6 +489,32 @@ public: } }; +// Specialize DenseMapInfo for Location. +template<> +struct DenseMapInfo { + static inline AliasAnalysis::Location getEmptyKey() { + return + AliasAnalysis::Location(DenseMapInfo::getEmptyKey(), + 0, 0); + } + static inline AliasAnalysis::Location getTombstoneKey() { + return + AliasAnalysis::Location(DenseMapInfo::getTombstoneKey(), + 0, 0); + } + static unsigned getHashValue(const AliasAnalysis::Location &Val) { + return DenseMapInfo::getHashValue(Val.Ptr) ^ + DenseMapInfo::getHashValue(Val.Size) ^ + DenseMapInfo::getHashValue(Val.TBAATag); + } + static bool isEqual(const AliasAnalysis::Location &LHS, + const AliasAnalysis::Location &RHS) { + return LHS.Ptr == RHS.Ptr && + LHS.Size == RHS.Size && + LHS.TBAATag == RHS.TBAATag; + } +}; + /// isNoAliasCall - Return true if this pointer is returned by a noalias /// function. bool isNoAliasCall(const Value *V); Copied: projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h (from r223020, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h Sun Jun 12 20:12:01 2011 (r223021, copy of r223020, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h) @@ -0,0 +1,78 @@ +//===--- BranchProbabilityInfo.h - Branch Probability Analysis --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This pass is used to evaluate branch probabilties. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H +#define LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H + +#include "llvm/InitializePasses.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Analysis/LoopInfo.h" + +namespace llvm { + +class raw_ostream; + +class BranchProbabilityInfo : public FunctionPass { + + // Default weight value. Used when we don't have information about the edge. + static const uint32_t DEFAULT_WEIGHT = 16; + + typedef std::pair Edge; + + DenseMap Weights; + + // Get sum of the block successors' weights. + uint32_t getSumForBlock(BasicBlock *BB) const; + +public: + static char ID; + + BranchProbabilityInfo() : FunctionPass(ID) { + initializeBranchProbabilityInfoPass(*PassRegistry::getPassRegistry()); + } + + void getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnFunction(Function &F); + + // Returned value is between 1 and UINT32_MAX. Look at + // BranchProbabilityInfo.cpp for details. + uint32_t getEdgeWeight(BasicBlock *Src, BasicBlock *Dst) const; + + // Look at BranchProbabilityInfo.cpp for details. Use it with caution! + void setEdgeWeight(BasicBlock *Src, BasicBlock *Dst, uint32_t Weight); + + // A 'Hot' edge is an edge which probability is >= 80%. + bool isEdgeHot(BasicBlock *Src, BasicBlock *Dst) const; + + // Return a hot successor for the block BB or null if there isn't one. + BasicBlock *getHotSucc(BasicBlock *BB) const; + + // Return a probability as a fraction between 0 (0% probability) and + // 1 (100% probability), however the value is never equal to 0, and can be 1 + // only iff SRC block has only one successor. + BranchProbability getEdgeProbability(BasicBlock *Src, BasicBlock *Dst) const; + + // Print value between 0 (0% probability) and 1 (100% probability), + // however the value is never equal to 0, and can be 1 only iff SRC block + // has only one successor. + raw_ostream &printEdgeProbability(raw_ostream &OS, BasicBlock *Src, + BasicBlock *Dst) const; +}; + +} + +#endif Modified: projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/CallGraph.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/CallGraph.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/CallGraph.h Sun Jun 12 20:12:01 2011 (r223021) @@ -259,6 +259,9 @@ public: /// addCalledFunction - Add a function to the list of functions called by this /// one. void addCalledFunction(CallSite CS, CallGraphNode *M) { + assert(!CS.getInstruction() || + !CS.getCalledFunction() || + !CS.getCalledFunction()->isIntrinsic()); CalledFunctions.push_back(std::make_pair(CS.getInstruction(), M)); M->AddRef(); } Modified: projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DIBuilder.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jun 12 20:12:01 2011 (r223021) @@ -117,8 +117,9 @@ namespace llvm { /// @param Name Typedef name. /// @param File File where this type is defined. /// @param LineNo Line number. + /// @param Context The surrounding context for the typedef. DIType createTypedef(DIType Ty, StringRef Name, DIFile File, - unsigned LineNo); + unsigned LineNo, DIDescriptor Context); /// createFriend - Create debugging information entry for a 'friend'. DIType createFriend(DIType Ty, DIType FriendTy); Modified: projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DebugInfo.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DebugInfo.h Sun Jun 12 19:27:05 2011 (r223020) +++ projects/llvm-ia64/contrib/llvm/include/llvm/Analysis/DebugInfo.h Sun Jun 12 20:12:01 2011 (r223021) @@ -49,15 +49,16 @@ namespace llvm { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun Jun 12 20:19:18 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D51F1106564A; Sun, 12 Jun 2011 20:19:18 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C1D4E8FC0C; Sun, 12 Jun 2011 20:19:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CKJIVf039815; Sun, 12 Jun 2011 20:19:18 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CKJIdC039804; Sun, 12 Jun 2011 20:19:18 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106122019.p5CKJIdC039804@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 12 Jun 2011 20:19:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223022 - in projects/altix: lib/libstand sys sys/amd64/acpica sys/amd64/amd64 sys/amd64/conf sys/amd64/include sys/arm/arm sys/arm/include sys/boot/common sys/boot/forth sys/boot/i386/... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 12 Jun 2011 20:19:18 -0000 Author: marcel Date: Sun Jun 12 20:19:17 2011 New Revision: 223022 URL: http://svn.freebsd.org/changeset/base/223022 Log: Sync with head@223020 Added: projects/altix/sys/boot/forth/beastie.4th.8 - copied unchanged from r223020, head/sys/boot/forth/beastie.4th.8 projects/altix/sys/boot/forth/brand.4th - copied unchanged from r223020, head/sys/boot/forth/brand.4th projects/altix/sys/boot/forth/brand.4th.8 - copied unchanged from r223020, head/sys/boot/forth/brand.4th.8 projects/altix/sys/boot/forth/check-password.4th - copied unchanged from r223020, head/sys/boot/forth/check-password.4th projects/altix/sys/boot/forth/check-password.4th.8 - copied unchanged from r223020, head/sys/boot/forth/check-password.4th.8 projects/altix/sys/boot/forth/color.4th - copied unchanged from r223020, head/sys/boot/forth/color.4th projects/altix/sys/boot/forth/color.4th.8 - copied unchanged from r223020, head/sys/boot/forth/color.4th.8 projects/altix/sys/boot/forth/delay.4th - copied unchanged from r223020, head/sys/boot/forth/delay.4th projects/altix/sys/boot/forth/delay.4th.8 - copied unchanged from r223020, head/sys/boot/forth/delay.4th.8 projects/altix/sys/boot/forth/menu-commands.4th - copied unchanged from r223020, head/sys/boot/forth/menu-commands.4th projects/altix/sys/boot/forth/menu.4th - copied unchanged from r223020, head/sys/boot/forth/menu.4th projects/altix/sys/boot/forth/menu.4th.8 - copied unchanged from r223020, head/sys/boot/forth/menu.4th.8 projects/altix/sys/boot/forth/menu.rc - copied unchanged from r223020, head/sys/boot/forth/menu.rc projects/altix/sys/boot/forth/shortcuts.4th - copied unchanged from r223020, head/sys/boot/forth/shortcuts.4th projects/altix/sys/boot/forth/version.4th - copied unchanged from r223020, head/sys/boot/forth/version.4th projects/altix/sys/boot/forth/version.4th.8 - copied unchanged from r223020, head/sys/boot/forth/version.4th.8 projects/altix/sys/boot/ia64/common/icache.c - copied unchanged from r223020, head/sys/boot/ia64/common/icache.c projects/altix/sys/dev/ath/ath_dfs/ - copied from r223020, head/sys/dev/ath/ath_dfs/ projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287.ini - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287.ini projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_cal.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_cal.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_cal.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_cal.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_olc.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_olc.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_olc.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_olc.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_reset.c - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_reset.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287_reset.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287_reset.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287an.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287an.h projects/altix/sys/dev/ath/ath_hal/ar9002/ar9287phy.h - copied unchanged from r223020, head/sys/dev/ath/ath_hal/ar9002/ar9287phy.h projects/altix/sys/dev/ath/if_athdfs.h - copied unchanged from r223020, head/sys/dev/ath/if_athdfs.h projects/altix/sys/dev/cxgbe/common/jhash.h - copied unchanged from r223020, head/sys/dev/cxgbe/common/jhash.h projects/altix/sys/dev/cxgbe/t4_l2t.c - copied unchanged from r223020, head/sys/dev/cxgbe/t4_l2t.c projects/altix/sys/dev/cxgbe/t4_l2t.h - copied unchanged from r223020, head/sys/dev/cxgbe/t4_l2t.h projects/altix/sys/dev/glxiic/ - copied from r223020, head/sys/dev/glxiic/ projects/altix/sys/dev/iicbus/ad7417.c - copied unchanged from r223020, head/sys/dev/iicbus/ad7417.c projects/altix/sys/dev/usb/serial/umcs.c - copied unchanged from r223020, head/sys/dev/usb/serial/umcs.c projects/altix/sys/dev/usb/serial/umcs.h - copied unchanged from r223020, head/sys/dev/usb/serial/umcs.h projects/altix/sys/modules/glxiic/ - copied from r223020, head/sys/modules/glxiic/ projects/altix/sys/modules/usb/umcs/ - copied from r223020, head/sys/modules/usb/umcs/ projects/altix/sys/netinet/in_pcbgroup.c - copied unchanged from r223020, head/sys/netinet/in_pcbgroup.c projects/altix/sys/netinet6/in6_pcbgroup.c - copied unchanged from r223020, head/sys/netinet6/in6_pcbgroup.c projects/altix/sys/powerpc/include/rtas.h - copied unchanged from r223020, head/sys/powerpc/include/rtas.h projects/altix/sys/powerpc/ofw/ofwcall32.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwcall32.S projects/altix/sys/powerpc/ofw/ofwcall64.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwcall64.S projects/altix/sys/powerpc/ofw/ofwmagic.S - copied unchanged from r223020, head/sys/powerpc/ofw/ofwmagic.S projects/altix/sys/powerpc/ofw/rtas.c - copied unchanged from r223020, head/sys/powerpc/ofw/rtas.c projects/altix/sys/powerpc/powermac/powermac_thermal.c - copied unchanged from r223020, head/sys/powerpc/powermac/powermac_thermal.c projects/altix/sys/powerpc/powermac/powermac_thermal.h - copied unchanged from r223020, head/sys/powerpc/powermac/powermac_thermal.h projects/altix/sys/powerpc/powermac/windtunnel.c - copied unchanged from r223020, head/sys/powerpc/powermac/windtunnel.c projects/altix/sys/sys/_cpuset.h - copied unchanged from r223020, head/sys/sys/_cpuset.h Replaced: projects/altix/sys/nfs/nfs_kdtrace.h - copied unchanged from r223020, head/sys/nfs/nfs_kdtrace.h projects/altix/sys/sys/_stdint.h - copied unchanged from r223020, head/sys/sys/_stdint.h Deleted: projects/altix/sys/powerpc/aim/ofwmagic.S Modified: projects/altix/lib/libstand/bswap.c projects/altix/sys/Makefile projects/altix/sys/amd64/acpica/acpi_wakeup.c projects/altix/sys/amd64/amd64/identcpu.c projects/altix/sys/amd64/amd64/intr_machdep.c projects/altix/sys/amd64/amd64/legacy.c projects/altix/sys/amd64/amd64/machdep.c projects/altix/sys/amd64/amd64/mp_machdep.c projects/altix/sys/amd64/amd64/pmap.c projects/altix/sys/amd64/amd64/vm_machdep.c projects/altix/sys/amd64/conf/GENERIC projects/altix/sys/amd64/include/_types.h projects/altix/sys/amd64/include/pmap.h projects/altix/sys/amd64/include/smp.h projects/altix/sys/amd64/include/specialreg.h projects/altix/sys/arm/arm/pmap.c projects/altix/sys/arm/include/_types.h projects/altix/sys/arm/include/pmap.h projects/altix/sys/boot/common/Makefile.inc projects/altix/sys/boot/forth/beastie.4th projects/altix/sys/boot/forth/loader.4th projects/altix/sys/boot/forth/loader.conf.5 projects/altix/sys/boot/forth/loader.rc projects/altix/sys/boot/forth/support.4th projects/altix/sys/boot/i386/loader/Makefile projects/altix/sys/boot/i386/zfsboot/Makefile projects/altix/sys/boot/ia64/common/Makefile projects/altix/sys/boot/ia64/common/exec.c projects/altix/sys/boot/ia64/common/libia64.h projects/altix/sys/boot/ia64/efi/efimd.c projects/altix/sys/boot/ia64/efi/main.c projects/altix/sys/boot/ia64/efi/version projects/altix/sys/boot/pc98/loader/Makefile projects/altix/sys/boot/powerpc/ofw/Makefile projects/altix/sys/boot/powerpc/ps3/Makefile projects/altix/sys/boot/sparc64/loader/Makefile projects/altix/sys/cam/ata/ata_all.c projects/altix/sys/cam/ata/ata_da.c projects/altix/sys/cam/ata/ata_xpt.c projects/altix/sys/cam/scsi/scsi_ses.h projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c projects/altix/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c projects/altix/sys/cddl/compat/opensolaris/sys/atomic.h projects/altix/sys/cddl/compat/opensolaris/sys/kstat.h projects/altix/sys/cddl/compat/opensolaris/sys/taskq.h projects/altix/sys/cddl/compat/opensolaris/sys/time.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/altix/sys/cddl/dev/cyclic/cyclic.c projects/altix/sys/cddl/dev/cyclic/i386/cyclic_machdep.c projects/altix/sys/cddl/dev/dtrace/amd64/dtrace_subr.c projects/altix/sys/cddl/dev/dtrace/i386/dtrace_subr.c projects/altix/sys/conf/Makefile.powerpc projects/altix/sys/conf/NOTES projects/altix/sys/conf/files projects/altix/sys/conf/files.i386 projects/altix/sys/conf/files.powerpc projects/altix/sys/conf/kern.mk projects/altix/sys/conf/kern.post.mk projects/altix/sys/conf/kmod.mk projects/altix/sys/conf/newvers.sh projects/altix/sys/conf/options projects/altix/sys/contrib/dev/acpica/changes.txt projects/altix/sys/contrib/dev/acpica/debugger/dbexec.c projects/altix/sys/contrib/dev/acpica/debugger/dbinput.c projects/altix/sys/contrib/dev/acpica/debugger/dbutils.c projects/altix/sys/contrib/dev/acpica/debugger/dbxface.c projects/altix/sys/contrib/dev/acpica/include/acconfig.h projects/altix/sys/contrib/dev/acpica/include/acdebug.h projects/altix/sys/contrib/dev/acpica/include/acglobal.h projects/altix/sys/contrib/dev/acpica/include/aclocal.h projects/altix/sys/contrib/dev/acpica/include/acpiosxf.h projects/altix/sys/contrib/dev/acpica/include/acpixf.h projects/altix/sys/contrib/dev/acpica/include/acpredef.h projects/altix/sys/contrib/dev/acpica/osunixxf.c projects/altix/sys/contrib/dev/acpica/tables/tbinstal.c projects/altix/sys/contrib/pf/net/pf.c projects/altix/sys/contrib/pf/net/pf_ioctl.c projects/altix/sys/contrib/pf/net/pf_norm.c projects/altix/sys/ddb/db_command.c projects/altix/sys/dev/aac/aac.c projects/altix/sys/dev/aac/aacvar.h projects/altix/sys/dev/acpica/Osd/OsdDebug.c projects/altix/sys/dev/acpica/acpi.c projects/altix/sys/dev/acpica/acpi_hpet.c projects/altix/sys/dev/acpica/acpi_timer.c projects/altix/sys/dev/ahci/ahci.c projects/altix/sys/dev/ahci/ahci.h projects/altix/sys/dev/alc/if_alcreg.h projects/altix/sys/dev/ale/if_alereg.h projects/altix/sys/dev/amdsbwd/amdsbwd.c projects/altix/sys/dev/ata/ata-sata.c projects/altix/sys/dev/ath/ah_osdep.c projects/altix/sys/dev/ath/ath_hal/ah.c projects/altix/sys/dev/ath/ath_hal/ah.h projects/altix/sys/dev/ath/ath_hal/ah_desc.h projects/altix/sys/dev/ath/ath_hal/ah_devid.h projects/altix/sys/dev/ath/ath_hal/ah_eeprom.h projects/altix/sys/dev/ath/ath_hal/ah_eeprom_9287.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v1.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v14.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v3.c projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v4k.c projects/altix/sys/dev/ath/ath_hal/ah_internal.h projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212.h projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c projects/altix/sys/dev/ath/ath_hal/ar5212/ar5212reg.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416desc.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416phy.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c projects/altix/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/altix/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/altix/sys/dev/ath/ath_rate/sample/sample.c projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/ath/if_ath_sysctl.c projects/altix/sys/dev/ath/if_ath_tx_ht.c projects/altix/sys/dev/ath/if_athioctl.h projects/altix/sys/dev/ath/if_athvar.h projects/altix/sys/dev/atkbdc/atkbd.c projects/altix/sys/dev/bge/if_bge.c projects/altix/sys/dev/bxe/bxe_debug.h projects/altix/sys/dev/bxe/bxe_link.c projects/altix/sys/dev/bxe/if_bxe.c projects/altix/sys/dev/bxe/if_bxe.h projects/altix/sys/dev/cardbus/cardbus_cis.c projects/altix/sys/dev/cfi/cfi_dev.c projects/altix/sys/dev/cxgbe/adapter.h projects/altix/sys/dev/cxgbe/common/common.h projects/altix/sys/dev/cxgbe/common/t4fw_interface.h projects/altix/sys/dev/cxgbe/offload.h projects/altix/sys/dev/cxgbe/osdep.h projects/altix/sys/dev/cxgbe/t4_ioctl.h projects/altix/sys/dev/cxgbe/t4_main.c projects/altix/sys/dev/cxgbe/t4_sge.c projects/altix/sys/dev/gem/if_gem.c projects/altix/sys/dev/hwpmc/hwpmc_mod.c projects/altix/sys/dev/iicbus/ds1775.c projects/altix/sys/dev/iicbus/max6690.c projects/altix/sys/dev/ipw/if_ipw.c projects/altix/sys/dev/iwi/if_iwi.c projects/altix/sys/dev/iwn/if_iwn.c projects/altix/sys/dev/ixgbe/LICENSE projects/altix/sys/dev/ixgbe/README projects/altix/sys/dev/ixgbe/ixgbe.c projects/altix/sys/dev/ixgbe/ixv.c projects/altix/sys/dev/mfi/mfi.c projects/altix/sys/dev/mfi/mfireg.h projects/altix/sys/dev/mii/mii.c projects/altix/sys/dev/mk48txx/mk48txx.c projects/altix/sys/dev/mk48txx/mk48txxreg.h projects/altix/sys/dev/mmc/mmc.c projects/altix/sys/dev/mmc/mmcvar.h projects/altix/sys/dev/msk/if_msk.c projects/altix/sys/dev/msk/if_mskreg.h projects/altix/sys/dev/mvs/mvs.c projects/altix/sys/dev/nfe/if_nfe.c projects/altix/sys/dev/pccard/pccard.c projects/altix/sys/dev/pci/pci.c projects/altix/sys/dev/pci/pci_pci.c projects/altix/sys/dev/pci/pcireg.h projects/altix/sys/dev/puc/pucdata.c projects/altix/sys/dev/scc/scc_bfe_ebus.c projects/altix/sys/dev/sdhci/sdhci.c projects/altix/sys/dev/siis/siis.c projects/altix/sys/dev/sound/pci/hda/hdac.c projects/altix/sys/dev/sound/pcm/sound.c projects/altix/sys/dev/sound/usb/uaudio.c projects/altix/sys/dev/uart/uart_cpu_sparc64.c projects/altix/sys/dev/uart/uart_dev_ns8250.c projects/altix/sys/dev/usb/controller/xhci_pci.c projects/altix/sys/dev/usb/controller/xhcireg.h projects/altix/sys/dev/usb/input/uhid.c projects/altix/sys/dev/usb/input/ukbd.c projects/altix/sys/dev/usb/input/ums.c projects/altix/sys/dev/usb/net/if_axe.c projects/altix/sys/dev/usb/storage/umass.c projects/altix/sys/dev/usb/storage/ustorage_fs.c projects/altix/sys/dev/usb/usb_device.c projects/altix/sys/dev/usb/usb_device.h projects/altix/sys/dev/usb/usb_freebsd.h projects/altix/sys/dev/usb/usb_generic.c projects/altix/sys/dev/usb/usb_hub.c projects/altix/sys/dev/usb/usb_process.c projects/altix/sys/dev/usb/usb_request.c projects/altix/sys/dev/usb/usb_request.h projects/altix/sys/dev/usb/usb_transfer.c projects/altix/sys/dev/usb/usbdevs projects/altix/sys/dev/usb/usbdi.h projects/altix/sys/dev/vge/if_vge.c projects/altix/sys/dev/wpi/if_wpi.c projects/altix/sys/dev/xen/blkback/blkback.c projects/altix/sys/dev/xen/blkfront/blkfront.c projects/altix/sys/dev/xen/control/control.c projects/altix/sys/dev/xen/netfront/netfront.c projects/altix/sys/fs/cd9660/cd9660_vfsops.c projects/altix/sys/fs/ext2fs/ext2_vfsops.c projects/altix/sys/fs/hpfs/hpfs_vfsops.c projects/altix/sys/fs/msdosfs/msdosfs_vfsops.c projects/altix/sys/fs/nfs/nfs_commonkrpc.c projects/altix/sys/fs/nfs/nfs_commonport.c projects/altix/sys/fs/nfs/nfs_commonsubs.c projects/altix/sys/fs/nfs/nfs_var.h projects/altix/sys/fs/nfsclient/nfs_clbio.c projects/altix/sys/fs/nfsclient/nfs_clcomsubs.c projects/altix/sys/fs/nfsclient/nfs_clkrpc.c projects/altix/sys/fs/nfsclient/nfs_clnfsiod.c projects/altix/sys/fs/nfsclient/nfs_clport.c projects/altix/sys/fs/nfsclient/nfs_clrpcops.c projects/altix/sys/fs/nfsclient/nfs_clstate.c projects/altix/sys/fs/nfsclient/nfs_clsubs.c projects/altix/sys/fs/nfsclient/nfs_clvfsops.c projects/altix/sys/fs/nfsclient/nfs_clvnops.c projects/altix/sys/fs/nfsserver/nfs_nfsdport.c projects/altix/sys/fs/nfsserver/nfs_nfsdsocket.c projects/altix/sys/fs/nfsserver/nfs_nfsdstate.c projects/altix/sys/fs/ntfs/ntfs_vfsops.c projects/altix/sys/fs/nullfs/null_vfsops.c projects/altix/sys/fs/nwfs/nwfs_io.c projects/altix/sys/fs/smbfs/smbfs_io.c projects/altix/sys/fs/tmpfs/tmpfs_vfsops.c projects/altix/sys/fs/udf/udf_vfsops.c projects/altix/sys/fs/unionfs/union_vfsops.c projects/altix/sys/geom/eli/g_eli.c projects/altix/sys/geom/eli/g_eli_key_cache.c projects/altix/sys/geom/gate/g_gate.c projects/altix/sys/geom/geom_disk.c projects/altix/sys/geom/geom_dump.c projects/altix/sys/geom/part/g_part.c projects/altix/sys/geom/part/g_part_ebr.c projects/altix/sys/geom/part/g_part_mbr.c projects/altix/sys/geom/part/g_part_pc98.c projects/altix/sys/geom/vinum/geom_vinum_drive.c projects/altix/sys/geom/vinum/geom_vinum_events.c projects/altix/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/altix/sys/gnu/fs/xfs/FreeBSD/support/kdb.c projects/altix/sys/gnu/fs/xfs/FreeBSD/xfs_mountops.c projects/altix/sys/i386/conf/GENERIC projects/altix/sys/i386/conf/NOTES projects/altix/sys/i386/i386/identcpu.c projects/altix/sys/i386/i386/intr_machdep.c projects/altix/sys/i386/i386/legacy.c projects/altix/sys/i386/i386/machdep.c projects/altix/sys/i386/i386/mp_machdep.c projects/altix/sys/i386/i386/pmap.c projects/altix/sys/i386/i386/vm_machdep.c projects/altix/sys/i386/include/_types.h projects/altix/sys/i386/include/pmap.h projects/altix/sys/i386/include/sf_buf.h projects/altix/sys/i386/include/smp.h projects/altix/sys/i386/include/specialreg.h projects/altix/sys/i386/include/xen/xenvar.h projects/altix/sys/i386/pci/pci_cfgreg.c projects/altix/sys/i386/xen/mp_machdep.c projects/altix/sys/i386/xen/pmap.c projects/altix/sys/ia64/acpica/acpi_machdep.c projects/altix/sys/ia64/ia64/machdep.c projects/altix/sys/ia64/ia64/mp_machdep.c projects/altix/sys/ia64/ia64/pal.S projects/altix/sys/ia64/ia64/pmap.c projects/altix/sys/ia64/include/_types.h projects/altix/sys/ia64/include/smp.h projects/altix/sys/kern/device_if.m projects/altix/sys/kern/kern_clocksource.c projects/altix/sys/kern/kern_conf.c projects/altix/sys/kern/kern_cpuset.c projects/altix/sys/kern/kern_environment.c projects/altix/sys/kern/kern_idle.c projects/altix/sys/kern/kern_ktr.c projects/altix/sys/kern/kern_pmc.c projects/altix/sys/kern/kern_racct.c projects/altix/sys/kern/kern_rctl.c projects/altix/sys/kern/kern_rmlock.c projects/altix/sys/kern/kern_shutdown.c projects/altix/sys/kern/kern_sig.c projects/altix/sys/kern/kern_synch.c projects/altix/sys/kern/ksched.c projects/altix/sys/kern/sched_4bsd.c projects/altix/sys/kern/sched_ule.c projects/altix/sys/kern/subr_kdb.c projects/altix/sys/kern/subr_msgbuf.c projects/altix/sys/kern/subr_pcpu.c projects/altix/sys/kern/subr_prf.c projects/altix/sys/kern/subr_rman.c projects/altix/sys/kern/subr_sbuf.c projects/altix/sys/kern/subr_smp.c projects/altix/sys/kern/uipc_socket.c projects/altix/sys/kern/uipc_syscalls.c projects/altix/sys/kern/vfs_bio.c projects/altix/sys/kern/vfs_default.c projects/altix/sys/kern/vfs_syscalls.c projects/altix/sys/mips/cavium/octeon_ebt3000_cf.c projects/altix/sys/mips/cavium/octeon_mp.c projects/altix/sys/mips/include/_types.h projects/altix/sys/mips/include/atomic.h projects/altix/sys/mips/include/hwfunc.h projects/altix/sys/mips/include/pmap.h projects/altix/sys/mips/include/smp.h projects/altix/sys/mips/mips/mp_machdep.c projects/altix/sys/mips/mips/pmap.c projects/altix/sys/mips/rmi/xlr_machdep.c projects/altix/sys/mips/sibyte/sb_scd.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/ath/Makefile projects/altix/sys/modules/cxgbe/if_cxgbe/Makefile projects/altix/sys/modules/usb/Makefile projects/altix/sys/modules/wlan/Makefile projects/altix/sys/net/bridgestp.c projects/altix/sys/net/bridgestp.h projects/altix/sys/net/if_epair.c projects/altix/sys/net/if_ethersubr.c projects/altix/sys/net/if_llatbl.c projects/altix/sys/net/if_llatbl.h projects/altix/sys/net/if_media.h projects/altix/sys/net/if_tun.c projects/altix/sys/net/netisr.c projects/altix/sys/net/netisr.h projects/altix/sys/net/netisr_internal.h projects/altix/sys/net80211/ieee80211_ht.c projects/altix/sys/net80211/ieee80211_output.c projects/altix/sys/net80211/ieee80211_var.h projects/altix/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/altix/sys/netgraph/ng_eiface.c projects/altix/sys/netgraph/ng_nat.c projects/altix/sys/netgraph/ng_pipe.c projects/altix/sys/netinet/icmp6.h projects/altix/sys/netinet/in.c projects/altix/sys/netinet/in_pcb.c projects/altix/sys/netinet/in_pcb.h projects/altix/sys/netinet/in_proto.c projects/altix/sys/netinet/in_var.h projects/altix/sys/netinet/ip_divert.c projects/altix/sys/netinet/ip_input.c projects/altix/sys/netinet/ip_ipsec.c projects/altix/sys/netinet/ipfw/ip_dummynet.c projects/altix/sys/netinet/ipfw/ip_fw2.c projects/altix/sys/netinet/ipfw/ip_fw_dynamic.c projects/altix/sys/netinet/ipfw/ip_fw_nat.c projects/altix/sys/netinet/ipfw/ip_fw_sockopt.c projects/altix/sys/netinet/libalias/alias_sctp.h projects/altix/sys/netinet/raw_ip.c projects/altix/sys/netinet/sctp_indata.c projects/altix/sys/netinet/sctp_indata.h projects/altix/sys/netinet/sctp_output.c projects/altix/sys/netinet/sctp_output.h projects/altix/sys/netinet/sctp_usrreq.c projects/altix/sys/netinet/sctputil.c projects/altix/sys/netinet/sctputil.h projects/altix/sys/netinet/siftr.c projects/altix/sys/netinet/tcp_input.c projects/altix/sys/netinet/tcp_subr.c projects/altix/sys/netinet/tcp_syncache.c projects/altix/sys/netinet/tcp_timer.c projects/altix/sys/netinet/tcp_usrreq.c projects/altix/sys/netinet/udp_usrreq.c projects/altix/sys/netinet6/in6.c projects/altix/sys/netinet6/in6.h projects/altix/sys/netinet6/in6_pcb.c projects/altix/sys/netinet6/in6_pcb.h projects/altix/sys/netinet6/in6_proto.c projects/altix/sys/netinet6/in6_src.c projects/altix/sys/netinet6/ip6_input.c projects/altix/sys/netinet6/ip6_ipsec.c projects/altix/sys/netinet6/ip6_var.h projects/altix/sys/netinet6/nd6.c projects/altix/sys/netinet6/nd6.h projects/altix/sys/netinet6/nd6_nbr.c projects/altix/sys/netinet6/nd6_rtr.c projects/altix/sys/netinet6/send.h projects/altix/sys/netinet6/udp6_usrreq.c projects/altix/sys/nfs/nfs_common.c projects/altix/sys/nfsclient/nfs.h projects/altix/sys/nfsclient/nfs_bio.c projects/altix/sys/nfsclient/nfs_krpc.c projects/altix/sys/nfsclient/nfs_nfsiod.c projects/altix/sys/nfsclient/nfs_subs.c projects/altix/sys/nfsclient/nfs_vfsops.c projects/altix/sys/nfsclient/nfs_vnops.c projects/altix/sys/nfsserver/nfs_srvsubs.c projects/altix/sys/nlm/nlm_prot_impl.c projects/altix/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c projects/altix/sys/ofed/include/linux/list.h projects/altix/sys/pc98/pc98/machdep.c projects/altix/sys/powerpc/aim/interrupt.c projects/altix/sys/powerpc/aim/locore32.S projects/altix/sys/powerpc/aim/locore64.S projects/altix/sys/powerpc/aim/machdep.c projects/altix/sys/powerpc/aim/mmu_oea.c projects/altix/sys/powerpc/aim/mmu_oea64.c projects/altix/sys/powerpc/aim/moea64_native.c projects/altix/sys/powerpc/aim/mp_cpudep.c projects/altix/sys/powerpc/aim/slb.c projects/altix/sys/powerpc/aim/trap_subr64.S projects/altix/sys/powerpc/booke/locore.S projects/altix/sys/powerpc/booke/machdep.c projects/altix/sys/powerpc/booke/platform_bare.c projects/altix/sys/powerpc/booke/pmap.c projects/altix/sys/powerpc/conf/GENERIC projects/altix/sys/powerpc/conf/GENERIC64 projects/altix/sys/powerpc/conf/NOTES projects/altix/sys/powerpc/include/_types.h projects/altix/sys/powerpc/include/atomic.h projects/altix/sys/powerpc/include/openpicvar.h projects/altix/sys/powerpc/include/param.h projects/altix/sys/powerpc/include/pmap.h projects/altix/sys/powerpc/include/slb.h projects/altix/sys/powerpc/include/smp.h projects/altix/sys/powerpc/include/spr.h projects/altix/sys/powerpc/mpc85xx/mpc85xx.c projects/altix/sys/powerpc/mpc85xx/mpc85xx.h projects/altix/sys/powerpc/mpc85xx/openpic_fdt.c projects/altix/sys/powerpc/ofw/ofw_machdep.c projects/altix/sys/powerpc/ofw/ofw_real.c projects/altix/sys/powerpc/powermac/fcu.c projects/altix/sys/powerpc/powermac/smu.c projects/altix/sys/powerpc/powermac/smusat.c projects/altix/sys/powerpc/powerpc/intr_machdep.c projects/altix/sys/powerpc/powerpc/mp_machdep.c projects/altix/sys/powerpc/powerpc/openpic.c projects/altix/sys/powerpc/powerpc/pic_if.m projects/altix/sys/powerpc/powerpc/platform.c projects/altix/sys/powerpc/ps3/ps3bus.c projects/altix/sys/sparc64/include/_types.h projects/altix/sys/sparc64/include/ktr.h projects/altix/sys/sparc64/include/pmap.h projects/altix/sys/sparc64/include/smp.h projects/altix/sys/sparc64/sparc64/eeprom.c projects/altix/sys/sparc64/sparc64/exception.S projects/altix/sys/sparc64/sparc64/genassym.c projects/altix/sys/sparc64/sparc64/intr_machdep.c projects/altix/sys/sparc64/sparc64/mp_exception.S projects/altix/sys/sparc64/sparc64/mp_locore.S projects/altix/sys/sparc64/sparc64/mp_machdep.c projects/altix/sys/sparc64/sparc64/pmap.c projects/altix/sys/sparc64/sparc64/swtch.S projects/altix/sys/sparc64/sparc64/tlb.c projects/altix/sys/sys/_rmlock.h projects/altix/sys/sys/conf.h projects/altix/sys/sys/cpuset.h projects/altix/sys/sys/dtrace_bsd.h projects/altix/sys/sys/ktr.h projects/altix/sys/sys/mbuf.h projects/altix/sys/sys/mount.h projects/altix/sys/sys/msgbuf.h projects/altix/sys/sys/param.h projects/altix/sys/sys/pcpu.h projects/altix/sys/sys/pmckern.h projects/altix/sys/sys/proc.h projects/altix/sys/sys/racct.h projects/altix/sys/sys/sbuf.h projects/altix/sys/sys/smp.h projects/altix/sys/sys/soundcard.h projects/altix/sys/sys/types.h projects/altix/sys/sys/vnode.h projects/altix/sys/teken/libteken/teken.3 projects/altix/sys/ufs/ffs/ffs_alloc.c projects/altix/sys/ufs/ffs/ffs_balloc.c projects/altix/sys/ufs/ffs/ffs_extern.h projects/altix/sys/ufs/ffs/ffs_inode.c projects/altix/sys/ufs/ffs/ffs_snapshot.c projects/altix/sys/ufs/ffs/ffs_softdep.c projects/altix/sys/ufs/ffs/ffs_vfsops.c projects/altix/sys/ufs/ffs/ffs_vnops.c projects/altix/sys/ufs/ffs/fs.h projects/altix/sys/ufs/ffs/softdep.h projects/altix/sys/ufs/ufs/inode.h projects/altix/sys/ufs/ufs/quota.h projects/altix/sys/ufs/ufs/ufs_extern.h projects/altix/sys/ufs/ufs/ufs_lookup.c projects/altix/sys/ufs/ufs/ufs_quota.c projects/altix/sys/ufs/ufs/ufs_vfsops.c projects/altix/sys/ufs/ufs/ufs_vnops.c projects/altix/sys/ufs/ufs/ufsmount.h projects/altix/sys/vm/uma_core.c projects/altix/sys/vm/uma_int.h projects/altix/sys/vm/vm_object.c projects/altix/sys/vm/vm_page.c projects/altix/sys/vm/vm_page.h projects/altix/sys/vm/vnode_pager.c projects/altix/sys/vm/vnode_pager.h projects/altix/sys/x86/x86/local_apic.c projects/altix/sys/x86/x86/tsc.c projects/altix/sys/xen/interface/io/xenbus.h projects/altix/sys/xen/xenbus/xenbus.c projects/altix/sys/xen/xenbus/xenbus_if.m projects/altix/sys/xen/xenbus/xenbusb.c projects/altix/sys/xen/xenbus/xenbusb.h projects/altix/sys/xen/xenbus/xenbusb_back.c projects/altix/sys/xen/xenbus/xenbusb_front.c projects/altix/sys/xen/xenbus/xenbusb_if.m projects/altix/sys/xen/xenbus/xenbusvar.h projects/altix/sys/xen/xenstore/xenstorevar.h Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/boot/ (props changed) projects/altix/sys/boot/i386/efi/ (props changed) projects/altix/sys/boot/ia64/efi/ (props changed) projects/altix/sys/boot/ia64/ski/ (props changed) projects/altix/sys/boot/powerpc/boot1.chrp/ (props changed) projects/altix/sys/boot/powerpc/ofw/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/conf/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/octeon-sdk/ (props changed) projects/altix/sys/contrib/pf/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/kern/subr_busdma.c (props changed) Modified: projects/altix/lib/libstand/bswap.c ============================================================================== --- projects/altix/lib/libstand/bswap.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/lib/libstand/bswap.c Sun Jun 12 20:19:17 2011 (r223022) @@ -8,7 +8,7 @@ __FBSDID("$FreeBSD$"); #if defined(LIBC_SCCS) && !defined(lint) static char *rcsid = "$NetBSD: bswap32.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $"; -static char *rcsid = "$NetBSD: bswap64.c,v 1.1 1997/10/09 15:42:33 bouyer Exp $"; +static char *rcsid = "$NetBSD: bswap64.c,v 1.3 2009/03/16 05:59:21 cegger Exp $"; #endif #include @@ -30,12 +30,28 @@ bswap32(u_int32_t x) u_int64_t bswap64(u_int64_t x) -{ - u_int32_t *p = (u_int32_t*)&x; - u_int32_t t; - t = bswap32(p[0]); - p[0] = bswap32(p[1]); - p[1] = t; - return x; -} - +{ +#ifdef _LP64 + /* + * Assume we have wide enough registers to do it without touching + * memory. + */ + return ( (x << 56) & 0xff00000000000000UL ) | + ( (x << 40) & 0x00ff000000000000UL ) | + ( (x << 24) & 0x0000ff0000000000UL ) | + ( (x << 8) & 0x000000ff00000000UL ) | + ( (x >> 8) & 0x00000000ff000000UL ) | + ( (x >> 24) & 0x0000000000ff0000UL ) | + ( (x >> 40) & 0x000000000000ff00UL ) | + ( (x >> 56) & 0x00000000000000ffUL ); +#else + /* + * Split the operation in two 32bit steps. + */ + u_int32_t tl, th; + + th = bswap32((u_int32_t)(x & 0x00000000ffffffffULL)); + tl = bswap32((u_int32_t)((x >> 32) & 0x00000000ffffffffULL)); + return ((u_int64_t)th << 32) | tl; +#endif +} Modified: projects/altix/sys/Makefile ============================================================================== --- projects/altix/sys/Makefile Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/Makefile Sun Jun 12 20:19:17 2011 (r223022) @@ -12,7 +12,7 @@ CSCOPEDIRS= boot bsm cam cddl compat con geom gnu isa kern libkern modules net net80211 netatalk \ netgraph netinet netinet6 netipsec netipx netnatm netncp \ netsmb nfs nfsclient nfsserver nlm opencrypto \ - pci rpc security sys ufs vm xdr ${CSCOPE_ARCHDIR} + pci rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR} .if defined(ALL_ARCH) CSCOPE_ARCHDIR ?= amd64 arm i386 ia64 mips pc98 powerpc sparc64 x86 .else Modified: projects/altix/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- projects/altix/sys/amd64/acpica/acpi_wakeup.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/acpica/acpi_wakeup.c Sun Jun 12 20:19:17 2011 (r223022) @@ -78,7 +78,7 @@ static void acpi_stop_beep(void *); #ifdef SMP static int acpi_wakeup_ap(struct acpi_softc *, int); -static void acpi_wakeup_cpus(struct acpi_softc *, cpumask_t); +static void acpi_wakeup_cpus(struct acpi_softc *, const cpuset_t *); #endif #define WAKECODE_VADDR(sc) ((sc)->acpi_wakeaddr + (3 * PAGE_SIZE)) @@ -173,7 +173,7 @@ acpi_wakeup_ap(struct acpi_softc *sc, in #define BIOS_WARM (0x0a) static void -acpi_wakeup_cpus(struct acpi_softc *sc, cpumask_t wakeup_cpus) +acpi_wakeup_cpus(struct acpi_softc *sc, const cpuset_t *wakeup_cpus) { uint32_t mpbioswarmvec; int cpu; @@ -192,7 +192,7 @@ acpi_wakeup_cpus(struct acpi_softc *sc, /* Wake up each AP. */ for (cpu = 1; cpu < mp_ncpus; cpu++) { - if ((wakeup_cpus & (1 << cpu)) == 0) + if (!CPU_ISSET(cpu, wakeup_cpus)) continue; if (acpi_wakeup_ap(sc, cpu) == 0) { /* restore the warmstart vector */ @@ -214,7 +214,7 @@ int acpi_sleep_machdep(struct acpi_softc *sc, int state) { #ifdef SMP - cpumask_t wakeup_cpus; + cpuset_t wakeup_cpus; #endif register_t cr3, rf; ACPI_STATUS status; @@ -244,10 +244,9 @@ acpi_sleep_machdep(struct acpi_softc *sc if (savectx(susppcbs[0])) { #ifdef SMP - if (wakeup_cpus != 0 && suspend_cpus(wakeup_cpus) == 0) { - device_printf(sc->acpi_dev, - "Failed to suspend APs: CPU mask = 0x%jx\n", - (uintmax_t)(wakeup_cpus & ~stopped_cpus)); + if (!CPU_EMPTY(&wakeup_cpus) && + suspend_cpus(wakeup_cpus) == 0) { + device_printf(sc->acpi_dev, "Failed to suspend APs\n"); goto out; } #endif @@ -282,8 +281,8 @@ acpi_sleep_machdep(struct acpi_softc *sc PCPU_SET(switchtime, 0); PCPU_SET(switchticks, ticks); #ifdef SMP - if (wakeup_cpus != 0) - acpi_wakeup_cpus(sc, wakeup_cpus); + if (!CPU_EMPTY(&wakeup_cpus)) + acpi_wakeup_cpus(sc, &wakeup_cpus); #endif acpi_resync_clock(sc); ret = 0; @@ -291,7 +290,7 @@ acpi_sleep_machdep(struct acpi_softc *sc out: #ifdef SMP - if (wakeup_cpus != 0) + if (!CPU_EMPTY(&wakeup_cpus)) restart_cpus(wakeup_cpus); #endif Modified: projects/altix/sys/amd64/amd64/identcpu.c ============================================================================== --- projects/altix/sys/amd64/amd64/identcpu.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/identcpu.c Sun Jun 12 20:19:17 2011 (r223022) @@ -216,6 +216,14 @@ printcpuinfo(void) printf(" Family = %x", CPUID_TO_FAMILY(cpu_id)); printf(" Model = %x", CPUID_TO_MODEL(cpu_id)); printf(" Stepping = %u", cpu_id & CPUID_STEPPING); + + /* + * AMD CPUID Specification + * http://support.amd.com/us/Embedded_TechDocs/25481.pdf + * + * Intel Processor Identification and CPUID Instruction + * http://www.intel.com/assets/pdf/appnote/241618.pdf + */ if (cpu_high > 0) { /* @@ -277,38 +285,29 @@ printcpuinfo(void) "\012SSSE3" /* SSSE3 */ "\013CNXT-ID" /* L1 context ID available */ "\014" - "\015" + "\015FMA" /* Fused Multiply Add */ "\016CX16" /* CMPXCHG16B Instruction */ "\017xTPR" /* Send Task Priority Messages*/ "\020PDCM" /* Perf/Debug Capability MSR */ "\021" - "\022PCID" /* Process-context Identifiers */ + "\022PCID" /* Process-context Identifiers*/ "\023DCA" /* Direct Cache Access */ - "\024SSE4.1" - "\025SSE4.2" + "\024SSE4.1" /* SSE 4.1 */ + "\025SSE4.2" /* SSE 4.2 */ "\026x2APIC" /* xAPIC Extensions */ - "\027MOVBE" - "\030POPCNT" - "\031" - "\032AESNI" /* AES Crypto*/ - "\033XSAVE" - "\034OSXSAVE" - "\035" - "\036" + "\027MOVBE" /* MOVBE Instruction */ + "\030POPCNT" /* POPCNT Instruction */ + "\031TSCDLT" /* TSC-Deadline Timer */ + "\032AESNI" /* AES Crypto */ + "\033XSAVE" /* XSAVE/XRSTOR States */ + "\034OSXSAVE" /* OS-Enabled State Management*/ + "\035AVX" /* Advanced Vector Extensions */ + "\036F16C" /* Half-precision conversions */ "\037" "\040HV" /* Hypervisor */ ); } - /* - * AMD64 Architecture Programmer's Manual Volume 3: - * General-Purpose and System Instructions - * http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24594.pdf - * - * IA-32 Intel Architecture Software Developer's Manual, - * Volume 2A: Instruction Set Reference, A-M - * ftp://download.intel.com/design/Pentium4/manuals/25366617.pdf - */ if (amd_feature != 0) { printf("\n AMD Features=0x%b", amd_feature, "\020" /* in hex */ @@ -361,18 +360,18 @@ printcpuinfo(void) "\011Prefetch" /* 3DNow! Prefetch/PrefetchW */ "\012OSVW" /* OS visible workaround */ "\013IBS" /* Instruction based sampling */ - "\014SSE5" /* SSE5 */ + "\014XOP" /* XOP extended instructions */ "\015SKINIT" /* SKINIT/STGI */ "\016WDT" /* Watchdog timer */ "\017" - "\020" - "\021" + "\020LWP" /* Lightweight Profiling */ + "\021FMA4" /* 4-operand FMA instructions */ "\022" "\023" - "\024" + "\024NodeId" /* NodeId MSR support */ "\025" - "\026" - "\027" + "\026TBM" /* Trailing Bit Manipulation */ + "\027Topology" /* Topology Extensions */ "\030" "\031" "\032" Modified: projects/altix/sys/amd64/amd64/intr_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/intr_machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/intr_machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -443,8 +443,7 @@ DB_SHOW_COMMAND(irqs, db_show_irqs) * allocate CPUs round-robin. */ -/* The BSP is always a valid target. */ -static cpumask_t intr_cpus = (1 << 0); +static cpuset_t intr_cpus; static int current_cpu; /* @@ -466,7 +465,7 @@ intr_next_cpu(void) current_cpu++; if (current_cpu > mp_maxid) current_cpu = 0; - } while (!(intr_cpus & (1 << current_cpu))); + } while (!CPU_ISSET(current_cpu, &intr_cpus)); mtx_unlock_spin(&icu_lock); return (apic_id); } @@ -497,7 +496,7 @@ intr_add_cpu(u_int cpu) printf("INTR: Adding local APIC %d as a target\n", cpu_apic_ids[cpu]); - intr_cpus |= (1 << cpu); + CPU_SET(cpu, &intr_cpus); } /* @@ -510,6 +509,9 @@ intr_shuffle_irqs(void *arg __unused) struct intsrc *isrc; int i; + /* The BSP is always a valid target. */ + CPU_SETOF(0, &intr_cpus); + /* Don't bother on UP. */ if (mp_ncpus == 1) return; Modified: projects/altix/sys/amd64/amd64/legacy.c ============================================================================== --- projects/altix/sys/amd64/amd64/legacy.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/legacy.c Sun Jun 12 20:19:17 2011 (r223022) @@ -81,6 +81,7 @@ static device_method_t legacy_methods[] DEVMETHOD(bus_read_ivar, legacy_read_ivar), DEVMETHOD(bus_write_ivar, legacy_write_ivar), DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), + DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), DEVMETHOD(bus_release_resource, bus_generic_release_resource), DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), Modified: projects/altix/sys/amd64/amd64/machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include "opt_isa.h" #include "opt_kstack_pages.h" #include "opt_maxmem.h" +#include "opt_mp_watchdog.h" #include "opt_perfmon.h" #include "opt_sched.h" #include "opt_kdtrace.h" @@ -116,6 +117,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -734,9 +736,8 @@ cpu_idle(int busy) CTR2(KTR_SPARE2, "cpu_idle(%d) at %d", busy, curcpu); -#ifdef SMP - if (mp_grab_cpu_hlt()) - return; +#ifdef MP_WATCHDOG + ap_watchdog(PCPU_GET(cpuid)); #endif /* If we are busy - try to use fast methods. */ if (busy) { Modified: projects/altix/sys/amd64/amd64/mp_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/mp_machdep.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/mp_machdep.c Sun Jun 12 20:19:17 2011 (r223022) @@ -29,13 +29,13 @@ __FBSDID("$FreeBSD$"); #include "opt_cpu.h" #include "opt_kstack_pages.h" -#include "opt_mp_watchdog.h" #include "opt_sched.h" #include "opt_smp.h" #include #include #include +#include #ifdef GPROF #include #endif @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -125,7 +124,7 @@ extern inthand_t IDTVEC(fast_syscall), I * Local data and functions. */ -static volatile cpumask_t ipi_nmi_pending; +static volatile cpuset_t ipi_nmi_pending; /* used to hold the AP's until we are ready to release them */ static struct mtx ap_boot_mtx; @@ -159,11 +158,8 @@ static int start_all_aps(void); static int start_ap(int apic_id); static void release_aps(void *dummy); -static int hlt_logical_cpus; static u_int hyperthreading_cpus; /* logical cpus sharing L1 cache */ -static cpumask_t hyperthreading_cpus_mask; static int hyperthreading_allowed = 1; -static struct sysctl_ctx_list logical_cpu_clist; static u_int bootMP_size; static void @@ -241,8 +237,11 @@ topo_probe_0x4(void) * logical processors that belong to the same core * as BSP thus deducing number of threads per core. */ - cpuid_count(0x04, 0, p); - max_cores = ((p[0] >> 26) & 0x3f) + 1; + if (cpu_high >= 0x4) { + cpuid_count(0x04, 0, p); + max_cores = ((p[0] >> 26) & 0x3f) + 1; + } else + max_cores = 1; core_id_bits = mask_width(max_logical/max_cores); if (core_id_bits < 0) return; @@ -334,7 +333,7 @@ topo_probe(void) if (cpu_topo_probed) return; - logical_cpus_mask = 0; + CPU_ZERO(&logical_cpus_mask); if (mp_ncpus <= 1) cpu_cores = cpu_logical = 1; else if (cpu_vendor_id == CPU_VENDOR_AMD) @@ -478,7 +477,7 @@ cpu_mp_probe(void) * Always record BSP in CPU map so that the mbuf init code works * correctly. */ - all_cpus = 1; + CPU_SETOF(0, &all_cpus); if (mp_ncpus == 0) { /* * No CPUs were found, so this must be a UP system. Setup @@ -605,6 +604,7 @@ cpu_mp_announce(void) void init_secondary(void) { + cpuset_t tcpuset, tallcpus; struct pcpu *pc; struct nmi_pcpu *np; u_int64_t msr, cr0; @@ -736,19 +736,17 @@ init_secondary(void) CTR1(KTR_SMP, "SMP: AP CPU #%d Launched", PCPU_GET(cpuid)); printf("SMP: AP CPU #%d Launched!\n", PCPU_GET(cpuid)); + tcpuset = PCPU_GET(cpumask); /* Determine if we are a logical CPU. */ /* XXX Calculation depends on cpu_logical being a power of 2, e.g. 2 */ if (cpu_logical > 1 && PCPU_GET(apic_id) % cpu_logical != 0) - logical_cpus_mask |= PCPU_GET(cpumask); - - /* Determine if we are a hyperthread. */ - if (hyperthreading_cpus > 1 && - PCPU_GET(apic_id) % hyperthreading_cpus != 0) - hyperthreading_cpus_mask |= PCPU_GET(cpumask); + CPU_OR(&logical_cpus_mask, &tcpuset); /* Build our map of 'other' CPUs. */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); if (bootverbose) lapic_dump("AP"); @@ -835,7 +833,7 @@ assign_cpu_ids(void) if (hyperthreading_cpus > 1 && i % hyperthreading_cpus != 0) { cpu_info[i].cpu_hyperthread = 1; -#if defined(SCHED_ULE) + /* * Don't use HT CPU if it has been disabled by a * tunable. @@ -844,7 +842,6 @@ assign_cpu_ids(void) cpu_info[i].cpu_disabled = 1; continue; } -#endif } /* Don't use this CPU if it has been disabled by a tunable. */ @@ -854,6 +851,11 @@ assign_cpu_ids(void) } } + if (hyperthreading_allowed == 0 && hyperthreading_cpus > 1) { + hyperthreading_cpus = 0; + cpu_logical = 1; + } + /* * Assign CPU IDs to local APIC IDs and disable any CPUs * beyond MAXCPU. CPU 0 is always assigned to the BSP. @@ -891,6 +893,7 @@ assign_cpu_ids(void) static int start_all_aps(void) { + cpuset_t tallcpus, tcpuset; vm_offset_t va = boot_address + KERNBASE; u_int64_t *pt4, *pt3, *pt2; u_int32_t mpbioswarmvec; @@ -955,11 +958,14 @@ start_all_aps(void) panic("AP #%d (PHY# %d) failed!", cpu, apic_id); } - all_cpus |= (1 << cpu); /* record AP in CPU map */ + CPU_SET(cpu, &all_cpus); /* record AP in CPU map */ } /* build our map of 'other' CPUs */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + tcpuset = PCPU_GET(cpumask); + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); /* restore the warmstart vector */ *(u_int32_t *) WARMBOOT_OFF = mpbioswarmvec; @@ -1088,6 +1094,30 @@ SYSCTL_UINT(_debug_xhits, OID_AUTO, ipi_ #endif /* COUNT_XINVLTLB_HITS */ /* + * Send an IPI to specified CPU handling the bitmap logic. + */ +static void +ipi_send_cpu(int cpu, u_int ipi) +{ + u_int bitmap, old_pending, new_pending; + + KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); + + if (IPI_IS_BITMAPED(ipi)) { + bitmap = 1 << ipi; + ipi = IPI_BITMAP_VECTOR; + do { + old_pending = cpu_ipi_pending[cpu]; + new_pending = old_pending | bitmap; + } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], + old_pending, new_pending)); + if (old_pending) + return; + } + lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); +} + +/* * Flush the TLB on all other CPU's */ static void @@ -1111,28 +1141,19 @@ smp_tlb_shootdown(u_int vector, vm_offse } static void -smp_targeted_tlb_shootdown(cpumask_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) { - int ncpu, othercpus; + int cpu, ncpu, othercpus; othercpus = mp_ncpus - 1; - if (mask == (cpumask_t)-1) { - ncpu = othercpus; - if (ncpu < 1) + if (CPU_ISFULLSET(&mask)) { + if (othercpus < 1) return; } else { - mask &= ~PCPU_GET(cpumask); - if (mask == 0) - return; - ncpu = bitcount32(mask); - if (ncpu > othercpus) { - /* XXX this should be a panic offence */ - printf("SMP: tlb shootdown to %d other cpus (only have %d)\n", - ncpu, othercpus); - ncpu = othercpus; - } - /* XXX should be a panic, implied by mask == 0 above */ - if (ncpu < 1) + sched_pin(); + CPU_NAND(&mask, PCPU_PTR(cpumask)); + sched_unpin(); + if (CPU_EMPTY(&mask)) return; } if (!(read_rflags() & PSL_I)) @@ -1141,39 +1162,25 @@ smp_targeted_tlb_shootdown(cpumask_t mas smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); - if (mask == (cpumask_t)-1) + if (CPU_ISFULLSET(&mask)) { + ncpu = othercpus; ipi_all_but_self(vector); - else - ipi_selected(mask, vector); + } else { + ncpu = 0; + while ((cpu = cpusetobj_ffs(&mask)) != 0) { + cpu--; + CPU_CLR(cpu, &mask); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, + cpu, vector); + ipi_send_cpu(cpu, vector); + ncpu++; + } + } while (smp_tlb_wait < ncpu) ia32_pause(); mtx_unlock_spin(&smp_ipi_mtx); } -/* - * Send an IPI to specified CPU handling the bitmap logic. - */ -static void -ipi_send_cpu(int cpu, u_int ipi) -{ - u_int bitmap, old_pending, new_pending; - - KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); - - if (IPI_IS_BITMAPED(ipi)) { - bitmap = 1 << ipi; - ipi = IPI_BITMAP_VECTOR; - do { - old_pending = cpu_ipi_pending[cpu]; - new_pending = old_pending | bitmap; - } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], - old_pending, new_pending)); - if (old_pending) - return; - } - lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); -} - void smp_cache_flush(void) { @@ -1220,7 +1227,7 @@ smp_invlpg_range(vm_offset_t addr1, vm_o } void -smp_masked_invltlb(cpumask_t mask) +smp_masked_invltlb(cpuset_t mask) { if (smp_started) { @@ -1232,7 +1239,7 @@ smp_masked_invltlb(cpumask_t mask) } void -smp_masked_invlpg(cpumask_t mask, vm_offset_t addr) +smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) { if (smp_started) { @@ -1244,7 +1251,7 @@ smp_masked_invlpg(cpumask_t mask, vm_off } void -smp_masked_invlpg_range(cpumask_t mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpuset_t mask, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { @@ -1297,7 +1304,7 @@ ipi_bitmap_handler(struct trapframe fram * send an IPI to a set of cpus. */ void -ipi_selected(cpumask_t cpus, u_int ipi) +ipi_selected(cpuset_t cpus, u_int ipi) { int cpu; @@ -1307,12 +1314,12 @@ ipi_selected(cpumask_t cpus, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, cpus); + CPU_OR_ATOMIC(&ipi_nmi_pending, &cpus); - CTR3(KTR_SMP, "%s: cpus: %x ipi: %x", __func__, cpus, ipi); - while ((cpu = ffs(cpus)) != 0) { + while ((cpu = cpusetobj_ffs(&cpus)) != 0) { cpu--; - cpus &= ~(1 << cpu); + CPU_CLR(cpu, &cpus); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); } } @@ -1330,7 +1337,7 @@ ipi_cpu(int cpu, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, 1 << cpu); + CPU_SET_ATOMIC(cpu, &ipi_nmi_pending); CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); @@ -1343,8 +1350,10 @@ void ipi_all_but_self(u_int ipi) { + sched_pin(); if (IPI_IS_BITMAPED(ipi)) { ipi_selected(PCPU_GET(other_cpus), ipi); + sched_unpin(); return; } @@ -1354,7 +1363,8 @@ ipi_all_but_self(u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, PCPU_GET(other_cpus)); + CPU_OR_ATOMIC(&ipi_nmi_pending, PCPU_PTR(other_cpus)); + sched_unpin(); CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS); @@ -1363,7 +1373,7 @@ ipi_all_but_self(u_int ipi) int ipi_nmi_handler() { - cpumask_t cpumask; + cpuset_t cpumask; /* * As long as there is not a simple way to know about a NMI's @@ -1371,11 +1381,13 @@ ipi_nmi_handler() * the global pending bitword an IPI_STOP_HARD has been issued * and should be handled. */ + sched_pin(); cpumask = PCPU_GET(cpumask); - if ((ipi_nmi_pending & cpumask) == 0) + sched_unpin(); + if (!CPU_OVERLAP(&ipi_nmi_pending, &cpumask)) return (1); - atomic_clear_int(&ipi_nmi_pending, cpumask); + CPU_NAND_ATOMIC(&ipi_nmi_pending, &cpumask); cpustop_handler(); return (0); } @@ -1387,23 +1399,25 @@ ipi_nmi_handler() void cpustop_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; u_int cpu; + sched_pin(); cpu = PCPU_GET(cpuid); cpumask = PCPU_GET(cpumask); + sched_unpin(); savectx(&stoppcbs[cpu]); /* Indicate that we are stopped */ - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); /* Wait for restart */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); if (cpu == 0 && cpustop_restartfunc != NULL) { cpustop_restartfunc(); @@ -1418,7 +1432,7 @@ cpustop_handler(void) void cpususpend_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; register_t cr3, rf; u_int cpu; @@ -1430,7 +1444,7 @@ cpususpend_handler(void) if (savectx(susppcbs[cpu])) { wbinvd(); - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); } else { pmap_init_pat(); PCPU_SET(switchtime, 0); @@ -1438,11 +1452,11 @@ cpususpend_handler(void) } /* Wait for resume */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); /* Restore CR3 and enable interrupts */ load_cr3(cr3); @@ -1467,158 +1481,6 @@ release_aps(void *dummy __unused) } SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); -static int -sysctl_hlt_cpus(SYSCTL_HANDLER_ARGS) -{ - cpumask_t mask; - int error; - - mask = hlt_cpus_mask; - error = sysctl_handle_int(oidp, &mask, 0, req); - if (error || !req->newptr) - return (error); - - if (logical_cpus_mask != 0 && - (mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if (! hyperthreading_allowed) - mask |= hyperthreading_cpus_mask; - - if ((mask & all_cpus) == all_cpus) - mask &= ~(1<<0); - hlt_cpus_mask = mask; - return (error); -} -SYSCTL_PROC(_machdep, OID_AUTO, hlt_cpus, CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hlt_cpus, "IU", - "Bitmap of CPUs to halt. 101 (binary) will halt CPUs 0 and 2."); - -static int -sysctl_hlt_logical_cpus(SYSCTL_HANDLER_ARGS) -{ - int disable, error; - - disable = hlt_logical_cpus; - error = sysctl_handle_int(oidp, &disable, 0, req); - if (error || !req->newptr) - return (error); - - if (disable) - hlt_cpus_mask |= logical_cpus_mask; - else - hlt_cpus_mask &= ~logical_cpus_mask; - - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hlt_logical_cpus = disable; - return (error); -} - -static int -sysctl_hyperthreading_allowed(SYSCTL_HANDLER_ARGS) -{ - int allowed, error; - - allowed = hyperthreading_allowed; - error = sysctl_handle_int(oidp, &allowed, 0, req); - if (error || !req->newptr) - return (error); - -#ifdef SCHED_ULE - /* - * SCHED_ULE doesn't allow enabling/disabling HT cores at - * run-time. - */ - if (allowed != hyperthreading_allowed) - return (ENOTSUP); - return (error); -#endif - - if (allowed) - hlt_cpus_mask &= ~hyperthreading_cpus_mask; - else - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if (logical_cpus_mask != 0 && - (hlt_cpus_mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hyperthreading_allowed = allowed; - return (error); -} - -static void -cpu_hlt_setup(void *dummy __unused) -{ - - if (logical_cpus_mask != 0) { - TUNABLE_INT_FETCH("machdep.hlt_logical_cpus", - &hlt_logical_cpus); - sysctl_ctx_init(&logical_cpu_clist); - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hlt_logical_cpus", CTLTYPE_INT|CTLFLAG_RW, 0, 0, - sysctl_hlt_logical_cpus, "IU", ""); - SYSCTL_ADD_UINT(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "logical_cpus_mask", CTLTYPE_INT|CTLFLAG_RD, - &logical_cpus_mask, 0, ""); - - if (hlt_logical_cpus) - hlt_cpus_mask |= logical_cpus_mask; - - /* - * If necessary for security purposes, force - * hyperthreading off, regardless of the value - * of hlt_logical_cpus. - */ - if (hyperthreading_cpus_mask) { - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hyperthreading_allowed", CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hyperthreading_allowed, "IU", ""); - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - } - } -} -SYSINIT(cpu_hlt, SI_SUB_SMP, SI_ORDER_ANY, cpu_hlt_setup, NULL); - -int -mp_grab_cpu_hlt(void) -{ - cpumask_t mask; -#ifdef MP_WATCHDOG - u_int cpuid; -#endif - int retval; - - mask = PCPU_GET(cpumask); -#ifdef MP_WATCHDOG - cpuid = PCPU_GET(cpuid); - ap_watchdog(cpuid); -#endif - - retval = 0; - while (mask & hlt_cpus_mask) { - retval = 1; - __asm __volatile("sti; hlt" : : : "memory"); - } - return (retval); -} - #ifdef COUNT_IPIS /* * Setup interrupt counters for IPI handlers. Modified: projects/altix/sys/amd64/amd64/pmap.c ============================================================================== --- projects/altix/sys/amd64/amd64/pmap.c Sun Jun 12 20:12:01 2011 (r223021) +++ projects/altix/sys/amd64/amd64/pmap.c Sun Jun 12 20:19:17 2011 (r223022) @@ -123,6 +123,8 @@ __FBSDID("$FreeBSD$"); #include #ifdef SMP #include +#else +#include #endif #include @@ -581,7 +583,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); kernel_pmap->pm_root = NULL; - kernel_pmap->pm_active = -1; /* don't allow deactivation */ + CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); /* @@ -923,19 +925,20 @@ pmap_update_pde_invalidate(vm_offset_t v void pmap_invalidate_page(pmap_t pmap, vm_offset_t va) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { invlpg(va); smp_invlpg(va); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) invlpg(va); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg(pmap->pm_active & other_cpus, va); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg(other_cpus, va); } sched_unpin(); } @@ -943,23 +946,23 @@ pmap_invalidate_page(pmap_t pmap, vm_off void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; vm_offset_t addr; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); smp_invlpg_range(sva, eva); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg_range(pmap->pm_active & other_cpus, - sva, eva); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg_range(other_cpus, sva, eva); } sched_unpin(); } @@ -967,19 +970,20 @@ pmap_invalidate_range(pmap_t pmap, vm_of void *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun Jun 12 22:47:04 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BFBD8106564A; Sun, 12 Jun 2011 22:47:04 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B109D8FC16; Sun, 12 Jun 2011 22:47:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CMl41S044495; Sun, 12 Jun 2011 22:47:04 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CMl4SN044492; Sun, 12 Jun 2011 22:47:04 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106122247.p5CMl4SN044492@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 12 Jun 2011 22:47:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223023 - projects/llvm-ia64/contrib/llvm/lib/Target/IA64 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 12 Jun 2011 22:47:04 -0000 Author: marcel Date: Sun Jun 12 22:47:04 2011 New Revision: 223023 URL: http://svn.freebsd.org/changeset/base/223023 Log: Fix build: Add newly introduced getLLVMRegNum(). Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.h Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp Sun Jun 12 20:19:17 2011 (r223022) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp Sun Jun 12 22:47:04 2011 (r223023) @@ -90,6 +90,12 @@ IA64RegisterInfo::getDwarfRegNum(unsigne return IA64GenRegisterInfo::getDwarfRegNumFull(RegNum, 0); } +int +IA64RegisterInfo::getLLVMRegNum(unsigned RegNum, bool isEH) const +{ + llvm_unreachable(__func__); +} + unsigned IA64RegisterInfo::getFrameRegister(const MachineFunction &MF) const { Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.h Sun Jun 12 20:19:17 2011 (r223022) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.h Sun Jun 12 22:47:04 2011 (r223023) @@ -30,6 +30,7 @@ namespace llvm { RegScavenger *RS = NULL) const; int getDwarfRegNum(unsigned RegNum, bool isEH) const; + int getLLVMRegNum(unsigned RegNum, bool isEH) const; unsigned getFrameRegister(const MachineFunction &MF) const; unsigned getRARegister() const; From owner-svn-src-projects@FreeBSD.ORG Sun Jun 12 23:45:47 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4B36F106566B; Sun, 12 Jun 2011 23:45:47 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3243A8FC14; Sun, 12 Jun 2011 23:45:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CNjldU046346; Sun, 12 Jun 2011 23:45:47 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CNjl8C046341; Sun, 12 Jun 2011 23:45:47 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106122345.p5CNjl8C046341@svn.freebsd.org> From: Marcel Moolenaar Date: Sun, 12 Jun 2011 23:45:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223027 - in projects/llvm-ia64: contrib/llvm/lib/Target/IA64 lib/clang/libllvmia64codegen X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 12 Jun 2011 23:45:47 -0000 Author: marcel Date: Sun Jun 12 23:45:46 2011 New Revision: 223027 URL: http://svn.freebsd.org/changeset/base/223027 Log: Add the dag->dag instruction selector class, needed to lower LLVM instruction to IA64 instructions. Added: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.h Sun Jun 12 23:45:46 2011 (r223027) @@ -8,8 +8,8 @@ namespace llvm { class FunctionPass; class IA64TargetMachine; - FunctionPass *createIA64ISelDag(IA64TargetMachine &TM, - CodeGenOpt::Level OptLevel); + FunctionPass *createIA64ISelPass(IA64TargetMachine &TM, + CodeGenOpt::Level OptLevel); FunctionPass *createIA64BundleSelectionPass(); Added: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64DAGToDAGISel.cpp Sun Jun 12 23:45:46 2011 (r223027) @@ -0,0 +1,75 @@ +#include "IA64.h" +#include "IA64TargetMachine.h" + +#include "llvm/DerivedTypes.h" +#include "llvm/Function.h" +#include "llvm/Intrinsics.h" +#include "llvm/CallingConv.h" +#include "llvm/Constants.h" +#include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/CodeGen/MachineInstrBuilder.h" +#include "llvm/CodeGen/MachineRegisterInfo.h" +#include "llvm/CodeGen/SelectionDAG.h" +#include "llvm/CodeGen/SelectionDAGISel.h" +#include "llvm/Target/TargetLowering.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/raw_ostream.h" + +using namespace llvm; + +namespace { + + class IA64DAGToDAGISel : public SelectionDAGISel { + const IA64TargetLowering &Lowering; + const IA64Subtarget &Subtarget; + + public: + IA64DAGToDAGISel(IA64TargetMachine &TM, CodeGenOpt::Level OptLevel) : + SelectionDAGISel(TM, OptLevel), + Lowering(*TM.getTargetLowering()), + Subtarget(*TM.getSubtargetImpl()) { } + + virtual const char *getPassName() const { + return "IA64 DAG->DAG Instruction Selection"; + } + +// Include the pieces autogenerated from the target description. +#include "IA64GenDAGISel.inc" + + private: + SDNode *Select(SDNode *N); + }; + +} + +FunctionPass * +llvm::createIA64ISelPass(IA64TargetMachine &TM, CodeGenOpt::Level OptLevel) +{ + return new IA64DAGToDAGISel(TM, OptLevel); +} + + +SDNode * +IA64DAGToDAGISel::Select(SDNode *Node) +{ + DebugLoc dl = Node->getDebugLoc(); + + // Dump information about the Node being selected + errs() << "Selecting: "; + Node->dump(CurDAG); + errs() << "\n"; + + SDNode *ResNode = SelectCode(Node); + + errs() << "=> "; + if (ResNode == NULL || ResNode == Node) + Node->dump(CurDAG); + else + ResNode->dump(CurDAG); + errs() << "\n"; + + return ResNode; +} Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp ============================================================================== --- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64TargetMachine.cpp Sun Jun 12 23:45:46 2011 (r223027) @@ -32,7 +32,7 @@ bool IA64TargetMachine::addInstSelector(PassManagerBase &PM, CodeGenOpt::Level OptLevel) { - // PM.add(createIA64ISelDag(*this, OptLevel)); + PM.add(createIA64ISelPass(*this, OptLevel)); return false; } Modified: projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile ============================================================================== --- projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Sun Jun 12 23:33:08 2011 (r223026) +++ projects/llvm-ia64/lib/clang/libllvmia64codegen/Makefile Sun Jun 12 23:45:46 2011 (r223027) @@ -5,6 +5,7 @@ LIB= llvmia64codegen SRCDIR= lib/Target/IA64 SRCS= \ IA64AsmPrinter.cpp \ + IA64DAGToDAGISel.cpp \ IA64FrameLowering.cpp \ IA64InstrInfo.cpp \ IA64TargetLowering.cpp \ @@ -17,6 +18,7 @@ SRCS= \ TGHDRS= \ Intrinsics \ + IA64GenDAGISel \ IA64GenInstrInfo \ IA64GenInstrNames \ IA64GenRegisterInfo \ From owner-svn-src-projects@FreeBSD.ORG Mon Jun 13 04:40:48 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0310E1065675; Mon, 13 Jun 2011 04:40:48 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E7EE98FC08; Mon, 13 Jun 2011 04:40:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D4elnl055956; Mon, 13 Jun 2011 04:40:47 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D4eluE055954; Mon, 13 Jun 2011 04:40:47 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106130440.p5D4eluE055954@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 13 Jun 2011 04:40:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223033 - projects/llvm-ia64/lib/clang X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 13 Jun 2011 04:40:48 -0000 Author: marcel Date: Mon Jun 13 04:40:47 2011 New Revision: 223033 URL: http://svn.freebsd.org/changeset/base/223033 Log: o Build with "-O0 -g" by default. o Enable support for Graphviz to aid debugging. Modified: projects/llvm-ia64/lib/clang/clang.build.mk Modified: projects/llvm-ia64/lib/clang/clang.build.mk ============================================================================== --- projects/llvm-ia64/lib/clang/clang.build.mk Mon Jun 13 04:31:57 2011 (r223032) +++ projects/llvm-ia64/lib/clang/clang.build.mk Mon Jun 13 04:40:47 2011 (r223033) @@ -1,5 +1,8 @@ # $FreeBSD$ +GRAPHVIZ_FLAGS=-DHAVE_GRAPHVIZ -DLLVM_PATH_GRAPHVIZ=/usr/local/bin/graphviz +DEBUG_FLAGS?=-O0 -g ${GRAPHVIZ_FLAGS} + CLANG_SRCS=${LLVM_SRCS}/tools/clang CFLAGS+=-I${LLVM_SRCS}/include -I${CLANG_SRCS}/include \ From owner-svn-src-projects@FreeBSD.ORG Mon Jun 13 04:55:30 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A8111065675; Mon, 13 Jun 2011 04:55:30 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7627D8FC0C; Mon, 13 Jun 2011 04:55:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D4tUC8056452; Mon, 13 Jun 2011 04:55:30 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D4tT2A056429; Mon, 13 Jun 2011 04:55:29 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106130455.p5D4tT2A056429@svn.freebsd.org> From: Attilio Rao Date: Mon, 13 Jun 2011 04:55:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223034 - in projects/largeSMP: bin/sh cddl/compat/opensolaris/include contrib/llvm/include/llvm contrib/llvm/include/llvm-c contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Anal... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 13 Jun 2011 04:55:30 -0000 Author: attilio Date: Mon Jun 13 04:55:29 2011 New Revision: 223034 URL: http://svn.freebsd.org/changeset/base/223034 Log: MFC Added: projects/largeSMP/contrib/llvm/include/llvm/ADT/PackedVector.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/ADT/PackedVector.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h projects/largeSMP/contrib/llvm/include/llvm/DefaultPasses.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/DefaultPasses.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCWin64EH.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/MC/MCWin64EH.h projects/largeSMP/contrib/llvm/include/llvm/Support/BranchProbability.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/Support/BranchProbability.h projects/largeSMP/contrib/llvm/include/llvm/Support/PassManagerBuilder.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/Support/PassManagerBuilder.h projects/largeSMP/contrib/llvm/include/llvm/Support/Win64EH.h - copied unchanged from r223033, head/contrib/llvm/include/llvm/Support/Win64EH.h projects/largeSMP/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp - copied unchanged from r223033, head/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp - copied unchanged from r223033, head/contrib/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp - copied unchanged from r223033, head/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegisterClassInfo.h - copied unchanged from r223033, head/contrib/llvm/lib/CodeGen/RegisterClassInfo.h projects/largeSMP/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp - copied unchanged from r223033, head/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp projects/largeSMP/contrib/llvm/lib/MC/MCWin64EH.cpp - copied unchanged from r223033, head/contrib/llvm/lib/MC/MCWin64EH.cpp projects/largeSMP/contrib/llvm/lib/Support/BranchProbability.cpp - copied unchanged from r223033, head/contrib/llvm/lib/Support/BranchProbability.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp - copied unchanged from r223033, head/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp projects/largeSMP/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp - copied unchanged from r223033, head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp projects/largeSMP/contrib/llvm/utils/TableGen/SetTheory.cpp - copied unchanged from r223033, head/contrib/llvm/utils/TableGen/SetTheory.cpp projects/largeSMP/contrib/llvm/utils/TableGen/SetTheory.h - copied unchanged from r223033, head/contrib/llvm/utils/TableGen/SetTheory.h projects/largeSMP/tools/regression/bin/sh/builtins/case6.0 - copied unchanged from r223033, head/tools/regression/bin/sh/builtins/case6.0 projects/largeSMP/tools/regression/bin/sh/builtins/case7.0 - copied unchanged from r223033, head/tools/regression/bin/sh/builtins/case7.0 projects/largeSMP/tools/regression/bin/sh/parameters/env1.0 - copied unchanged from r223033, head/tools/regression/bin/sh/parameters/env1.0 projects/largeSMP/usr.sbin/bsdinstall/bsdinstall.8 - copied unchanged from r223033, head/usr.sbin/bsdinstall/bsdinstall.8 Deleted: projects/largeSMP/contrib/llvm/include/llvm/Support/StandardPasses.h projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfTableException.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/MCJIT/TargetSelect.cpp projects/largeSMP/contrib/llvm/tools/clang/include/clang/Tooling/Tooling.h projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/DiagChecker.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.h projects/largeSMP/contrib/llvm/tools/clang/lib/Tooling/Tooling.cpp Modified: projects/largeSMP/bin/sh/eval.c projects/largeSMP/bin/sh/expand.c projects/largeSMP/bin/sh/expand.h projects/largeSMP/bin/sh/jobs.c projects/largeSMP/bin/sh/main.c projects/largeSMP/bin/sh/sh.1 projects/largeSMP/bin/sh/var.c projects/largeSMP/bin/sh/var.h projects/largeSMP/cddl/compat/opensolaris/include/assert.h projects/largeSMP/contrib/llvm/include/llvm-c/Core.h projects/largeSMP/contrib/llvm/include/llvm-c/Disassembler.h projects/largeSMP/contrib/llvm/include/llvm/ADT/FoldingSet.h projects/largeSMP/contrib/llvm/include/llvm/ADT/StringRef.h projects/largeSMP/contrib/llvm/include/llvm/ADT/Triple.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/CallGraph.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/DIBuilder.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/DebugInfo.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/IVUsers.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/RegionPass.h projects/largeSMP/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h projects/largeSMP/contrib/llvm/include/llvm/Argument.h projects/largeSMP/contrib/llvm/include/llvm/Attributes.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/FastISel.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/LiveInterval.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/MachineInstr.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/MachineOperand.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/PseudoSourceValue.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/RegAllocPBQP.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/ScheduleDAG.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/largeSMP/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h projects/largeSMP/contrib/llvm/include/llvm/CompilerDriver/Common.td projects/largeSMP/contrib/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h projects/largeSMP/contrib/llvm/include/llvm/Function.h projects/largeSMP/contrib/llvm/include/llvm/InitializePasses.h projects/largeSMP/contrib/llvm/include/llvm/IntrinsicInst.h projects/largeSMP/contrib/llvm/include/llvm/Intrinsics.td projects/largeSMP/contrib/llvm/include/llvm/IntrinsicsARM.td projects/largeSMP/contrib/llvm/include/llvm/IntrinsicsX86.td projects/largeSMP/contrib/llvm/include/llvm/IntrinsicsXCore.td projects/largeSMP/contrib/llvm/include/llvm/LinkAllPasses.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCAsmInfo.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCDwarf.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCELFSymbolFlags.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCExpr.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCInstPrinter.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCParser/MCAsmParser.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h projects/largeSMP/contrib/llvm/include/llvm/MC/MCStreamer.h projects/largeSMP/contrib/llvm/include/llvm/Metadata.h projects/largeSMP/contrib/llvm/include/llvm/Operator.h projects/largeSMP/contrib/llvm/include/llvm/Support/Casting.h projects/largeSMP/contrib/llvm/include/llvm/Support/CrashRecoveryContext.h projects/largeSMP/contrib/llvm/include/llvm/Support/Dwarf.h projects/largeSMP/contrib/llvm/include/llvm/Support/IRBuilder.h projects/largeSMP/contrib/llvm/include/llvm/Support/MemoryBuffer.h projects/largeSMP/contrib/llvm/include/llvm/Support/PatternMatch.h projects/largeSMP/contrib/llvm/include/llvm/Support/Program.h projects/largeSMP/contrib/llvm/include/llvm/Support/SourceMgr.h projects/largeSMP/contrib/llvm/include/llvm/Target/Target.td projects/largeSMP/contrib/llvm/include/llvm/Target/TargetAsmInfo.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetInstrItineraries.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetLowering.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetLoweringObjectFile.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetOptions.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h projects/largeSMP/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td projects/largeSMP/contrib/llvm/include/llvm/Transforms/Instrumentation.h projects/largeSMP/contrib/llvm/include/llvm/Transforms/Utils/Local.h projects/largeSMP/contrib/llvm/include/llvm/Transforms/Utils/SSAUpdater.h projects/largeSMP/contrib/llvm/include/llvm/Type.h projects/largeSMP/contrib/llvm/lib/Analysis/Analysis.cpp projects/largeSMP/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp projects/largeSMP/contrib/llvm/lib/Analysis/ConstantFolding.cpp projects/largeSMP/contrib/llvm/lib/Analysis/DIBuilder.cpp projects/largeSMP/contrib/llvm/lib/Analysis/IPA/CallGraph.cpp projects/largeSMP/contrib/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp projects/largeSMP/contrib/llvm/lib/Analysis/IPA/FindUsedTypes.cpp projects/largeSMP/contrib/llvm/lib/Analysis/IVUsers.cpp projects/largeSMP/contrib/llvm/lib/Analysis/InlineCost.cpp projects/largeSMP/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/largeSMP/contrib/llvm/lib/Analysis/LazyValueInfo.cpp projects/largeSMP/contrib/llvm/lib/Analysis/Loads.cpp projects/largeSMP/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp projects/largeSMP/contrib/llvm/lib/Analysis/RegionPass.cpp projects/largeSMP/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/largeSMP/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/largeSMP/contrib/llvm/lib/AsmParser/LLLexer.cpp projects/largeSMP/contrib/llvm/lib/AsmParser/LLLexer.h projects/largeSMP/contrib/llvm/lib/AsmParser/LLParser.cpp projects/largeSMP/contrib/llvm/lib/AsmParser/LLToken.h projects/largeSMP/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp projects/largeSMP/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp projects/largeSMP/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.h projects/largeSMP/contrib/llvm/lib/CodeGen/AllocationOrder.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AllocationOrder.h projects/largeSMP/contrib/llvm/lib/CodeGen/AntiDepBreaker.h projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/ARMException.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h projects/largeSMP/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfException.h projects/largeSMP/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/BranchFolding.h projects/largeSMP/contrib/llvm/lib/CodeGen/CalcSpillWeights.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/CallingConvLower.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.h projects/largeSMP/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/IfConversion.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/InlineSpiller.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/LiveDebugVariables.h projects/largeSMP/contrib/llvm/lib/CodeGen/LiveRangeEdit.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/LiveRangeEdit.h projects/largeSMP/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/MachineFunction.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/MachineRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/MachineVerifier.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegAllocBase.h projects/largeSMP/contrib/llvm/lib/CodeGen/RegAllocBasic.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegAllocFast.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.h projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.h projects/largeSMP/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SplitKit.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/SplitKit.h projects/largeSMP/contrib/llvm/lib/CodeGen/TailDuplication.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/TargetInstrInfoImpl.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/UnreachableBlockElim.cpp projects/largeSMP/contrib/llvm/lib/CodeGen/VirtRegMap.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/ExecutionEngine.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/JIT/JIT.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/JIT/JIT.h projects/largeSMP/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp projects/largeSMP/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h projects/largeSMP/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h projects/largeSMP/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp projects/largeSMP/contrib/llvm/lib/MC/ELFObjectWriter.cpp projects/largeSMP/contrib/llvm/lib/MC/ELFObjectWriter.h projects/largeSMP/contrib/llvm/lib/MC/MCAsmInfo.cpp projects/largeSMP/contrib/llvm/lib/MC/MCAsmInfoDarwin.cpp projects/largeSMP/contrib/llvm/lib/MC/MCAsmStreamer.cpp projects/largeSMP/contrib/llvm/lib/MC/MCAssembler.cpp projects/largeSMP/contrib/llvm/lib/MC/MCDisassembler/Disassembler.cpp projects/largeSMP/contrib/llvm/lib/MC/MCDwarf.cpp projects/largeSMP/contrib/llvm/lib/MC/MCELF.cpp projects/largeSMP/contrib/llvm/lib/MC/MCELFStreamer.cpp projects/largeSMP/contrib/llvm/lib/MC/MCExpr.cpp projects/largeSMP/contrib/llvm/lib/MC/MCInstPrinter.cpp projects/largeSMP/contrib/llvm/lib/MC/MCMachOStreamer.cpp projects/largeSMP/contrib/llvm/lib/MC/MCObjectStreamer.cpp projects/largeSMP/contrib/llvm/lib/MC/MCParser/AsmLexer.cpp projects/largeSMP/contrib/llvm/lib/MC/MCParser/AsmParser.cpp projects/largeSMP/contrib/llvm/lib/MC/MCParser/COFFAsmParser.cpp projects/largeSMP/contrib/llvm/lib/MC/MCParser/DarwinAsmParser.cpp projects/largeSMP/contrib/llvm/lib/MC/MCStreamer.cpp projects/largeSMP/contrib/llvm/lib/MC/WinCOFFStreamer.cpp projects/largeSMP/contrib/llvm/lib/Support/APInt.cpp projects/largeSMP/contrib/llvm/lib/Support/Dwarf.cpp projects/largeSMP/contrib/llvm/lib/Support/FoldingSet.cpp projects/largeSMP/contrib/llvm/lib/Support/Host.cpp projects/largeSMP/contrib/llvm/lib/Support/MemoryBuffer.cpp projects/largeSMP/contrib/llvm/lib/Support/SourceMgr.cpp projects/largeSMP/contrib/llvm/lib/Support/Unix/Host.inc projects/largeSMP/contrib/llvm/lib/Support/Unix/Program.inc projects/largeSMP/contrib/llvm/lib/Support/Windows/Program.inc projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMAsmBackend.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.h projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMCodeEmitter.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMFixupKinds.h projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMMCAsmInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMPerfectShuffle.h projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.h projects/largeSMP/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h projects/largeSMP/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h projects/largeSMP/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.h projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/CBackend/CBackend.cpp projects/largeSMP/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/Mips/Mips.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsFrameLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsFrameLowering.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsInstrInfo.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsMCAsmInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsMachineFunction.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp projects/largeSMP/contrib/llvm/lib/Target/Mips/MipsTargetMachine.h projects/largeSMP/contrib/llvm/lib/Target/PTX/PTX.td projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXSubtarget.cpp projects/largeSMP/contrib/llvm/lib/Target/PTX/PTXSubtarget.h projects/largeSMP/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPC.h projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/TargetLibraryInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/TargetLoweringObjectFile.cpp projects/largeSMP/contrib/llvm/lib/Target/TargetMachine.cpp projects/largeSMP/contrib/llvm/lib/Target/TargetRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h projects/largeSMP/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h projects/largeSMP/contrib/llvm/lib/Target/X86/X86.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86FastISel.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrCompiler.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrExtension.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrInfo.h projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrMMX.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86MCAsmInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/X86/X86RegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/X86/X86RegisterInfo.td projects/largeSMP/contrib/llvm/lib/Target/X86/X86Subtarget.cpp projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.td projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.h projects/largeSMP/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.td projects/largeSMP/contrib/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp projects/largeSMP/contrib/llvm/lib/Transforms/IPO/ExtractGV.cpp projects/largeSMP/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp projects/largeSMP/contrib/llvm/lib/Transforms/IPO/PruneEH.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombine.h projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp projects/largeSMP/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Instrumentation/PathProfiling.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/GVN.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/LICM.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp projects/largeSMP/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp projects/largeSMP/contrib/llvm/lib/VMCore/Attributes.cpp projects/largeSMP/contrib/llvm/lib/VMCore/AutoUpgrade.cpp projects/largeSMP/contrib/llvm/lib/VMCore/DebugInfoProbe.cpp projects/largeSMP/contrib/llvm/lib/VMCore/Function.cpp projects/largeSMP/contrib/llvm/lib/VMCore/IRBuilder.cpp projects/largeSMP/contrib/llvm/lib/VMCore/InlineAsm.cpp projects/largeSMP/contrib/llvm/lib/VMCore/Instructions.cpp projects/largeSMP/contrib/llvm/lib/VMCore/PassManager.cpp projects/largeSMP/contrib/llvm/lib/VMCore/Type.cpp projects/largeSMP/contrib/llvm/lib/VMCore/Verifier.cpp projects/largeSMP/contrib/llvm/tools/clang/include/clang-c/Index.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/APValue.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/CanonicalType.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/DeclObjC.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/Expr.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/StmtVisitor.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/Type.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/AST/TypeNodes.def projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationType.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/IdentifierTable.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/SourceLocation.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/TypeTraits.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Driver/CC1AsOptions.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/largeSMP/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticOptions.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/LangStandard.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOptions.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Lex/LiteralSupport.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/CodeCompleteConsumer.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Overload.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Scope.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Sema/Template.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/Checker.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/GRState.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ObjCMessage.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h projects/largeSMP/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h projects/largeSMP/contrib/llvm/tools/clang/lib/AST/APValue.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/Decl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/DumpXML.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/Expr.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/Mangle.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/Type.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Analysis/AnalysisContext.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Analysis/CocoaConventions.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Analysis/LiveVariables.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/FileManager.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGCall.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGVTT.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/ModuleBuilder.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/ToolChains.h projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/Tools.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Driver/Tools.h projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/ASTConsumers.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Frontend/Warnings.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Headers/emmintrin.h projects/largeSMP/contrib/llvm/tools/clang/lib/Headers/mmintrin.h projects/largeSMP/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h projects/largeSMP/contrib/llvm/tools/clang/lib/Index/CallGraph.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Index/Indexer.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/JumpDiagnostics.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaCXXCast.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaTemplateVariadic.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicStore.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicValueFactory.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CFRefCount.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CXXExprEngine.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Environment.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/FlatStore.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/GRState.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp projects/largeSMP/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp projects/largeSMP/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp projects/largeSMP/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/CodeGenIntrinsics.h projects/largeSMP/contrib/llvm/utils/TableGen/CodeGenRegisters.h projects/largeSMP/contrib/llvm/utils/TableGen/CodeGenTarget.cpp projects/largeSMP/contrib/llvm/utils/TableGen/CodeGenTarget.h projects/largeSMP/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp projects/largeSMP/contrib/llvm/utils/TableGen/EDEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/FastISelEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/NeonEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/Record.cpp projects/largeSMP/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp projects/largeSMP/contrib/llvm/utils/TableGen/TGLexer.cpp projects/largeSMP/contrib/llvm/utils/TableGen/TGLexer.h projects/largeSMP/contrib/llvm/utils/TableGen/TGParser.h projects/largeSMP/contrib/llvm/utils/TableGen/TableGen.cpp projects/largeSMP/etc/defaults/rc.conf projects/largeSMP/etc/network.subr projects/largeSMP/etc/rc.d/mountcritremote projects/largeSMP/etc/rc.d/nfsclient projects/largeSMP/etc/rc.d/rtadvd projects/largeSMP/etc/rc.subr projects/largeSMP/lib/clang/include/clang/Basic/Version.inc projects/largeSMP/lib/clang/libclangfrontend/Makefile projects/largeSMP/lib/clang/libllvmasmprinter/Makefile projects/largeSMP/lib/clang/libllvmcodegen/Makefile projects/largeSMP/lib/clang/libllvmmc/Makefile projects/largeSMP/lib/clang/libllvmmipscodegen/Makefile projects/largeSMP/release/powerpc/mkisoimages.sh projects/largeSMP/sbin/fsck_ffs/suj.c projects/largeSMP/share/misc/committers-ports.dot projects/largeSMP/share/skel/dot.shrc projects/largeSMP/sys/Makefile projects/largeSMP/sys/amd64/amd64/legacy.c projects/largeSMP/sys/amd64/conf/GENERIC projects/largeSMP/sys/boot/i386/zfsboot/Makefile projects/largeSMP/sys/cam/ata/ata_all.c projects/largeSMP/sys/cam/ata/ata_xpt.c projects/largeSMP/sys/cddl/compat/opensolaris/sys/kstat.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/largeSMP/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/largeSMP/sys/conf/files projects/largeSMP/sys/dev/aac/aac.c projects/largeSMP/sys/dev/aac/aacvar.h projects/largeSMP/sys/dev/acpica/acpi.c projects/largeSMP/sys/dev/ath/if_ath_ahb.c projects/largeSMP/sys/dev/atkbdc/atkbd.c projects/largeSMP/sys/dev/cxgbe/adapter.h projects/largeSMP/sys/dev/cxgbe/t4_ioctl.h projects/largeSMP/sys/dev/cxgbe/t4_main.c projects/largeSMP/sys/dev/cxgbe/t4_sge.c projects/largeSMP/sys/dev/iwn/if_iwn.c projects/largeSMP/sys/dev/pci/pci_pci.c projects/largeSMP/sys/dev/safe/safe.c projects/largeSMP/sys/dev/xen/blkback/blkback.c projects/largeSMP/sys/dev/xen/blkfront/blkfront.c projects/largeSMP/sys/dev/xen/control/control.c projects/largeSMP/sys/dev/xen/netfront/netfront.c projects/largeSMP/sys/i386/conf/GENERIC projects/largeSMP/sys/i386/i386/legacy.c projects/largeSMP/sys/ia64/ia64/machdep.c projects/largeSMP/sys/kern/vfs_bio.c projects/largeSMP/sys/powerpc/conf/GENERIC projects/largeSMP/sys/powerpc/conf/GENERIC64 projects/largeSMP/sys/sys/vnode.h projects/largeSMP/sys/ufs/ffs/ffs_alloc.c projects/largeSMP/sys/ufs/ffs/ffs_balloc.c projects/largeSMP/sys/ufs/ffs/ffs_extern.h projects/largeSMP/sys/ufs/ffs/ffs_inode.c projects/largeSMP/sys/ufs/ffs/ffs_snapshot.c projects/largeSMP/sys/ufs/ffs/ffs_softdep.c projects/largeSMP/sys/ufs/ffs/ffs_vfsops.c projects/largeSMP/sys/ufs/ffs/ffs_vnops.c projects/largeSMP/sys/ufs/ffs/fs.h projects/largeSMP/sys/ufs/ffs/softdep.h projects/largeSMP/sys/ufs/ufs/inode.h projects/largeSMP/sys/ufs/ufs/quota.h projects/largeSMP/sys/ufs/ufs/ufs_lookup.c projects/largeSMP/sys/ufs/ufs/ufs_quota.c projects/largeSMP/sys/ufs/ufs/ufs_vnops.c projects/largeSMP/sys/ufs/ufs/ufsmount.h projects/largeSMP/sys/vm/vm_page.c projects/largeSMP/sys/vm/vm_page.h projects/largeSMP/sys/vm/vnode_pager.c projects/largeSMP/sys/xen/interface/io/xenbus.h projects/largeSMP/sys/xen/xenbus/xenbus.c projects/largeSMP/sys/xen/xenbus/xenbus_if.m projects/largeSMP/sys/xen/xenbus/xenbusb.c projects/largeSMP/sys/xen/xenbus/xenbusb.h projects/largeSMP/sys/xen/xenbus/xenbusb_back.c projects/largeSMP/sys/xen/xenbus/xenbusb_front.c projects/largeSMP/sys/xen/xenbus/xenbusb_if.m projects/largeSMP/sys/xen/xenbus/xenbusvar.h projects/largeSMP/sys/xen/xenstore/xenstorevar.h projects/largeSMP/tools/tools/cxgbetool/cxgbetool.c projects/largeSMP/usr.bin/calendar/calendars/calendar.freebsd projects/largeSMP/usr.bin/clang/tblgen/Makefile projects/largeSMP/usr.bin/grep/fastgrep.c projects/largeSMP/usr.bin/grep/grep.c projects/largeSMP/usr.bin/grep/util.c projects/largeSMP/usr.sbin/bsdinstall/Makefile projects/largeSMP/usr.sbin/makefs/ffs/ffs_bswap.c projects/largeSMP/usr.sbin/makefs/ffs/ffs_subr.c projects/largeSMP/usr.sbin/rtadvd/config.c projects/largeSMP/usr.sbin/rtadvd/config.h projects/largeSMP/usr.sbin/rtadvd/rtadvd.8 projects/largeSMP/usr.sbin/rtadvd/rtadvd.c projects/largeSMP/usr.sbin/rtadvd/rtadvd.h Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/bin/sh/eval.c ============================================================================== --- projects/largeSMP/bin/sh/eval.c Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/eval.c Mon Jun 13 04:55:29 2011 (r223034) @@ -571,14 +571,8 @@ evalpipe(union node *n) static int is_valid_fast_cmdsubst(union node *n) { - union node *argp; - if (n->type != NCMD) - return 0; - for (argp = n->ncmd.args ; argp ; argp = argp->narg.next) - if (expandhassideeffects(argp->narg.text)) - return 0; - return 1; + return (n->type == NCMD); } /* @@ -596,6 +590,7 @@ evalbackcmd(union node *n, struct backcm struct stackmark smark; /* unnecessary */ struct jmploc jmploc; struct jmploc *savehandler; + struct localvar *savelocalvars; setstackmark(&smark); result->fd = -1; @@ -608,12 +603,18 @@ evalbackcmd(union node *n, struct backcm } if (is_valid_fast_cmdsubst(n)) { exitstatus = oexitstatus; + savelocalvars = localvars; + localvars = NULL; + forcelocal++; savehandler = handler; if (setjmp(jmploc.loc)) { if (exception == EXERROR || exception == EXEXEC) exitstatus = 2; else if (exception != 0) { handler = savehandler; + forcelocal--; + poplocalvars(); + localvars = savelocalvars; longjmp(handler->loc, 1); } } else { @@ -621,6 +622,9 @@ evalbackcmd(union node *n, struct backcm evalcommand(n, EV_BACKCMD, result); } handler = savehandler; + forcelocal--; + poplocalvars(); + localvars = savelocalvars; } else { exitstatus = 0; if (pipe(pip) < 0) Modified: projects/largeSMP/bin/sh/expand.c ============================================================================== --- projects/largeSMP/bin/sh/expand.c Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/expand.c Mon Jun 13 04:55:29 2011 (r223034) @@ -1430,7 +1430,7 @@ patmatch(const char *pattern, const char if (localeisutf8) wc = get_wc(&q); else - wc = *q++; + wc = (unsigned char)*q++; if (wc == '\0') return 0; break; @@ -1487,7 +1487,7 @@ patmatch(const char *pattern, const char if (localeisutf8) chr = get_wc(&q); else - chr = *q++; + chr = (unsigned char)*q++; if (chr == '\0') return 0; c = *p++; @@ -1502,7 +1502,7 @@ patmatch(const char *pattern, const char if (wc == 0) /* bad utf-8 */ return 0; } else - wc = c; + wc = (unsigned char)c; if (*p == '-' && p[1] != ']') { p++; while (*p == CTLQUOTEMARK) @@ -1514,7 +1514,7 @@ patmatch(const char *pattern, const char if (wc2 == 0) /* bad utf-8 */ return 0; } else - wc2 = *p++; + wc2 = (unsigned char)*p++; if ( collate_range_cmp(chr, wc) >= 0 && collate_range_cmp(chr, wc2) <= 0 ) @@ -1621,78 +1621,6 @@ cvtnum(int num, char *buf) } /* - * Check statically if expanding a string may have side effects. - */ -int -expandhassideeffects(const char *p) -{ - int c; - int arinest; - - arinest = 0; - while ((c = *p++) != '\0') { - switch (c) { - case CTLESC: - p++; - break; - case CTLVAR: - c = *p++; - /* Expanding $! sets the job to remembered. */ - if (*p == '!') - return 1; - if ((c & VSTYPE) == VSASSIGN) - return 1; - /* - * If we are in arithmetic, the parameter may contain - * '=' which may cause side effects. Exceptions are - * the length of a parameter and $$, $# and $? which - * are always numeric. - */ - if ((c & VSTYPE) == VSLENGTH) { - while (*p != '=') - p++; - p++; - break; - } - if ((*p == '$' || *p == '#' || *p == '?') && - p[1] == '=') { - p += 2; - break; - } - if (arinest > 0) - return 1; - break; - case CTLBACKQ: - case CTLBACKQ | CTLQUOTE: - if (arinest > 0) - return 1; - break; - case CTLARI: - arinest++; - break; - case CTLENDARI: - arinest--; - break; - case '=': - if (*p == '=') { - /* Allow '==' operator. */ - p++; - continue; - } - if (arinest > 0) - return 1; - break; - case '!': case '<': case '>': - /* Allow '!=', '<=', '>=' operators. */ - if (*p == '=') - p++; - break; - } - } - return 0; -} - -/* * Do most of the work for wordexp(3). */ Modified: projects/largeSMP/bin/sh/expand.h ============================================================================== --- projects/largeSMP/bin/sh/expand.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/expand.h Mon Jun 13 04:55:29 2011 (r223034) @@ -63,5 +63,4 @@ void expari(int); int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); -int expandhassideeffects(const char *); int wordexpcmd(int, char **); Modified: projects/largeSMP/bin/sh/jobs.c ============================================================================== --- projects/largeSMP/bin/sh/jobs.c Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/jobs.c Mon Jun 13 04:55:29 2011 (r223034) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include "memalloc.h" #include "error.h" #include "mystring.h" +#include "var.h" static struct job *jobtab; /* array of jobs */ @@ -798,6 +799,7 @@ forkshell(struct job *jp, union node *n, handler = &main_handler; closescript(); INTON; + forcelocal = 0; clear_traps(); #if JOBS jobctl = 0; /* do job control only in root shell */ @@ -1121,7 +1123,7 @@ backgndpidset(void) pid_t backgndpidval(void) { - if (bgjob != NULL) + if (bgjob != NULL && !forcelocal) bgjob->remembered = 1; return backgndpid; } Modified: projects/largeSMP/bin/sh/main.c ============================================================================== --- projects/largeSMP/bin/sh/main.c Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/main.c Mon Jun 13 04:55:29 2011 (r223034) @@ -78,7 +78,7 @@ int rootshell; struct jmploc main_handler; int localeisutf8, initial_localeisutf8; -static void read_profile(const char *); +static void read_profile(char *); static char *find_dot_file(char *); /* @@ -92,7 +92,7 @@ static char *find_dot_file(char *); int main(int argc, char *argv[]) { - struct stackmark smark; + struct stackmark smark, smark2; volatile int state; char *shinit; @@ -139,6 +139,7 @@ main(int argc, char *argv[]) rootshell = 1; init(); setstackmark(&smark); + setstackmark(&smark2); procargs(argc, argv); pwd_init(iflag); if (iflag) @@ -149,7 +150,7 @@ main(int argc, char *argv[]) state1: state = 2; if (privileged == 0) - read_profile(".profile"); + read_profile("${HOME-}/.profile"); else read_profile("/etc/suid_profile"); } @@ -163,6 +164,7 @@ state2: } state3: state = 4; + popstackmark(&smark2); if (minusc) { evalstring(minusc, sflag ? 0 : EV_EXIT); } @@ -235,12 +237,16 @@ cmdloop(int top) */ static void -read_profile(const char *name) +read_profile(char *name) { int fd; + const char *expandedname; + expandedname = expandstr(name); + if (expandedname == NULL) + return; INTOFF; - if ((fd = open(name, O_RDONLY)) >= 0) + if ((fd = open(expandedname, O_RDONLY)) >= 0) setinputfd(fd, 1); INTON; if (fd < 0) Modified: projects/largeSMP/bin/sh/sh.1 ============================================================================== --- projects/largeSMP/bin/sh/sh.1 Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/sh.1 Mon Jun 13 04:55:29 2011 (r223034) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 9, 2011 +.Dd June 12, 2011 .Dt SH 1 .Os .Sh NAME @@ -124,8 +124,8 @@ If the environment variable .Ev ENV is set on entry to a shell, or is set in the .Pa .profile -of a login shell, the shell then reads commands from the file named in -.Ev ENV . +of a login shell, the shell then subjects its value to parameter expansion +and arithmetic expansion and reads commands from the named file. Therefore, a user should place commands that are to be executed only at login time in the .Pa .profile @@ -1536,10 +1536,7 @@ except that the built-in commands and .Ic trap return information about the main shell environment -if they are the only command in a command substitution -and the substitutions in the command cannot cause side effects -(such as from assigning values to variables or referencing -.Li $! ). +if they are the only command in a command substitution. .Ss Arithmetic Expansion Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. Modified: projects/largeSMP/bin/sh/var.c ============================================================================== --- projects/largeSMP/bin/sh/var.c Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/var.c Mon Jun 13 04:55:29 2011 (r223034) @@ -94,6 +94,8 @@ struct var vps4; struct var vvers; static struct var voptind; +int forcelocal; + static const struct varinit varinit[] = { #ifndef NO_HISTORY { &vhistsize, VUNSET, "HISTSIZE=", @@ -325,6 +327,8 @@ setvareq(char *s, int flags) if (aflag) flags |= VEXPORT; + if (forcelocal && !(flags & (VNOSET | VNOLOCAL))) + mklocal(s); vp = find_var(s, &vpp, &nlen); if (vp != NULL) { if (vp->flags & VREADONLY) @@ -740,9 +744,9 @@ mklocal(char *name) vp = find_var(name, &vpp, NULL); if (vp == NULL) { if (strchr(name, '=')) - setvareq(savestr(name), VSTRFIXED); + setvareq(savestr(name), VSTRFIXED | VNOLOCAL); else - setvar(name, NULL, VSTRFIXED); + setvar(name, NULL, VSTRFIXED | VNOLOCAL); vp = *vpp; /* the new variable */ lvp->text = NULL; lvp->flags = VUNSET; @@ -751,7 +755,7 @@ mklocal(char *name) lvp->flags = vp->flags; vp->flags |= VSTRFIXED|VTEXTFIXED; if (name[vp->name_len] == '=') - setvareq(savestr(name), 0); + setvareq(savestr(name), VNOLOCAL); } } lvp->vp = vp; Modified: projects/largeSMP/bin/sh/var.h ============================================================================== --- projects/largeSMP/bin/sh/var.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/bin/sh/var.h Mon Jun 13 04:55:29 2011 (r223034) @@ -46,6 +46,7 @@ #define VUNSET 0x20 /* the variable is not set */ #define VNOFUNC 0x40 /* don't call the callback function */ #define VNOSET 0x80 /* do not set variable - just readonly test */ +#define VNOLOCAL 0x100 /* ignore forcelocal */ struct var { @@ -68,6 +69,7 @@ struct localvar { struct localvar *localvars; +extern int forcelocal; extern struct var vifs; extern struct var vmail; Modified: projects/largeSMP/cddl/compat/opensolaris/include/assert.h ============================================================================== --- projects/largeSMP/cddl/compat/opensolaris/include/assert.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/cddl/compat/opensolaris/include/assert.h Mon Jun 13 04:55:29 2011 (r223034) @@ -43,6 +43,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + static __inline void __assert(const char *expr, const char *file, int line) { @@ -52,4 +56,9 @@ __assert(const char *expr, const char *f abort(); /* NOTREACHED */ } + +#ifdef __cplusplus +} +#endif + #endif /* !_ASSERT_H_ */ Modified: projects/largeSMP/contrib/llvm/include/llvm-c/Core.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm-c/Core.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm-c/Core.h Mon Jun 13 04:55:29 2011 (r223034) @@ -282,6 +282,8 @@ typedef enum { LLVMRealPredicateTrue /**< Always true (always folded) */ } LLVMRealPredicate; +void LLVMInitializeCore(LLVMPassRegistryRef R); + /*===-- Error handling ----------------------------------------------------===*/ @@ -1164,6 +1166,7 @@ namespace llvm { for (LLVMValueRef *I = Vals, *E = Vals + Length; I != E; ++I) cast(*I); #endif + (void)Length; return reinterpret_cast(Vals); } Modified: projects/largeSMP/contrib/llvm/include/llvm-c/Disassembler.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm-c/Disassembler.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm-c/Disassembler.h Mon Jun 13 04:55:29 2011 (r223034) @@ -7,16 +7,16 @@ |* *| |*===----------------------------------------------------------------------===*| |* *| -|* This header provides public interface to a disassembler library. *| +|* This header provides a public interface to a disassembler library. *| |* LLVM provides an implementation of this interface. *| |* *| \*===----------------------------------------------------------------------===*/ #ifndef LLVM_C_DISASSEMBLER_H -#define LLVM_C_DISASSEMBLER_H 1 +#define LLVM_C_DISASSEMBLER_H -#include #include "llvm/Support/DataTypes.h" +#include /** * An opaque reference to a disassembler context. @@ -38,14 +38,11 @@ typedef void *LLVMDisasmContextRef; * will be the instruction width. The information is returned in TagBuf and is * Triple specific with its specific information defined by the value of * TagType for that Triple. If symbolic information is returned the function - * returns 1 else it returns 0. + * returns 1, otherwise it returns 0. */ -typedef int (*LLVMOpInfoCallback)(void *DisInfo, - uint64_t PC, - uint64_t Offset, - uint64_t Size, - int TagType, - void *TagBuf); +typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t PC, + uint64_t Offset, uint64_t Size, + int TagType, void *TagBuf); /** * The initial support in LLVM MC for the most general form of a relocatable @@ -68,10 +65,11 @@ typedef int (*LLVMOpInfoCallback)(void * * operands like "_foo@GOT", ":lower16:_foo", etc. */ struct LLVMOpInfoSymbol1 { - uint64_t Present; /* 1 if this symbol is present */ - char *Name; /* symbol name if not NULL */ - uint64_t Value; /* symbol value if name is NULL */ + uint64_t Present; /* 1 if this symbol is present */ + char *Name; /* symbol name if not NULL */ + uint64_t Value; /* symbol value if name is NULL */ }; + struct LLVMOpInfo1 { struct LLVMOpInfoSymbol1 AddSymbol; struct LLVMOpInfoSymbol1 SubtractSymbol; @@ -92,11 +90,11 @@ struct LLVMOpInfo1 { /** * The type for the symbol lookup function. This may be called by the - * disassembler for such things like adding a comment for a PC plus a constant + * disassembler for things like adding a comment for a PC plus a constant * offset load instruction to use a symbol name instead of a load address value. * It is passed the block information is saved when the disassembler context is * created and a value of a symbol to look up. If no symbol is found NULL is - * to be returned. + * returned. */ typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo, uint64_t SymbolValue); @@ -107,40 +105,33 @@ extern "C" { /** * Create a disassembler for the TripleName. Symbolic disassembly is supported - * by passing a block of information in the DisInfo parameter and specifing the - * TagType and call back functions as described above. These can all be passed - * as NULL. If successful this returns a disassembler context if not it + * by passing a block of information in the DisInfo parameter and specifying the + * TagType and callback functions as described above. These can all be passed + * as NULL. If successful, this returns a disassembler context. If not, it * returns NULL. */ -extern LLVMDisasmContextRef -LLVMCreateDisasm(const char *TripleName, - void *DisInfo, - int TagType, - LLVMOpInfoCallback GetOpInfo, - LLVMSymbolLookupCallback SymbolLookUp); +LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo, + int TagType, LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); /** * Dispose of a disassembler context. */ -extern void -LLVMDisasmDispose(LLVMDisasmContextRef DC); +void LLVMDisasmDispose(LLVMDisasmContextRef DC); /** - * Disassmble a single instruction using the disassembler context specified in - * the parameter DC. The bytes of the instruction are specified in the parameter - * Bytes, and contains at least BytesSize number of bytes. The instruction is - * at the address specified by the PC parameter. If a valid instruction can be - * disassembled its string is returned indirectly in OutString which whos size - * is specified in the parameter OutStringSize. This function returns the - * number of bytes in the instruction or zero if there was no valid instruction. - */ -extern size_t -LLVMDisasmInstruction(LLVMDisasmContextRef DC, - uint8_t *Bytes, - uint64_t BytesSize, - uint64_t PC, - char *OutString, - size_t OutStringSize); + * Disassemble a single instruction using the disassembler context specified in + * the parameter DC. The bytes of the instruction are specified in the + * parameter Bytes, and contains at least BytesSize number of bytes. The + * instruction is at the address specified by the PC parameter. If a valid + * instruction can be disassembled, its string is returned indirectly in + * OutString whose size is specified in the parameter OutStringSize. This + * function returns the number of bytes in the instruction or zero if there was + * no valid instruction. + */ +size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, + uint64_t BytesSize, uint64_t PC, + char *OutString, size_t OutStringSize); #ifdef __cplusplus } Modified: projects/largeSMP/contrib/llvm/include/llvm/ADT/FoldingSet.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/ADT/FoldingSet.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/ADT/FoldingSet.h Mon Jun 13 04:55:29 2011 (r223034) @@ -671,17 +671,10 @@ public: // Partial specializations of FoldingSetTrait. template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { + static inline void Profile(T *X, FoldingSetNodeID &ID) { ID.AddPointer(X); } }; - -template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { - ID.AddPointer(X); - } -}; - } // End of namespace llvm. #endif Copied: projects/largeSMP/contrib/llvm/include/llvm/ADT/PackedVector.h (from r223033, head/contrib/llvm/include/llvm/ADT/PackedVector.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/largeSMP/contrib/llvm/include/llvm/ADT/PackedVector.h Mon Jun 13 04:55:29 2011 (r223034, copy of r223033, head/contrib/llvm/include/llvm/ADT/PackedVector.h) @@ -0,0 +1,158 @@ +//===- llvm/ADT/PackedVector.h - Packed values vector -----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the PackedVector class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_PACKEDVECTOR_H +#define LLVM_ADT_PACKEDVECTOR_H + +#include "llvm/ADT/BitVector.h" +#include + +namespace llvm { + +template +class PackedVectorBase; + +// This won't be necessary if we can specialize members without specializing +// the parent template. +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + assert((val >> BitNum) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum-1; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + if (Bits[(Idx << (BitNum-1)) + BitNum-1]) + val = ~val; + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + if (val < 0) { + val = ~val; + Bits.set((Idx << (BitNum-1)) + BitNum-1); + } + assert((val >> (BitNum-1)) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum-1; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +/// \brief Store a vector of values using a specific number of bits for each +/// value. Both signed and unsigned types can be used, e.g +/// @code +/// PackedVector vec; +/// @endcode +/// will create a vector accepting values -2, -1, 0, 1. Any other value will hit +/// an assertion. +template +class PackedVector : public PackedVectorBase::is_signed> { + llvm::BitVector Bits; + typedef PackedVectorBase::is_signed> base; + +public: + class reference { + PackedVector &Vec; + const unsigned Idx; + + reference(); // Undefined + public: + reference(PackedVector &vec, unsigned idx) : Vec(vec), Idx(idx) { } + + reference &operator=(T val) { + Vec.setValue(Vec.Bits, Idx, val); + return *this; + } + operator T() { + return Vec.getValue(Vec.Bits, Idx); + } + }; + + PackedVector() { } + explicit PackedVector(unsigned size) : Bits(size << (BitNum-1)) { } + + bool empty() const { return Bits.empty(); } + + unsigned size() const { return Bits.size() >> (BitNum-1); } + + void clear() { Bits.clear(); } + + void resize(unsigned N) { Bits.resize(N << (BitNum-1)); } + + void reserve(unsigned N) { Bits.reserve(N << (BitNum-1)); } + + PackedVector &reset() { + Bits.reset(); + return *this; + } + + void push_back(T val) { + resize(size()+1); + (*this)[size()-1] = val; + } + + reference operator[](unsigned Idx) { + return reference(*this, Idx); + } + + T operator[](unsigned Idx) const { + return base::getValue(Bits, Idx); + } + + bool operator==(const PackedVector &RHS) const { + return Bits == RHS.Bits; + } + + bool operator!=(const PackedVector &RHS) const { + return Bits != RHS.Bits; + } + + const PackedVector &operator=(const PackedVector &RHS) { + Bits = RHS.Bits; + return *this; + } + + PackedVector &operator|=(const PackedVector &RHS) { + Bits |= RHS.Bits; + return *this; + } + + void swap(PackedVector &RHS) { + Bits.swap(RHS.Bits); + } +}; + +// Leave BitNum=0 undefined. +template +class PackedVector; + +} // end llvm namespace + +#endif Modified: projects/largeSMP/contrib/llvm/include/llvm/ADT/StringRef.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/ADT/StringRef.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/ADT/StringRef.h Mon Jun 13 04:55:29 2011 (r223034) @@ -46,7 +46,14 @@ namespace llvm { // integer works around this bug. static size_t min(size_t a, size_t b) { return a < b ? a : b; } static size_t max(size_t a, size_t b) { return a > b ? a : b; } - + + // Workaround memcmp issue with null pointers (undefined behavior) + // by providing a specialized version + static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) { + if (Length == 0) { return 0; } + return ::memcmp(Lhs,Rhs,Length); + } + public: /// @name Constructors /// @{ @@ -56,11 +63,17 @@ namespace llvm { /// Construct a string ref from a cstring. /*implicit*/ StringRef(const char *Str) - : Data(Str), Length(::strlen(Str)) {} + : Data(Str) { + assert(Str && "StringRef cannot be built from a NULL argument"); + Length = ::strlen(Str); // invoking strlen(NULL) is undefined behavior + } /// Construct a string ref from a pointer and length. /*implicit*/ StringRef(const char *data, size_t length) - : Data(data), Length(length) {} + : Data(data), Length(length) { + assert((data || length == 0) && + "StringRef cannot be built from a NULL argument with non-null length"); + } /// Construct a string ref from an std::string. /*implicit*/ StringRef(const std::string &Str) @@ -104,7 +117,7 @@ namespace llvm { /// compare() when the relative ordering of inequal strings isn't needed. bool equals(StringRef RHS) const { return (Length == RHS.Length && - memcmp(Data, RHS.Data, RHS.Length) == 0); + compareMemory(Data, RHS.Data, RHS.Length) == 0); } /// equals_lower - Check for string equality, ignoring case. @@ -116,7 +129,7 @@ namespace llvm { /// is lexicographically less than, equal to, or greater than the \arg RHS. int compare(StringRef RHS) const { // Check the prefix for a mismatch. - if (int Res = memcmp(Data, RHS.Data, min(Length, RHS.Length))) + if (int Res = compareMemory(Data, RHS.Data, min(Length, RHS.Length))) return Res < 0 ? -1 : 1; // Otherwise the prefixes match, so we only need to check the lengths. @@ -183,13 +196,13 @@ namespace llvm { /// startswith - Check if this string starts with the given \arg Prefix. bool startswith(StringRef Prefix) const { return Length >= Prefix.Length && - memcmp(Data, Prefix.Data, Prefix.Length) == 0; + compareMemory(Data, Prefix.Data, Prefix.Length) == 0; } /// endswith - Check if this string ends with the given \arg Suffix. bool endswith(StringRef Suffix) const { return Length >= Suffix.Length && - memcmp(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; + compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; } /// @} @@ -447,6 +460,10 @@ namespace llvm { return LHS.compare(RHS) != -1; } + inline std::string &operator+=(std::string &buffer, llvm::StringRef string) { + return buffer.append(string.data(), string.size()); + } + /// @} // StringRefs can be treated like a POD type. Modified: projects/largeSMP/contrib/llvm/include/llvm/ADT/Triple.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/ADT/Triple.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/ADT/Triple.h Mon Jun 13 04:55:29 2011 (r223034) @@ -225,7 +225,7 @@ public: /// if the environment component is present). StringRef getOSAndEnvironmentName() const; - /// getOSNumber - Parse the version number from the OS name component of the + /// getOSVersion - Parse the version number from the OS name component of the /// triple, if present. /// /// For example, "fooos1.2.3" would return (1, 2, 3). Modified: projects/largeSMP/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Mon Jun 13 04:55:29 2011 (r223034) @@ -38,6 +38,7 @@ #define LLVM_ANALYSIS_ALIAS_ANALYSIS_H #include "llvm/Support/CallSite.h" +#include "llvm/ADT/DenseMap.h" namespace llvm { @@ -488,6 +489,32 @@ public: } }; +// Specialize DenseMapInfo for Location. +template<> +struct DenseMapInfo { + static inline AliasAnalysis::Location getEmptyKey() { + return + AliasAnalysis::Location(DenseMapInfo::getEmptyKey(), + 0, 0); + } + static inline AliasAnalysis::Location getTombstoneKey() { + return + AliasAnalysis::Location(DenseMapInfo::getTombstoneKey(), + 0, 0); + } + static unsigned getHashValue(const AliasAnalysis::Location &Val) { + return DenseMapInfo::getHashValue(Val.Ptr) ^ + DenseMapInfo::getHashValue(Val.Size) ^ + DenseMapInfo::getHashValue(Val.TBAATag); + } + static bool isEqual(const AliasAnalysis::Location &LHS, + const AliasAnalysis::Location &RHS) { + return LHS.Ptr == RHS.Ptr && + LHS.Size == RHS.Size && + LHS.TBAATag == RHS.TBAATag; + } +}; + /// isNoAliasCall - Return true if this pointer is returned by a noalias /// function. bool isNoAliasCall(const Value *V); Copied: projects/largeSMP/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h (from r223033, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/largeSMP/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h Mon Jun 13 04:55:29 2011 (r223034, copy of r223033, head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h) @@ -0,0 +1,78 @@ +//===--- BranchProbabilityInfo.h - Branch Probability Analysis --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This pass is used to evaluate branch probabilties. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H +#define LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H + +#include "llvm/InitializePasses.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Analysis/LoopInfo.h" + +namespace llvm { + +class raw_ostream; + +class BranchProbabilityInfo : public FunctionPass { + + // Default weight value. Used when we don't have information about the edge. + static const uint32_t DEFAULT_WEIGHT = 16; + + typedef std::pair Edge; + + DenseMap Weights; + + // Get sum of the block successors' weights. + uint32_t getSumForBlock(BasicBlock *BB) const; + +public: + static char ID; + + BranchProbabilityInfo() : FunctionPass(ID) { + initializeBranchProbabilityInfoPass(*PassRegistry::getPassRegistry()); + } + + void getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnFunction(Function &F); + + // Returned value is between 1 and UINT32_MAX. Look at + // BranchProbabilityInfo.cpp for details. + uint32_t getEdgeWeight(BasicBlock *Src, BasicBlock *Dst) const; + + // Look at BranchProbabilityInfo.cpp for details. Use it with caution! + void setEdgeWeight(BasicBlock *Src, BasicBlock *Dst, uint32_t Weight); + + // A 'Hot' edge is an edge which probability is >= 80%. + bool isEdgeHot(BasicBlock *Src, BasicBlock *Dst) const; + + // Return a hot successor for the block BB or null if there isn't one. + BasicBlock *getHotSucc(BasicBlock *BB) const; + + // Return a probability as a fraction between 0 (0% probability) and + // 1 (100% probability), however the value is never equal to 0, and can be 1 + // only iff SRC block has only one successor. + BranchProbability getEdgeProbability(BasicBlock *Src, BasicBlock *Dst) const; + + // Print value between 0 (0% probability) and 1 (100% probability), + // however the value is never equal to 0, and can be 1 only iff SRC block + // has only one successor. + raw_ostream &printEdgeProbability(raw_ostream &OS, BasicBlock *Src, + BasicBlock *Dst) const; +}; + +} + +#endif Modified: projects/largeSMP/contrib/llvm/include/llvm/Analysis/CallGraph.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/Analysis/CallGraph.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/Analysis/CallGraph.h Mon Jun 13 04:55:29 2011 (r223034) @@ -259,6 +259,9 @@ public: /// addCalledFunction - Add a function to the list of functions called by this /// one. void addCalledFunction(CallSite CS, CallGraphNode *M) { + assert(!CS.getInstruction() || + !CS.getCalledFunction() || + !CS.getCalledFunction()->isIntrinsic()); CalledFunctions.push_back(std::make_pair(CS.getInstruction(), M)); M->AddRef(); } Modified: projects/largeSMP/contrib/llvm/include/llvm/Analysis/DIBuilder.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/Analysis/DIBuilder.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/Analysis/DIBuilder.h Mon Jun 13 04:55:29 2011 (r223034) @@ -117,8 +117,9 @@ namespace llvm { /// @param Name Typedef name. /// @param File File where this type is defined. /// @param LineNo Line number. + /// @param Context The surrounding context for the typedef. DIType createTypedef(DIType Ty, StringRef Name, DIFile File, - unsigned LineNo); + unsigned LineNo, DIDescriptor Context); /// createFriend - Create debugging information entry for a 'friend'. DIType createFriend(DIType Ty, DIType FriendTy); Modified: projects/largeSMP/contrib/llvm/include/llvm/Analysis/DebugInfo.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/Analysis/DebugInfo.h Mon Jun 13 04:40:47 2011 (r223033) +++ projects/largeSMP/contrib/llvm/include/llvm/Analysis/DebugInfo.h Mon Jun 13 04:55:29 2011 (r223034) @@ -49,15 +49,16 @@ namespace llvm { class DIDescriptor { public: enum { - FlagPrivate = 1 << 0, - FlagProtected = 1 << 1, - FlagFwdDecl = 1 << 2, - FlagAppleBlock = 1 << 3, - FlagBlockByrefStruct = 1 << 4, - FlagVirtual = 1 << 5, - FlagArtificial = 1 << 6, - FlagExplicit = 1 << 7, - FlagPrototyped = 1 << 8 + FlagPrivate = 1 << 0, + FlagProtected = 1 << 1, + FlagFwdDecl = 1 << 2, + FlagAppleBlock = 1 << 3, + FlagBlockByrefStruct = 1 << 4, + FlagVirtual = 1 << 5, + FlagArtificial = 1 << 6, + FlagExplicit = 1 << 7, + FlagPrototyped = 1 << 8, + FlagObjcClassComplete = 1 << 9 }; protected: const MDNode *DbgNode; @@ -271,6 +272,9 @@ namespace llvm { bool isArtificial() const { return (getFlags() & FlagArtificial) != 0; } + bool isObjcClassComplete() const { + return (getFlags() & FlagObjcClassComplete) != 0; + } bool isValid() const { return DbgNode && (isBasicType() || isDerivedType() || isCompositeType()); } Modified: projects/largeSMP/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h ============================================================================== --- projects/largeSMP/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h Mon Jun 13 04:40:47 2011 (r223033) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Jun 13 13:28:31 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE7EF1065670; Mon, 13 Jun 2011 13:28:31 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BDC3C8FC13; Mon, 13 Jun 2011 13:28:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DDSVXd076805; Mon, 13 Jun 2011 13:28:31 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DDSVdY076799; Mon, 13 Jun 2011 13:28:31 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106131328.p5DDSVdY076799@svn.freebsd.org> From: Attilio Rao Date: Mon, 13 Jun 2011 13:28:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223047 - in projects/largeSMP/sys: dev/xen/control kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 13 Jun 2011 13:28:31 -0000 Author: attilio Date: Mon Jun 13 13:28:31 2011 New Revision: 223047 URL: http://svn.freebsd.org/changeset/base/223047 Log: Remove pc_cpumask and pc_other_cpus usage from MI code. Tested by: pluknet Modified: projects/largeSMP/sys/dev/xen/control/control.c projects/largeSMP/sys/kern/kern_rmlock.c projects/largeSMP/sys/kern/sched_4bsd.c projects/largeSMP/sys/kern/subr_kdb.c projects/largeSMP/sys/kern/subr_smp.c Modified: projects/largeSMP/sys/dev/xen/control/control.c ============================================================================== --- projects/largeSMP/sys/dev/xen/control/control.c Mon Jun 13 13:24:33 2011 (r223046) +++ projects/largeSMP/sys/dev/xen/control/control.c Mon Jun 13 13:28:31 2011 (r223047) @@ -197,6 +197,7 @@ extern void xencons_resume(void); static void xctrl_suspend() { + u_int cpuid; int i, j, k, fpp; unsigned long max_pfn, start_info_mfn; @@ -210,11 +211,11 @@ xctrl_suspend() thread_lock(td); sched_bind(td, 0); thread_unlock(td); - KASSERT(PCPU_GET(cpuid) == 0, ("xen_suspend: not running on cpu 0")); + cpuid = PCPU_GET(cpuid); + KASSERT(cpuid == 0, ("xen_suspend: not running on cpu 0")); - sched_pin(); - map = PCPU_GET(other_cpus); - sched_unpin(); + map = all_cpus; + CPU_CLR(cpuid, &map); CPU_NAND(&map, &stopped_cpus); if (!CPU_EMPTY(&map)) stop_cpus(map); Modified: projects/largeSMP/sys/kern/kern_rmlock.c ============================================================================== --- projects/largeSMP/sys/kern/kern_rmlock.c Mon Jun 13 13:24:33 2011 (r223046) +++ projects/largeSMP/sys/kern/kern_rmlock.c Mon Jun 13 13:28:31 2011 (r223047) @@ -263,7 +263,7 @@ _rm_rlock_hard(struct rmlock *rm, struct pc = pcpu_find(curcpu); /* Check if we just need to do a proper critical_exit. */ - if (!CPU_OVERLAP(&pc->pc_cpumask, &rm->rm_writecpus)) { + if (!CPU_ISSET(pc->pc_cpuid, &rm->rm_writecpus)) { critical_exit(); return (1); } @@ -325,7 +325,7 @@ _rm_rlock_hard(struct rmlock *rm, struct critical_enter(); pc = pcpu_find(curcpu); - CPU_NAND(&rm->rm_writecpus, &pc->pc_cpumask); + CPU_CLR(pc->pc_cpuid, &rm->rm_writecpus); rm_tracker_add(pc, tracker); sched_pin(); critical_exit(); @@ -367,7 +367,7 @@ _rm_rlock(struct rmlock *rm, struct rm_p * conditional jump. */ if (0 == (td->td_owepreempt | - CPU_OVERLAP(&rm->rm_writecpus, &pc->pc_cpumask))) + CPU_ISSET(pc->pc_cpuid, &rm->rm_writecpus))) return (1); /* We do not have a read token and need to acquire one. */ Modified: projects/largeSMP/sys/kern/sched_4bsd.c ============================================================================== --- projects/largeSMP/sys/kern/sched_4bsd.c Mon Jun 13 13:24:33 2011 (r223046) +++ projects/largeSMP/sys/kern/sched_4bsd.c Mon Jun 13 13:28:31 2011 (r223047) @@ -951,8 +951,7 @@ sched_switch(struct thread *td, struct t if (td->td_flags & TDF_IDLETD) { TD_SET_CAN_RUN(td); #ifdef SMP - /* Spinlock held here, assume no migration. */ - CPU_NAND(&idle_cpus_mask, PCPU_PTR(cpumask)); + CPU_CLR(PCPU_GET(cpuid), &idle_cpus_mask); #endif } else { if (TD_IS_RUNNING(td)) { @@ -1026,7 +1025,7 @@ sched_switch(struct thread *td, struct t #ifdef SMP if (td->td_flags & TDF_IDLETD) - CPU_OR(&idle_cpus_mask, PCPU_PTR(cpumask)); + CPU_SET(PCPU_GET(cpuid), &idle_cpus_mask); #endif sched_lock.mtx_lock = (uintptr_t)td; td->td_oncpu = PCPU_GET(cpuid); @@ -1055,7 +1054,8 @@ static int forward_wakeup(int cpunum) { struct pcpu *pc; - cpuset_t dontuse, id, map, map2, me; + cpuset_t dontuse, map, map2; + u_int id, me; int iscpuset; mtx_assert(&sched_lock, MA_OWNED); @@ -1073,27 +1073,24 @@ forward_wakeup(int cpunum) /* * Check the idle mask we received against what we calculated * before in the old version. - * - * Also note that sched_lock is held now, thus no migration is - * expected. */ - me = PCPU_GET(cpumask); + me = PCPU_GET(cpuid); /* Don't bother if we should be doing it ourself. */ - if (CPU_OVERLAP(&me, &idle_cpus_mask) && - (cpunum == NOCPU || CPU_ISSET(cpunum, &me))) + if (CPU_ISSET(me, &idle_cpus_mask) && + (cpunum == NOCPU || me == cpunum)) return (0); - dontuse = me; + CPU_SETOF(me, &dontuse); CPU_OR(&dontuse, &stopped_cpus); CPU_OR(&dontuse, &hlt_cpus_mask); CPU_ZERO(&map2); if (forward_wakeup_use_loop) { STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { - id = pc->pc_cpumask; - if (!CPU_OVERLAP(&id, &dontuse) && + id = pc->pc_cpuid; + if (!CPU_ISSET(id, &dontuse) && pc->pc_curthread == pc->pc_idlethread) { - CPU_OR(&map2, &id); + CPU_SET(id, &map2); } } } @@ -1125,11 +1122,11 @@ forward_wakeup(int cpunum) if (!CPU_EMPTY(&map)) { forward_wakeups_delivered++; STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { - id = pc->pc_cpumask; - if (!CPU_OVERLAP(&map, &id)) + id = pc->pc_cpuid; + if (!CPU_ISSET(id, &map)) continue; if (cpu_idle_wakeup(pc->pc_cpuid)) - CPU_NAND(&map, &id); + CPU_CLR(id, &map); } if (!CPU_EMPTY(&map)) ipi_selected(map, IPI_AST); @@ -1147,7 +1144,7 @@ kick_other_cpu(int pri, int cpuid) int cpri; pcpu = pcpu_find(cpuid); - if (CPU_OVERLAP(&idle_cpus_mask, &pcpu->pc_cpumask)) { + if (CPU_ISSET(cpuid, &idle_cpus_mask)) { forward_wakeups_delivered++; if (!cpu_idle_wakeup(cpuid)) ipi_cpu(cpuid, IPI_AST); @@ -1205,10 +1202,10 @@ void sched_add(struct thread *td, int flags) #ifdef SMP { - cpuset_t idle, me, tidlemsk; + cpuset_t tidlemsk; struct td_sched *ts; + u_int cpu, cpuid; int forwarded = 0; - int cpu; int single_cpu = 0; ts = td->td_sched; @@ -1271,23 +1268,17 @@ sched_add(struct thread *td, int flags) ts->ts_runq = &runq; } - if (single_cpu && (cpu != PCPU_GET(cpuid))) { + cpuid = PCPU_GET(cpuid); + if (single_cpu && cpu != cpuid) { kick_other_cpu(td->td_priority, cpu); } else { if (!single_cpu) { + tidlemsk = idle_cpus_mask; + CPU_NAND(&tidlemsk, &hlt_cpus_mask); + CPU_CLR(cpuid, &tidlemsk); - /* - * Thread spinlock is held here, assume no - * migration is possible. - */ - me = PCPU_GET(cpumask); - idle = idle_cpus_mask; - tidlemsk = idle; - CPU_AND(&idle, &me); - CPU_OR(&me, &hlt_cpus_mask); - CPU_NAND(&tidlemsk, &me); - - if (CPU_EMPTY(&idle) && ((flags & SRQ_INTR) == 0) && + if (!CPU_ISSET(cpuid, &idle_cpus_mask) && + ((flags & SRQ_INTR) == 0) && !CPU_EMPTY(&tidlemsk)) forwarded = forward_wakeup(cpu); } Modified: projects/largeSMP/sys/kern/subr_kdb.c ============================================================================== --- projects/largeSMP/sys/kern/subr_kdb.c Mon Jun 13 13:24:33 2011 (r223046) +++ projects/largeSMP/sys/kern/subr_kdb.c Mon Jun 13 13:28:31 2011 (r223047) @@ -211,9 +211,12 @@ kdb_sysctl_trap_code(SYSCTL_HANDLER_ARGS void kdb_panic(const char *msg) { - #ifdef SMP - stop_cpus_hard(PCPU_GET(other_cpus)); + cpuset_t other_cpus; + + other_cpus = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &other_cpus); + stop_cpus_hard(other_cpus); #endif printf("KDB: panic\n"); panic("%s", msg); @@ -414,7 +417,7 @@ kdb_thr_ctx(struct thread *thr) #if defined(SMP) && defined(KDB_STOPPEDPCB) STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { if (pc->pc_curthread == thr && - CPU_OVERLAP(&stopped_cpus, &pc->pc_cpumask)) + CPU_ISSET(pc->pc_cpuid, &stopped_cpus)) return (KDB_STOPPEDPCB(pc)); } #endif @@ -501,6 +504,7 @@ kdb_trap(int type, int code, struct trap struct kdb_dbbe *be; register_t intr; #ifdef SMP + cpuset_t other_cpus; int did_stop_cpus; #endif int handled; @@ -516,8 +520,11 @@ kdb_trap(int type, int code, struct trap intr = intr_disable(); #ifdef SMP - if ((did_stop_cpus = kdb_stop_cpus) != 0) - stop_cpus_hard(PCPU_GET(other_cpus)); + if ((did_stop_cpus = kdb_stop_cpus) != 0) { + other_cpus = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &other_cpus); + stop_cpus_hard(other_cpus); + } #endif kdb_active++; Modified: projects/largeSMP/sys/kern/subr_smp.c ============================================================================== --- projects/largeSMP/sys/kern/subr_smp.c Mon Jun 13 13:24:33 2011 (r223046) +++ projects/largeSMP/sys/kern/subr_smp.c Mon Jun 13 13:28:31 2011 (r223047) @@ -142,7 +142,7 @@ mp_start(void *dummy) /* Probe for MP hardware. */ if (smp_disabled != 0 || cpu_mp_probe() == 0) { mp_ncpus = 1; - all_cpus = PCPU_GET(cpumask); + CPU_SETOF(PCPU_GET(cpuid), &all_cpus); return; } @@ -708,7 +708,7 @@ mp_setvariables_for_up(void *dummy) { mp_ncpus = 1; mp_maxid = PCPU_GET(cpuid); - all_cpus = PCPU_GET(cpumask); + CPU_SETOF(mp_maxid, &all_cpus); KASSERT(PCPU_GET(cpuid) == 0, ("UP must have a CPU ID of zero")); } SYSINIT(cpu_mp_setvariables, SI_SUB_TUNABLES, SI_ORDER_FIRST, From owner-svn-src-projects@FreeBSD.ORG Mon Jun 13 18:27:09 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99E1E106564A; Mon, 13 Jun 2011 18:27:09 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7FBB48FC08; Mon, 13 Jun 2011 18:27:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DIR9jd093732; Mon, 13 Jun 2011 18:27:09 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DIR9vb093724; Mon, 13 Jun 2011 18:27:09 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106131827.p5DIR9vb093724@svn.freebsd.org> From: Attilio Rao Date: Mon, 13 Jun 2011 18:27:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223053 - in projects/largeSMP: contrib/top share/mk sys/netinet sys/pc98/conf sys/sparc64/conf sys/ufs/ffs usr.bin/find usr.sbin/makefs/ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 13 Jun 2011 18:27:09 -0000 Author: attilio Date: Mon Jun 13 18:27:09 2011 New Revision: 223053 URL: http://svn.freebsd.org/changeset/base/223053 Log: MFC Modified: projects/largeSMP/sys/netinet/tcp_output.c projects/largeSMP/sys/pc98/conf/GENERIC projects/largeSMP/sys/sparc64/conf/GENERIC projects/largeSMP/sys/ufs/ffs/ffs_extern.h projects/largeSMP/usr.bin/find/function.c projects/largeSMP/usr.sbin/makefs/ffs/ffs_bswap.c projects/largeSMP/usr.sbin/makefs/ffs/ffs_subr.c Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/sys/netinet/tcp_output.c ============================================================================== --- projects/largeSMP/sys/netinet/tcp_output.c Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/sys/netinet/tcp_output.c Mon Jun 13 18:27:09 2011 (r223053) @@ -1331,7 +1331,7 @@ out: * then remember the size of the advertised window. * Any pending ACK has now been sent. */ - if (recwin > 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) + if (recwin >= 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) tp->rcv_adv = tp->rcv_nxt + recwin; tp->last_ack_sent = tp->rcv_nxt; tp->t_flags &= ~(TF_ACKNOW | TF_DELACK); Modified: projects/largeSMP/sys/pc98/conf/GENERIC ============================================================================== --- projects/largeSMP/sys/pc98/conf/GENERIC Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/sys/pc98/conf/GENERIC Mon Jun 13 18:27:09 2011 (r223053) @@ -139,12 +139,6 @@ device sc # Add suspend/resume support for the i8254. #device pmtimer -# Audio support -#device sound # Generic sound driver -#device snd_mss # Microsoft Sound System -#device "snd_sb16" # Sound Blaster 16 -#device snd_sbc # Sound Blaster - # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge @@ -288,3 +282,10 @@ device bpf # Berkeley packet filter #device firewire # FireWire bus code #device sbp # SCSI over FireWire (Requires scbus and da) #device fwe # Ethernet over FireWire (non-standard!) + +# Sound support +#device sound # Generic sound driver (required) +#device snd_mss # Microsoft Sound System +#device "snd_sb16" # Sound Blaster 16 +#device snd_sbc # Sound Blaster +#device snd_uaudio # USB Audio Modified: projects/largeSMP/sys/sparc64/conf/GENERIC ============================================================================== --- projects/largeSMP/sys/sparc64/conf/GENERIC Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/sys/sparc64/conf/GENERIC Mon Jun 13 18:27:09 2011 (r223053) @@ -61,13 +61,13 @@ options PRINTF_BUFR_SIZE=128 # Prevent options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework -options INCLUDE_CONFIG_FILE # Include this file in kernel +options INCLUDE_CONFIG_FILE # Include this file in kernel # Debugging for use in -current options KDB # Enable kernel debugger support. options DDB # Support DDB. options GDB # Support remote GDB. -options DEADLKRES # Enable the deadlock resolver +options DEADLKRES # Enable the deadlock resolver options INVARIANTS # Enable calls of extra sanity checking options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS options WITNESS # Enable checks to detect deadlocks and cycles @@ -266,3 +266,10 @@ device fwe # Ethernet over FireWire (n device fwip # IP over FireWire (RFC 2734,3146) device dcons # Dumb console driver device dcons_crom # Configuration ROM for dcons + +# Sound support +device sound # Generic sound driver (required) +device snd_audiocs # Crystal Semiconductor CS4231 +device snd_es137x # Ensoniq AudioPCI ES137x +device snd_t4dwave # Acer Labs M5451 +device snd_uaudio # USB Audio Modified: projects/largeSMP/sys/ufs/ffs/ffs_extern.h ============================================================================== --- projects/largeSMP/sys/ufs/ffs/ffs_extern.h Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/sys/ufs/ffs/ffs_extern.h Mon Jun 13 18:27:09 2011 (r223053) @@ -166,6 +166,7 @@ void softdep_freework(struct workhead *) int ffs_rdonly(struct inode *); +#ifdef _KERNEL TAILQ_HEAD(snaphead, inode); struct snapdata { @@ -175,5 +176,6 @@ struct snapdata { daddr_t *sn_blklist; struct lock sn_lock; }; +#endif /* _KERNEL */ #endif /* !_UFS_FFS_EXTERN_H */ Modified: projects/largeSMP/usr.bin/find/function.c ============================================================================== --- projects/largeSMP/usr.bin/find/function.c Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/usr.bin/find/function.c Mon Jun 13 18:27:09 2011 (r223053) @@ -846,7 +846,8 @@ f_fstype(PLAN *plan, FTSENT *entry) static dev_t curdev; /* need a guaranteed illegal dev value */ static int first = 1; struct statfs sb; - static int val_type, val_flags; + static int val_flags; + static char fstype[sizeof(sb.f_fstypename)]; char *p, save[2] = {0,0}; if ((plan->flags & F_MTMASK) == F_MTUNKNOWN) @@ -888,13 +889,13 @@ f_fstype(PLAN *plan, FTSENT *entry) * always copy both of them. */ val_flags = sb.f_flags; - val_type = sb.f_type; + strlcpy(fstype, sb.f_fstypename, sizeof(fstype)); } switch (plan->flags & F_MTMASK) { case F_MTFLAG: return val_flags & plan->mt_data; case F_MTTYPE: - return val_type == plan->mt_data; + return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0); default: abort(); } @@ -905,22 +906,11 @@ c_fstype(OPTION *option, char ***argvp) { char *fsname; PLAN *new; - struct xvfsconf vfc; fsname = nextarg(option, argvp); ftsoptions &= ~FTS_NOSTAT; new = palloc(option); - - /* - * Check first for a filesystem name. - */ - if (getvfsbyname(fsname, &vfc) == 0) { - new->flags |= F_MTTYPE; - new->mt_data = vfc.vfc_typenum; - return new; - } - switch (*fsname) { case 'l': if (!strcmp(fsname, "local")) { @@ -938,12 +928,8 @@ c_fstype(OPTION *option, char ***argvp) break; } - /* - * We need to make filesystem checks for filesystems - * that exists but aren't in the kernel work. - */ - fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname); - new->flags |= F_MTUNKNOWN; + new->flags |= F_MTTYPE; + new->c_data = fsname; return new; } Modified: projects/largeSMP/usr.sbin/makefs/ffs/ffs_bswap.c ============================================================================== --- projects/largeSMP/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 18:27:09 2011 (r223053) @@ -34,9 +34,6 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include #if defined(_KERNEL) #include #endif Modified: projects/largeSMP/usr.sbin/makefs/ffs/ffs_subr.c ============================================================================== --- projects/largeSMP/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 16:05:41 2011 (r223052) +++ projects/largeSMP/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 18:27:09 2011 (r223053) @@ -35,9 +35,6 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include #include #include From owner-svn-src-projects@FreeBSD.ORG Wed Jun 15 07:20:23 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 572F0106566C; Wed, 15 Jun 2011 07:20:23 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 448FE8FC15; Wed, 15 Jun 2011 07:20:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5F7KNYA070680; Wed, 15 Jun 2011 07:20:23 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5F7KM2g070646; Wed, 15 Jun 2011 07:20:22 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106150720.p5F7KM2g070646@svn.freebsd.org> From: Attilio Rao Date: Wed, 15 Jun 2011 07:20:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223106 - in projects/largeSMP: bin/ps bin/sh bin/sh/bltin contrib/gdb/gdb contrib/pf/pfctl contrib/sendmail contrib/sendmail/cf/cf contrib/sendmail/cf/feature contrib/sendmail/cf/m4 co... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 07:20:23 -0000 Author: attilio Date: Wed Jun 15 07:20:22 2011 New Revision: 223106 URL: http://svn.freebsd.org/changeset/base/223106 Log: MFC Added: projects/largeSMP/contrib/sendmail/cf/ostype/solaris11.m4 - copied unchanged from r223080, head/contrib/sendmail/cf/ostype/solaris11.m4 Modified: projects/largeSMP/bin/ps/extern.h projects/largeSMP/bin/ps/keyword.c projects/largeSMP/bin/ps/print.c projects/largeSMP/bin/ps/ps.1 projects/largeSMP/bin/sh/alias.c projects/largeSMP/bin/sh/alias.h projects/largeSMP/bin/sh/arith.h projects/largeSMP/bin/sh/bltin/bltin.h projects/largeSMP/bin/sh/cd.c projects/largeSMP/bin/sh/cd.h projects/largeSMP/bin/sh/eval.h projects/largeSMP/bin/sh/exec.h projects/largeSMP/bin/sh/expand.c projects/largeSMP/bin/sh/expand.h projects/largeSMP/bin/sh/histedit.c projects/largeSMP/bin/sh/jobs.c projects/largeSMP/bin/sh/jobs.h projects/largeSMP/bin/sh/main.c projects/largeSMP/bin/sh/main.h projects/largeSMP/bin/sh/mkbuiltins projects/largeSMP/bin/sh/myhistedit.h projects/largeSMP/bin/sh/options.c projects/largeSMP/bin/sh/options.h projects/largeSMP/bin/sh/trap.c projects/largeSMP/bin/sh/trap.h projects/largeSMP/bin/sh/var.c projects/largeSMP/bin/sh/var.h projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c projects/largeSMP/contrib/pf/pfctl/pfctl.8 projects/largeSMP/contrib/pf/pfctl/pfctl.c projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c projects/largeSMP/contrib/pf/pfctl/pfctl_parser.h projects/largeSMP/contrib/sendmail/CACerts projects/largeSMP/contrib/sendmail/FREEBSD-upgrade projects/largeSMP/contrib/sendmail/KNOWNBUGS projects/largeSMP/contrib/sendmail/LICENSE projects/largeSMP/contrib/sendmail/PGPKEYS projects/largeSMP/contrib/sendmail/RELEASE_NOTES projects/largeSMP/contrib/sendmail/cf/cf/submit.cf projects/largeSMP/contrib/sendmail/cf/feature/ldap_routing.m4 projects/largeSMP/contrib/sendmail/cf/m4/cfhead.m4 projects/largeSMP/contrib/sendmail/cf/m4/proto.m4 projects/largeSMP/contrib/sendmail/cf/m4/version.m4 projects/largeSMP/contrib/sendmail/contrib/qtool.pl projects/largeSMP/contrib/sendmail/doc/op/op.me projects/largeSMP/contrib/sendmail/include/sm/conf.h projects/largeSMP/contrib/sendmail/libmilter/docs/overview.html projects/largeSMP/contrib/sendmail/libmilter/docs/smfi_stop.html projects/largeSMP/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html projects/largeSMP/contrib/sendmail/libmilter/engine.c projects/largeSMP/contrib/sendmail/libmilter/sm_gethost.c projects/largeSMP/contrib/sendmail/libmilter/worker.c projects/largeSMP/contrib/sendmail/libsm/ldap.c projects/largeSMP/contrib/sendmail/makemap/makemap.c projects/largeSMP/contrib/sendmail/src/Makefile.m4 projects/largeSMP/contrib/sendmail/src/conf.c projects/largeSMP/contrib/sendmail/src/daemon.c projects/largeSMP/contrib/sendmail/src/deliver.c projects/largeSMP/contrib/sendmail/src/domain.c projects/largeSMP/contrib/sendmail/src/envelope.c projects/largeSMP/contrib/sendmail/src/err.c projects/largeSMP/contrib/sendmail/src/main.c projects/largeSMP/contrib/sendmail/src/map.c projects/largeSMP/contrib/sendmail/src/mci.c projects/largeSMP/contrib/sendmail/src/parseaddr.c projects/largeSMP/contrib/sendmail/src/queue.c projects/largeSMP/contrib/sendmail/src/readcf.c projects/largeSMP/contrib/sendmail/src/sendmail.8 projects/largeSMP/contrib/sendmail/src/sendmail.h projects/largeSMP/contrib/sendmail/src/sm_resolve.c projects/largeSMP/contrib/sendmail/src/srvrsmtp.c projects/largeSMP/contrib/sendmail/src/tls.c projects/largeSMP/contrib/sendmail/src/udb.c projects/largeSMP/contrib/sendmail/src/usersmtp.c projects/largeSMP/contrib/sendmail/src/version.c projects/largeSMP/etc/periodic/daily/800.scrub-zfs projects/largeSMP/etc/sendmail/freebsd.mc projects/largeSMP/etc/sendmail/freebsd.submit.mc projects/largeSMP/release/doc/en_US.ISO8859-1/relnotes/article.sgml projects/largeSMP/sbin/camcontrol/camcontrol.c projects/largeSMP/sbin/ifconfig/ifconfig.c projects/largeSMP/sbin/ipfw/ipfw.8 projects/largeSMP/sbin/ipfw/ipfw2.c projects/largeSMP/sbin/ipfw/ipfw2.h projects/largeSMP/sbin/ipfw/nat.c projects/largeSMP/share/misc/committers-ports.dot projects/largeSMP/sys/amd64/conf/GENERIC projects/largeSMP/sys/cam/ata/ata_da.c projects/largeSMP/sys/cam/cam_ccb.h projects/largeSMP/sys/cam/cam_periph.c projects/largeSMP/sys/cam/cam_periph.h projects/largeSMP/sys/cam/cam_xpt.c projects/largeSMP/sys/cam/cam_xpt.h projects/largeSMP/sys/cam/cam_xpt_internal.h projects/largeSMP/sys/cam/scsi/scsi_all.c projects/largeSMP/sys/cam/scsi/scsi_all.h projects/largeSMP/sys/cam/scsi/scsi_da.c projects/largeSMP/sys/cam/scsi/scsi_pass.c projects/largeSMP/sys/cam/scsi/scsi_xpt.c projects/largeSMP/sys/dev/ata/chipsets/ata-intel.c projects/largeSMP/sys/dev/puc/puc.c projects/largeSMP/sys/dev/puc/puc_bfe.h projects/largeSMP/sys/dev/puc/puc_pccard.c projects/largeSMP/sys/dev/puc/puc_pci.c projects/largeSMP/sys/dev/sound/pci/hda/hdac.c projects/largeSMP/sys/dev/xen/blkback/blkback.c projects/largeSMP/sys/geom/geom.h projects/largeSMP/sys/geom/geom_dev.c projects/largeSMP/sys/geom/geom_disk.c projects/largeSMP/sys/geom/geom_disk.h projects/largeSMP/sys/geom/geom_event.c projects/largeSMP/sys/geom/geom_subr.c projects/largeSMP/sys/i386/conf/GENERIC projects/largeSMP/sys/kern/kern_conf.c projects/largeSMP/sys/kern/kern_exit.c projects/largeSMP/sys/kern/subr_devstat.c projects/largeSMP/sys/kern/subr_kdb.c projects/largeSMP/sys/kern/sys_process.c projects/largeSMP/sys/net/if.h projects/largeSMP/sys/netinet/ipfw/ip_fw2.c projects/largeSMP/sys/netinet/ipfw/ip_fw_nat.c projects/largeSMP/sys/netinet/libalias/alias.h projects/largeSMP/sys/sys/conf.h projects/largeSMP/sys/sys/disk.h projects/largeSMP/sys/sys/proc.h projects/largeSMP/sys/ufs/ffs/ffs_softdep.c projects/largeSMP/usr.sbin/diskinfo/diskinfo.c Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/bin/ps/extern.h ============================================================================== --- projects/largeSMP/bin/ps/extern.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/extern.h Wed Jun 15 07:20:22 2011 (r223106) @@ -70,6 +70,7 @@ void pmem(KINFO *, VARENT *); void pri(KINFO *, VARENT *); void printheader(void); void priorityr(KINFO *, VARENT *); +void egroupname(KINFO *, VARENT *); void rgroupname(KINFO *, VARENT *); void runame(KINFO *, VARENT *); void rvar(KINFO *, VARENT *); @@ -78,6 +79,7 @@ int s_cputime(KINFO *); int s_label(KINFO *); int s_loginclass(KINFO *); int s_logname(KINFO *); +int s_egroupname(KINFO *); int s_rgroupname(KINFO *); int s_runame(KINFO *); int s_systime(KINFO *); Modified: projects/largeSMP/bin/ps/keyword.c ============================================================================== --- projects/largeSMP/bin/ps/keyword.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/keyword.c Wed Jun 15 07:20:22 2011 (r223106) @@ -88,12 +88,19 @@ static VAR var[] = { {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d", 0}, {"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egid", "", "gid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egroup", "", "group", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"emul", "EMUL", NULL, LJUST, emulname, NULL, EMULLEN, 0, CHAR, NULL, 0}, {"etime", "ELAPSED", NULL, USER, elapsed, NULL, 12, 0, CHAR, NULL, 0}, {"etimes", "ELAPSED", NULL, USER, elapseds, NULL, 12, 0, CHAR, NULL, 0}, + {"euid", "", "uid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, NULL, 8, KOFF(ki_flag), INT, "x", 0}, {"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"gid", "GID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_groups), + UINT, UIDFMT, 0}, + {"group", "GROUP", NULL, LJUST, egroupname, s_egroupname, + USERLEN, 0, CHAR, NULL, 0}, {"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG, "ld", 0}, Modified: projects/largeSMP/bin/ps/print.c ============================================================================== --- projects/largeSMP/bin/ps/print.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/print.c Wed Jun 15 07:20:22 2011 (r223106) @@ -341,6 +341,22 @@ s_uname(KINFO *k) } void +egroupname(KINFO *k, VARENT *ve) +{ + VAR *v; + + v = ve->var; + (void)printf("%-*s", v->width, + group_from_gid(k->ki_p->ki_groups[0], 0)); +} + +int +s_egroupname(KINFO *k) +{ + return (strlen(group_from_gid(k->ki_p->ki_groups[0], 0))); +} + +void rgroupname(KINFO *k, VARENT *ve) { VAR *v; Modified: projects/largeSMP/bin/ps/ps.1 ============================================================================== --- projects/largeSMP/bin/ps/ps.1 Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/ps/ps.1 Wed Jun 15 07:20:22 2011 (r223106) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd April 18, 2011 +.Dd June 14, 2011 .Dt PS 1 .Os .Sh NAME @@ -502,6 +502,12 @@ elapsed running time, in decimal integer .It Cm flags the process flags, in hexadecimal (alias .Cm f ) +.It Cm gid +effective group ID (alias +.Cm egid ) +.It Cm group +group name (from egid) (alias +.Cm egroup ) .It Cm inblk total blocks read (alias .Cm inblock ) @@ -629,7 +635,8 @@ process pointer .It Cm ucomm name to be used for accounting .It Cm uid -effective user ID +effective user ID (alias +.Cm euid ) .It Cm upr scheduling priority on return from system call (alias .Cm usrpri ) Modified: projects/largeSMP/bin/sh/alias.c ============================================================================== --- projects/largeSMP/bin/sh/alias.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/alias.c Wed Jun 15 07:20:22 2011 (r223106) @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "alias.h" #include "options.h" /* XXX for argptr (should remove?) */ +#include "builtins.h" #define ATABSIZE 39 Modified: projects/largeSMP/bin/sh/alias.h ============================================================================== --- projects/largeSMP/bin/sh/alias.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/alias.h Wed Jun 15 07:20:22 2011 (r223106) @@ -43,5 +43,3 @@ struct alias { }; struct alias *lookupalias(const char *, int); -int aliascmd(int, char **); -int unaliascmd(int, char **); Modified: projects/largeSMP/bin/sh/arith.h ============================================================================== --- projects/largeSMP/bin/sh/arith.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/arith.h Wed Jun 15 07:20:22 2011 (r223106) @@ -36,4 +36,3 @@ arith_t arith(const char *); void arith_lex_reset(void); -int expcmd(int, char **); Modified: projects/largeSMP/bin/sh/bltin/bltin.h ============================================================================== --- projects/largeSMP/bin/sh/bltin/bltin.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/bltin/bltin.h Wed Jun 15 07:20:22 2011 (r223106) @@ -43,6 +43,7 @@ #include "../mystring.h" #ifdef SHELL #include "../output.h" +#include "builtins.h" #define FILE struct output #undef stdout #define stdout out1 @@ -75,7 +76,4 @@ pointer stalloc(int); void error(const char *, ...) __printf0like(1, 2); pid_t getjobpgrp(char *); -int echocmd(int, char **); -int testcmd(int, char **); - extern char *commandname; Modified: projects/largeSMP/bin/sh/cd.c ============================================================================== --- projects/largeSMP/bin/sh/cd.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/cd.c Wed Jun 15 07:20:22 2011 (r223106) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "show.h" #include "cd.h" +#include "builtins.h" static int cdlogical(char *); static int cdphysical(char *); Modified: projects/largeSMP/bin/sh/cd.h ============================================================================== --- projects/largeSMP/bin/sh/cd.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/cd.h Wed Jun 15 07:20:22 2011 (r223106) @@ -30,5 +30,3 @@ */ void pwd_init(int); -int cdcmd (int, char **); -int pwdcmd(int, char **); Modified: projects/largeSMP/bin/sh/eval.h ============================================================================== --- projects/largeSMP/bin/sh/eval.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/eval.h Wed Jun 15 07:20:22 2011 (r223106) @@ -51,19 +51,10 @@ struct backcmd { /* result of evalbackc #define EV_TESTED 02 /* exit status is checked; ignore -e flag */ #define EV_BACKCMD 04 /* command executing within back quotes */ -int evalcmd(int, char **); void evalstring(char *, int); union node; /* BLETCH for ansi C */ void evaltree(union node *, int); void evalbackcmd(union node *, struct backcmd *); -int bltincmd(int, char **); -int breakcmd(int, char **); -int returncmd(int, char **); -int falsecmd(int, char **); -int truecmd(int, char **); -int execcmd(int, char **); -int timescmd(int, char **); -int commandcmd(int, char **); /* in_function returns nonzero if we are currently evaluating a function */ #define in_function() funcnest Modified: projects/largeSMP/bin/sh/exec.h ============================================================================== --- projects/largeSMP/bin/sh/exec.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/exec.h Wed Jun 15 07:20:22 2011 (r223106) @@ -66,7 +66,6 @@ extern int exerrno; /* last exec error void shellexec(char **, char **, const char *, int) __dead2; char *padvance(const char **, const char *); -int hashcmd(int, char **); void find_command(const char *, struct cmdentry *, int, const char *); int find_builtin(const char *, int *); void hashcd(void); @@ -75,5 +74,4 @@ void addcmdentry(const char *, struct cm void defun(const char *, union node *); int unsetfunc(const char *); int typecmd_impl(int, char **, int, const char *); -int typecmd(int, char **); void clearcmdentry(void); Modified: projects/largeSMP/bin/sh/expand.c ============================================================================== --- projects/largeSMP/bin/sh/expand.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/expand.c Wed Jun 15 07:20:22 2011 (r223106) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "arith.h" #include "show.h" +#include "builtins.h" /* * Structure specifying which parts of the string should be searched Modified: projects/largeSMP/bin/sh/expand.h ============================================================================== --- projects/largeSMP/bin/sh/expand.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/expand.h Wed Jun 15 07:20:22 2011 (r223106) @@ -63,4 +63,3 @@ void expari(int); int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); -int wordexpcmd(int, char **); Modified: projects/largeSMP/bin/sh/histedit.c ============================================================================== --- projects/largeSMP/bin/sh/histedit.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/histedit.c Wed Jun 15 07:20:22 2011 (r223106) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "eval.h" #include "memalloc.h" +#include "builtins.h" #define MAXHISTLOOPS 4 /* max recursions through fc */ #define DEFEDITOR "ed" /* default editor *should* be $EDITOR */ Modified: projects/largeSMP/bin/sh/jobs.c ============================================================================== --- projects/largeSMP/bin/sh/jobs.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/jobs.c Wed Jun 15 07:20:22 2011 (r223106) @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "var.h" +#include "builtins.h" static struct job *jobtab; /* array of jobs */ Modified: projects/largeSMP/bin/sh/jobs.h ============================================================================== --- projects/largeSMP/bin/sh/jobs.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/jobs.h Wed Jun 15 07:20:22 2011 (r223106) @@ -88,12 +88,7 @@ extern int in_dowait; /* are we in dowa extern volatile sig_atomic_t breakwaitcmd; /* break wait to process traps? */ void setjobctl(int); -int fgcmd(int, char **); -int bgcmd(int, char **); -int jobscmd(int, char **); void showjobs(int, int); -int waitcmd(int, char **); -int jobidcmd(int, char **); struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); int waitforjob(struct job *, int *); Modified: projects/largeSMP/bin/sh/main.c ============================================================================== --- projects/largeSMP/bin/sh/main.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/main.c Wed Jun 15 07:20:22 2011 (r223106) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "exec.h" #include "cd.h" +#include "builtins.h" int rootpid; int rootshell; Modified: projects/largeSMP/bin/sh/main.h ============================================================================== --- projects/largeSMP/bin/sh/main.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/main.h Wed Jun 15 07:20:22 2011 (r223106) @@ -39,5 +39,3 @@ extern struct jmploc main_handler; /* to void readcmdfile(const char *); void cmdloop(int); -int dotcmd(int, char **); -int exitcmd(int, char **); Modified: projects/largeSMP/bin/sh/mkbuiltins ============================================================================== --- projects/largeSMP/bin/sh/mkbuiltins Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/mkbuiltins Wed Jun 15 07:20:22 2011 (r223106) @@ -58,9 +58,7 @@ cat <<\! ! awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \ print $0}' builtins.def | sed 's/-[hj]//' > $temp -awk '{ printf "int %s(int, char **);\n", $1}' $temp -echo ' -int (*const builtinfunc[])(int, char **) = {' +echo 'int (*const builtinfunc[])(int, char **) = {' awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp echo '}; @@ -94,5 +92,7 @@ struct builtincmd { }; extern int (*const builtinfunc[])(int, char **); -extern const struct builtincmd builtincmd[];' +extern const struct builtincmd builtincmd[]; +' +awk '{ printf "int %s(int, char **);\n", $1}' $temp rm -f $temp Modified: projects/largeSMP/bin/sh/myhistedit.h ============================================================================== --- projects/largeSMP/bin/sh/myhistedit.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/myhistedit.h Wed Jun 15 07:20:22 2011 (r223106) @@ -39,8 +39,6 @@ extern int displayhist; void histedit(void); void sethistsize(const char *); void setterm(const char *); -int histcmd(int, char **); int not_fcnumber(const char *); int str_to_event(const char *, int); -int bindcmd(int, char **); Modified: projects/largeSMP/bin/sh/options.c ============================================================================== --- projects/largeSMP/bin/sh/options.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/options.c Wed Jun 15 07:20:22 2011 (r223106) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include "memalloc.h" #include "error.h" #include "mystring.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: projects/largeSMP/bin/sh/options.h ============================================================================== --- projects/largeSMP/bin/sh/options.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/options.h Wed Jun 15 07:20:22 2011 (r223106) @@ -108,8 +108,5 @@ void procargs(int, char **); void optschanged(void); void setparam(char **); void freeparam(struct shparam *); -int shiftcmd(int, char **); -int setcmd(int, char **); -int getoptscmd(int, char **); int nextopt(const char *); void getoptsreset(const char *); Modified: projects/largeSMP/bin/sh/trap.c ============================================================================== --- projects/largeSMP/bin/sh/trap.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/trap.c Wed Jun 15 07:20:22 2011 (r223106) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "trap.h" #include "mystring.h" +#include "builtins.h" #include "myhistedit.h" Modified: projects/largeSMP/bin/sh/trap.h ============================================================================== --- projects/largeSMP/bin/sh/trap.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/trap.h Wed Jun 15 07:20:22 2011 (r223106) @@ -37,7 +37,6 @@ extern int pendingsigs; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; -int trapcmd(int, char **); void clear_traps(void); int have_traps(void); void setsignal(int); Modified: projects/largeSMP/bin/sh/var.c ============================================================================== --- projects/largeSMP/bin/sh/var.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/var.c Wed Jun 15 07:20:22 2011 (r223106) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "parser.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: projects/largeSMP/bin/sh/var.h ============================================================================== --- projects/largeSMP/bin/sh/var.h Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/bin/sh/var.h Wed Jun 15 07:20:22 2011 (r223106) @@ -123,11 +123,7 @@ void updatecharset(void); void initcharset(void); char **environment(void); int showvarscmd(int, char **); -int exportcmd(int, char **); -int localcmd(int, char **); void mklocal(char *); void poplocalvars(void); -int setvarcmd(int, char **); -int unsetcmd(int, char **); int unsetvar(const char *); int setvarsafe(const char *, const char *, int); Modified: projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c ============================================================================== --- projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/gdb/gdb/ppcfbsd-tdep.c Wed Jun 15 07:20:22 2011 (r223106) @@ -27,7 +27,9 @@ #include "target.h" #include "breakpoint.h" #include "value.h" +#include "gdb_string.h" #include "osabi.h" +#include "regset.h" #include "ppc-tdep.h" #include "ppcfbsd-tdep.h" @@ -80,6 +82,17 @@ ppcfbsd_supply_reg (char *regs, int regn regcache_raw_supply (current_regcache, PC_REGNUM, regs + REG_PC_OFFSET); } +static void +ppcfbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, void *gregs, size_t size) +{ + ppcfbsd_supply_reg (gregs, -1); +} + +static struct regset ppcfbsd_gregset = { + NULL, (void*)ppcfbsd_supply_gregset +}; void ppcfbsd_fill_reg (char *regs, int regno) @@ -144,6 +157,20 @@ ppcfbsd_supply_fpreg (char *fpregs, int fpregs + FPREG_FPSCR_OFFSET); } +static void +ppcfbsd_supply_fpregset (const struct regset *regset, + struct regcache * regcache, + int regnum, void *fpset, size_t size) +{ + ppcfbsd_supply_fpreg (fpset, -1); +} + + +static struct regset ppcfbsd_fpregset = +{ + NULL, (void*)ppcfbsd_supply_fpregset +}; + void ppcfbsd_fill_fpreg (char *fpregs, int regno) { @@ -174,69 +201,285 @@ ppcfbsd_fill_fpreg (char *fpregs, int re fpregs + FPREG_FPSCR_OFFSET); } -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +/* Return the appropriate register set for the core section identified + by SECT_NAME and SECT_SIZE. */ + +const struct regset * +ppcfbsd_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, size_t sect_size) { - char *regs, *fpregs; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (strcmp (sect_name, ".reg") == 0 && sect_size >= SIZEOF_STRUCT_REG) + return &ppcfbsd_gregset; + + if (strcmp (sect_name, ".reg2") == 0 && sect_size >= SIZEOF_STRUCT_FPREG) + return &ppcfbsd_fpregset; - /* We get everything from one section. */ - if (which != 0) - return; + return NULL; +} - regs = core_reg_sect; - fpregs = core_reg_sect + SIZEOF_STRUCT_REG; - /* Integer registers. */ - ppcfbsd_supply_reg (regs, -1); +/* Macros for matching instructions. Note that, since all the + operands are masked off before they're or-ed into the instruction, + you can use -1 to make masks. */ + +#define insn_d(opcd, rts, ra, d) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xffff)) + +#define insn_ds(opcd, rts, ra, d, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xfffc) \ + | ((xo) & 0x3)) + +#define insn_xfx(opcd, rts, spr, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((spr) & 0x1f) << 16) \ + | (((spr) & 0x3e0) << 6) \ + | (((xo) & 0x3ff) << 1)) + +/* Read a PPC instruction from memory. PPC instructions are always + big-endian, no matter what endianness the program is running in, so + we can't use read_memory_integer or one of its friends here. */ +static unsigned int +read_insn (CORE_ADDR pc) +{ + unsigned char buf[4]; - /* Floating point registers. */ - ppcfbsd_supply_fpreg (fpregs, -1); + read_memory (pc, buf, 4); + return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; } -static void -fetch_elfcore_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) + +/* An instruction to match. */ +struct insn_pattern { - switch (which) + unsigned int mask; /* mask the insn with this... */ + unsigned int data; /* ...and see if it matches this. */ + int optional; /* If non-zero, this insn may be absent. */ +}; + +/* Return non-zero if the instructions at PC match the series + described in PATTERN, or zero otherwise. PATTERN is an array of + 'struct insn_pattern' objects, terminated by an entry whose mask is + zero. + + When the match is successful, fill INSN[i] with what PATTERN[i] + matched. If PATTERN[i] is optional, and the instruction wasn't + present, set INSN[i] to 0 (which is not a valid PPC instruction). + INSN should have as many elements as PATTERN. Note that, if + PATTERN contains optional instructions which aren't present in + memory, then INSN will have holes, so INSN[i] isn't necessarily the + i'th instruction in memory. */ +static int +insns_match_pattern (CORE_ADDR pc, + struct insn_pattern *pattern, + unsigned int *insn) +{ + int i; + + for (i = 0; pattern[i].mask; i++) { - case 0: /* Integer registers. */ - if (core_reg_size != SIZEOF_STRUCT_REG) - warning (_("Wrong size register set in core file.")); + insn[i] = read_insn (pc); + if ((insn[i] & pattern[i].mask) == pattern[i].data) + pc += 4; + else if (pattern[i].optional) + insn[i] = 0; else - ppcfbsd_supply_reg (core_reg_sect, -1); - break; + return 0; + } - case 2: /* Floating point registers. */ - if (core_reg_size != SIZEOF_STRUCT_FPREG) - warning (_("Wrong size FP register set in core file.")); - else - ppcfbsd_supply_fpreg (core_reg_sect, -1); - break; + return 1; +} - default: - /* Don't know what kind of register request this is; just ignore it. */ - break; - } + +/* Return the 'd' field of the d-form instruction INSN, properly + sign-extended. */ +static CORE_ADDR +insn_d_field (unsigned int insn) +{ + return ((((CORE_ADDR) insn & 0xffff) ^ 0x8000) - 0x8000); } -static struct core_fns ppcfbsd_core_fns = + +/* Return the 'ds' field of the ds-form instruction INSN, with the two + zero bits concatenated at the right, and properly + sign-extended. */ +static CORE_ADDR +insn_ds_field (unsigned int insn) { - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL /* next */ -}; + return ((((CORE_ADDR) insn & 0xfffc) ^ 0x8000) - 0x8000); +} + -static struct core_fns ppcfbsd_elfcore_fns = +/* If DESC is the address of a 64-bit PowerPC FreeBSD function + descriptor, return the descriptor's entry point. */ +static CORE_ADDR +ppc64_desc_entry_point (CORE_ADDR desc) { - bfd_target_elf_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_elfcore_registers, /* core_read_registers */ - NULL /* next */ -}; + /* The first word of the descriptor is the entry point. */ + return (CORE_ADDR) read_memory_unsigned_integer (desc, 8); +} + + +/* Pattern for the standard linkage function. These are built by + build_plt_stub in elf64-ppc.c, whose GLINK argument is always + zero. */ +static struct insn_pattern ppc64_standard_linkage[] = + { + /* addis r12, r2, */ + { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 }, + + /* std r2, 40(r1) */ + { -1, insn_ds (62, 2, 1, 40, 0), 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* ld r2, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* mtctr r11 */ + { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 11, 9, 467), + 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* bctr */ + { -1, 0x4e800420, 0 }, + + { 0, 0, 0 } + }; +#define PPC64_STANDARD_LINKAGE_LEN \ + (sizeof (ppc64_standard_linkage) / sizeof (ppc64_standard_linkage[0])) + +/* When the dynamic linker is doing lazy symbol resolution, the first + call to a function in another object will go like this: + + - The user's function calls the linkage function: + + 100007c4: 4b ff fc d5 bl 10000498 + 100007c8: e8 41 00 28 ld r2,40(r1) + + - The linkage function loads the entry point (and other stuff) from + the function descriptor in the PLT, and jumps to it: + + 10000498: 3d 82 00 00 addis r12,r2,0 + 1000049c: f8 41 00 28 std r2,40(r1) + 100004a0: e9 6c 80 98 ld r11,-32616(r12) + 100004a4: e8 4c 80 a0 ld r2,-32608(r12) + 100004a8: 7d 69 03 a6 mtctr r11 + 100004ac: e9 6c 80 a8 ld r11,-32600(r12) + 100004b0: 4e 80 04 20 bctr + + - But since this is the first time that PLT entry has been used, it + sends control to its glink entry. That loads the number of the + PLT entry and jumps to the common glink0 code: + + 10000c98: 38 00 00 00 li r0,0 + 10000c9c: 4b ff ff dc b 10000c78 + + - The common glink0 code then transfers control to the dynamic + linker's fixup code: + + 10000c78: e8 41 00 28 ld r2,40(r1) + 10000c7c: 3d 82 00 00 addis r12,r2,0 + 10000c80: e9 6c 80 80 ld r11,-32640(r12) + 10000c84: e8 4c 80 88 ld r2,-32632(r12) + 10000c88: 7d 69 03 a6 mtctr r11 + 10000c8c: e9 6c 80 90 ld r11,-32624(r12) + 10000c90: 4e 80 04 20 bctr + + Eventually, this code will figure out how to skip all of this, + including the dynamic linker. At the moment, we just get through + the linkage function. */ + +/* If the current thread is about to execute a series of instructions + at PC matching the ppc64_standard_linkage pattern, and INSN is the result + from that pattern match, return the code address to which the + standard linkage function will send them. (This doesn't deal with + dynamic linker lazy symbol resolution stubs.) */ +static CORE_ADDR +ppc64_standard_linkage_target (CORE_ADDR pc, unsigned int *insn) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + + /* The address of the function descriptor this linkage function + references. */ + CORE_ADDR desc + = ((CORE_ADDR) read_register (tdep->ppc_gp0_regnum + 2) + + (insn_d_field (insn[0]) << 16) + + insn_ds_field (insn[2])); + + /* The first word of the descriptor is the entry point. Return that. */ + return ppc64_desc_entry_point (desc); +} + + +/* Given that we've begun executing a call trampoline at PC, return + the entry point of the function the trampoline will go to. */ +static CORE_ADDR +ppc64_skip_trampoline_code (CORE_ADDR pc) +{ + unsigned int ppc64_standard_linkage_insn[PPC64_STANDARD_LINKAGE_LEN]; + + if (insns_match_pattern (pc, ppc64_standard_linkage, + ppc64_standard_linkage_insn)) + return ppc64_standard_linkage_target (pc, ppc64_standard_linkage_insn); + else + return 0; +} + + +/* Support for CONVERT_FROM_FUNC_PTR_ADDR (ARCH, ADDR, TARG) on PPC64 + GNU/Linux and FreeBSD. + + Usually a function pointer's representation is simply the address + of the function. On GNU/Linux on the 64-bit PowerPC however, a + function pointer is represented by a pointer to a TOC entry. This + TOC entry contains three words, the first word is the address of + the function, the second word is the TOC pointer (r2), and the + third word is the static chain value. Throughout GDB it is + currently assumed that a function pointer contains the address of + the function, which is not easy to fix. In addition, the + conversion of a function address to a function pointer would + require allocation of a TOC entry in the inferior's memory space, + with all its drawbacks. To be able to call C++ virtual methods in + the inferior (which are called via function pointers), + find_function_addr uses this function to get the function address + from a function pointer. */ + +/* If ADDR points at what is clearly a function descriptor, transform + it into the address of the corresponding function. Be + conservative, otherwize GDB will do the transformation on any + random addresses such as occures when there is no symbol table. */ + +static CORE_ADDR +ppc64_fbsd_convert_from_func_ptr_addr (struct gdbarch *gdbarch, + CORE_ADDR addr, + struct target_ops *targ) +{ + struct section_table *s = target_section_by_addr (targ, addr); + + /* Check if ADDR points to a function descriptor. */ + if (s && strcmp (s->the_bfd_section->name, ".opd") == 0) + return get_target_memory_unsigned (targ, addr, 8); + + return addr; +} static int ppcfbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) @@ -270,27 +513,42 @@ static void ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* FreeBSD doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_pc_in_sigtramp (gdbarch, ppcfbsd_pc_in_sigtramp); - /* For NetBSD, this is an on again, off again thing. Some systems - do use the broken struct convention, and some don't. */ - set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); -#ifdef __powerpc64__ - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_lp64_fetch_link_map_offsets); -#else - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_ilp32_fetch_link_map_offsets); -#endif + + if (tdep->wordsize == 4) + { + set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_ilp32_fetch_link_map_offsets); + } + + if (tdep->wordsize == 8) + { + set_gdbarch_convert_from_func_ptr_addr + (gdbarch, ppc64_fbsd_convert_from_func_ptr_addr); + + set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code); + + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_lp64_fetch_link_map_offsets); + } + + set_gdbarch_regset_from_core_section (gdbarch, + ppcfbsd_regset_from_core_section); } void _initialize_ppcfbsd_tdep (void) { + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc64, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); - gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_FREEBSD_ELF, - ppcfbsd_init_abi); - - add_core_fns (&ppcfbsd_core_fns); - add_core_fns (&ppcfbsd_elfcore_fns); } Modified: projects/largeSMP/contrib/pf/pfctl/pfctl.8 ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl.8 Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl.8 Wed Jun 15 07:20:22 2011 (r223106) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2002 +.Dd June 13, 2011 .Dt PFCTL 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Sh SYNOPSIS .Nm pfctl .Bk -words -.Op Fl AdeghmNnOqRrvz +.Op Fl AdeghmNnOPqRrvz .Op Fl a Ar anchor .Oo Fl D Ar macro Ns = .Ar value Oc @@ -350,6 +350,9 @@ without any options will enable optimizations, and a second .Fl o will enable profiling. +.It Fl P +Do not perform service name lookup for port specific rules, +instead display the ports numerically. .It Fl p Ar device Use the device file .Ar device @@ -670,6 +673,7 @@ Passive operating system fingerprint dat .Xr pf.conf 5 , .Xr pf.os 5 , .Xr rc.conf 5 , +.Xr services 5 , .Xr sysctl.conf 5 , .Xr authpf 8 , .Xr ftp-proxy 8 , Modified: projects/largeSMP/contrib/pf/pfctl/pfctl.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl.c Wed Jun 15 07:20:22 2011 (r223106) @@ -235,7 +235,7 @@ usage(void) { extern char *__progname; - fprintf(stderr, "usage: %s [-AdeghmNnOqRrvz] ", __progname); + fprintf(stderr, "usage: %s [-AdeghmNnOPqRrvz] ", __progname); fprintf(stderr, "[-a anchor] [-D macro=value] [-F modifier]\n"); fprintf(stderr, "\t[-f file] [-i interface] [-K host | network] "); fprintf(stderr, "[-k host | network ]\n"); @@ -770,6 +770,7 @@ pfctl_show_rules(int dev, char *path, in struct pfioc_rule pr; u_int32_t nr, mnr, header = 0; int rule_numbers = opts & (PF_OPT_VERBOSE2 | PF_OPT_DEBUG); + int numeric = opts & PF_OPT_NUMERIC; int len = strlen(path); int brace; char *p; @@ -834,7 +835,7 @@ pfctl_show_rules(int dev, char *path, in case PFCTL_SHOW_RULES: if (pr.rule.label[0] && (opts & PF_OPT_SHOWALL)) labels = 1; - print_rule(&pr.rule, pr.anchor_call, rule_numbers); + print_rule(&pr.rule, pr.anchor_call, rule_numbers, numeric); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); break; @@ -894,7 +895,7 @@ pfctl_show_rules(int dev, char *path, in } else p = &pr.anchor_call[0]; - print_rule(&pr.rule, p, rule_numbers); + print_rule(&pr.rule, p, rule_numbers, numeric); if (brace) printf(" {\n"); else @@ -951,7 +952,7 @@ pfctl_show_nat(int dev, int opts, char * dotitle = 0; } print_rule(&pr.rule, pr.anchor_call, - opts & PF_OPT_VERBOSE2); + opts & PF_OPT_VERBOSE2, opts & PF_OPT_NUMERIC); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); pfctl_clear_pool(&pr.rule.rpool); @@ -1318,7 +1319,8 @@ pfctl_load_rule(struct pfctl *pf, char * if (pf->opts & PF_OPT_VERBOSE) { INDENT(depth, !(pf->opts & PF_OPT_VERBOSE2)); print_rule(r, r->anchor ? r->anchor->name : "", - pf->opts & PF_OPT_VERBOSE2); + pf->opts & PF_OPT_VERBOSE2, + pf->opts & PF_OPT_NUMERIC); } path[len] = '\0'; pfctl_clear_pool(&r->rpool); @@ -1978,7 +1980,7 @@ main(int argc, char *argv[]) usage(); while ((ch = getopt(argc, argv, - "a:AdD:eqf:F:ghi:k:K:mnNOo::p:rRs:t:T:vx:z")) != -1) { + "a:AdD:eqf:F:ghi:k:K:mnNOo::Pp:rRs:t:T:vx:z")) != -1) { switch (ch) { case 'a': anchoropt = optarg; @@ -2080,6 +2082,9 @@ main(int argc, char *argv[]) case 'p': pf_device = optarg; break; + case 'P': + opts |= PF_OPT_NUMERIC; + break; case 's': showopt = pfctl_lookup_option(optarg, showopt_list); if (showopt == NULL) { Modified: projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl_optimize.c Wed Jun 15 07:20:22 2011 (r223106) @@ -407,7 +407,7 @@ optimize_superblock(struct pfctl *pf, st TAILQ_FOREACH(por, &block->sb_rules, por_entry) { printf(" "); print_rule(&por->por_rule, por->por_rule.anchor ? - por->por_rule.anchor->name : "", 1); + por->por_rule.anchor->name : "", 1, 0); } #endif /* OPT_DEBUG */ Modified: projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c ============================================================================== --- projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c Wed Jun 15 06:13:08 2011 (r223105) +++ projects/largeSMP/contrib/pf/pfctl/pfctl_parser.c Wed Jun 15 07:20:22 2011 (r223106) @@ -64,11 +64,11 @@ __FBSDID("$FreeBSD$"); #include "pfctl.h" void print_op (u_int8_t, const char *, const char *); -void print_port (u_int8_t, u_int16_t, u_int16_t, const char *); +void print_port (u_int8_t, u_int16_t, u_int16_t, const char *, int); void print_ugid (u_int8_t, unsigned, unsigned, const char *, unsigned); void print_flags (u_int8_t); void print_fromto(struct pf_rule_addr *, pf_osfp_t, - struct pf_rule_addr *, u_int8_t, u_int8_t, int); + struct pf_rule_addr *, u_int8_t, u_int8_t, int, int); int ifa_skip_if(const char *filter, struct node_host *p); struct node_host *ifa_grouplookup(const char *, int); @@ -320,12 +320,15 @@ print_op(u_int8_t op, const char *a1, co } void -print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto) +print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto, int numeric) { char a1[6], a2[6]; struct servent *s; - s = getservbyport(p1, proto); + if (!numeric) + s = getservbyport(p1, proto); + else + s = NULL; p1 = ntohs(p1); p2 = ntohs(p2); snprintf(a1, sizeof(a1), "%u", p1); @@ -363,7 +366,7 @@ print_flags(u_int8_t f) void print_fromto(struct pf_rule_addr *src, pf_osfp_t osfp, struct pf_rule_addr *dst, - sa_family_t af, u_int8_t proto, int verbose) + sa_family_t af, u_int8_t proto, int verbose, int numeric) { char buf[PF_OSFP_LEN*3]; if (src->addr.type == PF_ADDR_ADDRMASK && @@ -384,7 +387,8 @@ print_fromto(struct pf_rule_addr *src, p if (src->port_op) print_port(src->port_op, src->port[0], src->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); if (osfp != PF_OSFP_ANY) printf(" os \"%s\"", pfctl_lookup_fingerprint(osfp, buf, sizeof(buf))); @@ -396,7 +400,8 @@ print_fromto(struct pf_rule_addr *src, p if (dst->port_op) print_port(dst->port_op, dst->port[0], dst->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); } } @@ -673,7 +678,7 @@ print_src_node(struct pf_src_node *sn, i } void -print_rule(struct pf_rule *r, const char *anchor_call, int verbose) +print_rule(struct pf_rule *r, const char *anchor_call, int verbose, int numeric) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Jun 15 07:29:21 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A54F106564A; Wed, 15 Jun 2011 07:29:21 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7B47C8FC12; Wed, 15 Jun 2011 07:29:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5F7TLCU070987; Wed, 15 Jun 2011 07:29:21 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5F7TLY5070985; Wed, 15 Jun 2011 07:29:21 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106150729.p5F7TLY5070985@svn.freebsd.org> From: Attilio Rao Date: Wed, 15 Jun 2011 07:29:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223107 - projects/largeSMP/sys/ia64/ia64 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 07:29:21 -0000 Author: attilio Date: Wed Jun 15 07:29:20 2011 New Revision: 223107 URL: http://svn.freebsd.org/changeset/base/223107 Log: Remove the usage of pc_cpumask and pc_other_cpus from ia64. Reviewed and tested by: marcel Modified: projects/largeSMP/sys/ia64/ia64/mp_machdep.c Modified: projects/largeSMP/sys/ia64/ia64/mp_machdep.c ============================================================================== --- projects/largeSMP/sys/ia64/ia64/mp_machdep.c Wed Jun 15 07:20:22 2011 (r223106) +++ projects/largeSMP/sys/ia64/ia64/mp_machdep.c Wed Jun 15 07:29:20 2011 (r223107) @@ -139,18 +139,18 @@ ia64_ih_rndzvs(struct thread *td, u_int static u_int ia64_ih_stop(struct thread *td, u_int xiv, struct trapframe *tf) { - cpuset_t mybit; + u_int cpuid; PCPU_INC(md.stats.pcs_nstops); - mybit = PCPU_GET(cpumask); + cpuid = PCPU_GET(cpuid); savectx(PCPU_PTR(md.pcb)); - CPU_OR_ATOMIC(&stopped_cpus, &mybit); - while (!CPU_OVERLAP(&started_cpus, &mybit)) + CPU_SET_ATOMIC(cpuid, &stopped_cpus); + while (!CPU_ISSET(cpuid, &started_cpus)) cpu_spinwait(); - CPU_NAND_ATOMIC(&started_cpus, &mybit); - CPU_NAND_ATOMIC(&stopped_cpus, &mybit); + CPU_CLR_ATOMIC(cpuid, &started_cpus); + CPU_CLR_ATOMIC(cpuid, &stopped_cpus); return (0); } @@ -359,8 +359,6 @@ cpu_mp_start() STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { pc->pc_md.current_pmap = kernel_pmap; - pc->pc_other_cpus = all_cpus; - CPU_NAND(&pc->pc_other_cpus, &pc->pc_cpumask); /* The BSP is obviously running already. */ if (pc->pc_cpuid == 0) { pc->pc_md.awake = 1; @@ -464,7 +462,7 @@ ipi_selected(cpuset_t cpus, int ipi) struct pcpu *pc; STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { - if (CPU_OVERLAP(&cpus, &pc->pc_cpumask)) + if (CPU_ISSET(pc->pc_cpuid, &cpus)) ipi_send(pc, ipi); } } From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 07:16:03 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 751B3106564A; Thu, 16 Jun 2011 07:16:03 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 62E8E8FC18; Thu, 16 Jun 2011 07:16:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G7G3rH017201; Thu, 16 Jun 2011 07:16:03 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G7G3xR017185; Thu, 16 Jun 2011 07:16:03 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106160716.p5G7G3xR017185@svn.freebsd.org> From: Attilio Rao Date: Thu, 16 Jun 2011 07:16:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223140 - in projects/largeSMP: bin/sh contrib/top etc/periodic/daily lib/libc/gen lib/libc/net lib/libstand libexec/tftpd release share/mk sys/boot/forth sys/conf sys/dev/sound/pci/hda... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 07:16:03 -0000 Author: attilio Date: Thu Jun 16 07:16:02 2011 New Revision: 223140 URL: http://svn.freebsd.org/changeset/base/223140 Log: MFC Added: projects/largeSMP/tools/regression/bin/sh/builtins/case8.0 - copied unchanged from r223138, head/tools/regression/bin/sh/builtins/case8.0 Modified: projects/largeSMP/bin/sh/expand.c projects/largeSMP/bin/sh/sh.1 projects/largeSMP/etc/periodic/daily/800.scrub-zfs projects/largeSMP/lib/libc/gen/sysconf.c projects/largeSMP/lib/libc/net/sctp_sys_calls.c projects/largeSMP/lib/libstand/Makefile projects/largeSMP/lib/libstand/net.c projects/largeSMP/lib/libstand/tftp.c projects/largeSMP/libexec/tftpd/tftpd.8 projects/largeSMP/release/Makefile projects/largeSMP/sys/boot/forth/loader.rc projects/largeSMP/sys/conf/Makefile.arm projects/largeSMP/sys/dev/sound/pci/hda/hdac.c projects/largeSMP/sys/netinet/sctp.h projects/largeSMP/sys/netinet/sctp_auth.c projects/largeSMP/sys/netinet/sctp_indata.c projects/largeSMP/sys/netinet/sctp_output.c projects/largeSMP/sys/netinet/sctp_pcb.c projects/largeSMP/sys/netinet/sctp_structs.h projects/largeSMP/sys/netinet/sctp_uio.h projects/largeSMP/sys/netinet/sctp_usrreq.c projects/largeSMP/sys/netinet/sctp_var.h projects/largeSMP/sys/netinet/sctputil.c projects/largeSMP/sys/sparc64/include/smp.h projects/largeSMP/sys/ufs/ffs/ffs_alloc.c projects/largeSMP/sys/ufs/ffs/ffs_balloc.c projects/largeSMP/sys/ufs/ffs/ffs_extern.h projects/largeSMP/sys/ufs/ffs/ffs_inode.c projects/largeSMP/sys/ufs/ffs/ffs_snapshot.c projects/largeSMP/sys/ufs/ffs/ffs_softdep.c projects/largeSMP/sys/ufs/ffs/softdep.h projects/largeSMP/usr.bin/tftp/main.c projects/largeSMP/usr.bin/tftp/tftp.1 projects/largeSMP/usr.sbin/pw/pw_user.c Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/bin/sh/expand.c ============================================================================== --- projects/largeSMP/bin/sh/expand.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/bin/sh/expand.c Thu Jun 16 07:16:02 2011 (r223140) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /* * Routines to expand arguments to commands. We have to deal with @@ -1401,13 +1402,43 @@ get_wc(const char **p) /* + * See if a character matches a character class, starting at the first colon + * of "[:class:]". + * If a valid character class is recognized, a pointer to the next character + * after the final closing bracket is stored into *end, otherwise a null + * pointer is stored into *end. + */ +static int +match_charclass(const char *p, wchar_t chr, const char **end) +{ + char name[20]; + const char *nameend; + wctype_t cclass; + + *end = NULL; + p++; + nameend = strstr(p, ":]"); + if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p) + return 0; + memcpy(name, p, nameend - p); + name[nameend - p] = '\0'; + *end = nameend + 2; + cclass = wctype(name); + /* An unknown class matches nothing but is valid nevertheless. */ + if (cclass == 0) + return 0; + return iswctype(chr, cclass); +} + + +/* * Returns true if the pattern matches the string. */ int patmatch(const char *pattern, const char *string, int squoted) { - const char *p, *q; + const char *p, *q, *end; char c; wchar_t wc, wc2; @@ -1495,6 +1526,11 @@ patmatch(const char *pattern, const char do { if (c == CTLQUOTEMARK) continue; + if (c == '[' && *p == ':') { + found |= match_charclass(p, chr, &end); + if (end != NULL) + p = end; + } if (c == CTLESC) c = *p++; if (localeisutf8 && c & 0x80) { Modified: projects/largeSMP/bin/sh/sh.1 ============================================================================== --- projects/largeSMP/bin/sh/sh.1 Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/bin/sh/sh.1 Thu Jun 16 07:16:02 2011 (r223140) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 12, 2011 +.Dd June 15, 2011 .Dt SH 1 .Os .Sh NAME @@ -1648,6 +1648,15 @@ matches a rather than introducing a character class. A character class matches any of the characters between the square brackets. A range of characters may be specified using a minus sign. +A named class of characters (see +.Xr wctype 3 ) +may be specified by surrounding the name with +.Ql \&[: +and +.Ql :\&] . +For example, +.Ql \&[\&[:alpha:\&]\&] +is a shell pattern that matches a single letter. The character class may be complemented by making an exclamation point .Pq Ql !\& the first character of the character class. @@ -2572,6 +2581,7 @@ will return the argument. .Xr execve 2 , .Xr getrlimit 2 , .Xr umask 2 , +.Xr wctype 3 , .Xr editrc 5 .Sh HISTORY A Modified: projects/largeSMP/etc/periodic/daily/800.scrub-zfs ============================================================================== --- projects/largeSMP/etc/periodic/daily/800.scrub-zfs Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/etc/periodic/daily/800.scrub-zfs Thu Jun 16 07:16:02 2011 (r223140) @@ -46,7 +46,7 @@ case "$daily_scrub_zfs_enable" in esac # determine how many days shall be between scrubs - eval _pool_threshold=\${daily_scrub_zfs_$(echo "${pool}"|tr -s "-" "_"|tr -s "." "_"|tr -s ":" "_")_threshold} + eval _pool_threshold=\${daily_scrub_zfs_$(echo "${pool}"|tr ".:-" "_")_threshold} if [ -z "${_pool_threshold}" ];then _pool_threshold=${daily_scrub_zfs_default_threshold} fi Modified: projects/largeSMP/lib/libc/gen/sysconf.c ============================================================================== --- projects/largeSMP/lib/libc/gen/sysconf.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/lib/libc/gen/sysconf.c Thu Jun 16 07:16:02 2011 (r223140) @@ -599,11 +599,11 @@ yesno: #ifdef _SC_CPUSET_SIZE case _SC_CPUSET_SIZE: - len = sizeof(lvalue); - if (sysctlbyname("kern.sched.cpusetsize", &lvalue, &len, NULL, + len = sizeof(value); + if (sysctlbyname("kern.sched.cpusetsize", &value, &len, NULL, 0) == -1) return (-1); - return (lvalue); + return ((long)value); #endif default: Modified: projects/largeSMP/lib/libc/net/sctp_sys_calls.c ============================================================================== --- projects/largeSMP/lib/libc/net/sctp_sys_calls.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/lib/libc/net/sctp_sys_calls.c Thu Jun 16 07:16:02 2011 (r223140) @@ -141,7 +141,7 @@ in6_sin6_2_sin(struct sockaddr_in *sin, int sctp_getaddrlen(sa_family_t family) { - int error, sd; + int ret, sd; socklen_t siz; struct sctp_assoc_value av; @@ -151,13 +151,15 @@ sctp_getaddrlen(sa_family_t family) sd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); #elif defined(AF_INET6) sd = socket(AF_INET6, SOCK_SEQPACKET, IPPROTO_SCTP); +#else + sd = -1; #endif if (sd == -1) { return (-1); } - error = getsockopt(sd, IPPROTO_SCTP, SCTP_GET_ADDR_LEN, &av, &siz); + ret = getsockopt(sd, IPPROTO_SCTP, SCTP_GET_ADDR_LEN, &av, &siz); close(sd); - if (error == 0) { + if (ret == 0) { return ((int)av.assoc_value); } else { return (-1); @@ -402,6 +404,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_TIMEOUTS: ((struct sctp_timeouts *)arg)->stimo_assoc_id = id; break; + case SCTP_EVENT: + ((struct sctp_event *)arg)->se_assoc_id = id; + break; default: break; } @@ -919,32 +924,259 @@ sctp_recvmsg(int s, #endif } +ssize_t +sctp_recvv(int sd, + const struct iovec *iov, + int iovlen, + struct sockaddr *from, + socklen_t * fromlen, + void *info, + socklen_t * infolen, + unsigned int *infotype, + int *flags) +{ + char ctlbuf[SCTP_CONTROL_VEC_SIZE_RCV]; + struct msghdr msg; + struct cmsghdr *cmsg; + ssize_t n; + struct sctp_rcvinfo *rcvinfo; + struct sctp_nxtinfo *nxtinfo; -#if defined(HAVE_SCTP_PEELOFF_SOCKOPT) -#include + if (infotype) { + *infotype = SCTP_RECVV_NOINFO; + } + msg.msg_name = from; + if (fromlen == NULL) { + msg.msg_namelen = 0; + } else { + msg.msg_namelen = *fromlen; + } + msg.msg_iov = (struct iovec *)iov; + msg.msg_iovlen = iovlen; + msg.msg_control = ctlbuf; + msg.msg_controllen = sizeof(ctlbuf); + errno = 0; + n = recvmsg(sd, &msg, *flags); + *flags = msg.msg_flags; + if ((n > 0) && + (msg.msg_controllen > 0) && + (infotype != NULL) && + (infolen != NULL) && + (*infolen > 0)) { + rcvinfo = NULL; + nxtinfo = NULL; + for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + if (cmsg->cmsg_level != IPPROTO_SCTP) { + continue; + } + if (cmsg->cmsg_type == SCTP_RCVINFO) { + rcvinfo = (struct sctp_rcvinfo *)CMSG_DATA(cmsg); + } + if (cmsg->cmsg_type == SCTP_NXTINFO) { + nxtinfo = (struct sctp_nxtinfo *)CMSG_DATA(cmsg); + } + if (rcvinfo && nxtinfo) { + break; + } + } + if (rcvinfo) { + if (nxtinfo) { + if (*infolen >= sizeof(struct sctp_recvv_rn)) { + struct sctp_recvv_rn *rn_info; + + rn_info = (struct sctp_recvv_rn *)info; + rn_info->recvv_rcvinfo = *rcvinfo; + rn_info->recvv_nxtinfo = *nxtinfo; + *infolen = (socklen_t) sizeof(struct sctp_recvv_rn); + *infotype = SCTP_RECVV_RN; + } + } else { + if (*infolen >= sizeof(struct sctp_rcvinfo)) { + memcpy(info, rcvinfo, sizeof(struct sctp_rcvinfo)); + *infolen = (socklen_t) sizeof(struct sctp_rcvinfo); + *infotype = SCTP_RECVV_RCVINFO; + } + } + } else if (nxtinfo) { + if (*infolen >= sizeof(struct sctp_rcvinfo)) { + memcpy(info, nxtinfo, sizeof(struct sctp_nxtinfo)); + *infolen = (socklen_t) sizeof(struct sctp_nxtinfo); + *infotype = SCTP_RECVV_NXTINFO; + } + } + } + return (n); +} -int -sctp_peeloff(int sd, sctp_assoc_t assoc_id) +ssize_t +sctp_sendv(int sd, + const struct iovec *iov, int iovcnt, + struct sockaddr *addrs, int addrcnt, + void *info, socklen_t infolen, unsigned int infotype, + int flags) { - struct sctp_peeloff_opt peeloff; - int result; - socklen_t optlen; - - /* set in the socket option params */ - memset(&peeloff, 0, sizeof(peeloff)); - peeloff.s = sd; - peeloff.assoc_id = assoc_id; - optlen = sizeof(peeloff); - result = getsockopt(sd, IPPROTO_SCTP, SCTP_PEELOFF, (void *)&peeloff, &optlen); + ssize_t ret; + int i; + size_t addr_len; + struct sctp_sendv_spa *spa_info; + struct msghdr msg; + struct cmsghdr *cmsg; + char *cmsgbuf; + struct sockaddr *addr; + struct sockaddr_in *addr_in; + struct sockaddr_in6 *addr_in6; - if (result < 0) { + if ((addrcnt < 0) || (iovcnt < 0)) { + errno = EINVAL; + return (-1); + } + cmsgbuf = malloc(CMSG_SPACE(sizeof(struct sctp_sndinfo)) + + CMSG_SPACE(sizeof(struct sctp_prinfo)) + + CMSG_SPACE(sizeof(struct sctp_authinfo)) + + addrcnt * CMSG_SPACE(sizeof(struct in6_addr))); + if (cmsgbuf == NULL) { + errno = ENOBUFS; return (-1); + } + msg.msg_control = cmsgbuf; + msg.msg_controllen = 0; + cmsg = (struct cmsghdr *)cmsgbuf; + switch (infotype) { + case SCTP_SENDV_SNDINFO: + if (infolen < sizeof(struct sctp_sndinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_SNDINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_sndinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); + break; + case SCTP_SENDV_PRINFO: + if (infolen < sizeof(struct sctp_prinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_PRINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_prinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_prinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_prinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_prinfo))); + break; + case SCTP_SENDV_AUTHINFO: + if (infolen < sizeof(struct sctp_authinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_AUTHINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_authinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_authinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_authinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_authinfo))); + break; + case SCTP_SENDV_SPA: + if (infolen < sizeof(struct sctp_sendv_spa)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + spa_info = (struct sctp_sendv_spa *)info; + if (spa_info->sendv_flags & SCTP_SEND_SNDINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_SNDINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_sndinfo, sizeof(struct sctp_sndinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); + } + if (spa_info->sendv_flags & SCTP_SEND_PRINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_PRINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_prinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_prinfo, sizeof(struct sctp_prinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_prinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_prinfo))); + } + if (spa_info->sendv_flags & SCTP_SEND_AUTHINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_AUTHINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_authinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_authinfo, sizeof(struct sctp_authinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_authinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_authinfo))); + } + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + addr = addrs; + if (addrcnt == 1) { + msg.msg_name = addr; + switch (addr->sa_family) { + case AF_INET: + msg.msg_namelen = sizeof(struct sockaddr_in); + break; + case AF_INET6: + msg.msg_namelen = sizeof(struct sockaddr_in6); + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } } else { - return (peeloff.new_sd); + msg.msg_name = NULL; + msg.msg_namelen = 0; + for (i = 0; i < addrcnt; i++) { + switch (addr->sa_family) { + case AF_INET: + addr_len = sizeof(struct sockaddr_in); + addr_in = (struct sockaddr_in *)addr; + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV4; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in->sin_addr, sizeof(struct in_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in_addr))); + break; + case AF_INET6: + addr_len = sizeof(struct sockaddr_in6); + addr_in6 = (struct sockaddr_in6 *)addr; + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV6; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in6->sin6_addr, sizeof(struct in6_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in6_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in6_addr))); + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + addr = (struct sockaddr *)((caddr_t)addr + addr_len); + } } + if (msg.msg_controllen == 0) { + msg.msg_control = NULL; + } + msg.msg_iov = (struct iovec *)iov; + msg.msg_iovlen = iovcnt; + msg.msg_flags = 0; + ret = sendmsg(sd, &msg, flags); + free(cmsgbuf); + return (ret); } -#endif #if !defined(SYS_sctp_peeloff) && !defined(HAVE_SCTP_PEELOFF_SOCKOPT) Modified: projects/largeSMP/lib/libstand/Makefile ============================================================================== --- projects/largeSMP/lib/libstand/Makefile Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/lib/libstand/Makefile Thu Jun 16 07:16:02 2011 (r223140) @@ -15,7 +15,7 @@ NO_PIC= INCS= stand.h MAN= libstand.3 -WARNS?= 0 +WARNS?= 2 CFLAGS+= -ffreestanding -Wformat CFLAGS+= -I${.CURDIR} Modified: projects/largeSMP/lib/libstand/net.c ============================================================================== --- projects/largeSMP/lib/libstand/net.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/lib/libstand/net.c Thu Jun 16 07:16:02 2011 (r223140) @@ -100,7 +100,7 @@ sendrecv(struct iodesc *d, cc, ssize); tleft = tmo; - tmo <<= 1; + tmo += MINTMO; if (tmo > MAXTMO) tmo = MAXTMO; Modified: projects/largeSMP/lib/libstand/tftp.c ============================================================================== --- projects/largeSMP/lib/libstand/tftp.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/lib/libstand/tftp.c Thu Jun 16 07:16:02 2011 (r223140) @@ -60,12 +60,21 @@ __FBSDID("$FreeBSD$"); #include "tftp.h" +struct tftp_handle; + static int tftp_open(const char *path, struct open_file *f); static int tftp_close(struct open_file *f); +static void tftp_parse_oack(struct tftp_handle *h, char *buf, size_t len); static int tftp_read(struct open_file *f, void *buf, size_t size, size_t *resid); static int tftp_write(struct open_file *f, void *buf, size_t size, size_t *resid); static off_t tftp_seek(struct open_file *f, off_t offset, int where); +static int tftp_set_blksize(struct tftp_handle *h, const char *str); static int tftp_stat(struct open_file *f, struct stat *sb); +static ssize_t sendrecv_tftp(struct tftp_handle *h, + ssize_t (*sproc)(struct iodesc *, void *, size_t), + void *sbuf, size_t ssize, + ssize_t (*rproc)(struct tftp_handle *h, void *, ssize_t, time_t, unsigned short *), + void *rbuf, size_t rsize, unsigned short *rtype); struct fs_ops tftp_fsops = { "tftp", @@ -81,8 +90,20 @@ struct fs_ops tftp_fsops = { extern struct in_addr servip; static int tftpport = 2000; +static int is_open = 0; -#define RSPACE 520 /* max data packet, rounded up */ +/* + * The legacy TFTP_BLKSIZE value was 512. + * TFTP_REQUESTED_BLKSIZE of 1428 is (Ethernet MTU, less the TFTP, UDP and + * IP header lengths). + */ +#define TFTP_REQUESTED_BLKSIZE 1428 + +/* + * Choose a blksize big enough so we can test with Ethernet + * Jumbo frames in the future. + */ +#define TFTP_MAX_BLKSIZE 9008 struct tftp_handle { struct iodesc *iodesc; @@ -91,10 +112,12 @@ struct tftp_handle { int validsize; int off; char *path; /* saved for re-requests */ + unsigned int tftp_blksize; + unsigned long tftp_tsize; struct { u_char header[HEADER_SIZE]; struct tftphdr t; - u_char space[RSPACE]; + u_char space[TFTP_MAX_BLKSIZE]; } __packed __aligned(4) lastdata; }; @@ -110,8 +133,10 @@ static const int tftperrors[8] = { }; static ssize_t -recvtftp(struct iodesc *d, void *pkt, ssize_t len, time_t tleft) +recvtftp(struct tftp_handle *h, void *pkt, ssize_t len, time_t tleft, + unsigned short *rtype) { + struct iodesc *d = h->iodesc; struct tftphdr *t; errno = 0; @@ -122,6 +147,7 @@ recvtftp(struct iodesc *d, void *pkt, ss return (-1); t = (struct tftphdr *) pkt; + *rtype = ntohs(t->th_opcode); switch (ntohs(t->th_opcode)) { case DATA: { int got; @@ -154,6 +180,18 @@ recvtftp(struct iodesc *d, void *pkt, ss errno = tftperrors[ntohs(t->th_code)]; } return (-1); + case OACK: { + struct udphdr *uh; + int tftp_oack_len = len - sizeof(t->th_opcode); + tftp_parse_oack(h, t->th_u.tu_stuff, tftp_oack_len); + /* + * Remember which port this OACK came from, + * because we need to send the ACK back to it. + */ + uh = (struct udphdr *) pkt - 1; + d->destport = uh->uh_sport; + return (0); + } default: #ifdef TFTP_DEBUG printf("tftp type %d not handled\n", ntohs(t->th_opcode)); @@ -175,14 +213,35 @@ tftp_makereq(struct tftp_handle *h) int l; ssize_t res; struct tftphdr *t; + char *tftp_blksize = NULL; + int blksize_l; + unsigned short rtype = 0; + + /* + * Allow overriding default TFTP block size by setting + * a tftp.blksize environment variable. + */ + if ((tftp_blksize = getenv("tftp.blksize")) != NULL) { + tftp_set_blksize(h, tftp_blksize); + } wbuf.t.th_opcode = htons((u_short) RRQ); wtail = wbuf.t.th_stuff; l = strlen(h->path); + if (l > FNAME_SIZE) + return (ENAMETOOLONG); bcopy(h->path, wtail, l + 1); wtail += l + 1; bcopy("octet", wtail, 6); wtail += 6; + bcopy("blksize", wtail, 8); + wtail += 8; + blksize_l = sprintf(wtail, "%d", h->tftp_blksize); + wtail += blksize_l + 1; + bcopy("tsize", wtail, 6); + wtail += 6; + bcopy("0", wtail, 2); + wtail += 2; t = &h->lastdata.t; @@ -191,18 +250,33 @@ tftp_makereq(struct tftp_handle *h) h->iodesc->destport = htons(IPPORT_TFTP); h->iodesc->xid = 1; /* expected block */ - res = sendrecv(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, - recvtftp, t, sizeof(*t) + RSPACE); + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); - if (res == -1) - return (errno); + if (rtype == OACK) { + wbuf.t.th_opcode = htons((u_short)ACK); + wtail = (char *) &wbuf.t.th_block; + wbuf.t.th_block = htons(0); + wtail += 2; + rtype = 0; + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); + } + + switch (rtype) { + case DATA: { + h->currblock = 1; + h->validsize = res; + h->islastblock = 0; + if (res < h->tftp_blksize) + h->islastblock = 1; /* very short file */ + return (0); + } + case ERROR: + default: + return (errno); + } - h->currblock = 1; - h->validsize = res; - h->islastblock = 0; - if (res < SEGSIZE) - h->islastblock = 1; /* very short file */ - return (0); } /* ack block, expect next */ @@ -216,7 +290,7 @@ tftp_getnextblock(struct tftp_handle *h) char *wtail; int res; struct tftphdr *t; - + unsigned short rtype = 0; wbuf.t.th_opcode = htons((u_short) ACK); wtail = (char *) &wbuf.t.th_block; wbuf.t.th_block = htons((u_short) h->currblock); @@ -226,16 +300,23 @@ tftp_getnextblock(struct tftp_handle *h) h->iodesc->xid = h->currblock + 1; /* expected block */ - res = sendrecv(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, - recvtftp, t, sizeof(*t) + RSPACE); + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); if (res == -1) /* 0 is OK! */ return (errno); h->currblock++; h->validsize = res; - if (res < SEGSIZE) + if (res < h->tftp_blksize) h->islastblock = 1; /* EOF */ + + if (h->islastblock == 1) { + /* Send an ACK for the last block */ + wbuf.t.th_block = htons((u_short) h->currblock); + sendudp(h->iodesc, &wbuf.t, wtail - (char *)&wbuf.t); + } + return (0); } @@ -251,10 +332,15 @@ tftp_open(const char *path, struct open_ return (EINVAL); #endif + if (is_open) + return (EBUSY); + tftpfile = (struct tftp_handle *) malloc(sizeof(*tftpfile)); if (!tftpfile) return (ENOMEM); + memset(tftpfile, 0, sizeof(*tftpfile)); + tftpfile->tftp_blksize = TFTP_REQUESTED_BLKSIZE; tftpfile->iodesc = io = socktodesc(*(int *) (f->f_devdata)); if (io == NULL) return (EINVAL); @@ -275,6 +361,7 @@ tftp_open(const char *path, struct open_ return (res); } f->f_fsdata = (void *) tftpfile; + is_open = 1; return (0); } @@ -292,7 +379,7 @@ tftp_read(struct open_file *f, void *add if (!(tc++ % 16)) twiddle(); - needblock = tftpfile->off / SEGSIZE + 1; + needblock = tftpfile->off / tftpfile->tftp_blksize + 1; if (tftpfile->currblock > needblock) /* seek backwards */ tftp_makereq(tftpfile); /* no error check, it worked @@ -315,7 +402,7 @@ tftp_read(struct open_file *f, void *add if (tftpfile->currblock == needblock) { int offinblock, inbuffer; - offinblock = tftpfile->off % SEGSIZE; + offinblock = tftpfile->off % tftpfile->tftp_blksize; inbuffer = tftpfile->validsize - offinblock; if (inbuffer < 0) { @@ -361,18 +448,19 @@ tftp_close(struct open_file *f) free(tftpfile->path); free(tftpfile); } + is_open = 0; return (0); } static int tftp_write(struct open_file *f __unused, void *start __unused, size_t size __unused, - size_t *resid /* out */ __unused) + size_t *resid __unused /* out */) { return (EROFS); } static int -tftp_stat(struct open_file *f, struct stat *sb) +tftp_stat(struct open_file *f, struct stat *sb) { struct tftp_handle *tftpfile; tftpfile = (struct tftp_handle *) f->f_fsdata; @@ -404,3 +492,166 @@ tftp_seek(struct open_file *f, off_t off } return (tftpfile->off); } + +static ssize_t +sendrecv_tftp(struct tftp_handle *h, + ssize_t (*sproc)(struct iodesc *, void *, size_t), + void *sbuf, size_t ssize, + ssize_t (*rproc)(struct tftp_handle *, void *, ssize_t, time_t, unsigned short *), + void *rbuf, size_t rsize, unsigned short *rtype) +{ + struct iodesc *d = h->iodesc; + ssize_t cc; + time_t t, t1, tleft; + +#ifdef TFTP_DEBUG + if (debug) + printf("sendrecv: called\n"); +#endif + + tleft = MINTMO; + t = t1 = getsecs(); + for (;;) { + if ((getsecs() - t) > MAXTMO) { + errno = ETIMEDOUT; + return -1; + } + + cc = (*sproc)(d, sbuf, ssize); + if (cc != -1 && cc < ssize) + panic("sendrecv: short write! (%zd < %zu)", + cc, ssize); + + if (cc == -1) { + /* Error on transmit; wait before retrying */ + while ((getsecs() - t1) < tleft); + continue; + } + +recvnext: + /* Try to get a packet and process it. */ + cc = (*rproc)(h, rbuf, rsize, tleft, rtype); + /* Return on data, EOF or real error. */ + if (cc != -1 || errno != 0) + return (cc); + if ((getsecs() - t1) < tleft) { + goto recvnext; + } + + /* Timed out or didn't get the packet we're waiting for */ + tleft += MINTMO; + if (tleft > (2 * MINTMO)) { + tleft = (2 * MINTMO); + } + t1 = getsecs(); + } +} + +static int +tftp_set_blksize(struct tftp_handle *h, const char *str) +{ + char *endptr; + int new_blksize; + int ret = 0; + + if (h == NULL || str == NULL) + return (ret); + + new_blksize = + (unsigned int)strtol(str, &endptr, 0); + + /* + * Only accept blksize value if it is numeric. + * RFC2348 specifies that acceptable valuesare 8-65464 + * 8-65464 . Let's choose a limit less than MAXRSPACE + */ + if (*endptr == '\0' && new_blksize >= 8 + && new_blksize <= TFTP_MAX_BLKSIZE) { + h->tftp_blksize = new_blksize; + ret = 1; + } + + return (ret); +} + +/* + * In RFC2347, the TFTP Option Acknowledgement package (OACK) + * is used to acknowledge a client's option negotiation request. + * The format of an OACK packet is: + * +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + * | opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 | + * +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + * + * opc + * The opcode field contains a 6, for Option Acknowledgment. + * + * opt1 + * The first option acknowledgment, copied from the original + * request. + * + * value1 + * The acknowledged value associated with the first option. If + * and how this value may differ from the original request is + * detailed in the specification for the option. + * + * optN, valueN + * The final option/value acknowledgment pair. + */ +static void +tftp_parse_oack(struct tftp_handle *h, char *buf, size_t len) +{ + /* + * We parse the OACK strings into an array + * of name-value pairs. + * + */ + char *tftp_options[128] = { 0 }; + char *val = buf; + int i = 0; + int option_idx = 0; + int blksize_is_set = 0; + int tsize = 0; + + + while ( option_idx < 128 && i < len ) { + if (buf[i] == '\0') { + if (&buf[i] > val) { + tftp_options[option_idx] = val; + val = &buf[i] + 1; + ++option_idx; + } + } + ++i; + } + + /* + * Parse individual TFTP options. + * * "blksize" is specified in RFC2348. + * * "tsize" is specified in RFC2349. + */ + for (i = 0; i < option_idx; i += 2) { + if (strcasecmp(tftp_options[i], "blksize") == 0) { + if (i + 1 < option_idx) { + blksize_is_set = + tftp_set_blksize(h, tftp_options[i + 1]); + } + } else if (strcasecmp(tftp_options[i], "tsize") == 0) { + if (i + 1 < option_idx) { + tsize = strtol(tftp_options[i + 1], (char **)NULL, 10); + } + } + } + + if (!blksize_is_set) { + /* + * If TFTP blksize was not set, try defaulting + * to the legacy TFTP blksize of 512 + */ + h->tftp_blksize = 512; + } + +#ifdef TFTP_DEBUG + printf("tftp_blksize: %u\n", h->tftp_blksize); + printf("tftp_tsize: %lu\n", h->tftp_tsize); +#endif +} Modified: projects/largeSMP/libexec/tftpd/tftpd.8 ============================================================================== --- projects/largeSMP/libexec/tftpd/tftpd.8 Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/libexec/tftpd/tftpd.8 Thu Jun 16 07:16:02 2011 (r223140) @@ -253,8 +253,9 @@ was introduced in support for the TFTP Blocksize Option (RFC2348) and the blksize2 option was introduced in .Fx 7.4 . -.Sh BUGS +.Sh NOTES Files larger than 33488896 octets (65535 blocks) cannot be transferred -without client and server supporting blocksize negotiation (RFC2348). +without client and server supporting the the TFTP blocksize option (RFC2348), +or the non-standard TFTP rollover option. .Pp Many tftp clients will not transfer files over 16744448 octets (32767 blocks). Modified: projects/largeSMP/release/Makefile ============================================================================== --- projects/largeSMP/release/Makefile Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/release/Makefile Thu Jun 16 07:16:02 2011 (r223140) @@ -110,8 +110,8 @@ reldoc: system: packagesystem # Install system -mkdir ${.OBJDIR}/release - cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release - -rm ${.OBJDIR}/release/boot/kernel/*.symbols + cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \ + DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1 # Copy distfiles mkdir ${.OBJDIR}/release/usr/freebsd-dist cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST \ @@ -135,8 +135,9 @@ bootonly: packagesystem WITHOUT_BIND_DNSSEC=1 WITHOUT_BIND_ETC=1 WITHOUT_BIND_MTREE=1 \ WITHOUT_BIND_NAMED=1 WITHOUT_GAMES=1 WITHOUT_GROFF=1 \ WITHOUT_INSTALLLIB=1 WITHOUT_LIB32=1 WITHOUT_MAIL=1 \ - WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 - -rm ${.OBJDIR}/bootonly/boot/kernel/*.symbols + WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_PROFILE=1 \ + WITHOUT_INSTALLIB=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 \ + WITHOUT_KERNEL_SYMBOLS=1 # Copy manifest only (no distfiles) to get checksums mkdir ${.OBJDIR}/bootonly/usr/freebsd-dist cp ${.OBJDIR}/MANIFEST ${.OBJDIR}/bootonly/usr/freebsd-dist Modified: projects/largeSMP/sys/boot/forth/loader.rc ============================================================================== --- projects/largeSMP/sys/boot/forth/loader.rc Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/sys/boot/forth/loader.rc Thu Jun 16 07:16:02 2011 (r223140) @@ -10,8 +10,5 @@ start \ Tests for password -- executes autoboot first if a password was defined check-password -\ Load in the boot menu -include /boot/beastie.4th +\ Unless set otherwise, autoboot is automatic at this point -\ Start the boot menu -beastie-start Modified: projects/largeSMP/sys/conf/Makefile.arm ============================================================================== --- projects/largeSMP/sys/conf/Makefile.arm Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/sys/conf/Makefile.arm Thu Jun 16 07:16:02 2011 (r223140) @@ -108,7 +108,8 @@ ${KERNEL_KO}.tramp: ${KERNEL_KO} $S/$M/$ gzip -9 ${KERNEL_KO}.tmp eval $$(stat -s ${KERNEL_KO}.tmp.gz) && \ echo "#define KERNCOMPSIZE $$st_size" >>opt_kernname.h - ${CC} -O2 -DKZIP -I. -I$S -c $S/kern/inflate.c -o inflate-tramp.o + ${CC} -O2 -ffreestanding -DKZIP -I. -I$S -c $S/kern/inflate.c -o \ + inflate-tramp.o ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker ldscript.$M.tramp \ -DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \ $S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.gz.tramp Modified: projects/largeSMP/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- projects/largeSMP/sys/dev/sound/pci/hda/hdac.c Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/sys/dev/sound/pci/hda/hdac.c Thu Jun 16 07:16:02 2011 (r223140) @@ -4146,7 +4146,10 @@ hdac_attach(device_t dev) uint16_t vendor; uint8_t v; - device_printf(dev, "HDA Driver Revision: %s\n", HDA_DRV_TEST_REV); + HDA_BOOTVERBOSE( + device_printf(dev, "HDA Driver Revision: %s\n", + HDA_DRV_TEST_REV); + ); model = (uint32_t)pci_get_device(dev) << 16; model |= (uint32_t)pci_get_vendor(dev) & 0x0000ffff; Modified: projects/largeSMP/sys/netinet/sctp.h ============================================================================== --- projects/largeSMP/sys/netinet/sctp.h Thu Jun 16 07:14:55 2011 (r223139) +++ projects/largeSMP/sys/netinet/sctp.h Thu Jun 16 07:16:02 2011 (r223140) @@ -91,7 +91,7 @@ struct sctp_paramhdr { #define SCTP_PEER_ADDR_PARAMS 0x0000000a #define SCTP_DEFAULT_SEND_PARAM 0x0000000b /* ancillary data/notification interest options */ -#define SCTP_EVENTS 0x0000000c +#define SCTP_EVENTS 0x0000000c /* deprecated */ /* Without this applied we will give V4 and V6 addresses on a V6 socket */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 07:25:53 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 90B2F1065670; Thu, 16 Jun 2011 07:25:53 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 819FC8FC14; Thu, 16 Jun 2011 07:25:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G7PrXH017525; Thu, 16 Jun 2011 07:25:53 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G7PrGL017521; Thu, 16 Jun 2011 07:25:53 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106160725.p5G7PrGL017521@svn.freebsd.org> From: Attilio Rao Date: Thu, 16 Jun 2011 07:25:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223141 - projects/largeSMP/sys/sparc64/sparc64 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 07:25:53 -0000 Author: attilio Date: Thu Jun 16 07:25:53 2011 New Revision: 223141 URL: http://svn.freebsd.org/changeset/base/223141 Log: Remove entirely pc_other_cpus usage and pc_cpumask usage from sparc64. Tested and reviewed by: marius Modified: projects/largeSMP/sys/sparc64/sparc64/mp_machdep.c projects/largeSMP/sys/sparc64/sparc64/pmap.c projects/largeSMP/sys/sparc64/sparc64/tlb.c Modified: projects/largeSMP/sys/sparc64/sparc64/mp_machdep.c ============================================================================== --- projects/largeSMP/sys/sparc64/sparc64/mp_machdep.c Thu Jun 16 07:16:02 2011 (r223140) +++ projects/largeSMP/sys/sparc64/sparc64/mp_machdep.c Thu Jun 16 07:25:53 2011 (r223141) @@ -283,7 +283,6 @@ sun4u_startcpu(phandle_t cpu, void *func void cpu_mp_start(void) { - cpuset_t ocpus; mtx_init(&ipi_mtx, "ipi", NULL, MTX_SPIN); @@ -300,9 +299,6 @@ cpu_mp_start(void) KASSERT(!isjbus || mp_ncpus <= IDR_JALAPENO_MAX_BN_PAIRS, ("%s: can only IPI a maximum of %d JBus-CPUs", __func__, IDR_JALAPENO_MAX_BN_PAIRS)); - ocpus = all_cpus; - CPU_CLR(curcpu, &ocpus); - PCPU_SET(other_cpus, ocpus); smp_active = 1; } @@ -424,7 +420,6 @@ cpu_mp_unleash(void *v) void cpu_mp_bootstrap(struct pcpu *pc) { - cpuset_t ocpus; volatile struct cpu_start_args *csa; csa = &cpu_start_args; @@ -466,9 +461,6 @@ cpu_mp_bootstrap(struct pcpu *pc) smp_cpus++; KASSERT(curthread != NULL, ("%s: curthread", __func__)); - ocpus = all_cpus; - CPU_CLR(curcpu, &ocpus); - PCPU_SET(other_cpus, ocpus); printf("SMP: AP CPU #%d Launched!\n", curcpu); csa->csa_count--; @@ -491,13 +483,14 @@ cpu_mp_shutdown(void) int i; critical_enter(); - shutdown_cpus = PCPU_GET(other_cpus); + shutdown_cpus = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &shutdown_cpus); cpus = shutdown_cpus; /* XXX: Stop all the CPUs which aren't already. */ if (CPU_CMP(&stopped_cpus, &cpus)) { - /* pc_other_cpus is just a flat "on" mask without curcpu. */ + /* cpus is just a flat "on" mask without curcpu. */ CPU_NAND(&cpus, &stopped_cpus); stop_cpus(cpus); } @@ -520,23 +513,23 @@ cpu_ipi_ast(struct trapframe *tf) static void cpu_ipi_stop(struct trapframe *tf) { - cpuset_t tcmask; + u_int cpuid; CTR2(KTR_SMP, "%s: stopped %d", __func__, curcpu); sched_pin(); savectx(&stoppcbs[curcpu]); - tcmask = PCPU_GET(cpumask); - CPU_OR_ATOMIC(&stopped_cpus, &tcmask); - while (!CPU_OVERLAP(&started_cpus, &tcmask)) { - if (CPU_OVERLAP(&shutdown_cpus, &tcmask)) { - CPU_NAND_ATOMIC(&shutdown_cpus, &tcmask); + cpuid = PCPU_GET(cpuid); + CPU_SET_ATOMIC(cpuid, &stopped_cpus); + while (!CPU_ISSET(cpuid, &started_cpus)) { + if (CPU_ISSET(cpuid, &shutdown_cpus)) { + CPU_CLR_ATOMIC(cpuid, &shutdown_cpus); (void)intr_disable(); for (;;) ; } } - CPU_NAND_ATOMIC(&started_cpus, &tcmask); - CPU_NAND_ATOMIC(&stopped_cpus, &tcmask); + CPU_CLR_ATOMIC(cpuid, &started_cpus); + CPU_CLR_ATOMIC(cpuid, &stopped_cpus); sched_unpin(); CTR2(KTR_SMP, "%s: restarted %d", __func__, curcpu); } Modified: projects/largeSMP/sys/sparc64/sparc64/pmap.c ============================================================================== --- projects/largeSMP/sys/sparc64/sparc64/pmap.c Thu Jun 16 07:16:02 2011 (r223140) +++ projects/largeSMP/sys/sparc64/sparc64/pmap.c Thu Jun 16 07:25:53 2011 (r223141) @@ -2230,7 +2230,7 @@ pmap_activate(struct thread *td) PCPU_SET(tlb_ctx, context + 1); pm->pm_context[curcpu] = context; - CPU_OR(&pm->pm_active, PCPU_PTR(cpumask)); + CPU_SET(PCPU_GET(cpuid), &pm->pm_active); PCPU_SET(pmap, pm); stxa(AA_DMMU_TSB, ASI_DMMU, pm->pm_tsb); Modified: projects/largeSMP/sys/sparc64/sparc64/tlb.c ============================================================================== --- projects/largeSMP/sys/sparc64/sparc64/tlb.c Thu Jun 16 07:16:02 2011 (r223140) +++ projects/largeSMP/sys/sparc64/sparc64/tlb.c Thu Jun 16 07:25:53 2011 (r223141) @@ -80,7 +80,7 @@ tlb_context_demap(struct pmap *pm) PMAP_STATS_INC(tlb_ncontext_demap); cookie = ipi_tlb_context_demap(pm); s = intr_disable(); - if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) { + if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) { KASSERT(pm->pm_context[curcpu] != -1, ("tlb_context_demap: inactive pmap?")); stxa(TLB_DEMAP_PRIMARY | TLB_DEMAP_CONTEXT, ASI_DMMU_DEMAP, 0); @@ -101,7 +101,7 @@ tlb_page_demap(struct pmap *pm, vm_offse PMAP_STATS_INC(tlb_npage_demap); cookie = ipi_tlb_page_demap(pm, va); s = intr_disable(); - if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) { + if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) { KASSERT(pm->pm_context[curcpu] != -1, ("tlb_page_demap: inactive pmap?")); if (pm == kernel_pmap) @@ -128,7 +128,7 @@ tlb_range_demap(struct pmap *pm, vm_offs PMAP_STATS_INC(tlb_nrange_demap); cookie = ipi_tlb_range_demap(pm, start, end); s = intr_disable(); - if (CPU_OVERLAP(&pm->pm_active, PCPU_PTR(cpumask))) { + if (CPU_ISSET(PCPU_GET(cpuid), &pm->pm_active)) { KASSERT(pm->pm_context[curcpu] != -1, ("tlb_range_demap: inactive pmap?")); if (pm == kernel_pmap) From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 07:27:14 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2DBF9106566B; Thu, 16 Jun 2011 07:27:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1E5A58FC0A; Thu, 16 Jun 2011 07:27:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G7REsK017608; Thu, 16 Jun 2011 07:27:14 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G7RDNc017603; Thu, 16 Jun 2011 07:27:13 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106160727.p5G7RDNc017603@svn.freebsd.org> From: Attilio Rao Date: Thu, 16 Jun 2011 07:27:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223142 - in projects/largeSMP/sys/powerpc: aim booke powerpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 07:27:14 -0000 Author: attilio Date: Thu Jun 16 07:27:13 2011 New Revision: 223142 URL: http://svn.freebsd.org/changeset/base/223142 Log: Remove pc_other_cpus and pc_cpumask usage from powerpc support. Tested and reviewed by: andreast Modified: projects/largeSMP/sys/powerpc/aim/mmu_oea.c projects/largeSMP/sys/powerpc/aim/mmu_oea64.c projects/largeSMP/sys/powerpc/booke/pmap.c projects/largeSMP/sys/powerpc/powerpc/mp_machdep.c Modified: projects/largeSMP/sys/powerpc/aim/mmu_oea.c ============================================================================== --- projects/largeSMP/sys/powerpc/aim/mmu_oea.c Thu Jun 16 07:25:53 2011 (r223141) +++ projects/largeSMP/sys/powerpc/aim/mmu_oea.c Thu Jun 16 07:27:13 2011 (r223142) @@ -945,9 +945,7 @@ moea_activate(mmu_t mmu, struct thread * pm = &td->td_proc->p_vmspace->vm_pmap; pmr = pm->pmap_phys; - sched_pin(); - CPU_OR(&pm->pm_active, PCPU_PTR(cpumask)); - sched_unpin(); + CPU_SET(PCPU_GET(cpuid), &pm->pm_active); PCPU_SET(curpmap, pmr); } @@ -957,9 +955,7 @@ moea_deactivate(mmu_t mmu, struct thread pmap_t pm; pm = &td->td_proc->p_vmspace->vm_pmap; - sched_pin(); - CPU_NAND(&pm->pm_active, PCPU_PTR(cpumask)); - sched_unpin(); + CPU_CLR(PCPU_GET(cpuid), &pm->pm_active); PCPU_SET(curpmap, NULL); } Modified: projects/largeSMP/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- projects/largeSMP/sys/powerpc/aim/mmu_oea64.c Thu Jun 16 07:25:53 2011 (r223141) +++ projects/largeSMP/sys/powerpc/aim/mmu_oea64.c Thu Jun 16 07:27:13 2011 (r223142) @@ -998,9 +998,7 @@ moea64_activate(mmu_t mmu, struct thread pmap_t pm; pm = &td->td_proc->p_vmspace->vm_pmap; - sched_pin(); - CPU_OR(&pm->pm_active, PCPU_PTR(cpumask)); - sched_unpin(); + CPU_SET(PCPU_GET(cpuid), &pm->pm_active); #ifdef __powerpc64__ PCPU_SET(userslb, pm->pm_slb); @@ -1015,9 +1013,7 @@ moea64_deactivate(mmu_t mmu, struct thre pmap_t pm; pm = &td->td_proc->p_vmspace->vm_pmap; - sched_pin(); - CPU_NAND(&pm->pm_active, PCPU_PTR(cpumask)); - sched_unpin(); + CPU_CLR(PCPU_GET(cpuid), &pm->pm_active); #ifdef __powerpc64__ PCPU_SET(userslb, NULL); #else Modified: projects/largeSMP/sys/powerpc/booke/pmap.c ============================================================================== --- projects/largeSMP/sys/powerpc/booke/pmap.c Thu Jun 16 07:25:53 2011 (r223141) +++ projects/largeSMP/sys/powerpc/booke/pmap.c Thu Jun 16 07:27:13 2011 (r223142) @@ -1826,6 +1826,7 @@ static void mmu_booke_activate(mmu_t mmu, struct thread *td) { pmap_t pmap; + u_int cpuid; pmap = &td->td_proc->p_vmspace->vm_pmap; @@ -1836,14 +1837,15 @@ mmu_booke_activate(mmu_t mmu, struct thr mtx_lock_spin(&sched_lock); - CPU_OR_ATOMIC(&pmap->pm_active, PCPU_PTR(cpumask)); + cpuid = PCPU_GET(cpuid); + CPU_SET_ATOMIC(cpuid, &pmap->pm_active); PCPU_SET(curpmap, pmap); - if (pmap->pm_tid[PCPU_GET(cpuid)] == TID_NONE) + if (pmap->pm_tid[cpuid] == TID_NONE) tid_alloc(pmap); /* Load PID0 register with pmap tid value. */ - mtspr(SPR_PID0, pmap->pm_tid[PCPU_GET(cpuid)]); + mtspr(SPR_PID0, pmap->pm_tid[cpuid]); __asm __volatile("isync"); mtx_unlock_spin(&sched_lock); @@ -1865,9 +1867,7 @@ mmu_booke_deactivate(mmu_t mmu, struct t CTR5(KTR_PMAP, "%s: td=%p, proc = '%s', id = %d, pmap = 0x%08x", __func__, td, td->td_proc->p_comm, td->td_proc->p_pid, pmap); - sched_pin(); - CPU_NAND_ATOMIC(&pmap->pm_active, PCPU_PTR(cpumask)); - sched_unpin(); + CPU_CLR_ATOMIC(PCPU_GET(cpuid), &pmap->pm_active); PCPU_SET(curpmap, NULL); } Modified: projects/largeSMP/sys/powerpc/powerpc/mp_machdep.c ============================================================================== --- projects/largeSMP/sys/powerpc/powerpc/mp_machdep.c Thu Jun 16 07:25:53 2011 (r223141) +++ projects/largeSMP/sys/powerpc/powerpc/mp_machdep.c Thu Jun 16 07:27:13 2011 (r223142) @@ -175,9 +175,8 @@ cpu_mp_start(void) pc->pc_cpuid = bsp.cr_cpuid; pc->pc_bsp = 1; } - CPU_SETOF(pc->pc_cpuid, &pc->pc_cpumask); pc->pc_hwref = cpu.cr_hwref; - CPU_OR(&all_cpus, &pc->pc_cpumask); + CPU_SET(pc->pc_cpuid, &all_cpus); next: error = platform_smp_next_cpu(&cpu); } @@ -215,8 +214,6 @@ cpu_mp_unleash(void *dummy) smp_cpus = 0; STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { cpus++; - pc->pc_other_cpus = all_cpus; - CPU_NAND(&pc->pc_other_cpus, &pc->pc_cpumask); if (!pc->pc_bsp) { if (bootverbose) printf("Waking up CPU %d (dev=%x)\n", @@ -278,7 +275,7 @@ SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_ int powerpc_ipi_handler(void *arg) { - cpuset_t self; + u_int cpuid; uint32_t ipimask; int msg; @@ -310,14 +307,14 @@ powerpc_ipi_handler(void *arg) */ CTR1(KTR_SMP, "%s: IPI_STOP or IPI_STOP_HARD (stop)", __func__); - savectx(&stoppcbs[PCPU_GET(cpuid)]); - self = PCPU_GET(cpumask); + cpuid = PCPU_GET(cpuid); + savectx(&stoppcbs[cpuid]); savectx(PCPU_GET(curpcb)); - CPU_OR_ATOMIC(&stopped_cpus, &self); - while (!CPU_OVERLAP(&started_cpus, &self)) + CPU_SET_ATOMIC(cpuid, &stopped_cpus); + while (!CPU_ISSET(cpuid, &started_cpus)) cpu_spinwait(); - CPU_NAND_ATOMIC(&started_cpus, &self); - CPU_NAND_ATOMIC(&stopped_cpus, &self); + CPU_CLR_ATOMIC(cpuid, &stopped_cpus); + CPU_CLR_ATOMIC(cpuid, &started_cpus); CTR1(KTR_SMP, "%s: IPI_STOP (restart)", __func__); break; case IPI_HARDCLOCK: @@ -350,7 +347,7 @@ ipi_selected(cpuset_t cpus, int ipi) struct pcpu *pc; STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { - if (CPU_OVERLAP(&cpus, &pc->pc_cpumask)) + if (CPU_ISSET(pc->pc_cpuid, &cpus)) ipi_send(pc, ipi); } } From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 08:44:26 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C2E7B106566C; Thu, 16 Jun 2011 08:44:26 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9B2D58FC08; Thu, 16 Jun 2011 08:44:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G8iQON020319; Thu, 16 Jun 2011 08:44:26 GMT (envelope-from sobomax@svn.freebsd.org) Received: (from sobomax@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G8iQ4W020318; Thu, 16 Jun 2011 08:44:26 GMT (envelope-from sobomax@svn.freebsd.org) Message-Id: <201106160844.p5G8iQ4W020318@svn.freebsd.org> From: Maxim Sobolev Date: Thu, 16 Jun 2011 08:44:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223144 - projects/hastd_wan X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 08:44:26 -0000 Author: sobomax Date: Thu Jun 16 08:44:26 2011 New Revision: 223144 URL: http://svn.freebsd.org/changeset/base/223144 Log: "HAST currently doesn't support 'async' mode, so working over WAN is not common use case for now, which makes your changes low priority. High priority for HAST is working over LAN." -pjd So this little fork of the hastd would aim at optimizing it for good performance over WAN network. Hopefully it will be useful for somebody else and and end up at least partially in the main tree. Added: - copied from r223143, head/sbin/hastd/ Directory Properties: projects/hastd_wan/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 10:42:00 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A2E6106566C; Thu, 16 Jun 2011 10:42:00 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3FC3A8FC19; Thu, 16 Jun 2011 10:42:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GAg0gI025933; Thu, 16 Jun 2011 10:42:00 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GAg0ss025927; Thu, 16 Jun 2011 10:42:00 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201106161042.p5GAg0ss025927@svn.freebsd.org> From: Attilio Rao Date: Thu, 16 Jun 2011 10:42:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223146 - in projects/largeSMP: contrib/top lib/libstand sbin/hastd share/mk sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 10:42:00 -0000 Author: attilio Date: Thu Jun 16 10:41:59 2011 New Revision: 223146 URL: http://svn.freebsd.org/changeset/base/223146 Log: MFC Modified: projects/largeSMP/lib/libstand/zalloc.c projects/largeSMP/sbin/hastd/proto_common.c projects/largeSMP/sys/net80211/ieee80211_acl.c projects/largeSMP/sys/net80211/ieee80211_ioctl.c projects/largeSMP/sys/net80211/ieee80211_ioctl.h Directory Properties: projects/largeSMP/ (props changed) projects/largeSMP/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/contrib/bind9/ (props changed) projects/largeSMP/contrib/binutils/ (props changed) projects/largeSMP/contrib/bzip2/ (props changed) projects/largeSMP/contrib/compiler-rt/ (props changed) projects/largeSMP/contrib/dialog/ (props changed) projects/largeSMP/contrib/ee/ (props changed) projects/largeSMP/contrib/expat/ (props changed) projects/largeSMP/contrib/file/ (props changed) projects/largeSMP/contrib/gcc/ (props changed) projects/largeSMP/contrib/gdb/ (props changed) projects/largeSMP/contrib/gdtoa/ (props changed) projects/largeSMP/contrib/gnu-sort/ (props changed) projects/largeSMP/contrib/groff/ (props changed) projects/largeSMP/contrib/less/ (props changed) projects/largeSMP/contrib/libpcap/ (props changed) projects/largeSMP/contrib/libstdc++/ (props changed) projects/largeSMP/contrib/llvm/ (props changed) projects/largeSMP/contrib/llvm/tools/clang/ (props changed) projects/largeSMP/contrib/ncurses/ (props changed) projects/largeSMP/contrib/netcat/ (props changed) projects/largeSMP/contrib/ntp/ (props changed) projects/largeSMP/contrib/one-true-awk/ (props changed) projects/largeSMP/contrib/openbsm/ (props changed) projects/largeSMP/contrib/openpam/ (props changed) projects/largeSMP/contrib/pf/ (props changed) projects/largeSMP/contrib/sendmail/ (props changed) projects/largeSMP/contrib/tcpdump/ (props changed) projects/largeSMP/contrib/tcsh/ (props changed) projects/largeSMP/contrib/top/ (props changed) projects/largeSMP/contrib/top/install-sh (props changed) projects/largeSMP/contrib/tzcode/stdtime/ (props changed) projects/largeSMP/contrib/tzcode/zic/ (props changed) projects/largeSMP/contrib/tzdata/ (props changed) projects/largeSMP/contrib/wpa/ (props changed) projects/largeSMP/contrib/xz/ (props changed) projects/largeSMP/crypto/openssh/ (props changed) projects/largeSMP/crypto/openssl/ (props changed) projects/largeSMP/gnu/lib/ (props changed) projects/largeSMP/gnu/usr.bin/binutils/ (props changed) projects/largeSMP/gnu/usr.bin/cc/cc_tools/ (props changed) projects/largeSMP/gnu/usr.bin/gdb/ (props changed) projects/largeSMP/lib/libc/ (props changed) projects/largeSMP/lib/libc/stdtime/ (props changed) projects/largeSMP/lib/libutil/ (props changed) projects/largeSMP/lib/libz/ (props changed) projects/largeSMP/sbin/ (props changed) projects/largeSMP/sbin/ipfw/ (props changed) projects/largeSMP/share/mk/bsd.arch.inc.mk (props changed) projects/largeSMP/share/zoneinfo/ (props changed) projects/largeSMP/sys/ (props changed) projects/largeSMP/sys/amd64/include/xen/ (props changed) projects/largeSMP/sys/boot/ (props changed) projects/largeSMP/sys/boot/i386/efi/ (props changed) projects/largeSMP/sys/boot/ia64/efi/ (props changed) projects/largeSMP/sys/boot/ia64/ski/ (props changed) projects/largeSMP/sys/boot/powerpc/boot1.chrp/ (props changed) projects/largeSMP/sys/boot/powerpc/ofw/ (props changed) projects/largeSMP/sys/cddl/contrib/opensolaris/ (props changed) projects/largeSMP/sys/conf/ (props changed) projects/largeSMP/sys/contrib/dev/acpica/ (props changed) projects/largeSMP/sys/contrib/octeon-sdk/ (props changed) projects/largeSMP/sys/contrib/pf/ (props changed) projects/largeSMP/sys/contrib/x86emu/ (props changed) projects/largeSMP/usr.bin/calendar/ (props changed) projects/largeSMP/usr.bin/csup/ (props changed) projects/largeSMP/usr.bin/procstat/ (props changed) projects/largeSMP/usr.sbin/ndiscvt/ (props changed) projects/largeSMP/usr.sbin/zic/ (props changed) Modified: projects/largeSMP/lib/libstand/zalloc.c ============================================================================== --- projects/largeSMP/lib/libstand/zalloc.c Thu Jun 16 09:37:20 2011 (r223145) +++ projects/largeSMP/lib/libstand/zalloc.c Thu Jun 16 10:41:59 2011 (r223146) @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by if ((char *)ptr < (char *)mp->mp_Base || (char *)ptr + bytes > (char *)mp->mp_End || ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) - panic("zfree(%p,%d): wild pointer", ptr, bytes); + panic("zfree(%p,%ju): wild pointer", ptr, bytes); /* * free the segment @@ -178,7 +178,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by * range check */ if ((char *)ptr + bytes > (char *)mn) - panic("zfree(%p,%d): corrupt memlist1",ptr, bytes); + panic("zfree(%p,%ju): corrupt memlist1",ptr, bytes); /* * merge against next area or create independant area @@ -209,7 +209,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by /* NOT REACHED */ } if ((char *)ptr < (char *)mn + mn->mr_Bytes) - panic("zfree(%p,%d): corrupt memlist2", ptr, bytes); + panic("zfree(%p,%ju): corrupt memlist2", ptr, bytes); } /* * We are beyond the last MemNode, append new MemNode. Merge against Modified: projects/largeSMP/sbin/hastd/proto_common.c ============================================================================== --- projects/largeSMP/sbin/hastd/proto_common.c Thu Jun 16 09:37:20 2011 (r223145) +++ projects/largeSMP/sbin/hastd/proto_common.c Thu Jun 16 10:41:59 2011 (r223146) @@ -194,8 +194,6 @@ int proto_common_recv(int sock, unsigned char *data, size_t size, int *fdp) { ssize_t done; - size_t total_done, recvsize; - unsigned char *dp; PJDLOG_ASSERT(sock >= 0); @@ -212,19 +210,9 @@ proto_common_recv(int sock, unsigned cha PJDLOG_ASSERT(data != NULL); PJDLOG_ASSERT(size > 0); - total_done = 0; - dp = data; do { - recvsize = size - total_done; - recvsize = recvsize < MAX_SEND_SIZE ? recvsize : MAX_SEND_SIZE; - done = recv(sock, dp, recvsize, MSG_WAITALL); - if (done == -1 && errno == EINTR) - continue; - if (done <= 0) - break; - total_done += done; - dp += done; - } while (total_done < size); + done = recv(sock, data, size, MSG_WAITALL); + } while (done == -1 && errno == EINTR); if (done == 0) { return (ENOTCONN); } else if (done < 0) { Modified: projects/largeSMP/sys/net80211/ieee80211_acl.c ============================================================================== --- projects/largeSMP/sys/net80211/ieee80211_acl.c Thu Jun 16 09:37:20 2011 (r223145) +++ projects/largeSMP/sys/net80211/ieee80211_acl.c Thu Jun 16 10:41:59 2011 (r223146) @@ -77,7 +77,7 @@ struct acl { struct aclstate { acl_lock_t as_lock; int as_policy; - int as_nacls; + uint32_t as_nacls; TAILQ_HEAD(, acl) as_list; /* list of all ACL's */ LIST_HEAD(, acl) as_hash[ACL_HASHSIZE]; struct ieee80211vap *as_vap; @@ -289,7 +289,8 @@ acl_getioctl(struct ieee80211vap *vap, s struct aclstate *as = vap->iv_as; struct acl *acl; struct ieee80211req_maclist *ap; - int error, space, i; + int error; + uint32_t i, space; switch (ireq->i_val) { case IEEE80211_MACCMD_POLICY: Modified: projects/largeSMP/sys/net80211/ieee80211_ioctl.c ============================================================================== --- projects/largeSMP/sys/net80211/ieee80211_ioctl.c Thu Jun 16 09:37:20 2011 (r223145) +++ projects/largeSMP/sys/net80211/ieee80211_ioctl.c Thu Jun 16 10:41:59 2011 (r223146) @@ -143,7 +143,7 @@ static __noinline int ieee80211_ioctl_getchaninfo(struct ieee80211vap *vap, struct ieee80211req *ireq) { struct ieee80211com *ic = vap->iv_ic; - int space; + uint32_t space; space = __offsetof(struct ieee80211req_chaninfo, ic_chans[ic->ic_nchans]); @@ -207,7 +207,7 @@ ieee80211_ioctl_getstastats(struct ieee8 { struct ieee80211_node *ni; uint8_t macaddr[IEEE80211_ADDR_LEN]; - const int off = __offsetof(struct ieee80211req_sta_stats, is_stats); + const size_t off = __offsetof(struct ieee80211req_sta_stats, is_stats); int error; if (ireq->i_len < off) @@ -323,7 +323,7 @@ ieee80211_ioctl_getscanresults(struct ie if (req.space > ireq->i_len) req.space = ireq->i_len; if (req.space > 0) { - size_t space; + uint32_t space; void *p; space = req.space; @@ -458,7 +458,7 @@ get_sta_info(void *arg, struct ieee80211 static __noinline int getstainfo_common(struct ieee80211vap *vap, struct ieee80211req *ireq, - struct ieee80211_node *ni, int off) + struct ieee80211_node *ni, size_t off) { struct ieee80211com *ic = vap->iv_ic; struct stainforeq req; @@ -503,7 +503,7 @@ static __noinline int ieee80211_ioctl_getstainfo(struct ieee80211vap *vap, struct ieee80211req *ireq) { uint8_t macaddr[IEEE80211_ADDR_LEN]; - const int off = __offsetof(struct ieee80211req_sta_req, info); + const size_t off = __offsetof(struct ieee80211req_sta_req, info); struct ieee80211_node *ni; int error; Modified: projects/largeSMP/sys/net80211/ieee80211_ioctl.h ============================================================================== --- projects/largeSMP/sys/net80211/ieee80211_ioctl.h Thu Jun 16 09:37:20 2011 (r223145) +++ projects/largeSMP/sys/net80211/ieee80211_ioctl.h Thu Jun 16 10:41:59 2011 (r223146) @@ -578,7 +578,7 @@ struct ieee80211req { char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */ uint16_t i_type; /* req type */ int16_t i_val; /* Index or simple value */ - int16_t i_len; /* Index or simple value */ + uint16_t i_len; /* Index or simple value */ void *i_data; /* Extra data */ }; #define SIOCS80211 _IOW('i', 234, struct ieee80211req) From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 20:58:24 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 715961065670; Thu, 16 Jun 2011 20:58:24 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5D6608FC1D; Thu, 16 Jun 2011 20:58:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GKwOKC045583; Thu, 16 Jun 2011 20:58:24 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GKwODG045574; Thu, 16 Jun 2011 20:58:24 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201106162058.p5GKwODG045574@svn.freebsd.org> From: Andreas Tobler Date: Thu, 16 Jun 2011 20:58:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223161 - in projects/pseries: . amd64/acpica amd64/amd64 amd64/conf amd64/include arm/arm arm/include boot/forth boot/i386/zfsboot boot/ia64/common boot/ia64/efi cam cam/ata cam/scsi c... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 20:58:24 -0000 Author: andreast Date: Thu Jun 16 20:58:23 2011 New Revision: 223161 URL: http://svn.freebsd.org/changeset/base/223161 Log: MFC. Added: projects/pseries/boot/ia64/common/icache.c - copied unchanged from r223156, head/sys/boot/ia64/common/icache.c projects/pseries/dev/usb/serial/umcs.c - copied unchanged from r223156, head/sys/dev/usb/serial/umcs.c projects/pseries/dev/usb/serial/umcs.h - copied unchanged from r223156, head/sys/dev/usb/serial/umcs.h projects/pseries/modules/usb/umcs/ - copied from r223156, head/sys/modules/usb/umcs/ projects/pseries/netinet/in_pcbgroup.c - copied unchanged from r223156, head/sys/netinet/in_pcbgroup.c projects/pseries/netinet6/in6_pcbgroup.c - copied unchanged from r223156, head/sys/netinet6/in6_pcbgroup.c projects/pseries/sys/_cpuset.h - copied unchanged from r223156, head/sys/sys/_cpuset.h Replaced: projects/pseries/dev/iicbus/ad7417.c - copied unchanged from r223156, head/sys/dev/iicbus/ad7417.c projects/pseries/nfs/nfs_kdtrace.h - copied unchanged from r223156, head/sys/nfs/nfs_kdtrace.h projects/pseries/sys/_stdint.h - copied unchanged from r223156, head/sys/sys/_stdint.h Deleted: projects/pseries/dev/usb/serial/umcs7840.c projects/pseries/dev/usb/serial/umcs7840.h projects/pseries/modules/usb/umcs7840/ Modified: projects/pseries/Makefile projects/pseries/amd64/acpica/acpi_wakeup.c projects/pseries/amd64/amd64/intr_machdep.c projects/pseries/amd64/amd64/legacy.c projects/pseries/amd64/amd64/machdep.c projects/pseries/amd64/amd64/mp_machdep.c projects/pseries/amd64/amd64/pmap.c projects/pseries/amd64/amd64/vm_machdep.c projects/pseries/amd64/conf/GENERIC projects/pseries/amd64/include/_types.h projects/pseries/amd64/include/pmap.h projects/pseries/amd64/include/smp.h projects/pseries/arm/arm/pmap.c projects/pseries/arm/include/_types.h projects/pseries/arm/include/pmap.h projects/pseries/boot/forth/loader.rc projects/pseries/boot/i386/zfsboot/Makefile projects/pseries/boot/ia64/common/Makefile projects/pseries/boot/ia64/common/exec.c projects/pseries/boot/ia64/common/libia64.h projects/pseries/boot/ia64/efi/efimd.c projects/pseries/boot/ia64/efi/main.c projects/pseries/boot/ia64/efi/version projects/pseries/cam/ata/ata_all.c projects/pseries/cam/ata/ata_da.c projects/pseries/cam/ata/ata_xpt.c projects/pseries/cam/cam_ccb.h projects/pseries/cam/cam_periph.c projects/pseries/cam/cam_periph.h projects/pseries/cam/cam_xpt.c projects/pseries/cam/cam_xpt.h projects/pseries/cam/cam_xpt_internal.h projects/pseries/cam/scsi/scsi_all.c projects/pseries/cam/scsi/scsi_all.h projects/pseries/cam/scsi/scsi_da.c projects/pseries/cam/scsi/scsi_pass.c projects/pseries/cam/scsi/scsi_xpt.c projects/pseries/cddl/compat/opensolaris/sys/atomic.h projects/pseries/cddl/compat/opensolaris/sys/kstat.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/ddt.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/pseries/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/pseries/cddl/dev/cyclic/i386/cyclic_machdep.c projects/pseries/cddl/dev/dtrace/amd64/dtrace_subr.c projects/pseries/cddl/dev/dtrace/i386/dtrace_subr.c projects/pseries/conf/Makefile.arm projects/pseries/conf/Makefile.powerpc projects/pseries/conf/NOTES projects/pseries/conf/files projects/pseries/conf/options projects/pseries/ddb/db_command.c projects/pseries/dev/aac/aac.c projects/pseries/dev/aac/aacvar.h projects/pseries/dev/acpica/acpi.c projects/pseries/dev/amdsbwd/amdsbwd.c projects/pseries/dev/ata/ata-sata.c projects/pseries/dev/ata/chipsets/ata-intel.c projects/pseries/dev/ath/ath_hal/ah.h projects/pseries/dev/ath/ath_hal/ar5212/ar5212.h projects/pseries/dev/ath/ath_hal/ar5212/ar5212_attach.c projects/pseries/dev/ath/ath_hal/ar5212/ar5212_misc.c projects/pseries/dev/ath/ath_hal/ar5416/ar5416.h projects/pseries/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/pseries/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/pseries/dev/ath/if_ath.c projects/pseries/dev/ath/if_ath_ahb.c projects/pseries/dev/ath/if_athvar.h projects/pseries/dev/atkbdc/atkbd.c projects/pseries/dev/atkbdc/atkbdreg.h projects/pseries/dev/bxe/bxe_debug.h projects/pseries/dev/bxe/bxe_link.c projects/pseries/dev/bxe/if_bxe.c projects/pseries/dev/bxe/if_bxe.h projects/pseries/dev/cardbus/cardbus_cis.c projects/pseries/dev/cxgbe/adapter.h projects/pseries/dev/cxgbe/t4_ioctl.h projects/pseries/dev/cxgbe/t4_main.c projects/pseries/dev/cxgbe/t4_sge.c projects/pseries/dev/hwpmc/hwpmc_mod.c projects/pseries/dev/iwn/if_iwn.c projects/pseries/dev/pccard/pccard.c projects/pseries/dev/pci/pci.c projects/pseries/dev/pci/pci_pci.c projects/pseries/dev/puc/puc.c projects/pseries/dev/puc/puc_bfe.h projects/pseries/dev/puc/puc_pccard.c projects/pseries/dev/puc/puc_pci.c projects/pseries/dev/puc/pucdata.c projects/pseries/dev/safe/safe.c projects/pseries/dev/sound/pci/hda/hdac.c projects/pseries/dev/sound/pcm/sound.c projects/pseries/dev/usb/usb_device.h projects/pseries/dev/usb/usb_freebsd.h projects/pseries/dev/usb/usb_generic.c projects/pseries/dev/usb/usb_hub.c projects/pseries/dev/usb/usb_request.c projects/pseries/dev/usb/usb_request.h projects/pseries/dev/usb/usb_transfer.c projects/pseries/dev/usb/usbdi.h projects/pseries/dev/xen/blkback/blkback.c projects/pseries/dev/xen/blkfront/blkfront.c projects/pseries/dev/xen/control/control.c projects/pseries/dev/xen/netfront/netfront.c projects/pseries/fs/nfs/nfs_var.h projects/pseries/fs/nfsclient/nfs_clport.c projects/pseries/fs/nfsclient/nfs_clrpcops.c projects/pseries/fs/nfsclient/nfs_clstate.c projects/pseries/fs/nfsclient/nfs_clvnops.c projects/pseries/geom/eli/g_eli.c projects/pseries/geom/geom.h projects/pseries/geom/geom_dev.c projects/pseries/geom/geom_disk.c projects/pseries/geom/geom_disk.h projects/pseries/geom/geom_event.c projects/pseries/geom/geom_subr.c projects/pseries/i386/conf/GENERIC projects/pseries/i386/i386/intr_machdep.c projects/pseries/i386/i386/legacy.c projects/pseries/i386/i386/machdep.c projects/pseries/i386/i386/mp_machdep.c projects/pseries/i386/i386/pmap.c projects/pseries/i386/i386/vm_machdep.c projects/pseries/i386/include/_types.h projects/pseries/i386/include/pmap.h projects/pseries/i386/include/sf_buf.h projects/pseries/i386/include/smp.h projects/pseries/i386/xen/mp_machdep.c projects/pseries/i386/xen/pmap.c projects/pseries/ia64/acpica/acpi_machdep.c projects/pseries/ia64/ia64/machdep.c projects/pseries/ia64/ia64/mp_machdep.c projects/pseries/ia64/ia64/pal.S projects/pseries/ia64/include/_types.h projects/pseries/ia64/include/smp.h projects/pseries/kern/kern_conf.c projects/pseries/kern/kern_cpuset.c projects/pseries/kern/kern_exit.c projects/pseries/kern/kern_ktr.c projects/pseries/kern/kern_pmc.c projects/pseries/kern/kern_rmlock.c projects/pseries/kern/kern_shutdown.c projects/pseries/kern/ksched.c projects/pseries/kern/link_elf.c projects/pseries/kern/sched_4bsd.c projects/pseries/kern/sched_ule.c projects/pseries/kern/subr_devstat.c projects/pseries/kern/subr_kdb.c projects/pseries/kern/subr_pcpu.c projects/pseries/kern/subr_prf.c projects/pseries/kern/subr_rman.c projects/pseries/kern/subr_smp.c projects/pseries/kern/sys_process.c projects/pseries/kern/uipc_syscalls.c projects/pseries/kern/vfs_bio.c projects/pseries/mips/cavium/octeon_mp.c projects/pseries/mips/include/_types.h projects/pseries/mips/include/hwfunc.h projects/pseries/mips/include/pmap.h projects/pseries/mips/include/smp.h projects/pseries/mips/mips/mp_machdep.c projects/pseries/mips/mips/pmap.c projects/pseries/mips/rmi/xlr_machdep.c projects/pseries/mips/sibyte/sb_scd.c projects/pseries/modules/usb/Makefile projects/pseries/net/bridgestp.c projects/pseries/net/bridgestp.h projects/pseries/net/if.h projects/pseries/net80211/ieee80211_acl.c projects/pseries/net80211/ieee80211_ioctl.c projects/pseries/net80211/ieee80211_ioctl.h projects/pseries/netgraph/ng_nat.c projects/pseries/netinet/icmp6.h projects/pseries/netinet/in_pcb.c projects/pseries/netinet/in_pcb.h projects/pseries/netinet/ip_divert.c projects/pseries/netinet/ip_input.c projects/pseries/netinet/ip_ipsec.c projects/pseries/netinet/ipfw/ip_fw2.c projects/pseries/netinet/ipfw/ip_fw_nat.c projects/pseries/netinet/ipfw/ip_fw_sockopt.c projects/pseries/netinet/libalias/alias.h projects/pseries/netinet/libalias/alias_sctp.h projects/pseries/netinet/raw_ip.c projects/pseries/netinet/sctp.h projects/pseries/netinet/sctp_auth.c projects/pseries/netinet/sctp_indata.c projects/pseries/netinet/sctp_output.c projects/pseries/netinet/sctp_pcb.c projects/pseries/netinet/sctp_structs.h projects/pseries/netinet/sctp_uio.h projects/pseries/netinet/sctp_usrreq.c projects/pseries/netinet/sctp_var.h projects/pseries/netinet/sctputil.c projects/pseries/netinet/tcp_output.c projects/pseries/netinet/tcp_subr.c projects/pseries/netinet/tcp_syncache.c projects/pseries/netinet/udp_usrreq.c projects/pseries/netinet6/in6.c projects/pseries/netinet6/in6.h projects/pseries/netinet6/in6_pcb.c projects/pseries/netinet6/in6_pcb.h projects/pseries/netinet6/in6_proto.c projects/pseries/netinet6/ip6_input.c projects/pseries/netinet6/ip6_ipsec.c projects/pseries/netinet6/ip6_var.h projects/pseries/netinet6/nd6.c projects/pseries/netinet6/nd6.h projects/pseries/netinet6/nd6_nbr.c projects/pseries/netinet6/nd6_rtr.c projects/pseries/netinet6/send.h projects/pseries/ofed/include/linux/list.h projects/pseries/pc98/conf/GENERIC projects/pseries/pc98/pc98/machdep.c projects/pseries/powerpc/aim/mmu_oea.c projects/pseries/powerpc/aim/mmu_oea64.c projects/pseries/powerpc/booke/platform_bare.c projects/pseries/powerpc/booke/pmap.c projects/pseries/powerpc/conf/GENERIC projects/pseries/powerpc/conf/GENERIC64 projects/pseries/powerpc/include/_types.h projects/pseries/powerpc/include/openpicvar.h projects/pseries/powerpc/include/pmap.h projects/pseries/powerpc/include/smp.h projects/pseries/powerpc/mpc85xx/openpic_fdt.c projects/pseries/powerpc/powerpc/intr_machdep.c projects/pseries/powerpc/powerpc/mp_machdep.c projects/pseries/powerpc/powerpc/openpic.c projects/pseries/powerpc/powerpc/pic_if.m projects/pseries/sparc64/conf/GENERIC projects/pseries/sparc64/include/_types.h projects/pseries/sparc64/include/ktr.h projects/pseries/sparc64/include/pmap.h projects/pseries/sparc64/include/smp.h projects/pseries/sparc64/sparc64/exception.S projects/pseries/sparc64/sparc64/genassym.c projects/pseries/sparc64/sparc64/intr_machdep.c projects/pseries/sparc64/sparc64/mp_exception.S projects/pseries/sparc64/sparc64/mp_locore.S projects/pseries/sparc64/sparc64/mp_machdep.c projects/pseries/sparc64/sparc64/pmap.c projects/pseries/sparc64/sparc64/swtch.S projects/pseries/sparc64/sparc64/tlb.c projects/pseries/sys/_rmlock.h projects/pseries/sys/conf.h projects/pseries/sys/cpuset.h projects/pseries/sys/disk.h projects/pseries/sys/ktr.h projects/pseries/sys/mbuf.h projects/pseries/sys/pcpu.h projects/pseries/sys/pmckern.h projects/pseries/sys/proc.h projects/pseries/sys/smp.h projects/pseries/sys/soundcard.h projects/pseries/sys/types.h projects/pseries/sys/vnode.h projects/pseries/ufs/ffs/ffs_alloc.c projects/pseries/ufs/ffs/ffs_balloc.c projects/pseries/ufs/ffs/ffs_extern.h projects/pseries/ufs/ffs/ffs_inode.c projects/pseries/ufs/ffs/ffs_snapshot.c projects/pseries/ufs/ffs/ffs_softdep.c projects/pseries/ufs/ffs/ffs_vfsops.c projects/pseries/ufs/ffs/ffs_vnops.c projects/pseries/ufs/ffs/fs.h projects/pseries/ufs/ffs/softdep.h projects/pseries/ufs/ufs/inode.h projects/pseries/ufs/ufs/quota.h projects/pseries/ufs/ufs/ufs_lookup.c projects/pseries/ufs/ufs/ufs_quota.c projects/pseries/ufs/ufs/ufs_vnops.c projects/pseries/ufs/ufs/ufsmount.h projects/pseries/vm/vm_page.c projects/pseries/vm/vm_page.h projects/pseries/vm/vnode_pager.c projects/pseries/x86/x86/local_apic.c projects/pseries/x86/x86/tsc.c projects/pseries/xen/interface/io/xenbus.h projects/pseries/xen/xenbus/xenbus.c projects/pseries/xen/xenbus/xenbus_if.m projects/pseries/xen/xenbus/xenbusb.c projects/pseries/xen/xenbus/xenbusb.h projects/pseries/xen/xenbus/xenbusb_back.c projects/pseries/xen/xenbus/xenbusb_front.c projects/pseries/xen/xenbus/xenbusb_if.m projects/pseries/xen/xenbus/xenbusvar.h projects/pseries/xen/xenstore/xenstorevar.h Directory Properties: projects/pseries/ (props changed) projects/pseries/amd64/include/xen/ (props changed) projects/pseries/boot/ (props changed) projects/pseries/boot/i386/efi/ (props changed) projects/pseries/boot/ia64/efi/ (props changed) projects/pseries/boot/ia64/ski/ (props changed) projects/pseries/boot/powerpc/boot1.chrp/ (props changed) projects/pseries/boot/powerpc/ofw/ (props changed) projects/pseries/cddl/contrib/opensolaris/ (props changed) projects/pseries/conf/ (props changed) projects/pseries/contrib/dev/acpica/ (props changed) projects/pseries/contrib/octeon-sdk/ (props changed) projects/pseries/contrib/pf/ (props changed) projects/pseries/contrib/x86emu/ (props changed) Modified: projects/pseries/Makefile ============================================================================== --- projects/pseries/Makefile Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/Makefile Thu Jun 16 20:58:23 2011 (r223161) @@ -12,7 +12,7 @@ CSCOPEDIRS= boot bsm cam cddl compat con geom gnu isa kern libkern modules net net80211 netatalk \ netgraph netinet netinet6 netipsec netipx netnatm netncp \ netsmb nfs nfsclient nfsserver nlm opencrypto \ - pci rpc security sys ufs vm xdr ${CSCOPE_ARCHDIR} + pci rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR} .if defined(ALL_ARCH) CSCOPE_ARCHDIR ?= amd64 arm i386 ia64 mips pc98 powerpc sparc64 x86 .else Modified: projects/pseries/amd64/acpica/acpi_wakeup.c ============================================================================== --- projects/pseries/amd64/acpica/acpi_wakeup.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/acpica/acpi_wakeup.c Thu Jun 16 20:58:23 2011 (r223161) @@ -78,7 +78,7 @@ static void acpi_stop_beep(void *); #ifdef SMP static int acpi_wakeup_ap(struct acpi_softc *, int); -static void acpi_wakeup_cpus(struct acpi_softc *, cpumask_t); +static void acpi_wakeup_cpus(struct acpi_softc *, const cpuset_t *); #endif #define WAKECODE_VADDR(sc) ((sc)->acpi_wakeaddr + (3 * PAGE_SIZE)) @@ -173,7 +173,7 @@ acpi_wakeup_ap(struct acpi_softc *sc, in #define BIOS_WARM (0x0a) static void -acpi_wakeup_cpus(struct acpi_softc *sc, cpumask_t wakeup_cpus) +acpi_wakeup_cpus(struct acpi_softc *sc, const cpuset_t *wakeup_cpus) { uint32_t mpbioswarmvec; int cpu; @@ -192,7 +192,7 @@ acpi_wakeup_cpus(struct acpi_softc *sc, /* Wake up each AP. */ for (cpu = 1; cpu < mp_ncpus; cpu++) { - if ((wakeup_cpus & (1 << cpu)) == 0) + if (!CPU_ISSET(cpu, wakeup_cpus)) continue; if (acpi_wakeup_ap(sc, cpu) == 0) { /* restore the warmstart vector */ @@ -214,7 +214,7 @@ int acpi_sleep_machdep(struct acpi_softc *sc, int state) { #ifdef SMP - cpumask_t wakeup_cpus; + cpuset_t wakeup_cpus; #endif register_t cr3, rf; ACPI_STATUS status; @@ -244,10 +244,9 @@ acpi_sleep_machdep(struct acpi_softc *sc if (savectx(susppcbs[0])) { #ifdef SMP - if (wakeup_cpus != 0 && suspend_cpus(wakeup_cpus) == 0) { - device_printf(sc->acpi_dev, - "Failed to suspend APs: CPU mask = 0x%jx\n", - (uintmax_t)(wakeup_cpus & ~stopped_cpus)); + if (!CPU_EMPTY(&wakeup_cpus) && + suspend_cpus(wakeup_cpus) == 0) { + device_printf(sc->acpi_dev, "Failed to suspend APs\n"); goto out; } #endif @@ -282,8 +281,8 @@ acpi_sleep_machdep(struct acpi_softc *sc PCPU_SET(switchtime, 0); PCPU_SET(switchticks, ticks); #ifdef SMP - if (wakeup_cpus != 0) - acpi_wakeup_cpus(sc, wakeup_cpus); + if (!CPU_EMPTY(&wakeup_cpus)) + acpi_wakeup_cpus(sc, &wakeup_cpus); #endif acpi_resync_clock(sc); ret = 0; @@ -291,7 +290,7 @@ acpi_sleep_machdep(struct acpi_softc *sc out: #ifdef SMP - if (wakeup_cpus != 0) + if (!CPU_EMPTY(&wakeup_cpus)) restart_cpus(wakeup_cpus); #endif Modified: projects/pseries/amd64/amd64/intr_machdep.c ============================================================================== --- projects/pseries/amd64/amd64/intr_machdep.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/amd64/intr_machdep.c Thu Jun 16 20:58:23 2011 (r223161) @@ -443,8 +443,7 @@ DB_SHOW_COMMAND(irqs, db_show_irqs) * allocate CPUs round-robin. */ -/* The BSP is always a valid target. */ -static cpumask_t intr_cpus = (1 << 0); +static cpuset_t intr_cpus; static int current_cpu; /* @@ -466,7 +465,7 @@ intr_next_cpu(void) current_cpu++; if (current_cpu > mp_maxid) current_cpu = 0; - } while (!(intr_cpus & (1 << current_cpu))); + } while (!CPU_ISSET(current_cpu, &intr_cpus)); mtx_unlock_spin(&icu_lock); return (apic_id); } @@ -497,7 +496,7 @@ intr_add_cpu(u_int cpu) printf("INTR: Adding local APIC %d as a target\n", cpu_apic_ids[cpu]); - intr_cpus |= (1 << cpu); + CPU_SET(cpu, &intr_cpus); } /* @@ -510,6 +509,9 @@ intr_shuffle_irqs(void *arg __unused) struct intsrc *isrc; int i; + /* The BSP is always a valid target. */ + CPU_SETOF(0, &intr_cpus); + /* Don't bother on UP. */ if (mp_ncpus == 1) return; Modified: projects/pseries/amd64/amd64/legacy.c ============================================================================== --- projects/pseries/amd64/amd64/legacy.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/amd64/legacy.c Thu Jun 16 20:58:23 2011 (r223161) @@ -81,6 +81,7 @@ static device_method_t legacy_methods[] DEVMETHOD(bus_read_ivar, legacy_read_ivar), DEVMETHOD(bus_write_ivar, legacy_write_ivar), DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), + DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), DEVMETHOD(bus_release_resource, bus_generic_release_resource), DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), Modified: projects/pseries/amd64/amd64/machdep.c ============================================================================== --- projects/pseries/amd64/amd64/machdep.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/amd64/machdep.c Thu Jun 16 20:58:23 2011 (r223161) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include "opt_isa.h" #include "opt_kstack_pages.h" #include "opt_maxmem.h" +#include "opt_mp_watchdog.h" #include "opt_perfmon.h" #include "opt_sched.h" #include "opt_kdtrace.h" @@ -116,6 +117,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -734,9 +736,8 @@ cpu_idle(int busy) CTR2(KTR_SPARE2, "cpu_idle(%d) at %d", busy, curcpu); -#ifdef SMP - if (mp_grab_cpu_hlt()) - return; +#ifdef MP_WATCHDOG + ap_watchdog(PCPU_GET(cpuid)); #endif /* If we are busy - try to use fast methods. */ if (busy) { Modified: projects/pseries/amd64/amd64/mp_machdep.c ============================================================================== --- projects/pseries/amd64/amd64/mp_machdep.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/amd64/mp_machdep.c Thu Jun 16 20:58:23 2011 (r223161) @@ -29,13 +29,13 @@ __FBSDID("$FreeBSD$"); #include "opt_cpu.h" #include "opt_kstack_pages.h" -#include "opt_mp_watchdog.h" #include "opt_sched.h" #include "opt_smp.h" #include #include #include +#include #ifdef GPROF #include #endif @@ -63,7 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -125,7 +124,7 @@ extern inthand_t IDTVEC(fast_syscall), I * Local data and functions. */ -static volatile cpumask_t ipi_nmi_pending; +static volatile cpuset_t ipi_nmi_pending; /* used to hold the AP's until we are ready to release them */ static struct mtx ap_boot_mtx; @@ -159,11 +158,8 @@ static int start_all_aps(void); static int start_ap(int apic_id); static void release_aps(void *dummy); -static int hlt_logical_cpus; static u_int hyperthreading_cpus; /* logical cpus sharing L1 cache */ -static cpumask_t hyperthreading_cpus_mask; static int hyperthreading_allowed = 1; -static struct sysctl_ctx_list logical_cpu_clist; static u_int bootMP_size; static void @@ -241,8 +237,11 @@ topo_probe_0x4(void) * logical processors that belong to the same core * as BSP thus deducing number of threads per core. */ - cpuid_count(0x04, 0, p); - max_cores = ((p[0] >> 26) & 0x3f) + 1; + if (cpu_high >= 0x4) { + cpuid_count(0x04, 0, p); + max_cores = ((p[0] >> 26) & 0x3f) + 1; + } else + max_cores = 1; core_id_bits = mask_width(max_logical/max_cores); if (core_id_bits < 0) return; @@ -334,7 +333,7 @@ topo_probe(void) if (cpu_topo_probed) return; - logical_cpus_mask = 0; + CPU_ZERO(&logical_cpus_mask); if (mp_ncpus <= 1) cpu_cores = cpu_logical = 1; else if (cpu_vendor_id == CPU_VENDOR_AMD) @@ -478,7 +477,7 @@ cpu_mp_probe(void) * Always record BSP in CPU map so that the mbuf init code works * correctly. */ - all_cpus = 1; + CPU_SETOF(0, &all_cpus); if (mp_ncpus == 0) { /* * No CPUs were found, so this must be a UP system. Setup @@ -605,6 +604,7 @@ cpu_mp_announce(void) void init_secondary(void) { + cpuset_t tcpuset, tallcpus; struct pcpu *pc; struct nmi_pcpu *np; u_int64_t msr, cr0; @@ -736,19 +736,17 @@ init_secondary(void) CTR1(KTR_SMP, "SMP: AP CPU #%d Launched", PCPU_GET(cpuid)); printf("SMP: AP CPU #%d Launched!\n", PCPU_GET(cpuid)); + tcpuset = PCPU_GET(cpumask); /* Determine if we are a logical CPU. */ /* XXX Calculation depends on cpu_logical being a power of 2, e.g. 2 */ if (cpu_logical > 1 && PCPU_GET(apic_id) % cpu_logical != 0) - logical_cpus_mask |= PCPU_GET(cpumask); - - /* Determine if we are a hyperthread. */ - if (hyperthreading_cpus > 1 && - PCPU_GET(apic_id) % hyperthreading_cpus != 0) - hyperthreading_cpus_mask |= PCPU_GET(cpumask); + CPU_OR(&logical_cpus_mask, &tcpuset); /* Build our map of 'other' CPUs. */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); if (bootverbose) lapic_dump("AP"); @@ -835,7 +833,7 @@ assign_cpu_ids(void) if (hyperthreading_cpus > 1 && i % hyperthreading_cpus != 0) { cpu_info[i].cpu_hyperthread = 1; -#if defined(SCHED_ULE) + /* * Don't use HT CPU if it has been disabled by a * tunable. @@ -844,7 +842,6 @@ assign_cpu_ids(void) cpu_info[i].cpu_disabled = 1; continue; } -#endif } /* Don't use this CPU if it has been disabled by a tunable. */ @@ -854,6 +851,11 @@ assign_cpu_ids(void) } } + if (hyperthreading_allowed == 0 && hyperthreading_cpus > 1) { + hyperthreading_cpus = 0; + cpu_logical = 1; + } + /* * Assign CPU IDs to local APIC IDs and disable any CPUs * beyond MAXCPU. CPU 0 is always assigned to the BSP. @@ -891,6 +893,7 @@ assign_cpu_ids(void) static int start_all_aps(void) { + cpuset_t tallcpus, tcpuset; vm_offset_t va = boot_address + KERNBASE; u_int64_t *pt4, *pt3, *pt2; u_int32_t mpbioswarmvec; @@ -955,11 +958,14 @@ start_all_aps(void) panic("AP #%d (PHY# %d) failed!", cpu, apic_id); } - all_cpus |= (1 << cpu); /* record AP in CPU map */ + CPU_SET(cpu, &all_cpus); /* record AP in CPU map */ } /* build our map of 'other' CPUs */ - PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask)); + tallcpus = all_cpus; + tcpuset = PCPU_GET(cpumask); + CPU_NAND(&tallcpus, &tcpuset); + PCPU_SET(other_cpus, tallcpus); /* restore the warmstart vector */ *(u_int32_t *) WARMBOOT_OFF = mpbioswarmvec; @@ -1088,6 +1094,30 @@ SYSCTL_UINT(_debug_xhits, OID_AUTO, ipi_ #endif /* COUNT_XINVLTLB_HITS */ /* + * Send an IPI to specified CPU handling the bitmap logic. + */ +static void +ipi_send_cpu(int cpu, u_int ipi) +{ + u_int bitmap, old_pending, new_pending; + + KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); + + if (IPI_IS_BITMAPED(ipi)) { + bitmap = 1 << ipi; + ipi = IPI_BITMAP_VECTOR; + do { + old_pending = cpu_ipi_pending[cpu]; + new_pending = old_pending | bitmap; + } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], + old_pending, new_pending)); + if (old_pending) + return; + } + lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); +} + +/* * Flush the TLB on all other CPU's */ static void @@ -1111,28 +1141,19 @@ smp_tlb_shootdown(u_int vector, vm_offse } static void -smp_targeted_tlb_shootdown(cpumask_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) { - int ncpu, othercpus; + int cpu, ncpu, othercpus; othercpus = mp_ncpus - 1; - if (mask == (cpumask_t)-1) { - ncpu = othercpus; - if (ncpu < 1) + if (CPU_ISFULLSET(&mask)) { + if (othercpus < 1) return; } else { - mask &= ~PCPU_GET(cpumask); - if (mask == 0) - return; - ncpu = bitcount32(mask); - if (ncpu > othercpus) { - /* XXX this should be a panic offence */ - printf("SMP: tlb shootdown to %d other cpus (only have %d)\n", - ncpu, othercpus); - ncpu = othercpus; - } - /* XXX should be a panic, implied by mask == 0 above */ - if (ncpu < 1) + sched_pin(); + CPU_NAND(&mask, PCPU_PTR(cpumask)); + sched_unpin(); + if (CPU_EMPTY(&mask)) return; } if (!(read_rflags() & PSL_I)) @@ -1141,39 +1162,25 @@ smp_targeted_tlb_shootdown(cpumask_t mas smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); - if (mask == (cpumask_t)-1) + if (CPU_ISFULLSET(&mask)) { + ncpu = othercpus; ipi_all_but_self(vector); - else - ipi_selected(mask, vector); + } else { + ncpu = 0; + while ((cpu = cpusetobj_ffs(&mask)) != 0) { + cpu--; + CPU_CLR(cpu, &mask); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, + cpu, vector); + ipi_send_cpu(cpu, vector); + ncpu++; + } + } while (smp_tlb_wait < ncpu) ia32_pause(); mtx_unlock_spin(&smp_ipi_mtx); } -/* - * Send an IPI to specified CPU handling the bitmap logic. - */ -static void -ipi_send_cpu(int cpu, u_int ipi) -{ - u_int bitmap, old_pending, new_pending; - - KASSERT(cpu_apic_ids[cpu] != -1, ("IPI to non-existent CPU %d", cpu)); - - if (IPI_IS_BITMAPED(ipi)) { - bitmap = 1 << ipi; - ipi = IPI_BITMAP_VECTOR; - do { - old_pending = cpu_ipi_pending[cpu]; - new_pending = old_pending | bitmap; - } while (!atomic_cmpset_int(&cpu_ipi_pending[cpu], - old_pending, new_pending)); - if (old_pending) - return; - } - lapic_ipi_vectored(ipi, cpu_apic_ids[cpu]); -} - void smp_cache_flush(void) { @@ -1220,7 +1227,7 @@ smp_invlpg_range(vm_offset_t addr1, vm_o } void -smp_masked_invltlb(cpumask_t mask) +smp_masked_invltlb(cpuset_t mask) { if (smp_started) { @@ -1232,7 +1239,7 @@ smp_masked_invltlb(cpumask_t mask) } void -smp_masked_invlpg(cpumask_t mask, vm_offset_t addr) +smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) { if (smp_started) { @@ -1244,7 +1251,7 @@ smp_masked_invlpg(cpumask_t mask, vm_off } void -smp_masked_invlpg_range(cpumask_t mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpuset_t mask, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { @@ -1297,7 +1304,7 @@ ipi_bitmap_handler(struct trapframe fram * send an IPI to a set of cpus. */ void -ipi_selected(cpumask_t cpus, u_int ipi) +ipi_selected(cpuset_t cpus, u_int ipi) { int cpu; @@ -1307,12 +1314,12 @@ ipi_selected(cpumask_t cpus, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, cpus); + CPU_OR_ATOMIC(&ipi_nmi_pending, &cpus); - CTR3(KTR_SMP, "%s: cpus: %x ipi: %x", __func__, cpus, ipi); - while ((cpu = ffs(cpus)) != 0) { + while ((cpu = cpusetobj_ffs(&cpus)) != 0) { cpu--; - cpus &= ~(1 << cpu); + CPU_CLR(cpu, &cpus); + CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); } } @@ -1330,7 +1337,7 @@ ipi_cpu(int cpu, u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, 1 << cpu); + CPU_SET_ATOMIC(cpu, &ipi_nmi_pending); CTR3(KTR_SMP, "%s: cpu: %d ipi: %x", __func__, cpu, ipi); ipi_send_cpu(cpu, ipi); @@ -1343,8 +1350,10 @@ void ipi_all_but_self(u_int ipi) { + sched_pin(); if (IPI_IS_BITMAPED(ipi)) { ipi_selected(PCPU_GET(other_cpus), ipi); + sched_unpin(); return; } @@ -1354,7 +1363,8 @@ ipi_all_but_self(u_int ipi) * Set the mask of receiving CPUs for this purpose. */ if (ipi == IPI_STOP_HARD) - atomic_set_int(&ipi_nmi_pending, PCPU_GET(other_cpus)); + CPU_OR_ATOMIC(&ipi_nmi_pending, PCPU_PTR(other_cpus)); + sched_unpin(); CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS); @@ -1363,7 +1373,7 @@ ipi_all_but_self(u_int ipi) int ipi_nmi_handler() { - cpumask_t cpumask; + cpuset_t cpumask; /* * As long as there is not a simple way to know about a NMI's @@ -1371,11 +1381,13 @@ ipi_nmi_handler() * the global pending bitword an IPI_STOP_HARD has been issued * and should be handled. */ + sched_pin(); cpumask = PCPU_GET(cpumask); - if ((ipi_nmi_pending & cpumask) == 0) + sched_unpin(); + if (!CPU_OVERLAP(&ipi_nmi_pending, &cpumask)) return (1); - atomic_clear_int(&ipi_nmi_pending, cpumask); + CPU_NAND_ATOMIC(&ipi_nmi_pending, &cpumask); cpustop_handler(); return (0); } @@ -1387,23 +1399,25 @@ ipi_nmi_handler() void cpustop_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; u_int cpu; + sched_pin(); cpu = PCPU_GET(cpuid); cpumask = PCPU_GET(cpumask); + sched_unpin(); savectx(&stoppcbs[cpu]); /* Indicate that we are stopped */ - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); /* Wait for restart */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); if (cpu == 0 && cpustop_restartfunc != NULL) { cpustop_restartfunc(); @@ -1418,7 +1432,7 @@ cpustop_handler(void) void cpususpend_handler(void) { - cpumask_t cpumask; + cpuset_t cpumask; register_t cr3, rf; u_int cpu; @@ -1430,7 +1444,7 @@ cpususpend_handler(void) if (savectx(susppcbs[cpu])) { wbinvd(); - atomic_set_int(&stopped_cpus, cpumask); + CPU_OR_ATOMIC(&stopped_cpus, &cpumask); } else { pmap_init_pat(); PCPU_SET(switchtime, 0); @@ -1438,11 +1452,11 @@ cpususpend_handler(void) } /* Wait for resume */ - while (!(started_cpus & cpumask)) + while (!CPU_OVERLAP(&started_cpus, &cpumask)) ia32_pause(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + CPU_NAND_ATOMIC(&started_cpus, &cpumask); + CPU_NAND_ATOMIC(&stopped_cpus, &cpumask); /* Restore CR3 and enable interrupts */ load_cr3(cr3); @@ -1467,158 +1481,6 @@ release_aps(void *dummy __unused) } SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); -static int -sysctl_hlt_cpus(SYSCTL_HANDLER_ARGS) -{ - cpumask_t mask; - int error; - - mask = hlt_cpus_mask; - error = sysctl_handle_int(oidp, &mask, 0, req); - if (error || !req->newptr) - return (error); - - if (logical_cpus_mask != 0 && - (mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if (! hyperthreading_allowed) - mask |= hyperthreading_cpus_mask; - - if ((mask & all_cpus) == all_cpus) - mask &= ~(1<<0); - hlt_cpus_mask = mask; - return (error); -} -SYSCTL_PROC(_machdep, OID_AUTO, hlt_cpus, CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hlt_cpus, "IU", - "Bitmap of CPUs to halt. 101 (binary) will halt CPUs 0 and 2."); - -static int -sysctl_hlt_logical_cpus(SYSCTL_HANDLER_ARGS) -{ - int disable, error; - - disable = hlt_logical_cpus; - error = sysctl_handle_int(oidp, &disable, 0, req); - if (error || !req->newptr) - return (error); - - if (disable) - hlt_cpus_mask |= logical_cpus_mask; - else - hlt_cpus_mask &= ~logical_cpus_mask; - - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hlt_logical_cpus = disable; - return (error); -} - -static int -sysctl_hyperthreading_allowed(SYSCTL_HANDLER_ARGS) -{ - int allowed, error; - - allowed = hyperthreading_allowed; - error = sysctl_handle_int(oidp, &allowed, 0, req); - if (error || !req->newptr) - return (error); - -#ifdef SCHED_ULE - /* - * SCHED_ULE doesn't allow enabling/disabling HT cores at - * run-time. - */ - if (allowed != hyperthreading_allowed) - return (ENOTSUP); - return (error); -#endif - - if (allowed) - hlt_cpus_mask &= ~hyperthreading_cpus_mask; - else - hlt_cpus_mask |= hyperthreading_cpus_mask; - - if (logical_cpus_mask != 0 && - (hlt_cpus_mask & logical_cpus_mask) == logical_cpus_mask) - hlt_logical_cpus = 1; - else - hlt_logical_cpus = 0; - - if ((hlt_cpus_mask & all_cpus) == all_cpus) - hlt_cpus_mask &= ~(1<<0); - - hyperthreading_allowed = allowed; - return (error); -} - -static void -cpu_hlt_setup(void *dummy __unused) -{ - - if (logical_cpus_mask != 0) { - TUNABLE_INT_FETCH("machdep.hlt_logical_cpus", - &hlt_logical_cpus); - sysctl_ctx_init(&logical_cpu_clist); - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hlt_logical_cpus", CTLTYPE_INT|CTLFLAG_RW, 0, 0, - sysctl_hlt_logical_cpus, "IU", ""); - SYSCTL_ADD_UINT(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "logical_cpus_mask", CTLTYPE_INT|CTLFLAG_RD, - &logical_cpus_mask, 0, ""); - - if (hlt_logical_cpus) - hlt_cpus_mask |= logical_cpus_mask; - - /* - * If necessary for security purposes, force - * hyperthreading off, regardless of the value - * of hlt_logical_cpus. - */ - if (hyperthreading_cpus_mask) { - SYSCTL_ADD_PROC(&logical_cpu_clist, - SYSCTL_STATIC_CHILDREN(_machdep), OID_AUTO, - "hyperthreading_allowed", CTLTYPE_INT|CTLFLAG_RW, - 0, 0, sysctl_hyperthreading_allowed, "IU", ""); - if (! hyperthreading_allowed) - hlt_cpus_mask |= hyperthreading_cpus_mask; - } - } -} -SYSINIT(cpu_hlt, SI_SUB_SMP, SI_ORDER_ANY, cpu_hlt_setup, NULL); - -int -mp_grab_cpu_hlt(void) -{ - cpumask_t mask; -#ifdef MP_WATCHDOG - u_int cpuid; -#endif - int retval; - - mask = PCPU_GET(cpumask); -#ifdef MP_WATCHDOG - cpuid = PCPU_GET(cpuid); - ap_watchdog(cpuid); -#endif - - retval = 0; - while (mask & hlt_cpus_mask) { - retval = 1; - __asm __volatile("sti; hlt" : : : "memory"); - } - return (retval); -} - #ifdef COUNT_IPIS /* * Setup interrupt counters for IPI handlers. Modified: projects/pseries/amd64/amd64/pmap.c ============================================================================== --- projects/pseries/amd64/amd64/pmap.c Thu Jun 16 19:57:07 2011 (r223160) +++ projects/pseries/amd64/amd64/pmap.c Thu Jun 16 20:58:23 2011 (r223161) @@ -123,6 +123,8 @@ __FBSDID("$FreeBSD$"); #include #ifdef SMP #include +#else +#include #endif #include @@ -581,7 +583,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); kernel_pmap->pm_root = NULL; - kernel_pmap->pm_active = -1; /* don't allow deactivation */ + CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); /* @@ -923,19 +925,20 @@ pmap_update_pde_invalidate(vm_offset_t v void pmap_invalidate_page(pmap_t pmap, vm_offset_t va) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { invlpg(va); smp_invlpg(va); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) invlpg(va); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg(pmap->pm_active & other_cpus, va); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg(other_cpus, va); } sched_unpin(); } @@ -943,23 +946,23 @@ pmap_invalidate_page(pmap_t pmap, vm_off void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; vm_offset_t addr; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); smp_invlpg_range(sva, eva); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); - if (pmap->pm_active & other_cpus) - smp_masked_invlpg_range(pmap->pm_active & other_cpus, - sva, eva); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invlpg_range(other_cpus, sva, eva); } sched_unpin(); } @@ -967,19 +970,20 @@ pmap_invalidate_range(pmap_t pmap, vm_of void pmap_invalidate_all(pmap_t pmap) { - cpumask_t cpumask, other_cpus; + cpuset_t cpumask, other_cpus; sched_pin(); - if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { + if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { invltlb(); smp_invltlb(); } else { cpumask = PCPU_GET(cpumask); other_cpus = PCPU_GET(other_cpus); - if (pmap->pm_active & cpumask) + if (CPU_OVERLAP(&pmap->pm_active, &cpumask)) invltlb(); - if (pmap->pm_active & other_cpus) - smp_masked_invltlb(pmap->pm_active & other_cpus); + CPU_AND(&other_cpus, &pmap->pm_active); + if (!CPU_EMPTY(&other_cpus)) + smp_masked_invltlb(other_cpus); } sched_unpin(); } @@ -995,8 +999,8 @@ pmap_invalidate_cache(void) } struct pde_action { - cpumask_t store; /* processor that updates the PDE */ - cpumask_t invalidate; /* processors that invalidate their TLB */ + cpuset_t store; /* processor that updates the PDE */ + cpuset_t invalidate; /* processors that invalidate their TLB */ vm_offset_t va; pd_entry_t *pde; pd_entry_t newpde; @@ -1007,8 +1011,12 @@ pmap_update_pde_action(void *arg) { struct pde_action *act = arg; - if (act->store == PCPU_GET(cpumask)) + sched_pin(); + if (!CPU_CMP(&act->store, PCPU_PTR(cpumask))) { + sched_unpin(); pde_store(act->pde, act->newpde); + } else + sched_unpin(); } static void @@ -1016,8 +1024,12 @@ pmap_update_pde_teardown(void *arg) { struct pde_action *act = arg; - if ((act->invalidate & PCPU_GET(cpumask)) != 0) + sched_pin(); + if (CPU_OVERLAP(&act->invalidate, PCPU_PTR(cpumask))) { + sched_unpin(); pmap_update_pde_invalidate(act->va, act->newpde); + } else + sched_unpin(); } /* @@ -1032,26 +1044,28 @@ static void pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde) { struct pde_action act; - cpumask_t active, cpumask; + cpuset_t active, cpumask, other_cpus; sched_pin(); cpumask = PCPU_GET(cpumask); + other_cpus = PCPU_GET(other_cpus); if (pmap == kernel_pmap) active = all_cpus; else active = pmap->pm_active; - if ((active & PCPU_GET(other_cpus)) != 0) { + if (CPU_OVERLAP(&active, &other_cpus)) { act.store = cpumask; act.invalidate = active; act.va = va; act.pde = pde; act.newpde = newpde; - smp_rendezvous_cpus(cpumask | active, + CPU_OR(&cpumask, &active); + smp_rendezvous_cpus(cpumask, smp_no_rendevous_barrier, pmap_update_pde_action, pmap_update_pde_teardown, &act); } else { pde_store(pde, newpde); - if ((active & cpumask) != 0) + if (CPU_OVERLAP(&active, &cpumask)) pmap_update_pde_invalidate(va, newpde); } sched_unpin(); @@ -1065,7 +1079,7 @@ PMAP_INLINE void pmap_invalidate_page(pmap_t pmap, vm_offset_t va) { - if (pmap == kernel_pmap || pmap->pm_active) + if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) invlpg(va); } @@ -1074,7 +1088,7 @@ pmap_invalidate_range(pmap_t pmap, vm_of { vm_offset_t addr; - if (pmap == kernel_pmap || pmap->pm_active) + if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); } @@ -1083,7 +1097,7 @@ PMAP_INLINE void pmap_invalidate_all(pmap_t pmap) { - if (pmap == kernel_pmap || pmap->pm_active) + if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) invltlb(); } @@ -1099,7 +1113,7 @@ pmap_update_pde(pmap_t pmap, vm_offset_t { pde_store(pde, newpde); - if (pmap == kernel_pmap || pmap->pm_active) + if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) pmap_update_pde_invalidate(va, newpde); } #endif /* !SMP */ @@ -1607,7 +1621,7 @@ pmap_pinit0(pmap_t pmap) PMAP_LOCK_INIT(pmap); pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys); pmap->pm_root = NULL; - pmap->pm_active = 0; + CPU_ZERO(&pmap->pm_active); PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); @@ -1649,7 +1663,7 @@ pmap_pinit(pmap_t pmap) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jun 16 23:36:01 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6820E1065672; Thu, 16 Jun 2011 23:36:01 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5860F8FC0A; Thu, 16 Jun 2011 23:36:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GNa1cO050477; Thu, 16 Jun 2011 23:36:01 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GNa1YG050475; Thu, 16 Jun 2011 23:36:01 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106162336.p5GNa1YG050475@svn.freebsd.org> From: Marcel Moolenaar Date: Thu, 16 Jun 2011 23:36:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223168 - projects/llvm-ia64/lib/clang X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Thu, 16 Jun 2011 23:36:01 -0000 Author: marcel Date: Thu Jun 16 23:36:01 2011 New Revision: 223168 URL: http://svn.freebsd.org/changeset/base/223168 Log: Fix build break caused by LLVM_PATH_GRAPHVIZ not having quotes. Modified: projects/llvm-ia64/lib/clang/clang.build.mk Modified: projects/llvm-ia64/lib/clang/clang.build.mk ============================================================================== --- projects/llvm-ia64/lib/clang/clang.build.mk Thu Jun 16 22:06:35 2011 (r223167) +++ projects/llvm-ia64/lib/clang/clang.build.mk Thu Jun 16 23:36:01 2011 (r223168) @@ -1,6 +1,6 @@ # $FreeBSD$ -GRAPHVIZ_FLAGS=-DHAVE_GRAPHVIZ -DLLVM_PATH_GRAPHVIZ=/usr/local/bin/graphviz +GRAPHVIZ_FLAGS=-DHAVE_GRAPHVIZ -DLLVM_PATH_GRAPHVIZ=\"/usr/local/bin/graphviz\" DEBUG_FLAGS?=-O0 -g ${GRAPHVIZ_FLAGS} CLANG_SRCS=${LLVM_SRCS}/tools/clang From owner-svn-src-projects@FreeBSD.ORG Fri Jun 17 08:30:59 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB24D1065670 for ; Fri, 17 Jun 2011 08:30:59 +0000 (UTC) (envelope-from pawel@dawidek.net) Received: from mail.dawidek.net (60.wheelsystems.com [83.12.187.60]) by mx1.freebsd.org (Postfix) with ESMTP id 714818FC16 for ; Fri, 17 Jun 2011 08:30:59 +0000 (UTC) Received: from localhost (58.wheelsystems.com [83.12.187.58]) by mail.dawidek.net (Postfix) with ESMTPSA id CD57AB00; Fri, 17 Jun 2011 09:03:33 +0200 (CEST) Date: Fri, 17 Jun 2011 10:14:00 +0200 From: Pawel Jakub Dawidek To: Maxim Sobolev Message-ID: <20110617081400.GA1732@garage.freebsd.pl> References: <201106160844.p5G8iQ4W020318@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="sdtB3X0nJg68CQEu" Content-Disposition: inline In-Reply-To: <201106160844.p5G8iQ4W020318@svn.freebsd.org> X-OS: FreeBSD 9.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223144 - projects/hastd_wan X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 17 Jun 2011 08:30:59 -0000 --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jun 16, 2011 at 08:44:26AM +0000, Maxim Sobolev wrote: > Author: sobomax > Date: Thu Jun 16 08:44:26 2011 > New Revision: 223144 > URL: http://svn.freebsd.org/changeset/base/223144 >=20 > Log: > "HAST currently doesn't support 'async' mode, so working over WAN is not > common use case for now, which makes your changes low priority. High > priority for HAST is working over LAN." -pjd > =20 > So this little fork of the hastd would aim at optimizing it for good > performance over WAN network. Hopefully it will be useful for somebody > else and and end up at least partially in the main tree. Let me share my ideas how I think 'async' should be implemented. In 'async' mode we send writes to the remote node, but don't wait for confirmation. This way we can complete the write much faster of course, but we still need to keep the extents dirty until remote node confirms that write succeeded. Then you need to limit the number of outstanding 'async' writes as we can easly consume huge amount of memory and make the activemap very dirty. Which shows that 'async' will only work for configuration where you have relatively short write peaks. Once that done you may think about combining outstanding I/Os and removing covered parts of earlier outstanding I/Os. --=20 Pawel Jakub Dawidek http://www.wheelsystems.com FreeBSD committer http://www.FreeBSD.org Am I Evil? Yes, I Am! http://yomoli.com --sdtB3X0nJg68CQEu Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAk37DMgACgkQForvXbEpPzTtCQCeLmV4uibXAtMGAjzFoU9uFKXb Gb0AniKcRSVH2xLPGXzWSOb28xvRsrs4 =MtV0 -----END PGP SIGNATURE----- --sdtB3X0nJg68CQEu-- From owner-svn-src-projects@FreeBSD.ORG Fri Jun 17 16:06:13 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB7F8106566C; Fri, 17 Jun 2011 16:06:13 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BAE4B8FC17; Fri, 17 Jun 2011 16:06:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HG6DQk097430; Fri, 17 Jun 2011 16:06:13 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HG6D13097423; Fri, 17 Jun 2011 16:06:13 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201106171606.p5HG6D13097423@svn.freebsd.org> From: Jamie Gritton Date: Fri, 17 Jun 2011 16:06:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223188 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 17 Jun 2011 16:06:14 -0000 Author: jamie Date: Fri Jun 17 16:06:13 2011 New Revision: 223188 URL: http://svn.freebsd.org/changeset/base/223188 Log: Change cfstrings from an STAILQ into a TAILQ to allow commands to be traversed in reverse order. Modified: projects/jailconf/usr.sbin/jail/command.c projects/jailconf/usr.sbin/jail/config.c projects/jailconf/usr.sbin/jail/jail.c projects/jailconf/usr.sbin/jail/jailp.h projects/jailconf/usr.sbin/jail/jailparse.y projects/jailconf/usr.sbin/jail/state.c Modified: projects/jailconf/usr.sbin/jail/command.c ============================================================================== --- projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:06:13 2011 (r223188) @@ -111,7 +111,7 @@ run_command(struct cfjail *j, enum intpa if (j->intparams[comparam] == NULL) return 0; j->comstring = - STAILQ_FIRST(&j->intparams[comparam]->val); + TAILQ_FIRST(&j->intparams[comparam]->val); } j->comparam = comparam; } else @@ -125,7 +125,7 @@ run_command(struct cfjail *j, enum intpa return 1; } j->comstring = - comstring == COMSTRING_DUMMY ? NULL : STAILQ_NEXT(comstring, tq); + comstring == COMSTRING_DUMMY ? NULL : TAILQ_NEXT(comstring, tq); if (comstring != COMSTRING_DUMMY && comstring->len == 0) goto next_comstring; /* @@ -294,11 +294,11 @@ run_command(struct cfjail *j, enum intpa if (j->name != NULL) goto default_command; argc = 0; - STAILQ_FOREACH(s, &j->intparams[IP_COMMAND]->val, tq) + TAILQ_FOREACH(s, &j->intparams[IP_COMMAND]->val, tq) argc++; argv = alloca((argc + 1) * sizeof(char *)); argc = 0; - STAILQ_FOREACH(s, &j->intparams[IP_COMMAND]->val, tq) + TAILQ_FOREACH(s, &j->intparams[IP_COMMAND]->val, tq) argv[argc++] = s->s; argv[argc] = NULL; j->comstring = NULL; Modified: projects/jailconf/usr.sbin/jail/config.c ============================================================================== --- projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:06:13 2011 (r223188) @@ -178,7 +178,7 @@ load_config(void) TAILQ_FOREACH(p, &j->params, tq) { p->gen = ++pgen; find_vars: - STAILQ_FOREACH(s, &p->val, tq) { + TAILQ_FOREACH(s, &p->val, tq) { varoff = 0; while ((v = STAILQ_FIRST(&s->vars))) { TAILQ_FOREACH(vp, &j->params, tq) @@ -202,7 +202,7 @@ load_config(void) v->name); goto bad_var; } - STAILQ_FOREACH(vs, &vp->val, tq) + TAILQ_FOREACH(vs, &vp->val, tq) if (!STAILQ_EMPTY(&vs->vars)) { vp->gen = pgen; TAILQ_REMOVE(&j->params, vp, @@ -211,8 +211,8 @@ load_config(void) p = vp; goto find_vars; } - vs = STAILQ_FIRST(&vp->val); - if (STAILQ_NEXT(vs, tq) != NULL && + vs = TAILQ_FIRST(&vp->val); + if (TAILQ_NEXT(vs, tq) != NULL && (s->s[0] != '\0' || STAILQ_NEXT(v, tq))) { jail_warnx(j, "%s: array cannot be " @@ -227,12 +227,12 @@ load_config(void) memcpy(s->s + v->pos + varoff, vs->s, vs->len); varoff += vs->len; s->len += vs->len; - while ((vs = STAILQ_NEXT(vs, tq))) { + while ((vs = TAILQ_NEXT(vs, tq))) { ns = emalloc(sizeof(struct cfstring)); ns->s = estrdup(vs->s); ns->len = vs->len; STAILQ_INIT(&ns->vars); - STAILQ_INSERT_AFTER(&p->val, s, ns, tq); + TAILQ_INSERT_AFTER(&p->val, s, ns, tq); s = ns; } free_var: @@ -298,7 +298,7 @@ add_param(struct cfjail *j, const struct if (j == NULL) j = add_jail(); } - STAILQ_INIT(&nss); + TAILQ_INIT(&nss); if (p != NULL) { name = p->name; flags = p->flags; @@ -306,7 +306,7 @@ add_param(struct cfjail *j, const struct * Make a copy of the parameter's string list, * which may be freed if it's overridden later. */ - STAILQ_FOREACH(s, &p->val, tq) { + TAILQ_FOREACH(s, &p->val, tq) { ns = emalloc(sizeof(struct cfstring)); ns->s = estrdup(s->s); ns->len = s->len; @@ -317,7 +317,7 @@ add_param(struct cfjail *j, const struct nv->pos = v->pos; STAILQ_INSERT_TAIL(&ns->vars, nv, tq); } - STAILQ_INSERT_TAIL(&nss, ns, tq); + TAILQ_INSERT_TAIL(&nss, ns, tq); } } else { flags = PF_APPEND; @@ -338,7 +338,7 @@ add_param(struct cfjail *j, const struct ns->s = estrdup(value); ns->len = strlen(value); STAILQ_INIT(&ns->vars); - STAILQ_INSERT_TAIL(&nss, ns, tq); + TAILQ_INSERT_TAIL(&nss, ns, tq); } } @@ -355,16 +355,16 @@ add_param(struct cfjail *j, const struct free(dp->name); dp->name = estrdup(name); } - if (!(flags & PF_APPEND) || STAILQ_EMPTY(&nss)) + if (!(flags & PF_APPEND) || TAILQ_EMPTY(&nss)) free_param_strings(dp); - STAILQ_CONCAT(&dp->val, &nss); + TAILQ_CONCAT(&dp->val, &nss, tq); dp->flags |= flags; } else { /* Not found - add it. */ np = emalloc(sizeof(struct cfparam)); np->name = estrdup(name); - STAILQ_INIT(&np->val); - STAILQ_CONCAT(&np->val, &nss); + TAILQ_INIT(&np->val); + TAILQ_CONCAT(&np->val, &nss, tq); np->flags = flags; np->gen = 0; TAILQ_INSERT_TAIL(&j->params, np, tq); @@ -393,9 +393,9 @@ bool_param(const struct cfparam *p) return 0; cs = strrchr(p->name, '.'); return !strncmp(cs ? cs + 1 : p->name, "no", 2) ^ - (STAILQ_EMPTY(&p->val) || - !strcasecmp(STAILQ_LAST(&p->val, cfstring, tq)->s, "true") || - (strtol(STAILQ_LAST(&p->val, cfstring, tq)->s, NULL, 10))); + (TAILQ_EMPTY(&p->val) || + !strcasecmp(TAILQ_LAST(&p->val, cfstrings)->s, "true") || + (strtol(TAILQ_LAST(&p->val, cfstrings)->s, NULL, 10))); } /* @@ -404,9 +404,9 @@ bool_param(const struct cfparam *p) int int_param(const struct cfparam *p, int *ip) { - if (p == NULL || STAILQ_EMPTY(&p->val)) + if (p == NULL || TAILQ_EMPTY(&p->val)) return 0; - *ip = strtol(STAILQ_LAST(&p->val, cfstring, tq)->s, NULL, 10); + *ip = strtol(TAILQ_LAST(&p->val, cfstrings)->s, NULL, 10); return 1; } @@ -416,8 +416,8 @@ int_param(const struct cfparam *p, int * const char * string_param(const struct cfparam *p) { - return (p && !STAILQ_EMPTY(&p->val) - ? STAILQ_LAST(&p->val, cfstring, tq)->s : NULL); + return (p && !TAILQ_EMPTY(&p->val) + ? TAILQ_LAST(&p->val, cfstrings)->s : NULL); } /* @@ -448,9 +448,8 @@ check_intparams(struct cfjail *j) error = 0; /* Check format of boolan and integer values. */ TAILQ_FOREACH(p, &j->params, tq) { - if (!STAILQ_EMPTY(&p->val) && - (p->flags & (PF_BOOL | PF_INT))) { - val = STAILQ_LAST(&p->val, cfstring, tq)->s; + if (!TAILQ_EMPTY(&p->val) && (p->flags & (PF_BOOL | PF_INT))) { + val = TAILQ_LAST(&p->val, cfstrings)->s; if (p->flags & PF_BOOL) { if (strcasecmp(val, "false") && strcasecmp(val, "true") && @@ -565,7 +564,7 @@ check_intparams(struct cfjail *j) { if (j->intparams[KP_IP4_ADDR + isip6] == NULL) continue; - STAILQ_FOREACH(s, &j->intparams[KP_IP4_ADDR + isip6]->val, tq) { + TAILQ_FOREACH(s, &j->intparams[KP_IP4_ADDR + isip6]->val, tq) { cs = strchr(s->s, '|'); if (cs || defif) add_param(j, NULL, IP__IP4_IFADDR + isip6, @@ -610,7 +609,7 @@ check_intparams(struct cfjail *j) * parameter. */ if (j->intparams[IP_MOUNT_FSTAB] != NULL) { - STAILQ_FOREACH(s, &j->intparams[IP_MOUNT_FSTAB]->val, tq) { + TAILQ_FOREACH(s, &j->intparams[IP_MOUNT_FSTAB]->val, tq) { if (s->len == 0) continue; f = fopen(s->s, "r"); @@ -668,28 +667,28 @@ import_params(struct cfjail *j) jail_warnx(j, "%s", jail_errmsg); continue; } - if (STAILQ_EMPTY(&p->val)) + if (TAILQ_EMPTY(&p->val)) value = NULL; else if (!jp->jp_elemlen || - !STAILQ_NEXT(STAILQ_FIRST(&p->val), tq)) { + !TAILQ_NEXT(TAILQ_FIRST(&p->val), tq)) { /* * Scalar parameters silently discard multiple (array) * values, keeping only the last value added. This * lets values added from the command line append to * arrays wthout pre-checking the type. */ - value = STAILQ_LAST(&p->val, cfstring, tq)->s; + value = TAILQ_LAST(&p->val, cfstrings)->s; } else { /* * Convert arrays into comma-separated strings, which * jailparam_import will then convert back into arrays. */ vallen = 0; - STAILQ_FOREACH(s, &p->val, tq) + TAILQ_FOREACH(s, &p->val, tq) vallen += s->len + 1; value = alloca(vallen); cs = value; - STAILQ_FOREACH_SAFE(s, &p->val, tq, ts) { + TAILQ_FOREACH_SAFE(s, &p->val, tq, ts) { strcpy(cs, s->s); if (ts != NULL) { cs += s->len + 1; @@ -796,14 +795,14 @@ free_param_strings(struct cfparam *p) struct cfstring *s; struct cfvar *v; - while ((s = STAILQ_FIRST(&p->val))) { + while ((s = TAILQ_FIRST(&p->val))) { free(s->s); while ((v = STAILQ_FIRST(&s->vars))) { free(v->name); STAILQ_REMOVE_HEAD(&s->vars, tq); free(v); } - STAILQ_REMOVE_HEAD(&p->val, tq); + TAILQ_REMOVE(&p->val, s, tq); free(s); } } Modified: projects/jailconf/usr.sbin/jail/jail.c ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:06:13 2011 (r223188) @@ -963,9 +963,9 @@ print_jail(FILE *fp, struct cfjail *j, i print_param(fp, j->intparams[KP_IP4_ADDR], ',', 0); #ifdef INET6 if (j->intparams[KP_IP6_ADDR] && - !STAILQ_EMPTY(&j->intparams[KP_IP6_ADDR]->val)) { + !TAILQ_EMPTY(&j->intparams[KP_IP6_ADDR]->val)) { if (j->intparams[KP_IP4_ADDR] && - !STAILQ_EMPTY(&j->intparams[KP_IP4_ADDR]->val)) + !TAILQ_EMPTY(&j->intparams[KP_IP4_ADDR]->val)) putc(',', fp); print_param(fp, j->intparams[KP_IP6_ADDR], ',', 0); } @@ -993,11 +993,11 @@ print_param(FILE *fp, const struct cfpar if (doname) fputs(p->name, fp); - if (p == NULL || STAILQ_EMPTY(&p->val)) + if (p == NULL || TAILQ_EMPTY(&p->val)) return; if (doname) putc('=', fp); - STAILQ_FOREACH_SAFE(s, &p->val, tq, ts) { + TAILQ_FOREACH_SAFE(s, &p->val, tq, ts) { quoted_print(fp, s->s); if (ts != NULL) putc(sep, fp); Modified: projects/jailconf/usr.sbin/jail/jailp.h ============================================================================== --- projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:06:13 2011 (r223188) @@ -131,10 +131,10 @@ struct cfvar { size_t pos; }; -STAILQ_HEAD(cfstrings, cfstring); +TAILQ_HEAD(cfstrings, cfstring); struct cfstring { - STAILQ_ENTRY(cfstring) tq; + TAILQ_ENTRY(cfstring) tq; char *s; size_t len; struct cfvars vars; Modified: projects/jailconf/usr.sbin/jail/jailparse.y ============================================================================== --- projects/jailconf/usr.sbin/jail/jailparse.y Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/jailparse.y Fri Jun 17 16:06:13 2011 (r223188) @@ -112,20 +112,20 @@ param : name | name '=' value { $$ = $1; - STAILQ_CONCAT(&$$->val, $3); + TAILQ_CONCAT(&$$->val, $3, tq); free($3); } | name PLEQ value { $$ = $1; - STAILQ_CONCAT(&$$->val, $3); + TAILQ_CONCAT(&$$->val, $3, tq); $$->flags |= PF_APPEND; free($3); } | name value { $$ = $1; - STAILQ_CONCAT(&$$->val, $2); + TAILQ_CONCAT(&$$->val, $2, tq); free($2); } | error @@ -141,14 +141,14 @@ name : STR { $$ = emalloc(sizeof(struct cfparam)); $$->name = $1; - STAILQ_INIT(&$$->val); + TAILQ_INIT(&$$->val); $$->flags = 0; } | VAR { $$ = emalloc(sizeof(struct cfparam)); $$->name = $1; - STAILQ_INIT(&$$->val); + TAILQ_INIT(&$$->val); $$->flags = PF_VAR; } ; @@ -156,13 +156,13 @@ name : STR value : string { $$ = emalloc(sizeof(struct cfstrings)); - STAILQ_INIT($$); - STAILQ_INSERT_TAIL($$, $1, tq); + TAILQ_INIT($$); + TAILQ_INSERT_TAIL($$, $1, tq); } | value ',' string { $$ = $1; - STAILQ_INSERT_TAIL($$, $3, tq); + TAILQ_INSERT_TAIL($$, $3, tq); } ; Modified: projects/jailconf/usr.sbin/jail/state.c ============================================================================== --- projects/jailconf/usr.sbin/jail/state.c Fri Jun 17 16:03:00 2011 (r223187) +++ projects/jailconf/usr.sbin/jail/state.c Fri Jun 17 16:06:13 2011 (r223188) @@ -69,7 +69,7 @@ dep_setup(int docf) */ if ((j = TAILQ_FIRST(&cfjails)) && (p = j->intparams[IP_DEPEND])) { - STAILQ_FOREACH(s, &p->val, tq) { + TAILQ_FOREACH(s, &p->val, tq) { if (running_jid(s->s, 0) < 0) { warnx("depends on nonexistent jail " "\"%s\"", s->s); @@ -97,7 +97,7 @@ dep_setup(int docf) if (j->flags & JF_FAILED) continue; if ((p = j->intparams[IP_DEPEND])) { - STAILQ_FOREACH(s, &p->val, tq) { + TAILQ_FOREACH(s, &p->val, tq) { dj = find_jail(s->s); if (dj != NULL) { deps++; From owner-svn-src-projects@FreeBSD.ORG Fri Jun 17 16:18:44 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C6B0C1065672; Fri, 17 Jun 2011 16:18:44 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B66468FC1C; Fri, 17 Jun 2011 16:18:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HGIi1Z097828; Fri, 17 Jun 2011 16:18:44 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HGIipf097823; Fri, 17 Jun 2011 16:18:44 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201106171618.p5HGIipf097823@svn.freebsd.org> From: Jamie Gritton Date: Fri, 17 Jun 2011 16:18:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223189 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 17 Jun 2011 16:18:44 -0000 Author: jamie Date: Fri Jun 17 16:18:44 2011 New Revision: 223189 URL: http://svn.freebsd.org/changeset/base/223189 Log: Split run_command up into an outer function (next_command) that chooses a single command string to run, and an inner function (run_command) that runs that single string. Move the list of start/stop commands to run from a switch statement into an array, with a new placeholder parameter IP__OP for actually creating or removing the jail. When jail creation fails, revert all non-exec commands in reverse order. Modified: projects/jailconf/usr.sbin/jail/command.c projects/jailconf/usr.sbin/jail/config.c projects/jailconf/usr.sbin/jail/jail.c projects/jailconf/usr.sbin/jail/jailp.h Modified: projects/jailconf/usr.sbin/jail/command.c ============================================================================== --- projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:06:13 2011 (r223188) +++ projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:18:44 2011 (r223189) @@ -50,7 +50,6 @@ __FBSDID("$FreeBSD$"); #include "jailp.h" -#define COMSTRING_DUMMY ((struct cfstring *)1) #define DEFAULT_STOP_TIMEOUT 10 #define PHASH_SIZE 256 @@ -66,12 +65,13 @@ int paralimit = -1; extern char **environ; -static int get_user_info(struct cfjail *j, const char *username, - const struct passwd **pwdp, login_cap_t **lcapp); +static int run_command(struct cfjail *j); static void add_proc(struct cfjail *j, pid_t pid); static void clear_procs(struct cfjail *j); static struct cfjail *find_proc(pid_t pid); static int term_procs(struct cfjail *j); +static int get_user_info(struct cfjail *j, const char *username, + const struct passwd **pwdp, login_cap_t **lcapp); static int check_path(struct cfjail *j, const char *pname, const char *path, int isfile, const char *umount_type); @@ -81,58 +81,188 @@ static struct phhead phash[PHASH_SIZE]; static int kq; /* - * Run a command associated with a jail, possibly inside the jail. + * Run the next command associated with a jail. + */ +int +next_command(struct cfjail *j) +{ + const struct cfstring *comstring; + enum intparam comparam; + int rval, create_failed; + + static struct cfstring dummystring = { .len = 1 }; + + rval = 0; + create_failed = (j->flags & (JF_STOP | JF_FAILED)) == JF_FAILED; + for (; (comparam = *j->comparam) && comparam != IP__OP; + j->comparam += create_failed ? -1 : 1) { + if (j->comstring == NULL) { + switch (comparam) { + case IP_MOUNT_DEVFS: + if (!bool_param(j->intparams[IP_MOUNT_DEVFS])) + continue; + /* FALLTHROUGH */ + case IP_STOP_TIMEOUT: + j->comstring = &dummystring; + break; + default: + if (j->intparams[comparam] == NULL) + continue; + j->comstring = create_failed + ? TAILQ_LAST(&j->intparams[comparam]->val, + cfstrings) + : TAILQ_FIRST(&j->intparams[comparam]->val); + } + } + for (; j->comstring != NULL; + j->comstring = create_failed + ? TAILQ_PREV(j->comstring, cfstrings, tq) + : TAILQ_NEXT(j->comstring, tq)) { + if (rval != 0) + return rval; + if (j->comstring->len == 0 || (create_failed && + (comparam == IP_EXEC_PRESTART || comparam == + IP_EXEC_START || comparam == IP_COMMAND || + comparam == IP_EXEC_POSTSTART))) + continue; + if (paralimit == 0) { + requeue(j, &runnable); + return 1; + } + rval = run_command(j); + create_failed = + (j->flags & (JF_STOP | JF_FAILED)) == JF_FAILED; + } + } + return rval; +} + +/* + * Check command exit status + */ +int +finish_command(struct cfjail *j) +{ + int error; + + if (!(j->flags & JF_SLEEPQ)) + return 0; + j->flags &= ~JF_SLEEPQ; + if (*j->comparam != IP_STOP_TIMEOUT) { + paralimit++; + if (!TAILQ_EMPTY(&runnable)) + requeue(TAILQ_FIRST(&runnable), &ready); + } + error = 0; + if (j->flags & JF_TIMEOUT) { + j->flags &= ~JF_TIMEOUT; + if (*j->comparam != IP_STOP_TIMEOUT) { + jail_warnx(j, "%s: timed out", j->comline); + failed(j); + error = -1; + } else if (verbose > 0) + jail_note(j, "timed out\n"); + } else if (j->pstatus != 0) { + if (WIFSIGNALED(j->pstatus)) + jail_warnx(j, "%s: exited on signal %d", + j->comline, WTERMSIG(j->pstatus)); + else + jail_warnx(j, "%s: failed", j->comline); + j->pstatus = 0; + failed(j); + error = -1; + } + free(j->comline); + j->comline = NULL; + return error; +} + +/* + * Check for finished processed or timeouts. + */ +struct cfjail * +next_proc(int nonblock) +{ + struct kevent ke; + struct timespec ts; + struct timespec *tsp; + struct cfjail *j; + + if (!TAILQ_EMPTY(&sleeping)) { + again: + tsp = NULL; + if ((j = TAILQ_FIRST(&sleeping)) && j->timeout.tv_sec) { + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec = j->timeout.tv_sec - ts.tv_sec; + ts.tv_nsec = j->timeout.tv_nsec - ts.tv_nsec; + if (ts.tv_nsec < 0) { + ts.tv_sec--; + ts.tv_nsec += 1000000000; + } + if (ts.tv_sec < 0 || + (ts.tv_sec == 0 && ts.tv_nsec == 0)) { + j->flags |= JF_TIMEOUT; + clear_procs(j); + return j; + } + tsp = &ts; + } + if (nonblock) { + ts.tv_sec = 0; + ts.tv_nsec = 0; + tsp = &ts; + } + switch (kevent(kq, NULL, 0, &ke, 1, tsp)) { + case -1: + if (errno != EINTR) + err(1, "kevent"); + goto again; + case 0: + if (!nonblock) { + j = TAILQ_FIRST(&sleeping); + j->flags |= JF_TIMEOUT; + clear_procs(j); + return j; + } + break; + case 1: + (void)waitpid(ke.ident, NULL, WNOHANG); + if ((j = find_proc(ke.ident))) { + j->pstatus = ke.data; + return j; + } + goto again; + } + } + return NULL; +} + +/* + * Run a single command for a jail, possible inside the jail. */ int -run_command(struct cfjail *j, enum intparam comparam) +run_command(struct cfjail *j) { const struct passwd *pwd; - struct cfstring *comstring, *s; + const struct cfstring *comstring, *s; login_cap_t *lcap; char **argv; char *cs, *addr, *comcs, *devpath; const char *jidstr, *conslog, *path, *ruleset, *term, *username; + enum intparam comparam; size_t comlen; pid_t pid; int argc, bg, clean, consfd, down, fib, i, injail, sjuser, timeout; static char *cleanenv; - if (comparam) { - switch (comparam) { - case IP_MOUNT_DEVFS: - if (!bool_param(j->intparams[IP_MOUNT_DEVFS])) - return 0; - /* FALLTHROUGH */ - case IP_STOP_TIMEOUT: - j->comstring = COMSTRING_DUMMY; - break; - default: - if (j->intparams[comparam] == NULL) - return 0; - j->comstring = - TAILQ_FIRST(&j->intparams[comparam]->val); - } - j->comparam = comparam; - } else - comparam = j->comparam; - next_comstring: - comstring = j->comstring; - if (comstring == NULL) - return 0; - if (paralimit == 0) { - requeue(j, &runnable); - return 1; - } - j->comstring = - comstring == COMSTRING_DUMMY ? NULL : TAILQ_NEXT(comstring, tq); - if (comstring != COMSTRING_DUMMY && comstring->len == 0) - goto next_comstring; /* * Collect exec arguments. Internal commands for network and * mounting build their own argument lists. */ - bg = j->flags & JF_FAILED; + comparam = *j->comparam; + comstring = j->comstring; + bg = 0; down = j->flags & (JF_STOP | JF_FAILED); switch (comparam) { case IP_STOP_TIMEOUT: @@ -169,7 +299,6 @@ run_command(struct cfjail *j, enum intpa } *(const char **)&argv[argc] = down ? "-alias" : "alias"; argv[argc + 1] = NULL; - j->flags |= JF_IFUP; break; #ifdef INET6 @@ -195,7 +324,6 @@ run_command(struct cfjail *j, enum intpa argc = 4; *(const char **)&argv[argc] = down ? "-alias" : "alias"; argv[argc + 1] = NULL; - j->flags |= JF_IFUP; break; #endif @@ -208,7 +336,6 @@ run_command(struct cfjail *j, enum intpa *(const char **)&argv[3] = jidstr ? jidstr : string_param(j->intparams[KP_NAME]); argv[4] = NULL; - j->flags |= JF_IFUP; break; case IP_MOUNT: @@ -221,7 +348,7 @@ run_command(struct cfjail *j, enum intpa cs = strtok(NULL, " \t\f\v\r\n")) argv[argc++] = cs; if (argc == 0) - goto next_comstring; + return 0; if (argc < 3) { jail_warnx(j, "%s: %s: missing information", j->intparams[comparam]->name, comstring->s); @@ -252,7 +379,6 @@ run_command(struct cfjail *j, enum intpa *(const char **)&argv[0] = _PATH_MOUNT; } *(const char **)&argv[1] = "-t"; - j->flags |= JF_MOUNTED; break; case IP_MOUNT_DEVFS: @@ -287,7 +413,6 @@ run_command(struct cfjail *j, enum intpa ruleset ? " " : "", ruleset ? ruleset : ""); argv[3] = NULL; } - j->flags |= JF_MOUNTED; break; case IP_COMMAND: @@ -333,9 +458,9 @@ run_command(struct cfjail *j, enum intpa argv[argc] = NULL; } } - if (argv[0] == NULL) - goto next_comstring; + return 0; + if (int_param(j->intparams[IP_EXEC_TIMEOUT], &timeout) && timeout != 0) { clock_gettime(CLOCK_REALTIME, &j->timeout); @@ -399,6 +524,7 @@ run_command(struct cfjail *j, enum intpa if (bg) setsid(); + /* Set up the environment and run the command */ pwd = NULL; lcap = NULL; if ((clean || username) && injail && sjuser && @@ -462,106 +588,6 @@ run_command(struct cfjail *j, enum intpa } /* - * Check command exit status - */ -int -finish_command(struct cfjail *j) -{ - int error; - - if (!(j->flags & JF_SLEEPQ)) - return 0; - j->flags &= ~JF_SLEEPQ; - if (j->comparam != IP_STOP_TIMEOUT) { - paralimit++; - if (!TAILQ_EMPTY(&runnable)) - requeue(TAILQ_FIRST(&runnable), &ready); - } - error = 0; - if (j->flags & JF_TIMEOUT) { - j->flags &= ~JF_TIMEOUT; - if (j->comparam != IP_STOP_TIMEOUT) { - jail_warnx(j, "%s: timed out", j->comline); - failed(j); - error = -1; - } else if (verbose > 0) - jail_note(j, "timed out\n"); - } else if (j->pstatus != 0) { - if (WIFSIGNALED(j->pstatus)) - jail_warnx(j, "%s: exited on signal %d", - j->comline, WTERMSIG(j->pstatus)); - else - jail_warnx(j, "%s: failed", j->comline); - j->pstatus = 0; - failed(j); - error = -1; - } - free(j->comline); - j->comline = NULL; - return error; -} - -/* - * Check for finished processed or timeouts. - */ -struct cfjail * -next_proc(int nonblock) -{ - struct kevent ke; - struct timespec ts; - struct timespec *tsp; - struct cfjail *j; - - if (!TAILQ_EMPTY(&sleeping)) { - again: - tsp = NULL; - if ((j = TAILQ_FIRST(&sleeping)) && j->timeout.tv_sec) { - clock_gettime(CLOCK_REALTIME, &ts); - ts.tv_sec = j->timeout.tv_sec - ts.tv_sec; - ts.tv_nsec = j->timeout.tv_nsec - ts.tv_nsec; - if (ts.tv_nsec < 0) { - ts.tv_sec--; - ts.tv_nsec += 1000000000; - } - if (ts.tv_sec < 0 || - (ts.tv_sec == 0 && ts.tv_nsec == 0)) { - j->flags |= JF_TIMEOUT; - clear_procs(j); - return j; - } - tsp = &ts; - } - if (nonblock) { - ts.tv_sec = 0; - ts.tv_nsec = 0; - tsp = &ts; - } - switch (kevent(kq, NULL, 0, &ke, 1, tsp)) { - case -1: - if (errno != EINTR) - err(1, "kevent"); - goto again; - case 0: - if (!nonblock) { - j = TAILQ_FIRST(&sleeping); - j->flags |= JF_TIMEOUT; - clear_procs(j); - return j; - } - break; - case 1: - (void)waitpid(ke.ident, NULL, WNOHANG); - if ((j = find_proc(ke.ident))) { - j->pstatus = ke.data; - return j; - } - goto again; - } - } - return NULL; -} - -/* * Add a process to the hash, tied to a jail. */ static void Modified: projects/jailconf/usr.sbin/jail/config.c ============================================================================== --- projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:06:13 2011 (r223188) +++ projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:18:44 2011 (r223189) @@ -87,6 +87,7 @@ static const struct ipspec intparams[] = [IP__IP6_IFADDR] = {"ip6.addr", PF_INTERNAL | PF_CONV}, #endif [IP__MOUNT_FROM_FSTAB] = {"mount.fstab", PF_INTERNAL | PF_CONV}, + [IP__OP] = {NULL, PF_CONV}, [KP_ALLOW_CHFLAGS] = {"allow.chflags", 0}, [KP_ALLOW_MOUNT] = {"allow.mount", 0}, [KP_ALLOW_RAW_SOCKETS] = {"allow.raw_sockets", 0}, Modified: projects/jailconf/usr.sbin/jail/jail.c ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:06:13 2011 (r223188) +++ projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:18:44 2011 (r223189) @@ -78,6 +78,41 @@ static struct permspec perm_sysctl[] = { { "security.jail.socket_unixiproute_only", KP_ALLOW_SOCKET_AF, 1 }, }; +static const enum intparam startcommands[] = { + 0, + IP__IP4_IFADDR, +#ifdef INET6 + IP__IP6_IFADDR, +#endif + IP_MOUNT, + IP__MOUNT_FROM_FSTAB, + IP_MOUNT_DEVFS, + IP_EXEC_PRESTART, + IP__OP, + IP_VNET_INTERFACE, + IP_EXEC_START, + IP_COMMAND, + IP_EXEC_POSTSTART, + 0 +}; + +static const enum intparam stopcommands[] = { + 0, + IP_EXEC_PRESTOP, + IP_EXEC_STOP, + IP_STOP_TIMEOUT, + IP__OP, + IP_EXEC_POSTSTOP, + IP_MOUNT_DEVFS, + IP__MOUNT_FROM_FSTAB, + IP_MOUNT, +#ifdef INET6 + IP__IP6_IFADDR, +#endif + IP__IP4_IFADDR, + 0 +}; + int main(int argc, char **argv) { @@ -290,25 +325,11 @@ main(int argc, char **argv) while ((j = next_jail())) { if (j->flags & JF_FAILED) { - clear_persist(j); - if (j->flags & JF_MOUNTED) { - (void)run_command(j, IP_MOUNT_DEVFS); - if (run_command(j, IP__MOUNT_FROM_FSTAB)) - while (run_command(j, 0)) ; - if (run_command(j, IP_MOUNT)) - while (run_command(j, 0)) ; - } - if (j->flags & JF_IFUP) { - if (run_command(j, IP__IP4_IFADDR)) - while (run_command(j, 0)) ; -#ifdef INET6 - if (run_command(j, IP__IP6_IFADDR)) - while (run_command(j, 0)) ; -#endif - } error = 1; - dep_done(j, 0); - continue; + if (j->comparam == NULL) { + dep_done(j, 0); + continue; + } } if (!(j->flags & JF_PARAMS)) { @@ -326,7 +347,7 @@ main(int argc, char **argv) (j->flags & (JF_SET | JF_DEPEND)) == JF_SET ? dflag || bool_param(j->intparams[IP_ALLOW_DYING]) : 0); - if (finish_command(j) || run_command(j, 0)) + if (finish_command(j)) continue; switch (j->flags & JF_OP_MASK) { @@ -356,17 +377,7 @@ main(int argc, char **argv) switch (j->flags & JF_OP_MASK) { case JF_START: - /* - * 1: check existence and dependencies - * 2: configure IP addresses - * 3: run any exec.prestart commands - * 4: create the jail - * 5: configure vnet interfaces - * 6: run any exec.start or "command" commands - * 7: run any exec.poststart commands - */ - switch (j->comparam) { - default: + if (j->comparam == NULL) { if (j->jid > 0 && !(j->flags & (JF_DEPEND | JF_WILD))) { warnx("\"%s\" already exists", j->name); @@ -377,70 +388,38 @@ main(int argc, char **argv) continue; if (j->jid > 0) goto jail_create_done; - if (run_command(j, IP__IP4_IFADDR)) - continue; - /* FALLTHROUGH */ - case IP__IP4_IFADDR: -#ifdef INET6 - if (run_command(j, IP__IP6_IFADDR)) - continue; - /* FALLTHROUGH */ - case IP__IP6_IFADDR: -#endif - if (run_command(j, IP_MOUNT)) - continue; - /* FALLTHROUGH */ - case IP_MOUNT: - if (run_command(j, - IP__MOUNT_FROM_FSTAB)) - continue; - /* FALLTHROUGH */ - case IP__MOUNT_FROM_FSTAB: - if (run_command(j, IP_MOUNT_DEVFS)) - continue; - /* FALLTHROUGH */ - case IP_MOUNT_DEVFS: - if (run_command(j, IP_EXEC_PRESTART)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_PRESTART: - if (create_jail(j) < 0) - continue; - if (iflag) - printf("%d\n", j->jid); - if (jfp != NULL) - print_jail(jfp, j, oldcl); - if (verbose >= 0 && (j->name || verbose > 0)) - jail_note(j, "created\n"); - dep_done(j, DF_LIGHT); - if (bool_param(j->intparams[KP_VNET]) && - run_command(j, IP_VNET_INTERFACE)) - continue; - /* FALLTHROUGH */ - case IP_VNET_INTERFACE: - if (run_command(j, IP_EXEC_START)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_START: - if (run_command(j, IP_COMMAND)) - continue; - /* FALLTHROUGH */ - case IP_COMMAND: - if (run_command(j, IP_EXEC_POSTSTART)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_POSTSTART: - jail_create_done: - clear_persist(j); - dep_done(j, 0); + j->comparam == startcommands + 1; + } else if (*j->comparam == IP__OP) { + if (j->flags & JF_FAILED) { + if (jail_remove(j->jid) == 0 && + verbose >= 0 && + (j->name || verbose > 0)) + jail_note(j, "removed\n"); + j->jid = -1; + j->flags &= ~JF_PERSIST; + j->comparam--; + } else if (create_jail(j) < 0) { + j->comparam--; + } else { + if (verbose >= 0 && + (j->name || verbose > 0)) + jail_note(j, "created\n"); + dep_done(j, DF_LIGHT); + j->comparam++; + } } + if (next_command(j)) + continue; + jail_create_done: + clear_persist(j); + if (iflag) + printf("%d\n", j->jid); + if (jfp != NULL) + print_jail(jfp, j, oldcl); + dep_done(j, 0); break; case JF_SET: - /* - * 1: check existence and dependencies - * 2: update the jail - */ if (j->jid < 0 && !(j->flags & JF_DEPEND)) { warnx("\"%s\" not found", j->name); failed(j); @@ -460,17 +439,7 @@ main(int argc, char **argv) case JF_STOP: case JF_RESTART: - /* - * 1: check dependencies and existence (note order) - * 2: run any exec.prestop commands - * 3: run any exec.stop commands - * 4: send SIGTERM to all jail processes - * 5: remove the jail - * 6: run any exec.poststop commands - * 7: take down IP addresses - */ - switch (j->comparam) { - default: + if (j->comparam == NULL) { if (dep_check(j)) continue; if (j->jid < 0) { @@ -480,60 +449,28 @@ main(int argc, char **argv) j->name); goto jail_remove_done; } - if (run_command(j, IP_EXEC_PRESTOP)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_PRESTOP: - if (run_command(j, IP_EXEC_STOP)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_STOP: - if (run_command(j, IP_STOP_TIMEOUT)) - continue; - /* FALLTHROUGH */ - case IP_STOP_TIMEOUT: - (void)jail_remove(j->jid); - j->jid = -1; - if (verbose >= 0 && + j->comparam == stopcommands + 1; + } else if ((j->flags & JF_FAILED) && j->jid > 0) { + goto jail_remove_done; + } else if (*j->comparam == IP__OP) { + if (jail_remove(j->jid) == 0 && + verbose >= 0 && (docf || argc > 1 || wild_jail_name(argv[0]) || verbose > 0)) jail_note(j, "removed\n"); + j->jid = -1; dep_done(j, DF_LIGHT); - if (run_command(j, IP_EXEC_POSTSTOP)) - continue; - /* FALLTHROUGH */ - case IP_EXEC_POSTSTOP: - if (run_command(j, IP_MOUNT_DEVFS)) - continue; - /* FALLTHROUGH */ - case IP_MOUNT_DEVFS: - if (run_command(j, IP__MOUNT_FROM_FSTAB)) - continue; - /* FALLTHROUGH */ - case IP__MOUNT_FROM_FSTAB: - if (run_command(j, IP_MOUNT)) - continue; - /* FALLTHROUGH */ - case IP_MOUNT: - if (run_command(j, IP__IP4_IFADDR)) - continue; - /* FALLTHROUGH */ - case IP__IP4_IFADDR: -#ifdef INET6 - if (run_command(j, IP__IP6_IFADDR)) - continue; - /* FALLTHROUGH */ - case IP__IP6_IFADDR: -#endif - jail_remove_done: - dep_done(j, 0); - if (j->flags & JF_START) { - j->comparam = 0; - j->flags &= ~JF_STOP; - dep_reset(j); - requeue(j, - j->ndeps ? &depend : &ready); - } + j->comparam++; + } + if (next_command(j)) + continue; + jail_remove_done: + dep_done(j, 0); + if ((j->flags & (JF_START | JF_FAILED)) == JF_START) { + j->comparam = NULL; + j->flags &= ~JF_STOP; + dep_reset(j); + requeue(j, j->ndeps ? &depend : &ready); } break; } Modified: projects/jailconf/usr.sbin/jail/jailp.h ============================================================================== --- projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:06:13 2011 (r223188) +++ projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:18:44 2011 (r223189) @@ -59,11 +59,9 @@ #define JF_FAILED 0x0020 /* Operation failed */ #define JF_PARAMS 0x0040 /* Parameters checked and imported */ #define JF_RDTUN 0x0080 /* Create-only parameter check has been done */ -#define JF_IFUP 0x0100 /* IP addresses have been configured */ -#define JF_MOUNTED 0x0200 /* Filesystems have been mounted */ -#define JF_PERSIST 0x0400 /* Jail is temporarily persistent */ -#define JF_TIMEOUT 0x0800 /* A command (or process kill) timed out */ -#define JF_SLEEPQ 0x2000 /* Waiting on a command and/or timeout */ +#define JF_PERSIST 0x0100 /* Jail is temporarily persistent */ +#define JF_TIMEOUT 0x0200 /* A command (or process kill) timed out */ +#define JF_SLEEPQ 0x0400 /* Waiting on a command and/or timeout */ #define JF_OP_MASK (JF_START | JF_SET | JF_STOP) #define JF_RESTART (JF_START | JF_STOP) @@ -102,6 +100,7 @@ enum intparam { IP__IP6_IFADDR, /* Copy of ip6.addr with interface/prefixlen */ #endif IP__MOUNT_FROM_FSTAB, /* Line from mount.fstab file */ + IP__OP, /* Placeholder for requested operation */ KP_ALLOW_CHFLAGS, KP_ALLOW_MOUNT, KP_ALLOW_RAW_SOCKETS, @@ -164,7 +163,7 @@ struct cfjail { struct cfstring *comstring; struct jailparam *jp; struct timespec timeout; - enum intparam comparam; + const enum intparam *comparam; unsigned flags; int jid; int seq; @@ -187,7 +186,7 @@ extern void failed(struct cfjail *j); extern void jail_note(const struct cfjail *j, const char *fmt, ...); extern void jail_warnx(const struct cfjail *j, const char *fmt, ...); -extern int run_command(struct cfjail *j, enum intparam comparam); +extern int next_command(struct cfjail *j); extern int finish_command(struct cfjail *j); extern struct cfjail *next_proc(int nonblock); From owner-svn-src-projects@FreeBSD.ORG Fri Jun 17 16:21:03 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9257D106566C; Fri, 17 Jun 2011 16:21:03 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 822218FC1B; Fri, 17 Jun 2011 16:21:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HGL334097938; Fri, 17 Jun 2011 16:21:03 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HGL396097928; Fri, 17 Jun 2011 16:21:03 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201106171621.p5HGL396097928@svn.freebsd.org> From: Jamie Gritton Date: Fri, 17 Jun 2011 16:21:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223190 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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, 17 Jun 2011 16:21:03 -0000 Author: jamie Date: Fri Jun 17 16:21:03 2011 New Revision: 223190 URL: http://svn.freebsd.org/changeset/base/223190 Log: Update copyright dates and other whitespacey stuff. Modified: projects/jailconf/usr.sbin/jail/command.c projects/jailconf/usr.sbin/jail/config.c projects/jailconf/usr.sbin/jail/jail.8 projects/jailconf/usr.sbin/jail/jail.c projects/jailconf/usr.sbin/jail/jail.conf.5 projects/jailconf/usr.sbin/jail/jaillex.l projects/jailconf/usr.sbin/jail/jailp.h projects/jailconf/usr.sbin/jail/jailparse.y projects/jailconf/usr.sbin/jail/state.c Modified: projects/jailconf/usr.sbin/jail/command.c ============================================================================== --- projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/command.c Fri Jun 17 16:21:03 2011 (r223190) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2010 James Gritton + * Copyright (c) 2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/config.c ============================================================================== --- projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/config.c Fri Jun 17 16:21:03 2011 (r223190) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2010 James Gritton + * Copyright (c) 2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/jail.8 ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.8 Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jail.8 Fri Jun 17 16:21:03 2011 (r223190) @@ -1,5 +1,5 @@ .\" Copyright (c) 2000, 2003 Robert N. M. Watson -.\" Copyright (c) 2008, 2010 James Gritton +.\" Copyright (c) 2008-2011 James Gritton .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/jail.c ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jail.c Fri Jun 17 16:21:03 2011 (r223190) @@ -1,6 +1,6 @@ /*- * Copyright (c) 1999 Poul-Henning Kamp. - * Copyright (c) 2009-2010 James Gritton + * Copyright (c) 2009-2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -70,12 +70,12 @@ static void quoted_print(FILE *fp, char static void usage(void); static struct permspec perm_sysctl[] = { - { "security.jail.set_hostname_allowed", KP_ALLOW_SET_HOSTNAME, 0 }, - { "security.jail.sysvipc_allowed", KP_ALLOW_SYSVIPC, 0 }, - { "security.jail.allow_raw_sockets", KP_ALLOW_RAW_SOCKETS, 0 }, - { "security.jail.chflags_allowed", KP_ALLOW_CHFLAGS, 0 }, - { "security.jail.mount_allowed", KP_ALLOW_MOUNT, 0 }, - { "security.jail.socket_unixiproute_only", KP_ALLOW_SOCKET_AF, 1 }, + { "security.jail.set_hostname_allowed", KP_ALLOW_SET_HOSTNAME, 0 }, + { "security.jail.sysvipc_allowed", KP_ALLOW_SYSVIPC, 0 }, + { "security.jail.allow_raw_sockets", KP_ALLOW_RAW_SOCKETS, 0 }, + { "security.jail.chflags_allowed", KP_ALLOW_CHFLAGS, 0 }, + { "security.jail.mount_allowed", KP_ALLOW_MOUNT, 0 }, + { "security.jail.socket_unixiproute_only", KP_ALLOW_SOCKET_AF, 1 }, }; static const enum intparam startcommands[] = { @@ -423,7 +423,7 @@ main(int argc, char **argv) if (j->jid < 0 && !(j->flags & JF_DEPEND)) { warnx("\"%s\" not found", j->name); failed(j); - continue;; + continue; } if (dep_check(j)) continue; Modified: projects/jailconf/usr.sbin/jail/jail.conf.5 ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.conf.5 Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jail.conf.5 Fri Jun 17 16:21:03 2011 (r223190) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010 James Gritton +.\" Copyright (c) 2011 James Gritton .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/jaillex.l ============================================================================== --- projects/jailconf/usr.sbin/jail/jaillex.l Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jaillex.l Fri Jun 17 16:21:03 2011 (r223190) @@ -1,6 +1,6 @@ %{ /*- - * Copyright (c) 2010 James Gritton + * Copyright (c) 2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/jailp.h ============================================================================== --- projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jailp.h Fri Jun 17 16:21:03 2011 (r223190) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2010 James Gritton. + * Copyright (c) 2011 James Gritton. * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/jailparse.y ============================================================================== --- projects/jailconf/usr.sbin/jail/jailparse.y Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/jailparse.y Fri Jun 17 16:21:03 2011 (r223190) @@ -1,6 +1,6 @@ %{ /*- - * Copyright (c) 2010 James Gritton + * Copyright (c) 2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without Modified: projects/jailconf/usr.sbin/jail/state.c ============================================================================== --- projects/jailconf/usr.sbin/jail/state.c Fri Jun 17 16:18:44 2011 (r223189) +++ projects/jailconf/usr.sbin/jail/state.c Fri Jun 17 16:21:03 2011 (r223190) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2010 James Gritton + * Copyright (c) 2011 James Gritton * All rights reserved. * * Redistribution and use in source and binary forms, with or without From owner-svn-src-projects@FreeBSD.ORG Sat Jun 18 15:23:09 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 620E51065670; Sat, 18 Jun 2011 15:23:09 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5284C8FC18; Sat, 18 Jun 2011 15:23:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IFN9WP046768; Sat, 18 Jun 2011 15:23:09 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IFN9UJ046764; Sat, 18 Jun 2011 15:23:09 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201106181523.p5IFN9UJ046764@svn.freebsd.org> From: Jamie Gritton Date: Sat, 18 Jun 2011 15:23:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223263 - projects/jailconf/usr.sbin/jail X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 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: Sat, 18 Jun 2011 15:23:09 -0000 Author: jamie Date: Sat Jun 18 15:23:08 2011 New Revision: 223263 URL: http://svn.freebsd.org/changeset/base/223263 Log: Move the actual create/remove (IP__OP) handling into run_command, and the cost of an ugly single-use global variable. Modified: projects/jailconf/usr.sbin/jail/command.c projects/jailconf/usr.sbin/jail/jail.c projects/jailconf/usr.sbin/jail/jailp.h Modified: projects/jailconf/usr.sbin/jail/command.c ============================================================================== --- projects/jailconf/usr.sbin/jail/command.c Sat Jun 18 13:56:33 2011 (r223262) +++ projects/jailconf/usr.sbin/jail/command.c Sat Jun 18 15:23:08 2011 (r223263) @@ -94,7 +94,7 @@ next_command(struct cfjail *j) rval = 0; create_failed = (j->flags & (JF_STOP | JF_FAILED)) == JF_FAILED; - for (; (comparam = *j->comparam) && comparam != IP__OP; + for (; (comparam = *j->comparam); j->comparam += create_failed ? -1 : 1) { if (j->comstring == NULL) { switch (comparam) { @@ -102,6 +102,7 @@ next_command(struct cfjail *j) if (!bool_param(j->intparams[IP_MOUNT_DEVFS])) continue; /* FALLTHROUGH */ + case IP__OP: case IP_STOP_TIMEOUT: j->comstring = &dummystring; break; @@ -256,19 +257,43 @@ run_command(struct cfjail *j) static char *cleanenv; + /* Perform some operations that aren't actually commands */ + comparam = *j->comparam; + down = j->flags & (JF_STOP | JF_FAILED); + switch (comparam) { + case IP_STOP_TIMEOUT: + return term_procs(j); + + case IP__OP: + if (down) { + if (jail_remove(j->jid) == 0 && verbose >= 0 && + (verbose > 0 || (j->flags & JF_STOP + ? note_remove : j->name != NULL))) + jail_note(j, "removed\n"); + j->jid = -1; + if (j->flags & JF_STOP) + dep_done(j, DF_LIGHT); + else + j->flags &= ~JF_PERSIST; + } else { + if (create_jail(j) < 0) { + failed(j); + return -1; + } + if (verbose >= 0 && (j->name || verbose > 0)) + jail_note(j, "created\n"); + dep_done(j, DF_LIGHT); + } + requeue(j, &ready); + return 1; + } /* * Collect exec arguments. Internal commands for network and * mounting build their own argument lists. */ - comparam = *j->comparam; comstring = j->comstring; bg = 0; - down = j->flags & (JF_STOP | JF_FAILED); switch (comparam) { - case IP_STOP_TIMEOUT: - /* This isn't really a command */ - return term_procs(j); - case IP__IP4_IFADDR: argv = alloca(8 * sizeof(char *)); *(const char **)&argv[0] = _PATH_IFCONFIG; Modified: projects/jailconf/usr.sbin/jail/jail.c ============================================================================== --- projects/jailconf/usr.sbin/jail/jail.c Sat Jun 18 13:56:33 2011 (r223262) +++ projects/jailconf/usr.sbin/jail/jail.c Sat Jun 18 15:23:08 2011 (r223263) @@ -55,9 +55,9 @@ struct permspec { }; const char *cfname; +int note_remove; int verbose; -static int create_jail(struct cfjail *j); static void clear_persist(struct cfjail *j); static int update_jail(struct cfjail *j); static int rdtun_params(struct cfjail *j, int dofail); @@ -271,6 +271,7 @@ main(int argc, char **argv) if ((docf = !Rflag && (!strcmp(cfname, "-") || stat(cfname, &st) == 0))) load_config(); + note_remove = docf || argc > 1 || wild_jail_name(argv[0]); } else if (argc > 1 || (argc == 1 && strchr(argv[0], '='))) { /* Single jail specified on the command line */ if (Rflag) @@ -388,25 +389,7 @@ main(int argc, char **argv) continue; if (j->jid > 0) goto jail_create_done; - j->comparam == startcommands + 1; - } else if (*j->comparam == IP__OP) { - if (j->flags & JF_FAILED) { - if (jail_remove(j->jid) == 0 && - verbose >= 0 && - (j->name || verbose > 0)) - jail_note(j, "removed\n"); - j->jid = -1; - j->flags &= ~JF_PERSIST; - j->comparam--; - } else if (create_jail(j) < 0) { - j->comparam--; - } else { - if (verbose >= 0 && - (j->name || verbose > 0)) - jail_note(j, "created\n"); - dep_done(j, DF_LIGHT); - j->comparam++; - } + j->comparam = startcommands + 1; } if (next_command(j)) continue; @@ -449,19 +432,9 @@ main(int argc, char **argv) j->name); goto jail_remove_done; } - j->comparam == stopcommands + 1; - } else if ((j->flags & JF_FAILED) && j->jid > 0) { + j->comparam = stopcommands + 1; + } else if ((j->flags & JF_FAILED) && j->jid > 0) goto jail_remove_done; - } else if (*j->comparam == IP__OP) { - if (jail_remove(j->jid) == 0 && - verbose >= 0 && - (docf || argc > 1 || - wild_jail_name(argv[0]) || verbose > 0)) - jail_note(j, "removed\n"); - j->jid = -1; - dep_done(j, DF_LIGHT); - j->comparam++; - } if (next_command(j)) continue; jail_remove_done: @@ -578,7 +551,7 @@ jail_warnx(const struct cfjail *j, const /* * Create a new jail. */ -static int +int create_jail(struct cfjail *j) { struct iovec jiov[4]; @@ -595,17 +568,14 @@ create_jail(struct cfjail *j) if (path[0] != '/') { jail_warnx(j, "path %s: not an absolute pathname", path); - failed(j); return -1; } if (stat(path, &st) < 0) { jail_warnx(j, "path %s: %s", path, strerror(errno)); - failed(j); return -1; } if (!S_ISDIR(st.st_mode)) { jail_warnx(j, "path %s: %s", path, strerror(ENOTDIR)); - failed(j); return -1; } } @@ -621,7 +591,6 @@ create_jail(struct cfjail *j) alloca((j->njp + dopersist) * sizeof(struct jailparam)); if (dopersist && jailparam_init(sjp++, "persist") < 0) { jail_warnx(j, "%s", jail_errmsg); - failed(j); return -1; } for (jp = j->jp; jp < j->jp + j->njp; jp++) Modified: projects/jailconf/usr.sbin/jail/jailp.h ============================================================================== --- projects/jailconf/usr.sbin/jail/jailp.h Sat Jun 18 13:56:33 2011 (r223262) +++ projects/jailconf/usr.sbin/jail/jailp.h Sat Jun 18 15:23:08 2011 (r223263) @@ -182,6 +182,7 @@ struct cfdepend { extern void *emalloc(size_t); extern void *erealloc(void *, size_t); extern char *estrdup(const char *); +extern int create_jail(struct cfjail *j); extern void failed(struct cfjail *j); extern void jail_note(const struct cfjail *j, const char *fmt, ...); extern void jail_warnx(const struct cfjail *j, const char *fmt, ...); @@ -219,5 +220,6 @@ extern struct cfjails cfjails; extern struct cfjails ready; extern struct cfjails depend; extern const char *cfname; +extern int note_remove; extern int paralimit; extern int verbose;