ctest: add support for additional sanitizer options
Sanitizers receive options through their environment variable; support user-specified options here.
This commit is contained in:
parent
0b9ffffcd4
commit
ca9cc25ce8
|
@ -351,6 +351,7 @@ Variables for CTest
|
|||
/variable/CTEST_HG_UPDATE_OPTIONS
|
||||
/variable/CTEST_MEMORYCHECK_COMMAND
|
||||
/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS
|
||||
/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS
|
||||
/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
|
||||
/variable/CTEST_MEMORYCHECK_TYPE
|
||||
/variable/CTEST_NIGHTLY_START_TIME
|
||||
|
|
|
@ -830,6 +830,12 @@ Configuration settings include:
|
|||
* `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_TYPE`
|
||||
* :module:`CTest` module variable: ``MEMORYCHECK_TYPE``
|
||||
|
||||
``MemoryCheckSanitizerOptions``
|
||||
Specify options to sanitizers when running with a sanitize-enabled build.
|
||||
|
||||
* `CTest Script`_ variable: :variable:`CTEST_MEMORYCHECK_SANITIZER_OPTIONS`
|
||||
* :module:`CTest` module variable: ``MEMORYCHECK_SANITIZER_OPTIONS``
|
||||
|
||||
``MemoryCheckSuppressionFile``
|
||||
Specify a file containing suppression rules for the
|
||||
``MemoryCheckCommand`` tool. It will be passed with options
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
CTEST_MEMORYCHECK_SANITIZER_OPTIONS
|
||||
-----------------------------------
|
||||
|
||||
Specify the CTest ``MemoryCheckSanitizerOptions`` setting
|
||||
in a :manual:`ctest(1)` dashboard client script.
|
|
@ -75,6 +75,7 @@ PurifyCommand: @PURIFYCOMMAND@
|
|||
ValgrindCommand: @VALGRIND_COMMAND@
|
||||
ValgrindCommandOptions: @VALGRIND_COMMAND_OPTIONS@
|
||||
MemoryCheckType: @MEMORYCHECK_TYPE@
|
||||
MemoryCheckSanitizerOptions: @MEMORYCHECK_SANITIZER_OPTIONS@
|
||||
MemoryCheckCommand: @MEMORYCHECK_COMMAND@
|
||||
MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@
|
||||
MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@
|
||||
|
|
|
@ -22,6 +22,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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue