fix(mangle): 模块限定的 extern 调用保持裸名
stdlib.system / win32process.ReadProcessMemory 等显式模块限定调用即使本模块有同名 def 也返回裸名。
This commit is contained in:
1 parent
d1eb1608d0
commit
8b5bbbc417
1 file changed
+4
-3
@@ -1209,9 +1209,10 @@ 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。
|
||||
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':
|
||||
|
||||
Reference in new issue
Block a user