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[])
*/