svn commit: r317778 - in projects/clang500-import: contrib/compiler-rt/include/sanitizer contrib/compiler-rt/include/xray contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/lsan contrib/compiler-...
Dimitry Andric
dim at FreeBSD.org
Wed May 3 21:55:00 UTC 2017
Author: dim
Date: Wed May 3 21:54:55 2017
New Revision: 317778
URL: https://svnweb.freebsd.org/changeset/base/317778
Log:
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r302069, and update
build glue (preliminary, not all option combinations work yet).
Added:
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls.h
- copied unchanged from r317773, vendor/compiler-rt/dist/lib/scudo/scudo_tls.h
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp
- copied unchanged from r317773, vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.cpp
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.h
- copied unchanged from r317773, vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugFragment.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragment.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentRecord.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentRecord.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentVisitor.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentVisitor.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugLineFragment.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugLineFragment.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleDebugUnknownFragment.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugUnknownFragment.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/StringTable.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/StringTable.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
- copied unchanged from r317771, vendor/llvm/dist/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineFrameInfo.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/CodeGen/MachineFrameInfo.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugFragment.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragment.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugFragmentRecord.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragmentRecord.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugFragmentVisitor.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragmentVisitor.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugLineFragment.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugLineFragment.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleDebugUnknownFragment.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugUnknownFragment.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/StringTable.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/CodeView/StringTable.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFVerifier.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptor.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiModuleDescriptor.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBStringTable.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBStringTable.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBStringTableBuilder.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBStringTableBuilder.cpp
projects/clang500-import/contrib/llvm/lib/Support/Unix/DynamicLibrary.inc
- copied unchanged from r317771, vendor/llvm/dist/lib/Support/Unix/DynamicLibrary.inc
projects/clang500-import/contrib/llvm/lib/Target/Mips/MicroMipsSizeReduction.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/Target/Mips/MicroMipsSizeReduction.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
- copied unchanged from r317771, vendor/llvm/dist/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/ASTStructuralEquivalence.h
- copied unchanged from r317771, vendor/clang/dist/include/clang/AST/ASTStructuralEquivalence.h
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTStructuralEquivalence.cpp
- copied unchanged from r317771, vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/MainLoop.cpp
- copied unchanged from r317771, vendor/lldb/dist/source/Host/common/MainLoop.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/C13DebugFragmentVisitor.cpp
- copied unchanged from r317771, vendor/llvm/dist/tools/llvm-pdbdump/C13DebugFragmentVisitor.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/C13DebugFragmentVisitor.h
- copied unchanged from r317771, vendor/llvm/dist/tools/llvm-pdbdump/C13DebugFragmentVisitor.h
Deleted:
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleSubstream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/ModuleSubstreamVisitor.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModInfo.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModInfoBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModStream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/StringTable.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/StringTableBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/Object/ModuleSummaryIndexObjectFile.h
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleSubstream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModInfo.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModInfoBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModStream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/StringTable.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/StringTableBuilder.cpp
projects/clang500-import/contrib/llvm/lib/Object/ModuleSummaryIndexObjectFile.cpp
projects/clang500-import/contrib/llvm/lib/Support/SearchForAddressOfSpecialSymbol.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstructionSelector.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/posix/MainLoopPosix.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/MainLoopPosix.cpp
Modified:
projects/clang500-import/contrib/compiler-rt/include/sanitizer/tsan_interface.h
projects/clang500-import/contrib/compiler-rt/include/xray/xray_log_interface.h
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_globals.cc
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface.inc
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h
projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_utils.cpp
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_utils.h
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_defs.h
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_external.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface.h
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_interface_ann.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.h
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.h
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_report.cc
projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_diag.cc
projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
projects/clang500-import/contrib/compiler-rt/lib/xray/xray_log_interface.cc
projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/CGSCCPassManager.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/CallGraph.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/IVUsers.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/InlineCost.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemoryBuiltins.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
projects/clang500-import/contrib/llvm/include/llvm/Bitcode/BitcodeReader.h
projects/clang500-import/contrib/llvm/include/llvm/Bitcode/LLVMBitCodes.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/CommandFlags.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MIRYamlMapping.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ValueTypes.td
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CodeView.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/Line.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DIContext.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBFile.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/RawTypes.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/Symbolize.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Argument.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.td
projects/clang500-import/contrib/llvm/include/llvm/IR/CallSite.h
projects/clang500-import/contrib/llvm/include/llvm/IR/CallingConv.h
projects/clang500-import/contrib/llvm/include/llvm/IR/DIBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/IR/DebugInfoMetadata.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Function.h
projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.h
projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicInst.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Intrinsics.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Intrinsics.td
projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsX86.td
projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndex.h
projects/clang500-import/contrib/llvm/include/llvm/IR/ValueHandle.h
projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h
projects/clang500-import/contrib/llvm/include/llvm/MC/ConstantPools.h
projects/clang500-import/contrib/llvm/include/llvm/MC/LaneBitmask.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCAssembler.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCContext.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCDwarf.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCExpr.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCFragment.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCInst.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCLinkerOptimizationHint.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCParser/MCAsmParser.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCRegisterInfo.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCSection.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCSectionWasm.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCStreamer.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCSubtargetInfo.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCSymbol.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCWasmObjectWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Object/Binary.h
projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h
projects/clang500-import/contrib/llvm/include/llvm/Object/COFFImportFile.h
projects/clang500-import/contrib/llvm/include/llvm/Object/ELF.h
projects/clang500-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamArray.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamReader.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamRef.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Support/DataExtractor.h
projects/clang500-import/contrib/llvm/include/llvm/Support/DynamicLibrary.h
projects/clang500-import/contrib/llvm/include/llvm/Support/ELFRelocs/AArch64.def
projects/clang500-import/contrib/llvm/include/llvm/Support/ELFRelocs/Hexagon.def
projects/clang500-import/contrib/llvm/include/llvm/Support/KnownBits.h
projects/clang500-import/contrib/llvm/include/llvm/Support/LEB128.h
projects/clang500-import/contrib/llvm/include/llvm/Support/ScopedPrinter.h
projects/clang500-import/contrib/llvm/include/llvm/Support/StringSaver.h
projects/clang500-import/contrib/llvm/include/llvm/Support/Wasm.h
projects/clang500-import/contrib/llvm/include/llvm/Target/Target.td
projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLowering.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/NaryReassociate.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/Cloning.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/Local.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/ModuleUtils.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/SimplifyIndVar.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h
projects/clang500-import/contrib/llvm/lib/Analysis/AssumptionCache.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/CFLGraph.h
projects/clang500-import/contrib/llvm/lib/Analysis/CallGraphSCCPass.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/DemandedBits.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/InlineCost.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/LazyValueInfo.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/Lint.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/PHITransAddr.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/TargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
projects/clang500-import/contrib/llvm/lib/AsmParser/LLLexer.cpp
projects/clang500-import/contrib/llvm/lib/AsmParser/LLParser.cpp
projects/clang500-import/contrib/llvm/lib/AsmParser/LLToken.h
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/ValueList.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/ValueList.h
projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h
projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MIRPrinter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineFunction.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/PrologEpilogInserter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/StackMaps.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/TargetLoweringBase.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/UnreachableBlockElim.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/EnumTables.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugPubTable.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFGdbIndex.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStreamBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFileBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/Symbolize/Symbolize.cpp
projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Interpreter/Execution.cpp
projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
projects/clang500-import/contrib/llvm/lib/IR/AsmWriter.cpp
projects/clang500-import/contrib/llvm/lib/IR/Attributes.cpp
projects/clang500-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
projects/clang500-import/contrib/llvm/lib/IR/ConstantRange.cpp
projects/clang500-import/contrib/llvm/lib/IR/DIBuilder.cpp
projects/clang500-import/contrib/llvm/lib/IR/DebugInfoMetadata.cpp
projects/clang500-import/contrib/llvm/lib/IR/Function.cpp
projects/clang500-import/contrib/llvm/lib/IR/IRBuilder.cpp
projects/clang500-import/contrib/llvm/lib/IR/Instructions.cpp
projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.h
projects/clang500-import/contrib/llvm/lib/IR/Metadata.cpp
projects/clang500-import/contrib/llvm/lib/IR/ModuleSummaryIndex.cpp
projects/clang500-import/contrib/llvm/lib/IR/Value.cpp
projects/clang500-import/contrib/llvm/lib/IR/Verifier.cpp
projects/clang500-import/contrib/llvm/lib/LTO/LTO.cpp
projects/clang500-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
projects/clang500-import/contrib/llvm/lib/MC/ELFObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCCodeView.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCObjectFileInfo.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCParser/MCAsmLexer.cpp
projects/clang500-import/contrib/llvm/lib/MC/StringTableBuilder.cpp
projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/MC/WinCOFFObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/Object/ELF.cpp
projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp
projects/clang500-import/contrib/llvm/lib/Passes/PassRegistry.def
projects/clang500-import/contrib/llvm/lib/Support/APInt.cpp
projects/clang500-import/contrib/llvm/lib/Support/BinaryStreamReader.cpp
projects/clang500-import/contrib/llvm/lib/Support/BinaryStreamWriter.cpp
projects/clang500-import/contrib/llvm/lib/Support/DataExtractor.cpp
projects/clang500-import/contrib/llvm/lib/Support/DynamicLibrary.cpp
projects/clang500-import/contrib/llvm/lib/Support/Host.cpp
projects/clang500-import/contrib/llvm/lib/Support/PrettyStackTrace.cpp
projects/clang500-import/contrib/llvm/lib/Support/ScopedPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Support/SourceMgr.cpp
projects/clang500-import/contrib/llvm/lib/Support/Triple.cpp
projects/clang500-import/contrib/llvm/lib/Support/Windows/DynamicLibrary.inc
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64CallLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64FastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.h
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600Intrinsics.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIDefines.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARM.h
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARM.td
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMCallLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRFrameLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRRegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp
projects/clang500-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.h
projects/clang500-import/contrib/llvm/lib/Target/BPF/Disassembler/BPFDisassembler.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepITypes.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepITypes.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV60.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonMachineScheduler.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonOperands.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPseudo.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonRegisterInfo.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonFixupKinds.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCExpr.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCExpr.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.h
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/RDFLiveness.cpp
projects/clang500-import/contrib/llvm/lib/Target/Lanai/LanaiRegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/Lanai/LanaiRegisterInfo.h
projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h
projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips.h
projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips16HardFloat.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsFastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrVSX.td
projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/TargetLoweringObjectFile.cpp
projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86FastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrCompiler.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86OptimizeLEAs.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86Schedule.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86SelectionDAGInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.h
projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86WinEHState.cpp
projects/clang500-import/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/XCore/XCoreLowerThreadLocal.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/FunctionImport.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/MergeFunctions.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PartialInlining.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/ObjCARC/ARCRuntimeEntryPoints.h
projects/clang500-import/contrib/llvm/lib/Transforms/ObjCARC/ObjCARC.h
projects/clang500-import/contrib/llvm/lib/Transforms/ObjCARC/PtrState.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVN.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GuardWidening.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Scalar.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LibCallsShrinkWrap.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/Local.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopSimplify.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/ModuleUtils.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyInstructions.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/Index.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Type.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Attr.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSerializationKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def
projects/clang500-import/contrib/llvm/tools/clang/include/clang/CodeGen/CGFunctionInfo.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/CLCompatOptions.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Edit/EditedSource.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandard.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/MacroInfo.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/PPCallbacks.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
projects/clang500-import/contrib/llvm/tools/clang/lib/ARCMigrate/ObjCMT.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ODRHash.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/MacroPPCallbacks.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/MacroPPCallbacks.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Job.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/SanitizerArgs.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Edit/EditedSource.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendOptions.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/LangStandards.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/avx512fintrin.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/avxintrin.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/bmiintrin.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/emmintrin.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/stdint.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Index/USRGeneration.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ValistChecker.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CommonBugCategories.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp
projects/clang500-import/contrib/llvm/tools/clang/utils/TableGen/ClangAttrEmitter.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/Error.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/ICF.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/MapFile.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Config.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/Error.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/InputSection.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/MapFile.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Options.td
projects/clang500-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/OutputSections.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/Strings.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/Module.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/TraceOptions.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/UniqueCStringMap.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Config.h.cmake
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/MainLoop.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/PosixApi.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Socket.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/TCPSocket.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/UDPSocket.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/posix/DomainSocket.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/ObjectFile.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/SymbolFile.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Symbol/Symtab.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/Target.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Module.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Socket.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/SocketAddress.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/TCPSocket.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/UDPSocket.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ConnectionFileDescriptorPosix.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/DomainSocket.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Interpreter/CommandInterpreter.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Interpreter/OptionValueEnumeration.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Interpreter/OptionValueProperties.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/NameToDIE.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/NameToDIE.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/GoASTContext.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/SymbolFile.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Symbol/Symtab.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Target.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/ConstString.cpp
projects/clang500-import/contrib/llvm/tools/lldb/tools/lldb-server/Acceptor.cpp
projects/clang500-import/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
projects/clang500-import/contrib/llvm/tools/llvm-link/llvm-link.cpp
projects/clang500-import/contrib/llvm/tools/llvm-lto/llvm-lto.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/CompactTypeDumpVisitor.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/Diff.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/PdbYaml.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/PdbYaml.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/StreamUtil.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.h
projects/clang500-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/ELFDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/ObjDumper.h
projects/clang500-import/contrib/llvm/tools/llvm-readobj/WasmDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/llvm-readobj.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/llvm-readobj.h
projects/clang500-import/contrib/llvm/tools/opt/BreakpointPrinter.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenIntrinsics.h
projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenTarget.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/GlobalISelEmitter.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/SubtargetFeatureInfo.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/SubtargetFeatureInfo.h
projects/clang500-import/contrib/llvm/utils/TableGen/X86RecognizableInstr.cpp
projects/clang500-import/lib/clang/include/clang/Basic/Version.inc
projects/clang500-import/lib/clang/include/lld/Config/Version.inc
projects/clang500-import/lib/clang/include/lldb/Host/Config.h
projects/clang500-import/lib/clang/include/llvm/Support/VCSRevision.h
projects/clang500-import/lib/clang/libclang/Makefile
projects/clang500-import/lib/clang/liblldb/Makefile
projects/clang500-import/lib/clang/libllvm/Makefile
projects/clang500-import/usr.bin/clang/llvm-pdbdump/Makefile
Directory Properties:
projects/clang500-import/contrib/compiler-rt/ (props changed)
projects/clang500-import/contrib/libc++/ (props changed)
projects/clang500-import/contrib/llvm/ (props changed)
projects/clang500-import/contrib/llvm/tools/clang/ (props changed)
projects/clang500-import/contrib/llvm/tools/lld/ (props changed)
projects/clang500-import/contrib/llvm/tools/lldb/ (props changed)
Modified: projects/clang500-import/contrib/compiler-rt/include/sanitizer/tsan_interface.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/include/sanitizer/tsan_interface.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/include/sanitizer/tsan_interface.h Wed May 3 21:54:55 2017 (r317778)
@@ -68,7 +68,8 @@ const unsigned __tsan_mutex_recursive_un
void __tsan_mutex_create(void *addr, unsigned flags);
// Annotate destruction of a mutex.
-// Supported flags: none.
+// Supported flags:
+// - __tsan_mutex_linker_init
void __tsan_mutex_destroy(void *addr, unsigned flags);
// Annotate start of lock operation.
@@ -125,6 +126,7 @@ void __tsan_mutex_post_divert(void *addr
// which is later used in read/write annotations to denote the object type
// - __tsan_external_assign_tag can optionally mark a heap object with a tag
void *__tsan_external_register_tag(const char *object_type);
+void __tsan_external_register_header(void *tag, const char *header);
void __tsan_external_assign_tag(void *addr, void *tag);
void __tsan_external_read(void *addr, void *caller_pc, void *tag);
void __tsan_external_write(void *addr, void *caller_pc, void *tag);
Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_log_interface.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/include/xray/xray_log_interface.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/include/xray/xray_log_interface.h Wed May 3 21:54:55 2017 (r317778)
@@ -10,7 +10,73 @@
// This file is a part of XRay, a function call tracing system.
//
// APIs for installing a new logging implementation.
+//
//===----------------------------------------------------------------------===//
+///
+/// XRay allows users to implement their own logging handlers and install them
+/// to replace the default runtime-controllable implementation that comes with
+/// compiler-rt/xray. The "flight data recorder" (FDR) mode implementation uses
+/// this API to install itself in an XRay-enabled binary. See
+/// compiler-rt/lib/xray_fdr_logging.{h,cc} for details of that implementation.
+///
+/// The high-level usage pattern for these APIs look like the following:
+///
+/// // Before we try initializing the log implementation, we must set it as
+/// // the log implementation. We provide the function pointers that define
+/// // the various initialization, finalization, and other pluggable hooks
+/// // that we need.
+/// __xray_set_log_impl({...});
+///
+/// // Once that's done, we can now initialize the implementation. Each
+/// // implementation has a chance to let users customize the implementation
+/// // with a struct that their implementation supports. Roughly this might
+/// // look like:
+/// MyImplementationOptions opts;
+/// opts.enable_feature = true;
+/// ...
+/// auto init_status = __xray_log_init(
+/// BufferSize, MaxBuffers, &opts, sizeof opts);
+/// if (init_status != XRayLogInitStatus::XRAY_LOG_INITIALIZED) {
+/// // deal with the error here, if there is one.
+/// }
+///
+/// // When the log implementation has had the chance to initialize, we can
+/// // now patch the sleds.
+/// auto patch_status = __xray_patch();
+/// if (patch_status != XRayPatchingStatus::SUCCESS) {
+/// // deal with the error here, if it is an error.
+/// }
+///
+/// // If we want to stop the implementation, we can then finalize it (before
+/// // optionally flushing the log).
+/// auto fin_status = __xray_log_finalize();
+/// if (fin_status != XRayLogInitStatus::XRAY_LOG_FINALIZED) {
+/// // deal with the error here, if it is an error.
+/// }
+///
+/// // We can optionally wait before flushing the log to give other threads a
+/// // chance to see that the implementation is already finalized. Also, at
+/// // this point we can optionally unpatch the sleds to reduce overheads at
+/// // runtime.
+/// auto unpatch_status = __xray_unpatch();
+/// if (unpatch_status != XRayPatchingStatus::SUCCESS) {
+// // deal with the error here, if it is an error.
+// }
+///
+/// // If there are logs or data to be flushed somewhere, we can do so only
+/// // after we've finalized the log. Some implementations may not actually
+/// // have anything to log (it might keep the data in memory, or periodically
+/// // be logging the data anyway).
+/// auto flush_status = __xray_log_flushLog();
+/// if (flush_status != XRayLogFlushStatus::XRAY_LOG_FLUSHED) {
+/// // deal with the error here, if it is an error.
+/// }
+///
+///
+/// NOTE: Before calling __xray_patch() again, consider re-initializing the
+/// implementation first. Some implementations might stay in an "off" state when
+/// they are finalized, while some might be in an invalid/unknown state.
+///
#ifndef XRAY_XRAY_LOG_INTERFACE_H
#define XRAY_XRAY_LOG_INTERFACE_H
@@ -19,36 +85,141 @@
extern "C" {
+/// This enum defines the valid states in which the logging implementation can
+/// be at.
enum XRayLogInitStatus {
+ /// The default state is uninitialized, and in case there were errors in the
+ /// initialization, the implementation MUST return XRAY_LOG_UNINITIALIZED.
XRAY_LOG_UNINITIALIZED = 0,
+
+ /// Some implementations support multi-stage init (or asynchronous init), and
+ /// may return XRAY_LOG_INITIALIZING to signal callers of the API that
+ /// there's an ongoing initialization routine running. This allows
+ /// implementations to support concurrent threads attempting to initialize,
+ /// while only signalling success in one.
XRAY_LOG_INITIALIZING = 1,
+
+ /// When an implementation is done initializing, it MUST return
+ /// XRAY_LOG_INITIALIZED. When users call `__xray_patch()`, they are
+ /// guaranteed that the implementation installed with
+ /// `__xray_set_log_impl(...)` has been initialized.
XRAY_LOG_INITIALIZED = 2,
+
+ /// Some implementations might support multi-stage finalization (or
+ /// asynchronous finalization), and may return XRAY_LOG_FINALIZING to signal
+ /// callers of the API that there's an ongoing finalization routine running.
+ /// This allows implementations to support concurrent threads attempting to
+ /// finalize, while only signalling success/completion in one.
XRAY_LOG_FINALIZING = 3,
+
+ /// When an implementation is done finalizing, it MUST return
+ /// XRAY_LOG_FINALIZED. It is up to the implementation to determine what the
+ /// semantics of a finalized implementation is. Some implementations might
+ /// allow re-initialization once the log is finalized, while some might always
+ /// be on (and that finalization is a no-op).
XRAY_LOG_FINALIZED = 4,
};
+/// This enum allows an implementation to signal log flushing operations via
+/// `__xray_log_flushLog()`, and the state of flushing the log.
enum XRayLogFlushStatus {
XRAY_LOG_NOT_FLUSHING = 0,
XRAY_LOG_FLUSHING = 1,
XRAY_LOG_FLUSHED = 2,
};
+/// A valid XRay logging implementation MUST provide all of the function
+/// pointers in XRayLogImpl when being installed through `__xray_set_log_impl`.
+/// To be precise, ALL the functions pointers MUST NOT be nullptr.
struct XRayLogImpl {
+ /// The log initialization routine provided by the implementation, always
+ /// provided with the following parameters:
+ ///
+ /// - buffer size
+ /// - maximum number of buffers
+ /// - a pointer to an argument struct that the implementation MUST handle
+ /// - the size of the argument struct
+ ///
+ /// See XRayLogInitStatus for details on what the implementation MUST return
+ /// when called.
+ ///
+ /// If the implementation needs to install handlers aside from the 0-argument
+ /// function call handler, it MUST do so in this initialization handler.
+ ///
+ /// See xray_interface.h for available handler installation routines.
XRayLogInitStatus (*log_init)(size_t, size_t, void *, size_t);
+
+ /// The log finalization routine provided by the implementation.
+ ///
+ /// See XRayLogInitStatus for details on what the implementation MUST return
+ /// when called.
XRayLogInitStatus (*log_finalize)();
+
+ /// The 0-argument function call handler. XRay logging implementations MUST
+ /// always have a handler for function entry and exit events. In case the
+ /// implementation wants to support arg1 (or other future extensions to XRay
+ /// logging) those MUST be installed by the installed 'log_init' handler.
void (*handle_arg0)(int32_t, XRayEntryType);
+
+ /// The log implementation provided routine for when __xray_log_flushLog() is
+ /// called.
+ ///
+ /// See XRayLogFlushStatus for details on what the implementation MUST return
+ /// when called.
XRayLogFlushStatus (*flush_log)();
};
+/// This function installs a new logging implementation that XRay will use. In
+/// case there are any nullptr members in Impl, XRay will *uninstall any
+/// existing implementations*. It does NOT patch the instrumentation sleds.
+///
+/// NOTE: This function does NOT attempt to finalize the currently installed
+/// implementation. Use with caution.
+///
+/// It is guaranteed safe to call this function in the following states:
+///
+/// - When the implementation is UNINITIALIZED.
+/// - When the implementation is FINALIZED.
+/// - When there is no current implementation installed.
+///
+/// It is logging implementation defined what happens when this function is
+/// called while in any other states.
void __xray_set_log_impl(XRayLogImpl Impl);
+
+/// This function removes the currently installed implementation. It will also
+/// uninstall any handlers that have been previously installed. It does NOT
+/// unpatch the instrumentation sleds.
+///
+/// NOTE: This function does NOT attempt to finalize the currently installed
+/// implementation. Use with caution.
+///
+/// It is guaranteed safe to call this function in the following states:
+///
+/// - When the implementation is UNINITIALIZED.
+/// - When the implementation is FINALIZED.
+/// - When there is no current implementation installed.
+///
+/// It is logging implementation defined what happens when this function is
+/// called while in any other states.
+void __xray_remove_log_impl();
+
+/// Invokes the installed implementation initialization routine. See
+/// XRayLogInitStatus for what the return values mean.
XRayLogInitStatus __xray_log_init(size_t BufferSize, size_t MaxBuffers,
void *Args, size_t ArgsSize);
+
+/// Invokes the installed implementation finalization routine. See
+/// XRayLogInitStatus for what the return values mean.
XRayLogInitStatus __xray_log_finalize();
+
+/// Invokes the install implementation log flushing routine. See
+/// XRayLogFlushStatus for what the return values mean.
XRayLogFlushStatus __xray_log_flushLog();
} // extern "C"
namespace __xray {
+
// Options used by the LLVM XRay FDR implementation.
struct FDRLoggingOptions {
bool ReportErrors = false;
Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_globals.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_globals.cc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_globals.cc Wed May 3 21:54:55 2017 (r317778)
@@ -332,6 +332,26 @@ void __asan_unregister_image_globals(upt
*flag = 0;
}
+void __asan_register_elf_globals(uptr *flag, void *start, void *stop) {
+ if (*flag) return;
+ if (!start) return;
+ CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global));
+ __asan_global *globals_start = (__asan_global*)start;
+ __asan_global *globals_stop = (__asan_global*)stop;
+ __asan_register_globals(globals_start, globals_stop - globals_start);
+ *flag = 1;
+}
+
+void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop) {
+ if (!*flag) return;
+ if (!start) return;
+ CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global));
+ __asan_global *globals_start = (__asan_global*)start;
+ __asan_global *globals_stop = (__asan_global*)stop;
+ __asan_unregister_globals(globals_start, globals_stop - globals_start);
+ *flag = 0;
+}
+
// Register an array of globals.
void __asan_register_globals(__asan_global *globals, uptr n) {
if (!flags()->report_globals) return;
Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Wed May 3 21:54:55 2017 (r317778)
@@ -37,12 +37,19 @@
namespace __asan {
// Return true if we can quickly decide that the region is unpoisoned.
+// We assume that a redzone is at least 16 bytes.
static inline bool QuickCheckForUnpoisonedRegion(uptr beg, uptr size) {
if (size == 0) return true;
if (size <= 32)
return !AddressIsPoisoned(beg) &&
!AddressIsPoisoned(beg + size - 1) &&
!AddressIsPoisoned(beg + size / 2);
+ if (size <= 64)
+ return !AddressIsPoisoned(beg) &&
+ !AddressIsPoisoned(beg + size / 4) &&
+ !AddressIsPoisoned(beg + size - 1) &&
+ !AddressIsPoisoned(beg + 3 * size / 4) &&
+ !AddressIsPoisoned(beg + size / 2);
return false;
}
Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface.inc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface.inc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface.inc Wed May 3 21:54:55 2017 (r317778)
@@ -64,6 +64,7 @@ INTERFACE_FUNCTION(__asan_poison_stack_m
INTERFACE_FUNCTION(__asan_print_accumulated_stats)
INTERFACE_FUNCTION(__asan_region_is_poisoned)
INTERFACE_FUNCTION(__asan_register_globals)
+INTERFACE_FUNCTION(__asan_register_elf_globals)
INTERFACE_FUNCTION(__asan_register_image_globals)
INTERFACE_FUNCTION(__asan_report_error)
INTERFACE_FUNCTION(__asan_report_exp_load1)
@@ -149,6 +150,7 @@ INTERFACE_FUNCTION(__asan_unpoison_intra
INTERFACE_FUNCTION(__asan_unpoison_memory_region)
INTERFACE_FUNCTION(__asan_unpoison_stack_memory)
INTERFACE_FUNCTION(__asan_unregister_globals)
+INTERFACE_FUNCTION(__asan_unregister_elf_globals)
INTERFACE_FUNCTION(__asan_unregister_image_globals)
INTERFACE_FUNCTION(__asan_version_mismatch_check_v8)
INTERFACE_FUNCTION(__sanitizer_finish_switch_fiber)
Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interface_internal.h Wed May 3 21:54:55 2017 (r317778)
@@ -67,6 +67,11 @@ extern "C" {
SANITIZER_INTERFACE_ATTRIBUTE
void __asan_unregister_image_globals(uptr *flag);
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __asan_register_elf_globals(uptr *flag, void *start, void *stop);
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop);
+
// These two functions should be called by the instrumented code.
// 'globals' is an array of structures describing 'n' globals.
SANITIZER_INTERFACE_ATTRIBUTE
Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_interceptors.cc Wed May 3 21:54:55 2017 (r317778)
@@ -185,6 +185,20 @@ INTERCEPTOR(void, cfree, void *p) ALIAS(
#define LSAN_MAYBE_INTERCEPT_CFREE
#endif // SANITIZER_INTERCEPT_CFREE
+#if SANITIZER_INTERCEPT_MCHECK_MPROBE
+INTERCEPTOR(int, mcheck, void (*abortfunc)(int mstatus)) {
+ return 0;
+}
+
+INTERCEPTOR(int, mcheck_pedantic, void (*abortfunc)(int mstatus)) {
+ return 0;
+}
+
+INTERCEPTOR(int, mprobe, void *ptr) {
+ return 0;
+}
+#endif // SANITIZER_INTERCEPT_MCHECK_MPROBE
+
#define OPERATOR_NEW_BODY \
ENSURE_LSAN_INITED; \
GET_STACK_TRACE_MALLOC; \
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc Wed May 3 21:54:55 2017 (r317778)
@@ -6142,6 +6142,20 @@ INTERCEPTOR(int, getloadavg, double *loa
#define INIT_GETLOADAVG
#endif
+#if SANITIZER_INTERCEPT_MCHECK_MPROBE
+INTERCEPTOR(int, mcheck, void (*abortfunc)(int mstatus)) {
+ return 0;
+}
+
+INTERCEPTOR(int, mcheck_pedantic, void (*abortfunc)(int mstatus)) {
+ return 0;
+}
+
+INTERCEPTOR(int, mprobe, void *ptr) {
+ return 0;
+}
+#endif
+
static void InitializeCommonInterceptors() {
static u64 metadata_mem[sizeof(MetadataHashMap) / sizeof(u64) + 1];
interceptor_metadata_map = new((void *)&metadata_mem) MetadataHashMap();
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_format.inc Wed May 3 21:54:55 2017 (r317778)
@@ -325,8 +325,8 @@ static void scanf_common(void *ctx, int
continue;
int size = scanf_get_value_size(&dir);
if (size == FSS_INVALID) {
- Report("WARNING: unexpected format specifier in scanf interceptor: "
- "%.*s\n", dir.end - dir.begin, dir.begin);
+ Report("%s: WARNING: unexpected format specifier in scanf interceptor: ",
+ SanitizerToolName, "%.*s\n", dir.end - dir.begin, dir.begin);
break;
}
void *argp = va_arg(aq, void *);
@@ -520,8 +520,12 @@ static void printf_common(void *ctx, con
continue;
int size = printf_get_value_size(&dir);
if (size == FSS_INVALID) {
- Report("WARNING: unexpected format specifier in printf "
- "interceptor: %.*s\n", dir.end - dir.begin, dir.begin);
+ static int ReportedOnce;
+ if (!ReportedOnce++)
+ Report(
+ "%s: WARNING: unexpected format specifier in printf "
+ "interceptor: %.*s (reported once per process)\n",
+ SanitizerToolName, dir.end - dir.begin, dir.begin);
break;
}
if (dir.convSpecifier == 'n') {
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Wed May 3 21:54:55 2017 (r317778)
@@ -84,7 +84,6 @@ class CoverageData {
void AfterFork(int child_pid);
void Extend(uptr npcs);
void Add(uptr pc, u32 *guard);
- void DumpAsBitSet();
void DumpOffsets();
void DumpAll();
@@ -156,6 +155,13 @@ void CoverageData::DirectOpen() {
void CoverageData::Init() {
pc_fd = kInvalidFd;
+
+ if (!common_flags()->coverage) return;
+ Printf("**\n***\n***\n");
+ Printf("**WARNING: this implementation of SanitizerCoverage is deprecated\n");
+ Printf("**WARNING: and will be removed in future versions\n");
+ Printf("**WARNING: See https://clang.llvm.org/docs/SanitizerCoverage.html\n");
+ Printf("**\n***\n***\n");
}
void CoverageData::Enable() {
@@ -165,6 +171,8 @@ void CoverageData::Enable() {
MmapNoReserveOrDie(sizeof(uptr) * kPcArrayMaxSize, "CovInit"));
atomic_store(&pc_array_index, 0, memory_order_relaxed);
if (common_flags()->coverage_direct) {
+ Report("coverage_direct=1 is deprecated, don't use it.\n");
+ Die();
atomic_store(&pc_array_size, 0, memory_order_relaxed);
} else {
atomic_store(&pc_array_size, kPcArrayMaxSize, memory_order_relaxed);
@@ -419,35 +427,6 @@ static fd_t CovOpenFile(InternalScopedSt
return fd;
}
-void CoverageData::DumpAsBitSet() {
- if (!common_flags()->coverage_bitset) return;
- if (!size()) return;
- InternalScopedBuffer<char> out(size());
- InternalScopedString path(kMaxPathLength);
- for (uptr m = 0; m < module_name_vec.size(); m++) {
- uptr n_set_bits = 0;
- auto r = module_name_vec[m];
- CHECK(r.copied_module_name);
- CHECK_LE(r.beg, r.end);
- CHECK_LE(r.end, size());
- for (uptr i = r.beg; i < r.end; i++) {
- uptr pc = UnbundlePc(pc_array[i]);
- out[i] = pc ? '1' : '0';
- if (pc)
- n_set_bits++;
- }
- const char *base_name = StripModuleName(r.copied_module_name);
- fd_t fd = CovOpenFile(&path, /* packed */false, base_name, "bitset-sancov");
- if (fd == kInvalidFd) return;
- WriteToFile(fd, out.data() + r.beg, r.end - r.beg);
- CloseFile(fd);
- VReport(1,
- " CovDump: bitset of %zd bits written for '%s', %zd bits are set\n",
- r.end - r.beg, base_name, n_set_bits);
- }
-}
-
-
void CoverageData::GetRangeOffsets(const NamedPcRange& r, Symbolizer* sym,
InternalMmapVector<uptr>* offsets) const {
offsets->clear();
@@ -565,7 +544,6 @@ void CoverageData::DumpAll() {
if (!coverage_enabled || common_flags()->coverage_direct) return;
if (atomic_fetch_add(&dump_once_guard, 1, memory_order_relaxed))
return;
- DumpAsBitSet();
DumpOffsets();
}
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc Wed May 3 21:54:55 2017 (r317778)
@@ -98,10 +98,6 @@ static void SanitizerDumpCoverage(const
InternalFree(file_path);
InternalFree(module_name);
InternalFree(pcs);
-
- if (sancov_flags()->symbolize) {
- Printf("TODO(aizatsky): call sancov to symbolize\n");
- }
}
// Collects trace-pc guard coverage.
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Wed May 3 21:54:55 2017 (r317778)
@@ -142,12 +142,6 @@ COMMON_FLAG(bool, coverage_pcs, true,
COMMON_FLAG(bool, coverage_order_pcs, false,
"If true, the PCs will be dumped in the order they've"
" appeared during the execution.")
-COMMON_FLAG(bool, coverage_bitset, false,
- "If set (and if 'coverage' is set too), the coverage information "
- "will also be dumped as a bitset to a separate file.")
-COMMON_FLAG(bool, coverage_counters, false,
- "If set (and if 'coverage' is set too), the bitmap that corresponds"
- " to coverage counters will be dumped.")
COMMON_FLAG(bool, coverage_direct, SANITIZER_ANDROID,
"If set, coverage information will be dumped directly to a memory "
"mapped file. This way data is not lost even if the process is "
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.h Wed May 3 21:54:55 2017 (r317778)
@@ -88,6 +88,46 @@ bool LibraryNameIs(const char *full_name
// Call cb for each region mapped by map.
void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr));
+
+#if SANITIZER_ANDROID
+
+#if defined(__aarch64__)
+# define __get_tls() \
+ ({ void** __v; __asm__("mrs %0, tpidr_el0" : "=r"(__v)); __v; })
+#elif defined(__arm__)
+# define __get_tls() \
+ ({ void** __v; __asm__("mrc p15, 0, %0, c13, c0, 3" : "=r"(__v)); __v; })
+#elif defined(__mips__)
+// On mips32r1, this goes via a kernel illegal instruction trap that's
+// optimized for v1.
+# define __get_tls() \
+ ({ register void** __v asm("v1"); \
+ __asm__(".set push\n" \
+ ".set mips32r2\n" \
+ "rdhwr %0,$29\n" \
+ ".set pop\n" : "=r"(__v)); \
+ __v; })
+#elif defined(__i386__)
+# define __get_tls() \
+ ({ void** __v; __asm__("movl %%gs:0, %0" : "=r"(__v)); __v; })
+#elif defined(__x86_64__)
+# define __get_tls() \
+ ({ void** __v; __asm__("mov %%fs:0, %0" : "=r"(__v)); __v; })
+#else
+#error "Unsupported architecture."
+#endif
+
+// The Android Bionic team has allocated a TLS slot for TSan starting with N,
+// given that Android currently doesn't support ELF TLS. It is used to store
+// Sanitizers thread specific data.
+static const int TLS_SLOT_TSAN = 8;
+
+ALWAYS_INLINE uptr *get_android_tls_ptr() {
+ return reinterpret_cast<uptr *>(&__get_tls()[TLS_SLOT_TSAN]);
+}
+
+#endif // SANITIZER_ANDROID
+
} // namespace __sanitizer
#endif // SANITIZER_FREEBSD || SANITIZER_LINUX
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h Wed May 3 21:54:55 2017 (r317778)
@@ -339,5 +339,6 @@
#define SANITIZER_INTERCEPT_CFREE (!SI_FREEBSD && !SI_MAC)
#define SANITIZER_INTERCEPT_ALIGNED_ALLOC (!SI_MAC)
#define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE (!SI_MAC)
+#define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
#endif // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H
Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp Wed May 3 21:54:55 2017 (r317778)
@@ -15,6 +15,7 @@
//===----------------------------------------------------------------------===//
#include "scudo_allocator.h"
+#include "scudo_tls.h"
#include "scudo_utils.h"
#include "sanitizer_common/sanitizer_allocator_interface.h"
@@ -26,44 +27,6 @@
namespace __scudo {
-#if SANITIZER_CAN_USE_ALLOCATOR64
-const uptr AllocatorSpace = ~0ULL;
-const uptr AllocatorSize = 0x40000000000ULL;
-typedef DefaultSizeClassMap SizeClassMap;
-struct AP {
- static const uptr kSpaceBeg = AllocatorSpace;
- static const uptr kSpaceSize = AllocatorSize;
- static const uptr kMetadataSize = 0;
- typedef __scudo::SizeClassMap SizeClassMap;
- typedef NoOpMapUnmapCallback MapUnmapCallback;
- static const uptr kFlags =
- SizeClassAllocator64FlagMasks::kRandomShuffleChunks;
-};
-typedef SizeClassAllocator64<AP> PrimaryAllocator;
-#else
-// Currently, the 32-bit Sanitizer allocator has not yet benefited from all the
-// security improvements brought to the 64-bit one. This makes the 32-bit
-// version of Scudo slightly less toughened.
-static const uptr RegionSizeLog = 20;
-static const uptr NumRegions = SANITIZER_MMAP_RANGE_SIZE >> RegionSizeLog;
-# if SANITIZER_WORDSIZE == 32
-typedef FlatByteMap<NumRegions> ByteMap;
-# elif SANITIZER_WORDSIZE == 64
-typedef TwoLevelByteMap<(NumRegions >> 12), 1 << 12> ByteMap;
-# endif // SANITIZER_WORDSIZE
-typedef DefaultSizeClassMap SizeClassMap;
-typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 0, SizeClassMap,
- RegionSizeLog, ByteMap> PrimaryAllocator;
-#endif // SANITIZER_CAN_USE_ALLOCATOR64
-
-typedef SizeClassAllocatorLocalCache<PrimaryAllocator> AllocatorCache;
-typedef ScudoLargeMmapAllocator SecondaryAllocator;
-typedef CombinedAllocator<PrimaryAllocator, AllocatorCache, SecondaryAllocator>
- ScudoBackendAllocator;
-
-static ScudoBackendAllocator &getBackendAllocator();
-
-static thread_local Xorshift128Plus Prng;
// Global static cookie, initialized at start-up.
static uptr Cookie;
@@ -88,6 +51,8 @@ INLINE u32 computeCRC32(u32 Crc, uptr Da
#endif // defined(__SSE4_2__)
}
+static ScudoBackendAllocator &getBackendAllocator();
+
struct ScudoChunk : UnpackedHeader {
// We can't use the offset member of the chunk itself, as we would double
// fetch it without any warranty that it wouldn't have been tampered. To
@@ -188,32 +153,44 @@ ScudoChunk *getScudoChunk(uptr UserBeg)
return reinterpret_cast<ScudoChunk *>(UserBeg - AlignedChunkHeaderSize);
}
-static bool ScudoInitIsRunning = false;
+struct AllocatorOptions {
+ u32 QuarantineSizeMb;
+ u32 ThreadLocalQuarantineSizeKb;
+ bool MayReturnNull;
+ s32 ReleaseToOSIntervalMs;
+ bool DeallocationTypeMismatch;
+ bool DeleteSizeMismatch;
+ bool ZeroContents;
-static pthread_once_t GlobalInited = PTHREAD_ONCE_INIT;
-static pthread_key_t PThreadKey;
+ void setFrom(const Flags *f, const CommonFlags *cf);
+ void copyTo(Flags *f, CommonFlags *cf) const;
+};
+
+void AllocatorOptions::setFrom(const Flags *f, const CommonFlags *cf) {
+ MayReturnNull = cf->allocator_may_return_null;
+ ReleaseToOSIntervalMs = cf->allocator_release_to_os_interval_ms;
+ QuarantineSizeMb = f->QuarantineSizeMb;
+ ThreadLocalQuarantineSizeKb = f->ThreadLocalQuarantineSizeKb;
+ DeallocationTypeMismatch = f->DeallocationTypeMismatch;
+ DeleteSizeMismatch = f->DeleteSizeMismatch;
+ ZeroContents = f->ZeroContents;
+}
-static thread_local bool ThreadInited = false;
-static thread_local bool ThreadTornDown = false;
-static thread_local AllocatorCache Cache;
-
-static void teardownThread(void *p) {
- uptr v = reinterpret_cast<uptr>(p);
- // The glibc POSIX thread-local-storage deallocation routine calls user
- // provided destructors in a loop of PTHREAD_DESTRUCTOR_ITERATIONS.
- // We want to be called last since other destructors might call free and the
- // like, so we wait until PTHREAD_DESTRUCTOR_ITERATIONS before draining the
- // quarantine and swallowing the cache.
- if (v < PTHREAD_DESTRUCTOR_ITERATIONS) {
- pthread_setspecific(PThreadKey, reinterpret_cast<void *>(v + 1));
- return;
- }
- drainQuarantine();
- getBackendAllocator().DestroyCache(&Cache);
- ThreadTornDown = true;
+void AllocatorOptions::copyTo(Flags *f, CommonFlags *cf) const {
+ cf->allocator_may_return_null = MayReturnNull;
+ cf->allocator_release_to_os_interval_ms = ReleaseToOSIntervalMs;
+ f->QuarantineSizeMb = QuarantineSizeMb;
+ f->ThreadLocalQuarantineSizeKb = ThreadLocalQuarantineSizeKb;
+ f->DeallocationTypeMismatch = DeallocationTypeMismatch;
+ f->DeleteSizeMismatch = DeleteSizeMismatch;
+ f->ZeroContents = ZeroContents;
}
-static void initInternal() {
+static void initScudoInternal(const AllocatorOptions &Options);
+
+static bool ScudoInitIsRunning = false;
+
+void initScudo() {
SanitizerToolName = "Scudo";
CHECK(!ScudoInitIsRunning && "Scudo init calls itself!");
ScudoInitIsRunning = true;
@@ -227,25 +204,13 @@ static void initInternal() {
AllocatorOptions Options;
Options.setFrom(getFlags(), common_flags());
- initAllocator(Options);
+ initScudoInternal(Options);
- MaybeStartBackgroudThread();
+ // TODO(kostyak): determine if MaybeStartBackgroudThread could be of some use.
ScudoInitIsRunning = false;
}
-static void initGlobal() {
- pthread_key_create(&PThreadKey, teardownThread);
- initInternal();
-}
-
-static void NOINLINE initThread() {
- pthread_once(&GlobalInited, initGlobal);
- pthread_setspecific(PThreadKey, reinterpret_cast<void *>(1));
- getBackendAllocator().InitCache(&Cache);
- ThreadInited = true;
-}
-
struct QuarantineCallback {
explicit QuarantineCallback(AllocatorCache *Cache)
: Cache_(Cache) {}
@@ -278,26 +243,20 @@ struct QuarantineCallback {
typedef Quarantine<QuarantineCallback, ScudoChunk> ScudoQuarantine;
typedef ScudoQuarantine::Cache ScudoQuarantineCache;
-static thread_local ScudoQuarantineCache ThreadQuarantineCache;
+COMPILER_CHECK(sizeof(ScudoQuarantineCache) <=
+ sizeof(ScudoThreadContext::QuarantineCachePlaceHolder));
-void AllocatorOptions::setFrom(const Flags *f, const CommonFlags *cf) {
- MayReturnNull = cf->allocator_may_return_null;
- ReleaseToOSIntervalMs = cf->allocator_release_to_os_interval_ms;
- QuarantineSizeMb = f->QuarantineSizeMb;
- ThreadLocalQuarantineSizeKb = f->ThreadLocalQuarantineSizeKb;
- DeallocationTypeMismatch = f->DeallocationTypeMismatch;
- DeleteSizeMismatch = f->DeleteSizeMismatch;
- ZeroContents = f->ZeroContents;
+AllocatorCache *getAllocatorCache(ScudoThreadContext *ThreadContext) {
+ return &ThreadContext->Cache;
}
-void AllocatorOptions::copyTo(Flags *f, CommonFlags *cf) const {
- cf->allocator_may_return_null = MayReturnNull;
- cf->allocator_release_to_os_interval_ms = ReleaseToOSIntervalMs;
- f->QuarantineSizeMb = QuarantineSizeMb;
- f->ThreadLocalQuarantineSizeKb = ThreadLocalQuarantineSizeKb;
- f->DeallocationTypeMismatch = DeallocationTypeMismatch;
- f->DeleteSizeMismatch = DeleteSizeMismatch;
- f->ZeroContents = ZeroContents;
+ScudoQuarantineCache *getQuarantineCache(ScudoThreadContext *ThreadContext) {
+ return reinterpret_cast<
+ ScudoQuarantineCache *>(ThreadContext->QuarantineCachePlaceHolder);
+}
+
+Xorshift128Plus *getPrng(ScudoThreadContext *ThreadContext) {
+ return &ThreadContext->Prng;
}
struct ScudoAllocator {
@@ -313,6 +272,7 @@ struct ScudoAllocator {
StaticSpinMutex FallbackMutex;
AllocatorCache FallbackAllocatorCache;
ScudoQuarantineCache FallbackQuarantineCache;
+ Xorshift128Plus FallbackPrng;
bool DeallocationTypeMismatch;
bool ZeroContents;
@@ -361,13 +321,13 @@ struct ScudoAllocator {
static_cast<uptr>(Options.QuarantineSizeMb) << 20,
static_cast<uptr>(Options.ThreadLocalQuarantineSizeKb) << 10);
BackendAllocator.InitCache(&FallbackAllocatorCache);
- Cookie = Prng.getNext();
+ FallbackPrng.initFromURandom();
+ Cookie = FallbackPrng.getNext();
}
// Helper function that checks for a valid Scudo chunk. nullptr isn't.
bool isValidPointer(const void *UserPtr) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
if (!UserPtr)
return false;
uptr UserBeg = reinterpret_cast<uptr>(UserPtr);
@@ -379,8 +339,7 @@ struct ScudoAllocator {
// Allocates a chunk.
void *allocate(uptr Size, uptr Alignment, AllocType Type,
bool ForceZeroContents = false) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
if (UNLIKELY(!IsPowerOfTwo(Alignment))) {
dieWithMessage("ERROR: alignment is not a power of 2\n");
}
@@ -407,11 +366,16 @@ struct ScudoAllocator {
bool FromPrimary = PrimaryAllocator::CanAllocate(NeededSize, MinAlignment);
void *Ptr;
+ uptr Salt;
uptr AllocationAlignment = FromPrimary ? MinAlignment : Alignment;
- if (LIKELY(!ThreadTornDown)) {
- Ptr = BackendAllocator.Allocate(&Cache, NeededSize, AllocationAlignment);
+ ScudoThreadContext *ThreadContext = getThreadContext();
+ if (LIKELY(ThreadContext)) {
+ Salt = getPrng(ThreadContext)->getNext();
+ Ptr = BackendAllocator.Allocate(getAllocatorCache(ThreadContext),
+ NeededSize, AllocationAlignment);
} else {
SpinMutexLock l(&FallbackMutex);
+ Salt = FallbackPrng.getNext();
Ptr = BackendAllocator.Allocate(&FallbackAllocatorCache, NeededSize,
AllocationAlignment);
}
@@ -453,7 +417,7 @@ struct ScudoAllocator {
if (TrailingBytes)
Header.SizeOrUnusedBytes = PageSize - TrailingBytes;
}
- Header.Salt = static_cast<u8>(Prng.getNext());
+ Header.Salt = static_cast<u8>(Salt);
getScudoChunk(UserBeg)->storeHeader(&Header);
void *UserPtr = reinterpret_cast<void *>(UserBeg);
// if (&__sanitizer_malloc_hook) __sanitizer_malloc_hook(UserPtr, Size);
@@ -462,16 +426,17 @@ struct ScudoAllocator {
// Place a chunk in the quarantine. In the event of a zero-sized quarantine,
// we directly deallocate the chunk, otherwise the flow would lead to the
- // chunk being checksummed twice, once before Put and once in Recycle, with
- // no additional security value.
+ // chunk being loaded (and checked) twice, and stored (and checksummed) once,
+ // with no additional security value.
void quarantineOrDeallocateChunk(ScudoChunk *Chunk, UnpackedHeader *Header,
uptr Size) {
bool BypassQuarantine = (AllocatorQuarantine.GetCacheSize() == 0);
if (BypassQuarantine) {
Chunk->eraseHeader();
void *Ptr = Chunk->getAllocBeg(Header);
- if (LIKELY(!ThreadTornDown)) {
- getBackendAllocator().Deallocate(&Cache, Ptr);
+ ScudoThreadContext *ThreadContext = getThreadContext();
+ if (LIKELY(ThreadContext)) {
+ getBackendAllocator().Deallocate(getAllocatorCache(ThreadContext), Ptr);
} else {
SpinMutexLock Lock(&FallbackMutex);
getBackendAllocator().Deallocate(&FallbackAllocatorCache, Ptr);
@@ -480,9 +445,12 @@ struct ScudoAllocator {
UnpackedHeader NewHeader = *Header;
NewHeader.State = ChunkQuarantine;
Chunk->compareExchangeHeader(&NewHeader, Header);
- if (LIKELY(!ThreadTornDown)) {
- AllocatorQuarantine.Put(&ThreadQuarantineCache,
- QuarantineCallback(&Cache), Chunk, Size);
+ ScudoThreadContext *ThreadContext = getThreadContext();
+ if (LIKELY(ThreadContext)) {
+ AllocatorQuarantine.Put(getQuarantineCache(ThreadContext),
+ QuarantineCallback(
+ getAllocatorCache(ThreadContext)),
+ Chunk, Size);
} else {
SpinMutexLock l(&FallbackMutex);
AllocatorQuarantine.Put(&FallbackQuarantineCache,
@@ -495,8 +463,7 @@ struct ScudoAllocator {
// Deallocates a Chunk, which means adding it to the delayed free list (or
// Quarantine).
void deallocate(void *UserPtr, uptr DeleteSize, AllocType Type) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
// if (&__sanitizer_free_hook) __sanitizer_free_hook(UserPtr);
if (!UserPtr)
return;
@@ -542,8 +509,7 @@ struct ScudoAllocator {
// Reallocates a chunk. We can save on a new allocation if the new requested
// size still fits in the chunk.
void *reallocate(void *OldPtr, uptr NewSize) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
uptr UserBeg = reinterpret_cast<uptr>(OldPtr);
if (UNLIKELY(!IsAligned(UserBeg, MinAlignment))) {
dieWithMessage("ERROR: attempted to reallocate a chunk not properly "
@@ -585,8 +551,7 @@ struct ScudoAllocator {
// Helper function that returns the actual usable size of a chunk.
uptr getUsableSize(const void *Ptr) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
if (!Ptr)
return 0;
uptr UserBeg = reinterpret_cast<uptr>(Ptr);
@@ -602,22 +567,22 @@ struct ScudoAllocator {
}
void *calloc(uptr NMemB, uptr Size) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
uptr Total = NMemB * Size;
if (Size != 0 && Total / Size != NMemB) // Overflow check
return BackendAllocator.ReturnNullOrDieOnBadRequest();
return allocate(Total, MinAlignment, FromMalloc, true);
}
- void drainQuarantine() {
- AllocatorQuarantine.Drain(&ThreadQuarantineCache,
- QuarantineCallback(&Cache));
+ void commitBack(ScudoThreadContext *ThreadContext) {
+ AllocatorCache *Cache = getAllocatorCache(ThreadContext);
+ AllocatorQuarantine.Drain(getQuarantineCache(ThreadContext),
+ QuarantineCallback(Cache));
+ BackendAllocator.DestroyCache(Cache);
}
uptr getStats(AllocatorStat StatType) {
- if (UNLIKELY(!ThreadInited))
- initThread();
+ initThreadMaybe();
uptr stats[AllocatorStatCount];
BackendAllocator.GetStats(stats);
return stats[StatType];
@@ -630,12 +595,18 @@ static ScudoBackendAllocator &getBackend
return Instance.BackendAllocator;
}
-void initAllocator(const AllocatorOptions &Options) {
+static void initScudoInternal(const AllocatorOptions &Options) {
Instance.init(Options);
}
-void drainQuarantine() {
- Instance.drainQuarantine();
+void ScudoThreadContext::init() {
+ getBackendAllocator().InitCache(&Cache);
+ Prng.initFromURandom();
+ memset(QuarantineCachePlaceHolder, 0, sizeof(QuarantineCachePlaceHolder));
+}
+
+void ScudoThreadContext::commitBack() {
+ Instance.commitBack(this);
}
void *scudoMalloc(uptr Size, AllocType Type) {
Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h Wed May 3 21:44:04 2017 (r317777)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h Wed May 3 21:54:55 2017 (r317778)
@@ -53,7 +53,7 @@ struct UnpackedHeader {
u64 Offset : 16; // Offset from the beginning of the backend
// allocation to the beginning of the chunk
// itself, in multiples of MinAlignment. See
- /// comment about its maximum value and in init().
+ // comment about its maximum value and in init().
u64 Salt : 8;
};
@@ -62,7 +62,7 @@ COMPILER_CHECK(sizeof(UnpackedHeader) ==
// Minimum alignment of 8 bytes for 32-bit, 16 for 64-bit
const uptr MinAlignmentLog = FIRST_32_SECOND_64(3, 4);
-const uptr MaxAlignmentLog = 24; // 16 MB
+const uptr MaxAlignmentLog = 24; // 16 MB
const uptr MinAlignment = 1 << MinAlignmentLog;
const uptr MaxAlignment = 1 << MaxAlignmentLog;
@@ -70,21 +70,44 @@ const uptr ChunkHeaderSize = sizeof(Pack
const uptr AlignedChunkHeaderSize =
(ChunkHeaderSize + MinAlignment - 1) & ~(MinAlignment - 1);
-struct AllocatorOptions {
- u32 QuarantineSizeMb;
- u32 ThreadLocalQuarantineSizeKb;
- bool MayReturnNull;
- s32 ReleaseToOSIntervalMs;
- bool DeallocationTypeMismatch;
- bool DeleteSizeMismatch;
- bool ZeroContents;
-
- void setFrom(const Flags *f, const CommonFlags *cf);
- void copyTo(Flags *f, CommonFlags *cf) const;
+#if SANITIZER_CAN_USE_ALLOCATOR64
+const uptr AllocatorSpace = ~0ULL;
+const uptr AllocatorSize = 0x40000000000ULL; // 4TB.
+typedef DefaultSizeClassMap SizeClassMap;
+struct AP {
+ static const uptr kSpaceBeg = AllocatorSpace;
+ static const uptr kSpaceSize = AllocatorSize;
+ static const uptr kMetadataSize = 0;
+ typedef __scudo::SizeClassMap SizeClassMap;
+ typedef NoOpMapUnmapCallback MapUnmapCallback;
+ static const uptr kFlags =
+ SizeClassAllocator64FlagMasks::kRandomShuffleChunks;
};
+typedef SizeClassAllocator64<AP> PrimaryAllocator;
+#else
+// Currently, the 32-bit Sanitizer allocator has not yet benefited from all the
+// security improvements brought to the 64-bit one. This makes the 32-bit
+// version of Scudo slightly less toughened.
+static const uptr RegionSizeLog = 20;
+static const uptr NumRegions = SANITIZER_MMAP_RANGE_SIZE >> RegionSizeLog;
+# if SANITIZER_WORDSIZE == 32
+typedef FlatByteMap<NumRegions> ByteMap;
+# elif SANITIZER_WORDSIZE == 64
+typedef TwoLevelByteMap<(NumRegions >> 12), 1 << 12> ByteMap;
+# endif // SANITIZER_WORDSIZE
+typedef DefaultSizeClassMap SizeClassMap;
+typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 0, SizeClassMap,
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list