Index: build/common.gypi |
diff --git a/build/common.gypi b/build/common.gypi |
index 821adc9da32b4c009491ae56536b727f79300d65..daf4311354232477a15077571994952016ced83c 100644 |
--- a/build/common.gypi |
+++ b/build/common.gypi |
@@ -274,6 +274,10 @@ |
# http://crbug.com/105550 |
'use_canvas_skia_skia%': 0, |
+ # Set to "tsan", "memcheck", or "drmemory" to configure the build to work |
+ # with one of those tools. |
+ 'build_for_tool%': '', |
+ |
'conditions': [ |
# TODO(epoger): Figure out how to set use_skia=1 for Mac outside of |
# the 'conditions' clause. Initial attempts resulted in chromium and |
@@ -949,7 +953,57 @@ |
# third_party/asan may be different from the default one. |
'clang_use_chrome_plugins%': 0, |
}], |
+ |
+ # On valgrind bots, override the optimizer settings so we don't inline too |
+ # much and make the stacks harder to figure out. |
+ # |
+ # TODO(rnk): Kill off variables that no one else uses and just implement |
+ # them under a build_for_tool== condition. |
+ ['build_for_tool=="memcheck" or build_for_tool=="tsan"', { |
+ # gcc flags |
+ 'mac_debug_optimization': '1', |
+ 'mac_release_optimization': '1', |
+ 'release_optimize': '1', |
+ 'no_gc_sections': 1, |
+ 'debug_extra_cflags': '-g -fno-inline -fno-omit-frame-pointer ' |
+ '-fno-builtin -fno-optimize-sibling-calls', |
+ 'release_extra_cflags': '-g -fno-inline -fno-omit-frame-pointer ' |
+ '-fno-builtin -fno-optimize-sibling-calls', |
+ |
+ # MSVS flags for TSan on Pin and Windows. |
+ 'win_debug_RuntimeChecks': '0', |
+ 'win_debug_disable_iterator_debugging': '1', |
+ 'win_debug_Optimization': '1', |
+ 'win_debug_InlineFunctionExpansion': '0', |
+ 'win_release_InlineFunctionExpansion': '0', |
+ 'win_release_OmitFramePointers': '0', |
+ |
+ 'linux_use_tcmalloc': 1, |
+ 'release_valgrind_build': 1, |
+ 'werror': '', |
+ 'component': 'static_library', |
+ 'use_system_zlib': 0, |
+ }], |
+ |
+ # Build tweaks for DrMemory. |
+ # TODO(rnk): Combine with tsan config to share the builder. |
+ # http://crbug.com/108155 |
+ ['build_for_tool=="drmemory"', { |
+ # DrMemory can't handle the debug CRT dll, so build static. |
+ 'component': 'static_library', |
+ # These runtime checks force initialization of stack vars which blocks |
+ # DrMemory's uninit detection. |
+ 'win_debug_RuntimeChecks': '0', |
+ # Iterator debugging is slow. |
+ 'win_debug_disable_iterator_debugging': '1', |
+ # Try to disable optimizations that mess up stacks in a release build. |
+ 'win_release_InlineFunctionExpansion': '0', |
+ 'win_release_OmitFramePointers': '0', |
+ # Keep the code under #ifndef NVALGRIND. |
+ 'release_valgrind_build': 1, |
+ }], |
], |
+ |
# List of default apps to install in new profiles. The first list contains |
# the source files as found in svn. The second list, used only for linux, |
# contains the destination location for each of the files. When a crx |