diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2022-04-02 14:31:34 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2022-04-03 00:33:39 +0300 |
| commit | a169d337e473aaa23a7703bba850259df7063464 (patch) | |
| tree | 71154b18c7986ea241c7d3d7f16c954e36582cec /compiler | |
| parent | b6a34f35e5d10e69640bce74f613af4aeb2f9ede (diff) | |
| download | rust-a169d337e473aaa23a7703bba850259df7063464.tar.gz rust-a169d337e473aaa23a7703bba850259df7063464.zip | |
linker: Implicitly link native libs as whole-archive in some more cases
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 548ae0e411d..c2b296bba1c 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -2079,9 +2079,14 @@ fn add_local_native_libraries( NativeLibKind::Framework { as_needed } => { cmd.link_framework(name, as_needed.unwrap_or(true)) } - NativeLibKind::Static { whole_archive, .. } => { + NativeLibKind::Static { whole_archive, bundle, .. } => { if whole_archive == Some(true) || (whole_archive == None && default_to_whole_archive(sess, crate_type, cmd)) + // Backward compatibility case: this can be a rlib (so `+whole-archive` cannot + // be added explicitly if necessary, see the error in `fn link_rlib`) compiled + // as an executable due to `--test`. Use whole-archive implicitly, like before + // the introduction of native lib modifiers. + || (bundle != Some(false) && sess.opts.test) { cmd.link_whole_staticlib( name, |
