blob: 04af1b66140ddda5c680c7abf8bb284add92d9ce [file] [edit]
// ignore-tidy-file-linelength
//@ only-pauthtest
//@ revisions: DEFAULT ALL DISABLE_JUMP DISABLE_AUTH_TRAPS DISABLE_CALLS DISABLE_INDIRCT_GOTOS DISABLE_RETURNS DISABLE_INTRINSICS DISABLE_TYPEINFO DISABLE_VT_PTR_ADDR DISABLE_VT_PTR_TYPE NONE
//@ add-minicore
#![crate_type = "lib"]
#![no_std]
#![no_core]
#![feature(no_core)]
extern crate minicore;
//@[DEFAULT] needs-llvm-components: aarch64
//@[DEFAULT] compile-flags: --target=aarch64-unknown-linux-pauthtest
//@[ALL] needs-llvm-components: aarch64
//@[ALL] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=+aarch64-jump-table-hardening,+auth-traps,+calls,+indirect-gotos,+return-addresses
//@[DISABLE_JUMP] needs-llvm-components: aarch64
//@[DISABLE_JUMP] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-aarch64-jump-table-hardening
//@[DISABLE_AUTH_TRAPS] needs-llvm-components: aarch64
//@[DISABLE_AUTH_TRAPS] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-auth-traps
//@[DISABLE_CALLS] needs-llvm-components: aarch64
//@[DISABLE_CALLS] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-calls
//@[DISABLE_INDIRCT_GOTOS] needs-llvm-components: aarch64
//@[DISABLE_INDIRCT_GOTOS] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-indirect-gotos
//@[DISABLE_RETURNS] needs-llvm-components: aarch64
//@[DISABLE_RETURNS] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-return-addresses
//@[DISABLE_INTRINSICS] needs-llvm-components: aarch64
//@[DISABLE_INTRINSICS] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-intrinsics
//@[DISABLE_TYPEINFO] needs-llvm-components: aarch64
//@[DISABLE_TYPEINFO] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-typeinfo-vt-ptr-discrimination
//@[DISABLE_VT_PTR_ADDR] needs-llvm-components: aarch64
//@[DISABLE_VT_PTR_ADDR] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-vt-ptr-addr-discrimination
//@[DISABLE_VT_PTR_TYPE] needs-llvm-components: aarch64
//@[DISABLE_VT_PTR_TYPE] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-vt-ptr-type-discrimination
//@[NONE] needs-llvm-components: aarch64
//@[NONE] compile-flags: --target=aarch64-unknown-linux-pauthtest -Zpointer-authentication=-aarch64-jump-table-hardening,-auth-traps,-calls,-indirect-gotos,-return-addresses,-init-fini,-init-fini-address-discrimination,-intrinsics,-typeinfo-vt-ptr-discrimination,-vt-ptr-addr-discrimination,-vt-ptr-type-discrimination
// CHECK: define {{.*}} @{{.*}}main{{.*}} [[ATTR_MAIN:#[0-9]+]]
#[inline(never)]
pub fn main() {}
// DEFAULT: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DEFAULT-SAME: "ptrauth-auth-traps"
// DEFAULT-SAME: "ptrauth-calls"
// DEFAULT-SAME: "ptrauth-indirect-gotos"
// DEFAULT-SAME: "ptrauth-returns"
// DEFAULT: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DEFAULT-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1791}
// DISABLE_JUMP-NOT: aarch64-jump-table-hardening
// DISABLE_JUMP: attributes [[ATTR_MAIN]] = { {{.*}}"ptrauth-auth-traps"
// DISABLE_JUMP-SAME: "ptrauth-calls"
// DISABLE_JUMP-SAME: "ptrauth-indirect-gotos"
// DISABLE_JUMP-SAME: "ptrauth-returns"
// DISABLE_JUMP: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_JUMP-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1791}
// DISABLE_AUTH_TRAPS-NOT: ptrauth-auth-traps
// DISABLE_AUTH_TRAPS: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_AUTH_TRAPS-SAME: "ptrauth-calls"
// DISABLE_AUTH_TRAPS-SAME: "ptrauth-indirect-gotos"
// DISABLE_AUTH_TRAPS-SAME: "ptrauth-returns"
// DISABLE_AUTH_TRAPS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_AUTH_TRAPS-NEXT !{i32 1, !"aarch64-elf-pauthabi-version", i32 1783}
// DISABLE_CALLS-NOT: ptrauth-calls
// DISABLE_CALLS: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_CALLS-SAME: "ptrauth-auth-traps"
// DISABLE_CALLS-SAME: "ptrauth-indirect-gotos"
// DISABLE_CALLS-SAME: "ptrauth-returns"
// DISABLE_CALLS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_CALLS-SAME-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1789}
// DISABLE_INDIRCT_GOTOS-NOT: ptrauth-indirect-gotos
// DISABLE_INDIRCT_GOTOS: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_INDIRCT_GOTOS-SAME: "ptrauth-auth-traps"
// DISABLE_INDIRCT_GOTOS-SAME: "ptrauth-calls"
// DISABLE_INDIRCT_GOTOS-SAME: "ptrauth-returns"
// DISABLE_INDIRCT_GOTOS: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1279}
// DISABLE_INDIRCT_GOTOS-NEXT: !{i32 1, !"ptrauth-sign-personality", i32 1}
// DISABLE_RETURNS-NOT: ptrauth-returns
// DISABLE_RETURNS: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_RETURNS-SAME: "ptrauth-auth-traps"
// DISABLE_RETURNS-SAME: "ptrauth-calls"
// DISABLE_RETURNS-SAME: "ptrauth-indirect-gotos"
// DISABLE_RETURNS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_RETURNS-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1787}
// DISABLE_INTRINSICS: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_INTRINSICS-SAME: "ptrauth-auth-traps"
// DISABLE_INTRINSICS-SAME: "ptrauth-calls"
// DISABLE_INTRINSICS-SAME: "ptrauth-indirect-gotos"
// DISABLE_INTRINSICS-SAME: "ptrauth-returns"
// DISABLE_INTRINSICS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_INTRINSICS-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1790}
// DISABLE_TYPEINFO: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_TYPEINFO-SAME: "ptrauth-auth-traps"
// DISABLE_TYPEINFO-SAME: "ptrauth-calls"
// DISABLE_TYPEINFO-SAME: "ptrauth-indirect-gotos"
// DISABLE_TYPEINFO-SAME: "ptrauth-returns"
// DISABLE_TYPEINFO: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_TYPEINFO-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 767}
// DISABLE_VT_PTR_ADDR: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_VT_PTR_ADDR-SAME: "ptrauth-auth-traps"
// DISABLE_VT_PTR_ADDR-SAME: "ptrauth-calls"
// DISABLE_VT_PTR_ADDR-SAME: "ptrauth-indirect-gotos"
// DISABLE_VT_PTR_ADDR-SAME: "ptrauth-returns"
// DISABLE_VT_PTR_ADDR: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_VT_PTR_ADDR-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1775}
// DISABLE_VT_PTR_TYPE: attributes [[ATTR_MAIN]] = { {{.*}}"aarch64-jump-table-hardening"
// DISABLE_VT_PTR_TYPE-SAME: "ptrauth-auth-traps"
// DISABLE_VT_PTR_TYPE-SAME: "ptrauth-calls"
// DISABLE_VT_PTR_TYPE-SAME: "ptrauth-indirect-gotos"
// DISABLE_VT_PTR_TYPE-SAME: "ptrauth-returns"
// DISABLE_VT_PTR_TYPE: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
// DISABLE_VT_PTR_TYPE-NEXT: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1759}
// NONE-NOT: ptrauth-returns
// NONE-NOT: aarch64-jump-table-hardening
// NONE-NOT: ptrauth-auth-traps
// NONE-NOT: ptrauth-calls
// NONE-NOT: ptrauth-indirect-gotos
// NONE-NOT: aarch64-elf-pauthabi-platform
// NONE-NOT: aarch64-elf-pauthabi-version