Intel® oneAPI DPC++/C++ Compiler
Developer Guide and Reference
Host-Side Compiler Sanitizers
Host-side sanitizers do not support the RTLD_DEEPBIND flag when a sanitized application loads other shared libraries. You must ignore this flag when you load shared libraries with RTLD_DEEPBIND. To address this, we have introduced the following environment variables to clear this flag:
Environment Variable | Description |
---|---|
export ASAN_OPTIONS=clear_deepbind_flag= 1 | Used for AddressSanitizer (Asan) |
export MSAN_OPTIONS=clear_deepbind_flag=1 | Used for MemorySanitizer (MSan) |
export TSAN_OPTIONS=clear_deepbind_flag=1 | Used for ThreadSanitizer (Tsan) |
If your application strongly depends on the RTLD_DEEPBIND flag, issues may arise when enabling this flag for host-side sanitizers.
For host-side MSan, false negative reports may occur because the MSan-instrumented application might rely on instrumented versions of all libraries, including GPU drivers (such as Intel® Graphics Compiler libraries, SYCL* runtime libraries, and others) to propagate correct memory information. Since many of these libraries are written in C++, the MSan-instrumented libc++ would also need to be used. However, we do not provide MSan-instrumented versions for these libraries.
Clang Sanitizers
The following Clang sanitizers are provided with the compiler, for host code only:
Sanitizer | OS Support |
---|---|
Linux, Windows |
|
Linux |
|
Linux |
|
Linux |
|
Linux, Windows |
For detailed information about each sanitizer, refer to the Clang documentation Clang documentation.