diff options
author | Andrea Mattavelli <andreamattavelli@users.noreply.github.com> | 2017-03-06 08:01:18 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-06 08:01:18 +0000 |
commit | d2490908daee27974f8a03c8c7c80930d39f6098 (patch) | |
tree | 568961bf4867a316ddf6ed200876bca74afca0e6 | |
parent | 930cd1750857111e7cc08812e148cb228f70e1b8 (diff) | |
parent | abc44d16c3f8ae6984630537254bab2027cae2f5 (diff) | |
download | klee-d2490908daee27974f8a03c8c7c80930d39f6098.tar.gz |
Merge pull request #609 from ccadar/warnings
Added new option --warnings-only-to-file which causes warnings to be written to warnings.txt only.
-rw-r--r-- | lib/Support/ErrorHandling.cpp | 13 | ||||
-rw-r--r-- | test/Feature/LinkLLVMLib.c | 2 | ||||
-rw-r--r-- | test/Feature/MemoryLimit.c | 6 | ||||
-rw-r--r-- | test/Feature/Realloc.c | 2 |
4 files changed, 16 insertions, 7 deletions
diff --git a/lib/Support/ErrorHandling.cpp b/lib/Support/ErrorHandling.cpp index 7ca223e5..00647701 100644 --- a/lib/Support/ErrorHandling.cpp +++ b/lib/Support/ErrorHandling.cpp @@ -10,6 +10,7 @@ #include "klee/Internal/Support/ErrorHandling.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Support/CommandLine.h" #include <stdlib.h> #include <stdio.h> @@ -20,6 +21,7 @@ #include <set> using namespace klee; +using namespace llvm; FILE *klee::klee_warning_file = NULL; FILE *klee::klee_message_file = NULL; @@ -29,6 +31,13 @@ static const char *warningOncePrefix = "WARNING ONCE"; static const char *errorPrefix = "ERROR"; static const char *notePrefix = "NOTE"; +namespace { +cl::opt<bool> WarningsOnlyToFile( + "warnings-only-to-file", cl::init(false), + cl::desc("All warnings will be written to warnings.txt only. If disabled, " + "they are also written on screen.")); +} + static bool shouldSetColor(const char *pfx, const char *msg, const char *prefixToSearchFor) { if (pfx && strcmp(pfx, prefixToSearchFor) == 0) @@ -139,7 +148,7 @@ void klee::klee_error(const char *msg, ...) { void klee::klee_warning(const char *msg, ...) { va_list ap; va_start(ap, msg); - klee_vmessage(warningPrefix, false, msg, ap); + klee_vmessage(warningPrefix, WarningsOnlyToFile, msg, ap); va_end(ap); } @@ -160,7 +169,7 @@ void klee::klee_warning_once(const void *id, const char *msg, ...) { keys.insert(key); va_list ap; va_start(ap, msg); - klee_vmessage(warningOncePrefix, false, msg, ap); + klee_vmessage(warningOncePrefix, WarningsOnlyToFile, msg, ap); va_end(ap); } } diff --git a/test/Feature/LinkLLVMLib.c b/test/Feature/LinkLLVMLib.c index 95437094..34931409 100644 --- a/test/Feature/LinkLLVMLib.c +++ b/test/Feature/LinkLLVMLib.c @@ -3,7 +3,7 @@ // // RUN: %llvmgcc %s -g -emit-llvm -O0 -c -o %t2.bc -DLINK_LLVM_LIB_TEST_EXEC // RUN: rm -rf %t.klee-out -// RUN: %klee --link-llvm-lib %t1.a --output-dir=%t.klee-out --emit-all-errors %t2.bc 2>&1 | FileCheck %s +// RUN: %klee --link-llvm-lib %t1.a --output-dir=%t.klee-out --emit-all-errors --warnings-only-to-file=false %t2.bc 2>&1 | FileCheck %s #ifdef LINK_LLVM_LIB_TEST_EXEC extern void printint(int d); diff --git a/test/Feature/MemoryLimit.c b/test/Feature/MemoryLimit.c index fb9f2c86..ce4bc00f 100644 --- a/test/Feature/MemoryLimit.c +++ b/test/Feature/MemoryLimit.c @@ -4,17 +4,17 @@ // RUN: %llvmgcc -emit-llvm -DLITTLE_ALLOC -g -c %s -o %t.little.bc // RUN: rm -rf %t.klee-out -// RUN: %klee --output-dir=%t.klee-out --max-memory=20 %t.little.bc > %t.little.log 2> %t.little.err +// RUN: %klee --output-dir=%t.klee-out --max-memory=20 %t.little.bc > %t.little.log // RUN: not grep -q "MALLOC FAILED" %t.little.log // RUN: not grep -q "DONE" %t.little.log -// RUN: grep "WARNING: killing 1 states (over memory cap)" %t.little.err +// RUN: grep "WARNING: killing 1 states (over memory cap)" %t.klee-out/warnings.txt // RUN: %llvmgcc -emit-llvm -g -c %s -o %t.big.bc // RUN: rm -rf %t.klee-out // RUN: %klee --output-dir=%t.klee-out --max-memory=20 %t.big.bc > %t.big.log 2> %t.big.err // RUN: not grep -q "MALLOC FAILED" %t.big.log // RUN: not grep -q "DONE" %t.big.log -// RUN: grep "WARNING: killing 1 states (over memory cap)" %t.big.err +// RUN: grep "WARNING: killing 1 states (over memory cap)" %t.klee-out/warnings.txt #include <stdlib.h> #include <stdio.h> diff --git a/test/Feature/Realloc.c b/test/Feature/Realloc.c index 76016fb7..0a97dd78 100644 --- a/test/Feature/Realloc.c +++ b/test/Feature/Realloc.c @@ -1,6 +1,6 @@ // RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc // RUN: rm -rf %t.klee-out -// RUN: %klee --output-dir=%t.klee-out --exit-on-error %t1.bc 2>&1 | FileCheck %s +// RUN: %klee --output-dir=%t.klee-out --exit-on-error --warnings-only-to-file=false %t1.bc 2>&1 | FileCheck %s #include <assert.h> #include <stdlib.h> |