Roll/update build-related dependencies

This may help with ASAN issues seen on Windows ASAN (see bug 347169607).

Details:
- Roll depot_tools, build, buildtools, third_party/libc++/src,
  third_party/libc++abi, tools/clang, tools/rust
  - Newly-required abseil-cpp issue workaround is copied from Chromium
- Add llvm-libc because libc++ now depends on it. llvm-libc/BUILD.gn is
  copied from Chromium.
- Moved dsymutil into 'hooks' section instead of 'deps' section to match
  Chromium (but with 'dawn_standalone and' prepended).
- Require use_custom_libcxx=false when building with MSVC, because
  libc++ doesn't build on MSVC right now. This setting was changed for
  the MSVC bots in bsheedy's CL: https://crrev.com/c/6192201
- Work around a spurious MSVC warning that only appears on (CMake?)
  release bots. I don't know what it has to do with any of the
  dependencies rolled in this CL. I could not reproduce locally.
  I think what's happening is MSVC inlines and optimizes `FormatWidth`,
  and then if none of the cases is hit then `src_width` will be
  uninitialized. This is arguably correct, but some buggy version of
  MSVC attributes this issue to the wrong place in the code:
  `if (dst_width < src_width)`.
  If my suspicion is correct, it goes away either if inlining is
  prevented or all codepaths (that return at all) return a value.

Rolled all dependencies to match a recent Chromium revision; steps:
- Add "custom_vars": { "checkout_rust": True } to .gclient
- gclient sync
- roll-dep build buildtools tools/clang tools/rust
- Manually update the other deps to match Chromium DEPS.

Bug: 347169607
Change-Id: Ib6e8b49ed08aa028241bd1bf5092128f920f2ef0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/222337
Reviewed-by: David Neto <dneto@google.com>
Auto-Submit: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
diff --git a/.gitmodules b/.gitmodules
index f1e8794..ace6328 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -178,3 +178,6 @@
 	path = third_party/partition_alloc
 	url = https://chromium.googlesource.com/chromium/src/base/allocator/partition_allocator
 	gclient-condition = dawn_standalone
+[submodule "third_party/llvm-libc/src"]
+	path = third_party/llvm-libc/src
+	url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git
diff --git a/BUILD.gn b/BUILD.gn
index 6d4fe01..7d680b7 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -29,6 +29,11 @@
 import("scripts/dawn_overrides_with_defaults.gni")
 import("scripts/tint_overrides_with_defaults.gni")
 
+if (!is_clang && is_win) {
+  # libc++ cannot currently build with MSVC. See https://anglebug.com/376074941
+  assert(!use_custom_libcxx, "MSVC build requires use_custom_libcxx=false")
+}
+
 group("benchmarks") {
   testonly = true
   deps = [ "src/tint:benchmarks" ]
diff --git a/DEPS b/DEPS
index ec15f40..20cdfce 100644
--- a/DEPS
+++ b/DEPS
@@ -70,7 +70,7 @@
 
 deps = {
   'buildtools': {
-    'url': '{chromium_git}/chromium/src/buildtools@9cac81256beb5d4d36c8801afeae38fea34b8486',
+    'url': '{chromium_git}/chromium/src/buildtools@a660247d3c14a172b74b8e832ba1066b30183c97',
     'condition': 'dawn_standalone',
   },
   'third_party/clang-format/script': {
@@ -103,17 +103,23 @@
   },
 
   'third_party/depot_tools': {
-    'url': '{chromium_git}/chromium/tools/depot_tools.git@58625e82c685426d441be5b422c9ad88e4867d20',
+    'url': '{chromium_git}/chromium/tools/depot_tools.git@db9a0b01c2ea01f925c9c46039bd07c4b35e26fe',
     'condition': 'dawn_standalone',
   },
 
   'third_party/libc++/src': {
-    'url': '{chromium_git}/external/github.com/llvm/llvm-project/libcxx.git@450ae0d29766e87ea12148e8c6c3352053f78e15',
+    'url': '{chromium_git}/external/github.com/llvm/llvm-project/libcxx.git@2e25154d49c29fa9aa42c30ad4a027bd30123434',
     'condition': 'dawn_standalone',
   },
 
   'third_party/libc++abi/src': {
-    'url': '{chromium_git}/external/github.com/llvm/llvm-project/libcxxabi.git@e5b130d5dc3058457ea0658a55ae6bb968f75f0e',
+    'url': '{chromium_git}/external/github.com/llvm/llvm-project/libcxxabi.git@8205ccf0f23545ebcd8846363ea1d29e77917a22',
+    'condition': 'dawn_standalone',
+  },
+
+  # Required by libc++
+  'third_party/llvm-libc/src': {
+    'url': '{chromium_git}/external/github.com/llvm/llvm-project/libc.git@a485ddbbb2ffe528c3ebf82b9d72a7297916531f',
     'condition': 'dawn_standalone',
   },
 
@@ -127,25 +133,17 @@
   # The //build, //tools/clang, and //tools/rust deps should all be updated
   # in unison, as there are dependencies between them.
   'build': {
-    'url': '{chromium_git}/chromium/src/build@9d5c32282de17517d92763af2d11dbeb1f6539aa',
+    'url': '{chromium_git}/chromium/src/build@a252ef1991b42918f6e74bc8c26b6543afe7bb2e',
     'condition': 'dawn_standalone',
   },
   'tools/clang': {
-    'url': '{chromium_git}/chromium/src/tools/clang@53554bf3da41153f2e01f9ff234c194c156b7a93',
+    'url': '{chromium_git}/chromium/src/tools/clang@e262f0f8896e459fe7fd2a076af48d5746b1d332',
     'condition': 'dawn_standalone',
   },
   'tools/rust': {
-    'url': '{chromium_git}/chromium/src/tools/rust@ed0fe5c0e067bd64ab43eb7457e71680a81bd8e3',
+    'url': '{chromium_git}/chromium/src/tools/rust@05dbbfdcec4a7cc6c7cbf735d5a67d331a2f40da',
     'condition': 'dawn_standalone and checkout_rust',
   },
-  'tools/clang/dsymutil': {
-    'packages': [{
-      'package': 'chromium/llvm-build-tools/dsymutil',
-      'version': 'M56jPzDv1620Rnm__jTMYS62Zi8rxHVq7yw0qeBFEgkC',
-    }],
-    'condition': 'dawn_standalone and (checkout_mac or checkout_ios)',
-    'dep_type': 'cipd',
-  },
 
   # Linux sysroots for hermetic builds instead of relying on whatever is
   # available from the system used for compilation. Only applicable to
@@ -535,8 +533,35 @@
     'action': ['python3', 'tools/rust/update_rust.py'],
     'condition': 'dawn_standalone and checkout_rust',
   },
+  # Pull dsymutil binaries using checked-in hashes.
   {
-    # Pull rc binaries using checked-in hashes.
+    'name': 'dsymutil_mac_arm64',
+    'pattern': '.',
+    'condition': 'dawn_standalone and host_os == "mac" and host_cpu == "arm64"',
+    'action': [ 'python3',
+                'third_party/depot_tools/download_from_google_storage.py',
+                '--no_resume',
+                '--no_auth',
+                '--bucket', 'chromium-browser-clang',
+                '-s', 'tools/clang/dsymutil/bin/dsymutil.arm64.sha1',
+                '-o', 'tools/clang/dsymutil/bin/dsymutil',
+    ],
+  },
+  {
+    'name': 'dsymutil_mac_x64',
+    'pattern': '.',
+    'condition': 'dawn_standalone and host_os == "mac" and host_cpu == "x64"',
+    'action': [ 'python3',
+                'third_party/depot_tools/download_from_google_storage.py',
+                '--no_resume',
+                '--no_auth',
+                '--bucket', 'chromium-browser-clang',
+                '-s', 'tools/clang/dsymutil/bin/dsymutil.x64.sha1',
+                '-o', 'tools/clang/dsymutil/bin/dsymutil',
+    ],
+  },
+  # Pull rc binaries using checked-in hashes.
+  {
     'name': 'rc_win',
     'pattern': '.',
     'condition': 'dawn_standalone and checkout_win and host_os == "win"',
@@ -572,6 +597,7 @@
                 '-s', 'build/toolchain/win/rc/mac/rc.sha1',
     ],
   },
+
   # Update build/util/LASTCHANGE.
   {
     'name': 'lastchange',
diff --git a/build b/build
index 9d5c322..a252ef1 160000
--- a/build
+++ b/build
@@ -1 +1 @@
-Subproject commit 9d5c32282de17517d92763af2d11dbeb1f6539aa
+Subproject commit a252ef1991b42918f6e74bc8c26b6543afe7bb2e
diff --git a/buildtools b/buildtools
index 9cac812..a660247 160000
--- a/buildtools
+++ b/buildtools
@@ -1 +1 @@
-Subproject commit 9cac81256beb5d4d36c8801afeae38fea34b8486
+Subproject commit a660247d3c14a172b74b8e832ba1066b30183c97
diff --git a/src/tint/lang/core/ir/transform/vertex_pulling.cc b/src/tint/lang/core/ir/transform/vertex_pulling.cc
index 11b7e26..009fbb2 100644
--- a/src/tint/lang/core/ir/transform/vertex_pulling.cc
+++ b/src/tint/lang/core/ir/transform/vertex_pulling.cc
@@ -88,6 +88,7 @@
         case VertexFormat::kUnorm8x4BGRA:
             return 4;
     }
+    TINT_UNREACHABLE();
 }
 
 /// PIMPL state for the transform.
diff --git a/third_party/depot_tools b/third_party/depot_tools
index 58625e8..db9a0b0 160000
--- a/third_party/depot_tools
+++ b/third_party/depot_tools
@@ -1 +1 @@
-Subproject commit 58625e82c685426d441be5b422c9ad88e4867d20
+Subproject commit db9a0b01c2ea01f925c9c46039bd07c4b35e26fe
diff --git a/third_party/gn/abseil-cpp/BUILD.gn b/third_party/gn/abseil-cpp/BUILD.gn
index 22f22d5..3ea2362 100644
--- a/third_party/gn/abseil-cpp/BUILD.gn
+++ b/third_party/gn/abseil-cpp/BUILD.gn
@@ -958,8 +958,12 @@
     "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/time_zone.h",
     "${dawn_abseil_dir}/absl/time/internal/cctz/include/cctz/zone_info_source.h",
   ]
+  defines = []
   if (is_apple) {
     frameworks = [ "Foundation.framework" ]
+
+    # Work-around for https://github.com/llvm/llvm-project/issues/117630
+    defines += [ "_XOPEN_SOURCE=700" ]
   }
   deps = [
     ":civil_time",
diff --git a/third_party/libc++/src b/third_party/libc++/src
index 450ae0d..2e25154 160000
--- a/third_party/libc++/src
+++ b/third_party/libc++/src
@@ -1 +1 @@
-Subproject commit 450ae0d29766e87ea12148e8c6c3352053f78e15
+Subproject commit 2e25154d49c29fa9aa42c30ad4a027bd30123434
diff --git a/third_party/libc++abi/src b/third_party/libc++abi/src
index e5b130d..8205ccf 160000
--- a/third_party/libc++abi/src
+++ b/third_party/libc++abi/src
@@ -1 +1 @@
-Subproject commit e5b130d5dc3058457ea0658a55ae6bb968f75f0e
+Subproject commit 8205ccf0f23545ebcd8846363ea1d29e77917a22
diff --git a/third_party/llvm-libc/BUILD.gn b/third_party/llvm-libc/BUILD.gn
new file mode 100644
index 0000000..91028fd
--- /dev/null
+++ b/third_party/llvm-libc/BUILD.gn
@@ -0,0 +1,16 @@
+# Copyright 2024 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+config("config") {
+  visibility = [ ":*" ]
+  include_dirs = [ "src" ]
+  defines = [ "LIBC_NAMESPACE=__llvm_libc_cr" ]
+}
+
+group("llvm-libc-shared") {
+  # llvm-libc is only used as a dependency of libc++.
+  visibility = [ "//buildtools/third_party/libc++:libc++" ]
+
+  public_configs = [ ":config" ]
+}
diff --git a/third_party/llvm-libc/src b/third_party/llvm-libc/src
new file mode 160000
index 0000000..a485ddb
--- /dev/null
+++ b/third_party/llvm-libc/src
@@ -0,0 +1 @@
+Subproject commit a485ddbbb2ffe528c3ebf82b9d72a7297916531f
diff --git a/tools/clang b/tools/clang
index 53554bf..e262f0f 160000
--- a/tools/clang
+++ b/tools/clang
@@ -1 +1 @@
-Subproject commit 53554bf3da41153f2e01f9ff234c194c156b7a93
+Subproject commit e262f0f8896e459fe7fd2a076af48d5746b1d332
diff --git a/tools/rust b/tools/rust
index ed0fe5c..05dbbfd 160000
--- a/tools/rust
+++ b/tools/rust
@@ -1 +1 @@
-Subproject commit ed0fe5c0e067bd64ab43eb7457e71680a81bd8e3
+Subproject commit 05dbbfdcec4a7cc6c7cbf735d5a67d331a2f40da