尽快推进:锁定dlopen shim映射

This commit is contained in:
cnc
2026-06-05 07:56:33 +08:00
parent 6d99ca67a9
commit 810bd92ddc
2 changed files with 13 additions and 5 deletions

View File

@@ -102,7 +102,12 @@ if sections.get("dlopen") != ["(none)"]:
if sections.get("tooldata-users") != ["(none)"]:
raise SystemExit("blocked tooldata-users section is no longer empty")
shim_paths = set(Path(line).as_posix() for line in subprocess.check_output(
["./list-linuxcnc-wasm-safe-shims.sh"],
text=True,
).splitlines() if line)
required_tracked_entries = [
"src/emc/rs274ngc/interp_base.cc -> core/wasm_shims/dlfcn.cc",
"src/emc/rs274ngc/gcodemodule.cc",
"src/emc/rs274ngc/interpmodule.cc",
"src/emc/tooldata/tooldata_mmap.cc",
@@ -122,7 +127,13 @@ required_replacements = [
"src/emc/tooldata/tooldata_mmap.cc -> core/wasm_shims/tooldata/tooldata_mmap_backend.cc",
]
for entry in required_tracked_entries:
if entry not in output:
if " -> " in entry:
source, shim = entry.split(" -> ", 1)
if source not in sections.get("core-dlopen-shimmed", []):
raise SystemExit(f"WASM blocker analyzer output missing core dlopen shimmed source: {source}")
if shim not in shim_paths:
raise SystemExit(f"WASM blocker analyzer core dlopen shim is absent from wasm-safe shim set: {shim}")
elif entry not in output:
raise SystemExit(f"WASM blocker analyzer output missing required entry: {entry}")
if entry not in source_map:
raise SystemExit(f"docs/linuxcnc-wasm-blockers-source-map.md missing required entry: {entry}")
@@ -135,10 +146,6 @@ for entry in required_replacements:
if entry not in source_map:
raise SystemExit(f"docs/linuxcnc-wasm-blockers-source-map.md missing required replacement: {entry}")
shim_paths = set(Path(line).as_posix() for line in subprocess.check_output(
["./list-linuxcnc-wasm-safe-shims.sh"],
text=True,
).splitlines() if line)
for replacement in re.findall(r"-> (core/wasm_shims/[^\s]+)", output):
if replacement not in shim_paths:
raise SystemExit(f"blocked replacement is absent from wasm-safe shim set: {replacement}")

View File

@@ -60,6 +60,7 @@ Required replacement set:
Required tracked core examples:
- `src/emc/rs274ngc/interp_base.cc -> core/wasm_shims/dlfcn.cc`
- `src/emc/rs274ngc/gcodemodule.cc`
- `src/emc/rs274ngc/interpmodule.cc`
- `src/emc/tooldata/tooldata_mmap.cc`