about summary refs log tree commit diff homepage
path: root/lib/Core
AgeCommit message (Collapse)Author
2020-04-30Move header files from lib/Expr to include/klee/Expr to eliminate includes ↵Cristian Cadar
using "../"
2020-04-30Removed the Internal directory from include/kleeCristian Cadar
2020-04-08readStringAtAddress: support pointer into objectsMarek Chalupa
The code assumed that the passed pointer points at the beginning of the object. Remove this assumption and support any (constant) pointer. The string is read util either the end of the object is hit (in which case a warning is issued as the string was not zero terminated) or until the terminating zero is found.
2020-04-08readStringAtAddress: use stringstream to obtain the stringMarek Chalupa
The code is simpler and more in the spirit of C++.
2020-03-22StatsTracker: remove NumObjects, fix assignment of and always write ↵Frank Busse
ArrayHashTime * fix binding order for assignments when KLEE_ARRAY_DEBUG enabled * always write ArrayHashTime column to run.stats, assign -1 when KLEE_ARRAY_DEBUG disabled * remove unused NumObjects column from run.stats * remove NumObjects panel from Grafana
2020-03-02stats: enforce table creationFrank Busse
2020-02-19Use `ref<>` for MemoryObject handlingMartin Nowack
This uses the `ref<>`-based memory handling of MemoryObjects. This makes it explicit that references are held in: - ExecutionState::symbolics - ObjectState
2020-02-19Use `ref<>` for UpdateNodeMartin Nowack
Remove additional reference counting as part of UpdateNodeList and UpdateNode. Simplifies code.
2020-02-19Add `ReferenceCounter` struct utilized by ref<>Martin Nowack
Using KLEE's `ref<>` shared ptr requires the referenced object to contain a reference counter to be added and initialised to 0 as part of the constructor. To support better reuse of the `ref<>` ptr add a `ReferenceCounter` struct. Just adding this struct to a new class/struct as member enables reference counting with `ref<>` - no additional counter management needed.
2020-01-19Remove statistics limit from istats.Martin Nowack
Statistics encoded in `run.istats` were limited to a maximum number of 13 due to encoding in a `uint64_t` variable. This approach has multiple limitations: - a maximum number of 13 statistics were allowed - a subtle bug can be triggered if many more statistics are added - independent of the selected statistics for `run.istats` Depending on the linking order, statistics will get a different ID. Previously, the ID was used to shift a `1` to its position marking the statistic as being used. This will lead to undefined behaviour if more than 63 statistics are used. Using an llvm::SmallBitVector instead fixes both problems.
2020-01-13Assume assembly.ll is local to the run.istats fileMartin Nowack
Assuming a `klee-out-*` directory is moved to a different path location, subsequent analysis of the run.istats with KCachegrind focusing on assembly is impossible as the `assembly.ll` cannot be found. The reason is that the absolute path of the object file (assembly.ll) is hard-coded as part of the generated run.istats. To fix this, assume that the file is local to the `run.istats`.
2019-12-13Remove unnecessary std::move's that prevent copy elisionCristian Cadar
2019-12-12[Searchers] Remove weight from es, add nurs_depthTimotej Kapus
Having both weight and depth in execution state is wasteful, therefore this patch removes weight. The nurs:depth searcher is replaced by nurs:rp, which uses pow to compute the weight A new nurs:depth searcher is introduced that biases the search with depth, making it the only other searcher that prefers to go deep (similar to dfs).
2019-11-28Move merging related code from Executor into MergingSearcherLukas Wölfer
Co-authored-by: Felix Rath <felix.rath@comsys.rwth-aachen.de>
2019-11-05Core: Executor, remove unused variableJiri Slaby
numSeeds is unused since commit 4eb050e2999b (ExecutorTimers: refactor and move to support lib), so remove it.
2019-11-05Mark all constant global memory objects as constantMartin Nowack
Fixes #264. We first aggregate all constant memory objects initialise them and initialise their counter parts in the concrete memory. After that, we mark memory objects as constant such that they can't be modified (i.e. this includes marking them symbolic).
2019-11-04Remove the duplicated check for DebugInfoIntrinsicHui Peng
2019-10-31Executor: fix missing default case in switch instructionFrank Busse
2019-10-29ExecutorTimers: refactor and move to support libFrank Busse
- moves timer handling from Executor into support lib - introduces TimerGroup, removes TimerInfo/WriteStatsTimer/UpdateReachableTimer/WriteIStatsTimer classes - removes ExecutorTimers.cpp and ExecutorTimerInfo.h - removes -max-instruction-time flag (see #1114)
2019-10-29ExecutorTimers: remove signalling, fix endless looping forkFrank Busse
- adds -timer-interval threshold for timer checks - fixes #831
2019-10-08Executor.h: remove defined functions without implementationFrank Busse
2019-09-20refactor PTree: use unique_ptrFrank Busse
2019-09-20refactor PTree: remove split(), add attach() methodFrank Busse
2019-09-03Moved solver-related header files into a separate klee/Solver/ directory.Cristian Cadar
2019-08-15ExecutorTimers: move dumpStates/dumpPTree into ExecutorFrank Busse
* creates two new methods: dumpStates, dumpPTree
2019-08-14Replace sprintf with snprintf throughout codebaseCristian Cadar
2019-08-12StatsTracker: switch from TRUNCATE to WAL journal modeFrank Busse
2019-07-30Use #include "klee/..." (instead of #include <klee/...>) consistently.Cristian Cadar
2019-07-30Consolidated Expr-related include files into a single include/klee/Expr ↵Cristian Cadar
directory. This improves the organization of the code, and also makes it easier to reuse Expr outside KLEE.
2019-06-04fix some incorrect first linesJulian Büning
2019-06-04make endif guard naming consistentJulian Büning
2019-06-04make include guard naming consistentJulian Büning
2019-06-04Fixed identifiers used in ifdefs to (1) not use reserved names and (2) use a ↵Cristian Cadar
consistent naming convention
2019-05-31PTree: fix dump() methodFrank Busse
2019-05-30ExecutionState: remove fnAliasesJulian Büning
2019-05-30remove klee_alias_function()Julian Büning
this function can be used to modify the control flow of the program on different paths, enabling self-modifying code.
2019-05-28Implement handling of the llvm.fabs intrinsicFelix Rath
2019-04-04some minor refactoringsFrank Busse
2019-04-04Clean klee-stats, StatsTracker and cmakeTimotej Kapus
2019-04-04Change the .stats format into sqlite3Timotej Kapus
Improves querying of the .stats file, reduces its size, speeds up reads and writes and has better defined fail behaviour.
2019-04-02Handle __assert() function as handleAssertFail. This assert variant is used ↵Gleb Popov
on FreeBSD
2019-04-02Fix build of Executor.cpp on FreeBSD.Gleb Popov
2019-03-21drop support for LLVM <= 3.7Julian Büning
2019-03-21remove obsolete macro KLEE_LLVM_GEP_TYPEJulian Büning
2019-03-19Add support to assign debug instructions to optimised codeMartin Nowack
2019-03-19Use debugging information from newer LLVM versionsMartin Nowack
2019-03-19Refactor InstructionInfoTableMartin Nowack
Better debug information
2019-03-17run VerifierPass after optimization and instrumentationJulian Büning
2019-03-16Added support for disabling --batch-instructions and --batch-time by setting ↵Cristian Cadar
them to 0
2019-03-15Placed option categories in the klee namespace and options in the anonymous ↵Cristian Cadar
namespace in Executor.cpp