| // REQUIRES: x86-registered-target |
| // RUN: %clang --target=x86_64-pc-linux -fcf-protection -include cet.h -c %s -o - | llvm-readelf -n - | FileCheck %s |
| // RUN: %clang --target=x86_64-pc-linux -include cet.h -c %s -o - | llvm-readelf -S - | FileCheck %s --check-prefixes=NOCET |
| // RUN: %clang --target=x86_64-pc-linux -include cet.h -S %s -o - | FileCheck %s --check-prefixes=NOENDBR |
| // RUN: %clang --target=x86_64-pc-linux -fcf-protection -include cet.h -S %s -o - | FileCheck %s --check-prefixes=ENDBR64 |
| |
| // RUN: %clang --target=i386-pc-linux -fcf-protection -include cet.h -c %s -o - | llvm-readelf -n - | FileCheck %s |
| // RUN: %clang --target=i386-pc-linux -include cet.h -c %s -o - | llvm-readelf -S - | FileCheck %s --check-prefixes=NOCET |
| // RUN: %clang --target=i386-pc-linux -include cet.h -S %s -o - | FileCheck %s --check-prefixes=NOENDBR |
| // RUN: %clang --target=i386-pc-linux -fcf-protection -include cet.h -S %s -o - | FileCheck %s --check-prefixes=ENDBR32 |
| |
| // CHECK: IBT, SHSTK |
| |
| // NOCET: Section Headers |
| // NOCET-NOT: .note.gnu.property |
| |
| // NOENDBR: foo |
| // NOENDBR-NOT: endbr |
| |
| // ENDBR64: endbr64 |
| // ENDBR32: endbr32 |
| .text |
| .globl foo |
| .type foo, @function |
| foo: |
| _CET_ENDBR |
| ret |