Age | Commit message (Collapse) | Author |
|
Building/managing dependencies of KLEE are not easy. This script should change
this.
Features:
* script install different versions in their specific directories
This allows:
- to have different versions in parallel installed: llvm, solvers
- to have different optimization levels installed (Debug, no-debug,
assertions, optimized)
- to have different versions of instrumentation enabled (address, memory,
leakage, undefined behavior)
* the script is kept distribution agnostic: assuming basic packages are
installed (a compiler), use `scripts/build/ubuntu-dependencies.sh` to install
ubuntu specific ones
* the script does not install any file into system directories (sudo is not
required) files are only installed into a user specified BASE directory
The same scripts are used for either local setup (`scripts/build/local_install.sh`)
or create a docker image based of your current source folder (`scripts/build/build_docker.sh`)
Change the defaults permanently by modifying (`scripts/build/common-defaults.sh`)
or change them on the fly by providing them as environment variables on the
command line.
The same scripts are also used for TravisCI, so we test what we are using.
|
|
|
|
Link intrinsic library before executing optimizations.
This makes sure that any optimization run by KLEE on the module
is executed for the intrinsic library as well.
Support .ll files as input for KLEE as well.
|
|
Strictly differentiate between the following type of libraries:
* FreeStanding: contains minimal amount of methods a compiler would expect
* klee-libc: contains a minimal libc implementation
* POSIX: contains a POSIX layer that can be used on top of a libc implementation
* Intrinsic: contains additional runtime functions which provide KLEE-specific functionalities, (e.g. checks)
Builds always archives instead of single modules.
This allows to reduce linked-in dependencies of tested applications.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Some builds of llvm contain a lib like this:
/usr/lib64/libLLVM-3.9.so
Extend the regular expression, so that we really return what we are
supposed to.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
|
|
|
|
|
|
Suggested by @MartinNowack in #681.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
In LLVM 3.7 and later, getRegisteredOptions takes no arguments and
returns the map directly.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
Clone some tests to have their 3.7 version. 'call's, 'load's and
'getelementptr's match the new specification in them.
@andreamattavelli: Fixed test cases: BitCastAlias test cases included
modification to alias specifications that require LLVM 3.8
[v2] added comments what was changed and why
[v3] the new tests are without suffix, the old ones have ".leq36".
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
LLVM 3.7 added a PointeeType parameter to GetElementPtrInst::Create.
Let's handle that by a macro called KLEE_LLVM_GEP_TYPE, defined in
Version.h.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
Some compilers are picky, so avoid the warning by additional parentheses:
test/VectorInstructions/integer_ops_unsigned_symbolic.c:85:22: warning: & has lower precedence than <; < will be evaluated first [-Wparentheses]
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
|
|
This commit addresses the following:
* remove unused variables block_split (::runOnBasicBlock)
and LI (::IntrinsicCleanerPass) in IntrinsicCleanerPass
* add `dirty = true` to `Intrinsic::vacopy` case
* use `eraseFromParent()` methods instead of `removeFromParent()` and `delete`
* add `override` keyword to `runOn{Module,Function}` methods
|
|
|
|
|
|
reflect the fact that it simply returns a string
|
|
version that takes an argument a stream
|
|
This is too generic and llvm 6.0 defines DEBUG as follows:
#define DEBUG(X) DEBUG_WITH_TYPE(DEBUG_TYPE, X)
This then results in various build failures where once the macro is
defined, once it is not.
So rename this generic macro to KLEE_ARRAY_DEBUG.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
|
|
|
|
|
|
Delete the old coverage gathering code. Unneccessary with move to codecov.
|
|
dependency --output-istats is not
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The behaviour couldn't be triggered for a kcachegrind from 2012.
|
|
|
|
|
|
|
|
|
|
|
|
|