| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef SANITIZER_RTSAN_INTERFACE_H |
| #define SANITIZER_RTSAN_INTERFACE_H |
|
|
| #include <sanitizer/common_interface_defs.h> |
|
|
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
|
|
| |
| |
| void SANITIZER_CDECL __rtsan_disable(void); |
|
|
| |
| |
| void SANITIZER_CDECL __rtsan_enable(void); |
|
|
| #ifdef __cplusplus |
| } |
|
|
| namespace __rtsan { |
| #if defined(__has_feature) && __has_feature(realtime_sanitizer) |
|
|
| class ScopedDisabler { |
| public: |
| ScopedDisabler() { __rtsan_disable(); } |
| ~ScopedDisabler() { __rtsan_enable(); } |
|
|
| #if __cplusplus >= 201103L |
| ScopedDisabler(const ScopedDisabler &) = delete; |
| ScopedDisabler &operator=(const ScopedDisabler &) = delete; |
| ScopedDisabler(ScopedDisabler &&) = delete; |
| ScopedDisabler &operator=(ScopedDisabler &&) = delete; |
| #else |
| private: |
| ScopedDisabler(const ScopedDisabler &); |
| ScopedDisabler &operator=(const ScopedDisabler &); |
| #endif |
| }; |
|
|
| #else |
|
|
| class ScopedDisabler { |
| public: |
| ScopedDisabler() {} |
| #if __cplusplus >= 201103L |
| ScopedDisabler(const ScopedDisabler &) = delete; |
| ScopedDisabler &operator=(const ScopedDisabler &) = delete; |
| ScopedDisabler(ScopedDisabler &&) = delete; |
| ScopedDisabler &operator=(ScopedDisabler &&) = delete; |
| #else |
| private: |
| ScopedDisabler(const ScopedDisabler &); |
| ScopedDisabler &operator=(const ScopedDisabler &); |
| #endif |
| }; |
|
|
| #endif |
| } |
| #endif |
|
|
| #endif |
|
|