Bug 573688: Compare flags for the same address

Contributed by STMicroelectronics

Change-Id: I4a7ea55b341653bbf01b9e69b3129023278104f9
Signed-off-by: Torbjörn Svensson <torbjorn.svensson@st.com>
diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
index 804bf51..3e22d90 100644
--- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
+++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/debug/model/DsfMemoryBlock.java
@@ -399,7 +399,7 @@
 						if (i < newLength) {
 							newBlock[i].setHistoryKnown(true);
 							if (newBlock[i].getValue() != fBlock[distance + i].getValue()
-									|| newBlock[distance + i].getFlags() != fBlock[i].getFlags()) {
+									|| isReadableFlagSet(newBlock[i]) != isReadableFlagSet(fBlock[distance + i])) {
 								newBlock[i].setChanged(true);
 							}
 						}
@@ -484,7 +484,7 @@
 						if ((distance + i) < newLength) {
 							newBlock[distance + i].setHistoryKnown(true);
 							if (newBlock[distance + i].getValue() != fBlock[i].getValue()
-									|| newBlock[distance + i].getFlags() != fBlock[i].getFlags()) {
+									|| isReadableFlagSet(newBlock[distance + i]) != isReadableFlagSet(fBlock[i])) {
 								newBlock[distance + i].setChanged(true);
 							}
 						}
@@ -509,6 +509,10 @@
 		return fBlock;
 	}
 
+	private boolean isReadableFlagSet(MemoryByte mb) {
+		return (mb.getFlags() & MemoryByte.READABLE) != 0;
+	}
+
 	/* (non-Javadoc)
 	 * @see org.eclipse.debug.core.model.IMemoryBlockExtension#setValue(java.math.BigInteger, byte[])
 	 */