Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 May 2017 19:20:55 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r317969 - in projects/clang500-import: contrib/compiler-rt/include/xray contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/builtins contrib/compiler-rt/lib/cfi contrib/compiler-rt/lib...
Message-ID:  <201705081920.v48JKt0b095251@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Mon May  8 19:20:55 2017
New Revision: 317969
URL: https://svnweb.freebsd.org/changeset/base/317969

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

Added:
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.cpp
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.cpp
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.inc
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.inc
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_android.inc
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_android.inc
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_linux.inc
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_linux.inc
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.inc
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.inc
  projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc
     - copied unchanged from r317962, vendor/compiler-rt/dist/lib/ubsan/ubsan_diag_standalone.cc
  projects/clang500-import/contrib/libc++/src/support/runtime/exception_pointer_msvc.ipp
     - copied unchanged from r317960, vendor/libc++/dist/src/support/runtime/exception_pointer_msvc.ipp
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MIRPrinter.h
     - copied unchanged from r317960, vendor/llvm/dist/include/llvm/CodeGen/MIRPrinter.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
     - copied unchanged from r317960, vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleList.cpp
     - copied unchanged from r317960, vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiModuleList.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepIICHVX.td
     - copied unchanged from r317960, vendor/llvm/dist/lib/Target/Hexagon/HexagonDepIICHVX.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepIICScalar.td
     - copied unchanged from r317960, vendor/llvm/dist/lib/Target/Hexagon/HexagonDepIICScalar.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepTimingClasses.h
     - copied unchanged from r317960, vendor/llvm/dist/lib/Target/Hexagon/HexagonDepTimingClasses.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/lwpintrin.h
     - copied unchanged from r317960, vendor/clang/dist/lib/Headers/lwpintrin.h
  projects/clang500-import/contrib/llvm/tools/lld/include/lld/Core/TaskGroup.h
     - copied unchanged from r317960, vendor/lld/dist/include/lld/Core/TaskGroup.h
  projects/clang500-import/contrib/llvm/tools/lld/lib/Core/TaskGroup.cpp
     - copied unchanged from r317960, vendor/lld/dist/lib/Core/TaskGroup.cpp
Deleted:
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/MIRPrinter.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64AddressTypePromotion.cpp
  projects/clang500-import/contrib/llvm/tools/lld/include/lld/Support/
Modified:
  projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.h
  projects/clang500-import/contrib/compiler-rt/lib/builtins/emutls.c
  projects/clang500-import/contrib/compiler-rt/lib/builtins/int_types.h
  projects/clang500-import/contrib/compiler-rt/lib/cfi/cfi_blacklist.txt
  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_tls.h
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp
  projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_init.cc
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface_internal.h
  projects/clang500-import/contrib/libc++/include/__config
  projects/clang500-import/contrib/libc++/include/__locale
  projects/clang500-import/contrib/libc++/include/__threading_support
  projects/clang500-import/contrib/libc++/include/exception
  projects/clang500-import/contrib/libc++/include/experimental/dynarray
  projects/clang500-import/contrib/libc++/include/experimental/optional
  projects/clang500-import/contrib/libc++/include/functional
  projects/clang500-import/contrib/libc++/include/future
  projects/clang500-import/contrib/libc++/include/istream
  projects/clang500-import/contrib/libc++/include/locale
  projects/clang500-import/contrib/libc++/include/memory
  projects/clang500-import/contrib/libc++/include/new
  projects/clang500-import/contrib/libc++/include/ostream
  projects/clang500-import/contrib/libc++/include/random
  projects/clang500-import/contrib/libc++/include/shared_mutex
  projects/clang500-import/contrib/libc++/include/streambuf
  projects/clang500-import/contrib/libc++/include/typeinfo
  projects/clang500-import/contrib/libc++/src/exception.cpp
  projects/clang500-import/contrib/libc++/src/experimental/filesystem/operations.cpp
  projects/clang500-import/contrib/libc++/src/locale.cpp
  projects/clang500-import/contrib/libc++/src/memory.cpp
  projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/BitVector.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallBitVector.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/LoopInfoImpl.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/ProfileSummaryInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.def
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/FastISel.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStream.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/RawTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStream.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCSerialization.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/CFG.h
  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/ConstantRange.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/DataLayout.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/DebugInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Dominators.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Function.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InlineAsm.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InstIterator.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Intrinsics.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsARM.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndex.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/ConstantPools.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/Wasm.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/WasmYAML.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/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/KnownBits.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/MathExtras.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
  projects/clang500-import/contrib/llvm/include/llvm/Target/Target.td
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetOpcodes.def
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Instrumentation.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/Float2Int.h
  projects/clang500-import/contrib/llvm/lib/Analysis/ConstantFolding.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/ScalarEvolution.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/TargetLibraryInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
  projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
  projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/BranchFolding.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MIRParser/MIParser.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MIRPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MIRPrintingPass.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineFrameInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineVerifier.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/FastISel.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.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/TargetLowering.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/XRayInstrumentation.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/DWARFFormValue.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeCompilandSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeEnumModules.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/TpiStream.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h
  projects/clang500-import/contrib/llvm/lib/IR/ConstantRange.cpp
  projects/clang500-import/contrib/llvm/lib/IR/DataLayout.cpp
  projects/clang500-import/contrib/llvm/lib/IR/DebugInfo.cpp
  projects/clang500-import/contrib/llvm/lib/IR/Instruction.cpp
  projects/clang500-import/contrib/llvm/lib/IR/ModuleSummaryIndex.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/ConstantPools.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Object/COFFObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/WasmObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/WasmYAML.cpp
  projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/Support/APInt.cpp
  projects/clang500-import/contrib/llvm/lib/Support/TargetParser.cpp
  projects/clang500-import/contrib/llvm/lib/Support/Unix/DynamicLibrary.inc
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Path.inc
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.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/ARMInstrNEON.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.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/HexagonDepInstrFormats.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonIICHVX.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonIICScalar.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.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/HexagonMachineScheduler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPatterns.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/HexagonSchedule.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV55.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV60.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV62.td
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/RDFLiveness.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/RDFRegisters.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/RDFRegisters.h
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86Operand.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86AsmPrinter.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrSSE.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/X86LegalizerInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86OptimizeLEAs.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86RegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86RegisterBankInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/FunctionImport.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/WholeProgramDevirt.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/InstCombineSimplifyDemanded.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Float2Int.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/ODRHash.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchers.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/BuiltinsARM.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86_64.def
  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/Driver/CC1Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Distro.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Multilib.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/FrontendAction.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/Lexer.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/ModuleMap.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/Tooling/FixIt.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/ASTMatchers/Dynamic/Registry.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/CGBuiltin.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Distro.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Multilib.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/SanitizerArgs.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/CrossWindows.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/FormatToken.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/FormatTokenLexer.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/PrintPreprocessedOutput.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/arm_acle.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/x86intrin.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/ModuleMap.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/Preprocessor.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/TokenLexer.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/JSONCompilationDatabase.cpp
  projects/clang500-import/contrib/llvm/tools/lld/CMakeLists.txt
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/ICF.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/InputFiles.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.h
  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/Options.td
  projects/clang500-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Relocations.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.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/Target.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.h
  projects/clang500-import/contrib/llvm/tools/lld/include/lld/Core/Parallel.h
  projects/clang500-import/contrib/llvm/tools/lld/lib/Core/CMakeLists.txt
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/API/SBAddress.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/API/SBInstruction.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/API/SBInstructionList.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/Disassembler.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Expression/Expression.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/MainLoop.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/UDPSocket.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanCallFunction.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanCallUserExpression.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/TaskPool.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBAddress.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBInstruction.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBInstructionList.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBProcess.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Disassembler.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Editline.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/MainLoop.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/UDPSocket.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Target/ThreadPlanCallUserExpression.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/TaskPool.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/Analyze.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.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-readobj/COFFDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
  projects/clang500-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang500-import/lib/clang/include/lld/Config/Version.inc
  projects/clang500-import/lib/clang/include/llvm/Support/VCSRevision.h
  projects/clang500-import/lib/clang/libllvm/Makefile
  projects/clang500-import/usr.bin/clang/lld/Makefile
Directory Properties:
  projects/clang500-import/contrib/compiler-rt/   (props changed)
  projects/clang500-import/contrib/libc++/   (props changed)
  projects/clang500-import/contrib/llvm/   (props changed)
  projects/clang500-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h	Mon May  8 19:20:55 2017	(r317969)
@@ -15,10 +15,11 @@
 #define XRAY_XRAY_INTERFACE_H
 
 #include <cstdint>
+#include <stddef.h>
 
 extern "C" {
 
-// Synchronize this with AsmPrinter::SledKind in LLVM.
+/// Synchronize this with AsmPrinter::SledKind in LLVM.
 enum XRayEntryType {
   ENTRY = 0,
   EXIT = 1,
@@ -26,32 +27,43 @@ enum XRayEntryType {
   LOG_ARGS_ENTRY = 3,
 };
 
-// Provide a function to invoke for when instrumentation points are hit. This is
-// a user-visible control surface that overrides the default implementation. The
-// function provided should take the following arguments:
-//
-//   - function id: an identifier that indicates the id of a function; this id
-//                  is generated by xray; the mapping between the function id
-//                  and the actual function pointer is available through
-//                  __xray_table.
-//   - entry type: identifies what kind of instrumentation point was encountered
-//                 (function entry, function exit, etc.). See the enum
-//                 XRayEntryType for more details.
-//
-// The user handler must handle correctly spurious calls after this handler is
-// removed or replaced with another handler, because it would be too costly for
-// XRay runtime to avoid spurious calls.
-// To prevent circular calling, the handler function itself and all its
-// direct&indirect callees must not be instrumented with XRay, which can be
-// achieved by marking them all with: __attribute__((xray_never_instrument))
-//
-// Returns 1 on success, 0 on error.
+/// Provide a function to invoke for when instrumentation points are hit. This
+/// is a user-visible control surface that overrides the default implementation.
+/// The function provided should take the following arguments:
+///
+///   - function id: an identifier that indicates the id of a function; this id
+///                  is generated by xray; the mapping between the function id
+///                  and the actual function pointer is available through
+///                  __xray_table.
+///   - entry type: identifies what kind of instrumentation point was
+///                 encountered (function entry, function exit, etc.). See the
+///                 enum XRayEntryType for more details.
+///
+/// The user handler must handle correctly spurious calls after this handler is
+/// removed or replaced with another handler, because it would be too costly for
+/// XRay runtime to avoid spurious calls.
+/// To prevent circular calling, the handler function itself and all its
+/// direct&indirect callees must not be instrumented with XRay, which can be
+/// achieved by marking them all with: __attribute__((xray_never_instrument))
+///
+/// Returns 1 on success, 0 on error.
 extern int __xray_set_handler(void (*entry)(int32_t, XRayEntryType));
 
-// This removes whatever the currently provided handler is. Returns 1 on
-// success, 0 on error.
+/// This removes whatever the currently provided handler is. Returns 1 on
+/// success, 0 on error.
 extern int __xray_remove_handler();
 
+/// Use XRay to log the first argument of each (instrumented) function call.
+/// When this function exits, all threads will have observed the effect and
+/// start logging their subsequent affected function calls (if patched).
+///
+/// Returns 1 on success, 0 on error.
+extern int __xray_set_handler_arg1(void (*)(int32_t, XRayEntryType, uint64_t));
+
+/// Disables the XRay handler used to log first arguments of function calls.
+/// Returns 1 on success, 0 on error.
+extern int __xray_remove_handler_arg1();
+
 enum XRayPatchingStatus {
   NOT_INITIALIZED = 0,
   SUCCESS = 1,
@@ -59,24 +71,31 @@ enum XRayPatchingStatus {
   FAILED = 3,
 };
 
-// This tells XRay to patch the instrumentation points. See XRayPatchingStatus
-// for possible result values.
+/// This tells XRay to patch the instrumentation points. See XRayPatchingStatus
+/// for possible result values.
 extern XRayPatchingStatus __xray_patch();
 
-// Reverses the effect of __xray_patch(). See XRayPatchingStatus for possible
-// result values.
+/// Reverses the effect of __xray_patch(). See XRayPatchingStatus for possible
+/// result values.
 extern XRayPatchingStatus __xray_unpatch();
 
-// Use XRay to log the first argument of each (instrumented) function call.
-// When this function exits, all threads will have observed the effect and
-// start logging their subsequent affected function calls (if patched).
-//
-// Returns 1 on success, 0 on error.
-extern int __xray_set_handler_arg1(void (*)(int32_t, XRayEntryType, uint64_t));
+/// This patches a specific function id. See XRayPatchingStatus for possible
+/// result values.
+extern XRayPatchingStatus __xray_patch_function(int32_t FuncId);
+
+/// This unpatches a specific function id. See XRayPatchingStatus for possible
+/// result values.
+extern XRayPatchingStatus __xray_unpatch_function(int32_t FuncId);
+
+/// This function returns the address of the function provided a valid function
+/// id. We return 0 if we encounter any error, even if 0 may be a valid function
+/// address.
+extern uintptr_t __xray_function_address(int32_t FuncId);
+
+/// This function returns the maximum valid function id. Returns 0 if we
+/// encounter errors (when there are no instrumented functions, etc.).
+extern size_t __xray_max_function_id();
 
-// Disables the XRay handler used to log first arguments of function calls.
-// Returns 1 on success, 0 on error.
-extern int __xray_remove_handler_arg1();
 }
 
 #endif

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc	Mon May  8 19:20:55 2017	(r317969)
@@ -443,6 +443,13 @@ INTERCEPTOR(void, _longjmp, void *env, i
 }
 #endif
 
+#if ASAN_INTERCEPT___LONGJMP_CHK
+INTERCEPTOR(void, __longjmp_chk, void *env, int val) {
+  __asan_handle_no_return();
+  REAL(__longjmp_chk)(env, val);
+}
+#endif
+
 #if ASAN_INTERCEPT_SIGLONGJMP
 INTERCEPTOR(void, siglongjmp, void *env, int val) {
   __asan_handle_no_return();
@@ -758,6 +765,9 @@ void InitializeAsanInterceptors() {
 #if ASAN_INTERCEPT__LONGJMP
   ASAN_INTERCEPT_FUNC(_longjmp);
 #endif
+#if ASAN_INTERCEPT___LONGJMP_CHK
+  ASAN_INTERCEPT_FUNC(__longjmp_chk);
+#endif
 #if ASAN_INTERCEPT_SIGLONGJMP
   ASAN_INTERCEPT_FUNC(siglongjmp);
 #endif

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.h	Mon May  8 19:20:55 2017	(r317969)
@@ -58,6 +58,12 @@
 # define ASAN_INTERCEPT_SIGLONGJMP 0
 #endif
 
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+# define ASAN_INTERCEPT___LONGJMP_CHK 1
+#else
+# define ASAN_INTERCEPT___LONGJMP_CHK 0
+#endif
+
 // Android bug: https://code.google.com/p/android/issues/detail?id=61799
 #if ASAN_HAS_EXCEPTIONS && !SANITIZER_WINDOWS && \
     !(SANITIZER_ANDROID && defined(__i386))

Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/emutls.c
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/builtins/emutls.c	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/builtins/emutls.c	Mon May  8 19:20:55 2017	(r317969)
@@ -98,7 +98,7 @@ static __inline emutls_address_array* em
 
 #else
 
-#include <Windows.h>
+#include <windows.h>
 #include <malloc.h>
 #include <stdio.h>
 #include <assert.h>

Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/int_types.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/builtins/int_types.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/builtins/int_types.h	Mon May  8 19:20:55 2017	(r317969)
@@ -60,9 +60,7 @@ typedef union
     }s;
 } udwords;
 
-/* MIPS64 issue: PR 20098 */
-#if (defined(__LP64__) || defined(__wasm__)) && \
-    !(defined(__mips__) && defined(__clang__))
+#if (defined(__LP64__) || defined(__wasm__) || defined(__mips64))
 #define CRT_HAS_128BIT
 #endif
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/cfi/cfi_blacklist.txt
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/cfi/cfi_blacklist.txt	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/cfi/cfi_blacklist.txt	Mon May  8 19:20:55 2017	(r317969)
@@ -24,3 +24,8 @@ fun:_ZNSt3__19addressof*
 # Windows C++ stdlib headers that contain bad unrelated casts.
 src:*xmemory0
 src:*xstddef
+
+# std::_Sp_counted_ptr_inplace::_Sp_counted_ptr_inplace() (libstdc++).
+# This ctor is used by std::make_shared and needs to cast to uninitialized T*
+# in order to call std::allocator_traits<T>::construct.
+fun:_ZNSt23_Sp_counted_ptr_inplace*

Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp	Mon May  8 19:20:55 2017	(r317969)
@@ -368,11 +368,12 @@ struct ScudoAllocator {
     void *Ptr;
     uptr Salt;
     uptr AllocationAlignment = FromPrimary ? MinAlignment : Alignment;
-    ScudoThreadContext *ThreadContext = getThreadContext();
+    ScudoThreadContext *ThreadContext = getThreadContextAndLock();
     if (LIKELY(ThreadContext)) {
       Salt = getPrng(ThreadContext)->getNext();
       Ptr = BackendAllocator.Allocate(getAllocatorCache(ThreadContext),
                                       NeededSize, AllocationAlignment);
+      ThreadContext->unlock();
     } else {
       SpinMutexLock l(&FallbackMutex);
       Salt = FallbackPrng.getNext();
@@ -434,9 +435,10 @@ struct ScudoAllocator {
     if (BypassQuarantine) {
       Chunk->eraseHeader();
       void *Ptr = Chunk->getAllocBeg(Header);
-      ScudoThreadContext *ThreadContext = getThreadContext();
+      ScudoThreadContext *ThreadContext = getThreadContextAndLock();
       if (LIKELY(ThreadContext)) {
         getBackendAllocator().Deallocate(getAllocatorCache(ThreadContext), Ptr);
+        ThreadContext->unlock();
       } else {
         SpinMutexLock Lock(&FallbackMutex);
         getBackendAllocator().Deallocate(&FallbackAllocatorCache, Ptr);
@@ -445,12 +447,13 @@ struct ScudoAllocator {
       UnpackedHeader NewHeader = *Header;
       NewHeader.State = ChunkQuarantine;
       Chunk->compareExchangeHeader(&NewHeader, Header);
-      ScudoThreadContext *ThreadContext = getThreadContext();
+      ScudoThreadContext *ThreadContext = getThreadContextAndLock();
       if (LIKELY(ThreadContext)) {
         AllocatorQuarantine.Put(getQuarantineCache(ThreadContext),
                                 QuarantineCallback(
                                     getAllocatorCache(ThreadContext)),
                                 Chunk, Size);
+        ThreadContext->unlock();
       } else {
         SpinMutexLock l(&FallbackMutex);
         AllocatorQuarantine.Put(&FallbackQuarantineCache,

Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.h	Mon May  8 19:20:55 2017	(r317969)
@@ -72,7 +72,13 @@ const uptr AlignedChunkHeaderSize =
 
 #if SANITIZER_CAN_USE_ALLOCATOR64
 const uptr AllocatorSpace = ~0ULL;
-const uptr AllocatorSize = 0x40000000000ULL;  // 4TB.
+# if defined(__aarch64__) && SANITIZER_ANDROID
+const uptr AllocatorSize = 0x4000000000ULL;  // 256G.
+# elif defined(__aarch64__)
+const uptr AllocatorSize = 0x10000000000ULL;  // 1T.
+# else
+const uptr AllocatorSize = 0x40000000000ULL;  // 4T.
+# endif
 typedef DefaultSizeClassMap SizeClassMap;
 struct AP {
   static const uptr kSpaceBeg = AllocatorSpace;

Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls.h	Mon May  8 19:20:55 2017	(r317969)
@@ -19,10 +19,16 @@
 #include "scudo_allocator.h"
 #include "scudo_utils.h"
 
+#include "sanitizer_common/sanitizer_linux.h"
+#include "sanitizer_common/sanitizer_platform.h"
+
 namespace __scudo {
 
-struct ALIGNED(64) ScudoThreadContext {
- public:
+// Platform specific base thread context definitions.
+#include "scudo_tls_context_android.inc"
+#include "scudo_tls_context_linux.inc"
+
+struct ALIGNED(64) ScudoThreadContext : public ScudoThreadContextPlatform {
   AllocatorCache Cache;
   Xorshift128Plus Prng;
   uptr QuarantineCachePlaceHolder[4];
@@ -32,8 +38,9 @@ struct ALIGNED(64) ScudoThreadContext {
 
 void initThread();
 
-// Fastpath functions are defined in the following platform specific headers.
-#include "scudo_tls_linux.h"
+// Platform specific dastpath functions definitions.
+#include "scudo_tls_android.inc"
+#include "scudo_tls_linux.inc"
 
 }  // namespace __scudo
 

Copied: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.cpp (from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.cpp)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.cpp	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.cpp)
@@ -0,0 +1,95 @@
+//===-- scudo_tls_android.cpp -----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// Scudo thread local structure implementation for Android.
+///
+//===----------------------------------------------------------------------===//
+
+#include "sanitizer_common/sanitizer_platform.h"
+
+#if SANITIZER_LINUX && SANITIZER_ANDROID
+
+#include "scudo_tls.h"
+
+#include <pthread.h>
+
+namespace __scudo {
+
+static pthread_once_t GlobalInitialized = PTHREAD_ONCE_INIT;
+static pthread_key_t PThreadKey;
+
+static atomic_uint32_t ThreadContextCurrentIndex;
+static ScudoThreadContext *ThreadContexts;
+static uptr NumberOfContexts;
+
+// sysconf(_SC_NPROCESSORS_{CONF,ONLN}) cannot be used as they allocate memory.
+static uptr getNumberOfCPUs() {
+  cpu_set_t CPUs;
+  CHECK_EQ(sched_getaffinity(0, sizeof(cpu_set_t), &CPUs), 0);
+  return CPU_COUNT(&CPUs);
+}
+
+static void initOnce() {
+  // Hack: TLS_SLOT_TSAN was introduced in N. To be able to use it on M for
+  // testing, we create an unused key. Since the key_data array follows the tls
+  // array, it basically gives us the extra entry we need.
+  // TODO(kostyak): remove and restrict to N and above.
+  CHECK_EQ(pthread_key_create(&PThreadKey, NULL), 0);
+  initScudo();
+  NumberOfContexts = getNumberOfCPUs();
+  ThreadContexts = reinterpret_cast<ScudoThreadContext *>(
+      MmapOrDie(sizeof(ScudoThreadContext) * NumberOfContexts, __func__));
+  for (int i = 0; i < NumberOfContexts; i++)
+    ThreadContexts[i].init();
+}
+
+void initThread() {
+  pthread_once(&GlobalInitialized, initOnce);
+  // Initial context assignment is done in a plain round-robin fashion.
+  u32 Index = atomic_fetch_add(&ThreadContextCurrentIndex, 1,
+                               memory_order_relaxed);
+  ScudoThreadContext *ThreadContext =
+      &ThreadContexts[Index % NumberOfContexts];
+  *get_android_tls_ptr() = reinterpret_cast<uptr>(ThreadContext);
+}
+
+ScudoThreadContext *getThreadContextAndLockSlow() {
+  ScudoThreadContext *ThreadContext;
+  // Go through all the contexts and find the first unlocked one. 
+  for (u32 i = 0; i < NumberOfContexts; i++) {
+    ThreadContext = &ThreadContexts[i];
+    if (ThreadContext->tryLock()) {
+      *get_android_tls_ptr() = reinterpret_cast<uptr>(ThreadContext);
+      return ThreadContext;
+    }
+  }
+  // No luck, find the one with the lowest precedence, and slow lock it.
+  u64 Precedence = UINT64_MAX;
+  for (u32 i = 0; i < NumberOfContexts; i++) {
+    u64 SlowLockPrecedence = ThreadContexts[i].getSlowLockPrecedence();
+    if (SlowLockPrecedence && SlowLockPrecedence < Precedence) {
+      ThreadContext = &ThreadContexts[i];
+      Precedence = SlowLockPrecedence;
+    }
+  }
+  if (LIKELY(Precedence != UINT64_MAX)) {
+    ThreadContext->lock();
+    *get_android_tls_ptr() = reinterpret_cast<uptr>(ThreadContext);
+    return ThreadContext;
+  }
+  // Last resort (can this happen?), stick with the current one.
+  ThreadContext =
+      reinterpret_cast<ScudoThreadContext *>(*get_android_tls_ptr());
+  ThreadContext->lock();
+  return ThreadContext;
+}
+
+}  // namespace __scudo
+
+#endif  // SANITIZER_LINUX && SANITIZER_ANDROID

Copied: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.inc (from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.inc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_android.inc	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_android.inc)
@@ -0,0 +1,44 @@
+//===-- scudo_tls_android.inc -----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// Scudo thread local structure fastpath functions implementation for Android.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef SCUDO_TLS_ANDROID_H_
+#define SCUDO_TLS_ANDROID_H_
+
+#ifndef SCUDO_TLS_H_
+# error "This file must be included inside scudo_tls.h."
+#endif  // SCUDO_TLS_H_
+
+#if SANITIZER_LINUX && SANITIZER_ANDROID
+
+ALWAYS_INLINE void initThreadMaybe() {
+  if (LIKELY(*get_android_tls_ptr()))
+    return;
+  initThread();
+}
+
+ScudoThreadContext *getThreadContextAndLockSlow();
+
+ALWAYS_INLINE ScudoThreadContext *getThreadContextAndLock() {
+  ScudoThreadContext *ThreadContext =
+      reinterpret_cast<ScudoThreadContext *>(*get_android_tls_ptr());
+  CHECK(ThreadContext);
+  // Try to lock the currently associated context.
+  if (ThreadContext->tryLock())
+    return ThreadContext;
+  // If it failed, go the slow path.
+  return getThreadContextAndLockSlow();
+}
+
+#endif  // SANITIZER_LINUX && SANITIZER_ANDROID
+
+#endif  // SCUDO_TLS_ANDROID_H_

Copied: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_android.inc (from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_android.inc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_android.inc	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_android.inc)
@@ -0,0 +1,54 @@
+//===-- scudo_tls_context_android.inc ---------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// Android specific base thread context definition.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef SCUDO_TLS_CONTEXT_ANDROID_INC_
+#define SCUDO_TLS_CONTEXT_ANDROID_INC_
+
+#ifndef SCUDO_TLS_H_
+# error "This file must be included inside scudo_tls.h."
+#endif  // SCUDO_TLS_H_
+
+#if SANITIZER_LINUX && SANITIZER_ANDROID
+
+struct ScudoThreadContextPlatform {
+  INLINE bool tryLock() {
+    if (Mutex.TryLock()) {
+      atomic_store_relaxed(&SlowLockPrecedence, 0);
+      return true;
+    }
+    if (atomic_load_relaxed(&SlowLockPrecedence) == 0)
+      atomic_store_relaxed(&SlowLockPrecedence, NanoTime());
+    return false;
+  }
+
+  INLINE void lock() {
+    Mutex.Lock();
+    atomic_store_relaxed(&SlowLockPrecedence, 0);
+  }
+
+  INLINE void unlock() {
+    Mutex.Unlock();
+  }
+
+  INLINE u64 getSlowLockPrecedence() {
+    return atomic_load_relaxed(&SlowLockPrecedence);
+  }
+
+ private:
+  StaticSpinMutex Mutex;
+  atomic_uint64_t SlowLockPrecedence;
+};
+
+#endif  // SANITIZER_LINUX && SANITIZER_ANDROID
+
+#endif  // SCUDO_TLS_CONTEXT_ANDROID_INC_

Copied: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_linux.inc (from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_linux.inc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_context_linux.inc	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_context_linux.inc)
@@ -0,0 +1,29 @@
+//===-- scudo_tls_context_linux.inc -----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// Linux specific base thread context definition.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef SCUDO_TLS_CONTEXT_LINUX_INC_
+#define SCUDO_TLS_CONTEXT_LINUX_INC_
+
+#ifndef SCUDO_TLS_H_
+# error "This file must be included inside scudo_tls.h."
+#endif  // SCUDO_TLS_H_
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+
+struct ScudoThreadContextPlatform {
+  ALWAYS_INLINE void unlock() {}
+};
+
+#endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+#endif  // SCUDO_TLS_CONTEXT_LINUX_INC_

Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp	Mon May  8 19:20:55 2017	(r317969)
@@ -14,7 +14,7 @@
 
 #include "sanitizer_common/sanitizer_platform.h"
 
-#if SANITIZER_LINUX
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
 
 #include "scudo_tls.h"
 
@@ -26,8 +26,10 @@ namespace __scudo {
 static pthread_once_t GlobalInitialized = PTHREAD_ONCE_INIT;
 static pthread_key_t PThreadKey;
 
-thread_local ThreadState ScudoThreadState = ThreadNotInitialized;
-thread_local ScudoThreadContext ThreadLocalContext;
+__attribute__((tls_model("initial-exec")))
+THREADLOCAL ThreadState ScudoThreadState = ThreadNotInitialized;
+__attribute__((tls_model("initial-exec")))
+THREADLOCAL ScudoThreadContext ThreadLocalContext;
 
 static void teardownThread(void *Ptr) {
   uptr Iteration = reinterpret_cast<uptr>(Ptr);
@@ -59,4 +61,4 @@ void initThread() {
 
 }  // namespace __scudo
 
-#endif  // SANITIZER_LINUX
+#endif  // SANITIZER_LINUX && !SANITIZER_ANDROID

Copied: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.inc (from r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.inc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.inc	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.inc)
@@ -0,0 +1,48 @@
+//===-- scudo_tls_linux.inc -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// Scudo thread local structure fastpath functions implementation for platforms
+/// supporting thread_local.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef SCUDO_TLS_LINUX_H_
+#define SCUDO_TLS_LINUX_H_
+
+#ifndef SCUDO_TLS_H_
+# error "This file must be included inside scudo_tls.h."
+#endif  // SCUDO_TLS_H_
+
+#if SANITIZER_LINUX && !SANITIZER_ANDROID
+
+enum ThreadState : u8 {
+  ThreadNotInitialized = 0,
+  ThreadInitialized,
+  ThreadTornDown,
+};
+__attribute__((tls_model("initial-exec")))
+extern THREADLOCAL ThreadState ScudoThreadState;
+__attribute__((tls_model("initial-exec")))
+extern THREADLOCAL ScudoThreadContext ThreadLocalContext;
+
+ALWAYS_INLINE void initThreadMaybe() {
+  if (LIKELY(ScudoThreadState != ThreadNotInitialized))
+    return;
+  initThread();
+}
+
+ALWAYS_INLINE ScudoThreadContext *getThreadContextAndLock() {
+  if (UNLIKELY(ScudoThreadState == ThreadTornDown))
+    return nullptr;
+  return &ThreadLocalContext;
+}
+
+#endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+#endif  // SCUDO_TLS_LINUX_H_

Copied: projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc (from r317962, vendor/compiler-rt/dist/lib/ubsan/ubsan_diag_standalone.cc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc	Mon May  8 19:20:55 2017	(r317969, copy of r317962, vendor/compiler-rt/dist/lib/ubsan/ubsan_diag_standalone.cc)
@@ -0,0 +1,37 @@
+//===-- ubsan_diag_standalone.cc ------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Diagnostic reporting for the standalone UBSan runtime.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ubsan_platform.h"
+#if CAN_SANITIZE_UB
+#include "ubsan_diag.h"
+
+using namespace __ubsan;
+
+extern "C" {
+SANITIZER_INTERFACE_ATTRIBUTE
+void __sanitizer_print_stack_trace() {
+  uptr top = 0;
+  uptr bottom = 0;
+  bool request_fast_unwind = common_flags()->fast_unwind_on_fatal;
+  if (request_fast_unwind)
+    __sanitizer::GetThreadStackTopAndBottom(false, &top, &bottom);
+
+  GET_REPORT_OPTIONS(false);
+  BufferedStackTrace stack;
+  stack.Unwind(kStackTraceMax, Opts.pc, Opts.bp, nullptr, top, bottom,
+               request_fast_unwind);
+  stack.Print();
+}
+} // extern "C"
+
+#endif  // CAN_SANITIZE_UB

Modified: projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc	Mon May  8 19:20:55 2017	(r317969)
@@ -410,7 +410,8 @@ static void handleLoadInvalidValue(Inval
   SourceLocation Loc = Data->Loc.acquire();
   // This check could be more precise if we used different handlers for
   // -fsanitize=bool and -fsanitize=enum.
-  bool IsBool = (0 == internal_strcmp(Data->Type.getTypeName(), "'bool'"));
+  bool IsBool = (0 == internal_strcmp(Data->Type.getTypeName(), "'bool'")) ||
+                (0 == internal_strncmp(Data->Type.getTypeName(), "'BOOL'", 6));
   ErrorType ET =
       IsBool ? ErrorType::InvalidBoolLoad : ErrorType::InvalidEnumLoad;
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/xray/xray_init.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/xray/xray_init.cc	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/xray/xray_init.cc	Mon May  8 19:20:55 2017	(r317969)
@@ -25,6 +25,8 @@ extern "C" {
 void __xray_init();
 extern const XRaySledEntry __start_xray_instr_map[] __attribute__((weak));
 extern const XRaySledEntry __stop_xray_instr_map[] __attribute__((weak));
+extern const XRayFunctionSledIndex __start_xray_fn_idx[] __attribute__((weak));
+extern const XRayFunctionSledIndex __stop_xray_fn_idx[] __attribute__((weak));
 }
 
 using namespace __xray;
@@ -55,6 +57,8 @@ void __xray_init() XRAY_NEVER_INSTRUMENT
     __sanitizer::SpinMutexLock Guard(&XRayInstrMapMutex);
     XRayInstrMap.Sleds = __start_xray_instr_map;
     XRayInstrMap.Entries = __stop_xray_instr_map - __start_xray_instr_map;
+    XRayInstrMap.SledsIndex = __start_xray_fn_idx;
+    XRayInstrMap.Functions = __stop_xray_fn_idx - __start_xray_fn_idx;
   }
   __sanitizer::atomic_store(&XRayInitialized, true,
                             __sanitizer::memory_order_release);

Modified: projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc	Mon May  8 19:20:55 2017	(r317969)
@@ -132,12 +132,48 @@ CleanupInvoker<Function> scopeCleanup(Fu
   return CleanupInvoker<Function>{Fn};
 }
 
+inline bool patchSled(const XRaySledEntry &Sled, bool Enable,
+                      int32_t FuncId) XRAY_NEVER_INSTRUMENT {
+  // While we're here, we should patch the nop sled. To do that we mprotect
+  // the page containing the function to be writeable.
+  const uint64_t PageSize = GetPageSizeCached();
+  void *PageAlignedAddr =
+      reinterpret_cast<void *>(Sled.Address & ~(PageSize - 1));
+  std::size_t MProtectLen = (Sled.Address + cSledLength) -
+                            reinterpret_cast<uint64_t>(PageAlignedAddr);
+  MProtectHelper Protector(PageAlignedAddr, MProtectLen);
+  if (Protector.MakeWriteable() == -1) {
+    printf("Failed mprotect: %d\n", errno);
+    return XRayPatchingStatus::FAILED;
+  }
+
+  bool Success = false;
+  switch (Sled.Kind) {
+  case XRayEntryType::ENTRY:
+    Success = patchFunctionEntry(Enable, FuncId, Sled, __xray_FunctionEntry);
+    break;
+  case XRayEntryType::EXIT:
+    Success = patchFunctionExit(Enable, FuncId, Sled);
+    break;
+  case XRayEntryType::TAIL:
+    Success = patchFunctionTailExit(Enable, FuncId, Sled);
+    break;
+  case XRayEntryType::LOG_ARGS_ENTRY:
+    Success = patchFunctionEntry(Enable, FuncId, Sled, __xray_ArgLoggerEntry);
+    break;
+  default:
+    Report("Unsupported sled kind '%d' @%04x\n", Sled.Address, int(Sled.Kind));
+    return false;
+  }
+  return Success;
+}
+
 // controlPatching implements the common internals of the patching/unpatching
 // implementation. |Enable| defines whether we're enabling or disabling the
 // runtime XRay instrumentation.
 XRayPatchingStatus controlPatching(bool Enable) XRAY_NEVER_INSTRUMENT {
   if (!__sanitizer::atomic_load(&XRayInitialized,
-                               __sanitizer::memory_order_acquire))
+                                __sanitizer::memory_order_acquire))
     return XRayPatchingStatus::NOT_INITIALIZED; // Not initialized.
 
   uint8_t NotPatching = false;
@@ -179,38 +215,7 @@ XRayPatchingStatus controlPatching(bool 
       ++FuncId;
       CurFun = F;
     }
-
-    // While we're here, we should patch the nop sled. To do that we mprotect
-    // the page containing the function to be writeable.
-    void *PageAlignedAddr =
-        reinterpret_cast<void *>(Sled.Address & ~(PageSize - 1));
-    std::size_t MProtectLen = (Sled.Address + cSledLength) -
-                              reinterpret_cast<uint64_t>(PageAlignedAddr);
-    MProtectHelper Protector(PageAlignedAddr, MProtectLen);
-    if (Protector.MakeWriteable() == -1) {
-      printf("Failed mprotect: %d\n", errno);
-      return XRayPatchingStatus::FAILED;
-    }
-
-    bool Success = false;
-    switch (Sled.Kind) {
-    case XRayEntryType::ENTRY:
-      Success = patchFunctionEntry(Enable, FuncId, Sled, __xray_FunctionEntry);
-      break;
-    case XRayEntryType::EXIT:
-      Success = patchFunctionExit(Enable, FuncId, Sled);
-      break;
-    case XRayEntryType::TAIL:
-      Success = patchFunctionTailExit(Enable, FuncId, Sled);
-      break;
-    case XRayEntryType::LOG_ARGS_ENTRY:
-      Success = patchFunctionEntry(Enable, FuncId, Sled, __xray_ArgLoggerEntry);
-      break;
-    default:
-      Report("Unsupported sled kind: %d\n", int(Sled.Kind));
-      continue;
-    }
-    (void)Success;
+    patchSled(Sled, Enable, FuncId);
   }
   __sanitizer::atomic_store(&XRayPatching, false,
                             __sanitizer::memory_order_release);
@@ -226,6 +231,64 @@ XRayPatchingStatus __xray_unpatch() XRAY
   return controlPatching(false);
 }
 
+XRayPatchingStatus patchFunction(int32_t FuncId,
+                                 bool Enable) XRAY_NEVER_INSTRUMENT {
+  if (!__sanitizer::atomic_load(&XRayInitialized,
+                                __sanitizer::memory_order_acquire))
+    return XRayPatchingStatus::NOT_INITIALIZED; // Not initialized.
+
+  uint8_t NotPatching = false;
+  if (!__sanitizer::atomic_compare_exchange_strong(
+          &XRayPatching, &NotPatching, true, __sanitizer::memory_order_acq_rel))
+    return XRayPatchingStatus::ONGOING; // Already patching.
+
+  // Next, we look for the function index.
+  XRaySledMap InstrMap;
+  {
+    __sanitizer::SpinMutexLock Guard(&XRayInstrMapMutex);
+    InstrMap = XRayInstrMap;
+  }
+
+  // If we don't have an index, we can't patch individual functions.
+  if (InstrMap.Functions == 0)
+    return XRayPatchingStatus::NOT_INITIALIZED;
+
+  // FuncId must be a positive number, less than the number of functions
+  // instrumented.
+  if (FuncId <= 0 || static_cast<size_t>(FuncId) > InstrMap.Functions) {
+    Report("Invalid function id provided: %d\n", FuncId);
+    return XRayPatchingStatus::FAILED;
+  }
+
+  // Now we patch ths sleds for this specific function.
+  auto SledRange = InstrMap.SledsIndex[FuncId - 1];
+  auto *f = SledRange.Begin;
+  auto *e = SledRange.End;
+
+  bool SucceedOnce = false;
+  while (f != e)
+    SucceedOnce |= patchSled(*f++, Enable, FuncId);
+
+  __sanitizer::atomic_store(&XRayPatching, false,
+                            __sanitizer::memory_order_release);
+
+  if (!SucceedOnce) {
+    Report("Failed patching any sled for function '%d'.", FuncId);
+    return XRayPatchingStatus::FAILED;
+  }
+
+  return XRayPatchingStatus::SUCCESS;
+}
+
+XRayPatchingStatus __xray_patch_function(int32_t FuncId) XRAY_NEVER_INSTRUMENT {
+  return patchFunction(FuncId, true);
+}
+
+XRayPatchingStatus
+__xray_unpatch_function(int32_t FuncId) XRAY_NEVER_INSTRUMENT {
+  return patchFunction(FuncId, false);
+}
+
 int __xray_set_handler_arg1(void (*Handler)(int32_t, XRayEntryType, uint64_t)) {
   if (!__sanitizer::atomic_load(&XRayInitialized,
                                 __sanitizer::memory_order_acquire))
@@ -239,3 +302,15 @@ int __xray_set_handler_arg1(void (*Handl
   return 1;
 }
 int __xray_remove_handler_arg1() { return __xray_set_handler_arg1(nullptr); }
+
+uintptr_t __xray_function_address(int32_t FuncId) XRAY_NEVER_INSTRUMENT {
+  __sanitizer::SpinMutexLock Guard(&XRayInstrMapMutex);
+  if (FuncId <= 0 || static_cast<size_t>(FuncId) > XRayInstrMap.Functions)
+    return 0;
+  return XRayInstrMap.SledsIndex[FuncId - 1].Begin->Address;
+}
+
+size_t __xray_max_function_id() XRAY_NEVER_INSTRUMENT {
+  __sanitizer::SpinMutexLock Guard(&XRayInstrMapMutex);
+  return XRayInstrMap.Functions;
+}

Modified: projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface_internal.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface_internal.h	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface_internal.h	Mon May  8 19:20:55 2017	(r317969)
@@ -39,6 +39,11 @@ struct XRaySledEntry {
 #error "Unsupported word size."
 #endif
 };
+
+struct XRayFunctionSledIndex {
+  const XRaySledEntry* Begin;
+  const XRaySledEntry* End;
+};
 }
 
 namespace __xray {
@@ -46,6 +51,8 @@ namespace __xray {
 struct XRaySledMap {
   const XRaySledEntry *Sleds;
   size_t Entries;
+  const XRayFunctionSledIndex *SledsIndex;
+  size_t Functions;
 };
 
 bool patchFunctionEntry(bool Enable, uint32_t FuncId,

Modified: projects/clang500-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__config	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/libc++/include/__config	Mon May  8 19:20:55 2017	(r317969)
@@ -314,7 +314,7 @@ typedef __char32_t char32_t;
 #define _LIBCPP_NO_EXCEPTIONS
 #endif
 
-#if !(__has_feature(cxx_rtti))
+#if !(__has_feature(cxx_rtti)) && !defined(_LIBCPP_NO_RTTI)
 #define _LIBCPP_NO_RTTI
 #endif
 
@@ -1089,6 +1089,13 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
 # define _LIBCPP_DIAGNOSE_ERROR(...)
 #endif
 
+#if __has_attribute(fallthough) || _GNUC_VER >= 700
+// Use a function like macro to imply that it must be followed by a semicolon
+#define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__))
+#else
+#define _LIBCPP_FALLTHROUGH() ((void)0)
+#endif
+
 #if defined(_LIBCPP_ABI_MICROSOFT) && \
    (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases))
 # define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases)
@@ -1113,4 +1120,77 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
 
 #endif // __cplusplus
 
+// Decide whether to use availability macros.
+#if !defined(_LIBCPP_BUILDING_LIBRARY) &&                                      \
+    !defined(_LIBCPP_DISABLE_AVAILABILITY) &&                                  \
+    __has_feature(attribute_availability_with_strict) &&                       \
+    __has_feature(attribute_availability_in_templates)
+#ifdef __APPLE__
+#define _LIBCPP_USE_AVAILABILITY_APPLE
+#endif
+#endif
+
+// Define availability macros.
+#if defined(_LIBCPP_USE_AVAILABILITY_APPLE)
+#define _LIBCPP_AVAILABILITY_SHARED_MUTEX                                      \
+  __attribute__((availability(macosx,strict,introduced=10.12)))                \
+  __attribute__((availability(ios,strict,introduced=10.0)))                    \
+  __attribute__((availability(tvos,strict,introduced=10.0)))                   \
+  __attribute__((availability(watchos,strict,introduced=3.0)))
+#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable))
+#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable))
+#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS                               \
+  __attribute__((availability(macosx,strict,introduced=10.12)))                \
+  __attribute__((availability(ios,strict,introduced=10.0)))                    \
+  __attribute__((availability(tvos,strict,introduced=10.0)))                   \
+  __attribute__((availability(watchos,strict,introduced=3.0)))
+#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE                                  \
+  __attribute__((availability(macosx,strict,introduced=10.12)))                \
+  __attribute__((availability(ios,strict,introduced=10.0)))                    \
+  __attribute__((availability(tvos,strict,introduced=10.0)))                   \
+  __attribute__((availability(watchos,strict,introduced=3.0)))
+#define _LIBCPP_AVAILABILITY_FUTURE_ERROR                                      \
+  __attribute__((availability(ios,strict,introduced=6.0)))
+#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE                                   \
+  __attribute__((availability(macosx,strict,introduced=10.9)))                 \
+  __attribute__((availability(ios,strict,introduced=7.0)))
+#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY                                   \
+  __attribute__((availability(macosx,strict,introduced=10.9)))                 \
+  __attribute__((availability(ios,strict,introduced=7.0)))
+#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR                                 \
+  __attribute__((availability(macosx,strict,introduced=10.9)))                 \
+  __attribute__((availability(ios,strict,introduced=7.0)))
+#else
+#define _LIBCPP_AVAILABILITY_SHARED_MUTEX
+#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS
+#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
+#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS
+#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE
+#define _LIBCPP_AVAILABILITY_FUTURE_ERROR
+#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE
+#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY
+#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR
+#endif
+
+// Define availability that depends on _LIBCPP_NO_EXCEPTIONS.
+#ifdef _LIBCPP_NO_EXCEPTIONS
+#define _LIBCPP_AVAILABILITY_DYNARRAY
+#define _LIBCPP_AVAILABILITY_FUTURE
+#else
+#define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH
+#define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR
+#endif
+
+// Availability of stream API in the dylib got dropped and re-added.  The
+// extern template should effectively be available at:
+//    availability(macosx,introduced=10.9)
+//    availability(ios,introduced=7.0)
+#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) &&                                 \
+    ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) &&                \
+      __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1090) ||                \
+     (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) &&               \
+      __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ <= 70000))
+#define _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE
+#endif
+
 #endif // _LIBCPP_CONFIG

Modified: projects/clang500-import/contrib/libc++/include/__locale
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__locale	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/libc++/include/__locale	Mon May  8 19:20:55 2017	(r317969)
@@ -69,6 +69,7 @@ public:
     class _LIBCPP_TYPE_VIS id;
 
     typedef int category;
+    _LIBCPP_AVAILABILITY_LOCALE_CATEGORY
     static const category // values assigned here are for exposition only
         none     = 0,
         collate  = LC_COLLATE_MASK,

Modified: projects/clang500-import/contrib/libc++/include/__threading_support
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__threading_support	Mon May  8 18:51:13 2017	(r317968)
+++ projects/clang500-import/contrib/libc++/include/__threading_support	Mon May  8 19:20:55 2017	(r317969)
@@ -474,7 +474,10 @@ int __libcpp_condvar_timedwait(__libcpp_
                                  timeout_ms.count() > 0 ? timeout_ms.count()
                                                         : 0,
                                  0))
-    return GetLastError();
+    {
+      auto __ec = GetLastError();

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705081920.v48JKt0b095251>