Index: build/config/compiler/BUILD.gn |
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn |
index 1863be4f5f6ee704246ac6494f25c21e236e4006..121c73a71f4c556ef2a3acc22f4e1e52d307b74a 100644 |
--- a/build/config/compiler/BUILD.gn |
+++ b/build/config/compiler/BUILD.gn |
@@ -46,6 +46,12 @@ declare_args() { |
# Requires profiling to be set to true. |
enable_full_stack_frames_for_profiling = false |
+ # TODO: We should be using 64-bit gold for linking on both 64-bit Linux |
+ # and 32-bit linux; 32-bit Gold runs out of address-space on 32-bit builds. |
+ # However, something isn't quite working right on the 32-bit builds. |
+ use_gold = |
+ is_linux && (current_cpu == "x64" || current_cpu == "arm") && !use_lld |
+ |
# When we are going to use gold we need to find it. |
# This is initialized below, after use_gold might have been overridden. |
gold_path = false |
@@ -298,35 +304,24 @@ config("compiler") { |
if (is_posix && use_lld && !is_nacl) { |
ldflags += [ "-fuse-ld=lld" ] |
} else if (use_gold) { |
- ldflags += [ "-fuse-ld=gold" ] |
- if (is_android) { |
- if (is_clang) { |
- _rebased_android_toolchain_root = |
- rebase_path(android_toolchain_root, root_build_dir) |
- |
- # Let clang find the ld.gold in the NDK. |
- ldflags += [ "--gcc-toolchain=$_rebased_android_toolchain_root" ] |
- } |
- |
- # Use -mstackrealign due to a bug on ia32 Jelly Bean. |
- # See crbug.com/521527 |
- if (current_cpu == "x86") { |
- cflags += [ "-mstackrealign" ] |
- } |
- } else { |
- ldflags += [ |
- "-B$gold_path", |
- # Experimentation found that using four linking threads |
- # saved ~20% of link time. |
- # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36 |
- # Only apply this to the target linker, since the host |
- # linker might not be gold, but isn't used much anyway. |
- # TODO(raymes): Disable threading because gold is frequently |
- # crashing on the bots: crbug.com/161942. |
- #"-Wl,--threads", |
- #"-Wl,--thread-count=4", |
- ] |
- } |
+ ldflags += [ |
+ "-B$gold_path", |
+ |
+ # Newer gccs and clangs support -fuse-ld, use the flag to force gold |
+ # selection. |
+ # gcc -- http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html |
+ "-fuse-ld=gold", |
+ |
+ # Experimentation found that using four linking threads |
+ # saved ~20% of link time. |
+ # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36 |
+ # Only apply this to the target linker, since the host |
+ # linker might not be gold, but isn't used much anyway. |
+ # TODO(raymes): Disable threading because gold is frequently |
+ # crashing on the bots: crbug.com/161942. |
+ #"-Wl,--threads", |
+ #"-Wl,--thread-count=4", |
+ ] |
if (gdb_index) { |
ldflags += [ "-Wl,--gdb-index" ] |
@@ -342,11 +337,6 @@ config("compiler") { |
# Gold is the default linker for the bundled binutils so we explicitly |
# enable the bfd linker when use_gold is not set. |
ldflags += [ "-fuse-ld=bfd" ] |
- } else if (is_android && current_cpu == "mipsel" && is_clang) { |
- # Let clang find the ld.bfd in the NDK. |
- _rebased_android_toolchain_root = |
- rebase_path(android_toolchain_root, root_build_dir) |
- ldflags += [ "--gcc-toolchain=$rebased_android_toolchain_root" ] |
} |
if (is_posix && (use_gold || (use_lld && !is_nacl)) && !using_sanitizer && |