Update build tools

Also teach update_clang.py how to download Chromium's Clang on macOS. We
don't currently use it in CI, but I've patched this in enough times for
local testing, that having it seems convenient.

This picks up -fsanitize=function, though it wouldn't have caught the
qsort issue anyway. I'm guessing the libc must be built with UBSan too.

Change-Id: I8c396a10b32e69fe7013283b1bb4320bc35756b6
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/60547
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: Bob Beck <bbe@google.com>
Auto-Submit: David Benjamin <davidben@google.com>
diff --git a/util/bot/DEPS b/util/bot/DEPS
index 2fe6d2c..8f5a412 100644
--- a/util/bot/DEPS
+++ b/util/bot/DEPS
@@ -25,19 +25,19 @@
   #  cipd describe PACKAGE_NAME -version latest
 
   # infra/3pp/tools/cmake/linux-amd64
-  'cmake_version': 'version:2@3.26.3.chromium.7',
+  'cmake_version': 'version:2@3.26.4.chromium.7',
   # infra/3pp/tools/go/linux-amd64
-  'go_version': 'version:2@1.20.4',
+  'go_version': 'version:2@1.20.5',
   # infra/3pp/tools/perl/windows-amd64
   'perl_version': 'version:2@5.32.1.1',
 
   # Update the following from
   # https://chromium.googlesource.com/chromium/src/+/main/DEPS
   'android_sdk_platform-tools_version': 'RSI3iwryh7URLGRgJHsCvUxj092woTPnKt4pwFcJ6L8C',
-  'android_ndk_revision': '8388a2be5421311dc75c5f937aae13d821a27f3d',
+  'android_ndk_revision': '310956bd122ec2b96049f8d7398de6b717f3452e',
   'libfuzzer_revision': 'debe7d2d1982e540fbd6bd78604bf001753f9e74',
   'libcxx_revision': 'f8279b01085b800724f5c5629dc365b9f040dc53',
-  'libcxxabi_revision': 'd5e79e117ce9adfdcfdc5dde56ee8cddd7742854',
+  'libcxxabi_revision': '899caea3814eeb45c689fc206052968943fd5cb8',
   'ninja_version': 'version:2@1.11.1.chromium.6',
 }
 
diff --git a/util/bot/update_clang.py b/util/bot/update_clang.py
index 185e975..d0b188a 100644
--- a/util/bot/update_clang.py
+++ b/util/bot/update_clang.py
@@ -9,6 +9,7 @@
 from __future__ import print_function
 
 import os
+import platform
 import shutil
 import subprocess
 import stat
@@ -28,8 +29,8 @@
 # CLANG_REVISION and CLANG_SUB_REVISION determine the build of clang
 # to use. These should be synced with tools/clang/scripts/update.py in
 # Chromium.
-CLANG_REVISION = 'llvmorg-17-init-10134-g3da83fba'
-CLANG_SUB_REVISION = 1
+CLANG_REVISION = 'llvmorg-17-init-12166-g7586aeab'
+CLANG_SUB_REVISION = 3
 
 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION)
 
@@ -138,6 +139,11 @@
     cds_full_url = CDS_URL + '/Win/' + cds_file
   elif sys.platform.startswith('linux'):
     cds_full_url = CDS_URL + '/Linux_x64/' + cds_file
+  elif sys.platform == 'darwin':
+    if platform.machine() == 'arm64':
+      cds_full_url = CDS_URL + '/Mac_arm64/' + cds_file
+    else:
+      cds_full_url = CDS_URL + '/Mac/' + cds_file
   else:
     return 0