[Cmake-commits] CMake branch, next, updated. v3.0.2-5644-gc46d0c6

Bill Hoffman bill.hoffman at kitware.com
Tue Oct 7 14:09:46 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  c46d0c630c080f479f53b5a5103bd81b25c922c9 (commit)
       via  0cd0674c262376fe072b317d62247bdaa03dee43 (commit)
       via  90414910438ef4adf1c778dd658813d9750f96fe (commit)
       via  90f747ddf27fe72d04e3dd5e86437abc69477f98 (commit)
      from  fb79547b09afa0f0f16690afc89aa17b639c5df2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c46d0c630c080f479f53b5a5103bd81b25c922c9
commit c46d0c630c080f479f53b5a5103bd81b25c922c9
Merge: fb79547 0cd0674
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Tue Oct 7 14:09:44 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Oct 7 14:09:44 2014 -0400

    Merge topic 'msan-support' into next
    
    0cd0674c Merge topic 'ubsan-support' into msan-support
    90414910 Add testing to memory sanitizer.
    90f747dd add support for MemorySanitizer msan.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0cd0674c262376fe072b317d62247bdaa03dee43
commit 0cd0674c262376fe072b317d62247bdaa03dee43
Merge: 9041491 51ec99a
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Tue Oct 7 14:09:00 2014 -0400
Commit:     Bill Hoffman <bill.hoffman at kitware.com>
CommitDate: Tue Oct 7 14:09:00 2014 -0400

    Merge topic 'ubsan-support' into msan-support
    
    Conflicts:
    	Source/CTest/cmCTestMemCheckHandler.cxx
    	Source/CTest/cmCTestMemCheckHandler.h
    	Tests/CTestTestMemcheck/CMakeLists.txt

diff --cc Source/CTest/cmCTestMemCheckHandler.cxx
index 0fc4cbf,8558298..d444b9b
--- a/Source/CTest/cmCTestMemCheckHandler.cxx
+++ b/Source/CTest/cmCTestMemCheckHandler.cxx
@@@ -376,9 -376,9 +376,12 @@@ void cmCTestMemCheckHandler::GenerateDa
      case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
        os << "AddressSanitizer";
        break;
 +    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
 +      os << "MemorySanitizer";
 +      break;
+     case cmCTestMemCheckHandler::UB_SANITIZER:
+       os << "UndefinedBehaviorSanitizer";
+       break;
      default:
        os << "Unknown";
      }
@@@ -556,13 -556,13 +559,21 @@@ bool cmCTestMemCheckHandler::Initialize
      this->LogWithPID = true; // even if we give the log file the pid is added
      }
    if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
 +       == "MemorySanitizer")
 +    {
 +    this->MemoryTester
 +      = this->CTest->GetCTestConfiguration("CMakeCommand").c_str();
 +    this->MemoryTesterStyle = cmCTestMemCheckHandler::MEMORY_SANITIZER;
 +    this->LogWithPID = true; // even if we give the log file the pid is added
 +    }
++  if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
+        == "UndefinedBehaviorSanitizer")
+     {
+     this->MemoryTester
+       = this->CTest->GetCTestConfiguration("CMakeCommand").c_str();
+     this->MemoryTesterStyle = cmCTestMemCheckHandler::UB_SANITIZER;
+     this->LogWithPID = true; // even if we give the log file the pid is added
+     }
    // Check the MemoryCheckType
    if(this->MemoryTesterStyle == cmCTestMemCheckHandler::UNKNOWN)
      {
@@@ -685,11 -685,11 +696,12 @@@
        this->MemoryTesterOptions.push_back("/M");
        break;
        }
 -      // these two are almost the same but the env var used
 +      // these three are almost the same but the env var used
        // is different
 +    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
      case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
      case cmCTestMemCheckHandler::THREAD_SANITIZER:
+     case cmCTestMemCheckHandler::UB_SANITIZER:
        {
        // To pass arguments to ThreadSanitizer the environment variable
        // TSAN_OPTIONS is used. This is done with the cmake -E env command.
@@@ -698,19 -698,25 +710,29 @@@
        // TSAN_OPTIONS string with the log_path in it.
        this->MemoryTesterDynamicOptions.push_back("-E");
        this->MemoryTesterDynamicOptions.push_back("env");
-       std::string envVar = "TSAN_OPTIONS";
-       std::string extraOptions;
-       if(this->MemoryTesterStyle == cmCTestMemCheckHandler::ADDRESS_SANITIZER)
+       std::string envVar;
+       std::string extraOptions =
+         this->CTest->GetCTestConfiguration("MemoryCheckSanitizerOptions");
+       if(this->MemoryTesterStyle == cmCTestMemCheckHandler::THREAD_SANITIZER)
+         {
+         envVar = "TSAN_OPTIONS";
+         }
+       else if(this->MemoryTesterStyle ==
+                 cmCTestMemCheckHandler::ADDRESS_SANITIZER)
          {
          envVar = "ASAN_OPTIONS";
-         extraOptions = " detect_leaks=1";
+         extraOptions += " detect_leaks=1";
+         }
+       else if(this->MemoryTesterStyle == cmCTestMemCheckHandler::UB_SANITIZER)
+         {
+         envVar = "UBSAN_OPTIONS";
          }
 +      if(this->MemoryTesterStyle == cmCTestMemCheckHandler::MEMORY_SANITIZER)
 +        {
 +        envVar = "MSAN_OPTIONS";
 +        }
        std::string outputFile = envVar + "=log_path=\""
-         + this->MemoryTesterOutputFile + "\"";
+         + this->MemoryTesterOutputFile + "\" ";
        this->MemoryTesterEnvironmentVariable = outputFile + extraOptions;
        break;
        }
@@@ -746,9 -752,9 +768,11 @@@ ProcessMemCheckOutput(const std::string
    else if ( this->MemoryTesterStyle ==
              cmCTestMemCheckHandler::THREAD_SANITIZER ||
              this->MemoryTesterStyle ==
 -            cmCTestMemCheckHandler::UB_SANITIZER ||
 +            cmCTestMemCheckHandler::ADDRESS_SANITIZER ||
              this->MemoryTesterStyle ==
-             cmCTestMemCheckHandler::MEMORY_SANITIZER)
 -            cmCTestMemCheckHandler::ADDRESS_SANITIZER)
++            cmCTestMemCheckHandler::MEMORY_SANITIZER ||
++            this->MemoryTesterStyle ==
++            cmCTestMemCheckHandler::UB_SANITIZER)
      {
      return this->ProcessMemCheckSanitizerOutput(str, log, results);
      }
@@@ -788,19 -794,17 +812,22 @@@ bool cmCTestMemCheckHandler::ProcessMem
    std::vector<int>& result)
  {
    std::string regex;
 -  if(this->MemoryTesterStyle == cmCTestMemCheckHandler::THREAD_SANITIZER)
 -    {
 -    regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
 -    }
 -  else if(this->MemoryTesterStyle == cmCTestMemCheckHandler::ADDRESS_SANITIZER)
 -    {
 -    regex = "ERROR: AddressSanitizer: (.*) on.*";
 -    }
 -  else if(this->MemoryTesterStyle == cmCTestMemCheckHandler::UB_SANITIZER)
 +  switch ( this->MemoryTesterStyle )
      {
 -    regex = "runtime error: (.*)";
 +    case cmCTestMemCheckHandler::THREAD_SANITIZER:
 +      regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
 +      break;
 +    case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
 +      regex = "ERROR: AddressSanitizer: (.*) on.*";
 +      break;
 +    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
 +      regex = "WARNING: MemorySanitizer: (.*)";
 +      break;
++    case cmCTestMemCheckHandler::UB_SANITIZER:
++      regex = "runtime error: (.*)";
++      break;
 +    default:
 +      break;
      }
    cmsys::RegularExpression sanitizerWarning(regex);
    cmsys::RegularExpression leakWarning("(Direct|Indirect) leak of .*");
diff --cc Source/CTest/cmCTestMemCheckHandler.h
index e52b820,bba85bd..2cc3d68
--- a/Source/CTest/cmCTestMemCheckHandler.h
+++ b/Source/CTest/cmCTestMemCheckHandler.h
@@@ -49,10 -49,10 +49,11 @@@ private
      VALGRIND,
      PURIFY,
      BOUNDS_CHECKER,
-     // checkers after hear do not use the standard error list
+     // checkers after here do not use the standard error list
      THREAD_SANITIZER,
      ADDRESS_SANITIZER,
-     MEMORY_SANITIZER
++    MEMORY_SANITIZER,
+     UB_SANITIZER
    };
  public:
    enum { // Memory faults
diff --cc Tests/CTestTestMemcheck/CMakeLists.txt
index 34f7740,b564892..6b4fdde
--- a/Tests/CTestTestMemcheck/CMakeLists.txt
+++ b/Tests/CTestTestMemcheck/CMakeLists.txt
@@@ -134,9 -134,9 +134,10 @@@ set(CTEST_EXTRA_CODE
  set_tests_properties(CTestTestMemcheckDummyLeakSanitizer PROPERTIES
      PASS_REGULAR_EXPRESSION
      ".*Memory checking results:.*Direct leak - 2.*Indirect leak - 1.*")
++
  # add AddressSanitizer test
  set(CTEST_EXTRA_CODE
- "set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
+ "set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
  ")
  
  set(CMAKELISTS_EXTRA_CODE
@@@ -150,22 -150,22 +151,39 @@@ set_tests_properties(CTestTestMemcheckD
      PASS_REGULAR_EXPRESSION
      ".*Memory checking results:.*heap-buffer-overflow - 1.*")
  
 +# add MemorySanitizer test
 +set(CTEST_EXTRA_CODE
 +"set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
 +")
 +
 +set(CMAKELISTS_EXTRA_CODE
 +"add_test(NAME TestSan COMMAND \"${CMAKE_COMMAND}\"
 +-P \"${CMAKE_CURRENT_SOURCE_DIR}/testMemorySanitizer.cmake\")
 +")
 +gen_mc_test_internal(DummyMemorySanitizer "" -DMEMCHECK_TYPE=MemorySanitizer)
 +set(CMAKELISTS_EXTRA_CODE )
 +set(CTEST_EXTRA_CODE)
 +set_tests_properties(CTestTestMemcheckDummyMemorySanitizer PROPERTIES
 +    PASS_REGULAR_EXPRESSION
 +    ".*Memory checking results:.*use-of-uninitialized-value - 1.*")
 +
+ # add UndefinedBehaviorSanitizer test
+ set(CTEST_EXTRA_CODE
+ "set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS \"simulate_sanitizer=1\")
+ ")
+ 
+ set(CMAKELISTS_EXTRA_CODE
+ "add_test(NAME TestSan COMMAND \"${CMAKE_COMMAND}\"
+ -P \"${CMAKE_CURRENT_SOURCE_DIR}/testUndefinedBehaviorSanitizer.cmake\")
+ ")
+ gen_mc_test_internal(DummyUndefinedBehaviorSanitizer "" -DMEMCHECK_TYPE=UndefinedBehaviorSanitizer)
+ set(CMAKELISTS_EXTRA_CODE )
+ set(CTEST_EXTRA_CODE)
+ set_tests_properties(CTestTestMemcheckDummyUndefinedBehaviorSanitizer PROPERTIES
+     PASS_REGULAR_EXPRESSION
+     ".*Memory checking results:.*left shift of negative value -256 - 1.*")
+ 
++
  gen_mc_test(DummyPurify "\${PSEUDO_PURIFY}")
  gen_mc_test(DummyValgrind "\${PSEUDO_VALGRIND}")
  gen_mc_test(DummyBC "\${PSEUDO_BC}")

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=90414910438ef4adf1c778dd658813d9750f96fe
commit 90414910438ef4adf1c778dd658813d9750f96fe
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Tue Oct 7 13:51:55 2014 -0400
Commit:     Bill Hoffman <bill.hoffman at kitware.com>
CommitDate: Tue Oct 7 13:51:55 2014 -0400

    Add testing to memory sanitizer.

diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx
index 4cb882c..0fc4cbf 100644
--- a/Source/CTest/cmCTestMemCheckHandler.cxx
+++ b/Source/CTest/cmCTestMemCheckHandler.cxx
@@ -788,13 +788,19 @@ bool cmCTestMemCheckHandler::ProcessMemCheckSanitizerOutput(
   std::vector<int>& result)
 {
   std::string regex;
-  if(this->MemoryTesterStyle == cmCTestMemCheckHandler::THREAD_SANITIZER)
-    {
-    regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
-    }
-  else
+  switch ( this->MemoryTesterStyle )
     {
-    regex = "ERROR: AddressSanitizer: (.*) on.*";
+    case cmCTestMemCheckHandler::THREAD_SANITIZER:
+      regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
+      break;
+    case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
+      regex = "ERROR: AddressSanitizer: (.*) on.*";
+      break;
+    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
+      regex = "WARNING: MemorySanitizer: (.*)";
+      break;
+    default:
+      break;
     }
   cmsys::RegularExpression sanitizerWarning(regex);
   cmsys::RegularExpression leakWarning("(Direct|Indirect) leak of .*");
diff --git a/Tests/CTestTestMemcheck/CMakeLists.txt b/Tests/CTestTestMemcheck/CMakeLists.txt
index 3ad0b26..34f7740 100644
--- a/Tests/CTestTestMemcheck/CMakeLists.txt
+++ b/Tests/CTestTestMemcheck/CMakeLists.txt
@@ -150,6 +150,21 @@ set_tests_properties(CTestTestMemcheckDummyAddressSanitizer PROPERTIES
     PASS_REGULAR_EXPRESSION
     ".*Memory checking results:.*heap-buffer-overflow - 1.*")
 
+# add MemorySanitizer test
+set(CTEST_EXTRA_CODE
+"set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"simulate_sanitizer=1 report_bugs=1 history_size=5 exitcode=55\")
+")
+
+set(CMAKELISTS_EXTRA_CODE
+"add_test(NAME TestSan COMMAND \"${CMAKE_COMMAND}\"
+-P \"${CMAKE_CURRENT_SOURCE_DIR}/testMemorySanitizer.cmake\")
+")
+gen_mc_test_internal(DummyMemorySanitizer "" -DMEMCHECK_TYPE=MemorySanitizer)
+set(CMAKELISTS_EXTRA_CODE )
+set(CTEST_EXTRA_CODE)
+set_tests_properties(CTestTestMemcheckDummyMemorySanitizer PROPERTIES
+    PASS_REGULAR_EXPRESSION
+    ".*Memory checking results:.*use-of-uninitialized-value - 1.*")
 
 gen_mc_test(DummyPurify "\${PSEUDO_PURIFY}")
 gen_mc_test(DummyValgrind "\${PSEUDO_VALGRIND}")

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=90f747ddf27fe72d04e3dd5e86437abc69477f98
commit 90f747ddf27fe72d04e3dd5e86437abc69477f98
Author:     Bill Hoffman <bill.hoffman at kitware.com>
AuthorDate: Tue Oct 7 11:34:53 2014 -0400
Commit:     Bill Hoffman <bill.hoffman at kitware.com>
CommitDate: Tue Oct 7 11:34:53 2014 -0400

    add support for MemorySanitizer msan.
    
    This commit adds support for MemorySanitizer to CMake.

diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx
index a7ab077..4cb882c 100644
--- a/Source/CTest/cmCTestMemCheckHandler.cxx
+++ b/Source/CTest/cmCTestMemCheckHandler.cxx
@@ -376,6 +376,9 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os)
     case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
       os << "AddressSanitizer";
       break;
+    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
+      os << "MemorySanitizer";
+      break;
     default:
       os << "Unknown";
     }
@@ -552,6 +555,14 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
     this->MemoryTesterStyle = cmCTestMemCheckHandler::ADDRESS_SANITIZER;
     this->LogWithPID = true; // even if we give the log file the pid is added
     }
+  if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
+       == "MemorySanitizer")
+    {
+    this->MemoryTester
+      = this->CTest->GetCTestConfiguration("CMakeCommand").c_str();
+    this->MemoryTesterStyle = cmCTestMemCheckHandler::MEMORY_SANITIZER;
+    this->LogWithPID = true; // even if we give the log file the pid is added
+    }
   // Check the MemoryCheckType
   if(this->MemoryTesterStyle == cmCTestMemCheckHandler::UNKNOWN)
     {
@@ -674,8 +685,9 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
       this->MemoryTesterOptions.push_back("/M");
       break;
       }
-      // these two are almost the same but the env var used
+      // these three are almost the same but the env var used
       // is different
+    case cmCTestMemCheckHandler::MEMORY_SANITIZER:
     case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
     case cmCTestMemCheckHandler::THREAD_SANITIZER:
       {
@@ -693,6 +705,10 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
         envVar = "ASAN_OPTIONS";
         extraOptions = " detect_leaks=1";
         }
+      if(this->MemoryTesterStyle == cmCTestMemCheckHandler::MEMORY_SANITIZER)
+        {
+        envVar = "MSAN_OPTIONS";
+        }
       std::string outputFile = envVar + "=log_path=\""
         + this->MemoryTesterOutputFile + "\"";
       this->MemoryTesterEnvironmentVariable = outputFile + extraOptions;
@@ -730,7 +746,9 @@ ProcessMemCheckOutput(const std::string& str,
   else if ( this->MemoryTesterStyle ==
             cmCTestMemCheckHandler::THREAD_SANITIZER ||
             this->MemoryTesterStyle ==
-            cmCTestMemCheckHandler::ADDRESS_SANITIZER)
+            cmCTestMemCheckHandler::ADDRESS_SANITIZER ||
+            this->MemoryTesterStyle ==
+            cmCTestMemCheckHandler::MEMORY_SANITIZER)
     {
     return this->ProcessMemCheckSanitizerOutput(str, log, results);
     }
diff --git a/Source/CTest/cmCTestMemCheckHandler.h b/Source/CTest/cmCTestMemCheckHandler.h
index 2195dab..e52b820 100644
--- a/Source/CTest/cmCTestMemCheckHandler.h
+++ b/Source/CTest/cmCTestMemCheckHandler.h
@@ -51,7 +51,8 @@ private:
     BOUNDS_CHECKER,
     // checkers after hear do not use the standard error list
     THREAD_SANITIZER,
-    ADDRESS_SANITIZER
+    ADDRESS_SANITIZER,
+    MEMORY_SANITIZER
   };
 public:
   enum { // Memory faults

-----------------------------------------------------------------------

Summary of changes:
 Source/CTest/cmCTestMemCheckHandler.cxx |   49 +++++++++++++++++++++++--------
 Source/CTest/cmCTestMemCheckHandler.h   |    1 +
 Tests/CTestTestMemcheck/CMakeLists.txt  |   18 ++++++++++++
 3 files changed, 55 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list