about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Beránek <berykubik@gmail.com>2023-12-02 23:49:01 +0100
committerJakub Beránek <berykubik@gmail.com>2023-12-10 11:21:35 +0100
commit40c3d351ada5d991f7474ecc4bc6c9b976c656cb (patch)
treedb49ee394dc80612e64158c8e38971d6b23c0f7d
parent48c1607bc6742f964d291cd1fb6c3284f0d5a61d (diff)
downloadrust-40c3d351ada5d991f7474ecc4bc6c9b976c656cb.tar.gz
rust-40c3d351ada5d991f7474ecc4bc6c9b976c656cb.zip
Use MCP510
-rw-r--r--src/bootstrap/src/utils/helpers.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/bootstrap/src/utils/helpers.rs b/src/bootstrap/src/utils/helpers.rs
index 2da556f0a2d..b2aa37d0691 100644
--- a/src/bootstrap/src/utils/helpers.rs
+++ b/src/bootstrap/src/utils/helpers.rs
@@ -15,7 +15,7 @@ use std::sync::OnceLock;
 use std::time::{Instant, SystemTime, UNIX_EPOCH};
 
 use crate::core::builder::Builder;
-use crate::core::config::{Config, TargetSelection};
+use crate::core::config::{Config, LldMode, TargetSelection};
 
 pub use crate::utils::dylib::{dylib_path, dylib_path_var};
 
@@ -500,7 +500,16 @@ pub fn linker_flags(
 ) -> Vec<String> {
     let mut args = vec![];
     if !builder.is_lld_direct_linker(target) && builder.config.lld_mode.is_used() {
-        args.push(String::from("-Clink-arg=-fuse-ld=lld"));
+        match builder.config.lld_mode {
+            LldMode::External => {
+                args.push("-Clinker-flavor=gnu-lld-cc".to_string());
+            }
+            LldMode::SelfContained => {
+                args.push("-Clinker-flavor=gnu-lld-cc".to_string());
+                args.push("-Clink-self-contained=+linker".to_string());
+            }
+            LldMode::Unused => {}
+        }
 
         if matches!(lld_threads, LldThreads::No) {
             args.push(format!("-Clink-arg=-Wl,{}", lld_flag_no_threads(target.is_msvc())));