1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/lib/Transforms/Utils
Oren Ben Simhon 3960b83ba4 [X86] Added support for nocf_check attribute for indirect Branch Tracking
X86 Supports Indirect Branch Tracking (IBT) as part of Control-Flow Enforcement Technology (CET).
IBT instruments ENDBR instructions used to specify valid targets of indirect call / jmp.
The `nocf_check` attribute has two roles in the context of X86 IBT technology:
	1. Appertains to a function - do not add ENDBR instruction at the beginning of the function.
	2. Appertains to a function pointer - do not track the target function of this pointer by adding nocf_check prefix to the indirect-call instruction.

This patch implements `nocf_check` context for Indirect Branch Tracking.
It also auto generates `nocf_check` prefixes before indirect branchs to jump tables that are guarded by range checks.

Differential Revision: https://reviews.llvm.org/D41879

llvm-svn: 327767
2018-03-17 13:29:46 +00:00
..
AddDiscriminators.cpp
ASanStackFrameLayout.cpp
BasicBlockUtils.cpp Utils: Fix DomTree update for entry block 2018-01-31 22:54:37 +00:00
BreakCriticalEdges.cpp
BuildLibCalls.cpp
BypassSlowDivision.cpp
CallPromotionUtils.cpp
CloneFunction.cpp [CloneFunction] Support BB == PredBB in DuplicateInstructionsInSplit. 2018-03-06 13:12:32 +00:00
CloneModule.cpp Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
CMakeLists.txt
CodeExtractor.cpp [X86] Added support for nocf_check attribute for indirect Branch Tracking 2018-03-17 13:29:46 +00:00
CtorUtils.cpp
DemoteRegToStack.cpp
EntryExitInstrumenter.cpp
EscapeEnumerator.cpp
Evaluator.cpp [Evaluator] Evaluate load/store with bitcast 2018-03-13 10:19:50 +00:00
FlattenCFG.cpp
FunctionComparator.cpp
FunctionImportUtils.cpp [ThinLTO] Clear dllimport when setting dso_local. 2018-03-13 15:24:51 +00:00
GlobalStatus.cpp [GlobalOpt] Fix exponential compile-time with selects. 2018-01-31 20:42:25 +00:00
ImportedFunctionsInliningStatistics.cpp
InlineFunction.cpp [InlineFunction] Update deprecated use of IRBuilder CreateMemCpy (NFC) 2018-02-06 19:14:31 +00:00
InstructionNamer.cpp
IntegerDivision.cpp
LCSSA.cpp [Debug] Add dbg.value intrinsics for PHIs created during LCSSA. 2018-02-23 17:38:27 +00:00
LibCallsShrinkWrap.cpp [Dominators] Remove verifyDomTree and add some verifying for Post Dom Trees 2018-02-28 11:00:08 +00:00
LLVMBuild.txt
Local.cpp LowerDbgDeclare: ignore dbg.declares for allocas with volatile access 2018-03-09 00:45:04 +00:00
LoopSimplify.cpp
LoopUnroll.cpp [Dominators] Remove verifyDomTree and add some verifying for Post Dom Trees 2018-02-28 11:00:08 +00:00
LoopUnrollPeel.cpp [LoopUnroll] Peel off iterations if it makes conditions true/false. 2018-03-15 21:34:43 +00:00
LoopUnrollRuntime.cpp
LoopUtils.cpp [LICM/mustexec] Extend first iteration must execute logic to fcmps 2018-03-16 16:33:49 +00:00
LoopVersioning.cpp
LowerInvoke.cpp
LowerMemIntrinsics.cpp [LowerMemIntrinsics] Update uses of deprecated MemIntrinsic::getAlignment API (NFC) 2018-02-05 22:23:58 +00:00
LowerSwitch.cpp
Mem2Reg.cpp
MetaRenamer.cpp
ModuleUtils.cpp
NameAnonGlobals.cpp
OrderedInstructions.cpp
PredicateInfo.cpp
PromoteMemoryToRegister.cpp Revert "[mem2reg] Use range loops (NFCI)" 2018-02-19 22:48:51 +00:00
SanitizerStats.cpp
SimplifyCFG.cpp [Debug] Retain both copies of debug intrinsics in HoistThenElseCodeToIf 2018-03-15 12:28:48 +00:00
SimplifyIndVar.cpp
SimplifyInstructions.cpp
SimplifyLibCalls.cpp [SimplifyLibCalls] Update an obviously copy and pasted header comment to match this file. NFC 2018-03-01 20:05:09 +00:00
SplitModule.cpp Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
SSAUpdater.cpp
StripGCRelocates.cpp
StripNonLineTableDebugInfo.cpp
SymbolRewriter.cpp
UnifyFunctionExitNodes.cpp
Utils.cpp
ValueMapper.cpp Teach ValueMapper to use ODR uniqued types when available 2018-01-30 20:16:32 +00:00
VNCoercion.cpp