Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2355)

Unified Diff: build/config/compiler/BUILD.gn

Issue 1996433002: 👻 Reland of Merge android's use_gold settings with the main use_gold GN arg logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete --icf=safe Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/android/BUILD.gn ('k') | build/config/compiler/compiler.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/compiler/BUILD.gn
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 3f82d79abc76920af0ce9c69f9fa26b71a08e09c..ea6a23447fa19f909631c5db0f3c127f67c54e23 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -46,11 +46,6 @@ declare_args() {
# Requires profiling to be set to true.
enable_full_stack_frames_for_profiling = false
- # Whether to use the gold linker from binutils instead of lld or bfd.
- use_gold =
- !use_lld && is_linux &&
- (current_cpu == "x64" || current_cpu == "x86" || current_cpu == "arm")
-
# 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
@@ -303,24 +298,35 @@ config("compiler") {
if (is_posix && use_lld && !is_nacl) {
ldflags += [ "-fuse-ld=lld" ]
} else if (use_gold) {
- 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",
- ]
+ 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",
+ ]
+ }
if (gdb_index) {
ldflags += [ "-Wl,--gdb-index" ]
@@ -336,15 +342,21 @@ 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 &&
!(is_android && use_order_profiling)) {
# TODO(crbug.com/576197) - gcc on x86 platforms + gold + icf=all
# doesn't currently work. Once it does, use icf=all everywhere.
+ # Additionally, on Android x86 --icf=safe seems to cause issues as well.
if (is_clang || (target_cpu != "x86" && target_cpu != "x64")) {
ldflags += [ "-Wl,--icf=all" ]
- } else {
+ } else if (!is_android) {
ldflags += [ "-Wl,--icf=safe" ]
}
}
« no previous file with comments | « build/config/android/BUILD.gn ('k') | build/config/compiler/compiler.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698