Add codegen option for branch protection and pointer authentication on AArch64

The branch-protection codegen option enables the use of hint-space pointer
authentication code for AArch64 targets
This commit is contained in:
James McGregor 2021-07-13 12:14:26 +01:00 committed by Jamie Cunliffe
parent 2446a21595
commit 837cc1687f
12 changed files with 266 additions and 7 deletions

View file

@ -0,0 +1,41 @@
// Test that the correct module flags are emitted with different branch protection flags.
// revisions: bti pac-ret leaf b-key
// min-llvm-version: 12.0.0
// needs-llvm-components: aarch64
// [bti] compile-flags: -C branch-protection=bti
// [pac-ret] compile-flags: -C branch-protection=pac-ret
// [leaf] compile-flags: -C branch-protection=pac-ret+leaf
// [b-key] compile-flags: -C branch-protection=pac-ret+b-key
// compile-flags: --target aarch64-unknown-linux-gnu
#![crate_type = "lib"]
#![feature(no_core, lang_items)]
#![no_core]
#[lang="sized"]
trait Sized { }
// A basic test function.
pub fn test() {
}
// bti: !"branch-target-enforcement", i32 1
// bti: !"sign-return-address", i32 0
// bti: !"sign-return-address-all", i32 0
// bti: !"sign-return-address-with-bkey", i32 0
// pac-ret: !"branch-target-enforcement", i32 0
// pac-ret: !"sign-return-address", i32 1
// pac-ret: !"sign-return-address-all", i32 0
// pac-ret: !"sign-return-address-with-bkey", i32 0
// leaf: !"branch-target-enforcement", i32 0
// leaf: !"sign-return-address", i32 1
// leaf: !"sign-return-address-all", i32 1
// leaf: !"sign-return-address-with-bkey", i32 0
// b-key: !"branch-target-enforcement", i32 0
// b-key: !"sign-return-address", i32 1
// b-key: !"sign-return-address-all", i32 0
// b-key: !"sign-return-address-with-bkey", i32 1