about summary refs log tree commit diff homepage
AgeCommit message (Collapse)Author
2018-09-10Fix generation of global constructors and destructorsMartin Nowack
Validate if the user-selected entry function exists. Do not assume it is `main`.
2018-09-10POSIX: Add invocation of klee_init_env into wrapper before calling mainMartin Nowack
To enable the POSIX support, the former implementation instrumented the main function and inserted a call to `klee_init_env` at the beginning. This has multiple disadvantages: * debugging information was not correctly propagated leaving the call to `klee_init_env` without debug information * the main function always required `int arg, char**` as part of the function definition of `main` Based on the new linking infrastructure, we can now add an additional wrapper `__klee_posix_wraper(int, char**)` that gets always called when POSIX support is enabled. It executes `klee_init_env` and after that calls the `main` function. Enabling POSIX support only requires the renaming of the user provided `main` into `__klee_posix_wrapped_main` in addition to linking.
2018-09-06Fix missing includes and declarationsMartin Nowack
2018-09-06Use FileCheck and LINE instead of grep if possibleMartin Nowack
As we do not support LLVM 2.9 anymore, we can use FileCheck LINE instead of hard coding line numbers.
2018-09-06llvm36.patch: fix build for newer glibc/gcc versionsFrank Busse
2018-09-06runtime: fix memory error in canonicalize_file_nameFrank Busse
Fixes #46 and reverts #47. As stated in #46, the solution works for musl, glibc etc. However, the code in stub.c is executed by uclibc and uclibc doesn't allocate the target buffer in realpath. The memory error occured while running df for 10min with DFS.
2018-09-06Build on trusty without sudo - uses faster Docker infrastructure from TravisCIMartin Nowack
2018-09-06Avoid Vararg non-deterministic allocationMartin Nowack
Vararg test can fail if KLEE is able to resolve the intended out-of-bound memory address to a memory object. To avoid this, allocate memory explicitly deterministic with sufficient space between the allocations. Enables support for Mac OSX again
2018-08-29klee-stats: add TResolve(%) to --print-allFrank Busse
2018-08-12llvm.sh: fix patch source pathsFrank Busse
2018-08-03Disabled unit testing in default buildAndrea Mattavelli
2018-08-03Fixed runtest library to handle the case of a NULL "name" argument in ↵Cristian Cadar
klee_make_symbolic. Changed a test case to check this feature.
2018-08-03Replace remaining *Inst::Create() calls with llvm::BuilderMartin Nowack
Replace the remaining occurrences of `Inst::Create()` with `llvm::Builder` to manage metadata automatically and to fold instructions. C++11 it and clang-format
2018-08-03[clang-format]Allow longer codelines in test/Martin Nowack
Code files in `test/` might contain comment lines that are longer as they contain `// RUN` commands. clang-formatting breaks the tests. Stop clang-formatting from doing that.
2018-08-01test: remove geq-llvm-3.4Julian Büning
2018-07-28remove last comma from -debug-print-escaping-functionsJulian Büning
2018-07-28test/Feature/EscapingFunctionsAlias.c: clarify alias(ee) castingJulian Büning
2018-07-28add declarations to escapingFunctionsJulian Büning
2018-07-23ModuleUtil: improve and test valueIsOnlyCalledJulian Büning
* handle BlockAddress (which is not a valid function pointer) * there is no instruction with opcode 0 * add test for functionality
2018-07-23fix: LLVM 3.5, begin_user() instead of begin_use()Julian Büning
With version 3.5, LLVM introduced a subtle semantic change in the API of `Value`. With that change, `use_begin()` is renamed to `user_begin()`. Additionally, a new method `use_begin()` with a different meaning was introduced. Now, `use_begin()` actually iterates over `Use`s, whereas before, dereferencing it would give a `User *`. For further details, please refer to https://reviews.llvm.org/rL203364. Due to the reintroduction of `use_begin()`, existing code may still compile, although the semantics have changed. In the code changed with this patch, all `dyn_cast`s for `Use` fail and the else branch is always taken.
2018-07-23ExternalDispatcher: setErrorStr for EngineBuilderJulian Büning
addresses comment made by @adrianherrera in #385
2018-07-12travis CI: add LLVM 3.8 build testsJiri Slaby
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: test, change some testsJiri Slaby
alias in LLVM 3.8 has a new format, it adds an AliaseeTy parameter. So handle this in the tests. [v2] add comments about what was changed and why Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: no more implicit iteratorsRichard Trembecký
LLVM commit eac309550f25 removed implicit iterator conversions. So we have to get the iterators explicitly now. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: archive child iterator changesJiri Slaby
After LLVM commit 25569fdcdab0, archive iterator returns object::Archive::Child instead of child_iterator, adapt to that. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: adapt to new Linker::linkModulesJiri Slaby
LLVM commit d912be98f8eb changed the prototype of linkModules to accept std::unique_ptr. Adapt to that. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: SmallString is always up-to-dateJiri Slaby
No need to flush it, see llvm-mirror/llvm@d4177b2 Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: handle optimization passes changesJiri Slaby
createFunctionAttrsPass was split to createPostOrderFunctionAttrsPass and createReversePostOrderFunctionAttrsPass in LLVM commit e96fb9ab15d4. createGlobalsModRefPass was changed to createGlobalsAAWrapperPass in LLVM commit 9146833fa313. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12llvm38: no rounding in APFloatJiri Slaby
The rounding was removed because it was never needed: llvm-mirror/llvm@ff278be Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-12Fix uploading of coverage information from inside of dockerMartin Nowack
2018-07-11Add missing curlMartin Nowack
2018-07-11Fix slow Mac Travis build: wildcard is not expanded with quotesMartin Nowack
2018-07-11Added "override" in Executor.h to silence compiler warnings (and ran ↵Cristian Cadar
clang-format on patch)
2018-07-11Removed support for klee_make_symbolic with 2 arguments. This has been ↵Cristian Cadar
deprecated for many years now and causes problems during replay. Changed and simplified affected test case.
2018-07-10test: remove undefined behaviourJiri Slaby
Shifting negative values is implementation-defined. Shifting by equal number of the bits as is the size of the type is undefined. So fix both of these. This fixes #911. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-10Enabled tcmalloc by defaultTimotej Kapus
2018-07-04Link dynamic libraries with specific paths instead of resolving them during ↵Martin Nowack
runtime
2018-07-04Fix incorrect invocation of kleeMartin Nowack
2018-07-04Fix uninitialized memory: enums have to be initializedMartin Nowack
2018-07-04Add missing out-of-tree include files directory for TCMallocMartin Nowack
2018-07-04Fix compiler warnings if assertions are disabledMartin Nowack
2018-07-04Support sanitizer suppression files with lit-based testingMartin Nowack
2018-07-04Extensive updates to the build script for dependencies and dockerMartin Nowack
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.
2018-07-04runtime: remove obsolete code for building modules instead of archivesJulian Büning
2018-07-04Reorder linking and optimizationsMartin Nowack
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.
2018-07-04Reorganise runtime libraries provided by KLEEMartin Nowack
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.
2018-07-02Removed obsolete scriptCristian Cadar
2018-07-02test/lit.cfg: remove obsolete hack from (LLVM < 3.0 is no longer supported)Julian Büning
2018-07-02CMake: use cmake_{push,pop}_check_stateJulian Büning
2018-07-02CMake: check for ctype and mallinfo functions with CXX instead of C compilerJulian Büning