forked from qt-creator/qt-creator
Debugger: Fix bitfield dumping with Python 3
Change-Id: I2959a2e14c6f25e29460de74ea95a16a5226d48e Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -3198,7 +3198,7 @@ class DumperBase():
|
|||||||
return self.cast(self.type.ltarget).extractField(field)
|
return self.cast(self.type.ltarget).extractField(field)
|
||||||
if self.type.code in (TypeCode.Reference, TypeCode.RValueReference):
|
if self.type.code in (TypeCode.Reference, TypeCode.RValueReference):
|
||||||
return self.dereference().extractField(field)
|
return self.dereference().extractField(field)
|
||||||
#DumperBase.warn('FIELD: %s ' % field)
|
#DumperBase.warn('FIELD: %s ' % (field,))
|
||||||
val = self.dumper.Value(self.dumper)
|
val = self.dumper.Value(self.dumper)
|
||||||
val.name = field.name
|
val.name = field.name
|
||||||
val.isBaseClass = field.isBase
|
val.isBaseClass = field.isBase
|
||||||
@@ -3227,10 +3227,7 @@ class DumperBase():
|
|||||||
lbyte = ldata[i]
|
lbyte = ldata[i]
|
||||||
else:
|
else:
|
||||||
lbyte = ldata[fieldOffset + fieldSize - 1 - i]
|
lbyte = ldata[fieldOffset + fieldSize - 1 - i]
|
||||||
if sys.version_info[0] >= 3:
|
data += ord(lbyte)
|
||||||
data += lbyte
|
|
||||||
else:
|
|
||||||
data += ord(lbyte)
|
|
||||||
data = data >> fieldBitpos
|
data = data >> fieldBitpos
|
||||||
data = data & ((1 << fieldBitsize) - 1)
|
data = data & ((1 << fieldBitsize) - 1)
|
||||||
val.lvalue = data
|
val.lvalue = data
|
||||||
|
@@ -6121,6 +6121,29 @@ void tst_Dumpers::dumper_data()
|
|||||||
+ Check("watch.1.12", "s.front", "13", "unsigned int") % GdbEngine;
|
+ 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")
|
QTest::newRow("Function")
|
||||||
<< Data("#include <QByteArray>\n"
|
<< Data("#include <QByteArray>\n"
|
||||||
"struct Function\n"
|
"struct Function\n"
|
||||||
|
Reference in New Issue
Block a user