| #pragma once |
| |
| // Detect address sanitizer as some stuff doesn't work with it |
| |
| #undef CAFFE2_ASAN_ENABLED |
| |
| // for clang |
| #if defined(__has_feature) |
| #if ((__has_feature(address_sanitizer))) |
| #define CAFFE2_ASAN_ENABLED 1 |
| #endif |
| #endif |
| |
| // for gcc |
| #if defined(__SANITIZE_ADDRESS__) |
| #if __SANITIZE_ADDRESS__ |
| #if !defined(CAFFE2_ASAN_ENABLED) |
| #define CAFFE2_ASAN_ENABLED 1 |
| #endif |
| #endif |
| #endif |
| |
| #if !defined(CAFFE2_ASAN_ENABLED) |
| #define CAFFE2_ASAN_ENABLED 0 |
| #endif |
| |
| // Define sanitization macro |
| #if !CAFFE2_ASAN_ENABLED |
| #define CAFFE2_NO_SANITIZE(...) |
| #else |
| #define CAFFE2_NO_SANITIZE(...) __attribute__((no_sanitize(__VA_ARGS__))) |
| #endif |