Rollup merge of #110917 - Be-ing:whole_archive_with_staticlib_fix, r=petrochenkov

only error combining +whole-archive and +bundle for rlibs

Fixes https://github.com/rust-lang/rust/issues/110912

Checking `flavor == RlibFlavor::Normal` was accidentally lost in 601fc8b36b
https://github.com/rust-lang/rust/pull/105601

That caused combining +whole-archive and +bundle link modifiers on non-rlib crates to fail with a confusing error message saying that combination is unstable for rlibs. In particular, this caused the build to fail when +whole-archive was used on staticlib crates, even though +whole-archive effectively does nothing on non-bin crates because the final linker invocation is left to an external build system.

cc ``@petrochenkov``
This commit is contained in:
Matthias Krüger 2023-04-28 22:56:44 +02:00 committed by GitHub
commit 33f15e899d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -349,7 +349,10 @@ fn link_rlib<'a>(
let NativeLibKind::Static { bundle: None | Some(true), whole_archive } = lib.kind else { let NativeLibKind::Static { bundle: None | Some(true), whole_archive } = lib.kind else {
continue; continue;
}; };
if whole_archive == Some(true) && !codegen_results.crate_info.feature_packed_bundled_libs { if whole_archive == Some(true)
&& flavor == RlibFlavor::Normal
&& !codegen_results.crate_info.feature_packed_bundled_libs
{
sess.emit_err(errors::IncompatibleLinkingModifiers); sess.emit_err(errors::IncompatibleLinkingModifiers);
} }
if flavor == RlibFlavor::Normal && let Some(filename) = lib.filename { if flavor == RlibFlavor::Normal && let Some(filename) = lib.filename {