| // REQUIRES: aarch64-registered-target |
| |
| // When -mmark-bti-property is passed the generated file object gets BTI marking. |
| // RUN: %clang -target arm64-linux-none -mmark-bti-property -c -o - %s | llvm-readobj -n - | FileCheck -check-prefix=CHECK -check-prefix=CHECK_GEN %s |
| // RUN: %clang -target arm64-linux-none -DNOTE_PRESENT -c %s -o - | llvm-readobj -n - | FileCheck -check-prefix=CHECK -check-prefix=CHECK_PRESET %s |
| // RUN: %clang -target arm64-linux-none -mmark-bti-property -DNOTE_PRESENT -c %s -o - | llvm-readobj -n - | FileCheck -check-prefix=CHECK -check-prefix=CHECK_PRESET %s |
| // RUN: %clang -target arm64-linux-none -mmark-bti-property -DNOTE_PRESENT -c %s -o - 2>&1 | FileCheck -check-prefix=CHECK_WARNING %s |
| // |
| // CHECK_WARNING: The .note.gnu.property is not emitted because it is already present. |
| // CHECK: Name: .note.gnu.property |
| // CHECK: Type: NT_GNU_PROPERTY_TYPE_0 |
| // CHECK_GEN: aarch64 feature: BTI |
| // CHECK_PRESET: aarch64 feature: BTI, PAC |
| |
| #ifdef NOTE_PRESENT |
| .section .note.gnu.property, "a"; |
| .balign 8; |
| .long 4; |
| .long 0x10; |
| .long 0x5 |
| .asciz "GNU" |
| .long 0xc0000000 |
| .long 4 |
| .long 3 |
| .long 0 |
| #endif |