diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-04-28 22:56:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-28 22:56:44 +0200 |
| commit | 33f15e899d922419c3fe447e4cd24ced90c008a9 (patch) | |
| tree | 2fa564a2dd67f15189a5a7425329c52676f2c4de /compiler/rustc_codegen_ssa | |
| parent | aba9fb4696a300f8fa95e838ac9da81c61714617 (diff) | |
| parent | 6a89e9451f61c662d79c8293f819c3c84c8837fb (diff) | |
| download | rust-33f15e899d922419c3fe447e4cd24ced90c008a9.tar.gz rust-33f15e899d922419c3fe447e4cd24ced90c008a9.zip | |
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 601fc8b36b1962285e371cf3c54eeb3b1b9b3a74 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``
Diffstat (limited to 'compiler/rustc_codegen_ssa')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 02e21e74fad..eecfe13bb3e 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -349,7 +349,10 @@ fn link_rlib<'a>( let NativeLibKind::Static { bundle: None | Some(true), whole_archive } = lib.kind else { 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); } if flavor == RlibFlavor::Normal && let Some(filename) = lib.filename { |
