about summary refs log tree commit diff homepage
AgeCommit message (Collapse)Author
2018-09-18llvm4: PointerType is not SequentialTypeJiri Slaby
So handle the type specially whenever needed. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-18llvm4: use chrono helpers from LLVMJiri Slaby
LLVM 4 removes the old time interface and starts using the C++11's chrono. So switch to that in klee for LLVM 4 too. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-18llvm4: errorOr and similarJiri Slaby
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-18llvm4: APFloat members are functionsJiri Slaby
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-18llvm4: handle different header namesJiri Slaby
LLVM 4 renamed and splitted some headers. Take this into account in includes. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-14travis CI: add LLVM 3.9 build testsJiri Slaby
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-14llvm39: switch KLEE_RUNTIME_BUILD_TYPE to Debug+AssertsJiri Slaby
So that we do not optimize the library during build. It should be optimized only on runtime, depending on the -optimize parameter. It could cause various failures like: inlinable function call in a function with debug info must have a !dbg location call void @klee_overshift_check(i64 64, i64 %int_cast_to_i64) Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-14cmake: find_llvm, fix libraries with llvm-config 3.9Jiri Slaby
llvm-config from llvm 3.9 was broken. Fix handling of improperly returned libraries. From: liblibLLVM-3.9.so.so To: libLLVM-3.9.so Fixes #895. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-14llvm: make KLEE compile against LLVM 3.9Jiri Slaby
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-09-10Add testcase to run POSIX environment and main without argumentsMartin Nowack
2018-09-10Add POSIX runtime as dependency for the test caseMartin Nowack
2018-09-10Unify the error message if that function has not been found.Martin Nowack
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