Skip to content

Commit b7a490a

Browse files
committed
Create _imp__ symbols also when doing ThinLTO
1 parent 1f9a018 commit b7a490a

File tree

1 file changed

+7
-1
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+7
-1
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2165,8 +2165,14 @@ fn msvc_imps_needed(tcx: TyCtxt<'_>) -> bool {
21652165
&& tcx.sess.opts.cg.prefer_dynamic)
21662166
);
21672167

2168+
// We need to generate _imp__ symbol if we are generating an rlib or we include one
2169+
// indirectly from ThinLTO. In theory these are not needed as ThinLTO could resolve
2170+
// these, but it currently does not do so.
2171+
let can_have_static_objects =
2172+
tcx.sess.lto() == Lto::Thin || tcx.crate_types().iter().any(|ct| *ct == CrateType::Rlib);
2173+
21682174
tcx.sess.target.is_like_windows &&
2169-
tcx.crate_types().iter().any(|ct| *ct == CrateType::Rlib) &&
2175+
can_have_static_objects &&
21702176
// ThinLTO can't handle this workaround in all cases, so we don't
21712177
// emit the `__imp_` symbols. Instead we make them unnecessary by disallowing
21722178
// dynamic linking when linker plugin LTO is enabled.

0 commit comments

Comments
 (0)