forked from OSchip/llvm-project
[Sanitizer] Replace diagnostic string literal to workaround CMake 2.8 bug.
Let me tell you a story. Suppose you want to build your project (e.g. LLVM) with CMake 2.8, Clang and AddressSanitizer. You also want to ensure that Clang is fresh enough and check that CMAKE_CXX_COMPILER_VERSION is 3.1+. This check would fail - CMake would fail to correctly calculate compiler version if you pass CMAKE_CXX_FLAGS=-fsanitize=address. The problem is funky compiler version calculation in CMakeDetermineCompilerId.cmake module: it compiles the sample source file with provided compiler and compile flags, runs "strings" and greps for "INFO:" ASCII strings contained on the executable to fetch "INFO:compiler", "INFO:compiler_version" etc. It limits the output of grep to just 4 lines. Unfortunately, if your executable was built with ASan, it would also contain an ASCII string INFO: %s ignores mlock/mlockall/munlock/munlockall and INFO:compiler_version string would never be parsed. All of the above actually happened after r243574 when we tried to configure libcxx with just-built Clang with TSan/MSan, and the version check mentioned above failed in HandleLLVMOptions.cmake (╯°□°)╯.~.┻━┻ llvm-svn: 243599
This commit is contained in:
parent
95c14f59a8
commit
ba46a47e07
|
@ -4957,7 +4957,7 @@ static void MlockIsUnsupported() {
|
|||
static atomic_uint8_t printed;
|
||||
if (atomic_exchange(&printed, 1, memory_order_relaxed))
|
||||
return;
|
||||
VPrintf(1, "INFO: %s ignores mlock/mlockall/munlock/munlockall\n",
|
||||
VPrintf(1, "%s ignores mlock/mlockall/munlock/munlockall\n",
|
||||
SanitizerToolName);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue