| // 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 |