about summary refs log tree commit diff homepage
AgeCommit message (Collapse)Author
2020-09-30Disable libc++ for LLVM 3.8 Travis CI targetMartin Nowack
The build support for libc++ for LLVM 3.8 is broken. It's not worth fixing.
2020-09-30Set default LLVM version to 9.0Martin Nowack
Use newer LLVM version 9.0 instead of 6.0. Update to newer Ubuntu base image.
2020-09-30Replace travis container build script with python-based versionMartin Nowack
2020-09-26Replace llvm::CallSite with llvm::CallBase on LLVM 8+Lukas Zaoral
This is in preparation for LLVM 11 as the llvm:CallSite class has been removed.
2020-09-25Add Cirrus CI statusCristian Cadar
2020-09-21Added a PR template, with a checklist documenting the most frequent issues ↵Cristian Cadar
we have encountered
2020-09-17Add test for klee-zestiTimotej Kapus
2020-09-17[gen-bout] Support multiple symbolic filesTimotej Kapus
2020-09-17Add klee-zesti a ZESTI like wrapper scriptTimotej Kapus
klee-zesti takes concrete arguments, files and stdin of the program under tests converts them to a seed and then runs klee with that seed. This emulates the interface of ZESTI.
2020-09-05Fix codecov uploadMartin Nowack
Argument `-y` has been removed from the upload script. https://github.com/codecov/codecov-bash/commit/c2f935a0dd0590d20296e95a759782e32b311b34 But `.codecov.yml` is now supported
2020-09-05Remove secure varsCristian Cadar
2020-09-04Update homebrew cacheMartin Nowack
2020-09-04Remove caching of homebrew-built packagesMartin Nowack
The new build script doesn't use that facility anymore. Remove it to avoid interfirence with ccache.
2020-09-04Use homebrew packages provided by TravisMartin Nowack
Recently, Homebrew packages can be installed via `.travis.yml`. Use this functionality instead of calling brew directly. Hopefully works around the build issue.
2020-09-04CirrusCI: Switch FreeBSD 11.3 to 11.4, remove old hack.Gleb Popov
2020-09-03Guard process-tree compression with a command-line switchSebastian Poeplau
2020-09-03Fix PTree::remove to clean the tree properlySebastian Poeplau
The previous version left unnecessary intermediate nodes behind, sometimes leading to very long paths in the tree.
2020-09-03Change the way bash is upgraded on macOS.Cristian Cadar
2020-09-02More robust handling of unknown intrinsicsAlastair Reid
- If an unknown intrinsic appears in the bitcode file, it is reported but execution can proceed. - If an unknown intrinsic is encountered during execution of some path, - the intrinsic is reported - this path is treated as an error - execution of other paths can proceed To be more precise, there is a list of "known unknown intrinsics". Intrinsics not on this list will prevent execution.
2020-08-28Definition of __cxa_thread_atexit_impl for the KLEE libc.Alastair Reid
This is a thread-local version of __cxa_atexit (but, in the absence of threads, it is sufficient to just call __cxa_atexit). The test is based on the existing test for atexit in test/Runtime/Uclibc/2008-03-04-libc-atexit-uses-dso-handle.c The motivation for adding this function is to support the Rust standard library that calls __cxa_thread_atexit_impl. This function is usually a weak symbol but, in KLEE, this behaves like a call to an unknown function and chaos ensues. Worse, it happens just as the program is cleanly shutting itself down, so programs that are cleanly exiting crash with the wrong message.
2020-08-23klee-stats: check for a run.stats file in the klee-out directory, to prevent ↵Jordy Ruiz
outputting wrong data. When KLEE crashes, it produces an empty info file, so it is not enough to check for the existence of an info file. Previously, table columns would mismatch and return data labeled with the wrong directory names.
2020-08-19DiscretePDF: use IDs instead of pointers (see PR #739)Frank Busse
2020-08-14Updated README.md links from travis-ci.org to travis-ci.comCristian Cadar
2020-08-07Tweak LLVM version string parser: support rustAlastair Reid
This change allows KLEE to be configured to use the LLVM version that comes with the Rust compiler instead of a standard version. e.g., one might configure with -DLLVM_CONFIG_BINARY=${RUST_SRC}/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-config For which typical output might be 10.0.1-rust-dev
2020-08-07New intrinsic: klee_is_replayAlastair Reid
This instrinsic detects whether the program is being executed symbolically or concretely (i.e., using the libkleeRuntest library). The intended usage (illustrated in the test program) is to allow the test program to display the input values by invoking any libraries it wants to. This is especially valuable if you are constructing complex, structured values and for languages like Rust (or C++) that have rich libraries and print libraries. For example, you might pick a symbolic value N with the assumption "0 <= N < 10" and then pick N symbolic values and write them to an array. The resulting ktest file is a bit hard to understand compared with the output of the standard print function in Rust/C++.
2020-07-30[unittests] use static PTree::remove method in SearcherTestFrank Busse
2020-07-30introduce --rng-initial-seed=<unsigned>Frank Busse
* move global theRNG into Executor * pass theRNG via ctor to searchers * remove some type warnings from RNG.cpp Fixes #1023.
2020-07-29remove holes in Instruction-/FunctionInfoTable, add documentationFrank Busse
2020-07-01Clean-up and add documentationMartin Nowack
2020-07-01Remove state contructor with constraintsMartin Nowack
This constructor has been a hack and was wrongly used, use ConstraintManager instead. Allow copy-constructing states only via `ExecutionState::branch()` call.
2020-07-01Use constraint sets and separate metadata for timing solver invocationMartin Nowack
Decouple ExecutionState from TimingSolver Instead of providing an execution state to the timing solver use a set of constraints and an additional object for metadata. Fixes: * correct accounting of metadata to a specific state * accounting of all solver invocations (e.g. solver-getRange was not accounted) * allows to invoke the solver without a state (avoids costly copying of states/constraints)
2020-07-01Use `unique_ptr` for solver in timing solverMartin Nowack
2020-07-01Separate constraint set and constraint managerMartin Nowack
2020-07-01Move constraint implementation from header to cpp filesMartin Nowack
2020-06-29Enable subsets for RandomPathSearcherTimotej Kapus
2020-06-29[PTree] Replace left/right with PointerIntPairTimotej Kapus
2020-06-29Revert "refactor PTree: use unique_ptr"Timotej Kapus
This reverts commit 0aed7731210d0eb41c0ea767edb8067130cf6252.
2020-06-29Implement fshr/fshl intrinsicsAlastair Reid
Changes: - IntrinsicCleaner accepts fshr/fshl as accepted intrinsics - Executor::executeCall converts fshr/fshl to urem/zext/concat/shift/extract - Klee/main suppresses warnings about externals that are LLVM reserved (i.e., begin with "llvm.") - New test exercises 32 and 7 bit versions including oversize shift values Test values are based on LLVM's test for fshl/fshr - Changes that depend on existence of fshr/fshl are guarded by #if LLVM_VERSION_CODE >= LLVM_VERSION(7, 0) or ; REQUIRES: geq-llvm-7.0
2020-06-26[FreeBSD] Assume always yes for installing packages as wellMartin Nowack
2020-06-26Switch to a more recent version of SQLite in the CICristian Cadar
2020-06-26Revert to FreeBSD 12.1-STABLE (13.0-CURRENT has started running into issues)Cristian Cadar
2020-06-25Enforce fork/branch limits in branch() and fix double terminationFrank Busse
* extend help messages for -max-memory and -max-memory-inhibit * introduces branchingPermitted() * enforces fork/branch limits in branch() (vector version) * changes main loop * calls updateStates() before checkMemoryUsage() * calls updateStates() again in case we early terminate states This should prevent double termination for now. Other solutions are imho more expensive as we would have to compare possibly large vectors of states (either states(arr) in checkMemoryUsage() or removedStates in terminateState()).
2020-06-25fix Executor: initializeGlobalAliasesJulian Büning
2020-06-25Executor: consolidate initialization of global objectsJulian Büning
2020-06-25Executor: light refactoring of {allocate,initialize}GlobalObjectsJulian Büning
mainly range-based for, code deduplication
2020-06-25Executor: split initializeGlobalsJulian Büning
2020-06-25ExecutorUtil: assert that GlobalValue is already knownJulian Büning
2020-06-25add simple unknown bitcast alias test from the original issueJulian Büning
2020-06-25add known bitcast test for comparisonJulian Büning
2020-06-25regression test for unknown bitcast aliasJulian Büning