diff --git a/DEPS b/DEPS
index 364eebba2e5ee..67a3747738547 100644
--- a/DEPS
+++ b/DEPS
@@ -930,6 +930,7 @@ hooks = [
                '--output-dir=src/third_party/syzygy/binaries',
                '--revision=ba2ce2c31c16fe53b337121ec480fc5d4dfb4eec',
                '--overwrite',
+               '--copy-dia-binaries',
     ],
   },
   # TODO(pmonette): Move include files out of binaries folder.
diff --git a/build/get_syzygy_binaries.py b/build/get_syzygy_binaries.py
index 1cab3fcf48dfd..8101dcdf960c8 100755
--- a/build/get_syzygy_binaries.py
+++ b/build/get_syzygy_binaries.py
@@ -48,6 +48,10 @@ _RESOURCES = [
       lambda x: x.filename.endswith('.dll.pdb'))]
 
 
+# Name of the MS DIA dll that we need to copy to the binaries directory.
+_DIA_DLL_NAME = "msdia140.dll"
+
+
 def _LoadState(output_dir):
   """Loads the contents of the state file for a given |output_dir|, returning
   None if it doesn't exist.
@@ -282,6 +286,31 @@ def _Download(resource):
   return tmp[1]
 
 
+def _MaybeCopyDIABinaries(options, contents):
+  """Try to copy the DIA DLL to the binaries exe directory."""
+  toolchain_data_file = os.path.join(os.path.dirname(__file__),
+                                     'win_toolchain.json')
+  if not os.path.exists(toolchain_data_file):
+    _LOGGER.debug('Toolchain JSON data file doesn\'t exist, skipping.')
+    return
+  with open(toolchain_data_file) as temp_f:
+    toolchain_data = json.load(temp_f)
+  if not os.path.isdir(toolchain_data['path']):
+    _LOGGER.error('The toolchain JSON file is invalid.')
+    return
+  dia_sdk_binaries_dir = os.path.join(toolchain_data['path'], 'DIA SDK', 'bin')
+  dia_dll = os.path.join(dia_sdk_binaries_dir, _DIA_DLL_NAME)
+  if not os.path.exists(dia_dll):
+    _LOGGER.debug('%s is missing, skipping.')
+    return
+  dia_dll_dest = os.path.join(options.output_dir, 'exe', _DIA_DLL_NAME)
+  _LOGGER.debug('Copying %s to %s.' % (dia_dll, dia_dll_dest))
+  if not options.dry_run:
+    shutil.copy(dia_dll, dia_dll_dest)
+    contents[os.path.relpath(dia_dll_dest, options.output_dir)] = (
+        _Md5(dia_dll_dest))
+
+
 def _InstallBinaries(options, deleted={}):
   """Installs Syzygy binaries. This assumes that the output directory has
   already been cleaned, as it will refuse to overwrite existing files."""
@@ -336,6 +365,10 @@ def _InstallBinaries(options, deleted={}):
     _LOGGER.debug('Removing temporary file "%s".', path)
     os.remove(path)
 
+  if options.copy_dia_binaries:
+    # Try to copy the DIA binaries to the binaries directory.
+    _MaybeCopyDIABinaries(options, contents)
+
   return state
 
 
@@ -367,6 +400,9 @@ def _ParseCommandLine():
   option_parser.add_option('--quiet', dest='log_level', action='store_const',
       default=logging.INFO, const=logging.ERROR,
       help='Disables all output except for errors.')
+  option_parser.add_option('--copy-dia-binaries', action='store_true',
+      default=False, help='If true then the DIA dll will get copied into the '
+                          'binaries directory if it\'s available.')
   options, args = option_parser.parse_args()
   if args:
     option_parser.error('Unexpected arguments: %s' % args)