1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/lib/IR
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
..
AsmWriter.cpp [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
AttributeImpl.h
Attributes.cpp [X86] Added support for nocf_check attribute for indirect Branch Tracking 2018-03-17 13:29:46 +00:00
AttributesCompatFunc.td
AutoUpgrade.cpp [X86] Add 512-bit unmasked pmulhrsw/pmulhw/pmulhuw intrinsics. Remove and auto upgrade 128/256/512 bit masked pmulhrsw/pmulhw/pmulhuw intrinsics. 2018-02-20 07:28:14 +00:00
BasicBlock.cpp IR: Fix BasicBlock::phis for empty blocks 2017-12-29 19:25:53 +00:00
CMakeLists.txt GCOV: Move GCOV from IR & Support into ProfileData to fix layering 2017-11-03 20:57:10 +00:00
Comdat.cpp [LLVM-C] [bindings/go] Add C and Golang bindings for COMDAT 2018-03-14 18:33:53 +00:00
ConstantFold.cpp [ConstantFolding, InstSimplify] Handle more vector GEPs 2018-03-15 16:00:29 +00:00
ConstantFold.h
ConstantRange.cpp [ConstantRange] Support for ashr in ConstantRange computation 2017-12-18 13:01:32 +00:00
Constants.cpp [PatternMatch, InstSimplify] fix m_NaN to work with vector constants and use it 2018-03-02 18:36:08 +00:00
ConstantsContext.h
Core.cpp Fix 'not all control paths return a value' MSVC warning. NFCI. 2018-03-14 12:04:51 +00:00
DataLayout.cpp Add default address space for functions to the data layout (1/3) 2018-02-19 09:56:22 +00:00
DebugInfo.cpp Remove redundant includes from lib/IR. 2017-12-13 21:30:52 +00:00
DebugInfoMetadata.cpp [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
DebugLoc.cpp Use standard print(dbgs()) pattern to implement DebugLoc::dump 2018-03-15 22:51:55 +00:00
DiagnosticHandler.cpp
DiagnosticInfo.cpp This change add's optimization remark in LoopVersioning LICM pass. 2018-01-23 09:47:28 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
Dominators.cpp [Dominators] Remove verifyDomTree and add some verifying for Post Dom Trees 2018-02-28 11:00:08 +00:00
Function.cpp [MIRParser] Accept overloaded intrinsic names w/o type suffixes 2018-02-28 23:51:49 +00:00
Globals.cpp Represent runtime preemption in the IR. 2017-10-26 15:00:26 +00:00
GVMaterializer.cpp
InlineAsm.cpp [inlineasm] Fix crash when number of matched input constraint operands overflows signed char 2017-10-25 12:51:32 +00:00
Instruction.cpp [IPSCCP] Remove calls without side effects 2018-01-09 21:58:46 +00:00
Instructions.cpp [InstCombine] Allow fptrunc (fpext X)) to be reduced to a single fpext/ftrunc 2018-03-02 18:16:51 +00:00
IntrinsicInst.cpp
IRBuilder.cpp [InstCombine] allow fmul-sqrt folds with less than full -ffast-math 2018-02-23 21:16:12 +00:00
IRPrintingPasses.cpp [IR] Avoid dangling else warning. NFC. 2017-12-01 18:39:58 +00:00
LegacyPassManager.cpp IR printing improvement for function passes - introducing -print-module-scope 2017-12-01 17:42:46 +00:00
LLVMBuild.txt
LLVMContext.cpp Irreducible loop metadata for more accurate block frequency under PGO. 2017-11-02 22:26:51 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
Mangler.cpp [IR] Avoid the need to prefix MS C++ symbols with '\01' 2018-03-16 20:13:32 +00:00
MDBuilder.cpp [IR] Fix creating mutable versions of TBAA access tags 2018-02-13 14:44:25 +00:00
Metadata.cpp [DeadArgumentElimination] Preserve llvm.dbg.values's first argument 2018-01-30 16:42:04 +00:00
MetadataImpl.h
Module.cpp Intrinsics calls should avoid the PLT when "RtLibUseGOT" metadata is present. 2018-02-23 21:32:06 +00:00
ModuleSummaryIndex.cpp [ThinLTO] Add GraphTraits for FunctionSummaries 2018-02-19 15:14:50 +00:00
Operator.cpp Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
OptBisect.cpp
Pass.cpp Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
PassManager.cpp
PassRegistry.cpp
ProfileSummary.cpp
SafepointIRVerifier.cpp [SafepointIRVerifier] Allow non-dereferencing uses of unrelocated or poisoned PHI nodes 2017-12-25 09:35:10 +00:00
Statepoint.cpp
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp Use ranged for loops in TypeFinder.cpp, NFC 2018-02-08 18:02:27 +00:00
Use.cpp
User.cpp Remove redundant includes from lib/IR. 2017-12-13 21:30:52 +00:00
Value.cpp Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
ValueSymbolTable.cpp [NVPTX] Assign valid global names 2017-12-04 14:19:33 +00:00
ValueTypes.cpp [WebAssembly] Add EVT::getEVTString() for except_ref type 2018-03-09 23:29:06 +00:00
Verifier.cpp [X86] Added support for nocf_check attribute for indirect Branch Tracking 2018-03-17 13:29:46 +00:00