When I try to build my c++ project with memory sanitizer using the CMake sanitizers modules here, I get this warning:
MemorySanitizer is not available for GNU compiler.
Although when I searched on google it is stated here that GNU compiler supports memory sanitizer.
My development enviroment is WSL2 Ubuntu 20.04 and compiler version is 9.4.0.
As stated in the comments, the GCC documentation does not document support for MemorySanitizer. There is no entry for -fsanitize=memory
- but it has -fsanitize=address
, -fsanitize=leak
, -fsanitize=thread
and several others.
The High Performance Computing wiki page you linked in you question says:
The C/C++ compilers Clang/LLVM and GCC support so-called sanitizers. These sanitizers are built into the application code and track the execution at runtime to report execution errors. There are currently four interesting sanitizers:
- AddressSanitizer and LeakSanitizer
- ThreadSanitizer
- MemorySanitizer
So it looks like it is speaking in broad strokes and that those broad strokes are wrong specifically for GCC and MemorySantizer.
Cross reference: Google wiki page on MSan:
MemorySanitizer is part of LLVM trunk and has been widely available as a compile-time option in clang since version 4.0.
Page for Clang support: https://clang.llvm.org/docs/MemorySanitizer.html.
For your reference, the line of CMake code in the CMake helper modules you are using that prints that diagnostic message is here: https://github.com/arsenm/sanitizers-cmake/blob/77df84a2af66d35bec00205651cee7de6b2b2609/cmake/sanitize-helpers.cmake#L152.