diff --git a/lib/core/LLVMCG/BaseGen.py b/lib/core/LLVMCG/BaseGen.py index 9ab6bb6..0d04099 100644 --- a/lib/core/LLVMCG/BaseGen.py +++ b/lib/core/LLVMCG/BaseGen.py @@ -1212,31 +1212,6 @@ class BaseGenMixin: if name in self._export_extern_funcs: # extern def 一律使用裸名(C/Win32 符号不加模块 SHA1 前缀) return name - if name in self._export_funcs and not module_name: - return name - if name in self._export_extern_funcs: - target_sha1: str = self._export_extern_funcs[name] - if module_name: - # 显式带 module_name 调用(如 stdlib.system):即使当前模块定义了同名函数, - # 也应按模块匹配 extern,返回裸名。snprintf 之所以工作而 system 不工作, - # 就是因为 os._win32 定义了自己的 system 包装,导致旧逻辑跳过了 extern 匹配。 - if module_name == target_sha1: - return name - if module_name in self.ModuleSha1Map and self.ModuleSha1Map[module_name] == target_sha1: - return name - init_name: str = f"{module_name}.__init__" - if init_name in self.ModuleSha1Map and self.ModuleSha1Map[init_name] == target_sha1: - return name - # 兜底:module_name 不在 ModuleSha1Map 中或 sha1 不匹配, - # 但函数在 _export_extern_funcs 中(C extern 不应混淆), - # 仅当当前模块未定义同名函数时才返回裸名。 - if name not in self._current_module_func_names: - return name - elif name not in self._current_module_func_names: - # 无 module_name 调用(如 from stdlib import system; system()): - # 仅当当前模块未定义同名函数时才返回 extern 裸名, - # 否则让本地定义走正常 mangle 路径(本地 def 遮蔽 import 语义)。 - return name # main 函数作为程序入口点,永远不混淆 if name == 'main': return name