diff options
author | Oren Ben Simhon <oren.ben.simhon@intel.com> | 2018-01-09 08:51:18 +0000 |
---|---|---|
committer | Oren Ben Simhon <oren.ben.simhon@intel.com> | 2018-01-09 08:51:18 +0000 |
commit | 1c7191d80818582336cff3ac1d5ba0df46ede602 (patch) | |
tree | f4f2b6cb219f2d8d5adc38739d9de0600ee4f179 /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | 2d44399b16d45949ac311e5feaae5baa61018d3f (diff) |
Instrument Control Flow For Indirect Branch Tracking
CET (Control-Flow Enforcement Technology) introduces a new mechanism called IBT (Indirect Branch Tracking).
According to IBT, each Indirect branch should land on dedicated ENDBR instruction (End Branch).
The new pass adds ENDBR instructions for every indirect jmp/call (including jumps using jump tables / switches).
For more information, please see the following:
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf
Differential Revision: https://reviews.llvm.org/D40482
Change-Id: Icb754489faf483a95248f96982a4e8b1009eb709
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index e95e6ecae09..48e2073c41c 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -426,6 +426,8 @@ void X86PassConfig::addPreEmitPass() { if (getOptLevel() != CodeGenOpt::None) addPass(new X86ExecutionDepsFix()); + addPass(createX86IndirectBranchTrackingPass()); + if (UseVZeroUpper) addPass(createX86IssueVZeroUpperPass()); |