Compilation: avoid ZCU strategy for ubsan-rt in Windows DLLs

This commit is contained in:
Alex Rønne Petersen 2025-08-25 06:45:00 +02:00
parent 65af60edd0
commit 48600bc2b3
No known key found for this signature in database

View File

@ -2053,7 +2053,14 @@ pub fn create(gpa: Allocator, arena: Allocator, diag: *CreateDiagnostic, options
break :s .none; // only LLD can handle ubsan-rt for this target
} else true,
};
if (have_zcu and (!need_llvm or use_llvm)) break :s .zcu;
if (have_zcu and (!need_llvm or use_llvm)) {
// ubsan-rt's exports use hidden visibility. If we're building a Windows DLL and
// exported functions are going to be dllexported, LLVM will complain that
// dllexported functions must use default or protected visibility. So we can't use
// the ZCU strategy in this case.
if (options.config.dll_export_fns) break :s .lib;
break :s .zcu;
}
if (need_llvm and !build_options.have_llvm) break :s .none; // impossible to build without llvm
if (is_exe_or_dyn_lib) break :s .lib;
break :s .obj;