diff options
| author | Ramon de C Valle <rcvalle@users.noreply.github.com> | 2025-03-11 19:04:35 +0000 | 
|---|---|---|
| committer | Ramon de C Valle <rcvalle@users.noreply.github.com> | 2025-04-05 04:05:04 +0000 | 
| commit | a98546b961a7fc707155aecbde094fbcecce81fd (patch) | |
| tree | da6b071ea5c57fbc3fc9e44c4edac62eee00fb5f /compiler/rustc_codegen_llvm/src/context.rs | |
| parent | bad13a970a136389187dd1cf2f2fc737a8bea5fc (diff) | |
| download | rust-a98546b961a7fc707155aecbde094fbcecce81fd.tar.gz rust-a98546b961a7fc707155aecbde094fbcecce81fd.zip | |
KCFI: Add KCFI arity indicator support
Adds KCFI arity indicator support to the Rust compiler (see rust-lang/rust#138311, https://github.com/llvm/llvm-project/pull/121070, and https://lore.kernel.org/lkml/CANiq72=3ghFxy8E=AU9p+0imFxKr5iU3sd0hVUXed5BA+KjdNQ@mail.gmail.com/).
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/context.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/context.rs | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs index f7b096ff976..ad98e506690 100644 --- a/compiler/rustc_codegen_llvm/src/context.rs +++ b/compiler/rustc_codegen_llvm/src/context.rs @@ -327,6 +327,22 @@ pub(crate) unsafe fn create_module<'ll>( pfe.prefix().into(), ); } + + // Add "kcfi-arity" module flag if KCFI arity indicator is enabled. (See + // https://github.com/llvm/llvm-project/pull/117121.) + if sess.is_sanitizer_kcfi_arity_enabled() { + // KCFI arity indicator requires LLVM 21.0.0 or later. + if llvm_version < (21, 0, 0) { + tcx.dcx().emit_err(crate::errors::SanitizerKcfiArityRequiresLLVM2100); + } + + llvm::add_module_flag_u32( + llmod, + llvm::ModuleFlagMergeBehavior::Override, + "kcfi-arity", + 1, + ); + } } // Control Flow Guard is currently only supported by MSVC and LLVM on Windows. | 
