[Cmake-commits] CMake branch, next, updated. v3.0.2-5655-gf42ae18
Brad King
brad.king at kitware.com
Tue Oct 7 15:27:02 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 f42ae18a1ed7c2343cc1f2064cdd1e76fc551568 (commit)
via 2fad827f5ae006f7655fd7cf460c1b97ebaa7d5b (commit)
from 402c64f037e55b55e5baabb53ef6ee736306ef0b (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=f42ae18a1ed7c2343cc1f2064cdd1e76fc551568
commit f42ae18a1ed7c2343cc1f2064cdd1e76fc551568
Merge: 402c64f 2fad827
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Oct 7 15:27:01 2014 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Oct 7 15:27:01 2014 -0400
Merge topic 'ctest-memcheck-sanitizers' into next
2fad827f Revise topic 'ctest-memcheck-sanitizers' net change before rewrite
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2fad827f5ae006f7655fd7cf460c1b97ebaa7d5b
commit 2fad827f5ae006f7655fd7cf460c1b97ebaa7d5b
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Oct 7 15:25:34 2014 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Tue Oct 7 15:26:25 2014 -0400
Revise topic 'ctest-memcheck-sanitizers' net change before rewrite
diff --git a/Help/release/dev/ctest-memcheck-sanitizers.rst b/Help/release/dev/ctest-memcheck-sanitizers.rst
new file mode 100644
index 0000000..fa8fb81
--- /dev/null
+++ b/Help/release/dev/ctest-memcheck-sanitizers.rst
@@ -0,0 +1,8 @@
+ctest-memcheck-sanitizers
+-------------------------
+
+* The :command:`ctest_memcheck` command learned to support sanitizer
+ modes, including ``AddressSanitizer``, ``MemorySanitizer``,
+ ``ThreadSanitizer``, and ``UndefinedBehaviorSanitizer``.
+ Options may be set using the new
+ :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS` variable.
diff --git a/Help/release/dev/thread-sanitizer.rst b/Help/release/dev/thread-sanitizer.rst
deleted file mode 100644
index f38e8e1..0000000
--- a/Help/release/dev/thread-sanitizer.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-thread-sanitizer
-----------------
-
-* The :command:`ctest_memcheck` command learned to support
- ``ThreadSanitizer``.
diff --git a/Help/release/dev/ubsan-support.rst b/Help/release/dev/ubsan-support.rst
deleted file mode 100644
index 7bd6133..0000000
--- a/Help/release/dev/ubsan-support.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-ubsan-support
--------------
-
-* Add a ``UndefinedBehaviorSanitizer`` memcheck tooling type.
-* Add support for sanitizer options through
- :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS`.
diff --git a/Help/variable/CTEST_MEMORYCHECK_TYPE.rst b/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
index af759e9..f1087c0 100644
--- a/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
+++ b/Help/variable/CTEST_MEMORYCHECK_TYPE.rst
@@ -4,4 +4,4 @@ CTEST_MEMORYCHECK_TYPE
Specify the CTest ``MemoryCheckType`` setting
in a :manual:`ctest(1)` dashboard client script.
Valid values are Valgrind, Purify, BoundsChecker, and ThreadSanitizer,
-AddressSanitizer, and UndefinedBehaviorSanitizer.
+AddressSanitizer, MemorySanitizer, and UndefinedBehaviorSanitizer.
diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx
index d444b9b..4835010 100644
--- a/Source/CTest/cmCTestMemCheckHandler.cxx
+++ b/Source/CTest/cmCTestMemCheckHandler.cxx
@@ -370,12 +370,12 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os)
case cmCTestMemCheckHandler::BOUNDS_CHECKER:
os << "BoundsChecker";
break;
- case cmCTestMemCheckHandler::THREAD_SANITIZER:
- os << "ThreadSanitizer";
- break;
case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
os << "AddressSanitizer";
break;
+ case cmCTestMemCheckHandler::THREAD_SANITIZER:
+ os << "ThreadSanitizer";
+ break;
case cmCTestMemCheckHandler::MEMORY_SANITIZER:
os << "MemorySanitizer";
break;
@@ -543,19 +543,19 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
this->MemoryTesterStyle = cmCTestMemCheckHandler::BOUNDS_CHECKER;
}
if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
- == "ThreadSanitizer")
+ == "AddressSanitizer")
{
this->MemoryTester
= this->CTest->GetCTestConfiguration("CMakeCommand").c_str();
- this->MemoryTesterStyle = cmCTestMemCheckHandler::THREAD_SANITIZER;
+ this->MemoryTesterStyle = cmCTestMemCheckHandler::ADDRESS_SANITIZER;
this->LogWithPID = true; // even if we give the log file the pid is added
}
if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
- == "AddressSanitizer")
+ == "ThreadSanitizer")
{
this->MemoryTester
= this->CTest->GetCTestConfiguration("CMakeCommand").c_str();
- this->MemoryTesterStyle = cmCTestMemCheckHandler::ADDRESS_SANITIZER;
+ this->MemoryTesterStyle = cmCTestMemCheckHandler::THREAD_SANITIZER;
this->LogWithPID = true; // even if we give the log file the pid is added
}
if ( this->CTest->GetCTestConfiguration("MemoryCheckType")
@@ -696,11 +696,10 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
this->MemoryTesterOptions.push_back("/M");
break;
}
- // these three are almost the same but the env var used
- // is different
- case cmCTestMemCheckHandler::MEMORY_SANITIZER:
+ // these are almost the same but the env var used is different
case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
case cmCTestMemCheckHandler::THREAD_SANITIZER:
+ case cmCTestMemCheckHandler::MEMORY_SANITIZER:
case cmCTestMemCheckHandler::UB_SANITIZER:
{
// To pass arguments to ThreadSanitizer the environment variable
@@ -713,24 +712,25 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking()
std::string envVar;
std::string extraOptions =
this->CTest->GetCTestConfiguration("MemoryCheckSanitizerOptions");
- if(this->MemoryTesterStyle == cmCTestMemCheckHandler::THREAD_SANITIZER)
+ if(this->MemoryTesterStyle == cmCTestMemCheckHandler::ADDRESS_SANITIZER)
+ {
+ envVar = "ASAN_OPTIONS";
+ extraOptions += " detect_leaks=1";
+ }
+ else if(this->MemoryTesterStyle ==
+ cmCTestMemCheckHandler::THREAD_SANITIZER)
{
envVar = "TSAN_OPTIONS";
}
else if(this->MemoryTesterStyle ==
- cmCTestMemCheckHandler::ADDRESS_SANITIZER)
+ cmCTestMemCheckHandler::MEMORY_SANITIZER)
{
- envVar = "ASAN_OPTIONS";
- extraOptions += " detect_leaks=1";
+ envVar = "MSAN_OPTIONS";
}
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->MemoryTesterEnvironmentVariable = outputFile + extraOptions;
@@ -766,10 +766,10 @@ ProcessMemCheckOutput(const std::string& str,
return this->ProcessMemCheckPurifyOutput(str, log, results);
}
else if ( this->MemoryTesterStyle ==
- cmCTestMemCheckHandler::THREAD_SANITIZER ||
- this->MemoryTesterStyle ==
cmCTestMemCheckHandler::ADDRESS_SANITIZER ||
this->MemoryTesterStyle ==
+ cmCTestMemCheckHandler::THREAD_SANITIZER ||
+ this->MemoryTesterStyle ==
cmCTestMemCheckHandler::MEMORY_SANITIZER ||
this->MemoryTesterStyle ==
cmCTestMemCheckHandler::UB_SANITIZER)
@@ -814,12 +814,12 @@ bool cmCTestMemCheckHandler::ProcessMemCheckSanitizerOutput(
std::string regex;
switch ( this->MemoryTesterStyle )
{
- case cmCTestMemCheckHandler::THREAD_SANITIZER:
- regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
- break;
case cmCTestMemCheckHandler::ADDRESS_SANITIZER:
regex = "ERROR: AddressSanitizer: (.*) on.*";
break;
+ case cmCTestMemCheckHandler::THREAD_SANITIZER:
+ regex = "WARNING: ThreadSanitizer: (.*) \\(pid=.*\\)";
+ break;
case cmCTestMemCheckHandler::MEMORY_SANITIZER:
regex = "WARNING: MemorySanitizer: (.*)";
break;
diff --git a/Source/CTest/cmCTestMemCheckHandler.h b/Source/CTest/cmCTestMemCheckHandler.h
index 2cc3d68..69fdd9f 100644
--- a/Source/CTest/cmCTestMemCheckHandler.h
+++ b/Source/CTest/cmCTestMemCheckHandler.h
@@ -50,8 +50,8 @@ private:
PURIFY,
BOUNDS_CHECKER,
// checkers after here do not use the standard error list
- THREAD_SANITIZER,
ADDRESS_SANITIZER,
+ THREAD_SANITIZER,
MEMORY_SANITIZER,
UB_SANITIZER
};
diff --git a/Tests/CTestTestMemcheck/CMakeLists.txt b/Tests/CTestTestMemcheck/CMakeLists.txt
index 6b4fdde..2023e74 100644
--- a/Tests/CTestTestMemcheck/CMakeLists.txt
+++ b/Tests/CTestTestMemcheck/CMakeLists.txt
@@ -103,11 +103,11 @@ unset(CTEST_EXTRA_CONFIG)
unset(CTEST_EXTRA_CODE)
unset(CMAKELISTS_EXTRA_CODE)
+#-----------------------------------------------------------------------------
# add ThreadSanitizer test
set(CTEST_EXTRA_CODE
"set(CTEST_MEMORYCHECK_COMMAND_OPTIONS \"report_bugs=1 history_size=5 exitcode=55\")
")
-
set(CMAKELISTS_EXTRA_CODE
"add_test(NAME TestSan COMMAND \"${CMAKE_COMMAND}\"
-P \"${CMAKE_CURRENT_SOURCE_DIR}/testThreadSanitizer.cmake\")
@@ -119,11 +119,11 @@ set_tests_properties(CTestTestMemcheckDummyThreadSanitizer PROPERTIES
set(CMAKELISTS_EXTRA_CODE )
set(CTEST_EXTRA_CODE)
+#-----------------------------------------------------------------------------
# add LeakSanitizer test
set(CTEST_EXTRA_CODE
"set(CTEST_MEMORYCHECK_SANITIZER_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}/testLeakSanitizer.cmake\")
@@ -135,11 +135,11 @@ 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_SANITIZER_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}/testAddressSanitizer.cmake\")
@@ -151,6 +151,7 @@ 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\")
@@ -167,6 +168,7 @@ 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\")
@@ -183,6 +185,7 @@ 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}")
-----------------------------------------------------------------------
Summary of changes:
Help/release/dev/ctest-memcheck-sanitizers.rst | 8 +++++
Help/release/dev/thread-sanitizer.rst | 5 ---
Help/release/dev/ubsan-support.rst | 6 ----
Help/variable/CTEST_MEMORYCHECK_TYPE.rst | 2 +-
Source/CTest/cmCTestMemCheckHandler.cxx | 46 ++++++++++++------------
Source/CTest/cmCTestMemCheckHandler.h | 2 +-
Tests/CTestTestMemcheck/CMakeLists.txt | 9 +++--
7 files changed, 39 insertions(+), 39 deletions(-)
create mode 100644 Help/release/dev/ctest-memcheck-sanitizers.rst
delete mode 100644 Help/release/dev/thread-sanitizer.rst
delete mode 100644 Help/release/dev/ubsan-support.rst
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list