From f01980e6c695458896229138ec213d3c28bf91d5 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 1 Jul 2010 09:37:28 +0200
Subject: [PATCH] debugger: work around gdb bug
 http://sourceware.org/bugzilla/show_bug.cgi?id=11777

---
 share/qtcreator/gdbmacros/dumper.py | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 77730fcfd7e..106d537acf9 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -1399,7 +1399,14 @@ class Dumper:
 
             # Insufficient, see http://sourceware.org/bugzilla/show_bug.cgi?id=10953
             #fields = value.type.fields()
-            fields = stripTypedefs(value.type).fields()
+
+            # Insufficient, see http://sourceware.org/bugzilla/show_bug.cgi?id=11777
+            #fields = stripTypedefs(value.type).fields()
+
+            # This seems to work.
+            type = stripTypedefs(type)
+            type = lookupType(str(type))
+            fields = type.fields()
 
             self.putType(item.value.type)
             try:
@@ -1436,7 +1443,10 @@ class Dumper:
 
     def putFields(self, item, innerType = None):
             value = item.value
-            fields = stripTypedefs(value.type).fields()
+            type = stripTypedefs(value.type)
+            # http://sourceware.org/bugzilla/show_bug.cgi?id=11777
+            type = lookupType(str(type))
+            fields = stripTypedefs(type).fields()
             baseNumber = 0
             for field in fields:
                 #warn("FIELD: %s" % field)
@@ -1447,9 +1457,9 @@ class Dumper:
                     continue  # A static class member(?).
 
                 if field.name is None:
-                    innerType = value.type.target()
+                    innerType = type.target()
                     p = value.cast(innerType.pointer())
-                    for i in xrange(value.type.sizeof / innerType.sizeof):
+                    for i in xrange(type.sizeof / innerType.sizeof):
                         self.putItem(Item(p.dereference(), item.iname, i, None))
                         p = p + 1
                     continue
-- 
GitLab