From 8b5bbbc417df90ba41aaf0e78ea3367589531d99 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 19 Oct 2026 14:44:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(mangle):=20=E6=A8=A1=E5=9D=97=E9=99=90?= =?UTF-8?q?=E5=AE=9A=E7=9A=84=20extern=20=E8=B0=83=E7=94=A8=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E8=A3=B8=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit stdlib.system / win32process.ReadProcessMemory 等显式模块限定调用即使本模块有同名 def 也返回裸名。 --- lib/core/LLVMCG/BaseGen.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/core/LLVMCG/BaseGen.py b/lib/core/LLVMCG/BaseGen.py index 9a6739e..b567353 100644 --- a/lib/core/LLVMCG/BaseGen.py +++ b/lib/core/LLVMCG/BaseGen.py @@ -1209,10 +1209,11 @@ class BaseGenMixin: return func def _mangle_func_name(self, name: str, module_name: str | None = None) -> str: - if name in self._export_extern_funcs and name not in self._current_module_func_names: - # extern def 一律使用裸名(C/Win32 符号不加模块 SHA1 前缀); - # 但本模块自己定义的同名普通 def(如 os.system / os.getcwd)优先走 SHA1。 - return name + if name in self._export_extern_funcs: + # 显式模块限定(stdlib.system / win32process.ReadProcessMemory)或 + # 非本模块同名函数 → extern 裸名;本模块无限定同名 def 仍走 SHA1。 + if module_name is not None or name not in self._current_module_func_names: + return name # main 函数作为程序入口点,永远不混淆 if name == 'main': return name