fix(mangle): 普通函数清除裸名导出集合
getcwd/chdir/system 等 os 包装函数不再进入 _export_funcs 裸名集合,按模块 SHA1 区分,消除重复符号。
This commit is contained in:
1 parent
a9f5d026c4
commit
80b7ce5bb1
1 file changed
+4
-2
@@ -1206,8 +1206,9 @@ class FunctionHandle(BaseHandle):
|
||||
# 同名用户函数应使用 SHA1 前缀,而非被误判为外部 C 函数返回裸名)
|
||||
Gen._current_module_func_names.add(FuncName)
|
||||
# 移除导入污染:用户函数未显式标记导出,但名称在 _export_funcs 中(来自导入的同名 C 库函数)
|
||||
if not IsUserMarkedExport and FuncName in Gen._export_funcs:
|
||||
if not IsUserMarkedExport:
|
||||
Gen._export_funcs.discard(FuncName)
|
||||
Gen._export_funcs.discard(Node.name)
|
||||
MangledName: str = Node.name if _is_extern_node else Gen._mangle_func_name(FuncName)
|
||||
# 自动取址模式:查表侧统一按**真实发射名**(func.name,即 MangledName)查
|
||||
# (FuncGen._adjust_args)。签名阶段(_GetFunctionSignatureLlvm)只能按逻辑名
|
||||
@@ -1729,8 +1730,9 @@ class FunctionHandle(BaseHandle):
|
||||
# 注册当前模块定义的函数名,使 _mangle_func_name 跳过 _export_extern_funcs 检查
|
||||
Gen._current_module_func_names.add(FuncName)
|
||||
# 移除导入污染:用户函数未显式标记导出,但名称在 _export_funcs 中(来自导入的同名 C 库函数)
|
||||
if not IsUserMarkedExport and FuncName in Gen._export_funcs:
|
||||
if not IsUserMarkedExport:
|
||||
Gen._export_funcs.discard(FuncName)
|
||||
Gen._export_funcs.discard(Node.name)
|
||||
MangledName = Gen._mangle_func_name(FuncName)
|
||||
# 补登记:module.globals 已有同名函数(stub 声明 / 调用点先建)但未登记到
|
||||
# Gen.functions 时,先登记再走下方判定 —— 否则 1750 分支裸建 ir.Function
|
||||
|
||||
Reference in new issue
Block a user