forked from qt-creator/qt-creator
Debugger: Make GDB dumper tests pass with Qt release builds
Change-Id: I45ae41486b8081bb803290895e942a71d41d5c0d Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -3847,8 +3847,6 @@ class DumperBase():
|
|||||||
return self.knownArrayTypeSize()
|
return self.knownArrayTypeSize()
|
||||||
if typish == 'QObject':
|
if typish == 'QObject':
|
||||||
return 2 * self.ptrSize()
|
return 2 * self.ptrSize()
|
||||||
if typish == 'QStandardItemData':
|
|
||||||
return 4 * self.ptrSize() if self.qtVersion() >= 0x060000 else 2 * self.ptrSize()
|
|
||||||
if typish == 'Qt::ItemDataRole':
|
if typish == 'Qt::ItemDataRole':
|
||||||
return 4
|
return 4
|
||||||
if typish == 'QChar':
|
if typish == 'QChar':
|
||||||
@@ -3860,7 +3858,12 @@ class DumperBase():
|
|||||||
def createType(self, typish, size=None):
|
def createType(self, typish, size=None):
|
||||||
if isinstance(typish, self.Type):
|
if isinstance(typish, self.Type):
|
||||||
#typish.check()
|
#typish.check()
|
||||||
|
if hasattr(typish, 'lbitsize') and typish.lbitsize is not None and typish.lbitsize > 0:
|
||||||
return typish
|
return typish
|
||||||
|
# Size 0 is sometimes reported by GDB but doesn't help at all.
|
||||||
|
# Force using the fallback:
|
||||||
|
typish = typish.name
|
||||||
|
|
||||||
if isinstance(typish, str):
|
if isinstance(typish, str):
|
||||||
ns = self.qtNamespace()
|
ns = self.qtNamespace()
|
||||||
typish = typish.replace('@', ns)
|
typish = typish.replace('@', ns)
|
||||||
@@ -3875,6 +3878,8 @@ class DumperBase():
|
|||||||
|
|
||||||
tdata = self.typeData.get(typish, None)
|
tdata = self.typeData.get(typish, None)
|
||||||
if tdata is not None:
|
if tdata is not None:
|
||||||
|
if tdata.lbitsize is not None:
|
||||||
|
if tdata.lbitsize > 0:
|
||||||
return self.Type(self, typish)
|
return self.Type(self, typish)
|
||||||
|
|
||||||
knownType = self.lookupType(typish)
|
knownType = self.lookupType(typish)
|
||||||
@@ -3888,6 +3893,9 @@ class DumperBase():
|
|||||||
tdata.name = typish
|
tdata.name = typish
|
||||||
tdata.typeId = typish
|
tdata.typeId = typish
|
||||||
tdata.templateArguments = self.listTemplateParameters(typish)
|
tdata.templateArguments = self.listTemplateParameters(typish)
|
||||||
|
if typish.endswith('*'):
|
||||||
|
tdata.code = TypeCode.Pointer
|
||||||
|
tdata.lbitsize = 8 * self.ptrSize()
|
||||||
|
|
||||||
if size is not None:
|
if size is not None:
|
||||||
tdata.lbitsize = 8 * size
|
tdata.lbitsize = 8 * size
|
||||||
|
@@ -249,9 +249,10 @@ def qdump__QStandardItemData(d, value):
|
|||||||
|
|
||||||
|
|
||||||
def qdump__QStandardItem(d, value):
|
def qdump__QStandardItem(d, value):
|
||||||
d.createType('@QStandardItemData') # warm up cache
|
# warm up cache
|
||||||
d.createType('@QStandardItem')
|
data_size = 4 * d.ptrSize() if d.qtVersion() >= 0x060000 else 2 * d.ptrSize()
|
||||||
d.createType('@QStandardItem*')
|
d.createType('@QStandardItemData', data_size)
|
||||||
|
|
||||||
vtable, dptr = value.split('pp')
|
vtable, dptr = value.split('pp')
|
||||||
# There used to be a virtual destructor that got removed in
|
# There used to be a virtual destructor that got removed in
|
||||||
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
|
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
|
||||||
|
Reference in New Issue
Block a user