Add rtc_use_memcheck flag, update MB and GN to handle it, and add gni files listing the runtime deps

When set to true, this adds the files necessary to run memcheck as data dependencies, listed in the .gni files.
This will enable us to run memcheck on swarming.

R=kjellander@chromium.org
BUG=chromium:497757
NOTRY=True

Review-Url: https://codereview.webrtc.org/2510033004
Cr-Commit-Position: refs/heads/master@{#15219}
diff --git a/tools/mb/mb.py b/tools/mb/mb.py
index 02070c5..bf3e1f6 100755
--- a/tools/mb/mb.py
+++ b/tools/mb/mb.py
@@ -1060,40 +1060,25 @@
     return ret
 
   def GetIsolateCommand(self, target, vals):
-    android = 'target_os="android"' in vals['gn_args']
-
-    # This needs to mirror the settings in //build/config/ui.gni:
-    # use_x11 = is_linux && !use_ozone.
-    use_x11 = (self.platform == 'linux2' and
-               not android and
-               not 'use_ozone=true' in vals['gn_args'])
-
-    asan = 'is_asan=true' in vals['gn_args']
-    msan = 'is_msan=true' in vals['gn_args']
-    tsan = 'is_tsan=true' in vals['gn_args']
-
     isolate_map = self.ReadIsolateMap()
     test_type = isolate_map[target]['type']
 
-    executable = isolate_map[target].get('executable', target)
-    executable_suffix = '.exe' if self.platform == 'win32' else ''
-    executable_prefix = '.\\' if self.platform == 'win32' else './'
-
-    cmdline = []
-    extra_files = []
-    common_cmdline = [
-      executable_prefix + str(executable) + executable_suffix,
-      '--',
-      '--asan=%d' % asan,
-      '--msan=%d' % msan,
-      '--tsan=%d' % tsan,
-    ]
+    android = 'target_os="android"' in vals['gn_args']
+    is_linux = self.platform == 'linux2' and not android
 
     if test_type == 'nontest':
       self.WriteFailureAndRaise('We should not be isolating %s.' % target,
                                 output_path=None)
+    if test_type not in ('console_test_launcher', 'windowed_test_launcher',
+                         'non_parallel_console_test_launcher',
+                         'additional_compile_target', 'junit_test'):
+      self.WriteFailureAndRaise('No command line for %s found (test type %s).'
+                                % (target, test_type), output_path=None)
 
-    if android and test_type != "script":
+    cmdline = []
+    extra_files = []
+
+    if android:
       logdog_command = [
           '--logdog-bin-cmd', './../../bin/logdog_butler',
           '--project', 'chromium',
@@ -1107,45 +1092,70 @@
           self.PathJoin('bin', 'run_%s' % target),
           '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
           '--target-devices-file', '${SWARMING_BOT_FILE}',
-          '-v'
+          '-v',
       ]
       cmdline = (['./../../build/android/test_wrapper/logdog_wrapper.py']
                  + logdog_command + test_cmdline)
-    elif use_x11 and test_type == 'windowed_test_launcher':
-      extra_files = [
-          'xdisplaycheck',
-          '../../testing/test_env.py',
-          '../../testing/xvfb.py',
-          '../../third_party/gtest-parallel/gtest-parallel',
-          '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
-      ]
-      cmdline = [
-          '../../testing/xvfb.py',
-          '.',
-          '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
-      ] + common_cmdline
-    elif test_type in ('windowed_test_launcher', 'console_test_launcher'):
-      extra_files = [
-          '../../testing/test_env.py',
-          '../../third_party/gtest-parallel/gtest-parallel',
-          '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
-      ]
-      cmdline = [
-          '../../testing/test_env.py',
-          '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
-      ] + common_cmdline
-    elif test_type == 'non_parallel_console_test_launcher':
-      extra_files = [
-          '../../testing/test_env.py',
-      ]
-      cmdline = [
-          '../../testing/test_env.py',
-      ] + common_cmdline
     else:
-      self.WriteFailureAndRaise('No command line for %s found (test type %s).'
-                                % (target, test_type), output_path=None)
+      extra_files = ['../../testing/test_env.py']
 
-    cmdline += isolate_map[target].get('args', [])
+      # This needs to mirror the settings in //build/config/ui.gni:
+      # use_x11 = is_linux && !use_ozone.
+      use_x11 = is_linux and not 'use_ozone=true' in vals['gn_args']
+
+      xvfb = use_x11 and test_type == 'windowed_test_launcher'
+      if xvfb:
+        extra_files += [
+            'xdisplaycheck',
+            '../../testing/xvfb.py',
+        ]
+
+      # Memcheck is only supported for linux. Ignore in other platforms.
+      memcheck = is_linux and 'rtc_use_memcheck=true' in vals['gn_args']
+      memcheck_cmdline = [
+          'bash',
+          '../../tools/valgrind-webrtc/webrtc_tests.sh',
+          '--tool',
+          'memcheck',
+          '--target',
+          'Release',
+          '--build-dir',
+          '..',
+          '--test',
+      ]
+
+      gtest_parallel = (test_type != 'non_parallel_console_test_launcher' and
+                        not memcheck)
+      gtest_parallel_wrapper = [
+          '../../third_party/gtest-parallel/gtest-parallel-wrapper.py'
+      ]
+      if gtest_parallel:
+        extra_files += [
+            '../../third_party/gtest-parallel/gtest-parallel',
+            '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        ]
+
+      asan = 'is_asan=true' in vals['gn_args']
+      msan = 'is_msan=true' in vals['gn_args']
+      tsan = 'is_tsan=true' in vals['gn_args']
+
+      executable_prefix = '.\\' if self.platform == 'win32' else './'
+      executable_suffix = '.exe' if self.platform == 'win32' else ''
+      executable = executable_prefix + target + executable_suffix
+
+      cmdline = (['../../testing/xvfb.py', '.'] if xvfb else
+                 ['../../testing/test_env.py'])
+      if memcheck:
+        cmdline += memcheck_cmdline
+      elif gtest_parallel:
+        cmdline += gtest_parallel_wrapper
+      cmdline += [
+          executable,
+          '--',
+          '--asan=%d' % asan,
+          '--msan=%d' % msan,
+          '--tsan=%d' % tsan,
+      ]
 
     return cmdline, extra_files
 
diff --git a/tools/mb/mb_unittest.py b/tools/mb/mb_unittest.py
index 52871ae..cba78f8 100755
--- a/tools/mb/mb_unittest.py
+++ b/tools/mb/mb_unittest.py
@@ -9,6 +9,7 @@
 
 """Tests for mb.py."""
 
+import ast
 import json
 import StringIO
 import os
@@ -121,7 +122,9 @@
       'fake_gn_debug_builder': 'gn_debug_goma',
       'fake_gyp_builder': 'gyp_debug',
       'fake_gn_args_bot': '//build/args/bots/fake_master/fake_gn_args_bot.gn',
+      'fake_memcheck_bot': 'gn_memcheck_bot',
       'fake_multi_phase': { 'phase_1': 'gn_phase_1', 'phase_2': 'gn_phase_2'},
+      'fake_android_bot': 'gn_android_bot',
     },
   },
   'configs': {
@@ -132,6 +135,8 @@
     'gyp_crosscompile': ['gyp', 'crosscompile'],
     'gn_phase_1': ['gn', 'phase_1'],
     'gn_phase_2': ['gn', 'phase_2'],
+    'gn_memcheck_bot': ['gn', 'memcheck'],
+    'gn_android_bot': ['gn', 'android'],
   },
   'mixins': {
     'crosscompile': {
@@ -161,6 +166,12 @@
     'debug': {
       'gn_args': 'is_debug=true',
     },
+    'memcheck': {
+      'gn_args': 'rtc_use_memcheck=true',
+    },
+    'android': {
+      'gn_args': 'target_os="android"',
+    }
   },
 }
 """
@@ -370,6 +381,301 @@
     self.assertIn('c:\\fake_src\\out\\Default\\cc_perftests.isolated.gen.json',
                   mbw.files)
 
+  def test_gn_gen_swarming_android(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'additional_compile_target',"
+          "}}\n"
+      ),
+      '/fake_src/out/Default/base_unittests.runtime_deps': (
+          "base_unittests\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_android_bot', '//out/Default',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, ['base_unittests'])
+    self.assertEqual(command, [
+        './../../build/android/test_wrapper/logdog_wrapper.py',
+        '--logdog-bin-cmd', './../../bin/logdog_butler',
+        '--project', 'chromium',
+        '--service-account-json',
+        '/creds/service_accounts/service-account-luci-logdog-publisher.json',
+        '--prefix', 'android/swarming/logcats/${SWARMING_TASK_ID}',
+        '--source', '${ISOLATED_OUTDIR}/logcats',
+        '--name', 'unified_logcats',
+        'bin/run_base_unittests',
+        '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
+        '--target-devices-file', '${SWARMING_BOT_FILE}',
+        '-v',
+    ])
+
+  def test_gn_gen_swarming_android_junit_test(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'junit_test',"
+          "}}\n"
+      ),
+      '/fake_src/out/Default/base_unittests.runtime_deps': (
+          "base_unittests\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_android_bot', '//out/Default',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, ['base_unittests'])
+    self.assertEqual(command, [
+        './../../build/android/test_wrapper/logdog_wrapper.py',
+        '--logdog-bin-cmd', './../../bin/logdog_butler',
+        '--project', 'chromium',
+        '--service-account-json',
+        '/creds/service_accounts/service-account-luci-logdog-publisher.json',
+        '--prefix', 'android/swarming/logcats/${SWARMING_TASK_ID}',
+        '--source', '${ISOLATED_OUTDIR}/logcats',
+        '--name', 'unified_logcats',
+        'bin/run_base_unittests',
+        '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
+        '--target-devices-file', '${SWARMING_BOT_FILE}',
+        '-v',
+    ])
+
+  def test_gn_gen_non_parallel_console_test_launcher(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'non_parallel_console_test_launcher',"
+          "}}\n"
+      ),
+      '/fake_src/out/Default/base_unittests.runtime_deps': (
+          "base_unittests\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_debug_goma', '//out/Default',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, [
+        '../../testing/test_env.py',
+        'base_unittests',
+    ])
+    self.assertEqual(command, [
+        '../../testing/test_env.py',
+        './base_unittests',
+        '--',
+        '--asan=0',
+        '--msan=0',
+        '--tsan=0',
+    ])
+
+  def test_gn_isolate_windowed_test_launcher_linux(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'windowed_test_launcher',"
+          "}}\n"
+      ),
+      '/fake_src/out/Default/base_unittests.runtime_deps': (
+          "base_unittests\n"
+          "some_resource_file\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_debug_goma', '//out/Default',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, [
+        '../../testing/test_env.py',
+        '../../testing/xvfb.py',
+        '../../third_party/gtest-parallel/gtest-parallel',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        'base_unittests',
+        'some_resource_file',
+        'xdisplaycheck',
+    ])
+    self.assertEqual(command, [
+        '../../testing/xvfb.py',
+        '.',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        './base_unittests',
+        '--',
+        '--asan=0',
+        '--msan=0',
+        '--tsan=0',
+    ])
+
+  def test_gn_gen_windowed_test_launcher_win(self):
+    files = {
+      '/tmp/swarming_targets': 'unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'unittests': {"
+          "  'label': '//somewhere:unittests',"
+          "  'type': 'windowed_test_launcher',"
+          "}}\n"
+      ),
+      r'c:\fake_src\out\Default\unittests.exe.runtime_deps': (
+          "unittests.exe\n"
+          "some_dependency\n"
+      ),
+    }
+    mbw = self.fake_mbw(files=files, win32=True)
+    self.check(['gen',
+                '-c', 'gn_debug_goma',
+                '--swarming-targets-file', '/tmp/swarming_targets',
+                '--isolate-map-file',
+                '/fake_src/testing/buildbot/gn_isolate_map.pyl',
+                '//out/Default'], mbw=mbw, ret=0)
+
+    isolate_file = mbw.files['c:\\fake_src\\out\\Default\\unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, [
+        '../../testing/test_env.py',
+        '../../third_party/gtest-parallel/gtest-parallel',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        'some_dependency',
+        'unittests.exe',
+    ])
+    self.assertEqual(command, [
+        '../../testing/test_env.py',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        r'.\unittests.exe',
+        '--',
+        '--asan=0',
+        '--msan=0',
+        '--tsan=0',
+    ])
+
+  def test_gn_gen_console_test_launcher(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'console_test_launcher',"
+          "}}\n"
+      ),
+      '/fake_src/out/Default/base_unittests.runtime_deps': (
+          "base_unittests\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_debug_goma', '//out/Default',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Default/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, [
+        '../../testing/test_env.py',
+        '../../third_party/gtest-parallel/gtest-parallel',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        'base_unittests',
+    ])
+    self.assertEqual(command, [
+        '../../testing/test_env.py',
+        '../../third_party/gtest-parallel/gtest-parallel-wrapper.py',
+        './base_unittests',
+        '--',
+        '--asan=0',
+        '--msan=0',
+        '--tsan=0',
+    ])
+
+  def test_gn_isolate_console_test_launcher_memcheck(self):
+    test_files = {
+      '/tmp/swarming_targets': 'base_unittests\n',
+      '/fake_src/testing/buildbot/gn_isolate_map.pyl': (
+          "{'base_unittests': {"
+          "  'label': '//base:base_unittests',"
+          "  'type': 'console_test_launcher',"
+          "}}\n"
+      ),
+      '/fake_src/out/Release/base_unittests.runtime_deps': (
+          "base_unittests\n"
+          "lots_of_memcheck_dependencies\n"
+          "../../tools/valgrind-webrtc/webrtc_tests.sh\n"
+      ),
+    }
+    mbw = self.check(['gen', '-c', 'gn_memcheck_bot', '//out/Release',
+                      '--swarming-targets-file', '/tmp/swarming_targets',
+                      '--isolate-map-file',
+                      '/fake_src/testing/buildbot/gn_isolate_map.pyl'],
+                     files=test_files, ret=0)
+
+    isolate_file = mbw.files['/fake_src/out/Release/base_unittests.isolate']
+    isolate_file_contents = ast.literal_eval(isolate_file)
+    files = isolate_file_contents['variables']['files']
+    command = isolate_file_contents['variables']['command']
+
+    self.assertEqual(files, [
+        '../../testing/test_env.py',
+        '../../tools/valgrind-webrtc/webrtc_tests.sh',
+        'base_unittests',
+        'lots_of_memcheck_dependencies',
+    ])
+    self.assertEqual(command, [
+        '../../testing/test_env.py',
+        'bash',
+        '../../tools/valgrind-webrtc/webrtc_tests.sh',
+        '--tool',
+        'memcheck',
+        '--target',
+        'Release',
+        '--build-dir',
+        '..',
+        '--test',
+        './base_unittests',
+        '--',
+        '--asan=0',
+        '--msan=0',
+        '--tsan=0',
+    ])
 
   def test_gn_isolate(self):
     files = {
@@ -378,7 +684,6 @@
           "{'base_unittests': {"
           "  'label': '//base:base_unittests',"
           "  'type': 'non_parallel_console_test_launcher',"
-          "  'args': [],"
           "}}\n"
       ),
       '/fake_src/out/Default/base_unittests.runtime_deps': (
@@ -392,7 +697,6 @@
     files['/fake_src/out/Default/args.gn'] = 'is_debug = True\n'
     self.check(['isolate', '//out/Default', 'base_unittests'],
                files=files, ret=0)
-
     files['/fake_src/out/Default/mb_type'] = 'gn\n'
     self.check(['isolate', '//out/Default', 'base_unittests'],
                files=files, ret=0)
@@ -403,7 +707,6 @@
           "{'base_unittests': {"
           "  'label': '//base:base_unittests',"
           "  'type': 'windowed_test_launcher',"
-          "  'args': [],"
           "}}\n"
       ),
       '/fake_src/out/Default/base_unittests.runtime_deps': (
diff --git a/tools/valgrind-webrtc/python-google.gni b/tools/valgrind-webrtc/python-google.gni
new file mode 100644
index 0000000..adc6a0f
--- /dev/null
+++ b/tools/valgrind-webrtc/python-google.gni
@@ -0,0 +1,27 @@
+# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+python_google = [
+  "../../tools/python/google/__init__.py",
+  "../../tools/python/google/gethash_timer.py",
+  "../../tools/python/google/httpd_config/httpd.conf",
+  "../../tools/python/google/httpd_config/httpd2.conf",
+  "../../tools/python/google/httpd_config/httpd2.pem",
+  "../../tools/python/google/httpd_config/httpd2_linux.conf",
+  "../../tools/python/google/httpd_config/httpd2_mac.conf",
+  "../../tools/python/google/httpd_config/mime.types",
+  "../../tools/python/google/httpd_config/root_ca_cert.pem",
+  "../../tools/python/google/httpd_utils.py",
+  "../../tools/python/google/logging_utils.py",
+  "../../tools/python/google/path_utils.py",
+  "../../tools/python/google/platform_utils.py",
+  "../../tools/python/google/platform_utils_linux.py",
+  "../../tools/python/google/platform_utils_mac.py",
+  "../../tools/python/google/platform_utils_win.py",
+  "../../tools/python/google/process_utils.py",
+]
diff --git a/tools/valgrind-webrtc/valgrind-binaries.gni b/tools/valgrind-webrtc/valgrind-binaries.gni
new file mode 100644
index 0000000..27cd675
--- /dev/null
+++ b/tools/valgrind-webrtc/valgrind-binaries.gni
@@ -0,0 +1,425 @@
+# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+valgrind_binaries = []
+
+if (is_mac) {
+  valgrind_binaries += [
+    "../../chromium/src/third_party/valgrind/mac_10.6/bin/ms_print",
+    "../../chromium/src/third_party/valgrind/mac_10.6/bin/no_op_client_for_valgrind",
+    "../../chromium/src/third_party/valgrind/mac_10.6/bin/valgrind",
+    "../../chromium/src/third_party/valgrind/mac_10.6/bin/valgrind-listener",
+    "../../chromium/src/third_party/valgrind/mac_10.6/bin/vgdb",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-sse-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-sse-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/32bit-sse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-avx-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-avx-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-avx.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-sse-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-sse-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/64bit-sse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-avx-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-avx-coresse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-avx-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-avx-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/amd64-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-vfpv3-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-vfpv3-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-vfpv3.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-with-vfpv3-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/arm-with-vfpv3.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/default.supp",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/i386-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/i386-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-amd64-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-amd64-darwin.so.dSYM/Contents/Resources/DWARF/libmpiwrap-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-x86-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/libmpiwrap-x86-darwin.so.dSYM/Contents/Resources/DWARF/libmpiwrap-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-amd64-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-amd64-darwin.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-amd64-darwin.dSYM/Contents/Resources/DWARF/memcheck-amd64-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-x86-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-x86-darwin.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/memcheck-x86-darwin.dSYM/Contents/Resources/DWARF/memcheck-x86-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cp0-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cp0-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cp0.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-cpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-fpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-fpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-fpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/mips-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-altivec-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-altivec-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-altivec.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-fpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-fpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-fpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/power64-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/powerpc-altivec32l-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/powerpc-altivec32l.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/powerpc-altivec64l-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/powerpc-altivec64l.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-acr-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-acr-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-acr.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-fpr-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-fpr-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390-fpr.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-core64-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-core64-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-core64.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-generic-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-generic.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-linux64-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-linux64-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/s390x-linux64.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-amd64-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-amd64-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_core-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-x86-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_core-x86-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_core-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-amd64-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-amd64-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_memcheck-amd64-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-x86-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.6/lib/valgrind/vgpreload_memcheck-x86-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_memcheck-x86-darwin.so",
+    "../../chromium/src/third_party/valgrind/mac_10.7/bin/valgrind",
+    "../../chromium/src/third_party/valgrind/mac_10.7/bin/valgrind-listener",
+    "../../chromium/src/third_party/valgrind/mac_10.7/bin/vgdb",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-sse-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-sse-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/32bit-sse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-avx-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-avx-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-avx.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-sse-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-sse-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/64bit-sse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-avx-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-avx-coresse.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-avx-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-avx-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/amd64-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-vfpv3-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-vfpv3-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-vfpv3.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-with-vfpv3-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/arm-with-vfpv3.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/default.supp",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/i386-coresse-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/i386-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-amd64-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-amd64-darwin.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-amd64-darwin.dSYM/Contents/Resources/DWARF/memcheck-amd64-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-x86-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-x86-darwin.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/memcheck-x86-darwin.dSYM/Contents/Resources/DWARF/memcheck-x86-darwin",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cp0-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cp0-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cp0.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-cpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-fpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-fpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-fpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-linux-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/mips-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-altivec-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-altivec-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-altivec.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-fpu-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-fpu-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-fpu.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-core-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-core-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-core.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-linux-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-linux-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/power64-linux.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/powerpc-altivec32l-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/powerpc-altivec32l.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/powerpc-altivec64l-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/powerpc-altivec64l.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-acr-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-acr-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-acr.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-fpr-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-fpr-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390-fpr.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-core64-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-core64-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-core64.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-generic-valgrind.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-generic.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-linux64-valgrind-s1.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-linux64-valgrind-s2.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/s390x-linux64.xml",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/vgpreload_core-amd64-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/vgpreload_core-x86-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/vgpreload_memcheck-amd64-darwin.so.dSYM/Contents/Info.plist",
+    "../../chromium/src/third_party/valgrind/mac_10.7/lib/valgrind/vgpreload_memcheck-x86-darwin.so.dSYM/Contents/Info.plist",
+  ]
+} else if (is_linux) {
+  if (target_cpu == "x64") {
+    valgrind_binaries += [
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/ms_print",
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/no_op_client_for_valgrind",
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/valgrind",
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/valgrind-listener",
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/valgrind-tsan.sh",
+      "../../chromium/src/third_party/valgrind/linux_x64/bin/vgdb",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-sse-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-sse-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/32bit-sse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-avx-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-avx-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-avx.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-sse-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-sse-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/64bit-sse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-avx-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-avx-coresse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-avx-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-avx-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/amd64-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-vfpv3-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-vfpv3-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-vfpv3.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-with-vfpv3-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/arm-with-vfpv3.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/default.supp",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/i386-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/i386-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/memcheck-amd64-linux",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/memcheck-x86-linux",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cp0-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cp0-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cp0.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-cpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-fpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-fpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-fpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/mips-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-altivec-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-altivec-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-altivec.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-fpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-fpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-fpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/power64-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/powerpc-altivec32l-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/powerpc-altivec32l.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/powerpc-altivec64l-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/powerpc-altivec64l.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-acr-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-acr-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-acr.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-fpr-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-fpr-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390-fpr.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-core64-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-core64-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-core64.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-generic-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-generic.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-linux64-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-linux64-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/s390x-linux64.xml",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/vgpreload_core-amd64-linux.so",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/vgpreload_core-x86-linux.so",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/vgpreload_memcheck-amd64-linux.so",
+      "../../chromium/src/third_party/valgrind/linux_x64/lib/valgrind/vgpreload_memcheck-x86-linux.so",
+    ]
+  } else if (target_cpu == "x86") {
+    valgrind_binaries += [
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/ms_print",
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/no_op_client_for_valgrind",
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/valgrind",
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/valgrind-listener",
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/valgrind-tsan.sh",
+      "../../chromium/src/third_party/valgrind/linux_x86/bin/vgdb",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-sse-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-sse-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/32bit-sse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-avx-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-avx-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-avx.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-sse-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-sse-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/64bit-sse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-avx-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-avx-coresse.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-avx-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-avx-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/amd64-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-vfpv3-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-vfpv3-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-vfpv3.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-with-vfpv3-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/arm-with-vfpv3.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/default.supp",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/i386-coresse-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/i386-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/memcheck-x86-linux",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cp0-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cp0-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cp0.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-cpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-fpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-fpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-fpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-linux-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/mips-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-altivec-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-altivec-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-altivec.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-fpu-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-fpu-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-fpu.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-core-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-core-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-core.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-linux-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-linux-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/power64-linux.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/powerpc-altivec32l-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/powerpc-altivec32l.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/powerpc-altivec64l-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/powerpc-altivec64l.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-acr-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-acr-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-acr.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-fpr-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-fpr-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390-fpr.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-core64-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-core64-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-core64.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-generic-valgrind.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-generic.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-linux64-valgrind-s1.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-linux64-valgrind-s2.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/s390x-linux64.xml",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/vgpreload_core-x86-linux.so",
+      "../../chromium/src/third_party/valgrind/linux_x86/lib/valgrind/vgpreload_memcheck-x86-linux.so",
+    ]
+  }
+}
diff --git a/tools/valgrind-webrtc/valgrind-webrtc.gni b/tools/valgrind-webrtc/valgrind-webrtc.gni
new file mode 100644
index 0000000..1a5b8de
--- /dev/null
+++ b/tools/valgrind-webrtc/valgrind-webrtc.gni
@@ -0,0 +1,32 @@
+# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# TODO(ehmaldonado): Replace by the new paths once the upstream changes land.
+# See https://codereview.chromium.org/2526883002/ for valgrind-binaries.gni and
+# https://codereview.chromium.org/2517953007/ for python-google.gni and
+# valgrind.gni
+import("python-google.gni")
+import("valgrind-binaries.gni")
+import("valgrind.gni")
+
+valgrind_webrtc_dependencies = [
+  "../../tools/valgrind-webrtc/gtest_exclude/modules_tests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/modules_unittests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/peerconnection_unittests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/rtc_media_unittests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/rtc_media_unittests.gtest-memcheck_mac.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/rtc_pc_unittests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/rtc_unittests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/video_engine_tests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/gtest_exclude/webrtc_nonparallel_tests.gtest-memcheck.txt",
+  "../../tools/valgrind-webrtc/memcheck/suppressions.txt",
+  "../../tools/valgrind-webrtc/memcheck/suppressions_mac.txt",
+  "../../tools/valgrind-webrtc/memcheck/suppressions_win32.txt",
+  "../../tools/valgrind-webrtc/webrtc_tests.py",
+  "../../tools/valgrind-webrtc/webrtc_tests.sh",
+] + valgrind_dependencies + valgrind_binaries + python_google
diff --git a/tools/valgrind-webrtc/valgrind.gni b/tools/valgrind-webrtc/valgrind.gni
new file mode 100644
index 0000000..52be8e4
--- /dev/null
+++ b/tools/valgrind-webrtc/valgrind.gni
@@ -0,0 +1,68 @@
+# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+import("//build_overrides/build.gni")
+
+valgrind_dependencies = [
+  "../../tools/valgrind/asan/asan_symbolize.py",
+  "../../tools/valgrind/asan/third_party/__init__.py",
+  "../../tools/valgrind/asan/third_party/asan_symbolize.py",
+  "../../tools/valgrind/browser_wrapper_win.py",
+  "../../tools/valgrind/chrome_tests.bat",
+  "../../tools/valgrind/chrome_tests.py",
+  "../../tools/valgrind/chrome_tests.sh",
+  "../../tools/valgrind/common.py",
+  "../../tools/valgrind/drmemory.bat",
+  "../../tools/valgrind/drmemory_analyze.py",
+  "../../tools/valgrind/fixed_suppressions.sh",
+  "../../tools/valgrind/gdb_helper.py",
+  "../../tools/valgrind/locate_valgrind.sh",
+  "../../tools/valgrind/memcheck/suppressions.txt",
+  "../../tools/valgrind/memcheck/suppressions_linux.txt",
+  "../../tools/valgrind/memcheck_analyze.py",
+  "../../tools/valgrind/regrind.sh",
+  "../../tools/valgrind/scan-build.py",
+  "../../tools/valgrind/suppressions.py",
+  "../../tools/valgrind/test_suppressions.py",
+  "../../tools/valgrind/unused_suppressions.py",
+  "../../tools/valgrind/valgrind.sh",
+  "../../tools/valgrind/valgrind_test.py",
+  "../../tools/valgrind/waterfall.sh",
+]
+
+if (build_with_chromium) {
+  valgrind_dependencies += [
+    "../../tools/valgrind/gtest_exclude/ash_unittests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/aura_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/base_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/base_unittests.gtest_win-8.txt",
+    "../../tools/valgrind/gtest_exclude/base_unittests.gtest_win32.txt",
+    "../../tools/valgrind/gtest_exclude/blink_platform_unittests.gtest_win32.txt",
+    "../../tools/valgrind/gtest_exclude/browser_tests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/chromeos_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/components_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/content_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/extensions_unittests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/interactive_ui_tests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/ipc_tests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/media_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/message_center_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/net_unittests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/net_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/net_unittests.gtest_linux.txt",
+    "../../tools/valgrind/gtest_exclude/remoting_unittests.gtest_win-8.txt",
+    "../../tools/valgrind/gtest_exclude/sandbox_linux_unittests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/suppressions.txt",
+    "../../tools/valgrind/gtest_exclude/sync_unit_tests.gtest-asan.txt",
+    "../../tools/valgrind/gtest_exclude/ui_base_unittests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/ui_unittests.gtest-memcheck_linux.txt",
+    "../../tools/valgrind/gtest_exclude/unit_tests.gtest-memcheck.txt",
+    "../../tools/valgrind/gtest_exclude/unit_tests.gtest.txt",
+    "../../tools/valgrind/gtest_exclude/unit_tests.gtest_linux.txt",
+  ]
+}
diff --git a/webrtc/build/mb_config.pyl b/webrtc/build/mb_config.pyl
index 2a86e62..fceca60 100644
--- a/webrtc/build/mb_config.pyl
+++ b/webrtc/build/mb_config.pyl
@@ -40,7 +40,7 @@
       'Linux64 Debug': 'debug_bot_x64',
       'Linux64 Release': 'release_bot_x64',
       'Linux Asan': 'asan_lsan_clang_release_bot_x64',
-      'Linux Memcheck': 'release_bot_x64',
+      'Linux Memcheck': 'memcheck_release_bot_x64',
       'Linux MSan': 'msan_clang_release_bot_x64',
       'Linux Tsan v2': 'tsan_clang_release_bot_x64',
       'Linux UBSan': 'ubsan_clang_release_bot_x64',
@@ -231,6 +231,9 @@
     'perf_release_bot_x64': [
       'gn', 'openh264', 'release', 'static', 'goma', 'x64'
     ],
+    'memcheck_release_bot_x64': [
+      'memcheck', 'gn', 'openh264_release_bot', 'x64'
+    ],
 
     # Windows
     'win_clang_debug_bot_x86': [
@@ -368,6 +371,10 @@
       'gn_args': 'is_lsan=true',
     },
 
+    'memcheck': {
+      'gn_args': 'rtc_use_memcheck=true',
+    },
+
     'minimal_symbols': {
       'gn_args': 'symbol_level=1',
     },
diff --git a/webrtc/build/webrtc.gni b/webrtc/build/webrtc.gni
index 5ab5d35..17405c3 100644
--- a/webrtc/build/webrtc.gni
+++ b/webrtc/build/webrtc.gni
@@ -118,6 +118,10 @@
   # use file-based audio playout and record.
   rtc_use_dummy_audio_file_devices = false
 
+  # When set to true, test targets will declare the files needed to run memcheck
+  # as data dependencies. This is to enable memcheck execution on swarming bots.
+  rtc_use_memcheck = false
+
   # FFmpeg must be initialized for |H264DecoderImpl| to work. This can be done
   # by WebRTC during |H264DecoderImpl::InitDecode| or externally. FFmpeg must
   # only be initialized once. Projects that initialize FFmpeg externally, such
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index 126857b..c7c6458 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -11,6 +11,9 @@
 if (is_android) {
   import("//build/config/android/rules.gni")
 }
+if (rtc_use_memcheck) {
+  import("//tools/valgrind-webrtc/valgrind-webrtc.gni")
+}
 
 group("test") {
   testonly = true
@@ -151,6 +154,10 @@
   if (is_android) {
     deps += [ "//base:base" ]
   }
+
+  if (rtc_use_memcheck) {
+    data = valgrind_webrtc_dependencies
+  }
 }
 
 # Depend on this target when you want to have test_support but also the