about summary refs log tree commit diff homepage
path: root/include
AgeCommit message (Collapse)Author
2018-01-22MergeHandler: remove unused closedStateCountJiri Slaby
clang 5 reports: In file included from ../lib/Core/MergeHandler.cpp:10: ../include/klee/MergeHandler.h:81:12: warning: private field 'closedStateCount' is not used [-Wunused-private-field] unsigned closedStateCount; ^ So fix it by removing the member. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-01-08[NFC] Remove unused config header template that was only used byDan Liew
the old build system (now removed).
2017-11-30Implemented bounded merging functionalityLukas Wölfer
2017-10-17add support for CVC4 and Yices2 via metaSMTHoang M. Le
2017-09-22Merge pull request #748 from ccadar/optionsCristian Cadar
Added support for hiding command-line options
2017-08-27Remove unnecessary null pointer checksOscar Deits
Fixes klee/klee#717 delete on null pointer is always safe.
2017-08-11Added support for hiding command-line optionsCristian Cadar
2017-08-04Removed merging searchersLukas Wölfer
2017-07-29Added another variant of printFileLine in KInstruction that returns the ↵Cristian Cadar
location as a string. Also added const qualifier to the printFileLine functions
2017-07-26Now that LLVM 2.9 is gone, we can use cl::bits instead of cl::listCristian Cadar
2017-07-25Added the const qualifier to the keys in the constantMapCristian Cadar
2017-07-23Remove support for LLVM < 3.4Martin Nowack
Request LLVM 3.4 as minimal requirement for KLEE
2017-06-16move module loading into external functionJörg Thalheim
- having an explicit function which is defined for multiple llvm versions separately increases readability. - also: error handling was simplified - Personal motivation: being able to use this functionality in unit tests fixes #561 related to #656
2017-06-16llvm37: introduce type for PassManagerJiri Slaby
In LLVM 3.7, PassManager was moved to the legacy:: namespace. Introduce a type for it and use it in the code. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2017-06-12llvm: don't use clEnumValEnd for LLVM 4.0Jiri Slaby
It became unnecessary when defining options and mainly undefined. So introduce KLEE_LLVM_CL_VAL_END as suggested by @delcypher. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2017-06-08Merge pull request #675 from ccadar/varargsAndrea Mattavelli
Fixed typos in comments related to vararg support.
2017-06-08Fixed typos in comments related to vararg support.Cristian Cadar
2017-06-02hide backend solver declarations from public includeHoang M. Le
2017-06-02replace handleMetaSMT() with klee::createMetaSMTSolver() and move it into ↵Hoang M. Le
MetaSMTSolver.cpp so that the backend headers only need to be included once there
2017-06-01Refactor file opening code out of `main.cpp` and intoDan Liew
`klee_open_output_file()` function so that it can be used by the Z3Solver.
2017-03-23Add `AssignmentValidatingSolver`. It's purpose is to check any computedDan Liew
assignments against the corresponding `Query` object and check the assignment evaluates correctly. This can be switched on using `-debug-assignment-validating-solver` on the command line.
2017-03-23[WIP] Fix bug where stats would not be updated on early exit caused byDan Liew
finding a bug with the `-exit-on-error` option enabled.
2017-03-03Moved printFileLine() to be part of KInstructionCristian Cadar
2017-02-25llvm: stop using global contextJiri Slaby
It was marked as deprecated long time ago and finally removed in LLVM 3.9. Remove all uses of getGlobalContext and create our own context. Propagate it all over the code then. [v2] use ctx, not C as name Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2017-02-23CommandLine: do not copy list in optionIsSetJiri Slaby
Pass the list as reference. Otherwise we can get errors with newer LLVM like: lib/Basic/ConstructSolverChain.cpp:26:19: error: call to deleted constructor of 'llvm::cl::list<QueryLoggingSolverType>' if (optionIsSet(queryLoggingOptions, SOLVER_KQUERY)) { ^~~~~~~~~~~~~~~~~~~ llvm/Support/CommandLine.h:1466:3: note: 'list' has been explicitly marked deleted here list(const list &) = delete; ^ Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2017-02-21Teach `klee::getDirectCallTarget()` to resolve weak aliases. This isDan Liew
controlled by a new parameter `moduleIsFullyLinked`. When true the linkage type of a weak alias is ignored. It is legal to do this when the module is fully linked because there won't be another function that could override the weak alias. This fixes a previous assertion failure in `klee::getDirectCallTarget()` triggered by the `test/regression/2016-11-24-bitcast-weak-alias.c` test case.
2017-02-14Refactoring code to improve readability by using UINT32/64_C macrosAndrea Mattavelli
2017-02-14Fixed assertion invocation: We were invoking bits64::truncateToNBits with a ↵Andrea Mattavelli
width greater than 64
2017-02-14Added pre/post conditions as assertionsAndrea Mattavelli
2017-02-13Silenced two "control may reach end of non-void function [-Wreturn-type]" ↵Cristian Cadar
compiler warnings, one by adding an assert, and the other by refactoring the choose() function.
2016-11-30Remove support for reporting the approximate git tag.Dan Liew
This was confusing because it would emit something like `v1.0.0-290-g08d4716` because the 1.1.0 and 1.2.0 releases didn't have a tag on the master branch so `git describe --tags` would just find the `v1.0.0` tag and report based on that tag.
2016-11-28Clean up `Expr::compare()` interface byDan Liew
* Making `Expr::compre(const Expr&, ExprEquivSet)` private and moving its implementation into `Expr.cpp`. * Document `Expr::compare(const Expr&)`. This partially addresses #515 .
2016-11-28Remove default implementation of `Expr::compareContents(const Expr&)`Dan Liew
and make it a pure virtual method. Also make it protected rather than public because it is an implementation detail of `Expr::compare()`. This means that sub classes must implement it so this commit also provides implementations. The comparision behaves as before except for `ConcatExpr` where its `width` attribute is now used (previously it wasn't). This commit also documents the semantics of `Expr::compareContents(const Expr&)` which was clearly needed because it has been incorrectly implemented in the past and has gone unnoticed for several years. This partially addresses #515 .
2016-11-28Fix bug in implementation of `NotExpr`. It should not implementDan Liew
`compareContents()`. This bug would not have affected correctness but it would have affected performance because if `Expr::compare()` was called on two structually equal `NotExpr` then its children would be checked for structually equality twice - once in NotExpr::compareContents()` and once in `Expr::compare()`. This partially addresses #515 .
2016-11-23Renamed .pc to .kquery (kleaver query)Eric Rizzi
2016-11-07[CMake] Report git revision information if available.Dan Liew
This is done as a separate commit because it imports third party code. It's under the Boost license though so it "should be" fine.
2016-11-07Implement a CMake based build system for KLEE.Dan Liew
This is based off intial work by @jirislaby in #481. However it has been substantially modified. Notably it includes a separate build sytem to build the runtimes which is inspired by the old build system. The reason for doing this is because CMake is not well suited for building the runtime: * CMake is configured to use the host compiler, not the bitcode compiler. These are not the same thing. * Building the runtime using `add_custom_command()` is flawed because we can't automatically get transitive depencies (i.e. header file dependencies) unless the CMake generator is makefiles. (See `IMPLICIT_DEPENDS` of `add_custom_command()` in CMake). So for now we have a very simple build system for building the runtimes. In the future we can replace this with something more sophisticated if we need it. Support for all features of the old build system are implemented apart from recording the git revision and showing it in the output of `klee --help`. Another notable change is the CMake build system works much better with LLVM installs which don't ship with testing tools. The build system will download the sources for `FileCheck` and `not` tools if the corresponding binaries aren't available and will build them. However `lit` (availabe via `pip install lit`) and GTest must already be installed. Apart from better support for testing a significant advantage of the new CMake build system compared to the existing "Autoconf/Makefile" build system is that it is **not** coupled to LLVM's build system (unlike the existing build system). This means that LLVM's autoconf/Makefiles don't need to be installed somewhere on the system. Currently all tests pass. Support has been implemented in TravisCI and the Dockerfile for building with CMake. The existing "Autoconf/Makefile" build system has been left intact and so both build systems can coexist for a short while. We should remove the old build system as soon as possible though because it creates an unnecessary maintance burden.
2016-09-29Fix bug in `AssignmentEvaluator` where NotOptimizedExpr would not (#466)Dan Liew
* Add unittest to check that the `Assignment` class can evaluate expressions containing a `NotOptimizedExpr`. * Fix the `AssignmentTest.FoldNotOptimized` unit test by teaching the `ExprEvaluator` to fold `NotOptimizedExpr` nodes.
2016-09-29configure: run AutoRegen.shJiri Slaby
The previous change altered .ac files, regenerate the scripts. Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2016-09-16Avoid internalization of non-standard entry point (i.e. not the main ↵Andrea Mattavelli
function) (#455)
2016-09-15Correct out of date comments for some of the klee error handlingDan Liew
functions.
2016-09-15Add ``-debug-cross-check-core-solver`` option to allow cross-checkingDan Liew
with another solver. For example the core solver can be STP and the cross checking solver can be Z3. Unfortunately a few fragile tests don't pass when actually using this option.
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-05-24Fixed bug #375 in Kleaver's parserAndrea Mattavelli
2016-04-12remove synthesized `rule of three` of KInstIteratorjiangg
2016-04-08Rename KLEE command line options fromDan Liew
* ``-replay-out`` to ``-replay-ktest-file`` * ``-replay-out-dir`` to ``-replay-ktest-dir`` and also rename * help descriptions * global variables corresponding to these options. * Names used in ``KleeHandler``, ``Interpreter``, ``Executor`` and in KLEE's ``main()`` function. The old name for the options/code was very unhelpful as it wasn't obvious that "out" files are ``.ktest`` files unless you examine KLEE's source code.
2016-03-09Fix incorrect position of ``Not`` in ``Expr::Kind`` which meant it was includedDan Liew
in the range of ``BinaryKindFirst`` and ``BinaryKindLast``. ``NotExpr`` is a unary expr not a binary expression.
2016-03-05Fix SELinux signatures in runtimeLaszlo Szekeres
The SELinux function signatures have changed between version 2.2 and 2.3. In particular, the type of the "security context" parameter was changed from char * to const char *, with the following patch: SELinuxProject/selinux@9eb9c9327563014ad6a807814e7975424642d5b9. Recent Linux distributions (e.g. Ubuntu 15.10) ship with the updated version of libselinux. This change makes the SELinux runtime compatible with the newer versions of the library by replacing security_context_t with its original char * definition and defining it as const only if the installed library does so. Whether the system uses const char * types is detected with the configure script. Fixes klee/klee#303.
2016-02-29Merge pull request #344 from MartinNowack/feat_mallocMartinNowack
Add support for tcmalloc
2016-02-27Merge pull request #342 from delcypher/expr_fixesMartinNowack
A few Expr related clean ups