diff --git a/lib/core/Handles/HandlesFunctions.py b/lib/core/Handles/HandlesFunctions.py index fba00a2..8542a3c 100644 --- a/lib/core/Handles/HandlesFunctions.py +++ b/lib/core/Handles/HandlesFunctions.py @@ -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