diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2022-11-12 23:02:15 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2022-11-12 23:02:33 +0300 |
| commit | c2358a15f31b35971a59c4bda138409c527fe4fc (patch) | |
| tree | 5ae2d099beda0cd53a206bbd3166111661555a7a /compiler/rustc_codegen_ssa/src | |
| parent | 58e4644969e770e85396c913c715e2d183ddc8f2 (diff) | |
| download | rust-c2358a15f31b35971a59c4bda138409c527fe4fc.tar.gz rust-c2358a15f31b35971a59c4bda138409c527fe4fc.zip | |
linker: Link `profiler_builtins` even if it's marked as `NotLinked`
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 968bb1c7c0c..2bd9023395d 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -2454,15 +2454,17 @@ fn add_upstream_rust_crates<'a>( // We must always link crates `compiler_builtins` and `profiler_builtins` statically. // Even if they were already included into a dylib // (e.g. `libstd` when `-C prefer-dynamic` is used). + // FIXME: `dependency_formats` can report `profiler_builtins` as `NotLinked` for some + // reason, it shouldn't do that because `profiler_builtins` should indeed be linked. let linkage = data[cnum.as_usize() - 1]; let link_static_crate = linkage == Linkage::Static - || linkage == Linkage::IncludedFromDylib + || (linkage == Linkage::IncludedFromDylib || linkage == Linkage::NotLinked) && (codegen_results.crate_info.compiler_builtins == Some(cnum) || codegen_results.crate_info.profiler_runtime == Some(cnum)); let mut bundled_libs = Default::default(); match linkage { - Linkage::Static | Linkage::IncludedFromDylib => { + Linkage::Static | Linkage::IncludedFromDylib | Linkage::NotLinked => { if link_static_crate { bundled_libs = codegen_results.crate_info.native_libraries[&cnum] .iter() @@ -2483,7 +2485,6 @@ fn add_upstream_rust_crates<'a>( let src = &codegen_results.crate_info.used_crate_source[&cnum]; add_dynamic_crate(cmd, sess, &src.dylib.as_ref().unwrap().0); } - Linkage::NotLinked => {} } // Static libraries are linked for a subset of linked upstream crates. |
