From 905ed3bb6b1f1a8abb253192333bb3f5a08b61c8 Mon Sep 17 00:00:00 2001 From: ortem Date: Fri, 20 Nov 2020 17:54:26 +0300 Subject: [PATCH] Resolve typedefs in HashMap gdb/lldb pretty-printers `GetTypedefedType` (LLDB) and `strip_typedefs` (GDB) calls are needed to resolve key and value types completely. Without these calls, debugger doesn't show the actual type. * Before (without `GetTypedefedType`): (lldb) frame variable hm[0] (T) hm[0] = { ... } * After (with `GetTypedefedType`): (lldb) frame variable hm[0] ((i32, alloc::string::String)) hm[0] = { ... } --- src/etc/gdb_providers.py | 2 +- src/etc/lldb_providers.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/etc/gdb_providers.py b/src/etc/gdb_providers.py index eec3027085c91..aea77ef5c21cd 100644 --- a/src/etc/gdb_providers.py +++ b/src/etc/gdb_providers.py @@ -351,7 +351,7 @@ def __init__(self, valobj, show_values=True): ctrl = table["ctrl"]["pointer"] self.size = int(table["items"]) - self.pair_type = table.type.template_argument(0) + self.pair_type = table.type.template_argument(0).strip_typedefs() self.new_layout = not table.type.has_key("data") if self.new_layout: diff --git a/src/etc/lldb_providers.py b/src/etc/lldb_providers.py index 64cb9837943b9..9c7b07efbaa77 100644 --- a/src/etc/lldb_providers.py +++ b/src/etc/lldb_providers.py @@ -531,7 +531,7 @@ def update(self): ctrl = table.GetChildMemberWithName("ctrl").GetChildAtIndex(0) self.size = table.GetChildMemberWithName("items").GetValueAsUnsigned() - self.pair_type = table.type.template_args[0] + self.pair_type = table.type.template_args[0].GetTypedefedType() self.pair_type_size = self.pair_type.GetByteSize() self.new_layout = not table.GetChildMemberWithName("data").IsValid()