From 16445983ececfcdf80a4dd84412268b560031b4e Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 15 Aug 2023 15:53:05 +0200 Subject: [PATCH] Remove gold config option and use lld on Linux (#30100) There are a few motivations for this change: 1. lld is demonstrably faster than gold, but is really only stable on Linux at the moment. There's a good chance that it will be ready for all platforms soon though. 2. Most people do not have gold installed on MacOS and Windows. You'd have to do this manually through homebrew. I think it's a safe assumption that this probably won't be slowing things down much on those platforms. 3. We need to remove all configuration of the build that happens while running `./mach build` if we ever hope to make `cargo build` equivalent to the mach build. This unlocks static configuration of the rustflags. One of the big blockers for proper `cargo build` support. --- python/servo/command_base.py | 8 +++++--- servobuild.example | 3 --- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/python/servo/command_base.py b/python/servo/command_base.py index b56fabbcd5b..3890d3b69c7 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -509,9 +509,11 @@ class CommandBase(object): if self.config["build"]["rustflags"]: env['RUSTFLAGS'] = env.get('RUSTFLAGS', "") + " " + self.config["build"]["rustflags"] - if self.config["tools"]["rustc-with-gold"]: - if shutil.which('ld.gold'): - env['RUSTFLAGS'] = env.get('RUSTFLAGS', "") + " -C link-args=-fuse-ld=gold" + # Turn on rust's version of lld if we are on x86 Linux. + # TODO(mrobinson): Gradually turn this on for more platforms, when support stabilizes. + # See https://github.com/rust-lang/rust/issues/39915 + if not self.cross_compile_target and effective_target == "x86_64-unknown-linux-gnu": + env['RUSTFLAGS'] = env.get('RUSTFLAGS', "") + " -Zgcc-ld=lld" if not (self.config["build"]["ccache"] == ""): env['CCACHE'] = self.config["build"]["ccache"] diff --git a/servobuild.example b/servobuild.example index 709fe4f73ea..1e3d0986bc9 100644 --- a/servobuild.example +++ b/servobuild.example @@ -4,9 +4,6 @@ # Tool options [tools] -# If rustc-with-gold is true, will try to find and use gold linker with rustc. -# Defaults to true -rustc-with-gold = true # If uncommented, this command is used instead of the platform’s default # to notify at the end of a compilation that took a long time.