port: advance VC6 typeobject frontier and preserve regression coverage

This commit is contained in:
RayPals
2026-10-26 18:09:33 +00:00
parent 35caf1a558
commit 5ab291a68c
162 changed files with 15675 additions and 85 deletions
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
"""Check tracemalloc's positional initializer against its header definition."""
import re
import sys
from pathlib import Path
source = Path(sys.argv[1]).read_text()
header = Path(sys.argv[2]).read_text()
header = re.sub(r"/\*.*?\*/", "", header, flags=re.S)
layout = re.search(r"struct _PyTraceMalloc_Config \{(.*?)\n\};", header, re.S)
assert layout, "_PyTraceMalloc_Config definition not found"
fields = re.findall(r"\b(\w+)\s*;", layout.group(1))
assert fields == ["initialized", "tracing", "max_nframe"], (
"expected initialized, tracing, max_nframe field order"
)
macro = re.search(
r"#define _PyTraceMalloc_Config_INIT\s*\\\s*\{(.*?)\}", header, re.S
)
assert macro, "_PyTraceMalloc_Config_INIT definition not found"
defaults = re.findall(r"\.(\w+)\s*=\s*(\w+)", macro.group(1))
assert defaults == list(zip(fields, ["TRACEMALLOC_NOT_INITIALIZED", "0", "1"])), (
"expected uninitialized, tracing disabled, and one traceback frame defaults"
)
initializer = re.search(
r"struct _PyTraceMalloc_Config _Py_tracemalloc_config\s*=\s*(.*?);",
source,
re.S,
)
assert initializer, "_Py_tracemalloc_config initializer not found"
body = re.sub(r"/\*.*?\*/", "", initializer.group(1), flags=re.S).strip()
assert body.startswith("{") and body.endswith("}") and not re.search(
r"\.\s*\w+\s*=", body
), "_Py_tracemalloc_config must use a VC6-compatible positional initializer"
values = [value.strip() for value in body[1:-1].strip().rstrip(",").split(",")]
assert values == [value for field, value in defaults], (
"positional initializer must preserve every header default in field order"
)
print("obmalloc tracemalloc C89 positional initializer: PASS (initialized=TRACEMALLOC_NOT_INITIALIZED, tracing=0, max_nframe=1)")