about summary refs log tree commit diff homepage
AgeCommit message (Collapse)Author
2016-08-08Use LLVM-based functions to print errnoAndrea Mattavelli
2016-08-06Merge pull request #448 from andreamattavelli/fix_query_compressionMartinNowack
Fix to #445
2016-08-06Fix to #445Andrea Mattavelli
2016-08-04Merge pull request #441 from jirislaby/exit-on-error-typeCristian Cadar
add --exit-on-error-type option
2016-08-04klee: add exit-on-error-type parameterJiri Slaby
It allows stopping the execution on some conditions like assertions. The use is like: klee -exit-on-error-type=Assert -exit-on-error-type=External file.llvm This is especially useful in the SV-COMP. A test to cover the new parameter was added too. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2016-08-03Merge pull request #439 from jirislaby/fprintfCristian Cadar
fprintf: convert to klee_warning
2016-08-03fprintf: convert to klee_warningJiri Slaby
In some Solver sources, some error outputs were missing \n. Instead of adding a new line to all of them, convert the fprintf's to klee_warning which adds \n automatically. ErrorHandling.h had to be included in MetaSMTSolver.cpp to have klee_warning declared there. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2016-08-02Merge pull request #438 from jirislaby/memuseMartinNowack
MemoryUsage: handle ill-designed mallinfo
2016-08-02MemoryUsage: fix GetTotalMallocUsageJiri Slaby
The mallinfo() interface is ill-designed. It returns 'int' as occupied memory. This means at most 2G. This causes troubles when capping the memory to 3G by -max-memory=3000 for example. We cannot fix the interface, but we can at least extend the space to 4G. So cast those 'int's to 'unsigned int's to avoid sign extension. Then do the addition on 'size_t' to count on 64bit values (on 64 bit). Apart from that, the original 'int' + 'int' led to overflow which is undefined on 'signed int's in C. Also, when klee is run under valgrind, generic.current_allocated_bytes from gperftools does not touch the passed pointer and in that case, we return garbage from GetTotalMallocUsage. So initialize 'value' to 0 to avoid the problem. And since GetNumericProperty accepts 'size_t', let's define 'value' as such. It was 'uint64_t' previously and they differ on 32 bit. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2016-07-31Merge pull request #422 from ccadar/div-zero-testCristian Cadar
Added test case exposing division by zero failure reported by @kren1 and made division total in STP to fix it.
2016-07-29Explicitely making division total in STP.Cristian Cadar
2016-07-22Merge pull request #425 from jirislaby/globalsCristian Cadar
Executor: do not crash on non-sized globals
2016-07-11Executor: do not crash on non-sized globalsJiri Slaby
Sometimes, globals are not sized and ->getTypeStoreSize on such type crashes inside the LLVM. Check whether type is sized prior to calling the function above. A minimalistic example of Y being unsized with no effect on the actual code is put to tests. [v2] Use klee_warning for printing. And use %.*s formatting string given StringRef.data() need not be null terminated. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2016-07-10Merge pull request #428 from MartinNowack/fix_determ_addressMartinNowack
Fix parsing of the address for the deterministic memory area.
2016-07-10Fix parsing of deterministic address.Martin Nowack
Allows to provide 0 as an address to allocate deterministic memory area at any free space.
2016-07-09Merge pull request #377 from MartinNowack/fix_div_constantMartinNowack
Fix generation of STP shift operations with variable shift
2016-07-09Fix variable shifting behavior with different sizesMartin Nowack
Generated STP equality expressions have to be the same type. If a shift with different types as operands was used, therefore equality expressions of different width were generated. Beside avoiding the different sizes, this patch restores the original behavior to extract just the part involved in shifting and therefore should generate smaller expressions. Enable sdiv test case
2016-07-09Merge pull request #363 from MartinNowack/feat_determ_allocatorMartinNowack
Add support for deterministic allocation
2016-07-08Clang-formated MemoryManagerMartin Nowack
2016-07-08Add deterministic allocation of memoryMartin Nowack
Deterministic allocation provides an internal allocator which mmaps memory to a fixed static address. This way, same allocation is assured across different KLEE runs for the same application assuming a deterministic searcher. In addition, this patch provides following options: -allocate-determ: switch on/off deterministic allocation -allocate-determ-size: adjust preallocated memory -null-on-zero-malloc: returns null pointer in case a malloc of size 0 was requested. According to standard, also a non-null pointer can be returned (which happens with the default glibc malloc implementation) -allocation-space: space between allocations can be adjusted. KLEE is not able to detect out-of-bound accesses which are inside another but wrong object. Due the implementation of typical allocators adjacent mallocs have space in between for management purposes. This spaces helped KLEE to detect off-by-1/2 accesses. For higher numbers, the allocation space has to be increased. -allocate-determ-start-address: adjust deterministic start address. The addres has to be page aligned. KLEE fails if it cannot acquire this address
2016-07-08Handle aligned varargs allignment correctlyMartin Nowack
For vararg handling, arguments of size bigger than 64 bit need to be handled 128bit aligned according to AMD calling conventions AMD64-ABI 3.5.7p5. To handle that case correctly, we do: 1) make sure that every argument is aligned correctly in an allocation for function arguments 2) the allocation itself is aligned correctly
2016-07-08Merge pull request #362 from MartinNowack/feat_determ_state_selectionMartinNowack
Deterministic state addition and removing
2016-07-08Generate forked states for switch instructions deterministicallyMartin Nowack
This patch generates the states based on the order of switch-cases. Before, switch-constraints were randomly assigned to forked states. As generated code might be different between LLVM versions, we use the case values, order them, and iterate in that order over the cases. This way we can also support deterministic execution of older LLVM versions.
2016-07-08Use vector instead of set to add/remove statesMartin Nowack
Deterministic adding/removing of states.
2016-07-08IterativeDeepeningTimeSearcher: Fix using wrong iteratorMartin Nowack
2016-07-08Refactoring: Extract method to dump remaining statesMartin Nowack
2016-07-08Merge pull request #391 from MartinNowack/feat_zipstream_compressMartinNowack
Support gzip-based compression of raw_outstreams
2016-07-08Merge pull request #410 from MartinNowack/feat_log_after_stepsMartinNowack
Add options to dump istats and stats statistics every n instructions.
2016-07-08Support gzip-based compression of raw_outstreamsMartin Nowack
Provide initial zlib-based compression support for raw_outstreams. Replacing llvm::raw_fd_outstreams with compressed_fd_outstreams automatically compresses data in gzip format before writing to file. Options added: * --compress-log to compress all query log files (e.g. *.pc, *.smt2) on the fly. Every query log file gets extended with .gz. * --debug-compress-instructions to compress logfile for instruction stream on the fly.
2016-07-08Add feature to dump statistics after n instructionsMartin Nowack
Add -stats-write-after-instructions and -istats-write-after-instructions to update each statistic after n steps. Furthermore, the metric "minimal distance to uncovered state" is now updated independently if statistics are enabled or not. This metric is needed i.e. by weighted random searchers directed towards uncovered instructions. Remove some dead code.
2016-06-30Merge pull request #424 from helicopter88/masterMartinNowack
Dockerfile: link binaries to /usr/bin
2016-06-30Dockerfile: link binaries to /usr/binDomenico Fabio Marino
Signed-off-by: Domenico Fabio Marino <dfm114@ic.ac.uk>
2016-06-28Added test case exposing division by zero failure reported by @kren1, and ↵Cristian Cadar
recently fixed in STP.
2016-06-28Merge pull request #417 from hoangmle/fix_constructSDIvByConstant_metaSMTMartinNowack
Fix #416
2016-06-28add assertions to check the pre-condition of bvVar*Shift that both operands ↵Hoang M. Le
have the same bv width
2016-06-27change bitwidth of expr_shpost in MetaSMTBuilder::constructSDivByConstant to ↵Hoang M. Le
64, so that the first two arguments of the call bvVarRightShift(extend_npm, expr_shpost, 64) have the same bitwidth of 64.
2016-06-24Merge pull request #394 from andreamattavelli/refactoring_runindirCristian Cadar
Added error message for -run-in directory errors
2016-06-23Merge pull request #415 from andreamattavelli/termination_infoCristian Cadar
Use klee_message for timeout information
2016-06-23Merge pull request #409 from hoangmle/fix_metaSMTCristian Cadar
Add metaSMT to Travis CI, fix metaSMTBuilder to pass all tests
2016-06-23Use klee_message for timeout informationAndrea Mattavelli
2016-06-10apply clang-formatHoang M. Le
2016-06-10remove now unused getShiftBits()Hoang M. Le
2016-06-10remove bitmasking shift amount in bvVarArithRightShiftHoang M. Le
2016-06-10remove bitmasking shift amount in bvVarRightShiftHoang M. Le
2016-06-10remove bitmasking shift amount in bvVarLeftShiftHoang M. Le
2016-06-10remove bitmasking shift amount in constructAShrByConstant and make it return ↵Hoang M. Le
0 when overshifting
2016-06-10remove bitmasking shift amount in bvRightShiftHoang M. Le
2016-06-10remove bitmasking shift amount in bvLeftShiftHoang M. Le
2016-06-10handle special cases of sdiv 1 and -1Hoang M. Le
2016-06-10rename the configure option --with-metasmt-default-solver to ↵Hoang M. Le
--with-metasmt-default-backend and improve the associated CXX flag