llvm-6502/include/llvm/Analysis
Tom Roeder 63dea2c952 Add Forward Control-Flow Integrity.
This commit adds a new pass that can inject checks before indirect calls to
make sure that these calls target known locations. It supports three types of
checks and, at compile time, it can take the name of a custom function to call
when an indirect call check fails. The default failure function ignores the
error and continues.

This pass incidentally moves the function JumpInstrTables::transformType from
private to public and makes it static (with a new argument that specifies the
table type to use); this is so that the CFI code can transform function types
at call sites to determine which jump-instruction table to use for the check at
that site.

Also, this removes support for jumptables in ARM, pending further performance
analysis and discussion.

Review: http://reviews.llvm.org/D4167



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221708 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-11 21:08:02 +00:00
..
AliasAnalysis.h Make AAMDNodes ctor and operator bool (!!!) explicit, mop up bugs and weirdness exposed by it. 2014-10-04 22:44:29 +00:00
AliasSetTracker.h Use AA in LoadCombine 2014-11-03 23:19:16 +00:00
AssumptionTracker.h AssumptionTracker: Don't create temporary CallbackVHs. 2014-10-11 19:13:01 +00:00
BlockFrequencyInfo.h
BlockFrequencyInfoImpl.h Fix typo in comment 2014-10-08 23:30:45 +00:00
BranchProbabilityInfo.h
CallGraph.h Remove Support/IncludeFile.h and its only user. This is actively harmful, since 2014-08-07 20:41:17 +00:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h Match semantics of PointerMayBeCapturedBefore to its name by default 2014-07-21 21:30:22 +00:00
CFG.h
CFGPrinter.h Tweak CFGPrinter to wrap very long names. 2014-08-20 17:38:12 +00:00
CGSCCPassManager.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
CodeMetrics.h Add functions for finding ephemeral values 2014-09-07 13:49:57 +00:00
ConstantFolding.h
ConstantsScanner.h
DependenceAnalysis.h Revert "Analysis: unique_ptr-ify DependenceAnalysis::collectCoeffInfo" 2014-08-26 02:03:38 +00:00
DominanceFrontier.h These functions are not actually defined for NDEBUG or !LLVM_DUMP_ENABLED, so guarding the declarations as well. NFC, silences MSVC warnings in release builds. 2014-10-24 15:16:39 +00:00
DominanceFrontierImpl.h Reduce double set lookups. NFC. 2014-10-10 15:32:50 +00:00
DomPrinter.h
DOTGraphTraitsPass.h Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
FindUsedTypes.h
FunctionTargetTransformInfo.h Add a new pass FunctionTargetTransformInfo. This pass serves as a 2014-09-18 00:34:14 +00:00
InlineCost.h Add functions for finding ephemeral values 2014-09-07 13:49:57 +00:00
InstructionSimplify.h Make use of @llvm.assume in ValueTracking (computeKnownBits, etc.) 2014-09-07 18:57:58 +00:00
Interval.h
IntervalIterator.h Reduce double set lookups. NFC. 2014-10-10 15:32:50 +00:00
IntervalPartition.h
IVUsers.h Repace SmallPtrSet with SmallPtrSetImpl in function arguments to avoid needing to mention the size. 2014-08-21 05:55:13 +00:00
JumpInstrTableInfo.h Add Forward Control-Flow Integrity. 2014-11-11 21:08:02 +00:00
LazyCallGraph.h Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
LazyValueInfo.h Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
LibCallAliasAnalysis.h
LibCallSemantics.h
Lint.h
Loads.h AA metadata refactoring (introduce AAMDNodes) 2014-07-24 12:16:19 +00:00
LoopInfo.h Add optimization remarks to the loop unroller and vectorizer. 2014-04-29 14:27:31 +00:00
LoopInfoImpl.h
LoopIterator.h
LoopPass.h Fix assertion in LICM doFinalization() 2014-09-24 16:48:31 +00:00
MemoryBuiltins.h
MemoryDependenceAnalysis.h Make use of @llvm.assume in ValueTracking (computeKnownBits, etc.) 2014-09-07 18:57:58 +00:00
Passes.h Add a CFL Alias Analysis implementation 2014-09-02 21:43:13 +00:00
PHITransAddr.h Make use of @llvm.assume in ValueTracking (computeKnownBits, etc.) 2014-09-07 18:57:58 +00:00
PostDominators.h Fix typos in comments, NFC 2014-08-29 21:53:01 +00:00
PtrUseVisitor.h
RegionInfo.h These functions are not actually defined for NDEBUG or !LLVM_DUMP_ENABLED, so guarding the declarations as well. NFC, silences MSVC warnings in release builds. 2014-10-24 15:16:39 +00:00
RegionInfoImpl.h Header hygiene: remove using directive and #undef DEBUG_TYPE once we're done. 2014-07-30 00:25:24 +00:00
RegionIterator.h Templatify RegionInfo so it works on MachineBasicBlocks 2014-07-19 18:29:29 +00:00
RegionPass.h
RegionPrinter.h
ScalarEvolution.h [ScalarEvolution] Guard dump() with #if 2014-10-27 21:14:41 +00:00
ScalarEvolutionExpander.h
ScalarEvolutionExpressions.h removed circular definitions in comments 2014-07-14 21:51:59 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h
TargetFolder.h Add CreatePointerBitCastOrAddrSpaceCast to IRBuilder and co. 2014-07-14 17:24:35 +00:00
TargetTransformInfo.h Add a new pass FunctionTargetTransformInfo. This pass serves as a 2014-09-18 00:34:14 +00:00
Trace.h
ValueTracking.h Make use of @llvm.assume in ValueTracking (computeKnownBits, etc.) 2014-09-07 18:57:58 +00:00