From 810bd92ddcfe999ec213e2de2ba256ac8e8e18d9 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 07:56:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=BD=E5=BF=AB=E6=8E=A8=E8=BF=9B=EF=BC=9A?= =?UTF-8?q?=E9=94=81=E5=AE=9Adlopen=20shim=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check-linuxcnc-wasm-blockers-source-map.sh | 17 ++++++++++++----- docs/linuxcnc-wasm-blockers-source-map.md | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/check-linuxcnc-wasm-blockers-source-map.sh b/check-linuxcnc-wasm-blockers-source-map.sh index cd7028d..cb01b62 100755 --- a/check-linuxcnc-wasm-blockers-source-map.sh +++ b/check-linuxcnc-wasm-blockers-source-map.sh @@ -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}") diff --git a/docs/linuxcnc-wasm-blockers-source-map.md b/docs/linuxcnc-wasm-blockers-source-map.md index 7f11c81..b63dacf 100644 --- a/docs/linuxcnc-wasm-blockers-source-map.md +++ b/docs/linuxcnc-wasm-blockers-source-map.md @@ -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`