Debugger: Use a more direct way to detect LLDB bitfields

It has a function directly doing that, use it instead of
guessing (badly, in some cases)

Change-Id: I1ce317c28d60f820f8e868e3c0c5a665f8de6cb7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2016-11-15 11:56:18 +01:00
parent 80b2a4f1ba
commit 88ff6cd5ae

View File

@@ -247,7 +247,7 @@ class Dumper(DumperBase):
if bitsize > 0: if bitsize > 0:
#bitpos = bitpos % bitsize #bitpos = bitpos % bitsize
bitpos = bitpos % 8 # Reported type is always wrapping type! bitpos = bitpos % 8 # Reported type is always wrapping type!
fieldBits[f.name] = (bitsize, bitpos) fieldBits[f.name] = (bitsize, bitpos, f.IsBitfield())
# Normal members and non-empty base classes. # Normal members and non-empty base classes.
for i in range(fakeValue.GetNumChildren()): for i in range(fakeValue.GetNumChildren()):
@@ -259,11 +259,12 @@ class Dumper(DumperBase):
nativeFieldType = nativeField.GetType() nativeFieldType = nativeField.GetType()
if field.name in fieldBits: if field.name in fieldBits:
(field.lbitsize, field.lbitpos) = fieldBits[field.name] (field.lbitsize, field.lbitpos, isBitfield) = fieldBits[field.name]
else: else:
field.lbitsize = nativeFieldType.GetByteSize() * 8 field.lbitsize = nativeFieldType.GetByteSize() * 8
isBitfield = False
if field.lbitsize != nativeFieldType.GetByteSize() * 8: if isBitfield:
field.ltype = self.createBitfieldType(self.typeName(nativeFieldType), field.lbitsize) field.ltype = self.createBitfieldType(self.typeName(nativeFieldType), field.lbitsize)
else: else:
fakeMember = fakeValue.GetChildAtIndex(i) fakeMember = fakeValue.GetChildAtIndex(i)