@@ -278,6 +278,13 @@ def gen_ctypes_test(manifest, args, outfile):
278278 from _testcapi import get_feature_macros
279279
280280 feature_macros = get_feature_macros()
281+
282+ # Stable ABI is incompatible with Py_TRACE_REFS builds due to PyObject
283+ # layout differences.
284+ # See https://github.com/python/cpython/issues/88299#issuecomment-1113366226
285+ if feature_macros['Py_TRACE_REFS']:
286+ raise unittest.SkipTest("incompatible with Py_TRACE_REFS.")
287+
281288 ctypes_test = import_module('ctypes')
282289
283290 class TestStableABIAvailability(unittest.TestCase):
@@ -308,16 +315,11 @@ def test_windows_feature_macros(self):
308315 {'function' , 'data' },
309316 include_abi_only = True ,
310317 )
311- optional_items = {}
318+ feature_macros = list (manifest .select ({'feature_macro' }))
319+ optional_items = {m .name : [] for m in feature_macros }
312320 for item in items :
313- if item .name in (
314- # Some symbols aren't exported on all platforms.
315- # This is a bug: https://bugs.python.org/issue44133
316- 'PyModule_Create2' , 'PyModule_FromDefAndSpec2' ,
317- ):
318- continue
319321 if item .ifdef :
320- optional_items . setdefault ( item .ifdef , []) .append (item .name )
322+ optional_items [ item .ifdef ] .append (item .name )
321323 else :
322324 write (f' "{ item .name } ",' )
323325 write (")" )
@@ -328,7 +330,6 @@ def test_windows_feature_macros(self):
328330 write (f" { name !r} ," )
329331 write (" )" )
330332 write ("" )
331- feature_macros = list (manifest .select ({'feature_macro' }))
332333 feature_names = sorted (m .name for m in feature_macros )
333334 write (f"EXPECTED_FEATURE_MACROS = set({ pprint .pformat (feature_names )} )" )
334335
0 commit comments