about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorSLASHLogin <loginmlgxd@gmail.com>2022-08-26 00:03:53 +0200
committerSLASHLogin <loginmlgxd@gmail.com>2022-11-09 14:56:20 +0100
commit59b8aedf0e7c48472e335d6e901e61e4641f5253 (patch)
tree4797ac7cb0f1788de1544e38ac5e7eadec27f3b1 /compiler/rustc_codegen_llvm/src
parentec1e101e1b845579eaaed164b096ae3784f3479d (diff)
downloadrust-59b8aedf0e7c48472e335d6e901e61e4641f5253.tar.gz
rust-59b8aedf0e7c48472e335d6e901e61e4641f5253.zip
Port branch protection on aarch64
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
-rw-r--r--compiler/rustc_codegen_llvm/src/context.rs3
-rw-r--r--compiler/rustc_codegen_llvm/src/errors.rs4
2 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
index c22ec128dac..3ac0778e3bd 100644
--- a/compiler/rustc_codegen_llvm/src/context.rs
+++ b/compiler/rustc_codegen_llvm/src/context.rs
@@ -3,6 +3,7 @@ use crate::back::write::to_llvm_code_model;
 use crate::callee::get_fn;
 use crate::coverageinfo;
 use crate::debuginfo;
+use crate::errors::BranchProtectionRequiresAArch64;
 use crate::llvm;
 use crate::llvm_util;
 use crate::type_::Type;
@@ -275,7 +276,7 @@ pub unsafe fn create_module<'ll>(
 
     if let Some(BranchProtection { bti, pac_ret }) = sess.opts.unstable_opts.branch_protection {
         if sess.target.arch != "aarch64" {
-            sess.err("-Zbranch-protection is only supported on aarch64");
+            sess.emit_err(BranchProtectionRequiresAArch64);
         } else {
             llvm::LLVMRustAddModuleFlag(
                 llmod,
diff --git a/compiler/rustc_codegen_llvm/src/errors.rs b/compiler/rustc_codegen_llvm/src/errors.rs
index ed435e555d7..e740e02dd1c 100644
--- a/compiler/rustc_codegen_llvm/src/errors.rs
+++ b/compiler/rustc_codegen_llvm/src/errors.rs
@@ -55,3 +55,7 @@ pub(crate) struct SymbolAlreadyDefined<'a> {
     pub span: Span,
     pub symbol_name: &'a str,
 }
+
+#[derive(SessionDiagnostic)]
+#[diag(codegen_llvm::branch_protection_requires_aarch64)]
+pub(crate) struct BranchProtectionRequiresAArch64;