Debugger: Fix bitfield dumping with Python 3

Change-Id: I2959a2e14c6f25e29460de74ea95a16a5226d48e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2022-08-02 14:51:23 +02:00
parent a35d56ca2e
commit f14634a651
2 changed files with 25 additions and 5 deletions

View File

@@ -3198,7 +3198,7 @@ class DumperBase():
return self.cast(self.type.ltarget).extractField(field)
if self.type.code in (TypeCode.Reference, TypeCode.RValueReference):
return self.dereference().extractField(field)
#DumperBase.warn('FIELD: %s ' % field)
#DumperBase.warn('FIELD: %s ' % (field,))
val = self.dumper.Value(self.dumper)
val.name = field.name
val.isBaseClass = field.isBase
@@ -3227,9 +3227,6 @@ class DumperBase():
lbyte = ldata[i]
else:
lbyte = ldata[fieldOffset + fieldSize - 1 - i]
if sys.version_info[0] >= 3:
data += lbyte
else:
data += ord(lbyte)
data = data >> fieldBitpos
data = data & ((1 << fieldBitsize) - 1)

View File

@@ -6121,6 +6121,29 @@ void tst_Dumpers::dumper_data()
+ Check("watch.1.12", "s.front", "13", "unsigned int") % GdbEngine;
QTest::newRow("Bitfield2")
<< Data("#include <QList>\n\n"
"struct Entry\n"
"{\n"
" Entry(bool x) : enabled(x) {}\n"
" bool enabled : 1;\n"
" bool autorepeat : 1;\n"
" signed int id;\n"
"};\n",
"QList<Entry> list;\n"
"list.append(Entry(true));\n"
"list.append(Entry(false));\n",
"&list")
+ CoreProfile()
+ Check("list.0.enabled", "1", "bool : 1") % NoCdbEngine
+ Check("list.0.enabled", "1", "bool") % CdbEngine
+ Check("list.1.enabled", "0", "bool : 1") % NoCdbEngine
+ Check("list.1.enabled", "0", "bool") % CdbEngine;
QTest::newRow("Function")
<< Data("#include <QByteArray>\n"
"struct Function\n"