From 3f5c5649cfefe5b03cebe53b3ae766e2739eee23 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 22 Sep 2023 01:21:07 +0200 Subject: [PATCH] gh-104469: Disallow using Py_LIMITED_API with Py_BUILD_CORE (#109690) Fix make check-c-globals: complete USE_LIMITED_C_API list of the c-analyzer. --- Include/pyport.h | 4 ++++ Tools/c-analyzer/c_parser/preprocessor/gcc.py | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Include/pyport.h b/Include/pyport.h index 4b6858bf527df1..40d580a870fc75 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -48,6 +48,10 @@ # define Py_BUILD_CORE #endif +#if defined(Py_LIMITED_API) && defined(Py_BUILD_CORE) +# error "Py_LIMITED_API is not compatible with Py_BUILD_CORE" +#endif + /************************************************************************** Symbols and macros to supply platform-independent interfaces to basic diff --git a/Tools/c-analyzer/c_parser/preprocessor/gcc.py b/Tools/c-analyzer/c_parser/preprocessor/gcc.py index 18d1b1a5d0a37f..d206ceb43a268e 100644 --- a/Tools/c-analyzer/c_parser/preprocessor/gcc.py +++ b/Tools/c-analyzer/c_parser/preprocessor/gcc.py @@ -3,13 +3,18 @@ from . import common as _common -# The following C files must not be built with Py_BUILD_CORE, -# because they use the limited C API. +# The following C files define the Py_LIMITED_API macro, and so must not be +# built with the Py_BUILD_CORE macro defined. USE_LIMITED_C_API = frozenset(( + # Modules/ '_testcapimodule.c', '_testclinic_limited.c', 'xxlimited.c', 'xxlimited_35.c', + + # Modules/_testcapi/ + 'heaptype_relative.c', + 'vectorcall_limited.c', )) TOOL = 'gcc'