Auto merge of #128400 - petrochenkov:nowhole3, r=bjorn3

linker: Remove the "`--whole-archive` in test mode" backcompat hack

Fixes https://github.com/rust-lang/rust/issues/116910.
This commit is contained in:
bors 2024-08-10 18:57:58 +00:00
commit 04dff01740
2 changed files with 2 additions and 13 deletions

View file

@ -2646,16 +2646,7 @@ fn add_native_libs_from_crate(
NativeLibKind::Static { bundle, whole_archive } => {
if link_static {
let bundle = bundle.unwrap_or(true);
let whole_archive = whole_archive == Some(true)
// 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.
|| (whole_archive == None
&& bundle
&& cnum == LOCAL_CRATE
&& sess.is_test_crate());
let whole_archive = whole_archive == Some(true);
if bundle && cnum != LOCAL_CRATE {
if let Some(filename) = lib.filename {
// If rlib contains native libs as archives, they are unpacked to tmpdir.

View file

@ -96,9 +96,7 @@ This modifier translates to `--whole-archive` for `ld`-like linkers,
to `/WHOLEARCHIVE` for `link.exe`, and to `-force_load` for `ld64`.
The modifier does nothing for linkers that don't support it.
The default for this modifier is `-whole-archive`. \
NOTE: The default may currently be different in some cases for backward compatibility,
but it is not guaranteed. If you need whole archive semantics use `+whole-archive` explicitly.
The default for this modifier is `-whole-archive`.
### Linking modifiers: `bundle`