diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp index 306136e9b075d09ca2423fbd891ae5eac5fd28cc..795e62b0b927684b1f4d3acc6976da40f1a0c013 100644 --- a/src/plugins/debugger/watchdata.cpp +++ b/src/plugins/debugger/watchdata.cpp @@ -144,6 +144,8 @@ WatchData::WatchData() : state(InitialState), editformat(0), address(0), + bitpos(0), + bitsize(0), generation(-1), hasChildren(false), valueEnabled(true), diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h index 1666fd2cf62ca82a7939ab448eb7eb79eea60da0..e65b159cd36913d8c819f77ef561c374c07d06b0 100644 --- a/src/plugins/debugger/watchdata.h +++ b/src/plugins/debugger/watchdata.h @@ -128,6 +128,8 @@ public: QByteArray type; // Type for further processing QString displayedType;// Displayed type (optional) quint64 address; // Displayed address + uint bitpos; // Position within bit fields + uint bitsize; // Size in case of bit fields qint32 generation; // When updated? bool hasChildren; bool valueEnabled; // Value will be enabled or not diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index aa39a2741b77b45c76dfb2e762a555bb5645adb5..2b895963ed6f6161fcc061b7c3b98c3dfab92baa 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -285,9 +285,12 @@ static QString removeInitialNamespace(QString str, const QByteArray &ns) QString WatchModel::displayType(const WatchData &data) const { - return data.displayedType.isEmpty() + QString base = data.displayedType.isEmpty() ? niceTypeHelper(data.type) : data.displayedType; + if (data.bitsize) + base += QString(":%1").arg(data.bitsize); + return base; } static int formatToIntegerBase(int format) diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index 5a5ba5fb6db4c6dbc1d58e1a0b8f6b5b5e08ef80..7cd2a79ef5681edba9d588cd2cb33cecf744367e 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -1399,6 +1399,12 @@ void parseWatchData(const QSet<QByteArray> &expandedINames, mi = item.findChild("typeformats"); if (mi.isValid()) data.typeFormats = QString::fromUtf8(mi.data()); + mi = item.findChild("bitpos"); + if (mi.isValid()) + data.bitpos = mi.data().toInt(); + mi = item.findChild("bitsize"); + if (mi.isValid()) + data.bitsize = mi.data().toInt(); setWatchDataValue(data, item); setWatchDataAddress(data, item.findChild("addr"));