|
|
|
@ -31,8 +31,8 @@ static void _PyMem_SetupDebugHooksDomain(PyMemAllocatorDomain domain); |
|
|
|
|
|
|
|
#if defined(__has_feature) /* Clang */ |
|
|
|
# if __has_feature(address_sanitizer) /* is ASAN enabled? */ |
|
|
|
# define _Py_NO_ADDRESS_SAFETY_ANALYSIS \ |
|
|
|
__attribute__((no_address_safety_analysis)) |
|
|
|
# define _Py_NO_SANITIZE_ADDRESS \ |
|
|
|
__attribute__((no_sanitize("address"))) |
|
|
|
# endif |
|
|
|
# if __has_feature(thread_sanitizer) /* is TSAN enabled? */ |
|
|
|
# define _Py_NO_SANITIZE_THREAD __attribute__((no_sanitize_thread)) |
|
|
|
@ -42,8 +42,8 @@ static void _PyMem_SetupDebugHooksDomain(PyMemAllocatorDomain domain); |
|
|
|
# endif |
|
|
|
#elif defined(__GNUC__) |
|
|
|
# if defined(__SANITIZE_ADDRESS__) /* GCC 4.8+, is ASAN enabled? */ |
|
|
|
# define _Py_NO_ADDRESS_SAFETY_ANALYSIS \ |
|
|
|
__attribute__((no_address_safety_analysis)) |
|
|
|
# define _Py_NO_SANITIZE_ADDRESS \ |
|
|
|
__attribute__((no_sanitize_address)) |
|
|
|
# endif |
|
|
|
// TSAN is supported since GCC 5.1, but __SANITIZE_THREAD__ macro |
|
|
|
// is provided only since GCC 7. |
|
|
|
@ -52,8 +52,8 @@ static void _PyMem_SetupDebugHooksDomain(PyMemAllocatorDomain domain); |
|
|
|
# endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef _Py_NO_ADDRESS_SAFETY_ANALYSIS |
|
|
|
# define _Py_NO_ADDRESS_SAFETY_ANALYSIS |
|
|
|
#ifndef _Py_NO_SANITIZE_ADDRESS |
|
|
|
# define _Py_NO_SANITIZE_ADDRESS |
|
|
|
#endif |
|
|
|
#ifndef _Py_NO_SANITIZE_THREAD |
|
|
|
# define _Py_NO_SANITIZE_THREAD |
|
|
|
@ -1407,7 +1407,7 @@ obmalloc controls. Since this test is needed at every entry point, it's |
|
|
|
extremely desirable that it be this fast. |
|
|
|
*/ |
|
|
|
|
|
|
|
static bool _Py_NO_ADDRESS_SAFETY_ANALYSIS |
|
|
|
static bool _Py_NO_SANITIZE_ADDRESS |
|
|
|
_Py_NO_SANITIZE_THREAD |
|
|
|
_Py_NO_SANITIZE_MEMORY |
|
|
|
address_in_range(void *p, poolp pool) |
|
|
|
|