diff options
| author | The 8472 <git@infinite-source.de> | 2023-12-11 01:08:30 +0100 |
|---|---|---|
| committer | The 8472 <git@infinite-source.de> | 2023-12-11 23:38:48 +0100 |
| commit | 81997094e6e38da15a8939c7a8ab8aae2e00e09a (patch) | |
| tree | 7e6f7fe1c9b232f262647366b1ac5f002778bfd9 | |
| parent | 6a2f44e9d850d241e9483792710dba7c58a249ec (diff) | |
| download | rust-81997094e6e38da15a8939c7a8ab8aae2e00e09a.tar.gz rust-81997094e6e38da15a8939c7a8ab8aae2e00e09a.zip | |
update debug providers to match new RawVec capacity field
| -rw-r--r-- | src/etc/gdb_providers.py | 6 | ||||
| -rw-r--r-- | src/etc/lldb_providers.py | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/etc/gdb_providers.py b/src/etc/gdb_providers.py index e851aa62634..7d7277d2408 100644 --- a/src/etc/gdb_providers.py +++ b/src/etc/gdb_providers.py @@ -154,7 +154,11 @@ class StdVecDequeProvider(printer_base): self._valobj = valobj self._head = int(valobj["head"]) self._size = int(valobj["len"]) - self._cap = int(valobj["buf"]["cap"]) + # BACKCOMPAT: rust 1.75 + cap = valobj["buf"]["cap"] + if cap.type.code != gdb.TYPE_CODE_INT: + cap = cap[ZERO_FIELD] + self._cap = int(cap) self._data_ptr = unwrap_unique_or_non_null(valobj["buf"]["ptr"]) def to_string(self): diff --git a/src/etc/lldb_providers.py b/src/etc/lldb_providers.py index 4c86b214646..cfb3f0a4eae 100644 --- a/src/etc/lldb_providers.py +++ b/src/etc/lldb_providers.py @@ -267,7 +267,8 @@ class StdVecSyntheticProvider: """Pretty-printer for alloc::vec::Vec<T> struct Vec<T> { buf: RawVec<T>, len: usize } - struct RawVec<T> { ptr: Unique<T>, cap: usize, ... } + rust 1.75: struct RawVec<T> { ptr: Unique<T>, cap: usize, ... } + rust 1.76: struct RawVec<T> { ptr: Unique<T>, cap: Cap(usize), ... } rust 1.31.1: struct Unique<T: ?Sized> { pointer: NonZero<*const T>, ... } rust 1.33.0: struct Unique<T: ?Sized> { pointer: *const T, ... } rust 1.62.0: struct Unique<T: ?Sized> { pointer: NonNull<T>, ... } @@ -390,7 +391,10 @@ class StdVecDequeSyntheticProvider: self.head = self.valobj.GetChildMemberWithName("head").GetValueAsUnsigned() self.size = self.valobj.GetChildMemberWithName("len").GetValueAsUnsigned() self.buf = self.valobj.GetChildMemberWithName("buf") - self.cap = self.buf.GetChildMemberWithName("cap").GetValueAsUnsigned() + cap = self.buf.GetChildMemberWithName("cap") + if cap.GetType().num_fields == 1: + cap = cap.GetChildAtIndex(0) + self.cap = cap.GetValueAsUnsigned() self.data_ptr = unwrap_unique_or_non_null(self.buf.GetChildMemberWithName("ptr")) |
