diff options
author | Ramon de C Valle <rcvalle@users.noreply.github.com> | 2022-11-21 21:29:00 -0800 |
---|---|---|
committer | Ramon de C Valle <rcvalle@users.noreply.github.com> | 2022-12-08 17:24:39 -0800 |
commit | 65698ae9f30f5ad72224edd1884fb4ddd1279366 (patch) | |
tree | d5f5845b0ff7e964255762d7ca97c16ca5ecb064 /compiler/rustc_codegen_gcc | |
parent | b7bc90fea3b441234a84b49fdafeb75815eebbab (diff) | |
download | rust-65698ae9f30f5ad72224edd1884fb4ddd1279366.tar.gz |
Add LLVM KCFI support to the Rust compiler
This commit adds LLVM Kernel Control Flow Integrity (KCFI) support to
the Rust compiler. It initially provides forward-edge control flow
protection for operating systems kernels for Rust-compiled code only by
aggregating function pointers in groups identified by their return and
parameter types. (See llvm/llvm-project@cff5bef.)
Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by identifying C char and integer type uses at the
time types are encoded (see Type metadata in the design document in the
tracking issue #89653).
LLVM KCFI can be enabled with -Zsanitizer=kcfi.
Co-authored-by: bjorn3 <17426603+bjorn3@users.noreply.github.com>
Diffstat (limited to 'compiler/rustc_codegen_gcc')
-rw-r--r-- | compiler/rustc_codegen_gcc/src/type_.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_gcc/src/type_.rs b/compiler/rustc_codegen_gcc/src/type_.rs index bdf7318ce48..89a415cdb36 100644 --- a/compiler/rustc_codegen_gcc/src/type_.rs +++ b/compiler/rustc_codegen_gcc/src/type_.rs @@ -300,4 +300,8 @@ impl<'gcc, 'tcx> TypeMembershipMethods<'tcx> for CodegenCx<'gcc, 'tcx> { // Unsupported. self.context.new_rvalue_from_int(self.int_type, 0) } + + fn set_kcfi_type_metadata(&self, _function: RValue<'gcc>, _kcfi_typeid: u32) { + // Unsupported. + } } |