Hello community, here is the log from the commit of package klee for openSUSE:Factory checked in at 2018-06-19 12:03:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/klee (Old) and /work/SRC/openSUSE:Factory/.klee.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "klee" Tue Jun 19 12:03:33 2018 rev:10 rq:617208 version:1.4.0+20180614 Changes: -------- --- /work/SRC/openSUSE:Factory/klee/klee.changes 2018-05-30 12:29:50.948828958 +0200 +++ /work/SRC/openSUSE:Factory/.klee.new/klee.changes 2018-06-19 12:03:35.502191929 +0200 @@ -1,0 +2,10 @@ +Sat Jun 16 09:09:56 UTC 2018 - opensuse-packag...@opensuse.org + +- Update to version 1.4.0+20180614: + * Add unittest for DiscretePDF + * klee_int: allow NULL as name + * cmake: find_llvm, handle libLLVM-version.so properly + * Fixed memory leak from Executor::inCloseMerge, fixes #883 +- Require python3-lit as the lit packaging was refactored + +------------------------------------------------------------------- Old: ---- klee-1.4.0+20180524.tar.xz New: ---- klee-1.4.0+20180614.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ klee.spec ++++++ --- /var/tmp/diff_new_pack.5Aa6Eg/_old 2018-06-19 12:03:36.526153911 +0200 +++ /var/tmp/diff_new_pack.5Aa6Eg/_new 2018-06-19 12:03:36.530153763 +0200 @@ -19,7 +19,7 @@ %define llvm_version_minor 0 %define llvm_version %{llvm_version_major} -%define version_unconverted 1.4.0+20180524 +%define version_unconverted 1.4.0+20180614 %ifarch %{ix86} x86_64 %define with_uclibc 1 @@ -31,7 +31,7 @@ Summary: LLVM Execution Engine License: NCSA Group: Development/Languages/Other -Version: 1.4.0+20180524 +Version: 1.4.0+20180614 Release: 0 Url: http://klee.github.io/ Source0: %{name}-%{version}.tar.xz @@ -71,10 +71,10 @@ BuildRequires: libacl-devel BuildRequires: libcap-devel BuildRequires: libselinux-devel -BuildRequires: lit BuildRequires: llvm%{llvm_version}-devel BuildRequires: ninja BuildRequires: python3-base +BuildRequires: python3-lit BuildRequires: python3-setuptools BuildRequires: stp-devel BuildRequires: xz ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.5Aa6Eg/_old 2018-06-19 12:03:36.690147822 +0200 +++ /var/tmp/diff_new_pack.5Aa6Eg/_new 2018-06-19 12:03:36.690147822 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/klee/klee.git</param> - <param name="changesrevision">843e9be8fc10c6ffb30218c5a826aab192a31955</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">d2fbdf74493d69e73fbfaedc0d59e593dfd7c69d</param></service></servicedata> \ No newline at end of file ++++++ klee-1.4.0+20180524.tar.xz -> klee-1.4.0+20180614.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/cmake/find_llvm.cmake new/klee-1.4.0+20180614/cmake/find_llvm.cmake --- old/klee-1.4.0+20180524/cmake/find_llvm.cmake 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/cmake/find_llvm.cmake 2018-06-14 21:18:19.000000000 +0200 @@ -173,7 +173,7 @@ set(created_targets "") foreach (llvm_lib ${_llvm_libs_list}) get_filename_component(llvm_lib_file_name "${llvm_lib}" NAME) - string(REGEX REPLACE "^(lib)?(LLVM[a-zA-Z0-9]+)\\..+$" "\\2" target_name "${llvm_lib_file_name}") + string(REGEX REPLACE "^(lib)?(LLVM[-.a-zA-Z0-9]+)\\..+$" "\\2" target_name "${llvm_lib_file_name}") list(APPEND targets_to_return "${target_name}") if (NOT TARGET "${target_name}") # DEBUG: message(STATUS "Creating imported target \"${target_name}\"" " for \"${llvm_lib}\"") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/include/klee/Internal/ADT/DiscretePDF.inc new/klee-1.4.0+20180614/include/klee/Internal/ADT/DiscretePDF.inc --- old/klee-1.4.0+20180524/include/klee/Internal/ADT/DiscretePDF.inc 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/include/klee/Internal/ADT/DiscretePDF.inc 2018-06-14 21:18:19.000000000 +0200 @@ -7,6 +7,7 @@ // //===----------------------------------------------------------------------===// +#include <cassert> namespace klee { template <class T> @@ -162,8 +163,7 @@ template <class T> T DiscretePDF<T>::choose(double p) { - if ((p < 0.0) || (p >= 1.0)) - assert(0 && "choose: argument(p) outside valid range"); + assert (!((p < 0.0) || (p >= 1.0)) && "choose: argument(p) outside valid range"); if (!m_root) assert(0 && "choose: choose() called on empty tree"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/include/klee/MergeHandler.h new/klee-1.4.0+20180614/include/klee/MergeHandler.h --- old/klee-1.4.0+20180524/include/klee/MergeHandler.h 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/include/klee/MergeHandler.h 2018-06-14 21:18:19.000000000 +0200 @@ -133,9 +133,6 @@ /// @brief Remove state from the 'openStates' vector void removeOpenState(ExecutionState *es); - /// @brief Remove state from the 'inCloseMerge' set in the executor - void removeFromCloseMergeSet(ExecutionState *es); - /// @brief True, if any states have run into 'klee_close_merge()' and have /// not been released yet bool hasMergedStates(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/include/klee/klee.h new/klee-1.4.0+20180614/include/klee/klee.h --- old/klee-1.4.0+20180524/include/klee/klee.h 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/include/klee/klee.h 2018-06-14 21:18:19.000000000 +0200 @@ -31,16 +31,16 @@ * \arg addr - The start of the object. * \arg nbytes - The number of bytes to make symbolic; currently this *must* * be the entire contents of the object. - * \arg name - An optional name, used for identifying the object in messages, - * output files, etc. + * \arg name - A name used for identifying the object in messages, output + * files, etc. If NULL, object is called "unnamed". */ void klee_make_symbolic(void *addr, size_t nbytes, const char *name); /* klee_range - Construct a symbolic value in the signed interval * [begin,end). * - * \arg name - An optional name, used for identifying the object in messages, - * output files, etc. + * \arg name - A name used for identifying the object in messages, output + * files, etc. If NULL, object is called "unnamed". */ int klee_range(int begin, int end, const char *name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/lib/Core/MergeHandler.cpp new/klee-1.4.0+20180614/lib/Core/MergeHandler.cpp --- old/klee-1.4.0+20180524/lib/Core/MergeHandler.cpp 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/lib/Core/MergeHandler.cpp 2018-06-14 21:18:19.000000000 +0200 @@ -69,10 +69,6 @@ openStates.pop_back(); } -void MergeHandler::removeFromCloseMergeSet(ExecutionState *es){ - executor->inCloseMerge.erase(es); -} - void MergeHandler::addClosedState(ExecutionState *es, llvm::Instruction *mp) { // Update stats @@ -102,6 +98,7 @@ for (auto& mState: cpv) { if (mState->merge(*es)) { executor->terminateState(*es); + executor->inCloseMerge.erase(es); mergedSuccessful = true; break; } @@ -117,6 +114,7 @@ for (auto& curMergeGroup: reachedCloseMerge) { for (auto curState: curMergeGroup.second) { executor->continueState(*curState); + executor->inCloseMerge.erase(curState); } } reachedCloseMerge.clear(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/lib/Core/SpecialFunctionHandler.cpp new/klee-1.4.0+20180614/lib/Core/SpecialFunctionHandler.cpp --- old/klee-1.4.0+20180524/lib/Core/SpecialFunctionHandler.cpp 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/lib/Core/SpecialFunctionHandler.cpp 2018-06-14 21:18:19.000000000 +0200 @@ -375,6 +375,8 @@ warning << &state << " ran into a close at " << i << " without a preceding open"; klee_warning("%s", warning.str().c_str()); } else { + assert(executor.inCloseMerge.find(&state) == executor.inCloseMerge.end() && + "State cannot run into close_merge while being closed"); executor.inCloseMerge.insert(&state); state.openMergeStack.back()->addClosedState(&state, i); state.openMergeStack.pop_back(); @@ -760,7 +762,7 @@ klee_warning("klee_make_symbolic: deprecated number of arguments (2 instead of 3)"); break; case 3: - name = readStringAtAddress(state, arguments[2]); + name = arguments[2]->isZero() ? "" : readStringAtAddress(state, arguments[2]); break; default: executor.terminateStateOnError(state, "illegal number of arguments to klee_make_symbolic(void*, size_t, char*)", Executor::User); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/test/regression/2018-04-05-make-symbolic-null-name.c new/klee-1.4.0+20180614/test/regression/2018-04-05-make-symbolic-null-name.c --- old/klee-1.4.0+20180524/test/regression/2018-04-05-make-symbolic-null-name.c 1970-01-01 01:00:00.000000000 +0100 +++ new/klee-1.4.0+20180614/test/regression/2018-04-05-make-symbolic-null-name.c 2018-06-14 21:18:19.000000000 +0200 @@ -0,0 +1,9 @@ +// RUN: %llvmgcc %s -emit-llvm -g -c -o %t1.bc +// RUN: rm -rf %t.klee-out +// RUN: %klee --output-dir=%t.klee-out %t1.bc + +#include "klee/klee.h" + +int main(int argc, char * argv[]) { + int a = klee_int((void*)0); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/unittests/CMakeLists.txt new/klee-1.4.0+20180614/unittests/CMakeLists.txt --- old/klee-1.4.0+20180524/unittests/CMakeLists.txt 2018-05-24 15:53:51.000000000 +0200 +++ new/klee-1.4.0+20180614/unittests/CMakeLists.txt 2018-06-14 21:18:19.000000000 +0200 @@ -85,6 +85,7 @@ add_subdirectory(Ref) add_subdirectory(Solver) add_subdirectory(TreeStream) +add_subdirectory(DiscretePDF) # Set up lit configuration set (UNIT_TEST_EXE_SUFFIX "Test") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/unittests/DiscretePDF/CMakeLists.txt new/klee-1.4.0+20180614/unittests/DiscretePDF/CMakeLists.txt --- old/klee-1.4.0+20180524/unittests/DiscretePDF/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/klee-1.4.0+20180614/unittests/DiscretePDF/CMakeLists.txt 2018-06-14 21:18:19.000000000 +0200 @@ -0,0 +1,4 @@ +add_klee_unit_test(DiscretePDFTest + DiscretePDFTest.cpp) +# FIXME add the following line to link against libgtest.a +target_link_libraries(DiscretePDFTest PRIVATE kleaverSolver) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/klee-1.4.0+20180524/unittests/DiscretePDF/DiscretePDFTest.cpp new/klee-1.4.0+20180614/unittests/DiscretePDF/DiscretePDFTest.cpp --- old/klee-1.4.0+20180524/unittests/DiscretePDF/DiscretePDFTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/klee-1.4.0+20180614/unittests/DiscretePDF/DiscretePDFTest.cpp 2018-06-14 21:18:19.000000000 +0200 @@ -0,0 +1,58 @@ +#include "klee/Internal/ADT/DiscretePDF.h" +#include "gtest/gtest.h" +#include <iostream> +#include <vector> + +int finished = 0; + +using namespace klee; + +TEST(DiscretePDFTest, Rotatation) { + DiscretePDF<int> testTree; + + ASSERT_TRUE(testTree.empty()); + + for (auto i = 0; i < 9; ++i) + testTree.insert(i + 10, 0.1 * i); + + for (auto i = 9; i > 0; --i) + testTree.insert(i + 100, 0.01 * i); + + ASSERT_FALSE(testTree.empty()); + + ASSERT_TRUE(testTree.inTree(101)); + testTree.remove(101); + ASSERT_FALSE(testTree.inTree(101)); + testTree.insert(101, 0.01); + ASSERT_EQ(0.01, testTree.getWeight(101)); + + ASSERT_EQ(11, testTree.choose(0.01)); + testTree.choose(0); + testTree.choose(0.9999999); + + testTree.update(101, 0.9); + + for (auto i = 0; i < 9; ++i) + testTree.remove(i + 10); + for (auto i = 0; i < 50; ++i) { + testTree.insert(50 + i, 2 * i); + } + + for (auto i = 9; i > 0; --i) + testTree.remove(i + 100); + + testTree.insert(1, 0); +#ifndef NDEBUG + ASSERT_DEATH({ testTree.insert(1, 0); }, "already in tree"); +#endif + + while (!testTree.empty()) { + testTree.remove(testTree.choose(0)); + } + + testTree.insert(1, 1); + testTree.insert(2, 2); + + ASSERT_EQ(1, testTree.getWeight(1)); + ASSERT_EQ(2, testTree.getWeight(2)); +}