]> git.lizzy.rs Git - rust.git/commitdiff
Revert "Link with ld.gold by default"
authorBrian Anderson <banderson@mozilla.com>
Thu, 14 Jan 2016 19:20:11 +0000 (19:20 +0000)
committerBrian Anderson <banderson@mozilla.com>
Thu, 14 Jan 2016 19:20:11 +0000 (19:20 +0000)
This reverts commit 34dc0e0739e19811850f82f1e45b61ba97adc96e.

src/librustc/session/config.rs
src/librustc_trans/back/link.rs
src/librustc_trans/back/linker.rs

index 80bfbe4edda8810dedb47db0085254a450497c89..fd7ee0b13ac778b0acf6ea9ebb4a46a95e742bc6 100644 (file)
@@ -541,8 +541,6 @@ fn parse_passes(slot: &mut Passes, v: Option<&str>) -> bool {
         "explicitly enable the cfg(debug_assertions) directive"),
     inline_threshold: Option<usize> = (None, parse_opt_uint,
         "set the inlining threshold for"),
-    disable_gold: bool = (false, parse_bool,
-        "disable use of the ld.gold linker"),
 }
 
 
index e1edbf4a1276dc963d13858c4510c03d45c0c1bf..ec1383f1f7b2b19ac8b40dc4db49d3e801096b13 100644 (file)
@@ -1063,10 +1063,6 @@ fn link_args(cmd: &mut Linker,
         cmd.args(&rpath::get_rpath_flags(&mut rpath_config));
     }
 
-    // Use the gold linker if possible instead of ld. It is much
-    // faster.
-    cmd.try_gold_linker();
-
     // Finally add all the linker arguments provided on the command line along
     // with any #[link_args] attributes found inside the crate
     if let Some(ref args) = sess.opts.cg.link_args {
index 90ebf364367a0c66388a8423e70b74fef16e3198..1ee1c9f1912c778f85c441160dbecf831ea1e7e8 100644 (file)
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use std::env;
 use std::ffi::OsString;
 use std::fs::{self, File};
 use std::io::{self, BufWriter};
@@ -57,7 +56,6 @@ pub trait Linker {
     fn no_whole_archives(&mut self);
     fn export_symbols(&mut self, sess: &Session, trans: &CrateTranslation,
                       tmpdir: &Path);
-    fn try_gold_linker(&mut self);
 }
 
 pub struct GnuLinker<'a> {
@@ -201,53 +199,6 @@ fn hint_dynamic(&mut self) {
     fn export_symbols(&mut self, _: &Session, _: &CrateTranslation, _: &Path) {
         // noop, visibility in object files takes care of this
     }
-
-    fn try_gold_linker(&mut self) {
-        // Only use gold under specific conditions that we know work
-
-        let gold_exists = match env::var_os("PATH") {
-            Some(ref env_path) => {
-                env::split_paths(env_path).any(|mut p| {
-                    p.push("ld.gold");
-                    p.exists()
-                })
-            }
-            None => false
-        };
-        let host_is_linux = cfg!(target_os = "linux");
-        // Defensively prevent trying to use gold for bogus cross-targets.
-        let target_is_host_compatible = {
-            let host_os_is_target_os = self.sess.target.target.target_os == env::consts::OS;
-            let host_arch_is_target_arch = self.sess.target.target.arch == env::consts::ARCH;
-            // Support x86_64->i686 and reverse
-            let host_and_target_are_x86ish =
-                (self.sess.target.target.arch == "x86" ||
-                 self.sess.target.target.arch == "x86_64") &&
-                (env::consts::ARCH == "x86" ||
-                 env::consts::ARCH == "x86_64");
-            host_os_is_target_os && (host_arch_is_target_arch || host_and_target_are_x86ish)
-        };
-        // We have strong confidence that x86 works, but not much
-        // visibility into other architectures.
-        let target_works_with_gold =
-            self.sess.target.target.arch == "x86" ||
-            self.sess.target.target.arch == "x86_64";
-        let opt_out = self.sess.opts.cg.disable_gold;
-
-        let can_use_gold =
-            gold_exists &&
-            host_is_linux &&
-            target_is_host_compatible &&
-            target_works_with_gold &&
-            !opt_out;
-
-        if can_use_gold {
-            info!("linking with ld.gold");
-            self.cmd.arg("-fuse-ld=gold");
-        } else {
-            info!("linking with ld");
-        }
-    }
 }
 
 pub struct MsvcLinker<'a> {
@@ -407,6 +358,4 @@ fn export_symbols(&mut self, sess: &Session, trans: &CrateTranslation,
         arg.push(path);
         self.cmd.arg(&arg);
     }
-
-    fn try_gold_linker(&mut self) {}
 }