From 106f442a0da85148d3fae52b1d59818f56558ea3 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Wed, 23 Mar 2005 22:36:18 +0000 Subject: [PATCH] 2005-03-23 Alain Magloire Changes in the CDI ICDIMemoryBlock && ICDIMemoryBlockManagement API. * cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java --- debug/org.eclipse.cdt.debug.mi.core/ChangeLog | 6 ++++++ .../cdt/debug/mi/core/cdi/MemoryManager.java | 20 ++++++++----------- .../debug/mi/core/cdi/model/MemoryBlock.java | 11 +++++++++- .../cdt/debug/mi/core/cdi/model/Target.java | 12 ++--------- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 649dad31661..dc58781eecc 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,9 @@ +2005-03-23 Alain Magloire + Changes in the CDI ICDIMemoryBlock && ICDIMemoryBlockManagement API. + * cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java + 2005-03-09 Mikhail Khodjaiants Fix for bug 87546: Obsolete debug MI settings in Preference need to be removed. * RegisterManager.java diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java index 9678a19c657..9041c22ef83 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java @@ -134,16 +134,17 @@ public class MemoryManager extends Manager { MemoryBlock cloneBlock(MemoryBlock block) throws CDIException { Target target = (Target)block.getTarget(); String exp = block.getExpression(); - MIDataReadMemoryInfo info = createMIDataReadMemoryInfo(target.getMISession(), exp, (int)block.getLength()); - return new MemoryBlock(target, exp, info); + int wordSize = block.getWordSize(); + MIDataReadMemoryInfo info = createMIDataReadMemoryInfo(target.getMISession(), exp, (int)block.getLength(), wordSize); + return new MemoryBlock(target, exp, wordSize, info); } /** * Post a -data-read-memory to gdb/mi. */ - MIDataReadMemoryInfo createMIDataReadMemoryInfo(MISession miSession, String exp, int length) throws CDIException { + MIDataReadMemoryInfo createMIDataReadMemoryInfo(MISession miSession, String exp, int units, int wordSize) throws CDIException { CommandFactory factory = miSession.getCommandFactory(); - MIDataReadMemory mem = factory.createMIDataReadMemory(0, exp, MIFormat.HEXADECIMAL, 1, 1, length, null); + MIDataReadMemory mem = factory.createMIDataReadMemory(0, exp, MIFormat.HEXADECIMAL, wordSize, 1, units, null); try { miSession.postCommand(mem); MIDataReadMemoryInfo info = mem.getMIDataReadMemoryInfo(); @@ -156,14 +157,9 @@ public class MemoryManager extends Manager { } } - public ICDIMemoryBlock createMemoryBlock(Target target, BigInteger address, int length) - throws CDIException { - return createMemoryBlock(target, address.toString(16), length); - } - - public ICDIMemoryBlock createMemoryBlock(Target target, String address, int length) throws CDIException { - MIDataReadMemoryInfo info = createMIDataReadMemoryInfo(target.getMISession(), address, length); - ICDIMemoryBlock block = new MemoryBlock(target, address, info); + public ICDIMemoryBlock createMemoryBlock(Target target, String address, int units, int wordSize) throws CDIException { + MIDataReadMemoryInfo info = createMIDataReadMemoryInfo(target.getMISession(), address, units, wordSize); + ICDIMemoryBlock block = new MemoryBlock(target, address, wordSize, info); List blockList = getMemoryBlockList(target); blockList.add(block); MISession miSession = target.getMISession(); diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java index 74e88db62e2..8b656115474 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java @@ -37,13 +37,15 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock { boolean dirty; private MIDataReadMemoryInfo mem; + private int fWordSize; private BigInteger cStartAddress; //cached start address private byte[] cBytes; //cached bytes private int[] badOffsets; - public MemoryBlock(Target target, String exp, MIDataReadMemoryInfo info) { + public MemoryBlock(Target target, String exp, int wordSize, MIDataReadMemoryInfo info) { super(target); expression = exp; + fWordSize = wordSize; frozen = true; setMIDataReadMemoryInfo(info); } @@ -55,6 +57,13 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock { return expression; } + /** + * @return the size of each memory word in bytes. + */ + public int getWordSize() { + return fWordSize; + } + /** * Reset the internal MIDataReadMemoryInfo. All modifications into mem info should be done * using this method diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java index 1cbeb47d0de..1cec48b9ab9 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java @@ -888,17 +888,9 @@ public class Target extends SessionObject implements ICDITarget { /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlockManagement#createMemoryBlock(java.lang.String, int) */ - public ICDIMemoryBlock createMemoryBlock(String address, int length) throws CDIException { + public ICDIMemoryBlock createMemoryBlock(String address, int units, int wordSize) throws CDIException { MemoryManager memMgr = ((Session)getSession()).getMemoryManager(); - return memMgr.createMemoryBlock(this, address, length); - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlockManagement#createMemoryBlock(java.math.BigInteger, int) - */ - public ICDIMemoryBlock createMemoryBlock(BigInteger address, int length) throws CDIException { - MemoryManager memMgr = ((Session)getSession()).getMemoryManager(); - return memMgr.createMemoryBlock(this, address, length); + return memMgr.createMemoryBlock(this, address, units, wordSize); } /* (non-Javadoc)