Add ASan support for Tizen 4.0 toolchain 76/140976/3 accepted/tizen_4.0_base tizen_4.0_base tizen_4.0_tv accepted/tizen/4.0/base/20170828.221425 accepted/tizen/base/20170814.055702 submit/tizen_4.0_base/20170828.000000 submit/tizen_4.0_base/20170828.000001 submit/tizen_base/20170810.112719 tizen_4.0.IoT.p1_release tizen_4.0.IoT.p2_release tizen_4.0.m2_release
authorSlava Barinov <v.barinov@samsung.com>
Thu, 27 Jul 2017 09:51:37 +0000 (12:51 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Thu, 27 Jul 2017 11:02:49 +0000 (14:02 +0300)
Change-Id: I11738e58f3265e430fb089a1752a0768d582856f
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
Objects/obmalloc.c

index 3c33255170279b409d7ae2cb30fbdfcd2f90df41..99fc07b47808f56a9b1dd38ef26b2e3f234a817d 100644 (file)
@@ -17,6 +17,8 @@ static void _PyMem_DebugCheckAddress(char api_id, const void *p);
   #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
@@ -25,6 +27,8 @@ static void _PyMem_DebugCheckAddress(char api_id, const void *p);
   #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
@@ -369,8 +373,10 @@ PyObject_Free(void *ptr)
 
 #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 */
@@ -1131,7 +1137,7 @@ _PyObject_Malloc(void *ctx, size_t nbytes)
 
     _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))
@@ -1337,7 +1343,7 @@ _PyObject_Free(void *ctx, void *p)
 
     _Py_AllocatedBlocks--;
 
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
     if (UNLIKELY(running_on_valgrind > 0))
         goto redirect;
 #endif
@@ -1537,7 +1543,7 @@ _PyObject_Free(void *ctx, void *p)
         return;
     }
 
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
 redirect:
 #endif
     /* We didn't allocate this address. */
@@ -1563,7 +1569,7 @@ _PyObject_Realloc(void *ctx, void *p, size_t nbytes)
     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;
@@ -1596,7 +1602,7 @@ _PyObject_Realloc(void *ctx, void *p, size_t nbytes)
         }
         return bp;
     }
-#ifdef WITH_VALGRIND
+#if defined(WITH_VALGRIND) || defined(SANITIZED_BUILD)
  redirect:
 #endif
     /* We're not managing this block.  If nbytes <=