mirror of
https://github.com/python/cpython.git
synced 2025-08-01 23:53:15 +00:00
Close #18596: Support address sanity checking in clang/GCC
This patch appropriately marks known false alarms in the small object allocator when address sanity checking is enabled (patch contributed by Dhiru Kholia).
This commit is contained in:
parent
4cc2afa0ec
commit
6ba64f454d
3 changed files with 28 additions and 0 deletions
|
@ -12,6 +12,24 @@ static void _PyObject_DebugDumpAddress(const void *p);
|
|||
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 @@ redirect:
|
|||
|
||||
/* free */
|
||||
|
||||
ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
|
||||
static void
|
||||
_PyObject_Free(void *ctx, void *p)
|
||||
{
|
||||
|
@ -1528,6 +1547,7 @@ redirect:
|
|||
* return a non-NULL result.
|
||||
*/
|
||||
|
||||
ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS
|
||||
static void *
|
||||
_PyObject_Realloc(void *ctx, void *p, size_t nbytes)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue