Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Instructions
Last `Instructions` is not a good identifier to retrieve the correct row.
For the default setup, KLEE will generate two entries with the same last instruction.
One before clean-up and one after clean-up (i.e. if states are terminated on halt).
Using `rowid` will select the last line.
|
|
The number and order of statistics in klee-stats is hard coded.
Moreover, adding new statistics to KLEE lead to crashes.
Rewriting that part of the script generalises and streamlines the process.
List of changes:
* Extend legend: this is used for known columns to provide shorter names
* simplify sqlite handling and make it more robust and reading of data
* select columns based on internal KLEE names
* streamline addition of artificial columns and make it robust
* handle the case if different runs should be compared but not all have the same statistics
* fix calculation of summary row:
- avg of column if column is showing a relative value or avg value
- max of column if column is showing a max value
- sum of column entries, else
|
|
|
|
|
|
|
|
|
|
Providing a list of directories might sometimes not contain the stats file.
Check its existence before trying to access it.
|
|
|
|
|
|
|
|
|
|
|
|
This uses the `ref<>`-based memory handling of MemoryObjects.
This makes it explicit that references are held in:
- ExecutionState::symbolics
- ObjectState
|
|
Remove additional reference counting as part of UpdateNodeList and
UpdateNode. Simplifies code.
|
|
* Replace c header with c++ header
* remove unneeded header file
|
|
|
|
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.
|
|
reference assigned.
|
|
|
|
TR1 implementation got replaced by the std::* equivalents with C++11.
Start to use the standard versions instead of the old ones.
|
|
|
|
|
|
* Port changes from .Dockerfile to this
* install emacs-nox and vim-nox instead of pulling all X dependencies
* Clean apt cache
|
|
|
|
|
|
|
|
Building older LLVM/libcxx versions under Ubuntu 18.04 requirer patches
|
|
LLVM changed from svn to github. Use the github mirror to have faster build times.
Patches were updated to follow the new structure.
Patches also support building underr Ubuntu 18.04
|
|
Build dependencies for different components were tied to a specific Ubuntu version (16.04).
Although, they are the same for newer versions as well.
By renaming `p-component-linux-ubuntu-16.04.inc` to `p-component-linux-ubuntu.inc`, the script can be used for newer Ubuntu versions as well.
Do some minor cleaning up.
|
|
|
|
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.
|
|
Tracking function locations separately correctly without prefixing
it with a directory.
|
|
|
|
|
|
|
|
Added units for some of the data and
modified klee-stats source code to provide solver time
as a fraction of walltime along with fork, resolve
and cexcache time.
|
|
|
|
This Dockerfile provides a Grafana server with a preconfigured dashboard
and a datasource that will connect to klee-stats, as soon as klee-stats
is run.
|
|
|
|
Currently, arbitrary *.bc files or archives containing .bc files (.bca or .a) can
be linked using `--link-llvm-lib`. Change documentation of command line argument to make this clear.
This feature is useful to keep avoid linking the bitcode libraries with the application as bitcode file in the first place.
Fix error message in case library could not be loaded
|
|
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`.
|
|
|
|
|