diff --git a/bin/921d9846-a815-11e9-84ea-ff8bce1b90b6-broken b/bin/921d9846-a815-11e9-84ea-ff8bce1b90b6-broken
deleted file mode 100755
index deaa426..0000000
--- a/bin/921d9846-a815-11e9-84ea-ff8bce1b90b6-broken
+++ /dev/null
Binary files differ
diff --git a/bin/aarch64-linux-android-c++ b/bin/aarch64-linux-android-c++
deleted file mode 120000
index 348d40b..0000000
--- a/bin/aarch64-linux-android-c++
+++ /dev/null
@@ -1 +0,0 @@
-aarch64-linux-android-g++
\ No newline at end of file
diff --git a/bin/aarch64-linux-android-cpp-broken b/bin/aarch64-linux-android-cpp-broken
deleted file mode 100755
index 8a5aa5a..0000000
--- a/bin/aarch64-linux-android-cpp-broken
+++ /dev/null
Binary files differ
diff --git a/bin/aarch64-linux-android-g++-broken b/bin/aarch64-linux-android-g++-broken
deleted file mode 100755
index c1ce465..0000000
--- a/bin/aarch64-linux-android-g++-broken
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/python
-
-from __future__ import print_function
-import os
-import sys
-import time
-
-class CompilerWrapper():
-  def __init__(self, argv):
-    self.args = argv
-    self.execargs = []
-    self.real_compiler = None
-    self.argv0 = None
-    self.append_flags = []
-    self.prepend_flags = []
-    self.custom_flags = {
-      '--gomacc-path': None
-    }
-
-  def set_real_compiler(self):
-    """Find the real compiler with the absolute path."""
-    compiler_path = os.path.dirname(os.path.abspath(__file__))
-    if os.path.islink(__file__):
-      compiler = os.path.basename(os.readlink(__file__))
-    else:
-      compiler = os.path.basename(os.path.abspath(__file__))
-    self.real_compiler = os.path.join(
-        compiler_path,
-        "db96eedc-a815-11e9-a708-d79346614c9b")
-    self.argv0 = self.real_compiler
-
-  def process_gomacc_command(self):
-    """Return the gomacc command if '--gomacc-path' is set."""
-    gomacc = self.custom_flags['--gomacc-path']
-    if gomacc and os.path.isfile(gomacc):
-      self.argv0 = gomacc
-      self.execargs += [gomacc]
-
-  def parse_custom_flags(self):
-    i = 0
-    args = []
-    while i < len(self.args):
-      if self.args[i] in self.custom_flags:
-        self.custom_flags[self.args[i]] = self.args[i + 1]
-        i = i + 2
-      else:
-        args.append(self.args[i])
-        i = i + 1
-    self.args = args
-
-  def add_flags(self):
-    self.args = self.prepend_flags + self.args + self.append_flags
-
-  def print_deprecation_warning(self):
-    print("Android GCC has been deprecated in favor of Clang, and will be removed from\n"
-          "Android in 2020-01 as per the deprecation plan in:\n"
-          "https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+/master/GCC_4_9_DEPRECATION.md\n\n",
-          file=sys.stderr)
-
-
-  def invoke_compiler(self):
-    self.print_deprecation_warning()
-    self.set_real_compiler()
-    self.parse_custom_flags()
-    self.process_gomacc_command()
-    self.add_flags()
-    self.execargs += [self.real_compiler] + self.args
-    time.sleep(3)
-    os.execv(self.argv0, self.execargs)
-
-
-def main(argv):
-  cw = CompilerWrapper(argv[1:])
-  cw.invoke_compiler()
-
-if __name__ == "__main__":
-  main(sys.argv)
diff --git a/bin/aarch64-linux-android-gcc-4.9 b/bin/aarch64-linux-android-gcc-4.9
deleted file mode 120000
index 347842f..0000000
--- a/bin/aarch64-linux-android-gcc-4.9
+++ /dev/null
@@ -1 +0,0 @@
-aarch64-linux-android-gcc
\ No newline at end of file
diff --git a/bin/aarch64-linux-android-gcc-4.9.x-broken b/bin/aarch64-linux-android-gcc-4.9.x-broken
deleted file mode 100755
index deaa426..0000000
--- a/bin/aarch64-linux-android-gcc-4.9.x-broken
+++ /dev/null
Binary files differ
diff --git a/bin/aarch64-linux-android-gcc-broken b/bin/aarch64-linux-android-gcc-broken
deleted file mode 100755
index d454c40..0000000
--- a/bin/aarch64-linux-android-gcc-broken
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/python
-
-from __future__ import print_function
-import os
-import sys
-import time
-
-class CompilerWrapper():
-  def __init__(self, argv):
-    self.args = argv
-    self.execargs = []
-    self.real_compiler = None
-    self.argv0 = None
-    self.append_flags = []
-    self.prepend_flags = []
-    self.custom_flags = {
-      '--gomacc-path': None
-    }
-
-  def set_real_compiler(self):
-    """Find the real compiler with the absolute path."""
-    compiler_path = os.path.dirname(os.path.abspath(__file__))
-    if os.path.islink(__file__):
-      compiler = os.path.basename(os.readlink(__file__))
-    else:
-      compiler = os.path.basename(os.path.abspath(__file__))
-    self.real_compiler = os.path.join(
-        compiler_path,
-        "921d9846-a815-11e9-84ea-ff8bce1b90b6")
-    self.argv0 = self.real_compiler
-
-  def process_gomacc_command(self):
-    """Return the gomacc command if '--gomacc-path' is set."""
-    gomacc = self.custom_flags['--gomacc-path']
-    if gomacc and os.path.isfile(gomacc):
-      self.argv0 = gomacc
-      self.execargs += [gomacc]
-
-  def parse_custom_flags(self):
-    i = 0
-    args = []
-    while i < len(self.args):
-      if self.args[i] in self.custom_flags:
-        self.custom_flags[self.args[i]] = self.args[i + 1]
-        i = i + 2
-      else:
-        args.append(self.args[i])
-        i = i + 1
-    self.args = args
-
-  def add_flags(self):
-    self.args = self.prepend_flags + self.args + self.append_flags
-
-  def print_deprecation_warning(self):
-    print("Android GCC has been deprecated in favor of Clang, and will be removed from\n"
-          "Android in 2020-01 as per the deprecation plan in:\n"
-          "https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+/master/GCC_4_9_DEPRECATION.md\n\n",
-          file=sys.stderr)
-
-
-  def invoke_compiler(self):
-    self.print_deprecation_warning()
-    self.set_real_compiler()
-    self.parse_custom_flags()
-    self.process_gomacc_command()
-    self.add_flags()
-    self.execargs += [self.real_compiler] + self.args
-    time.sleep(3)
-    os.execv(self.argv0, self.execargs)
-
-
-def main(argv):
-  cw = CompilerWrapper(argv[1:])
-  cw.invoke_compiler()
-
-if __name__ == "__main__":
-  main(sys.argv)
diff --git a/bin/aarch64-linux-androidkernel-cpp b/bin/aarch64-linux-androidkernel-cpp
deleted file mode 120000
index 7057f43..0000000
--- a/bin/aarch64-linux-androidkernel-cpp
+++ /dev/null
@@ -1 +0,0 @@
-aarch64-linux-android-cpp
\ No newline at end of file
diff --git a/bin/aarch64-linux-androidkernel-gcc b/bin/aarch64-linux-androidkernel-gcc
deleted file mode 120000
index 347842f..0000000
--- a/bin/aarch64-linux-androidkernel-gcc
+++ /dev/null
@@ -1 +0,0 @@
-aarch64-linux-android-gcc
\ No newline at end of file
diff --git a/bin/db96eedc-a815-11e9-a708-d79346614c9b-broken b/bin/db96eedc-a815-11e9-a708-d79346614c9b-broken
deleted file mode 100755
index 932be84..0000000
--- a/bin/db96eedc-a815-11e9-a708-d79346614c9b-broken
+++ /dev/null
Binary files differ
