Support address sanity checking in clang/GCC 49/69949/1
authorSlava Barinov <v.barinov@samsung.com>
Tue, 17 May 2016 08:48:13 +0000 (11:48 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Tue, 17 May 2016 09:58:38 +0000 (12:58 +0300)
Patch imported from upstream https://hg.python.org/cpython/rev/f6792f734fcc
and enables Address Sanitizer support for Python.

Change-Id: I1d8abfacb162b343f767f731424834004b65242c
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
Objects/obmalloc.c

index 14342065550e03cc6de5305bd14a4f2a7c444e9e..194fbfd52e3baf9579a5ad40f8197483298c8fe7 100644 (file)
@@ -1,5 +1,23 @@
 #include "Python.h"
 
+#if defined(__has_feature)  /* Clang */
+ #if __has_feature(address_sanitizer)  /* is ASAN enabled? */
+  #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
+        __attribute__ ((no_sanitize_address)) \
+        __attribute__ ((noinline))
+ #else
+  #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
+ #endif
+#else
+ #if defined(__SANITIZE_ADDRESS__)  /* GCC, is ASAN enabled? */
+  #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS \
+        __attribute__ ((no_sanitize_address)) \
+        __attribute__ ((noinline))
+ #else
+  #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
+ #endif
+#endif
+
 #ifdef WITH_PYMALLOC
 
 #ifdef HAVE_MMAP
@@ -971,6 +989,7 @@ redirect:
 /* free */
 
 #undef PyObject_Free
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
 void
 PyObject_Free(void *p)
 {
@@ -1201,6 +1220,7 @@ redirect:
  */
 
 #undef PyObject_Realloc
+ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
 void *
 PyObject_Realloc(void *p, size_t nbytes)
 {