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

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

Issue 2266073002: Explicitly ask for stack frame pointers on Debug posix builds. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased after staging changes to ffmpeg. Created 4 years, 3 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/compiler/compiler.gni") 7 import("//build/config/compiler/compiler.gni")
8 import("//build/config/nacl/config.gni") 8 import("//build/config/nacl/config.gni")
9 import("//build/toolchain/cc_wrapper.gni") 9 import("//build/toolchain/cc_wrapper.gni")
10 import("//build/toolchain/toolchain.gni") 10 import("//build/toolchain/toolchain.gni")
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 # when turning clang on or off. (defines are passed via the command line, 225 # when turning clang on or off. (defines are passed via the command line,
226 # and build system rebuild things when their commandline changes). Nothing 226 # and build system rebuild things when their commandline changes). Nothing
227 # should ever read this define. 227 # should ever read this define.
228 defines += [ "CR_CLANG_REVISION=$clang_revision" ] 228 defines += [ "CR_CLANG_REVISION=$clang_revision" ]
229 } 229 }
230 230
231 # Non-Mac Posix compiler flags setup. 231 # Non-Mac Posix compiler flags setup.
232 # ----------------------------------- 232 # -----------------------------------
233 if (is_posix && !(is_mac || is_ios)) { 233 if (is_posix && !(is_mac || is_ios)) {
234 if (enable_profiling) { 234 if (enable_profiling) {
235 # Explicitly ask for frame pointers. Otherwise they are omitted when
236 # any optimization level is used (and Android debug builds use -Os).
237 cflags += [ "-fno-omit-frame-pointer" ]
238 if (!is_debug) { 235 if (!is_debug) {
239 cflags += [ "-g" ] 236 cflags += [ "-g" ]
240 237
241 if (enable_full_stack_frames_for_profiling) { 238 if (enable_full_stack_frames_for_profiling) {
242 cflags += [ 239 cflags += [
243 "-fno-inline", 240 "-fno-inline",
244 "-fno-optimize-sibling-calls", 241 "-fno-optimize-sibling-calls",
245 ] 242 ]
246 } 243 }
247 } 244 }
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 ] 1249 ]
1253 if (full_wpo_on_official) { 1250 if (full_wpo_on_official) {
1254 arflags = [ "/LTCG" ] 1251 arflags = [ "/LTCG" ]
1255 } 1252 }
1256 } 1253 }
1257 } else { 1254 } else {
1258 common_optimize_on_cflags = [] 1255 common_optimize_on_cflags = []
1259 common_optimize_on_ldflags = [] 1256 common_optimize_on_ldflags = []
1260 1257
1261 if (is_android) { 1258 if (is_android) {
1262 # We don't omit frame pointers on arm64 since they are required
1263 # to correctly unwind stackframes which contain system library
1264 # function frames (crbug.com/391706).
1265 if (!using_sanitizer && !enable_profiling && current_cpu != "arm64") {
1266 common_optimize_on_cflags += [ "-fomit-frame-pointer" ]
1267 }
1268
1269 # TODO(jdduke) Re-enable on mips after resolving linking 1259 # TODO(jdduke) Re-enable on mips after resolving linking
1270 # issues with libc++ (crbug.com/456380). 1260 # issues with libc++ (crbug.com/456380).
1271 if (current_cpu != "mipsel" && current_cpu != "mips64el") { 1261 if (current_cpu != "mipsel" && current_cpu != "mips64el") {
1272 common_optimize_on_ldflags += [ 1262 common_optimize_on_ldflags += [
1273 # Warn in case of text relocations. 1263 # Warn in case of text relocations.
1274 "-Wl,--warn-shared-textrel", 1264 "-Wl,--warn-shared-textrel",
1275 ] 1265 ]
1276 } 1266 }
1277 } 1267 }
1278 1268
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 "-Wl,--no-as-needed", 1303 "-Wl,--no-as-needed",
1314 "-lpthread", 1304 "-lpthread",
1315 ] 1305 ]
1316 } 1306 }
1317 common_optimize_on_ldflags += [ "-Wl,--as-needed" ] 1307 common_optimize_on_ldflags += [ "-Wl,--as-needed" ]
1318 } 1308 }
1319 } 1309 }
1320 } 1310 }
1321 1311
1322 config("default_stack_frames") { 1312 config("default_stack_frames") {
1313 if (is_posix && !(is_mac || is_ios)) {
1314 if (using_sanitizer || enable_profiling || is_debug ||
1315 current_cpu == "arm64") {
1316 # Explicitly ask for frame pointers, otherwise:
1317 # * Stacks may be missing for sanitizer and profiling builds.
1318 # * Debug tcmalloc can crash (crbug.com/636489).
1319 # * Stacks may be missing for arm64 crash dumps (crbug.com/391706).
1320 cflags = [ "-fno-omit-frame-pointer" ]
1321 } else if (is_android) {
1322 cflags = [ "-fomit-frame-pointer" ]
1323 }
1324 }
1323 } 1325 }
1324 1326
1325 # Default "optimization on" config. 1327 # Default "optimization on" config.
1326 config("optimize") { 1328 config("optimize") {
1327 if (is_win) { 1329 if (is_win) {
1328 # TODO(thakis): Remove is_clang here, https://crbug.com/598772 1330 # TODO(thakis): Remove is_clang here, https://crbug.com/598772
1329 if (is_official_build && full_wpo_on_official && !is_clang) { 1331 if (is_official_build && full_wpo_on_official && !is_clang) {
1330 common_optimize_on_cflags += [ 1332 common_optimize_on_cflags += [
1331 "/GL", # Whole program optimization. 1333 "/GL", # Whole program optimization.
1332 1334
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 ] 1376 ]
1375 } else if (is_android && !android_full_debug) { 1377 } else if (is_android && !android_full_debug) {
1376 # On Android we kind of optimize some things that don't affect debugging 1378 # On Android we kind of optimize some things that don't affect debugging
1377 # much even when optimization is disabled to get the binary size down. 1379 # much even when optimization is disabled to get the binary size down.
1378 cflags = [ 1380 cflags = [
1379 "-Os", 1381 "-Os",
1380 "-fdata-sections", 1382 "-fdata-sections",
1381 "-ffunction-sections", 1383 "-ffunction-sections",
1382 ] 1384 ]
1383 1385
1384 # We don't omit frame pointers on arm64 since they are required
1385 # to correctly unwind stackframes which contain system library
1386 # function frames (crbug.com/391706).
1387 if (!using_sanitizer && !enable_profiling && current_cpu != "arm64") {
1388 cflags += [ "-fomit-frame-pointer" ]
1389 }
1390
1391 # Don't use gc-sections since it can cause links to succeed when they 1386 # Don't use gc-sections since it can cause links to succeed when they
1392 # actually shouldn't. http://crbug.com/159847 1387 # actually shouldn't. http://crbug.com/159847
1393 ldflags = common_optimize_on_ldflags - [ "-Wl,--gc-sections" ] 1388 ldflags = common_optimize_on_ldflags - [ "-Wl,--gc-sections" ]
1394 } else { 1389 } else {
1395 cflags = [ "-O0" ] 1390 cflags = [ "-O0" ]
1396 ldflags = [] 1391 ldflags = []
1397 } 1392 }
1398 } 1393 }
1399 1394
1400 # Turns up the optimization level. On Windows, this implies whole program 1395 # Turns up the optimization level. On Windows, this implies whole program
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 1587
1593 if (is_ios || is_mac) { 1588 if (is_ios || is_mac) {
1594 # On Mac and iOS, this enables support for ARC (automatic ref-counting). 1589 # On Mac and iOS, this enables support for ARC (automatic ref-counting).
1595 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. 1590 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html.
1596 config("enable_arc") { 1591 config("enable_arc") {
1597 common_flags = [ "-fobjc-arc" ] 1592 common_flags = [ "-fobjc-arc" ]
1598 cflags_objc = common_flags 1593 cflags_objc = common_flags
1599 cflags_objcc = common_flags 1594 cflags_objcc = common_flags
1600 } 1595 }
1601 } 1596 }
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