| # This file tests error messages produced on invalid command line arguments. | |
| # It also checks that help messages are generated as expected. | |
| # Verify that an error message is provided if an input file is missing or incorrect | |
| RUN: not llvm-bolt-binary-analysis 2>&1 | FileCheck -check-prefix=NOFILEARG %s | |
| NOFILEARG: llvm-bolt-binary-analysis{{(\.exe)?}}: Not enough positional command line arguments specified! | |
| NOFILEARG-NEXT: Must specify at least 1 positional argument: See: {{.*}}llvm-bolt-binary-analysis{{(\.exe)?}} --help | |
| RUN: not llvm-bolt-binary-analysis non-existing-file 2>&1 | FileCheck -check-prefix=NONEXISTINGFILEARG %s | |
| # Don't check the OS-dependent message "No such file or directory". | |
| NONEXISTINGFILEARG: llvm-bolt-binary-analysis{{(\.exe)?}}: 'non-existing-file': {{.*}} | |
| RUN: not llvm-bolt-binary-analysis %p/Inputs/dummy.txt 2>&1 | FileCheck -check-prefix=NOELFFILEARG %s | |
| NOELFFILEARG: llvm-bolt-binary-analysis{{(\.exe)?}}: '{{.*}}/Inputs/dummy.txt': The file was not recognized as a valid object file. | |
| RUN: %clang %cflags -Wl,--emit-relocs %p/../../Inputs/asm_foo.s %p/../../Inputs/asm_main.c -o %t.exe | |
| RUN: llvm-bolt-binary-analysis %t.exe 2>&1 | FileCheck -check-prefix=VALIDELFFILEARG --allow-empty %s | |
| # Check that there are no BOLT-WARNING or BOLT-ERROR output lines | |
| VALIDELFFILEARG: BOLT-INFO: | |
| VALIDELFFILEARG-NOT: BOLT-WARNING: | |
| VALIDELFFILEARG-NOT: BOLT-ERROR: | |
| # Check --help output | |
| RUN: llvm-bolt-binary-analysis --help 2>&1 | FileCheck -check-prefix=HELP %s | |
| HELP: OVERVIEW: BinaryAnalysis | |
| HELP-EMPTY: | |
| HELP-NEXT: USAGE: llvm-bolt-binary-analysis{{(\.exe)?}} [options] <executable> | |
| HELP-EMPTY: | |
| HELP-NEXT: OPTIONS: | |
| HELP-EMPTY: | |
| HELP-NEXT: BinaryAnalysis options: | |
| HELP-EMPTY: | |
| HELP-NEXT: --auth-traps-on-failure - Assume authentication instructions always trap on failure | |
| HELP-NEXT: --scanners=<value> - Which gadget scanners to run | |
| HELP-NEXT: =ptrauth-pac-ret - Unprotected returns (pac-ret) | |
| HELP-NEXT: =ptrauth-tail-calls - Tail calls performed with unprotected link register | |
| HELP-NEXT: =ptrauth-forward-cf - Unprotected calls and branches (forward control-flow) | |
| HELP-NEXT: =ptrauth-sign-oracles - Signing of untrusted pointers (signing oracles) | |
| HELP-NEXT: =ptrauth-auth-oracles - Authentication oracles | |
| HELP-NEXT: =ptrauth-all - All Pointer Authentication scanners | |
| HELP-NEXT: =all - All implemented scanners | |
| HELP-EMPTY: | |
| HELP-NEXT: Generic Options: |