diff --git a/Cargo.lock b/Cargo.lock
index 203d8acb5b470..fd6fffe980bc5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1507,9 +1507,15 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.9.0"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
+
+[[package]]
+name = "hashbrown"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00d63df3d41950fb462ed38308eea019113ad1508da725bbedcd0fa5a85ef5f7"
+checksum = "362385356d610bd1e5a408ddf8d022041774b683f345a1d2cfcb4f60f8ae2db5"
dependencies = [
"compiler_builtins",
"rustc-std-workspace-alloc",
@@ -1653,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2"
dependencies = [
"autocfg",
- "hashbrown",
+ "hashbrown 0.9.1",
]
[[package]]
@@ -2351,9 +2357,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.4.1"
+version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad"
+checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
[[package]]
name = "opaque-debug"
@@ -4987,7 +4993,7 @@ dependencies = [
"core",
"dlmalloc",
"fortanix-sgx-abi",
- "hashbrown",
+ "hashbrown 0.11.0",
"hermit-abi",
"libc",
"miniz_oxide",
diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml
index f0f5558fd1608..22ca7ed09b42a 100644
--- a/library/std/Cargo.toml
+++ b/library/std/Cargo.toml
@@ -20,7 +20,7 @@ libc = { version = "0.2.88", default-features = false, features = ['rustc-dep-of
compiler_builtins = { version = "0.1.39" }
profiler_builtins = { path = "../profiler_builtins", optional = true }
unwind = { path = "../unwind" }
-hashbrown = { version = "0.9.0", default-features = false, features = ['rustc-dep-of-std'] }
+hashbrown = { version = "0.11", default-features = false, features = ['rustc-dep-of-std'] }
# Dependencies of the `backtrace` crate
addr2line = { version = "0.14.0", optional = true, default-features = false }
diff --git a/src/etc/gdb_providers.py b/src/etc/gdb_providers.py
index 2d902a9b6e08e..f0ce13b269c59 100644
--- a/src/etc/gdb_providers.py
+++ b/src/etc/gdb_providers.py
@@ -349,17 +349,18 @@ def __init__(self, valobj, show_values=True):
self.show_values = show_values
table = self.table()
- capacity = int(table["bucket_mask"]) + 1
- ctrl = table["ctrl"]["pointer"]
+ table_inner = table["table"]
+ capacity = int(table_inner["bucket_mask"]) + 1
+ ctrl = table_inner["ctrl"]["pointer"]
- self.size = int(table["items"])
+ self.size = int(table_inner["items"])
self.pair_type = table.type.template_argument(0).strip_typedefs()
- self.new_layout = not table.type.has_key("data")
+ self.new_layout = not table_inner.type.has_key("data")
if self.new_layout:
self.data_ptr = ctrl.cast(self.pair_type.pointer())
else:
- self.data_ptr = table["data"]["pointer"]
+ self.data_ptr = table_inner["data"]["pointer"]
self.valid_indices = []
for idx in range(capacity):
diff --git a/src/etc/lldb_providers.py b/src/etc/lldb_providers.py
index ca2685ca31ffd..702f2e82e4e2c 100644
--- a/src/etc/lldb_providers.py
+++ b/src/etc/lldb_providers.py
@@ -563,7 +563,7 @@ def table(self):
# HashSet wraps either std HashMap or hashbrown::HashSet, which both
# wrap hashbrown::HashMap, so either way we "unwrap" twice.
hashbrown_hashmap = self.valobj.GetChildAtIndex(0).GetChildAtIndex(0)
- return hashbrown_hashmap.GetChildMemberWithName("table")
+ return hashbrown_hashmap.GetChildMemberWithName("table").GetChildMemberWithName("table")
def has_children(self):
# type: () -> bool
diff --git a/src/etc/natvis/libstd.natvis b/src/etc/natvis/libstd.natvis
index b0542b0c63303..2c05f9d7c12e5 100644
--- a/src/etc/natvis/libstd.natvis
+++ b/src/etc/natvis/libstd.natvis
@@ -26,22 +26,22 @@
-->
- {{ len={base.table.items} }}
+ {{ len={base.table.table.items} }}
- - base.table.items
- - base.table.items + base.table.growth_left
+ - base.table.table.items
+ - base.table.table.items + base.table.table.growth_left
- base.hash_builder
-
- base.table.items
+
+ base.table.table.items
-
+
n--
- - ((tuple<$T1, $T2>*)base.table.ctrl.pointer)[-(i + 1)].__1
+ - ((tuple<$T1, $T2>*)base.table.table.ctrl.pointer)[-(i + 1)].__1
i++
@@ -50,22 +50,22 @@
- {{ len={base.map.table.items} }}
+ {{ len={base.map.table.table.items} }}
- - base.map.table.items
- - base.map.table.items + base.map.table.growth_left
+ - base.map.table.table.items
+ - base.map.table.table.items + base.map.table.table.growth_left
- base.map.hash_builder
-
- base.map.table.items
+
+ base.map.table.table.items
-
+
n--
- - (($T1*)base.map.table.ctrl.pointer)[-(i + 1)]
+ - (($T1*)base.map.table.table.ctrl.pointer)[-(i + 1)]
i++