diff options
author | Martin Nowack <martin@se.inf.tu-dresden.de> | 2014-04-29 09:18:29 +0200 |
---|---|---|
committer | Martin Nowack <martin@se.inf.tu-dresden.de> | 2014-09-14 19:46:19 +0200 |
commit | a36cc972f9a8b56f48d90a5c99b9a5cb02a00a3c (patch) | |
tree | d335c1383aa1ce0ce4714c89f1d4c1ead6161a37 | |
parent | 70fe6477b58c93366368951dc5ba9bcb6c0fe168 (diff) | |
download | klee-a36cc972f9a8b56f48d90a5c99b9a5cb02a00a3c.tar.gz |
Fix testcase FD_Fail2.c
Major issue was that puts was used for the succeed printf calls. With newer gcc/clang versions, printf is always used. The former took different code paths leading to much more possibilities to trigger failed writes and therefore generating more test cases. This patch avoids the generation of puts. And checks for the 4 possible generated test cases for 2 possible errors.
-rw-r--r-- | test/Runtime/POSIX/FD_Fail2.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/test/Runtime/POSIX/FD_Fail2.c b/test/Runtime/POSIX/FD_Fail2.c index 74957597..cdf1303e 100644 --- a/test/Runtime/POSIX/FD_Fail2.c +++ b/test/Runtime/POSIX/FD_Fail2.c @@ -1,13 +1,16 @@ // RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc // RUN: rm -rf %t.klee-out -// RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime --search=dfs %t1.bc --sym-files 1 10 --max-fail 1 +// RUN: %klee --output-dir=%t.klee-out --libc=uclibc --posix-runtime --search=dfs %t1.bc --sym-files 1 10 --max-fail 2 +// +// Check that generated assembly doesn't use puts to output strings +// RUN: FileCheck -input-file=%t.klee-out/assembly.ll %s +// CHECK-NOT: puts +// // RUN: test -f %t.klee-out/test000001.ktest // RUN: test -f %t.klee-out/test000002.ktest // RUN: test -f %t.klee-out/test000003.ktest // RUN: test -f %t.klee-out/test000004.ktest -// RUN: test -f %t.klee-out/test000005.ktest -// RUN: test -f %t.klee-out/test000006.ktest -// RUN: test -f %t.klee-out/test000007.ktest +// FAIL: test -f %t.klee-out/test000005.ktest #include <stdio.h> #include <assert.h> @@ -18,7 +21,8 @@ #include <stdio.h> int main(int argc, char** argv) { - char buf[1024]; + char buf[1024]; + // Open the symbolic file "A" int fd = open("A", O_RDONLY); assert(fd != -1); @@ -26,12 +30,12 @@ int main(int argc, char** argv) { r = read(fd, buf, 1, 5); if (r != -1) - printf("read() succeeded\n"); + printf("read() succeeded %u\n", fd); else printf("read() failed with error '%s'\n", strerror(errno)); r = close(fd); if (r != -1) - printf("close() succeeded\n"); + printf("close() succeeded %u\n", fd); else printf("close() failed with error '%s'\n", strerror(errno)); return 0; |