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

Side by Side Diff: build/config/compiler/BUILD.gn

Issue 2770933009: linux: Improve gdb startup time for debug builds from over 4 minutes to 35s. (Closed)
Patch Set: reland: no 32-bit Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/android/config.gni") 5 import("//build/config/android/config.gni")
6 import("//build/config/chrome_build.gni") 6 import("//build/config/chrome_build.gni")
7 import("//build/config/chromecast_build.gni") 7 import("//build/config/chromecast_build.gni")
8 import("//build/config/compiler/compiler.gni") 8 import("//build/config/compiler/compiler.gni")
9 import("//build/config/nacl/config.gni") 9 import("//build/config/nacl/config.gni")
10 import("//build/toolchain/cc_wrapper.gni") 10 import("//build/toolchain/cc_wrapper.gni")
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 # it has, then we don't need to disable 4702 (unreachable code warning). 58 # it has, then we don't need to disable 4702 (unreachable code warning).
59 # The patch is preapplied to the internal toolchain and hence all bots. 59 # The patch is preapplied to the internal toolchain and hence all bots.
60 msvs_xtree_patched = false 60 msvs_xtree_patched = false
61 } 61 }
62 62
63 # Omit unwind support in official builds to save space. 63 # Omit unwind support in official builds to save space.
64 # We can use breakpad for these builds. 64 # We can use breakpad for these builds.
65 exclude_unwind_tables = (is_chrome_branded && is_official_build) || 65 exclude_unwind_tables = (is_chrome_branded && is_official_build) ||
66 (is_chromecast && !is_cast_desktop_build && !is_debug) 66 (is_chromecast && !is_cast_desktop_build && !is_debug)
67 67
68 # If true, gold linker will save symbol table inside object files.
69 # This speeds up gdb startup by 60%
70 gdb_index = false
71
72 # If true, optimize for size. Does not affect windows builds. 68 # If true, optimize for size. Does not affect windows builds.
73 # Linux & Mac favor speed over size. 69 # Linux & Mac favor speed over size.
74 # TODO(brettw) it's weird that Mac and desktop Linux are different. We should 70 # TODO(brettw) it's weird that Mac and desktop Linux are different. We should
75 # explore favoring size over speed in this case as well. 71 # explore favoring size over speed in this case as well.
76 optimize_for_size = is_android || is_ios 72 optimize_for_size = is_android || is_ios
77 73
78 # Enable fatal linker warnings. Building Chromium with certain versions 74 # Enable fatal linker warnings. Building Chromium with certain versions
79 # of binutils can cause linker warning. 75 # of binutils can cause linker warning.
80 # See: https://bugs.chromium.org/p/chromium/issues/detail?id=457359 76 # See: https://bugs.chromium.org/p/chromium/issues/detail?id=457359
81 fatal_linker_warnings = true 77 fatal_linker_warnings = true
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 } 298 }
303 299
304 # Linux/Android common flags setup. 300 # Linux/Android common flags setup.
305 # --------------------------------- 301 # ---------------------------------
306 if (is_linux || is_android) { 302 if (is_linux || is_android) {
307 if (use_pic) { 303 if (use_pic) {
308 cflags += [ "-fPIC" ] 304 cflags += [ "-fPIC" ]
309 ldflags += [ "-fPIC" ] 305 ldflags += [ "-fPIC" ]
310 } 306 }
311 307
312 cflags += [ "-pipe" ] # Use pipes for communicating between sub-processes. Faster. 308 # Use pipes for communicating between sub-processes. Faster.
309 cflags += [ "-pipe" ]
313 310
314 ldflags += [ 311 ldflags += [
315 "-Wl,-z,noexecstack", 312 "-Wl,-z,noexecstack",
316 "-Wl,-z,now", 313 "-Wl,-z,now",
317 "-Wl,-z,relro", 314 "-Wl,-z,relro",
318 ] 315 ]
319 if (!using_sanitizer) { 316 if (!using_sanitizer) {
320 if (!use_cfi_diag) { 317 if (!use_cfi_diag) {
321 ldflags += [ "-Wl,-z,defs" ] 318 ldflags += [ "-Wl,-z,defs" ]
322 } 319 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 # saved ~20% of link time. 365 # saved ~20% of link time.
369 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_t hread/thread/281527606915bb36 366 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_t hread/thread/281527606915bb36
370 # Only apply this to the target linker, since the host 367 # Only apply this to the target linker, since the host
371 # linker might not be gold, but isn't used much anyway. 368 # linker might not be gold, but isn't used much anyway.
372 "-Wl,--threads", 369 "-Wl,--threads",
373 "-Wl,--thread-count=4", 370 "-Wl,--thread-count=4",
374 ] 371 ]
375 } 372 }
376 } 373 }
377 374
378 if (gdb_index) {
379 ldflags += [ "-Wl,--gdb-index" ]
380 }
381
382 # TODO(thestig): Make this flag work with GN. 375 # TODO(thestig): Make this flag work with GN.
383 #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan | | is_msan)) { 376 #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan | | is_msan)) {
384 # ldflags += [ 377 # ldflags += [
385 # "-Wl,--detect-odr-violations", 378 # "-Wl,--detect-odr-violations",
386 # ] 379 # ]
387 #} 380 #}
388 } else if (linux_use_bundled_binutils) { 381 } else if (linux_use_bundled_binutils) {
389 # Gold is the default linker for the bundled binutils so we explicitly 382 # Gold is the default linker for the bundled binutils so we explicitly
390 # enable the bfd linker when use_gold is not set. 383 # enable the bfd linker when use_gold is not set.
391 ldflags += [ "-fuse-ld=bfd" ] 384 ldflags += [ "-fuse-ld=bfd" ]
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 "-g2", 1648 "-g2",
1656 ] 1649 ]
1657 } else { 1650 } else {
1658 cflags = [ "-g2" ] 1651 cflags = [ "-g2" ]
1659 } 1652 }
1660 if (use_debug_fission) { 1653 if (use_debug_fission) {
1661 cflags += [ "-gsplit-dwarf" ] 1654 cflags += [ "-gsplit-dwarf" ]
1662 } 1655 }
1663 asmflags = cflags 1656 asmflags = cflags
1664 ldflags = [] 1657 ldflags = []
1658
1659 # TODO(thakis): Figure out if there's a way to make this go for 32-bit,
1660 # currently we get "warning:
1661 # obj/native_client/src/trusted/service_runtime/sel_asm/nacl_switch_32.o:
1662 # DWARF info may be corrupt; offsets in a range list entry are in different
1663 # sections" there. Maybe just a bug in nacl_switch_32.S.
1664 if (!is_mac && !is_ios && !is_nacl && target_cpu != "x86") {
1665 ldflags += [ "-Wl,--gdb-index" ]
1666 }
1665 } 1667 }
1666 } 1668 }
1667 1669
1668 # Minimal symbols. 1670 # Minimal symbols.
1669 config("minimal_symbols") { 1671 config("minimal_symbols") {
1670 if (is_win) { 1672 if (is_win) {
1671 # Linker symbols for backtraces only. 1673 # Linker symbols for backtraces only.
1672 cflags = [] 1674 cflags = []
1673 ldflags = [ "/DEBUG" ] 1675 ldflags = [ "/DEBUG" ]
1674 } else { 1676 } else {
1675 if (is_android) { 1677 if (is_android) {
1676 # Breakpad can't handle DWARF 4 symbols properly yet, so use DWARF 3 1678 # Breakpad can't handle DWARF 4 symbols properly yet, so use DWARF 3
1677 # explicitly on android where we are hitting https://crbug.com/638485. 1679 # explicitly on android where we are hitting https://crbug.com/638485.
1678 # The arguments MUST be in this order because of a gcc arg parsing bug. 1680 # The arguments MUST be in this order because of a gcc arg parsing bug.
1679 cflags = [ 1681 cflags = [
1680 "-gdwarf-3", 1682 "-gdwarf-3",
1681 "-g1", 1683 "-g1",
1682 ] 1684 ]
1683 } else { 1685 } else {
1684 cflags = [ "-g1" ] 1686 cflags = [ "-g1" ]
1685 } 1687 }
1686 if (use_debug_fission) { 1688
1687 cflags += [ "-gsplit-dwarf" ] 1689 # Note: -gsplit-dwarf implicitly turns on -g2 with clang, so don't pass it.
1688 }
1689 asmflags = cflags 1690 asmflags = cflags
1690 ldflags = [] 1691 ldflags = []
1691 } 1692 }
1692 } 1693 }
1693 1694
1694 # No symbols. 1695 # No symbols.
1695 config("no_symbols") { 1696 config("no_symbols") {
1696 if (!is_win) { 1697 if (!is_win) {
1697 cflags = [ "-g0" ] 1698 cflags = [ "-g0" ]
1698 asmflags = cflags 1699 asmflags = cflags
(...skipping 15 matching lines...) Expand all
1714 1715
1715 if (is_ios || is_mac) { 1716 if (is_ios || is_mac) {
1716 # On Mac and iOS, this enables support for ARC (automatic ref-counting). 1717 # On Mac and iOS, this enables support for ARC (automatic ref-counting).
1717 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. 1718 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html.
1718 config("enable_arc") { 1719 config("enable_arc") {
1719 common_flags = [ "-fobjc-arc" ] 1720 common_flags = [ "-fobjc-arc" ]
1720 cflags_objc = common_flags 1721 cflags_objc = common_flags
1721 cflags_objcc = common_flags 1722 cflags_objcc = common_flags
1722 } 1723 }
1723 } 1724 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698