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"));