make corrected linkage with -use-separate-modules apply hidden visibility

Fixes #4798

The DLL was using the type info of the host/exe, causing crashes.
This PR tries fixing by applying hidden visibility to these corrected
symbols which makes sure that the DLL can't see the type table of the host/exe.
This commit is contained in:
Laytan Laats
2025-02-06 20:42:41 +01:00
parent 80d09774b4
commit 1053ec3051
+6
View File
@@ -169,11 +169,17 @@ gb_internal void lb_correct_entity_linkage(lbGenerator *gen) {
other_global = LLVMGetNamedGlobal(ec.other_module->mod, ec.cname);
if (other_global) {
LLVMSetLinkage(other_global, LLVMWeakAnyLinkage);
if (!ec.e->Variable.is_export) {
LLVMSetVisibility(other_global, LLVMHiddenVisibility);
}
}
} else if (ec.e->kind == Entity_Procedure) {
other_global = LLVMGetNamedFunction(ec.other_module->mod, ec.cname);
if (other_global) {
LLVMSetLinkage(other_global, LLVMWeakAnyLinkage);
if (!ec.e->Procedure.is_export) {
LLVMSetVisibility(other_global, LLVMHiddenVisibility);
}
}
}
}