diff options
| author | Be Wilson <be.wilson@kdab.com> | 2023-04-27 14:33:36 -0500 |
|---|---|---|
| committer | Be Wilson <be.wilson@kdab.com> | 2023-04-27 14:33:36 -0500 |
| commit | 6a89e9451f61c662d79c8293f819c3c84c8837fb (patch) | |
| tree | 0c616da6455d87ac61183c746ecfc4011f1c6056 /compiler/rustc_codegen_ssa/src | |
| parent | 901fdb3b04375e3456b5cf771f86ecca8d6c1917 (diff) | |
| download | rust-6a89e9451f61c662d79c8293f819c3c84c8837fb.tar.gz rust-6a89e9451f61c662d79c8293f819c3c84c8837fb.zip | |
only error with +whole-archive,+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.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -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 { |
