From a196317ce00cc04378761b7a9fc9c88fb879223b Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 7 Jan 2010 14:41:12 +0100 Subject: [PATCH] debugger: support anonymous unions in new dumpers --- share/qtcreator/gdbmacros/dumper.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 55d480e752a..efef1841abc 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -873,6 +873,7 @@ class Dumper: self.beginChildren(1, innerType) baseNumber = 0 + anonNumber = 0 for field in fields: #warn("FIELD: %s" % field) #warn(" BITSIZE: %s" % field.bitsize) @@ -906,13 +907,30 @@ class Dumper: self.putField("iname", child.iname) self.safePutItemHelper(child) self.endHash() + elif field.name == "": + # Anonymous union. We need a dummy name to distinguish + # multiple anonymous unions in the struct. + iname = "%s.#%d" % (item.iname, anonNumber) + anonNumber += 1 + self.beginHash() + self.putField("iname", iname) + self.putField("name", "") + self.putField("value", " ") + self.putField("type", "") + if self.isExpandedIName(iname): + self.beginChildren() + for f in field.type.fields(): + child = Item(item.value[f.name], + item.iname, f.name, f.name) + self.safePutItem(child) + self.endChildren() + self.endHash() else: - # Data member. + # Named field. + self.beginHash() child = Item(value[field.name], item.iname, field.name, field.name) - if not child.name: - child.name = "" - self.beginHash() self.safePutItemHelper(child) self.endHash() + self.endChildren()