diff options
Diffstat (limited to 'llvm/test/tools/llvm-cgdata/error.test')
| -rw-r--r-- | llvm/test/tools/llvm-cgdata/error.test | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cgdata/error.test b/llvm/test/tools/llvm-cgdata/error.test new file mode 100644 index 000000000000..c992174505c1 --- /dev/null +++ b/llvm/test/tools/llvm-cgdata/error.test @@ -0,0 +1,38 @@ +# Test various error cases + +# Synthesize a header only cgdata. +# struct Header { +# uint64_t Magic; +# uint32_t Version; +# uint32_t DataKind; +# uint64_t OutlinedHashTreeOffset; +# } +RUN: touch %t_empty.cgdata +RUN: not llvm-cgdata --show %t_empty.cgdata 2>&1 | FileCheck %s --check-prefix=EMPTY +EMPTY: {{.}}cgdata: empty codegen data + +# Not a magic. +RUN: printf '\xff' > %t_malformed.cgdata +RUN: not llvm-cgdata --show %t_malformed.cgdata 2>&1 | FileCheck %s --check-prefix=MALFORMED +MALFORMED: {{.}}cgdata: malformed codegen data + +# The minimum header size is 24. +RUN: printf '\xffcgdata\x81' > %t_corrupt.cgdata +RUN: not llvm-cgdata --show %t_corrupt.cgdata 2>&1 | FileCheck %s --check-prefix=CORRUPT +CORRUPT: {{.}}cgdata: invalid codegen data (file header is corrupt) + +# The current version 1 while the header says 2. +RUN: printf '\xffcgdata\x81' > %t_version.cgdata +RUN: printf '\x02\x00\x00\x00' >> %t_version.cgdata +RUN: printf '\x00\x00\x00\x00' >> %t_version.cgdata +RUN: printf '\x18\x00\x00\x00\x00\x00\x00\x00' >> %t_version.cgdata +RUN: not llvm-cgdata --show %t_version.cgdata 2>&1 | FileCheck %s --check-prefix=BAD_VERSION +BAD_VERSION: {{.}}cgdata: unsupported codegen data version + +# Header says an outlined hash tree, but the file ends after the header. +RUN: printf '\xffcgdata\x81' > %t_eof.cgdata +RUN: printf '\x01\x00\x00\x00' >> %t_eof.cgdata +RUN: printf '\x01\x00\x00\x00' >> %t_eof.cgdata +RUN: printf '\x18\x00\x00\x00\x00\x00\x00\x00' >> %t_eof.cgdata +RUN: not llvm-cgdata --show %t_eof.cgdata 2>&1 | FileCheck %s --check-prefix=EOF +EOF: {{.}}cgdata: end of File |
