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));
+}


Reply via email to