Build actual crashpad .asm files in win/cross builds

Now that we have llvm-ml, we no longer need the workaround for this.

This upstreams
https://chromium-review.googlesource.com/c/chromium/src/+/3708412

Bug: chromium:762167
Change-Id: Iadc8ba9753bb7dd079415ee744f3b176b7e2f629
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3707748
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
diff --git a/util/BUILD.gn b/util/BUILD.gn
index 79cf878..17406ed 100644
--- a/util/BUILD.gn
+++ b/util/BUILD.gn
@@ -509,40 +509,23 @@
       "win/xp_compat.h",
     ]
 
-    # There's no ml.exe yet in cross builds, so provide broken-but-not-asm
-    # versions of the functions defined in .asm files.
-    #
-    # CaptureContext() in capture_context_broken.cc just calls CHECK(false).
-    # SafeTerminateProcess() in safe_terminate_process.cc just calls regular
-    # TerminateProcess() without the protection against broken third-party
-    # patching of TerminateProcess().
-    #
-    # TODO(thakis): Use the .asm file in cross builds somehow,
-    # https://crbug.com/762167.
-    if (host_os == "win") {
-      if (current_cpu != "arm64") {
-        sources += [
-          "misc/capture_context_win.asm",
-          "win/safe_terminate_process.asm",
-        ]
-      } else {
-        # Most Crashpad builds use Microsoft's armasm64.exe macro assembler for
-        # .asm source files. When building in Chromium, clang-cl is used as the
-        # assembler instead. Since the two assemblers recognize different
-        # assembly dialects, the same .asm file can't be used for each. As a
-        # workaround, use a prebuilt .obj file when the Microsoft-dialect
-        # assembler isn't available.
-        if (crashpad_is_in_chromium) {
-          sources += [ "misc/capture_context_win_arm64.obj" ]
-        } else {
-          sources += [ "misc/capture_context_win_arm64.asm" ]
-        }
-      }
-    } else {
+    if (current_cpu != "arm64") {
       sources += [
-        "misc/capture_context_broken.cc",
-        "win/safe_terminate_process_broken.cc",
+        "misc/capture_context_win.asm",
+        "win/safe_terminate_process.asm",
       ]
+    } else {
+      # Most Crashpad builds use Microsoft's armasm64.exe macro assembler for
+      # .asm source files. When building in Chromium, clang-cl is used as the
+      # assembler instead. Since the two assemblers recognize different
+      # assembly dialects, the same .asm file can't be used for each. As a
+      # workaround, use a prebuilt .obj file when the Microsoft-dialect
+      # assembler isn't available.
+      if (crashpad_is_in_chromium) {
+        sources += [ "misc/capture_context_win_arm64.obj" ]
+      } else {
+        sources += [ "misc/capture_context_win_arm64.asm" ]
+      }
     }
   }
 
diff --git a/util/misc/capture_context_broken.cc b/util/misc/capture_context_broken.cc
deleted file mode 100644
index ea6d0a0..0000000
--- a/util/misc/capture_context_broken.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2017 The Crashpad Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "util/misc/capture_context.h"
-
-#include <ostream>
-
-#include "base/check.h"
-
-namespace crashpad {
-
-void CaptureContext(NativeCPUContext* context) {
-  // Don't use this file in production.
-  CHECK(false)
-      << "Don't use this! For cross builds only. See https://crbug.com/762167.";
-}
-
-}  // namespace crashpad
diff --git a/util/win/safe_terminate_process_broken.cc b/util/win/safe_terminate_process_broken.cc
deleted file mode 100644
index 2429c72..0000000
--- a/util/win/safe_terminate_process_broken.cc
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2017 The Crashpad Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "util/win/safe_terminate_process.h"
-
-#include "base/logging.h"
-
-#if defined(ARCH_CPU_X86)
-
-namespace crashpad {
-
-bool SafeTerminateProcess(HANDLE process, UINT exit_code) {
-  // Third-party software that hooks TerminateProcess() incorrectly has been
-  // encountered in the wild. This version of SafeTerminateProcess() lacks
-  // protection against that, so don't use it in production.
-  LOG(WARNING)
-      << "Don't use this! For cross builds only. See https://crbug.com/777924.";
-  return TerminateProcess(process, exit_code) != FALSE;
-}
-
-}  // namespace crashpad
-
-#endif  // defined(ARCH_CPU_X86)