From: Slava Barinov Date: Thu, 27 Jul 2017 09:51:37 +0000 (+0300) Subject: Add ASan support for Tizen 4.0 toolchain X-Git-Tag: submit/tizen_base/20170810.112719^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c84d632d9fd1b2dec66756199e7913dffe92abf8;p=platform%2Fupstream%2Fpython3.git Add ASan support for Tizen 4.0 toolchain Change-Id: I11738e58f3265e430fb089a1752a0768d582856f Signed-off-by: Slava Barinov --- diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index 3c332551..99fc07b4 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -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 +#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 <=