#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
__attribute__((no_address_safety_analysis)) \
__attribute__ ((noinline))
+ #define SANITIZED_BUILD
+ #define RUNNING_ON_VALGRIND 1
#else
#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
#endif
#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
__attribute__((no_address_safety_analysis)) \
__attribute__ ((noinline))
+ #define SANITIZED_BUILD
+ #define RUNNING_ON_VALGRIND 1
#else
#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
#endif
#ifdef WITH_PYMALLOC
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
#ifdef WITH_VALGRIND
#include <valgrind/valgrind.h>
+#endif
/* If we're using GCC, use __builtin_expect() to reduce overhead of
the valgrind checks */
_Py_AllocatedBlocks++;
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
if (UNLIKELY(running_on_valgrind == -1))
running_on_valgrind = RUNNING_ON_VALGRIND;
if (UNLIKELY(running_on_valgrind))
_Py_AllocatedBlocks--;
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
if (UNLIKELY(running_on_valgrind > 0))
goto redirect;
#endif
return;
}
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
redirect:
#endif
/* We didn't allocate this address. */
if (p == NULL)
return _PyObject_Malloc(ctx, nbytes);
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
/* Treat running_on_valgrind == -1 the same as 0 */
if (UNLIKELY(running_on_valgrind > 0))
goto redirect;
}
return bp;
}
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
redirect:
#endif
/* We're not managing this block. If nbytes <=