diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2014-10-03 17:45:07 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2014-10-03 17:45:07 (GMT) |
commit | ca9cc25ce8c6f74998fd9f30d36449814c170ea5 (patch) | |
tree | a2b4ced445d53478efb84cab043b9325e25d7bc6 /Source | |
parent | 0b9ffffcd437c3538ff5aa1858d743a289b06129 (diff) | |
download | CMake-ca9cc25ce8c6f74998fd9f30d36449814c170ea5.zip CMake-ca9cc25ce8c6f74998fd9f30d36449814c170ea5.tar.gz CMake-ca9cc25ce8c6f74998fd9f30d36449814c170ea5.tar.bz2 |
ctest: add support for additional sanitizer options
Sanitizers receive options through their environment variable; support
user-specified options here.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CTest/cmCTestMemCheckCommand.cxx | 2 | ||||
-rw-r--r-- | Source/CTest/cmCTestMemCheckHandler.cxx | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/Source/CTest/cmCTestMemCheckCommand.cxx b/Source/CTest/cmCTestMemCheckCommand.cxx index 939b4dc..f144066 100644 --- a/Source/CTest/cmCTestMemCheckCommand.cxx +++ b/Source/CTest/cmCTestMemCheckCommand.cxx @@ -23,6 +23,8 @@ cmCTestGenericHandler* cmCTestMemCheckCommand::InitializeActualHandler() this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "MemoryCheckType", "CTEST_MEMORYCHECK_TYPE"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "MemoryCheckSanitizerOptions", "CTEST_MEMORYCHECK_SANITIZER_OPTIONS"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "MemoryCheckCommand", "CTEST_MEMORYCHECK_COMMAND"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "MemoryCheckCommandOptions", "CTEST_MEMORYCHECK_COMMAND_OPTIONS"); diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index a7ab077..16ac37c 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -686,15 +686,21 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() // 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"; } std::string outputFile = envVar + "=log_path=\"" - + this->MemoryTesterOutputFile + "\""; + + this->MemoryTesterOutputFile + "\" "; this->MemoryTesterEnvironmentVariable = outputFile + extraOptions; break; } |