尽快推进:收紧dlfcn shim源码锚点
This commit is contained in:
@@ -178,7 +178,31 @@ for shim_path, linuxcnc_sources in expected_shims.items():
|
||||
|
||||
runtime_shim = Path("core/wasm_shims/linuxcnc_runtime_shim.cc").read_text(encoding="utf-8")
|
||||
runtime_probe = Path("core/wasm_shims/cnc_sim_wasm_runtime_probe_main.cc").read_text(encoding="utf-8")
|
||||
dlfcn_shim = Path("core/wasm_shims/dlfcn.cc").read_text(encoding="utf-8")
|
||||
dlfcn_header = Path("core/wasm_shims/dlfcn.h").read_text(encoding="utf-8")
|
||||
gettext_shim = Path("core/wasm_shims/gettext_shim.cc").read_text(encoding="utf-8")
|
||||
for needle in [
|
||||
"#define RTLD_GLOBAL 0x00100",
|
||||
"#define RTLD_NOW 0x00002",
|
||||
"void *dlopen(const char *filename, int flags);",
|
||||
"void *dlsym(void *handle, const char *symbol);",
|
||||
"char *dlerror(void);",
|
||||
"int dlclose(void *handle);",
|
||||
]:
|
||||
if needle not in dlfcn_header:
|
||||
raise SystemExit(f"dlfcn shim header missing LinuxCNC loader boundary: {needle}")
|
||||
for needle in [
|
||||
"dynamic loading is unavailable in wasm-safe probe",
|
||||
"void *dlopen(const char *, int)",
|
||||
"return nullptr;",
|
||||
"void *dlsym(void *, const char *)",
|
||||
"char *dlerror(void)",
|
||||
"return last_error;",
|
||||
"int dlclose(void *)",
|
||||
"return 0;",
|
||||
]:
|
||||
if needle not in dlfcn_shim:
|
||||
raise SystemExit(f"dlfcn shim missing unavailable-loader boundary: {needle}")
|
||||
for needle in [
|
||||
"extern \"C\" char *gettext(const char *msgid)",
|
||||
"return const_cast<char *>(msgid ? msgid : \"\");",
|
||||
@@ -280,6 +304,8 @@ for phrase in [
|
||||
"CMake `linuxcnc_wasm_safe_probe_shims` set",
|
||||
"RS274/WASM manifest",
|
||||
"browser-safe LinuxCNC adaptations",
|
||||
"LinuxCNC `interp_base.cc` dynamic loader calls",
|
||||
"unavailable-loader returns",
|
||||
"LinuxCNC `_()` diagnostic call sites",
|
||||
"browser gettext catalogs unavailable",
|
||||
"LinuxCNC NML status constructors",
|
||||
|
||||
Reference in New Issue
Block a user