about summary refs log tree commit diff homepage
AgeCommit message (Collapse)Author
2015-04-10The Docker image had python2 and python3 which is a waste of spaceDan Liew
(I'm not sure where python3 came from. I didn't explicitly install it). Just ship python3.
2015-04-10Don't upgrade pip or setuptools. Upgrading pip breaks the build becauseDan Liew
/usr/local/bin/ isn't in PATH so using pip after upgrading it fails.
2015-04-10Add missing slash in last commit.Dan Liew
2015-04-10Update DockerfileDavid Leon Gil
klee-stats requires tabulate to be installed.
2015-04-09Add initial Dockerfile for building a KLEE Docker image (uses LLVM3.4).Dan Liew
This is is tightly coupled with the TravisCI scripts. There are some really nasty hacks in here that we should get rid of at some point.
2015-04-09Try to fix using the compiler KLEE's configure script detected again!Dan Liew
My first attempt in b41cf33b6b726fd97e502c5c4818f5feeea0284b was wrong because setting the CC and CXX Makefile variables in Makefile.config.in did not work because LLVM's Makefile.config would override them. Also detecting the C compiler is unnecessary because we already do this (bitcode compiler detection)
2015-04-09Normalised line endingsCristian Cadar
2015-04-09Added .gitattribute file that takes care of line endings.Cristian Cadar
2015-04-09Fix mistake if TravisCI scripts where configure flag for enabling POSIXDan Liew
runtime was incorrect.
2015-04-09Added a new option, --rewrite-equalities, which makes it possible to disable ↵Cristian Cadar
the optimisation that rewrites existing constraints when an equality with a constant is added
2015-04-09Switch to using STP's fork of minisat for TravisCI. It contains fixesDan Liew
needed by Clang.
2015-04-08Fix very annoying issue where KLEE's configure would completlyDan Liew
ignore the C++ compiler detected and just use the compiler detected during the LLVM configure.
2015-04-03Upstream STP now depends on an external build of minisat. Attempt toDan Liew
fix travis build of upstream STP and also how KLEE links against STP.
2015-04-03Fixed issue introduce during a previous refactoring, related to field ordering.Cristian Cadar
2015-04-02Use C instead of C++ comments in C files to silence compiler warnings.Cristian Cadar
2015-04-02Silenced some compilation warnings.Cristian Cadar
2015-04-02Merge pull request #209 from erakadjiev/timestamp_optimizeCristian Cadar
Cleaner, more efficient timestamps
2015-04-02Revert "[include] Added documentation" to avoid a conflict with a pending ↵Cristian Cadar
pull request. This reverts commit badffc570e1be6b675dcab7e21829bd029c46287.
2015-04-02Fixed some doxygen issues.Cristian Cadar
2015-04-02Removed unused fakeState field from ExecutionStateCristian Cadar
2015-04-02Pass over the comments in ExecutionState.hCristian Cadar
2015-04-02Removed underConstrained field, which I believe was re-introduced byCristian Cadar
mistake in the last cleanup commit.
2015-04-02[Core] Documentation and cleanupMartin Nowack
* Removed unused member ShadowObjects in ExecutionState * Added documentation of members and reorder according to categories
2015-04-01[include] Add missing functions in klee.hMartin Nowack
2015-04-01[runtime] Fix include in klee_intMartin Nowack
2015-04-01[test] Fix compilation warningMartin Nowack
Use correct definition and declaration of main function
2015-04-01[Core] Fixed typo in assertionMartin Nowack
2015-04-01[runtime] Fix comments to c style for c files and headersMartin Nowack
2015-04-01[tests] Fix undefined functionMartin Nowack
Add some missing header to silence compiler warnings
2015-04-01[tools] Added fortified version wrapper for fprintfMartin Nowack
2015-04-01[include] Added documentationMartin Nowack
2015-04-01[include] Removed unused variableMartin Nowack
2015-03-22Fix compilation under MacOS, see https://github.com/klee/klee/issues/219 for ↵Cristian Cadar
details.
2015-03-20Improve arithmetic-right-overshift-sym-conc.c test by make sure itDan Liew
also test a negative constant as the lhs.
2015-03-20[Solver] Fix leak intermediate expression not freedMartin Nowack
2015-03-20[Core] Fix memory leak in assembler raisingMartin Nowack
2015-03-13Timestamp improvements.Emil Rakadjiev
Replaced inefficient llvm::sys::Process::GetTimeUsage() with TimeValue::now(), because in many cases only the wall clock time is needed, not the user and sys times (which are significantly more expensive to get). Updated TimingSolver and WallTimer accordingly.
2015-03-12Merge pull request #212 from MartinNowack/killing_states_warningCristian Cadar
[Core] Always warn if states get deleted due to memory limits
2015-03-12[Core] Always warn if states get deleted due to memory limitsMartin Nowack
2015-03-03Consistent capitalization of "KLEE"Cristian Cadar
2015-03-03Slight updates in license file, acknowledging more recent contributions.Cristian Cadar
2015-03-02New regression test checking that the Array factory correctly distinguishes ↵Cristian Cadar
between arrays created at the same location but with different sizes
2015-03-02Merge branch 'holycrap872-ArrayFactory'Cristian Cadar
2015-02-27Improved some comments and fixed some formatting issues in the Array factory ↵Cristian Cadar
patch.
2015-02-27Merge branch 'ArrayFactory' of https://github.com/holycrap872/klee into ↵Cristian Cadar
holycrap872-ArrayFactory
2015-02-22Added factory method for Arrays + hid constructors from outside callsEric Rizzi
The way that Arrays were handled in the past led to the possibility of aliasing issues. This occured whenever a new branch discovered an array for the first time. Each branch would create a new instance of the same array without seeing if it had been created before. Therefore, should a new branch encounter the same state as some previous branch, the previous branch's solution wouldn't satisfy the new state since they didn't recognize they were referencing the same array. By creating an array factory that creates a single symbolic array, that problem is handled. Note: Concrete arrays should not be created by the factory method since their values are never shared between branches. The factory works by seeing if an array with a similar hash has been created before (the hash is based on the name and size of array). If there has been it then searches through all of the arrays with the same hash (stored in a vector) to see if there is one with an exact match. If there is one, the address of this previously created equivalent array is returned. Otherwise, the newly created array is unique, it is added to the map, and it's address is returned. This aliasing issue can be seen by comparing the output of the Dogfood/ImmutableSet.cpp test cases with and with out this commit. Both act correctly, but the number of queries making it to the solver in the previous version is much greater 244 vs 211. This is because the UBTree in the CexCachingSolver and the cache in the CachingSolver do not recognize queries whose solutions were previously calculated because it doesn't think the arrays in the two queries are the same. While this does not cause an error, it does mean that extra calls are made.
2015-02-19Teach ExprSMTLIBPrinter to use SMTLIBv2's distinct function ratherDan Liew
than writing "(not (= a b))". This makes the code simpler and queries slightly simpler.
2015-02-13Fixed and refactored overflow test cases.Cristian Cadar
2015-02-13refactor integer overflow detection, add signed intLuca Dariz
Instead of checking for every possible casse which result in overflow, it is much simpler to perform the operation using integers with bigger dimension and check if the result overflow
2015-02-13Fix overflow detection in unsigned multiplicationLuca Dariz
Previously the check was done as unsigned int a, b, c; c = a * b; if (c < a) // error but it is wrong, since it catches only a subset of all the possible overflows. This patch improves the check as unsigned int a, b, c; if ((a > 1) && (b > 1){ if ((UINT_MAX/a) < b) // error } An additional case has been added to the tests, with two 32-bit values that cause overflow and are not detected by the old check. It is also necessary to break the lowering procedure in case the current BasicBlock is splitted; in this case it was necessary in order not to trigger the division by 0 error.