mirror of
https://github.com/python/cpython.git
synced 2024-11-24 18:34:43 +08: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
@ -650,6 +650,7 @@ Jim Kerr
|
||||
Magnus Kessler
|
||||
Lawrence Kesteloot
|
||||
Vivek Khera
|
||||
Dhiru Kholia
|
||||
Mads Kiilerich
|
||||
Jason Killen
|
||||
Jan Kim
|
||||
|
@ -94,6 +94,13 @@ Documentation
|
||||
- Issue #17003: Unified the size argument names in the io module with common
|
||||
practice.
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
- Issue #18596: Support the use of address sanity checking in recent versions
|
||||
of clang and GCC by appropriately marking known false alarms in the small
|
||||
object allocator. Patch contributed by Dhiru Kholia.
|
||||
|
||||
Tools/Demos
|
||||
-----------
|
||||
|
||||
|
@ -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…
Reference in New Issue
Block a user