Go to file
Oren Ben Simhon fdd72fd522 [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
clang [MS] Fix bug in r327732 with devirtualized complete destructor calls 2018-03-16 22:20:57 +00:00
clang-tools-extra [clangd] Handle multiple callbacks from Sema's completion 2018-03-16 15:23:44 +00:00
compiler-rt Revert "Mmap interceptor new option, Write Exec runtime detector" 2018-03-17 00:31:41 +00:00
debuginfo-tests [Darwin] Specify DWARF 2/4 when running apple accelerator tests. 2018-02-26 20:56:45 +00:00
libclc nan: Implement 2018-03-12 19:46:52 +00:00
libcxx [libcxx][test] Adding apple-clang-9 to UNSUPPORTED in iter_alloc_deduction.fail.cpp. 2018-03-12 18:06:37 +00:00
libcxxabi [demangler] Support for <template-param>s in generic lambdas. 2018-03-16 03:06:30 +00:00
libunwind [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
lld [COFF] Clarify comment. NFC 2018-03-16 20:20:01 +00:00
lldb Fix the Windows build after r327750 2018-03-16 22:19:58 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [X86] Added support for nocf_check attribute for indirect Branch Tracking 2018-03-17 13:29:46 +00:00
openmp Bugfix, extern declarations for libomp functions are `extern "C"` declarations 2018-03-17 02:07:42 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [polly] Change std::sort to llvm::sort in response to r327219 2018-03-13 05:25:23 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.