# HG changeset patch # User Dhiru Kholia # Date 1380113148 -19800 # Wed Sep 25 18:15:48 2013 +0530 # Node ID 4303561b4a1ff68c9ed5ea369923cbd07d78bad5 # Parent 35da5d848ffdc68ecf65e5dc60ed1771e66fa3b7 Enable usage of AddressSanitizer in CPython diff -r 35da5d848ffd -r 4303561b4a1f Objects/obmalloc.c --- a/Objects/obmalloc.c Mon Sep 23 23:24:38 2013 +0300 +++ b/Objects/obmalloc.c Wed Sep 25 18:15:48 2013 +0530 @@ -12,6 +12,24 @@ static void _PyMem_DebugCheckAddress(char api_id, const void *p); #endif +#if defined(__has_feature) /* Clang */ + #if __has_feature(address_sanitizer) /* is ASAN enabled? */ + #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \ + __attribute__((no_address_safety_analysis)) \ + __attribute__ ((noinline)) + #else + #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS + #endif +#else + #if defined(__SANITIZE_ADDRESS__) /* GCC 4.8.x, is ASAN enabled? */ + #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \ + __attribute__((no_address_safety_analysis)) \ + __attribute__ ((noinline)) + #else + #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS + #endif +#endif + #ifdef WITH_PYMALLOC #ifdef MS_WINDOWS @@ -1300,6 +1318,7 @@ /* free */ +ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS static void _PyObject_Free(void *ctx, void *p) { @@ -1528,6 +1547,7 @@ * return a non-NULL result. */ +ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS static void * _PyObject_Realloc(void *ctx, void *p, size_t nbytes) {