diff --git a/build/win/chrome_win.croc b/build/win/chrome_win.croc
deleted file mode 100644
index acf8e39..0000000
--- a/build/win/chrome_win.croc
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- python -*-
-# Crocodile config file for Chromium windows
-
-{
-  # List of rules, applied in order
-  'rules' : [
-    # Specify inclusions before exclusions, since rules are in order.
-
-    # Don't include ChromeOS, posix, or linux specific files
-    {
-      'regexp' : '.*(_|/)(chromeos|linux|posix)(\\.|_)',
-      'include' : 0,
-    },
-    # Don't include ChromeOS dirs
-    {
-      'regexp' : '.*/chromeos/',
-      'include' : 0,
-    },
-
-    # Groups
-    {
-      'regexp' : '.*_test_win\\.',
-      'group' : 'test',
-    },
-  ],
-}
diff --git a/build/win/compatibility.manifest b/build/win/compatibility.manifest
deleted file mode 100644
index 10d10da..0000000
--- a/build/win/compatibility.manifest
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
-    <application>
-      <!--The ID below indicates application support for Windows Vista -->
-      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
-      <!--The ID below indicates application support for Windows 7 -->
-      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
-      <!--The ID below indicates application support for Windows 8 -->
-      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
-      <!--The ID below indicates application support for Windows 8.1 -->
-      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
-      <!--The ID below indicates application support for Windows 10 -->
-      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
-    </application>
-  </compatibility>
-</assembly>
diff --git a/build/win/dbghelp_xp/README.chromium b/build/win/dbghelp_xp/README.chromium
deleted file mode 100644
index a52cfad..0000000
--- a/build/win/dbghelp_xp/README.chromium
+++ /dev/null
@@ -1,2 +0,0 @@
-This dbghelp.dll is the redistributable version from the Windows 7 SDK, the
-last one to work on Windows XP.
diff --git a/build/win/dbghelp_xp/dbghelp.dll b/build/win/dbghelp_xp/dbghelp.dll
deleted file mode 100755
index 9f52a5d..0000000
--- a/build/win/dbghelp_xp/dbghelp.dll
+++ /dev/null
Binary files differ
diff --git a/build/win/importlibs/create_importlib_win.py b/build/win/importlibs/create_importlib_win.py
deleted file mode 100755
index b23a7c0..0000000
--- a/build/win/importlibs/create_importlib_win.py
+++ /dev/null
@@ -1,213 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-"""Creates an import library from an import description file."""
-import ast
-import logging
-import optparse
-import os
-import os.path
-import shutil
-import subprocess
-import sys
-import tempfile
-
-_USAGE = """\
-Usage: %prog [options] [imports-file]
-
-Creates an import library from imports-file.
-
-Note: this script uses the microsoft assembler (ml.exe) and the library tool
-    (lib.exe), both of which must be in path.
-"""
-
-_ASM_STUB_HEADER = """\
-; This file is autogenerated by create_importlib_win.py, do not edit.
-.386
-.MODEL FLAT, C
-.CODE
-
-; Stubs to provide mangled names to lib.exe for the
-; correct generation of import libs.
-"""
-
-_DEF_STUB_HEADER = """\
-; This file is autogenerated by create_importlib_win.py, do not edit.
-
-; Export declarations for generating import libs.
-"""
-
-_LOGGER = logging.getLogger()
-
-
-class _Error(Exception):
-    pass
-
-
-class _ImportLibraryGenerator(object):
-
-    def __init__(self, temp_dir):
-        self._temp_dir = temp_dir
-
-    def _Shell(self, cmd, **kw):
-        ret = subprocess.call(cmd, **kw)
-        _LOGGER.info('Running "%s" returned %d.', cmd, ret)
-        if ret != 0:
-            raise _Error('Command "%s" returned %d.' % (cmd, ret))
-
-    def _ReadImportsFile(self, imports_file):
-        # Slurp the imports file.
-        return ast.literal_eval(open(imports_file).read())
-
-    def _WriteStubsFile(self, import_names, output_file):
-        output_file.write(_ASM_STUB_HEADER)
-
-        for name in import_names:
-            output_file.write('%s PROC\n' % name)
-            output_file.write('%s ENDP\n' % name)
-
-        output_file.write('END\n')
-
-    def _WriteDefFile(self, dll_name, import_names, output_file):
-        output_file.write(_DEF_STUB_HEADER)
-        output_file.write('NAME %s\n' % dll_name)
-        output_file.write('EXPORTS\n')
-        for name in import_names:
-            name = name.split('@')[0]
-            output_file.write('  %s\n' % name)
-
-    def _CreateObj(self, dll_name, imports):
-        """Writes an assembly file containing empty declarations.
-
-    For each imported function of the form:
-
-    AddClipboardFormatListener@4 PROC
-    AddClipboardFormatListener@4 ENDP
-
-    The resulting object file is then supplied to lib.exe with a .def file
-    declaring the corresponding non-adorned exports as they appear on the
-    exporting DLL, e.g.
-
-    EXPORTS
-      AddClipboardFormatListener
-
-    In combination, the .def file and the .obj file cause lib.exe to generate
-    an x86 import lib with public symbols named like
-    "__imp__AddClipboardFormatListener@4", binding to exports named like
-    "AddClipboardFormatListener".
-
-    All of this is perpetrated in a temporary directory, as the intermediate
-    artifacts are quick and easy to produce, and of no interest to anyone
-    after the fact."""
-
-        # Create an .asm file to provide stdcall-like stub names to lib.exe.
-        asm_name = dll_name + '.asm'
-        _LOGGER.info('Writing asm file "%s".', asm_name)
-        with open(os.path.join(self._temp_dir, asm_name), 'wb') as stubs_file:
-            self._WriteStubsFile(imports, stubs_file)
-
-        # Invoke on the assembler to compile it to .obj.
-        obj_name = dll_name + '.obj'
-        cmdline = ['ml.exe', '/nologo', '/c', asm_name, '/Fo', obj_name]
-        self._Shell(cmdline, cwd=self._temp_dir, stdout=open(os.devnull))
-
-        return obj_name
-
-    def _CreateImportLib(self, dll_name, imports, architecture, output_file):
-        """Creates an import lib binding imports to dll_name for architecture.
-
-    On success, writes the import library to output file.
-    """
-        obj_file = None
-
-        # For x86 architecture we have to provide an object file for correct
-        # name mangling between the import stubs and the exported functions.
-        if architecture == 'x86':
-            obj_file = self._CreateObj(dll_name, imports)
-
-        # Create the corresponding .def file. This file has the non stdcall-adorned
-        # names, as exported by the destination DLL.
-        def_name = dll_name + '.def'
-        _LOGGER.info('Writing def file "%s".', def_name)
-        with open(os.path.join(self._temp_dir, def_name), 'wb') as def_file:
-            self._WriteDefFile(dll_name, imports, def_file)
-
-        # Invoke on lib.exe to create the import library.
-        # We generate everything into the temporary directory, as the .exp export
-        # files will be generated at the same path as the import library, and we
-        # don't want those files potentially gunking the works.
-        dll_base_name, ext = os.path.splitext(dll_name)
-        lib_name = dll_base_name + '.lib'
-        cmdline = [
-            'lib.exe',
-            '/machine:%s' % architecture,
-            '/def:%s' % def_name,
-            '/out:%s' % lib_name
-        ]
-        if obj_file:
-            cmdline.append(obj_file)
-
-        self._Shell(cmdline, cwd=self._temp_dir, stdout=open(os.devnull))
-
-        # Copy the .lib file to the output directory.
-        shutil.copyfile(os.path.join(self._temp_dir, lib_name), output_file)
-        _LOGGER.info('Created "%s".', output_file)
-
-    def CreateImportLib(self, imports_file, output_file):
-        # Read the imports file.
-        imports = self._ReadImportsFile(imports_file)
-
-        # Creates the requested import library in the output directory.
-        self._CreateImportLib(imports['dll_name'], imports['imports'],
-                              imports.get('architecture', 'x86'), output_file)
-
-
-def main():
-    parser = optparse.OptionParser(usage=_USAGE)
-    parser.add_option(
-        '-o', '--output-file', help='Specifies the output file path.')
-    parser.add_option(
-        '-k',
-        '--keep-temp-dir',
-        action='store_true',
-        help='Keep the temporary directory.')
-    parser.add_option(
-        '-v', '--verbose', action='store_true', help='Verbose logging.')
-
-    options, args = parser.parse_args()
-
-    if len(args) != 1:
-        parser.error('You must provide an imports file.')
-
-    if not options.output_file:
-        parser.error('You must provide an output file.')
-
-    options.output_file = os.path.abspath(options.output_file)
-
-    if options.verbose:
-        logging.basicConfig(level=logging.INFO)
-    else:
-        logging.basicConfig(level=logging.WARN)
-
-    temp_dir = tempfile.mkdtemp()
-    _LOGGER.info('Created temporary directory "%s."', temp_dir)
-    try:
-        # Create a generator and create the import lib.
-        generator = _ImportLibraryGenerator(temp_dir)
-
-        ret = generator.CreateImportLib(args[0], options.output_file)
-    except Exception, e:
-        _LOGGER.exception('Failed to create import lib.')
-        ret = 1
-    finally:
-        if not options.keep_temp_dir:
-            shutil.rmtree(temp_dir)
-            _LOGGER.info('Deleted temporary directory "%s."', temp_dir)
-
-    return ret
-
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/build/win/importlibs/filter_export_list.py b/build/win/importlibs/filter_export_list.py
deleted file mode 100755
index b1fc122..0000000
--- a/build/win/importlibs/filter_export_list.py
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-"""Help maintaining DLL import lists."""
-import ast
-import optparse
-import re
-import sys
-
-_EXPORT_RE = re.compile(
-    r"""
-  ^\s*(?P<ordinal>[0-9]+)  # The ordinal field.
-  \s+(?P<hint>[0-9A-F]+)   # The hint field.
-  \s(?P<rva>........)      # The RVA field.
-  \s+(?P<name>[^ ]+)       # And finally the name we're really after.
-""", re.VERBOSE)
-
-_USAGE = r"""\
-Usage: %prog [options] [master-file]
-
-This script filters a list of exports from a DLL, generated from something
-like the following command line:
-
-C:\> dumpbin /exports user32.dll
-
-against a master list of imports built from e.g.
-
-C:\> dumpbin /exports user32.lib
-
-The point of this is to trim non-public exports from the list, and to
-normalize the names to their stdcall-mangled form for the generation of
-import libraries.
-Note that the export names from the latter incanatation are stdcall-mangled,
-e.g. they are suffixed with "@" and the number of argument bytes to the
-function.
-"""
-
-
-def _ReadMasterFile(master_file):
-    # Slurp the master file.
-    with open(master_file) as f:
-        master_exports = ast.literal_eval(f.read())
-
-    master_mapping = {}
-    for export in master_exports:
-        name = export.split('@')[0]
-        master_mapping[name] = export
-
-    return master_mapping
-
-
-def main():
-    parser = optparse.OptionParser(usage=_USAGE)
-    parser.add_option(
-        '-r',
-        '--reverse',
-        action='store_true',
-        help='Reverse the matching, e.g. return the functions '
-        'in the master list that aren\'t in the input.')
-
-    options, args = parser.parse_args()
-    if len(args) != 1:
-        parser.error('Must provide a master file.')
-
-    master_mapping = _ReadMasterFile(args[0])
-
-    found_exports = []
-    for line in sys.stdin:
-        match = _EXPORT_RE.match(line)
-        if match:
-            export_name = master_mapping.get(match.group('name'), None)
-            if export_name:
-                found_exports.append(export_name)
-
-    if options.reverse:
-        # Invert the found_exports list.
-        found_exports = set(master_mapping.values()) - set(found_exports)
-
-    # Sort the found exports for tidy output.
-    print('\n'.join(sorted(found_exports)))
-    return 0
-
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/build/win/importlibs/x86/user32.winxp.imports b/build/win/importlibs/x86/user32.winxp.imports
deleted file mode 100644
index 24403a8..0000000
--- a/build/win/importlibs/x86/user32.winxp.imports
+++ /dev/null
@@ -1,670 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# This file is used to create a custom import library for Chrome's use of
-# user32.dll exports. The set of exports defined below
-{
-  'architecture': 'x86',
-
-  # The DLL to bind to.
-  'dll_name': 'user32.dll',
-
-  # Name of the generated import library.
-  'importlib_name': 'user32.winxp.lib',
-
-  # This is the set of exports observed on a user32.dll from Windows XP SP2.
-  # The version of the DLL where these were observed is 5.1.2600.2180.
-  # Incidentally this set of exports also coincides with Windows XP SP3, where
-  # the version of the DLL is 5.1.2600.5512.
-  # Don't add new imports here unless and until the minimal supported
-  # Windows version has been bumped past Windows XP SP2+.
-  'imports': [
-    'ActivateKeyboardLayout@8',
-    'AdjustWindowRect@12',
-    'AdjustWindowRectEx@16',
-    'AllowSetForegroundWindow@4',
-    'AnimateWindow@12',
-    'AnyPopup@0',
-    'AppendMenuA@16',
-    'AppendMenuW@16',
-    'ArrangeIconicWindows@4',
-    'AttachThreadInput@12',
-    'BeginDeferWindowPos@4',
-    'BeginPaint@8',
-    'BlockInput@4',
-    'BringWindowToTop@4',
-    'BroadcastSystemMessage@20',
-    'BroadcastSystemMessageA@20',
-    'BroadcastSystemMessageExA@24',
-    'BroadcastSystemMessageExW@24',
-    'BroadcastSystemMessageW@20',
-    'CallMsgFilter@8',
-    'CallMsgFilterA@8',
-    'CallMsgFilterW@8',
-    'CallNextHookEx@16',
-    'CallWindowProcA@20',
-    'CallWindowProcW@20',
-    'CascadeChildWindows@8',
-    'CascadeWindows@20',
-    'ChangeClipboardChain@8',
-    'ChangeDisplaySettingsA@8',
-    'ChangeDisplaySettingsExA@20',
-    'ChangeDisplaySettingsExW@20',
-    'ChangeDisplaySettingsW@8',
-    'ChangeMenuA@20',
-    'ChangeMenuW@20',
-    'CharLowerA@4',
-    'CharLowerBuffA@8',
-    'CharLowerBuffW@8',
-    'CharLowerW@4',
-    'CharNextA@4',
-    'CharNextExA@12',
-    'CharNextW@4',
-    'CharPrevA@8',
-    'CharPrevExA@16',
-    'CharPrevW@8',
-    'CharToOemA@8',
-    'CharToOemBuffA@12',
-    'CharToOemBuffW@12',
-    'CharToOemW@8',
-    'CharUpperA@4',
-    'CharUpperBuffA@8',
-    'CharUpperBuffW@8',
-    'CharUpperW@4',
-    'CheckDlgButton@12',
-    'CheckMenuItem@12',
-    'CheckMenuRadioItem@20',
-    'CheckRadioButton@16',
-    'ChildWindowFromPoint@12',
-    'ChildWindowFromPointEx@16',
-    'ClientToScreen@8',
-    'ClipCursor@4',
-    'CloseClipboard@0',
-    'CloseDesktop@4',
-    'CloseWindow@4',
-    'CloseWindowStation@4',
-    'CopyAcceleratorTableA@12',
-    'CopyAcceleratorTableW@12',
-    'CopyIcon@4',
-    'CopyImage@20',
-    'CopyRect@8',
-    'CountClipboardFormats@0',
-    'CreateAcceleratorTableA@8',
-    'CreateAcceleratorTableW@8',
-    'CreateCaret@16',
-    'CreateCursor@28',
-    'CreateDesktopA@24',
-    'CreateDesktopW@24',
-    'CreateDialogIndirectParamA@20',
-    'CreateDialogIndirectParamW@20',
-    'CreateDialogParamA@20',
-    'CreateDialogParamW@20',
-    'CreateIcon@28',
-    'CreateIconFromResource@16',
-    'CreateIconFromResourceEx@28',
-    'CreateIconIndirect@4',
-    'CreateMDIWindowA@40',
-    'CreateMDIWindowW@40',
-    'CreateMenu@0',
-    'CreatePopupMenu@0',
-    'CreateWindowExA@48',
-    'CreateWindowExW@48',
-    'CreateWindowStationA@16',
-    'CreateWindowStationW@16',
-    'DdeAbandonTransaction@12',
-    'DdeAccessData@8',
-    'DdeAddData@16',
-    'DdeClientTransaction@32',
-    'DdeCmpStringHandles@8',
-    'DdeConnect@16',
-    'DdeConnectList@20',
-    'DdeCreateDataHandle@28',
-    'DdeCreateStringHandleA@12',
-    'DdeCreateStringHandleW@12',
-    'DdeDisconnect@4',
-    'DdeDisconnectList@4',
-    'DdeEnableCallback@12',
-    'DdeFreeDataHandle@4',
-    'DdeFreeStringHandle@8',
-    'DdeGetData@16',
-    'DdeGetLastError@4',
-    'DdeImpersonateClient@4',
-    'DdeInitializeA@16',
-    'DdeInitializeW@16',
-    'DdeKeepStringHandle@8',
-    'DdeNameService@16',
-    'DdePostAdvise@12',
-    'DdeQueryConvInfo@12',
-    'DdeQueryNextServer@8',
-    'DdeQueryStringA@20',
-    'DdeQueryStringW@20',
-    'DdeReconnect@4',
-    'DdeSetQualityOfService@12',
-    'DdeSetUserHandle@12',
-    'DdeUnaccessData@4',
-    'DdeUninitialize@4',
-    'DefDlgProcA@16',
-    'DefDlgProcW@16',
-    'DefFrameProcA@20',
-    'DefFrameProcW@20',
-    'DefMDIChildProcA@16',
-    'DefMDIChildProcW@16',
-    'DefRawInputProc@12',
-    'DefWindowProcA@16',
-    'DefWindowProcW@16',
-    'DeferWindowPos@32',
-    'DeleteMenu@12',
-    'DeregisterShellHookWindow@4',
-    'DestroyAcceleratorTable@4',
-    'DestroyCaret@0',
-    'DestroyCursor@4',
-    'DestroyIcon@4',
-    'DestroyMenu@4',
-    'DestroyWindow@4',
-    'DialogBoxIndirectParamA@20',
-    'DialogBoxIndirectParamW@20',
-    'DialogBoxParamA@20',
-    'DialogBoxParamW@20',
-    'DisableProcessWindowsGhosting@0',
-    'DispatchMessageA@4',
-    'DispatchMessageW@4',
-    'DlgDirListA@20',
-    'DlgDirListComboBoxA@20',
-    'DlgDirListComboBoxW@20',
-    'DlgDirListW@20',
-    'DlgDirSelectComboBoxExA@16',
-    'DlgDirSelectComboBoxExW@16',
-    'DlgDirSelectExA@16',
-    'DlgDirSelectExW@16',
-    'DragDetect@12',
-    'DragObject@20',
-    'DrawAnimatedRects@16',
-    'DrawCaption@16',
-    'DrawEdge@16',
-    'DrawFocusRect@8',
-    'DrawFrame@16',
-    'DrawFrameControl@16',
-    'DrawIcon@16',
-    'DrawIconEx@36',
-    'DrawMenuBar@4',
-    'DrawStateA@40',
-    'DrawStateW@40',
-    'DrawTextA@20',
-    'DrawTextExA@24',
-    'DrawTextExW@24',
-    'DrawTextW@20',
-    'EditWndProc@16',
-    'EmptyClipboard@0',
-    'EnableMenuItem@12',
-    'EnableScrollBar@12',
-    'EnableWindow@8',
-    'EndDeferWindowPos@4',
-    'EndDialog@8',
-    'EndMenu@0',
-    'EndPaint@8',
-    'EndTask@12',
-    'EnumChildWindows@12',
-    'EnumClipboardFormats@4',
-    'EnumDesktopWindows@12',
-    'EnumDesktopsA@12',
-    'EnumDesktopsW@12',
-    'EnumDisplayDevicesA@16',
-    'EnumDisplayDevicesW@16',
-    'EnumDisplayMonitors@16',
-    'EnumDisplaySettingsA@12',
-    'EnumDisplaySettingsExA@16',
-    'EnumDisplaySettingsExW@16',
-    'EnumDisplaySettingsW@12',
-    'EnumPropsA@8',
-    'EnumPropsExA@12',
-    'EnumPropsExW@12',
-    'EnumPropsW@8',
-    'EnumThreadWindows@12',
-    'EnumWindowStationsA@8',
-    'EnumWindowStationsW@8',
-    'EnumWindows@8',
-    'EqualRect@8',
-    'ExcludeUpdateRgn@8',
-    'ExitWindowsEx@8',
-    'FillRect@12',
-    'FindWindowA@8',
-    'FindWindowExA@16',
-    'FindWindowExW@16',
-    'FindWindowW@8',
-    'FlashWindow@8',
-    'FlashWindowEx@4',
-    'FrameRect@12',
-    'FreeDDElParam@8',
-    'GetActiveWindow@0',
-    'GetAltTabInfo@20',
-    'GetAltTabInfoA@20',
-    'GetAltTabInfoW@20',
-    'GetAncestor@8',
-    'GetAsyncKeyState@4',
-    'GetCapture@0',
-    'GetCaretBlinkTime@0',
-    'GetCaretPos@4',
-    'GetClassInfoA@12',
-    'GetClassInfoExA@12',
-    'GetClassInfoExW@12',
-    'GetClassInfoW@12',
-    'GetClassLongA@8',
-    'GetClassLongW@8',
-    'GetClassNameA@12',
-    'GetClassNameW@12',
-    'GetClassWord@8',
-    'GetClientRect@8',
-    'GetClipCursor@4',
-    'GetClipboardData@4',
-    'GetClipboardFormatNameA@12',
-    'GetClipboardFormatNameW@12',
-    'GetClipboardOwner@0',
-    'GetClipboardSequenceNumber@0',
-    'GetClipboardViewer@0',
-    'GetComboBoxInfo@8',
-    'GetCursor@0',
-    'GetCursorInfo@4',
-    'GetCursorPos@4',
-    'GetDC@4',
-    'GetDCEx@12',
-    'GetDesktopWindow@0',
-    'GetDialogBaseUnits@0',
-    'GetDlgCtrlID@4',
-    'GetDlgItem@8',
-    'GetDlgItemInt@16',
-    'GetDlgItemTextA@16',
-    'GetDlgItemTextW@16',
-    'GetDoubleClickTime@0',
-    'GetFocus@0',
-    'GetForegroundWindow@0',
-    'GetGUIThreadInfo@8',
-    'GetGuiResources@8',
-    'GetIconInfo@8',
-    'GetInputDesktop@0',
-    'GetInputState@0',
-    'GetKBCodePage@0',
-    'GetKeyNameTextA@12',
-    'GetKeyNameTextW@12',
-    'GetKeyState@4',
-    'GetKeyboardLayout@4',
-    'GetKeyboardLayoutList@8',
-    'GetKeyboardLayoutNameA@4',
-    'GetKeyboardLayoutNameW@4',
-    'GetKeyboardState@4',
-    'GetKeyboardType@4',
-    'GetLastActivePopup@4',
-    'GetLastInputInfo@4',
-    'GetLayeredWindowAttributes@16',
-    'GetListBoxInfo@4',
-    'GetMenu@4',
-    'GetMenuBarInfo@16',
-    'GetMenuCheckMarkDimensions@0',
-    'GetMenuContextHelpId@4',
-    'GetMenuDefaultItem@12',
-    'GetMenuInfo@8',
-    'GetMenuItemCount@4',
-    'GetMenuItemID@8',
-    'GetMenuItemInfoA@16',
-    'GetMenuItemInfoW@16',
-    'GetMenuItemRect@16',
-    'GetMenuState@12',
-    'GetMenuStringA@20',
-    'GetMenuStringW@20',
-    'GetMessageA@16',
-    'GetMessageExtraInfo@0',
-    'GetMessagePos@0',
-    'GetMessageTime@0',
-    'GetMessageW@16',
-    'GetMonitorInfoA@8',
-    'GetMonitorInfoW@8',
-    'GetMouseMovePointsEx@20',
-    'GetNextDlgGroupItem@12',
-    'GetNextDlgTabItem@12',
-    'GetOpenClipboardWindow@0',
-    'GetParent@4',
-    'GetPriorityClipboardFormat@8',
-    'GetProcessDefaultLayout@4',
-    'GetProcessWindowStation@0',
-    'GetPropA@8',
-    'GetPropW@8',
-    'GetQueueStatus@4',
-    'GetRawInputBuffer@12',
-    'GetRawInputData@20',
-    'GetRawInputDeviceInfoA@16',
-    'GetRawInputDeviceInfoW@16',
-    'GetRawInputDeviceList@12',
-    'GetRegisteredRawInputDevices@12',
-    'GetScrollBarInfo@12',
-    'GetScrollInfo@12',
-    'GetScrollPos@8',
-    'GetScrollRange@16',
-    'GetShellWindow@0',
-    'GetSubMenu@8',
-    'GetSysColor@4',
-    'GetSysColorBrush@4',
-    'GetSystemMenu@8',
-    'GetSystemMetrics@4',
-    'GetTabbedTextExtentA@20',
-    'GetTabbedTextExtentW@20',
-    'GetThreadDesktop@4',
-    'GetTitleBarInfo@8',
-    'GetTopWindow@4',
-    'GetUpdateRect@12',
-    'GetUpdateRgn@12',
-    'GetUserObjectInformationA@20',
-    'GetUserObjectInformationW@20',
-    'GetUserObjectSecurity@20',
-    'GetWindow@8',
-    'GetWindowContextHelpId@4',
-    'GetWindowDC@4',
-    'GetWindowInfo@8',
-    'GetWindowLongA@8',
-    'GetWindowLongW@8',
-    'GetWindowModuleFileName@12',
-    'GetWindowModuleFileNameA@12',
-    'GetWindowModuleFileNameW@12',
-    'GetWindowPlacement@8',
-    'GetWindowRect@8',
-    'GetWindowRgn@8',
-    'GetWindowRgnBox@8',
-    'GetWindowTextA@12',
-    'GetWindowTextLengthA@4',
-    'GetWindowTextLengthW@4',
-    'GetWindowTextW@12',
-    'GetWindowThreadProcessId@8',
-    'GetWindowWord@8',
-    'GrayStringA@36',
-    'GrayStringW@36',
-    'HideCaret@4',
-    'HiliteMenuItem@16',
-    'IMPGetIMEA@8',
-    'IMPGetIMEW@8',
-    'IMPQueryIMEA@4',
-    'IMPQueryIMEW@4',
-    'IMPSetIMEA@8',
-    'IMPSetIMEW@8',
-    'ImpersonateDdeClientWindow@8',
-    'InSendMessage@0',
-    'InSendMessageEx@4',
-    'InflateRect@12',
-    'InsertMenuA@20',
-    'InsertMenuItemA@16',
-    'InsertMenuItemW@16',
-    'InsertMenuW@20',
-    'InternalGetWindowText@12',
-    'IntersectRect@12',
-    'InvalidateRect@12',
-    'InvalidateRgn@12',
-    'InvertRect@8',
-    'IsCharAlphaA@4',
-    'IsCharAlphaNumericA@4',
-    'IsCharAlphaNumericW@4',
-    'IsCharAlphaW@4',
-    'IsCharLowerA@4',
-    'IsCharLowerW@4',
-    'IsCharUpperA@4',
-    'IsCharUpperW@4',
-    'IsChild@8',
-    'IsClipboardFormatAvailable@4',
-    'IsDialogMessage@8',
-    'IsDialogMessageA@8',
-    'IsDialogMessageW@8',
-    'IsDlgButtonChecked@8',
-    'IsGUIThread@4',
-    'IsHungAppWindow@4',
-    'IsIconic@4',
-    'IsMenu@4',
-    'IsRectEmpty@4',
-    'IsWinEventHookInstalled@4',
-    'IsWindow@4',
-    'IsWindowEnabled@4',
-    'IsWindowUnicode@4',
-    'IsWindowVisible@4',
-    'IsZoomed@4',
-    'KillTimer@8',
-    'LoadAcceleratorsA@8',
-    'LoadAcceleratorsW@8',
-    'LoadBitmapA@8',
-    'LoadBitmapW@8',
-    'LoadCursorA@8',
-    'LoadCursorFromFileA@4',
-    'LoadCursorFromFileW@4',
-    'LoadCursorW@8',
-    'LoadIconA@8',
-    'LoadIconW@8',
-    'LoadImageA@24',
-    'LoadImageW@24',
-    'LoadKeyboardLayoutA@8',
-    'LoadKeyboardLayoutW@8',
-    'LoadMenuA@8',
-    'LoadMenuIndirectA@4',
-    'LoadMenuIndirectW@4',
-    'LoadMenuW@8',
-    'LoadStringA@16',
-    'LoadStringW@16',
-    'LockSetForegroundWindow@4',
-    'LockWindowUpdate@4',
-    'LockWorkStation@0',
-    'LookupIconIdFromDirectory@8',
-    'LookupIconIdFromDirectoryEx@20',
-    'MapDialogRect@8',
-    'MapVirtualKeyA@8',
-    'MapVirtualKeyExA@12',
-    'MapVirtualKeyExW@12',
-    'MapVirtualKeyW@8',
-    'MapWindowPoints@16',
-    'MenuItemFromPoint@16',
-    'MessageBeep@4',
-    'MessageBoxA@16',
-    'MessageBoxExA@20',
-    'MessageBoxExW@20',
-    'MessageBoxIndirectA@4',
-    'MessageBoxIndirectW@4',
-    'MessageBoxTimeoutA@24',
-    'MessageBoxTimeoutW@24',
-    'MessageBoxW@16',
-    'ModifyMenuA@20',
-    'ModifyMenuW@20',
-    'MonitorFromPoint@12',
-    'MonitorFromRect@8',
-    'MonitorFromWindow@8',
-    'MoveWindow@24',
-    'MsgWaitForMultipleObjects@20',
-    'MsgWaitForMultipleObjectsEx@20',
-    'NotifyWinEvent@16',
-    'OemKeyScan@4',
-    'OemToCharA@8',
-    'OemToCharBuffA@12',
-    'OemToCharBuffW@12',
-    'OemToCharW@8',
-    'OffsetRect@12',
-    'OpenClipboard@4',
-    'OpenDesktopA@16',
-    'OpenDesktopW@16',
-    'OpenIcon@4',
-    'OpenInputDesktop@12',
-    'OpenWindowStationA@12',
-    'OpenWindowStationW@12',
-    'PackDDElParam@12',
-    'PaintDesktop@4',
-    'PeekMessageA@20',
-    'PeekMessageW@20',
-    'PostMessageA@16',
-    'PostMessageW@16',
-    'PostQuitMessage@4',
-    'PostThreadMessageA@16',
-    'PostThreadMessageW@16',
-    'PrintWindow@12',
-    'PrivateExtractIconsA@32',
-    'PrivateExtractIconsW@32',
-    'PtInRect@12',
-    'RealChildWindowFromPoint@12',
-    'RealGetWindowClass@12',
-    'RealGetWindowClassA@12',
-    'RealGetWindowClassW@12',
-    'RedrawWindow@16',
-    'RegisterClassA@4',
-    'RegisterClassExA@4',
-    'RegisterClassExW@4',
-    'RegisterClassW@4',
-    'RegisterClipboardFormatA@4',
-    'RegisterClipboardFormatW@4',
-    'RegisterDeviceNotificationA@12',
-    'RegisterDeviceNotificationW@12',
-    'RegisterHotKey@16',
-    'RegisterRawInputDevices@12',
-    'RegisterShellHookWindow@4',
-    'RegisterWindowMessageA@4',
-    'RegisterWindowMessageW@4',
-    'ReleaseCapture@0',
-    'ReleaseDC@8',
-    'RemoveMenu@12',
-    'RemovePropA@8',
-    'RemovePropW@8',
-    'ReplyMessage@4',
-    'ReuseDDElParam@20',
-    'ScreenToClient@8',
-    'ScrollDC@28',
-    'ScrollWindow@20',
-    'ScrollWindowEx@32',
-    'SendDlgItemMessageA@20',
-    'SendDlgItemMessageW@20',
-    'SendIMEMessageExA@8',
-    'SendIMEMessageExW@8',
-    'SendInput@12',
-    'SendMessageA@16',
-    'SendMessageCallbackA@24',
-    'SendMessageCallbackW@24',
-    'SendMessageTimeoutA@28',
-    'SendMessageTimeoutW@28',
-    'SendMessageW@16',
-    'SendNotifyMessageA@16',
-    'SendNotifyMessageW@16',
-    'SetActiveWindow@4',
-    'SetCapture@4',
-    'SetCaretBlinkTime@4',
-    'SetCaretPos@8',
-    'SetClassLongA@12',
-    'SetClassLongW@12',
-    'SetClassWord@12',
-    'SetClipboardData@8',
-    'SetClipboardViewer@4',
-    'SetCursor@4',
-    'SetCursorPos@8',
-    'SetDebugErrorLevel@4',
-    'SetDeskWallpaper@4',
-    'SetDlgItemInt@16',
-    'SetDlgItemTextA@12',
-    'SetDlgItemTextW@12',
-    'SetDoubleClickTime@4',
-    'SetFocus@4',
-    'SetForegroundWindow@4',
-    'SetKeyboardState@4',
-    'SetLastErrorEx@8',
-    'SetLayeredWindowAttributes@16',
-    'SetMenu@8',
-    'SetMenuContextHelpId@8',
-    'SetMenuDefaultItem@12',
-    'SetMenuInfo@8',
-    'SetMenuItemBitmaps@20',
-    'SetMenuItemInfoA@16',
-    'SetMenuItemInfoW@16',
-    'SetMessageExtraInfo@4',
-    'SetMessageQueue@4',
-    'SetParent@8',
-    'SetProcessDefaultLayout@4',
-    'SetProcessWindowStation@4',
-    'SetPropA@12',
-    'SetPropW@12',
-    'SetRect@20',
-    'SetRectEmpty@4',
-    'SetScrollInfo@16',
-    'SetScrollPos@16',
-    'SetScrollRange@20',
-    'SetShellWindow@4',
-    'SetSysColors@12',
-    'SetSystemCursor@8',
-    'SetThreadDesktop@4',
-    'SetTimer@16',
-    'SetUserObjectInformationA@16',
-    'SetUserObjectInformationW@16',
-    'SetUserObjectSecurity@12',
-    'SetWinEventHook@28',
-    'SetWindowContextHelpId@8',
-    'SetWindowLongA@12',
-    'SetWindowLongW@12',
-    'SetWindowPlacement@8',
-    'SetWindowPos@28',
-    'SetWindowRgn@12',
-    'SetWindowTextA@8',
-    'SetWindowTextW@8',
-    'SetWindowWord@12',
-    'SetWindowsHookA@8',
-    'SetWindowsHookExA@16',
-    'SetWindowsHookExW@16',
-    'SetWindowsHookW@8',
-    'ShowCaret@4',
-    'ShowCursor@4',
-    'ShowOwnedPopups@8',
-    'ShowScrollBar@12',
-    'ShowWindow@8',
-    'ShowWindowAsync@8',
-    'SubtractRect@12',
-    'SwapMouseButton@4',
-    'SwitchDesktop@4',
-    'SwitchToThisWindow@8',
-    'SystemParametersInfoA@16',
-    'SystemParametersInfoW@16',
-    'TabbedTextOutA@32',
-    'TabbedTextOutW@32',
-    'TileChildWindows@8',
-    'TileWindows@20',
-    'ToAscii@20',
-    'ToAsciiEx@24',
-    'ToUnicode@24',
-    'ToUnicodeEx@28',
-    'TrackMouseEvent@4',
-    'TrackPopupMenu@28',
-    'TrackPopupMenuEx@24',
-    'TranslateAccelerator@12',
-    'TranslateAcceleratorA@12',
-    'TranslateAcceleratorW@12',
-    'TranslateMDISysAccel@8',
-    'TranslateMessage@4',
-    'UnhookWinEvent@4',
-    'UnhookWindowsHook@8',
-    'UnhookWindowsHookEx@4',
-    'UnionRect@12',
-    'UnloadKeyboardLayout@4',
-    'UnpackDDElParam@16',
-    'UnregisterClassA@8',
-    'UnregisterClassW@8',
-    'UnregisterDeviceNotification@4',
-    'UnregisterHotKey@8',
-    'UpdateLayeredWindow@36',
-    'UpdateWindow@4',
-    'UserHandleGrantAccess@12',
-    'ValidateRect@8',
-    'ValidateRgn@8',
-    'VkKeyScanA@4',
-    'VkKeyScanExA@8',
-    'VkKeyScanExW@8',
-    'VkKeyScanW@4',
-    'WINNLSEnableIME@8',
-    'WINNLSGetEnableStatus@4',
-    'WINNLSGetIMEHotkey@4',
-    'WaitForInputIdle@8',
-    'WaitMessage@0',
-    'WinHelpA@16',
-    'WinHelpW@16',
-    'WindowFromDC@4',
-    'WindowFromPoint@8',
-    'keybd_event@16',
-    'mouse_event@20',
-    'wsprintfA',
-    'wsprintfW',
-    'wvsprintfA@12',
-    'wvsprintfW@12',
-  ]
-}
diff --git a/build/win/importlibs/x86/user32.winxp.lib b/build/win/importlibs/x86/user32.winxp.lib
deleted file mode 100644
index deb5577..0000000
--- a/build/win/importlibs/x86/user32.winxp.lib
+++ /dev/null
Binary files differ
diff --git a/build/win/reorder-imports.py b/build/win/reorder-imports.py
deleted file mode 100755
index 45c4c9a..0000000
--- a/build/win/reorder-imports.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import glob
-import optparse
-import os
-import shutil
-import subprocess
-import sys
-
-
-def reorder_imports(input_dir, output_dir, architecture):
-    """Run swapimports.exe on the initial chrome.exe, and write to the output
-  directory. Also copy over any related files that might be needed
-  (pdbs, manifests etc.).
-  """
-
-    input_image = os.path.join(input_dir, 'chrome.exe')
-    output_image = os.path.join(output_dir, 'chrome.exe')
-
-    swap_exe = os.path.join(
-        __file__,
-        '..\\..\\..\\third_party\\syzygy\\binaries\\exe\\swapimport.exe')
-
-    args = [
-        swap_exe,
-        '--input-image=%s' % input_image,
-        '--output-image=%s' % output_image, '--overwrite', '--no-logo'
-    ]
-
-    if architecture == 'x64':
-        args.append('--x64')
-
-    args.append('chrome_elf.dll')
-
-    subprocess.call(args)
-
-    for fname in glob.iglob(os.path.join(input_dir, 'chrome.exe.*')):
-        shutil.copy(fname, os.path.join(output_dir, os.path.basename(fname)))
-    return 0
-
-
-def main(argv):
-    usage = 'reorder_imports.py -i <input_dir> -o <output_dir> -a <target_arch>'
-    parser = optparse.OptionParser(usage=usage)
-    parser.add_option(
-        '-i', '--input', help='reorder chrome.exe in DIR', metavar='DIR')
-    parser.add_option(
-        '-o', '--output', help='write new chrome.exe to DIR', metavar='DIR')
-    parser.add_option(
-        '-a', '--arch', help='architecture of build (optional)', default='ia32')
-    opts, args = parser.parse_args()
-
-    if not opts.input or not opts.output:
-        parser.error('Please provide and input and output directory')
-    return reorder_imports(opts.input, opts.output, opts.arch)
-
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))
diff --git a/build/win/use_ansi_codes.py b/build/win/use_ansi_codes.py
deleted file mode 100755
index c453c7b..0000000
--- a/build/win/use_ansi_codes.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (c) 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Prints if the terminal is likely to understand ANSI codes."""
-
-import os
-
-# Add more terminals here as needed.
-print('ANSICON' in os.environ)
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index bbbcbc6b..53269b2 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -421,9 +421,7 @@
         }
       }
       steps.add(const EnsureNoErrors());
-      if (!skipVm) {
-        steps.add(const WriteDill());
-      }
+      steps.add(new WriteDill(skipVm: skipVm));
       if (semiFuzz) {
         steps.add(const FuzzCompiles());
       }
@@ -826,6 +824,11 @@
   @override
   Future<Result<ComponentResult>> run(
       ComponentResult result, FastaContext context) async {
+    Uri? outputUri = result.outputUri;
+    if (outputUri == null) {
+      return pass(result);
+    }
+
     FolderOptions folderOptions =
         context.computeFolderOptions(result.description);
     Map<ExperimentalFlag, bool> experimentalFlags = folderOptions
diff --git a/pkg/front_end/test/flutter_gallery_leak_tester.dart b/pkg/front_end/test/flutter_gallery_leak_tester.dart
index 84fe990..d7e9630 100644
--- a/pkg/front_end/test/flutter_gallery_leak_tester.dart
+++ b/pkg/front_end/test/flutter_gallery_leak_tester.dart
@@ -111,20 +111,13 @@
         ".pub-cache/hosted/pub.dartlang.org/");
     Directory pubDir = new Directory.fromUri(pubDirUri);
     if (!pubDir.existsSync()) throw "Expected to find $pubDir";
-    File galleryDotPackages = new File("$rootPath/gallery/.packages");
-    if (!galleryDotPackages.existsSync()) {
-      throw "Didn't find $galleryDotPackages";
-    }
-    String data = galleryDotPackages.readAsStringSync();
-    data = data.replaceAll(pubDirUri.toString(), "pub/");
-    galleryDotPackages.writeAsStringSync(data);
 
     File galleryPackageConfig =
         new File("$rootPath/gallery/.dart_tool/package_config.json");
     if (!galleryPackageConfig.existsSync()) {
       throw "Didn't find $galleryPackageConfig";
     }
-    data = galleryPackageConfig.readAsStringSync();
+    String data = galleryPackageConfig.readAsStringSync();
     data = data.replaceAll(pubDirUri.toString(), "../pub/");
     galleryPackageConfig.writeAsStringSync(data);
 
@@ -146,9 +139,10 @@
     print("Exit code from ln: $processExitCode");
   }
 
-  File galleryDotPackages = new File("$rootPath/gallery/.packages");
-  if (!galleryDotPackages.existsSync()) {
-    throw "Didn't find $galleryDotPackages";
+  File packageConfig =
+      new File("$rootPath/gallery/.dart_tool/package_config.json");
+  if (!packageConfig.existsSync()) {
+    throw "Didn't find $packageConfig";
   }
 
   List<helper.Interest> interests = <helper.Interest>[];
diff --git a/pkg/front_end/test/utils/kernel_chain.dart b/pkg/front_end/test/utils/kernel_chain.dart
index d526f13..3457bb1 100644
--- a/pkg/front_end/test/utils/kernel_chain.dart
+++ b/pkg/front_end/test/utils/kernel_chain.dart
@@ -4,6 +4,7 @@
 
 library fasta.testing.kernel_chain;
 
+import 'dart:async';
 import 'dart:io' show Directory, File, IOSink, Platform;
 
 import 'dart:typed_data' show Uint8List;
@@ -32,7 +33,16 @@
 import 'package:front_end/src/fasta/messages.dart'
     show DiagnosticMessageFromJson, LocatedMessage, Message;
 
-import 'package:kernel/ast.dart' show Component, Library, Reference, Source;
+import 'package:kernel/ast.dart'
+    show
+        Block,
+        Component,
+        Library,
+        Procedure,
+        Reference,
+        ReturnStatement,
+        Source,
+        Statement;
 
 import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder;
 
@@ -423,7 +433,9 @@
 }
 
 class WriteDill extends Step<ComponentResult, ComponentResult, ChainContext> {
-  const WriteDill();
+  final bool skipVm;
+
+  const WriteDill({required this.skipVm});
 
   @override
   String get name => "write .dill";
@@ -431,29 +443,62 @@
   @override
   Future<Result<ComponentResult>> run(ComponentResult result, _) async {
     Component component = result.component;
-    Directory tmp = await Directory.systemTemp.createTemp();
-    Uri uri = tmp.uri.resolve("generated.dill");
-    File generated = new File.fromUri(uri);
-    IOSink sink = generated.openWrite();
-    result = new ComponentResult(
-        result.description,
-        result.component,
-        result.userLibraries,
-        result.compilationSetup,
-        result.sourceTarget,
-        uri);
+    Procedure? mainMethod = component.mainMethod;
+    bool writeToFile = true;
+    if (mainMethod == null) {
+      writeToFile = false;
+    } else {
+      Statement? mainBody = mainMethod.function.body;
+      if (mainBody is Block && mainBody.statements.isEmpty ||
+          mainBody is ReturnStatement && mainBody.expression == null) {
+        writeToFile = false;
+      }
+    }
+
+    Sink<List<int>> sink;
+    String writeMessage;
+    if (writeToFile && !skipVm) {
+      Directory tmp = await Directory.systemTemp.createTemp();
+      Uri uri = tmp.uri.resolve("generated.dill");
+      File generated = new File.fromUri(uri);
+      sink = generated.openWrite();
+      result = new ComponentResult(
+          result.description,
+          result.component,
+          result.userLibraries,
+          result.compilationSetup,
+          result.sourceTarget,
+          uri);
+      writeMessage = "Wrote component to `${generated.path}`";
+    } else {
+      sink = new DevNullSink();
+      writeMessage = "Wrote component to /dev/null";
+    }
     try {
+      // TODO(johnniwinther,jensj): Avoid serializing the sdk.
       new BinaryPrinter(sink).writeComponentFile(component);
     } catch (e, s) {
       return fail(result, e, s);
     } finally {
-      print("Wrote `${generated.path}`");
-      await sink.close();
+      print(writeMessage);
+      if (sink is IOSink) {
+        await sink.close();
+      } else {
+        sink.close();
+      }
     }
     return pass(result);
   }
 }
 
+class DevNullSink<T> extends Sink<T> {
+  @override
+  void add(T data) {}
+
+  @override
+  void close() {}
+}
+
 class ReadDill extends Step<Uri, Uri, ChainContext> {
   const ReadDill();
 
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index 09865af..889ec70 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -31,12 +31,10 @@
 extensions/static_access_of_instance: RuntimeError
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
-general/ambiguous_exports: RuntimeError
 general/await_in_non_async: RuntimeError
 general/bounded_implicit_instantiation: TypeCheckError
 general/bounds_instances: TypeCheckError
 general/bug30695: TypeCheckError
-general/bug31124: RuntimeError
 general/call: RuntimeError
 general/cascade: RuntimeError
 general/constructor_initializer_invalid: RuntimeError
@@ -50,50 +48,19 @@
 general/error_locations/error_location_01: RuntimeError
 general/error_locations/error_location_02: RuntimeError
 general/error_locations/error_location_03: RuntimeError
-general/error_locations/error_location_05: RuntimeError
-general/error_locations/error_location_06: RuntimeError
-general/error_recovery/await_not_in_async: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_general.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_get.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_return_type.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_set.crash: RuntimeError
-general/error_recovery/constructor_recovery_get: RuntimeError
-general/error_recovery/constructor_recovery_ok: RuntimeError
-general/error_recovery/constructor_recovery_operator.crash: RuntimeError
-general/error_recovery/constructor_recovery_return_type: RuntimeError
-general/error_recovery/constructor_recovery_set: RuntimeError
 general/error_recovery/empty_await_for: RuntimeError
 general/error_recovery/empty_for: RuntimeError
-general/error_recovery/issue_38415.crash: RuntimeError
-general/error_recovery/issue_39024.crash: RuntimeError
-general/error_recovery/issue_39026.crash: RuntimeError
-general/error_recovery/issue_39026_prime.crash: RuntimeError
-general/error_recovery/issue_39033.crash: RuntimeError
-general/error_recovery/issue_39033b.crash: RuntimeError
-general/error_recovery/issue_39058.crash: RuntimeError
-general/error_recovery/issue_39058_prime.crash: RuntimeError
-general/error_recovery/issue_39202.crash: RuntimeError
-general/error_recovery/issue_39230.crash: RuntimeError
-general/error_recovery/issue_39958_01: RuntimeError
-general/error_recovery/issue_39958_02: RuntimeError
-general/error_recovery/issue_39958_03: RuntimeError
-general/error_recovery/issue_39958_04: RuntimeError
 general/error_recovery/weekly_bot_91_failure: Crash
-general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError
 general/implement_semi_stub: TypeCheckError
 general/implicit_super_call: TypeCheckError
-general/incomplete_field_formal_parameter: RuntimeError
 general/infer_field_from_multiple2: TypeCheckError
 general/infer_field_from_multiple: TypeCheckError
 general/invalid_operator: TypeCheckError
 general/invalid_operator_override: TypeCheckError
 general/invocations: TypeCheckError
 general/issue37776: RuntimeError
-general/issue38938: RuntimeError
-general/issue38944: RuntimeError
-general/issue38961: RuntimeError
 general/issue41210a: TypeCheckError
 general/issue41210b/issue41210.no_link: TypeCheckError
 general/issue41210b/issue41210: TypeCheckError
@@ -117,7 +84,6 @@
 general/redirecting_factory_invocation_in_invalid: TypeCheckError
 general/spread_collection: RuntimeError # Should be fixed as part of implementing spread collection support
 general/super_semi_stub: TypeCheckError
-general/type_parameter_type_named_int: RuntimeError
 general/type_variable_as_super: RuntimeError
 general/unsound_promotion: TypeCheckError
 general/void_methods: RuntimeError
@@ -176,32 +142,23 @@
 rasta/bad_setter_initializer: RuntimeError
 rasta/breaking_bad: RuntimeError
 rasta/class_hierarchy: RuntimeError
-rasta/class_member: RuntimeError
 rasta/constant_get_and_invoke: RuntimeError
-rasta/duplicated_mixin: RuntimeError
-rasta/export: RuntimeError
-rasta/foo: RuntimeError
 rasta/generic_factory: RuntimeError
 rasta/issue_000001: RuntimeError
 rasta/issue_000031: RuntimeError
 rasta/issue_000032: RuntimeError
 rasta/issue_000034: RuntimeError
 rasta/issue_000036: RuntimeError
-rasta/issue_000039: RuntimeError
 rasta/issue_000041: RuntimeError
 rasta/issue_000042: RuntimeError
-rasta/issue_000043: RuntimeError
 rasta/issue_000044: RuntimeError
-rasta/issue_000046: RuntimeError
 rasta/issue_000081: RuntimeError
 rasta/malformed_const_constructor: RuntimeError
 rasta/malformed_function: RuntimeError
 rasta/mixin_library: TypeCheckError
-rasta/native_is_illegal: RuntimeError
 rasta/parser_error: RuntimeError
 rasta/static: RuntimeError
 rasta/super: TypeCheckError
-rasta/super_initializer: RuntimeError
 rasta/super_mixin: TypeCheckError
 rasta/super_operator: TypeCheckError
 rasta/type_literals: RuntimeError
@@ -212,7 +169,6 @@
 rasta/unresolved_recovery: TypeCheckError
 regress/issue_29976: RuntimeError
 regress/issue_29982: RuntimeError
-regress/issue_30836: RuntimeError
 regress/issue_31180: TypeCheckError
 regress/issue_32972: RuntimeError
 regress/issue_33452: RuntimeError
@@ -223,15 +179,8 @@
 regress/issue_35259: RuntimeError
 regress/issue_35260: RuntimeError
 regress/issue_35266: RuntimeError
-regress/issue_36400: RuntimeError
-regress/issue_36647: RuntimeError
-regress/issue_36647_2: RuntimeError
-regress/issue_36669: RuntimeError
 regress/issue_37285: RuntimeError
-regress/issue_39035.crash: RuntimeError
-regress/issue_39091_1: RuntimeError
 regress/issue_39091_2: RuntimeError
-regress/utf_16_le_content.crash: RuntimeError
 runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast: RuntimeError
 set_literals/disambiguation_rule: RuntimeError
 value_class/copy_with_call_sites: RuntimeError # Expected
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index db831f6..3926219 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -121,12 +121,10 @@
 extensions/static_access_of_instance: RuntimeError
 general/abstract_members: TypeCheckError
 general/accessors: RuntimeError
-general/ambiguous_exports: RuntimeError # Expected, this file exports two main methods.
 general/await_in_non_async: RuntimeError # Expected.
 general/bounded_implicit_instantiation: TypeCheckError
 general/bounds_instances: TypeCheckError
 general/bug30695: TypeCheckError
-general/bug31124: RuntimeError # Test has no main method (and we shouldn't add one).
 general/call: RuntimeError
 general/cascade: RuntimeError
 general/constructor_initializer_invalid: RuntimeError # Fails execution after recovery
@@ -140,50 +138,19 @@
 general/error_locations/error_location_01: RuntimeError
 general/error_locations/error_location_02: RuntimeError
 general/error_locations/error_location_03: RuntimeError
-general/error_locations/error_location_05: RuntimeError
-general/error_locations/error_location_06: RuntimeError
-general/error_recovery/await_not_in_async: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_general.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_get.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_return_type.crash: RuntimeError
-general/error_recovery/constructor_recovery_bad_name_set.crash: RuntimeError
-general/error_recovery/constructor_recovery_get: RuntimeError
-general/error_recovery/constructor_recovery_ok: RuntimeError
-general/error_recovery/constructor_recovery_operator.crash: RuntimeError
-general/error_recovery/constructor_recovery_return_type: RuntimeError
-general/error_recovery/constructor_recovery_set: RuntimeError
 general/error_recovery/empty_await_for: RuntimeError
 general/error_recovery/empty_for: RuntimeError
-general/error_recovery/issue_38415.crash: RuntimeError
-general/error_recovery/issue_39024.crash: RuntimeError
-general/error_recovery/issue_39026.crash: RuntimeError
-general/error_recovery/issue_39026_prime.crash: RuntimeError
-general/error_recovery/issue_39033.crash: RuntimeError
-general/error_recovery/issue_39033b.crash: RuntimeError
-general/error_recovery/issue_39058.crash: RuntimeError
-general/error_recovery/issue_39058_prime.crash: RuntimeError
-general/error_recovery/issue_39202.crash: RuntimeError
-general/error_recovery/issue_39230.crash: RuntimeError
-general/error_recovery/issue_39958_01: RuntimeError
-general/error_recovery/issue_39958_02: RuntimeError
-general/error_recovery/issue_39958_03: RuntimeError
-general/error_recovery/issue_39958_04: RuntimeError
 general/error_recovery/weekly_bot_91_failure: Crash
-general/error_recovery/yield_not_in_generator: RuntimeError
 general/expressions: RuntimeError
 general/getter_vs_setter_type: TypeCheckError
 general/implement_semi_stub: TypeCheckError
 general/implicit_super_call: TypeCheckError
-general/incomplete_field_formal_parameter: RuntimeError
 general/infer_field_from_multiple2: TypeCheckError
 general/infer_field_from_multiple: TypeCheckError
 general/invalid_operator: TypeCheckError
 general/invalid_operator_override: TypeCheckError
 general/invocations: TypeCheckError
 general/issue37776: RuntimeError
-general/issue38938: RuntimeError # no main and compile time errors.
-general/issue38944: RuntimeError # no main and compile time errors.
-general/issue38961: RuntimeError # no main and compile time errors.
 general/issue41210a: TypeCheckError
 general/issue41210b/issue41210.no_link: TypeCheckError
 general/issue41210b/issue41210: TypeCheckError
@@ -208,7 +175,6 @@
 general/redirecting_factory_invocation_in_invalid: TypeCheckError
 general/spread_collection: RuntimeError
 general/super_semi_stub: TypeCheckError
-general/type_parameter_type_named_int: RuntimeError # Expected
 general/type_variable_as_super: RuntimeError
 general/unsound_promotion: TypeCheckError
 general/void_methods: RuntimeError
@@ -266,32 +232,23 @@
 rasta/bad_setter_initializer: RuntimeError
 rasta/breaking_bad: RuntimeError
 rasta/class_hierarchy: RuntimeError
-rasta/class_member: RuntimeError
 rasta/constant_get_and_invoke: RuntimeError
-rasta/duplicated_mixin: RuntimeError # Expected, this file has no main method.
-rasta/export: RuntimeError # Expected, this file has no main method.
-rasta/foo: RuntimeError # Expected, this file has no main method.
 rasta/generic_factory: RuntimeError
 rasta/issue_000001: RuntimeError
 rasta/issue_000031: RuntimeError
 rasta/issue_000032: RuntimeError
 rasta/issue_000034: RuntimeError
 rasta/issue_000036: RuntimeError
-rasta/issue_000039: RuntimeError
 rasta/issue_000041: RuntimeError
 rasta/issue_000042: RuntimeError
-rasta/issue_000043: RuntimeError
 rasta/issue_000044: RuntimeError
-rasta/issue_000046: RuntimeError
 rasta/issue_000081: RuntimeError
 rasta/malformed_const_constructor: RuntimeError
 rasta/malformed_function: RuntimeError
 rasta/mixin_library: TypeCheckError
-rasta/native_is_illegal: RuntimeError
 rasta/parser_error: RuntimeError
 rasta/static: RuntimeError
 rasta/super: TypeCheckError
-rasta/super_initializer: RuntimeError
 rasta/super_mixin: TypeCheckError
 rasta/super_operator: TypeCheckError
 rasta/type_literals: RuntimeError
@@ -302,7 +259,6 @@
 rasta/unresolved_recovery: TypeCheckError
 regress/issue_29976: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_29982: RuntimeError # Tests runtime behavior of error recovery.
-regress/issue_30836: RuntimeError # Issue 30836.
 regress/issue_31180: TypeCheckError
 regress/issue_32972: RuntimeError
 regress/issue_33452: RuntimeError # Test has an intentional error
@@ -313,15 +269,8 @@
 regress/issue_35259: RuntimeError # Expected
 regress/issue_35260: RuntimeError # Expected
 regress/issue_35266: RuntimeError # Expected
-regress/issue_36400: RuntimeError
-regress/issue_36647: RuntimeError # Expected
-regress/issue_36647_2: RuntimeError # Expected
-regress/issue_36669: RuntimeError
 regress/issue_37285: RuntimeError
-regress/issue_39035.crash: RuntimeError
-regress/issue_39091_1: RuntimeError
 regress/issue_39091_2: RuntimeError
-regress/utf_16_le_content.crash: RuntimeError
 runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast: RuntimeError
 runtime_checks_new/mixin_forwarding_stub_getter: TypeCheckError
 set_literals/disambiguation_rule: RuntimeError
diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart
index ca5700a..b2489b6 100644
--- a/pkg/frontend_server/lib/frontend_server.dart
+++ b/pkg/frontend_server/lib/frontend_server.dart
@@ -203,7 +203,12 @@
       defaultsTo: false)
   ..addFlag('print-incremental-dependencies',
       help: 'Print list of sources added and removed from compilation',
-      defaultsTo: true);
+      defaultsTo: true)
+  ..addOption('verbosity',
+      help: 'Sets the verbosity level of the compilation',
+      defaultsTo: Verbosity.defaultValue,
+      allowed: Verbosity.allowedValues,
+      allowedHelp: Verbosity.allowedValuesHelp);
 
 String usage = '''
 Usage: server [options] [input.dart]
@@ -395,26 +400,19 @@
   final List<String> errors = <String>[];
 
   _onDiagnostic(DiagnosticMessage message) {
-    // TODO(https://dartbug.com/44867): The frontend server should take a
-    // verbosity argument and put that in CompilerOptions and use it here.
-    bool printMessage;
     switch (message.severity) {
       case Severity.error:
       case Severity.internalProblem:
-        printMessage = true;
         errors.addAll(message.plainTextFormatted);
         break;
       case Severity.warning:
-        printMessage = true;
-        break;
       case Severity.info:
-        printMessage = false;
         break;
       case Severity.context:
       case Severity.ignored:
         throw 'Unexpected severity: ${message.severity}';
     }
-    if (printMessage) {
+    if (Verbosity.shouldPrint(_compilerOptions.verbosity, message)) {
       printDiagnosticMessage(message, _outputStream.writeln);
     }
   }
@@ -466,7 +464,10 @@
           parseExperimentalArguments(options['enable-experiment']),
           onError: (msg) => errors.add(msg))
       ..nnbdMode = (nullSafety == true) ? NnbdMode.Strong : NnbdMode.Weak
-      ..onDiagnostic = _onDiagnostic;
+      ..onDiagnostic = _onDiagnostic
+      ..verbosity = Verbosity.parseArgument(options['verbosity'],
+          onError: (msg) => errors.add(msg));
+    _compilerOptions = compilerOptions;
 
     if (options.wasParsed('libraries-spec')) {
       compilerOptions.librariesSpecificationUri =
@@ -554,7 +555,6 @@
       ];
     }
 
-    _compilerOptions = compilerOptions;
     _processedOptions = ProcessedOptions(options: compilerOptions);
 
     KernelCompilationResults results;
diff --git a/pkg/frontend_server/test/frontend_server_test.dart b/pkg/frontend_server/test/frontend_server_test.dart
index 46457d0..4c7fca1 100644
--- a/pkg/frontend_server/test/frontend_server_test.dart
+++ b/pkg/frontend_server/test/frontend_server_test.dart
@@ -3062,6 +3062,61 @@
         inputStreamController.close();
       }
     }, timeout: Timeout.factor(8));
+
+    test('compile with(out) warning', () async {
+      Future runTest({bool hideWarnings}) async {
+        var file = File('${tempDir.path}/foo.dart')..createSync();
+        file.writeAsStringSync("""
+main() {}
+method(int i) => i?.isEven;
+""");
+        var package_config =
+            File('${tempDir.path}/.dart_tool/package_config.json')
+              ..createSync(recursive: true)
+              ..writeAsStringSync('''
+  {
+    "configVersion": 2,
+    "packages": [
+      {
+        "name": "hello",
+        "rootUri": "../",
+        "packageUri": "./"
+      }
+    ]
+  }
+  ''');
+        var dillFile = File('${tempDir.path}/app.dill');
+
+        expect(dillFile.existsSync(), false);
+
+        final List<String> args = <String>[
+          '--sdk-root=${sdkRoot.toFilePath()}',
+          '--incremental',
+          '--platform=${ddcPlatformKernel.path}',
+          '--output-dill=${dillFile.path}',
+          '--packages=${package_config.path}',
+          '--target=dartdevc',
+          if (hideWarnings) '--verbosity=error',
+          file.path,
+        ];
+        StringBuffer output = new StringBuffer();
+        expect(await starter(args, output: output), 0);
+        String result = output.toString();
+        Matcher matcher =
+            contains("Warning: Operand of null-aware operation '?.' "
+                "has type 'int' which excludes null.");
+        if (hideWarnings) {
+          matcher = isNot(matcher);
+        }
+        expect(result, matcher);
+
+        file.deleteSync();
+        dillFile.deleteSync();
+      }
+
+      await runTest(hideWarnings: false);
+      await runTest(hideWarnings: true);
+    });
   });
 }
 
diff --git a/tools/VERSION b/tools/VERSION
index 1be6210..c7f1750 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 129
+PRERELEASE 130
 PRERELEASE_PATCH 0
\ No newline at end of file
