diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog
index 6cb6c20fa76..8850fd861f6 100644
--- a/debug/org.eclipse.cdt.debug.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.core/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-17 Alain Magloire
+ Support for 64 bits application
+ PR 74056. Pathc from Artyom Kuanbekov
+ To much files to enumerate.
+
2004-09-15 Mikhail Khodjaiants
Removed the "ISwitchToThread" and "ISwitchToFrame" interfaces.
* ICDebugTarget.java
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDILocation.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDILocation.java
index 85b311f5c61..39b05878ec3 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDILocation.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDILocation.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi;
+import org.eclipse.cdt.core.IAddress;
+
/**
*
@@ -24,7 +26,7 @@ public interface ICDILocation {
*
* @return the address of this location
*/
- long getAddress();
+ IAddress getAddress();
/**
* Returns the source file of this location or null
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDIMemoryManager.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDIMemoryManager.java
index 10c63732b6b..b1adfdd5ffa 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDIMemoryManager.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDIMemoryManager.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock;
/**
@@ -41,7 +42,7 @@ public interface ICDIMemoryManager extends ICDIManager {
* @return a memory block with the specified identifier
* @throws CDIException on failure. Reasons include:
*/
- ICDIMemoryBlock createMemoryBlock(long address, int length)
+ ICDIMemoryBlock createMemoryBlock(IAddress address, int length)
throws CDIException;
/**
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDISourceManager.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDISourceManager.java
index ade6f7f007c..c37263e5c90 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDISourceManager.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDISourceManager.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
@@ -40,7 +41,7 @@ public interface ICDISourceManager extends ICDIManager {
* @param endAddress is the end address
* @throws CDIException on failure.
*/
- ICDIInstruction[] getInstructions(long startAddress, long endAddress)
+ ICDIInstruction[] getInstructions(IAddress startAddress, IAddress endAddress)
throws CDIException;
/**
@@ -66,8 +67,8 @@ public interface ICDISourceManager extends ICDIManager {
* @throws CDIException on failure.
*/
ICDIMixedInstruction[] getMixedInstructions(
- long startAddress,
- long endAddress)
+ IAddress startAddress,
+ IAddress endAddress)
throws CDIException;
/**
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDITraceManager.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDITraceManager.java
index a5abff7455c..9553bae4951 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDITraceManager.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/ICDITraceManager.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDITracepoint;
/**
@@ -155,5 +156,5 @@ public interface ICDITraceManager extends ICDISessionObject {
* @param address - an address
* @return an ICDILocation object
*/
- ICDILocation createLocation( long address );
+ ICDILocation createLocation( IAddress address );
}
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/event/ICDIMemoryChangedEvent.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/event/ICDIMemoryChangedEvent.java
index c48301cba59..5e49f807f45 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/event/ICDIMemoryChangedEvent.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/event/ICDIMemoryChangedEvent.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.event;
+import org.eclipse.cdt.core.IAddress;
+
/**
*
* Notifies that the originator has changed.
@@ -19,5 +21,5 @@ public interface ICDIMemoryChangedEvent extends ICDIChangedEvent {
/**
* @return the modified addresses.
*/
- Long[] getAddresses();
+ IAddress[] getAddresses();
}
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIInstruction.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIInstruction.java
index d7536e25c99..6b8665726a1 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIInstruction.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIInstruction.java
@@ -11,6 +11,8 @@
package org.eclipse.cdt.debug.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
+
/**
*
* Represents a machine instruction.
@@ -22,7 +24,7 @@ public interface ICDIInstruction extends ICDIObject {
* Returns the Address.
* @return the address.
*/
- long getAdress();
+ IAddress getAdress();
/**
* @return the function name.
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIMemoryBlock.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIMemoryBlock.java
index 9ed641fe066..0317aefd936 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIMemoryBlock.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDIMemoryBlock.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
/**
@@ -26,7 +27,7 @@ public interface ICDIMemoryBlock extends ICDIObject {
*
* @return the start address of this memory block
*/
- long getStartAddress();
+ IAddress getStartAddress();
/**
* Returns the length of this memory block in bytes.
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibrary.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibrary.java
index 2a67c4b958f..1857b1152ea 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibrary.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDISharedLibrary.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
/**
@@ -32,14 +33,14 @@ public interface ICDISharedLibrary extends ICDIObject {
*
* @return the start address of this library
*/
- long getStartAddress();
+ IAddress getStartAddress();
/**
* Returns the end address of this library.
*
* @return the end address of this library
*/
- long getEndAddress();
+ IAddress getEndAddress();
/**
* Returns whether the symbols of this library are read.
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java
index edbf1f1b42d..515dddc0c72 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/ICDITarget.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
@@ -182,6 +183,6 @@ public interface ICDITarget extends ICDIThreadGroup, ICDISessionObject {
/**
* Returns a ICDILocation
*/
- ICDILocation createLocation(long address);
+ ICDILocation createLocation(IAddress address);
}
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIPointerValue.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIPointerValue.java
index a2c12a89ca1..77a5edb86b8 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIPointerValue.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIPointerValue.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.core.cdi.model.type;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -22,5 +23,5 @@ import org.eclipse.cdt.debug.core.cdi.CDIException;
*/
public interface ICDIPointerValue extends ICDIDerivedValue {
- long pointerValue() throws CDIException;
+ IAddress pointerValue() throws CDIException;
}
diff --git a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIReferenceValue.java b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIReferenceValue.java
index 3970e3c8324..826e61a36aa 100644
--- a/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIReferenceValue.java
+++ b/debug/org.eclipse.cdt.debug.core/cdi/org/eclipse/cdt/debug/core/cdi/model/type/ICDIReferenceValue.java
@@ -10,11 +10,12 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.cdi.model.type;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
/**
*/
public interface ICDIReferenceValue extends ICDIDerivedValue {
- long referenceValue() throws CDIException;
+ IAddress referenceValue() throws CDIException;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDIDebugModel.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDIDebugModel.java
index 62da01cf3d8..8cdf10091d9 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDIDebugModel.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDIDebugModel.java
@@ -12,6 +12,8 @@ package org.eclipse.cdt.debug.core;
import java.text.MessageFormat;
import java.util.HashMap;
+
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
@@ -255,7 +257,7 @@ public class CDIDebugModel {
*/
public static ICAddressBreakpoint createAddressBreakpoint( String sourceHandle,
IResource resource,
- long address,
+ IAddress address,
boolean enabled,
int ignoreCount,
String condition,
@@ -266,7 +268,7 @@ public class CDIDebugModel {
attributes.put( IMarker.CHAR_END, new Integer( 0 ) );
attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) );
attributes.put( IMarker.LINE_NUMBER, new Integer( -1 ) );
- attributes.put( ICLineBreakpoint.ADDRESS, Long.toString( address ) );
+ attributes.put( ICLineBreakpoint.ADDRESS, address.toHexAddressString() );
attributes.put( IBreakpoint.ENABLED, new Boolean( enabled ) );
attributes.put( ICBreakpoint.IGNORE_COUNT, new Integer( ignoreCount ) );
attributes.put( ICBreakpoint.CONDITION, condition );
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
index dba4fcfc88d..8203c53a693 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/CDebugUtils.java
@@ -91,19 +91,6 @@ public class CDebugUtils
}
}
- public static String toHexAddressString( long address )
- {
- String addressString = Long.toHexString( address );
- StringBuffer sb = new StringBuffer( 10 );
- sb.append( "0x" ); //$NON-NLS-1$
- for ( int i = 0; i < 8 - addressString.length(); ++i )
- {
- sb.append( '0' );
- }
- sb.append( addressString );
- return sb.toString();
- }
-
public static char[] getByteText( byte b )
{
return new char[]{ charFromByte( (byte)((b >>> 4) & 0x0f) ),
@@ -201,18 +188,6 @@ public class CDebugUtils
return Long.parseLong( bytesToString( bytes, le, false ), 16 );
}
- public static long toLongLong( char[] bytes, boolean le )
- {
- if ( bytes.length != 16 )
- return 0;
- return Long.parseLong( bytesToString( bytes, le, false ), 16 );
- }
-
- public static long toUnsignedLongLong( char[] bytes, boolean le )
- {
- return 0;
- }
-
private static String bytesToString( char[] bytes, boolean le, boolean signed )
{
char[] copy = new char[bytes.length];
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IAsmInstruction.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IAsmInstruction.java
index 3f8025cfee7..3f37d62653b 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IAsmInstruction.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IAsmInstruction.java
@@ -10,6 +10,8 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
+
/**
* An instruction of disassemby.
*/
@@ -20,7 +22,7 @@ public interface IAsmInstruction {
*
* @return the address of this instruction
*/
- long getAdress();
+ IAddress getAdress();
/**
* Returns the function name of this instruction,
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IBreakpointTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IBreakpointTarget.java
index 1cd1cd0e450..71b9093b1d9 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IBreakpointTarget.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IBreakpointTarget.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
/**
@@ -30,5 +31,5 @@ public interface IBreakpointTarget {
* @return the target address of the given breakpoint
* @throws DebugException if the address is not available
*/
- long getBreakpointAddress( ICLineBreakpoint breakpoint ) throws DebugException;
+ IAddress getBreakpointAddress( ICLineBreakpoint breakpoint ) throws DebugException;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java
index 65ea35cdd21..7a463421c07 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IDebugElement;
@@ -30,14 +31,14 @@ public interface ICSharedLibrary extends IDebugElement {
*
* @return the start address of this library
*/
- long getStartAddress();
+ IAddress getStartAddress();
/**
* Returns the end address of this library.
*
* @return the end address of this library
*/
- long getEndAddress();
+ IAddress getEndAddress();
/**
* Returns whether the symbols of this library are read.
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICStackFrame.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICStackFrame.java
index 1c1706341c0..eb21543be30 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICStackFrame.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICStackFrame.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IValue;
@@ -24,7 +25,7 @@ public interface ICStackFrame extends IStackFrame, ICDebugElement {
*
* @return the address of this stack frame
*/
- public long getAddress();
+ public IAddress getAddress();
/**
* Returns the source file of this stack frame or null
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlock.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlock.java
index 71a6446ac20..a94396c3a98 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlock.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlock.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IMemoryBlock;
@@ -104,13 +105,15 @@ public interface IFormattedMemoryBlock extends IMemoryBlock
char getPaddingCharacter();
- long nextRowAddress();
+ public IAddress getRealStartAddress();
- long previousRowAddress();
+ IAddress nextRowAddress();
- long nextPageAddress();
+ IAddress previousRowAddress();
- long previousPageAddress();
+ IAddress nextPageAddress();
+
+ IAddress previousPageAddress();
void reformat( int format,
int wordSize,
@@ -124,7 +127,7 @@ public interface IFormattedMemoryBlock extends IMemoryBlock
char paddingChar ) throws DebugException;
void dispose();
- Long[] getChangedAddresses();
+ IAddress[] getChangedAddresses();
boolean isFrozen();
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlockRow.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlockRow.java
index 3448c2fe76f..7387aed175c 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlockRow.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IFormattedMemoryBlockRow.java
@@ -11,6 +11,8 @@
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
+
/**
*
* Represents a row in the output table of formatted memory block.
@@ -24,7 +26,7 @@ public interface IFormattedMemoryBlockRow
*
* @return the address of this row
*/
- long getAddress();
+ IAddress getAddress();
/**
* Returns the array of memory words.
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IJumpToAddress.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IJumpToAddress.java
index bd1a8373829..58650faeb42 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IJumpToAddress.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IJumpToAddress.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
/**
@@ -22,12 +23,12 @@ public interface IJumpToAddress {
*
* @return whether this operation is currently available
*/
- public boolean canJumpToAddress( long address );
+ public boolean canJumpToAddress( IAddress address );
/**
* Causes this element to resume the execution at the specified address.
*
* @exception DebugException on failure. Reasons include:
*/
- public void jumpToAddress( long address ) throws DebugException;
+ public void jumpToAddress( IAddress address ) throws DebugException;
}
\ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IRunToAddress.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IRunToAddress.java
index 040fa5260bc..6f0723b6869 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IRunToAddress.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IRunToAddress.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.debug.core.DebugException;
/**
@@ -22,12 +23,12 @@ public interface IRunToAddress {
*
* @return whether this operation is currently available
*/
- public boolean canRunToAddress( long address );
+ public boolean canRunToAddress( IAddress address );
/**
* Causes this element to run to specified address.
*
* @exception DebugException on failure. Reasons include:
*/
- public void runToAddress( long address, boolean skipBreakpoints ) throws DebugException;
+ public void runToAddress( IAddress address, boolean skipBreakpoints ) throws DebugException;
}
\ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
index 3207b212bfb..56a94b1c725 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CBreakpointManager.java
@@ -15,6 +15,8 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
+
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.CDebugUtils;
@@ -256,7 +258,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
return getBreakpointMap().getCBreakpoint( cdiBreakpoint );
}
- public long getBreakpointAddress( ICBreakpoint breakpoint ) {
+ public IAddress getBreakpointAddress( ICBreakpoint breakpoint ) {
if ( breakpoint != null ) {
ICDIBreakpoint cdiBreakpoint = getBreakpointMap().getCDIBreakpoint( breakpoint );
if ( cdiBreakpoint instanceof ICDILocationBreakpoint ) {
@@ -269,7 +271,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
}
}
}
- return 0;
+ return fDebugTarget.getAddressFactory().getZero();
}
public void setBreakpoint( ICBreakpoint breakpoint ) throws DebugException {
@@ -493,7 +495,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
private ICDIBreakpoint setAddressBreakpoint( ICAddressBreakpoint breakpoint ) throws CDIException, CoreException, NumberFormatException {
ICDITarget cdiTarget = getCDITarget();
- ICDILocation location = cdiTarget.createLocation( Long.parseLong( breakpoint.getAddress() ) );
+ ICDILocation location = cdiTarget.createLocation( getDebugTarget().getAddressFactory().createAddress(breakpoint.getAddress()));
ICDIBreakpoint cdiBreakpoint = null;
synchronized ( getBreakpointMap() ) {
cdiBreakpoint = cdiTarget.setLocationBreakpoint( ICDIBreakpoint.REGULAR, location, null, null, true );
@@ -563,7 +565,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
else if ( !isEmpty( cdiBreakpoint.getLocation().getFunction() ) ) {
breakpoint = createFunctionBreakpoint( cdiBreakpoint );
}
- else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) {
+ else if ( ! cdiBreakpoint.getLocation().getAddress().isZero() ) {
breakpoint = createAddressBreakpoint( cdiBreakpoint );
}
}
@@ -571,7 +573,7 @@ public class CBreakpointManager implements IBreakpointManagerListener, ICDIEvent
else if ( !isEmpty( cdiBreakpoint.getLocation().getFunction() ) ) {
breakpoint = createFunctionBreakpoint( cdiBreakpoint );
}
- else if ( cdiBreakpoint.getLocation().getAddress() > 0 ) {
+ else if ( ! cdiBreakpoint.getLocation().getAddress().isZero()) {
breakpoint = createAddressBreakpoint( cdiBreakpoint );
}
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
index a149e9e0bb4..fd806e93377 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/breakpoints/CAddressBreakpoint.java
@@ -10,13 +10,12 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.core.breakpoints;
-import java.text.MessageFormat;
import java.util.Map;
import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
-import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.osgi.framework.msg.MessageFormat;
/**
* A breakpoint that suspend the execution when a particular address is reached.
@@ -58,8 +57,7 @@ public class CAddressBreakpoint extends AbstractLineBreakpoint implements ICAddr
sb.append( name );
}
try {
- long address = Long.parseLong( getAddress() );
- sb.append( MessageFormat.format( BreakpointMessages.getString( "CAddressBreakpoint.2" ), new String[] { CDebugUtils.toHexAddressString( address ) } ) ); //$NON-NLS-1$
+ sb.append( MessageFormat.format( BreakpointMessages.getString( "CAddressBreakpoint.2" ), new String[] { getAddress() } ) ); //$NON-NLS-1$
}
catch( NumberFormatException e ) {
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/AsmInstruction.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/AsmInstruction.java
index 00b21047c10..7a52aabf51c 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/AsmInstruction.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/AsmInstruction.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
import org.eclipse.cdt.debug.core.model.IAsmInstruction;
@@ -30,7 +31,7 @@ public class AsmInstruction implements IAsmInstruction {
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IAsmInstruction#getAdress()
*/
- public long getAdress() {
+ public IAddress getAdress() {
return fCDIInstruction.getAdress();
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
index d75c3f90ab4..9c00a1b0b48 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
@@ -15,7 +15,10 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
+
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IBinary;
@@ -205,6 +208,8 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
*/
private Preferences fPreferences = null;
+ private IAddressFactory fAddressFactory;
+
/**
* Constructor for CDebugTarget.
*/
@@ -754,7 +759,8 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
* @see org.eclipse.debug.core.model.IMemoryBlockRetrieval#getMemoryBlock(long, long)
*/
public IMemoryBlock getMemoryBlock( long startAddress, long length ) throws DebugException {
- return null;
+ //TODO:IPF_TODO look into implementation
+ throw new RuntimeException("Method getMemoryBlock should not be called from CDT");
}
/* (non-Javadoc)
@@ -1498,7 +1504,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IRunToAddress#canRunToAddress(long)
*/
- public boolean canRunToAddress( long address ) {
+ public boolean canRunToAddress( IAddress address ) {
// for now
return canResume();
}
@@ -1506,7 +1512,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IRunToAddress#runToAddress(long, boolean)
*/
- public void runToAddress( long address, boolean skipBreakpoints ) throws DebugException {
+ public void runToAddress( IAddress address, boolean skipBreakpoints ) throws DebugException {
if ( !canRunToAddress( address ) )
return;
if ( skipBreakpoints ) {
@@ -1602,7 +1608,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IJumpToAddress#canJumpToAddress(long)
*/
- public boolean canJumpToAddress( long address ) {
+ public boolean canJumpToAddress( IAddress address ) {
// check if supports jump to address
return canResume();
}
@@ -1610,7 +1616,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IJumpToAddress#jumpToAddress(long)
*/
- public void jumpToAddress( long address ) throws DebugException {
+ public void jumpToAddress( IAddress address ) throws DebugException {
if ( !canJumpToAddress( address ) )
return;
ICDILocation location = getCDITarget().createLocation( address );
@@ -1760,8 +1766,8 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.IBreakpointTarget#getBreakpointAddress(org.eclipse.cdt.debug.core.model.ICLineBreakpoint)
*/
- public long getBreakpointAddress( ICLineBreakpoint breakpoint ) throws DebugException {
- return (getBreakpointManager() != null) ? getBreakpointManager().getBreakpointAddress( breakpoint ) : 0;
+ public IAddress getBreakpointAddress( ICLineBreakpoint breakpoint ) throws DebugException {
+ return (getBreakpointManager() != null) ? getBreakpointManager().getBreakpointAddress( breakpoint ) : getAddressFactory().getZero();
}
/* (non-Javadoc)
@@ -1838,4 +1844,21 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
public boolean isPostMortem() {
return false;
}
+
+ public IAddressFactory getAddressFactory()
+ {
+ if ( fAddressFactory == null )
+ {
+ if ( getExecFile() != null && CoreModel.getDefault().isBinary( getExecFile() ) )
+ {
+ ICElement cFile = CCorePlugin.getDefault().getCoreModel().create( getExecFile() );
+ if ( cFile instanceof IBinary )
+ {
+ fAddressFactory = ((IBinary)cFile).getAddressFactory();
+ }
+ }
+ }
+ return fAddressFactory;
+ }
+
}
\ No newline at end of file
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java
index 8de2a1d715f..0054764738e 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CFormattedMemoryBlock.java
@@ -10,9 +10,11 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.model;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -43,14 +45,14 @@ public class CFormattedMemoryBlock extends CDebugElement
{
class CFormattedMemoryBlockRow implements IFormattedMemoryBlockRow
{
- private long fAddress;
+ private IAddress fAddress;
private String[] fData;
private String fAscii;
/**
* Constructor for CFormattedMemoryBlockRow.
*/
- public CFormattedMemoryBlockRow( long address, String[] data, String ascii )
+ public CFormattedMemoryBlockRow( IAddress address, String[] data, String ascii )
{
fAddress = address;
fData = data;
@@ -60,7 +62,7 @@ public class CFormattedMemoryBlock extends CDebugElement
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.IFormattedMemoryBlockRow#getAddress()
*/
- public long getAddress()
+ public IAddress getAddress()
{
return fAddress;
}
@@ -92,7 +94,7 @@ public class CFormattedMemoryBlock extends CDebugElement
private boolean fDisplayAscii = true;
private char fPaddingChar = '.';
private List fRows = null;
- private Long[] fChangedAddresses = new Long[0];
+ private IAddress[] fChangedAddresses = new IAddress[0];
private boolean fStartAddressChanged = false;
/**
@@ -219,33 +221,33 @@ public class CFormattedMemoryBlock extends CDebugElement
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.IFormattedMemoryBlock#nextRowAddress()
*/
- public long nextRowAddress()
+ public IAddress nextRowAddress()
{
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.IFormattedMemoryBlock#previousRowAddress()
*/
- public long previousRowAddress()
+ public IAddress previousRowAddress()
{
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.IFormattedMemoryBlock#nextPageAddress()
*/
- public long nextPageAddress()
+ public IAddress nextPageAddress()
{
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.IFormattedMemoryBlock#previousPageAddress()
*/
- public long previousPageAddress()
+ public IAddress previousPageAddress()
{
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
@@ -284,14 +286,19 @@ public class CFormattedMemoryBlock extends CDebugElement
* @see org.eclipse.debug.core.model.IMemoryBlock#getStartAddress()
*/
public long getStartAddress()
+ {
+ //IPF_TODO look into implementation
+ throw new RuntimeException("Method IMemoryBlock.getStartAddress shoud not be called in CDT debug");
+ }
+
+ public IAddress getRealStartAddress()
{
if ( fCDIMemoryBlock != null )
{
return fCDIMemoryBlock.getStartAddress();
}
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
-
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IMemoryBlock#getLength()
*/
@@ -510,19 +517,19 @@ public class CFormattedMemoryBlock extends CDebugElement
fireTerminateEvent();
}
- public Long[] getChangedAddresses()
+ public IAddress[] getChangedAddresses()
{
return fChangedAddresses;
}
- protected void setChangedAddresses( Long[] changedAddresses )
+ protected void setChangedAddresses( IAddress[] changedAddresses )
{
fChangedAddresses = changedAddresses;
}
protected void resetChangedAddresses()
{
- fChangedAddresses = new Long[0];
+ fChangedAddresses = new IAddress[0];
}
/**
@@ -679,12 +686,13 @@ public class CFormattedMemoryBlock extends CDebugElement
return fStartAddressChanged;
}
- private long getRowAddress( int offset )
+ private IAddress getRowAddress(int offset )
{
- long result = getStartAddress() + offset;
- if ( result > 0xFFFFFFFFL )
+ IAddress result = getRealStartAddress().add(BigInteger.valueOf(offset));
+ IAddress max = ((CDebugTarget)getDebugTarget()).getAddressFactory().getMax();
+ if ( result.compareTo(max) > 0 )
{
- result -= 0xFFFFFFFFL;
+ result = result.add(result.getMaxOffset().negate());
}
return result;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java
index f7deaa7763e..e3ec2ad8a99 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.core.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
@@ -52,21 +53,21 @@ public class CSharedLibrary extends CDebugElement
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICSharedLibrary#getStartAddress()
*/
- public long getStartAddress()
+ public IAddress getStartAddress()
{
if ( getCDISharedLibrary() != null )
return getCDISharedLibrary().getStartAddress();
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICSharedLibrary#getEndAddress()
*/
- public long getEndAddress()
+ public IAddress getEndAddress()
{
if ( getCDISharedLibrary() != null )
return getCDISharedLibrary().getEndAddress();
- return 0;
+ return ((CDebugTarget)getDebugTarget()).getAddressFactory().getZero();
}
/* (non-Javadoc)
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java
index 90760df6335..f60169be0ca 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java
@@ -16,6 +16,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
@@ -529,7 +531,7 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.model.ICStackFrame#getAddress()
*/
- public long getAddress() {
+ public IAddress getAddress() {
return getCDIStackFrame().getLocation().getAddress();
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java
index cc98e654130..7a480d8817d 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java
@@ -16,6 +16,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
@@ -274,12 +276,20 @@ public class CValue extends AbstractCValue {
private String getLongValueString( ICDILongValue value ) throws CDIException {
CVariableFormat format = getParentVariable().getFormat();
if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.DECIMAL.equals( format ) ) {
- return (isUnsigned()) ? Long.toString( value.longValue() ) : Integer.toString( value.intValue() );
+ if ( isUnsigned() ) {
+ BigInteger bigValue = new BigInteger( value.getValueString() );
+ return bigValue.toString();
+ }
+ return Long.toString( value.longValue() );
}
else if ( CVariableFormat.HEXADECIMAL.equals( format ) ) {
StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$
- String stringValue = Long.toHexString( (isUnsigned()) ? value.longValue() : value.intValue() );
- sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
+ if ( isUnsigned() ) {
+ BigInteger bigValue = new BigInteger( value.getValueString() );
+ sb.append( bigValue.toString( 16 ) );
+ }
+ else
+ sb.append( Long.toHexString( value.longValue() ) );
return sb.toString();
}
return null;
@@ -351,33 +361,32 @@ public class CValue extends AbstractCValue {
return null;
}
- private String getPointerValueString( ICDIPointerValue value ) throws CDIException {
- long longValue = value.pointerValue();
+ private String getPointerValueString( ICDIPointerValue value ) throws CDIException
+ {
+ //IPF_TODO Workaround to solve incoorect handling of structures referenced by pointers or references
+ IAddress address = value.pointerValue();
+ if(address == null) return "";
CVariableFormat format = getParentVariable().getFormat();
- if ( CVariableFormat.DECIMAL.equals( format ) ) {
- return Long.toString( longValue );
- }
- else if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) ) {
- StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$
- String stringValue = Long.toHexString( longValue );
- sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
- return sb.toString();
- }
+ if( CVariableFormat.NATURAL.equals( format ) ||
+ CVariableFormat.HEXADECIMAL.equals( format ) )
+ return address.toHexAddressString();
+ if( CVariableFormat.DECIMAL.equals( format ))
+ return address.toString();
return null;
}
- private String getReferenceValueString( ICDIReferenceValue value ) throws CDIException {
- long longValue = value.referenceValue();
+ private String getReferenceValueString( ICDIReferenceValue value ) throws CDIException
+ {
+ //NOTE: Reference should be displayed identically to address
+ //IPF_TODO Workaround to solve incoorect handling of structures referenced by pointers or references
+ IAddress address = value.referenceValue();
+ if(address == null) return "";
CVariableFormat format = getParentVariable().getFormat();
- if ( CVariableFormat.DECIMAL.equals( format ) ) {
- return Long.toString( longValue );
- }
- else if ( CVariableFormat.NATURAL.equals( format ) || CVariableFormat.HEXADECIMAL.equals( format ) ) {
- StringBuffer sb = new StringBuffer( "0x" ); //$NON-NLS-1$
- String stringValue = Long.toHexString( longValue );
- sb.append( (stringValue.length() > 8) ? stringValue.substring( stringValue.length() - 8 ) : stringValue );
- return sb.toString();
- }
+ if( CVariableFormat.NATURAL.equals( format ) ||
+ CVariableFormat.HEXADECIMAL.equals( format ) )
+ return address.toHexAddressString();
+ if( CVariableFormat.DECIMAL.equals( format ))
+ return address.toString();
return null;
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/Disassembly.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/Disassembly.java
index 448169289d4..d9735959066 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/Disassembly.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/Disassembly.java
@@ -10,8 +10,10 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.core.model;
+import java.math.BigInteger;
import java.util.ArrayList;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.ICDebugConstants;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -62,7 +64,7 @@ public class Disassembly extends CDebugElement implements IDisassembly {
String fileName = frame.getFile();
int lineNumber = frame.getLineNumber();
ICDIMixedInstruction[] mixedInstrs = new ICDIMixedInstruction[0];
- long address = frame.getAddress();
+ IAddress address = frame.getAddress();
if ( fileName != null && fileName.length() > 0 ) {
try {
mixedInstrs = sm.getMixedInstructions( fileName,
@@ -73,19 +75,17 @@ public class Disassembly extends CDebugElement implements IDisassembly {
targetRequestFailed( e.getMessage(), e );
}
}
- if ( mixedInstrs.length == 0 ||
// Double check if debugger returns correct address range.
+ if ( mixedInstrs.length == 0 ||
!containsAddress( mixedInstrs, address ) ) {
- if ( address >= 0 ) {
try {
- ICDIInstruction[] instructions = getFunctionInstructions( sm.getInstructions( address, address + DISASSEMBLY_BLOCK_SIZE ) );
+ ICDIInstruction[] instructions = getFunctionInstructions( sm.getInstructions( address, address.add(BigInteger.valueOf(DISASSEMBLY_BLOCK_SIZE)) ) );
return DisassemblyBlock.create( this, instructions );
}
catch( CDIException e ) {
targetRequestFailed( e.getMessage(), e );
}
}
- }
else {
return DisassemblyBlock.create( this, mixedInstrs );
}
@@ -94,11 +94,11 @@ public class Disassembly extends CDebugElement implements IDisassembly {
return null;
}
- private boolean containsAddress( ICDIMixedInstruction[] mi, long address ) {
+ private boolean containsAddress( ICDIMixedInstruction[] mi, IAddress address ) {
for( int i = 0; i < mi.length; ++i ) {
ICDIInstruction[] instructions = mi[i].getInstructions();
for ( int j = 0; j < instructions.length; ++j )
- if ( instructions[j].getAdress() == address )
+ if ( address.equals(instructions[j].getAdress()))
return true;
}
return false;
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java
index 4b497790833..46f2fa87f3e 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/DisassemblyBlock.java
@@ -16,6 +16,7 @@ import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMixedInstruction;
import org.eclipse.cdt.debug.core.model.IAsmInstruction;
@@ -39,9 +40,9 @@ public class DisassemblyBlock implements IDisassemblyBlock, IAdaptable {
private IAsmSourceLine[] fSourceLines;
- private long fStartAddress = 0;
+ private IAddress fStartAddress;
- private long fEndAddress = 0;
+ private IAddress fEndAddress;
private boolean fMixedMode = false;
@@ -100,8 +101,9 @@ public class DisassemblyBlock implements IDisassemblyBlock, IAdaptable {
public boolean contains( ICStackFrame frame ) {
if ( !getDisassembly().getDebugTarget().equals( frame.getDebugTarget() ) )
return false;
- long address = frame.getAddress();
- return (address >= fStartAddress && address <= fEndAddress);
+ IAddress address = frame.getAddress();
+ return ( address.compareTo(fStartAddress) >= 0 &&
+ address.compareTo(fEndAddress) <= 0 );
}
/* (non-Javadoc)
diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
index 999cf2a5d4e..6bb1dd7f2fb 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-17 Alain Magloire
+ Support for 64 bits application
+ PR 74056. Pathc from Artyom Kuanbekov
+ To much files to enumerate.
+
2004-09-15 Alain Magloire
Chang Type to take a VariableObject.
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
index 84bd7e2f37b..d7100c856e8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
@@ -16,6 +16,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
@@ -649,7 +650,7 @@ public class BreakpointManager extends Manager {
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager#createLocation(long)
*/
- public ICDILocation createLocation(long address) {
+ public ICDILocation createLocation(IAddress address) {
return new Location(address);
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
index 5f4214e1c2c..b3934319254 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
@@ -16,6 +16,7 @@ import java.util.List;
import java.util.Observable;
import java.util.Observer;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIEventManager;
import org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager;
@@ -119,7 +120,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs
MemoryManager mgr = (MemoryManager)session.getMemoryManager();
MemoryBlock[] blocks = mgr.getMemoryBlocks(miEvent.getMISession());
MIMemoryChangedEvent miMem = (MIMemoryChangedEvent)miEvent;
- Long[] addresses = miMem.getAddresses();
+ IAddress[] addresses = miMem.getAddresses();
for (int i = 0; i < blocks.length; i++) {
if (blocks[i].contains(addresses) &&
(! blocks[i].isFrozen() || blocks[i].isDirty())) {
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Location.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Location.java
index ad41f30c8d7..8617ac188c4 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Location.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Location.java
@@ -10,22 +10,23 @@
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
/**
*/
public class Location implements ICDILocation {
- long addr;
+ IAddress addr;
String file = ""; //$NON-NLS-1$
String function = ""; //$NON-NLS-1$
int line;
public Location(String f, String fnct, int l) {
- this(f, fnct, l, 0);
+ this(f, fnct, l, null);
}
- public Location(String f, String fnct, int l, long a) {
+ public Location(String f, String fnct, int l, IAddress a) {
if (f != null)
file = f;
if (fnct != null)
@@ -34,14 +35,14 @@ public class Location implements ICDILocation {
addr = a;
}
- public Location(long address) {
+ public Location(IAddress address) {
addr = address;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDILocation#getAddress()
*/
- public long getAddress() {
+ public IAddress getAddress() {
return addr;
}
@@ -86,9 +87,9 @@ public class Location implements ICDILocation {
}
}
}
- long oaddr = location.getAddress();
- if (addr != 0 && oaddr != 0) {
- if (addr == oaddr) {
+ IAddress oaddr = location.getAddress();
+ if (addr != null && oaddr != null) { //IPF_TODO: check ZERO addresses
+ if (addr.equals(oaddr)) {
return true;
}
}
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 465aa9bb978..c6f31c0b4b6 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
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -17,6 +18,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIMemoryManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock;
@@ -100,12 +102,12 @@ public class MemoryManager extends Manager implements ICDIMemoryManager {
/**
* update one Block.
*/
- public Long[] update(MemoryBlock block, List aList) throws CDIException {
+ public IAddress[] update(MemoryBlock block, List aList) throws CDIException {
Target target = (Target)block.getTarget();
MISession miSession = target.getMISession();
MemoryBlock newBlock = cloneBlock(block);
- boolean newAddress = ( newBlock.getStartAddress() != block.getStartAddress() );
- Long[] array = compareBlocks(block, newBlock);
+ boolean newAddress = ! newBlock.getStartAddress().equals(block.getStartAddress());
+ IAddress[] array = compareBlocks(block, newBlock);
// Update the block MIDataReadMemoryInfo.
block.setMIDataReadMemoryInfo(newBlock.getMIDataReadMemoryInfo());
if (array.length > 0 || newAddress) {
@@ -126,21 +128,23 @@ public class MemoryManager extends Manager implements ICDIMemoryManager {
* oldBlock.getLength() == newBlock.getLength();
* @return Long[] array of modified addresses.
*/
- Long[] compareBlocks (MemoryBlock oldBlock, MemoryBlock newBlock) throws CDIException {
+ IAddress[] compareBlocks (MemoryBlock oldBlock, MemoryBlock newBlock) throws CDIException {
byte[] oldBytes = oldBlock.getBytes();
byte[] newBytes = newBlock.getBytes();
List aList = new ArrayList(newBytes.length);
- long diff = newBlock.getStartAddress() - oldBlock.getStartAddress();
- if ( Math.abs( diff ) < newBytes.length ) {
+ BigInteger distance = newBlock.getStartAddress().distance(oldBlock.getStartAddress());
+ //IPF_TODO enshure it is OK here
+ int diff = distance.intValue();
+ if ( Math.abs(diff) < newBytes.length) {
for (int i = 0; i < newBytes.length; i++) {
- if (i + (int)diff < oldBytes.length && i + (int)diff >= 0) {
- if (oldBytes[i + (int)diff] != newBytes[i]) {
- aList.add(new Long(newBlock.getStartAddress() + i));
+ if (i + diff < oldBytes.length && i + diff >= 0) {
+ if (oldBytes[i + diff] != newBytes[i]) {
+ aList.add(newBlock.getStartAddress().add(BigInteger.valueOf(i)));
}
}
}
}
- return (Long[])aList.toArray(new Long[0]);
+ return (IAddress[])aList.toArray(new IAddress[0]);
}
/**
@@ -176,10 +180,9 @@ public class MemoryManager extends Manager implements ICDIMemoryManager {
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIMemoryManager#createMemoryBlock(long, int)
*/
- public ICDIMemoryBlock createMemoryBlock(long address, int length)
+ public ICDIMemoryBlock createMemoryBlock(IAddress address, int length)
throws CDIException {
- String addr = "0x" + Long.toHexString(address); //$NON-NLS-1$
- return createMemoryBlock(addr, length);
+ return createMemoryBlock(address.toHexAddressString(), length);
}
/**
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Session.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Session.java
index c295ec461f7..b0d67cd2c09 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Session.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/Session.java
@@ -13,6 +13,7 @@ package org.eclipse.cdt.debug.mi.core.cdi;
import java.util.Properties;
+import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDIEventManager;
@@ -54,19 +55,19 @@ public class Session implements ICDISession, ICDISessionObject {
SourceManager sourceManager;
ICDIConfiguration configuration;
- public Session(MISession miSession, boolean attach) {
+ public Session(MISession miSession, IAddressFactory addrFactory, boolean attach) {
commonSetup();
setConfiguration(new Configuration(miSession, attach));
- Target target = new Target(this, miSession);
+ Target target = new Target(this, miSession, addrFactory);
addTargets(new Target[] { target }, target);
}
- public Session(MISession miSession) {
+ public Session(MISession miSession, IAddressFactory addrFactory) {
commonSetup();
setConfiguration(new CoreFileConfiguration());
- Target target = new Target(this, miSession);
+ Target target = new Target(this, miSession, addrFactory);
addTargets(new Target[] { target }, target);
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
index bc4e4fe8c31..8df65049e1a 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
@@ -17,6 +17,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIConfiguration;
import org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager;
@@ -145,9 +146,10 @@ public class SharedLibraryManager extends Manager implements ICDISharedLibraryMa
}
public boolean hasSharedLibChanged(ICDISharedLibrary lib, MIShared miLib) {
+ IAddressFactory af = ((Target)getSession().getCurrentTarget()).getAddressFactory();
return !miLib.getName().equals(lib.getFileName()) ||
- miLib.getFrom() != lib.getStartAddress() ||
- miLib.getTo() != lib.getEndAddress() ||
+ !af.createAddress(miLib.getFrom()).equals(lib.getStartAddress()) ||
+ !af.createAddress(miLib.getTo()).equals(lib.getEndAddress()) ||
miLib.isRead() != lib.areSymbolsLoaded();
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
index 0b878b2a2d6..1c14e671699 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
@@ -12,6 +12,7 @@ package org.eclipse.cdt.debug.mi.core.cdi;
import java.util.StringTokenizer;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDISourceManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
@@ -145,16 +146,16 @@ public class SourceManager extends Manager implements ICDISourceManager {
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDISourceManager#getInstructions(long, long)
*/
- public ICDIInstruction[] getInstructions(long start, long end) throws CDIException {
+ public ICDIInstruction[] getInstructions(IAddress start, IAddress end) throws CDIException {
Target target = (Target)getSession().getCurrentTarget();
return getInstructions(target, start, end);
}
- public ICDIInstruction[] getInstructions(Target target, long start, long end) throws CDIException {
+ public ICDIInstruction[] getInstructions(Target target, IAddress start, IAddress end) throws CDIException {
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
String hex = "0x"; //$NON-NLS-1$
- String sa = hex + Long.toHexString(start);
- String ea = hex + Long.toHexString(end);
+ String sa = start.toHexAddressString();
+ String ea = end.toHexAddressString();
MIDataDisassemble dis = factory.createMIDataDisassemble(sa, ea, false);
try {
mi.postCommand(dis);
@@ -205,16 +206,15 @@ public class SourceManager extends Manager implements ICDISourceManager {
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDISourceManager#getMixedInstructions(long, long)
*/
- public ICDIMixedInstruction[] getMixedInstructions(long start, long end) throws CDIException {
+ public ICDIMixedInstruction[] getMixedInstructions(IAddress start, IAddress end) throws CDIException {
Target target = (Target)getSession().getCurrentTarget();
return getMixedInstructions(target, start, end);
}
- public ICDIMixedInstruction[] getMixedInstructions(Target target, long start, long end) throws CDIException {
+ public ICDIMixedInstruction[] getMixedInstructions(Target target, IAddress start, IAddress end) throws CDIException {
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
- String hex = "0x"; //$NON-NLS-1$
- String sa = hex + Long.toHexString(start);
- String ea = hex + Long.toHexString(end);
+ String sa = start.toHexAddressString();
+ String ea = end.toHexAddressString();
MIDataDisassemble dis = factory.createMIDataDisassemble(sa, ea, true);
try {
mi.postCommand(dis);
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
index 94e855d61c4..7bcb656f1a4 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java
@@ -95,7 +95,7 @@ public class CreatedEvent implements ICDICreatedEvent {
MISession miSession = mblock.getMISession();
ICDIMemoryBlock[] blocks = mgr.getMemoryBlocks(miSession);
for (int i = 0; i < blocks.length; i++) {
- if (blocks[i].getStartAddress() == mblock.getAddress() &&
+ if (blocks[i].getStartAddress().equals(mblock.getAddress()) &&
blocks[i].getLength() == mblock.getLength()) {
source = blocks[i];
break;
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
index c3f836ca766..b342acded85 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/event/MemoryChangedEvent.java
@@ -13,6 +13,7 @@ package org.eclipse.cdt.debug.mi.core.cdi.event;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.event.ICDIMemoryChangedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
@@ -36,16 +37,16 @@ public class MemoryChangedEvent implements ICDIMemoryChangedEvent {
/**
* @see org.eclipse.cdt.debug.core.cdi.event.ICDIEvent#getAddresses()
*/
- public Long[] getAddresses() {
+ public IAddress[] getAddresses() {
/* But only returns the address that are in the block. */
- Long[] longs = miMem.getAddresses();
- List aList = new ArrayList(longs.length);
- for (int i = 0; i < longs.length; i++) {
- if (source.contains(longs[i])) {
- aList.add(longs[i]);
+ IAddress[] mi_addresses = miMem.getAddresses();
+ List aList = new ArrayList(mi_addresses.length);
+ for (int i = 0; i < mi_addresses.length; i++) {
+ if (source.contains(mi_addresses[i])) {
+ aList.add(mi_addresses[i]);
}
}
- return (Long[])aList.toArray(new Long[0]);
+ return (IAddress[])aList.toArray(new IAddress[0]);
}
/**
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
index 92992104230..cd1baca1aa0 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
@@ -153,7 +153,7 @@ public class Breakpoint extends CObject implements ICDILocationBreakpoint {
fLocation = new Location (miBreakpoint.getFile(),
miBreakpoint.getFunction(),
miBreakpoint.getLine(),
- miBreakpoint.getAddress());
+ ((Target)getTarget()).getAddressFactory().createAddress(miBreakpoint.getAddress()));
}
}
return fLocation;
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
index 48e5cb95a02..d7f291836c8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Instruction.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction;
import org.eclipse.cdt.debug.mi.core.output.MIAsm;
@@ -26,8 +27,8 @@ public class Instruction extends CObject implements ICDIInstruction {
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIInstruction#getAdress()
*/
- public long getAdress() {
- return asm.getAddress();
+ public IAddress getAdress() {
+ return ((Target)getTarget()).getAddressFactory().createAddress(asm.getAddress());
}
/**
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 6d1f4a73149..7f6eeb73420 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
@@ -11,9 +11,11 @@
package org.eclipse.cdt.debug.mi.core.cdi.model;
+import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock;
import org.eclipse.cdt.debug.mi.core.MIException;
@@ -32,16 +34,19 @@ import org.eclipse.cdt.debug.mi.core.output.MIMemory;
*/
public class MemoryBlock extends CObject implements ICDIMemoryBlock {
- MIDataReadMemoryInfo mem;
String expression;
boolean frozen;
boolean dirty;
+ private MIDataReadMemoryInfo mem;
+ private IAddress cStartAddress; //cashed start address
+ private byte[] cBytes; //cashed bytes
+
public MemoryBlock(Target target, String exp, MIDataReadMemoryInfo info) {
super(target);
expression = exp;
- mem = info;
frozen = true;
+ setMIDataReadMemoryInfo(info);
}
/**
@@ -52,9 +57,12 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
}
/**
- * Reset the internal MIDataReadMemoryInfo.
+ * Reset the internal MIDataReadMemoryInfo. All modifications into mem info should be done
+ * using this method
*/
public void setMIDataReadMemoryInfo(MIDataReadMemoryInfo m) {
+ cStartAddress = ((Target)getTarget()).getAddressFactory().createAddress(m.getAddress());
+ cBytes = getBytes(m);
mem = m;
}
@@ -68,7 +76,7 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
/**
* @return true if any address in the array is within the block.
*/
- public boolean contains(Long[] adds) {
+ public boolean contains(IAddress[] adds) {
for (int i = 0; i < adds.length; i++) {
if (contains(adds[i])) {
return true;
@@ -80,10 +88,12 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
/**
* @return true if the address is within the block.
*/
- public boolean contains(Long addr) {
- long start = getStartAddress();
+ public boolean contains(IAddress addr) {
+ IAddress start = getStartAddress();
long length = getLength();
- if (start <= addr.longValue() && addr.longValue() <= start + length) {
+ if ( start.compareTo(addr) <= 0 &&
+ addr.compareTo(start.add(BigInteger.valueOf(length))) <= 0 )
+ {
return true;
}
return false;
@@ -104,10 +114,10 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
}
/**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#getBytes()
+ *
*/
- public byte[] getBytes() throws CDIException {
- MIMemory[] miMem = mem.getMemories();
+ private byte[] getBytes(MIDataReadMemoryInfo m) {
+ MIMemory[] miMem = m.getMemories();
List aList = new ArrayList();
for (int i = 0; i < miMem.length; i++) {
long[] data = miMem[i].getData();
@@ -123,6 +133,10 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
return bytes;
}
+ public byte[] getBytes() throws CDIException {
+ return cBytes;
+ }
+
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#refresh()
*/
@@ -130,7 +144,7 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
Target target = (Target)getTarget();
MemoryManager mgr = (MemoryManager)target.getSession().getMemoryManager();
setDirty(true);
- Long[] addresses = mgr.update(this, null);
+ IAddress[] addresses = mgr.update(this, null);
// Check if this affects other blocks.
if (addresses.length > 0) {
MemoryBlock[] blocks = mgr.getMemoryBlocks(target.getMISession());
@@ -154,8 +168,8 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock {
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#getStartAddress()
*/
- public long getStartAddress() {
- return mem.getAddress();
+ public IAddress getStartAddress() {
+ return cStartAddress;
}
/**
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java
index 0edb1bc9202..55e31e602ad 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java
@@ -11,6 +11,7 @@
package org.eclipse.cdt.debug.mi.core.cdi.model;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
@@ -47,15 +48,15 @@ public class SharedLibrary extends CObject implements ICDISharedLibrary {
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary#getStartAddress()
*/
- public long getStartAddress() {
- return miShared.getFrom();
+ public IAddress getStartAddress() {
+ return ((Target)getTarget()).getAddressFactory().createAddress(miShared.getFrom());
}
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary#getEndAddress()
*/
- public long getEndAddress() {
- return miShared.getTo();
+ public IAddress getEndAddress() {
+ return ((Target)getTarget()).getAddressFactory().createAddress(miShared.getTo());
}
/**
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
index 3e27456dc3c..bc5ec330cee 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
@@ -130,10 +130,12 @@ public class StackFrame extends CObject implements ICDIStackFrame {
*/
public ICDILocation getLocation() {
if (frame != null) {
- return new Location(frame.getFile(), frame.getFunction(),
- frame.getLine(), frame.getAddress());
+ return new Location(frame.getFile(),
+ frame.getFunction(),
+ frame.getLine(),
+ ((Target)getTarget()).getAddressFactory().createAddress(frame.getAddress()));
}
- return new Location("", "", 0, 0); //$NON-NLS-1$ //$NON-NLS-2$
+ return new Location("", "", 0, ((Target)getTarget()).getAddressFactory().getZero()); //$NON-NLS-1$ //$NON-NLS-2$
}
/**
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 f0f1e7ac377..1ee8c70f3de 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
@@ -13,6 +13,8 @@ package org.eclipse.cdt.debug.mi.core.cdi.model;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.cdt.core.IAddress;
+import org.eclipse.cdt.core.IAddressFactory;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDICondition;
import org.eclipse.cdt.debug.core.cdi.ICDILocation;
@@ -26,6 +28,7 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MISession;
import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager;
+import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
@@ -52,7 +55,6 @@ import org.eclipse.cdt.debug.mi.core.output.MIFrame;
import org.eclipse.cdt.debug.mi.core.output.MIInfo;
import org.eclipse.cdt.debug.mi.core.output.MIInfoThreadsInfo;
import org.eclipse.cdt.debug.mi.core.output.MIThreadSelectInfo;
-import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
/**
*/
@@ -63,11 +65,13 @@ public class Target implements ICDITarget {
Thread[] noThreads = new Thread[0];
Thread[] currentThreads;
int currentThreadId;
+ IAddressFactory addressFactory;
- public Target(Session s, MISession mi) {
+ public Target(Session s, MISession mi, IAddressFactory addrFactory) {
session = s;
miSession = mi;
currentThreads = noThreads;
+ addressFactory = addrFactory;
}
public MISession getMISession() {
@@ -464,8 +468,8 @@ public class Target implements ICDITarget {
loc = location.getFile() + ":" + location.getLineNumber(); //$NON-NLS-1$
} else if (location.getFunction() != null && location.getFunction().length() > 0) {
loc = location.getFunction();
- } else if (location.getAddress() != 0) {
- loc = "*" + location.getAddress(); //$NON-NLS-1$
+ } else if ( ! location.getAddress().isZero() ) {
+ loc = "*" + location.getAddress().toString(); //$NON-NLS-1$
}
MIExecUntil until = factory.createMIExecUntil(loc);
try {
@@ -575,8 +579,8 @@ public class Target implements ICDITarget {
loc = location.getFile() + ":" + location.getLineNumber(); //$NON-NLS-1$
} else if (location.getFunction() != null && location.getFunction().length() > 0) {
loc = location.getFunction();
- } else if (location.getAddress() != 0) {
- loc = "*" + location.getAddress(); //$NON-NLS-1$
+ } else if (! location.getAddress().isZero()) {
+ loc = "*" + location.getAddress().toString(); //$NON-NLS-1$
}
MIJump jump = factory.createMIJump(loc);
try {
@@ -742,10 +746,44 @@ public class Target implements ICDITarget {
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#createLocation(long)
*/
- public ICDILocation createLocation(long address) {
+ public ICDILocation createLocation(IAddress address) {
BreakpointManager bMgr = ((Session)getSession()).getBreakpointManager();
return bMgr.createLocation(address);
}
+/*
+ private IAddressFactory createAddressFactory() throws CDIException
+ {
+ MISession mi = ((Session)getSession()).getMISession();
+ CommandFactory cf = mi.getCommandFactory();
+ MIGDBShowAddressSize as = cf.createMIGDBShowAddressSize();
+ try
+ {
+ mi.postCommand(as );
+ MIGDBShowAddressSizeInfo info = (MIGDBShowAddressSizeInfo)as.getMIInfo();
+ if (info == null)
+ {
+ throw new CDIException("Target is not responding");
+ }
+ switch ( info.getAddressSize() )
+ {
+ case 32:
+ return new Addr32Factory();
+ case 64:
+ return new Addr64Factory();
+ default:
+ throw new CDIException("Undefined address size");
+ }
+ }
+ catch (MIException e)
+ {
+ throw new MI2CDIException(e);
+ }
+ }
+*/
+ public IAddressFactory getAddressFactory()
+ {
+ return addressFactory;
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
index eb07648bab3..a8b920067b6 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
@@ -11,8 +11,10 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIPointerValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -29,17 +31,19 @@ public class PointerValue extends DerivedValue implements ICDIPointerValue {
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIPointerValue#pointerValue()
*/
- public long pointerValue() throws CDIException {
- long value = 0;
- String valueString = getValueString();
+ public IAddress pointerValue() throws CDIException {
+ String valueString = getValueString().trim();
int space = valueString.indexOf(' ');
if (space != -1) {
valueString = valueString.substring(0, space).trim();
}
- try {
- value = Long.decode(valueString).longValue();
- } catch (NumberFormatException e) {
+ try{
+
+ return ((Target)getTarget()).getAddressFactory().createAddress(valueString);
+ }
+ catch(Exception e)
+ {
+ return null;
}
- return value;
}
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
index 4092f58568e..3a697af9d74 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
@@ -11,8 +11,10 @@
package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -32,8 +34,7 @@ public class ReferenceValue extends DerivedValue implements ICDIReferenceValue {
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceValue#referenceValue()
*/
- public long referenceValue() throws CDIException {
- long value = 0;
+ public IAddress referenceValue() throws CDIException {
String valueString = getValueString().trim();
if ( valueString.startsWith("@") ) //$NON-NLS-1$
valueString = valueString.substring( 1 );
@@ -41,10 +42,14 @@ public class ReferenceValue extends DerivedValue implements ICDIReferenceValue {
if (space != -1) {
valueString = valueString.substring(0, space).trim();
}
- try {
- value = Long.decode(valueString).longValue();
- } catch (NumberFormatException e) {
+ try{
+
+ return ((Target)getTarget()).getAddressFactory().createAddress(valueString);
}
- return value;
+ catch(Exception e)
+ {
+ return null;
+ }
+
}
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java
index bd4ca9936c4..daef7912414 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java
@@ -222,6 +222,10 @@ public class CommandFactory {
return new MIGDBShowSolibSearchPath();
}
+ public MIGDBShowAddressSize createMIGDBShowAddressSize() {
+ return new MIGDBShowAddressSize();
+ }
+
public MIStackInfoDepth createMIStackInfoDepth() {
return new MIStackInfoDepth();
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/MIGDBShowAddressSize.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/MIGDBShowAddressSize.java
new file mode 100644
index 00000000000..d99684abb6f
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/command/MIGDBShowAddressSize.java
@@ -0,0 +1,38 @@
+/*
+ * Created on Jun 4, 2004
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package org.eclipse.cdt.debug.mi.core.command;
+
+import org.eclipse.cdt.debug.mi.core.MIException;
+import org.eclipse.cdt.debug.mi.core.output.MIGDBShowAddressSizeInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIOutput;
+
+/**
+ * @author root
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class MIGDBShowAddressSize extends MIGDBShow {
+
+ public MIGDBShowAddressSize () {
+ super(new String[] { "remoteaddresssize" });
+ }
+
+ public MIInfo getMIInfo() throws MIException {
+ MIGDBShowAddressSizeInfo info = null;
+ MIOutput out = getMIOutput();
+ if (out != null) {
+ info = new MIGDBShowAddressSizeInfo(out);
+ if (info.isError()) {
+ throwMIException(info, out);
+ }
+ }
+ return info;
+ }
+
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java
index 9530e50d5bb..a4723471d85 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java
@@ -12,7 +12,7 @@ package org.eclipse.cdt.debug.mi.core.event;
import org.eclipse.cdt.debug.mi.core.MISession;
-
+import org.eclipse.cdt.core.IAddress;
/**
* This can not be detected yet by gdb/mi.
@@ -20,18 +20,18 @@ import org.eclipse.cdt.debug.mi.core.MISession;
*/
public class MIMemoryChangedEvent extends MIChangedEvent {
- Long[] addresses;
+ IAddress[] addresses;
- public MIMemoryChangedEvent(MISession source, Long[] addrs) {
+ public MIMemoryChangedEvent(MISession source, IAddress[] addrs) {
this(source, 0, addrs);
}
- public MIMemoryChangedEvent(MISession source, int token, Long[] addrs) {
+ public MIMemoryChangedEvent(MISession source, int token, IAddress[] addrs) {
super(source, token);
addresses = addrs;
}
- public Long[] getAddresses() {
+ public IAddress[] getAddresses() {
return addresses;
}
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryCreatedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryCreatedEvent.java
index 4132d86b185..ff44c84ff8a 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryCreatedEvent.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/event/MIMemoryCreatedEvent.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.event;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.mi.core.MISession;
@@ -20,20 +21,20 @@ import org.eclipse.cdt.debug.mi.core.MISession;
*/
public class MIMemoryCreatedEvent extends MICreatedEvent {
- long address;
+ IAddress address;
long totalBytes;
- public MIMemoryCreatedEvent(MISession source, long addr, long total) {
+ public MIMemoryCreatedEvent(MISession source, IAddress addr, long total) {
this(source, 0, addr, total);
}
- public MIMemoryCreatedEvent(MISession source, int token, long addr, long total) {
+ public MIMemoryCreatedEvent(MISession source, int token, IAddress addr, long total) {
super(source, token);
address = addr;
totalBytes = total;
}
- public long getAddress() {
+ public IAddress getAddress() {
return address;
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIAsm.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIAsm.java
index 25eee82698e..c2c3095d107 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIAsm.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIAsm.java
@@ -14,7 +14,7 @@ package org.eclipse.cdt.debug.mi.core.output;
* Represent a GDB Tuple MI assembly response.
*/
public class MIAsm {
- long address;
+ String address;
String function = ""; //$NON-NLS-1$
String opcode = ""; //$NON-NLS-1$
String args = ""; //$NON-NLS-1$
@@ -24,7 +24,7 @@ public class MIAsm {
parse(tuple);
}
- public long getAddress() {
+ public String getAddress() {
return address;
}
@@ -43,7 +43,7 @@ public class MIAsm {
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append('{');
- buffer.append("address=\"" + Long.toHexString(address) +"\""); //$NON-NLS-1$//$NON-NLS-2$
+ buffer.append("address=\"" + address +"\""); //$NON-NLS-1$//$NON-NLS-2$
buffer.append(",func-name=\"" + function + "\""); //$NON-NLS-1$//$NON-NLS-2$
buffer.append(",offset=\"").append(offset).append('"'); //$NON-NLS-1$
buffer.append(",inst=\"" + getInstruction() + "\""); //$NON-NLS-1$//$NON-NLS-2$
@@ -64,7 +64,7 @@ public class MIAsm {
if (var.equals("address")) { //$NON-NLS-1$
try {
- address = Long.decode(str.trim()).longValue();
+ address = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("func-name")) { //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java
index a8e711163a7..4de34607b31 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java
@@ -54,7 +54,7 @@ public class MIBreakpoint {
String type = ""; //$NON-NLS-1$
String disp = ""; //$NON-NLS-1$
boolean enabled;
- long address;
+ String address;
String func = ""; //$NON-NLS-1$
String file = ""; //$NON-NLS-1$
int line;
@@ -146,7 +146,7 @@ public class MIBreakpoint {
enabled = e;
}
- public long getAddress() {
+ public String getAddress() {
return address;
}
@@ -228,7 +228,7 @@ public class MIBreakpoint {
enabled = str.equals("y"); //$NON-NLS-1$
} else if (var.equals("addr")) { //$NON-NLS-1$
try {
- address = Long.decode(str.trim()).longValue();
+ address = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("func")) { //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
index 63324b7f5f0..1b0e09d4a99 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIDataReadMemoryInfo.java
@@ -18,7 +18,7 @@ package org.eclipse.cdt.debug.mi.core.output;
*/
public class MIDataReadMemoryInfo extends MIInfo {
- long addr;
+ String addr;
long nextRow;
long prevRow;
long nextPage;
@@ -33,7 +33,7 @@ public class MIDataReadMemoryInfo extends MIInfo {
parse();
}
- public long getAddress() {
+ public String getAddress() {
return addr;
}
@@ -96,7 +96,7 @@ public class MIDataReadMemoryInfo extends MIInfo {
if (var.equals("addr")) { //$NON-NLS-1$
try {
- addr = Long.decode(str.trim()).longValue();
+ addr = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("nr-bytes")) { //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIFrame.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
index ba1cc183553..7018bc30c95 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
@@ -16,7 +16,7 @@ package org.eclipse.cdt.debug.mi.core.output;
public class MIFrame {
int level;
- long addr;
+ String addr;
String func = ""; //$NON-NLS-1$
String file = ""; //$NON-NLS-1$
int line;
@@ -42,7 +42,7 @@ public class MIFrame {
return line;
}
- public long getAddress() {
+ public String getAddress() {
return addr;
}
@@ -53,7 +53,7 @@ public class MIFrame {
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append("level=\"" + level + "\""); //$NON-NLS-1$//$NON-NLS-2$
- buffer.append(",addr=\"" + Long.toHexString(addr) + "\""); //$NON-NLS-1$//$NON-NLS-2$
+ buffer.append(",addr=\"" + addr + "\""); //$NON-NLS-1$//$NON-NLS-2$
buffer.append(",func=\"" + func + "\""); //$NON-NLS-1$//$NON-NLS-2$
buffer.append(",file=\"" + file + "\""); //$NON-NLS-1$//$NON-NLS-2$
buffer.append(",line=\"").append(line).append('"'); //$NON-NLS-1$
@@ -86,7 +86,7 @@ public class MIFrame {
}
} else if (var.equals("addr")) { //$NON-NLS-1$
try {
- addr = Long.decode(str.trim()).longValue();
+ addr = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("func")) { //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIGDBShowAddressSizeInfo.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIGDBShowAddressSizeInfo.java
new file mode 100644
index 00000000000..000ac2a6f6b
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIGDBShowAddressSizeInfo.java
@@ -0,0 +1,25 @@
+/*
+ * Created on Jun 7, 2004
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package org.eclipse.cdt.debug.mi.core.output;
+
+/**
+ * @author root
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class MIGDBShowAddressSizeInfo extends MIGDBShowInfo {
+
+ public MIGDBShowAddressSizeInfo(MIOutput o) {
+ super(o);
+ }
+
+ public int getAddressSize()
+ {
+ return Integer.parseInt(getValue());
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java
index 9c1f48f1a25..82c6ed4f576 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java
@@ -80,8 +80,8 @@ public class MIInfoSharedLibraryInfo extends MIInfo {
if (str.length() > 0) {
// Pass the header
int index = -1;
- long from = 0;
- long to = 0;
+ String from = "";
+ String to = "";
boolean syms = false;
String name = ""; //$NON-NLS-1$
@@ -102,16 +102,10 @@ public class MIInfoSharedLibraryInfo extends MIInfo {
}
break;
case 2 : // second column is "To"
- try {
- to = Long.decode(sub).longValue();
- } catch (NumberFormatException e) {
- }
+ to = sub;
break;
case 3 : // first column is "From"
- try {
- from = Long.decode(sub).longValue();
- } catch (NumberFormatException e) {
- }
+ from = sub;
break;
}
}
@@ -123,8 +117,8 @@ public class MIInfoSharedLibraryInfo extends MIInfo {
}
void parseWinShared(String str, List aList) {
- long from = 0;
- long to = 0;
+ String from = "";
+ String to = "";
boolean syms = true;
int index = str.lastIndexOf(' ');
@@ -134,10 +128,7 @@ public class MIInfoSharedLibraryInfo extends MIInfo {
if (!sub.startsWith("0x")) { //$NON-NLS-1$
sub = "0x" + sub; //$NON-NLS-1$
}
- try {
- from = Long.decode(sub).longValue();
- } catch (NumberFormatException e) {
- }
+ from = sub;
str = str.substring(0, index).trim();
}
MIShared s = new MIShared(from, to, syms, str.trim());
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIMemory.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
index 3f999d6b3e9..c4ca46044e9 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIMemory.java
@@ -14,7 +14,7 @@ package org.eclipse.cdt.debug.mi.core.output;
* GDB/MI memory parsing.
*/
public class MIMemory {
- long addr;
+ String addr;
long [] data = new long[0];
String ascii = ""; //$NON-NLS-1$
@@ -22,7 +22,7 @@ public class MIMemory {
parse(tuple);
}
- public long getAddress() {
+ public String getAddress() {
return addr;
}
@@ -36,7 +36,7 @@ public class MIMemory {
public String toSting() {
StringBuffer buffer = new StringBuffer();
- buffer.append("addr=\"" + Long.toHexString(addr) + "\""); //$NON-NLS-1$ //$NON-NLS-2$
+ buffer.append("addr=\"" + addr + "\""); //$NON-NLS-1$ //$NON-NLS-2$
buffer.append("data=["); //$NON-NLS-1$
for (int i = 0 ; i < data.length; i++) {
if (i != 0) {
@@ -63,7 +63,7 @@ public class MIMemory {
if (var.equals("addr")) { //$NON-NLS-1$
try {
- addr = Long.decode(str.trim()).longValue();
+ addr = str.trim();
} catch (NumberFormatException e) {
}
} else if (var.equals("data")) { //$NON-NLS-1$
diff --git a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIShared.java b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIShared.java
index 121696d6eb7..f658e99db4d 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIShared.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/mi/org/eclipse/cdt/debug/mi/core/output/MIShared.java
@@ -16,23 +16,23 @@ package org.eclipse.cdt.debug.mi.core.output;
*/
public class MIShared {
- long from;
- long to;
+ String from;
+ String to;
boolean isread;
String name;
- public MIShared (long start, long end, boolean read, String location) {
+ public MIShared (String start, String end, boolean read, String location) {
from = start;
to = end;
isread = read;
name = location;
}
- public long getFrom() {
+ public String getFrom() {
return from;
}
- public long getTo() {
+ public String getTo() {
return to;
}
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
index fc941b1d44e..157c5795b36 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
@@ -73,7 +73,7 @@ public class GDBDebugger implements ICDebugger {
String gdb = config.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, "gdb"); //$NON-NLS-1$
File cwd = exe.getProject().getLocation().toFile();
String gdbinit = config.getAttribute(IMILaunchConfigurationConstants.ATTR_GDB_INIT, ".gdbinit"); //$NON-NLS-1$
- session = (Session)MIPlugin.getDefault().createCSession(gdb, exe.getLocation().toFile(), cwd, gdbinit);
+ session = (Session)MIPlugin.getDefault().createCSession(gdb, exe, cwd, gdbinit);
initializeLibraries(config, session);
return session;
} catch (IOException e) {
@@ -105,7 +105,7 @@ public class GDBDebugger implements ICDebugger {
String gdb = config.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, "gdb"); //$NON-NLS-1$
File cwd = exe.getProject().getLocation().toFile();
String gdbinit = config.getAttribute(IMILaunchConfigurationConstants.ATTR_GDB_INIT, ".gdbinit"); //$NON-NLS-1$
- session = (Session)MIPlugin.getDefault().createCSession(gdb, exe.getLocation().toFile(), pid, null, cwd, gdbinit);
+ session = (Session)MIPlugin.getDefault().createCSession(gdb, exe, pid, null, cwd, gdbinit);
initializeLibraries(config, session);
return session;
} catch (IOException e) {
@@ -137,7 +137,7 @@ public class GDBDebugger implements ICDebugger {
String gdb = config.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, "gdb"); //$NON-NLS-1$
File cwd = exe.getProject().getLocation().toFile();
String gdbinit = config.getAttribute(IMILaunchConfigurationConstants.ATTR_GDB_INIT, ".gdbinit"); //$NON-NLS-1$
- session = (Session)MIPlugin.getDefault().createCSession(gdb, exe.getLocation().toFile(), corefile.toFile(), cwd, gdbinit);
+ session = (Session)MIPlugin.getDefault().createCSession(gdb, exe, corefile.toFile(), cwd, gdbinit);
initializeLibraries(config, session);
return session;
} catch (IOException e) {
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
index 5a1decc0d6d..22a29501ca8 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
@@ -69,7 +69,7 @@ public class GDBServerDebugger implements ICDebugger {
remote += ":"; //$NON-NLS-1$
remote += config.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_PORT, "invalid"); //$NON-NLS-1$
String[] args = new String[] {"remote", remote}; //$NON-NLS-1$
- session = (Session)MIPlugin.getDefault().createCSession(gdb, exe.getLocation().toFile(), 0, args, cwd, gdbinit);
+ session = (Session)MIPlugin.getDefault().createCSession(gdb, exe, 0, args, cwd, gdbinit);
} else {
MIPlugin plugin = MIPlugin.getDefault();
Preferences prefs = plugin.getPluginPreferences();
@@ -77,7 +77,7 @@ public class GDBServerDebugger implements ICDebugger {
String remote = config.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV, "invalid"); //$NON-NLS-1$
String remoteBaud = config.getAttribute(IGDBServerMILaunchConfigurationConstants.ATTR_DEV_SPEED, "invalid"); //$NON-NLS-1$
- session = (Session)MIPlugin.getDefault().createCSession(gdb, exe.getLocation().toFile(), -1, null, cwd, gdbinit);
+ session = (Session)MIPlugin.getDefault().createCSession(gdb, exe, -1, null, cwd, gdbinit);
ICDITarget[] targets = session.getTargets();
for (int i = 0; i < targets.length; ++i) {
Target target = (Target)targets[i];
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
index d5400d9b96e..7614fa72da7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
@@ -21,6 +21,10 @@ import java.text.MessageFormat;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.IAddressFactory;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.command.CLICommand;
@@ -30,6 +34,8 @@ import org.eclipse.cdt.debug.mi.core.command.MITargetSelect;
import org.eclipse.cdt.debug.mi.core.output.MIInfo;
import org.eclipse.cdt.utils.pty.PTY;
import org.eclipse.cdt.utils.spawner.ProcessFactory;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPluginDescriptor;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences;
import org.osgi.framework.BundleContext;
@@ -113,7 +119,7 @@ public class MIPlugin extends Plugin {
* @return ICDISession
* @throws MIException
*/
- public ICDISession createCSession(String gdb, File program, File cwd, String gdbinit) throws IOException, MIException {
+ public ICDISession createCSession(String gdb, IFile program, File cwd, String gdbinit) throws IOException, MIException {
PTY pty = null;
boolean failed = false;
@@ -156,7 +162,7 @@ public class MIPlugin extends Plugin {
* @return ICDISession
* @throws IOException
*/
- public ICDISession createCSession(String gdb, File program, File cwd, String gdbinit, PTY pty) throws IOException, MIException {
+ public ICDISession createCSession(String gdb, IFile program, File cwd, String gdbinit, PTY pty) throws IOException, MIException {
if (gdb == null || gdb.length() == 0) {
gdb = GDB;
}
@@ -170,13 +176,13 @@ public class MIPlugin extends Plugin {
if (program == null) {
args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-tty", pty.getSlaveName(), "-i", "mi1"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
} else {
- args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-tty", pty.getSlaveName(), "-i", "mi1", program.getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+ args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-tty", pty.getSlaveName(), "-i", "mi1", program.getLocation().toFile().getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
}
} else {
if (program == null) {
args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-i", "mi1"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
} else {
- args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-i", "mi1", program.getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
+ args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "-q", "-nw", "-i", "mi1", program.getLocation().toFile().getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
}
}
@@ -206,7 +212,7 @@ public class MIPlugin extends Plugin {
// If an exception is thrown that means ok
// we did not attach to any target.
}
- return new Session(session, false);
+ return new Session(session, getAddressFactory(program), false);
}
/**
@@ -216,7 +222,7 @@ public class MIPlugin extends Plugin {
* @return ICDISession
* @throws IOException
*/
- public ICDISession createCSession(String gdb, File program, File core, File cwd, String gdbinit) throws IOException, MIException {
+ public ICDISession createCSession(String gdb, IFile program, File core, File cwd, String gdbinit) throws IOException, MIException {
if (gdb == null || gdb.length() == 0) {
gdb = GDB;
}
@@ -229,7 +235,7 @@ public class MIPlugin extends Plugin {
if (program == null) {
args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1", "-c", core.getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
} else {
- args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1", "-c", core.getAbsolutePath(), program.getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+ args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1", "-c", core.getAbsolutePath(), program.getLocation().toFile().getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
}
Process pgdb = getGDBProcess(args);
MISession session;
@@ -239,7 +245,7 @@ public class MIPlugin extends Plugin {
pgdb.destroy();
throw e;
}
- return new Session(session);
+ return new Session(session, getAddressFactory(program));
}
/**
@@ -249,7 +255,7 @@ public class MIPlugin extends Plugin {
* @return ICDISession
* @throws IOException
*/
- public ICDISession createCSession(String gdb, File program, int pid, String[] targetParams, File cwd, String gdbinit) throws IOException, MIException {
+ public ICDISession createCSession(String gdb, IFile program, int pid, String[] targetParams, File cwd, String gdbinit) throws IOException, MIException {
if (gdb == null || gdb.length() == 0) {
gdb = GDB;
}
@@ -262,7 +268,7 @@ public class MIPlugin extends Plugin {
if (program == null) {
args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
} else {
- args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1", program.getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
+ args = new String[] {gdb, "--cd="+cwd.getAbsolutePath(), "--command="+gdbinit, "--quiet", "-nw", "-i", "mi1", program.getLocation().toFile().getAbsolutePath()}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
}
Process pgdb = getGDBProcess(args);
MISession session;
@@ -298,7 +304,7 @@ public class MIPlugin extends Plugin {
//@@@ We have to manually set the suspended state when we attach
session.getMIInferior().setSuspended();
session.getMIInferior().update();
- return new Session(session, true);
+ return new Session(session, getAddressFactory(program), true);
}
/**
@@ -423,6 +429,16 @@ public class MIPlugin extends Plugin {
getPluginPreferences().setDefault(IMIConstants.PREF_REQUEST_LAUNCH_TIMEOUT, IMIConstants.DEF_REQUEST_LAUNCH_TIMEOUT);
}
+ protected IAddressFactory getAddressFactory(IFile exe)
+ {
+ ICElement cFile = CCorePlugin.getDefault().getCoreModel().create( exe );
+ if ( cFile instanceof IBinary )
+ {
+ return ((IBinary)cFile).getAddressFactory();
+ }
+ return null;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.core.runtime.Plugin#shutdown()
*/
diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog
index e2e62c2ab4d..038c5732279 100644
--- a/debug/org.eclipse.cdt.debug.ui/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-17 Alain Magloire
+ Support for 64 bits application
+ PR 74056. Pathc from Artyom Kuanbekov
+ To much files to enumerate.
+
2004-09-15 Mikhail Khodjaiants
Removed the "ISwitchToThread" and "ISwitchToFrame" interfaces.
* CDebugUIPlugin.java
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
index 80297716c10..4f2ac4cb2cc 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java
@@ -703,9 +703,8 @@ public class CDTDebugModelPresentation extends LabelProvider implements IDebugMo
protected StringBuffer appendAddress( ICAddressBreakpoint breakpoint, StringBuffer label ) throws CoreException {
try {
- long address = Long.parseLong( breakpoint.getAddress() );
label.append( ' ' );
- label.append( MessageFormat.format( CDebugUIMessages.getString( "CDTDebugModelPresentation.27" ), new String[]{ CDebugUtils.toHexAddressString( address ) } ) ); //$NON-NLS-1$
+ label.append( MessageFormat.format( CDebugUIMessages.getString( "CDTDebugModelPresentation.27" ), new String[]{ breakpoint.getAddress() } ) ); //$NON-NLS-1$
}
catch( NumberFormatException e ) {
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
index 8c10fd27ed3..da18ac04286 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDebugUIUtils.java
@@ -24,16 +24,7 @@ import org.eclipse.jface.text.Region;
*/
public class CDebugUIUtils
{
- static public String toHexAddressString( long address )
- {
- String tmp = Long.toHexString( address );
- char[] prefix = new char[10 - tmp.length()];
- prefix[0] = '0';
- prefix[1] = 'x';
- for ( int i = 2; i < prefix.length; ++i )
- prefix[i] = '0';
- return new String( prefix ) + tmp;
- }
+
static public IRegion findWord( IDocument document, int offset )
{
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/JumpToLineActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/JumpToLineActionDelegate.java
index a46b3605d00..1297d9cd106 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/JumpToLineActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/JumpToLineActionDelegate.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.actions;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.resources.FileStorage;
import org.eclipse.cdt.debug.core.model.IJumpToAddress;
import org.eclipse.cdt.debug.core.model.IJumpToLine;
@@ -176,7 +177,7 @@ public class JumpToLineActionDelegate extends AbstractEditorActionDelegate
}
}
- protected void jumpToAddress( long address )
+ protected void jumpToAddress( IAddress address )
{
IJumpToAddress target = (IJumpToAddress)getDebugTarget().getAdapter( IJumpToAddress.class );
if ( target != null )
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
index 1700fa9eff7..3e646cba2d3 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ResumeAtLineActionDelegate.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.ui.actions;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.model.IJumpToAddress;
import org.eclipse.cdt.debug.core.model.IJumpToLine;
@@ -247,7 +248,7 @@ public class ResumeAtLineActionDelegate implements IWorkbenchWindowActionDelegat
}
ITextSelection textSelection = (ITextSelection)selection;
int lineNumber = textSelection.getStartLine() + 1;
- long address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
return jumpToAddress.canJumpToAddress( address );
}
return false;
@@ -287,7 +288,7 @@ public class ResumeAtLineActionDelegate implements IWorkbenchWindowActionDelegat
else {
ITextSelection textSelection = (ITextSelection)selection;
int lineNumber = textSelection.getStartLine() + 1;
- long address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
IJumpToAddress jumpToAddress = (IJumpToAddress)((IAdaptable)debugTarget).getAdapter( IJumpToAddress.class );
if ( jumpToAddress != null )
jumpToAddress.jumpToAddress( address );
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
index 895cec7a25d..3263161931d 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RunToLineAdapter.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.ui.actions;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.model.IRunToAddress;
import org.eclipse.cdt.debug.core.model.IRunToLine;
@@ -83,7 +84,7 @@ public class RunToLineAdapter implements IRunToLineTarget {
else {
ITextSelection textSelection = (ITextSelection)selection;
int lineNumber = textSelection.getStartLine() + 1;
- long address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
if ( target instanceof IAdaptable ) {
IRunToAddress runToAddress = (IRunToAddress)((IAdaptable)target).getAdapter( IRunToAddress.class );
if ( runToAddress != null && runToAddress.canRunToAddress( address ) ) {
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java
index 501b2ca89b7..866da0f3025 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointAdapter.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.ui.actions;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.IDeclaration;
import org.eclipse.cdt.core.model.IFunction;
@@ -110,8 +111,8 @@ public class ToggleBreakpointAdapter implements IToggleBreakpointsTarget {
errorMessage = ActionMessages.getString( "ToggleBreakpointAdapter.Invalid_line_1" ); //$NON-NLS-1$
}
else {
- long address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
- if ( address == 0 ) {
+ IAddress address = ((DisassemblyEditorInput)input).getAddress( lineNumber );
+ if ( address == null ) {
errorMessage = ActionMessages.getString( "ToggleBreakpointAdapter.Invalid_line_1" ); //$NON-NLS-1$
}
else {
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CBreakpointPropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CBreakpointPropertyPage.java
index 8e0441bb461..8e8408b0957 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CBreakpointPropertyPage.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/propertypages/CBreakpointPropertyPage.java
@@ -13,7 +13,7 @@ package org.eclipse.cdt.debug.internal.ui.propertypages;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import org.eclipse.cdt.debug.core.CDebugUtils;
+
import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
import org.eclipse.cdt.debug.core.model.ICFunctionBreakpoint;
@@ -293,13 +293,6 @@ public class CBreakpointPropertyPage extends FieldEditorPreferencePage implement
ICAddressBreakpoint abrkpt = (ICAddressBreakpoint)breakpoint;
addField( createLabelEditor( getFieldEditorParent(), PropertyPageMessages.getString( "CBreakpointPropertyPage.18" ), PropertyPageMessages.getString( "CBreakpointPropertyPage.6" ) ) ); //$NON-NLS-1$//$NON-NLS-2$
String address = PropertyPageMessages.getString( "CBreakpointPropertyPage.4" ); //$NON-NLS-1$
- try {
- address = CDebugUtils.toHexAddressString( Long.parseLong( abrkpt.getAddress() ) );
- }
- catch( CoreException e ) {
- }
- catch( NumberFormatException e ) {
- }
if ( address != null ) {
addField( createLabelEditor( getFieldEditorParent(), PropertyPageMessages.getString( "CBreakpointPropertyPage.5" ), address ) ); //$NON-NLS-1$
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java
index 5a0a6d5eb5d..f906a94e5ea 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java
@@ -11,6 +11,8 @@
package org.eclipse.cdt.debug.internal.ui.views.disassembly;
import java.util.Arrays;
+
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.model.IAsmInstruction;
import org.eclipse.cdt.debug.core.model.IAsmSourceLine;
@@ -20,7 +22,6 @@ import org.eclipse.cdt.debug.core.model.ICLineBreakpoint;
import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.debug.core.model.IDisassembly;
import org.eclipse.cdt.debug.core.model.IDisassemblyBlock;
-import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.DebugPlugin;
@@ -67,7 +68,7 @@ public class DisassemblyEditorInput implements IEditorInput {
* @param disassembly
* @param instructions
*/
- private DisassemblyEditorInput( IDisassemblyBlock block ) {
+ private DisassemblyEditorInput( IDisassemblyBlock block) {
fBlock = block;
createContents();
}
@@ -125,7 +126,7 @@ public class DisassemblyEditorInput implements IEditorInput {
return fContents;
}
- public int getInstructionLine( long address ) {
+ public int getInstructionLine( IAddress address ) {
if ( fBlock != null ) {
IAsmSourceLine[] lines = fBlock.getSourceLines();
int result = 0;
@@ -134,13 +135,13 @@ public class DisassemblyEditorInput implements IEditorInput {
++result;
for ( int j = 0; j < instructions.length; ++j ) {
++result;
- if ( instructions[j].getAdress() == address ) {
+ if ( address.compareTo(instructions[j].getAdress()) == 0) {
return result;
}
}
}
}
- return 0;
+ return -1;
}
public int getInstructionLine( ICLineBreakpoint breakpoint ) {
@@ -150,8 +151,8 @@ public class DisassemblyEditorInput implements IEditorInput {
IBreakpointTarget bt = (IBreakpointTarget)dis.getDebugTarget().getAdapter( IBreakpointTarget.class );
if ( bt != null ) {
try {
- long address = bt.getBreakpointAddress( breakpoint );
- if ( address != 0 )
+ IAddress address = bt.getBreakpointAddress( breakpoint );
+ if ( ! address.isZero() )
return getInstructionLine( address );
}
catch( DebugException e ) {
@@ -159,10 +160,10 @@ public class DisassemblyEditorInput implements IEditorInput {
}
}
}
- return 0;
+ return -1;
}
- public long getAddress( int lineNumber ) {
+ public IAddress getAddress( int lineNumber ) {
if ( fBlock != null ) {
IAsmSourceLine[] lines = fBlock.getSourceLines();
int current = 0;
@@ -176,7 +177,7 @@ public class DisassemblyEditorInput implements IEditorInput {
current += instructions.length;
}
}
- return 0;
+ return null;
}
public String getModuleFile() {
@@ -185,10 +186,11 @@ public class DisassemblyEditorInput implements IEditorInput {
public static DisassemblyEditorInput create( ICStackFrame frame ) throws DebugException {
DisassemblyEditorInput input = null;
- IDisassembly disassembly = ((ICDebugTarget)frame.getDebugTarget()).getDisassembly();
+ ICDebugTarget target = ((ICDebugTarget)frame.getDebugTarget());
+ IDisassembly disassembly = target.getDisassembly();
if ( disassembly != null ) {
IDisassemblyBlock block = disassembly.getDisassemblyBlock( frame );
- input = new DisassemblyEditorInput( block );
+ input = new DisassemblyEditorInput( block);
}
return input;
}
@@ -216,7 +218,8 @@ public class DisassemblyEditorInput implements IEditorInput {
}
}
}
- int instrPos = calculateInstructionPosition( maxFunctionName, maxOffset );
+ int instrPos = calculateInstructionPosition( maxFunctionName, maxOffset,
+ fBlock.getSourceLines()[0].getInstructions()[0].getAdress().getCharsNum());
int argPosition = instrPos + maxOpcodeLength + 1;
if ( fBlock.isMixedMode() )
fSourceRegions = new IRegion[mi.length];
@@ -241,7 +244,7 @@ public class DisassemblyEditorInput implements IEditorInput {
Arrays.fill( spaces, ' ' );
StringBuffer sb = new StringBuffer();
if ( instruction != null ) {
- sb.append( CDebugUIUtils.toHexAddressString( instruction.getAdress() ) );
+ sb.append( instruction.getAdress().toHexAddressString() );
sb.append( ' ' );
String functionName = instruction.getFunctionName();
if ( functionName != null && functionName.length() > 0 ) {
@@ -262,8 +265,9 @@ public class DisassemblyEditorInput implements IEditorInput {
return sb.toString();
}
- private int calculateInstructionPosition( int maxFunctionName, long maxOffset ) {
- return (16 + maxFunctionName + Long.toString( maxOffset ).length());
+ private int calculateInstructionPosition( int maxFunctionName, long maxOffset, int addressLength ) {
+ //(Address prefix address representation in chars) + (space) + (<) + (+) + (>) + (:) + (space)
+ return ( addressLength + 6 + maxFunctionName + Long.toString( maxOffset ).length() );
}
private String getSourceLineString( IAsmSourceLine line ) {
@@ -282,8 +286,8 @@ public class DisassemblyEditorInput implements IEditorInput {
return ( fBlock != null ) ? fBlock.getDisassembly() : null;
}
- public ICLineBreakpoint breakpointExists( long address ) throws CoreException {
- Assert.isTrue( address != 0 );
+ public ICLineBreakpoint breakpointExists( IAddress address ) throws CoreException {
+ Assert.isTrue( address != null );
IDisassembly dis = getDisassembly();
if ( dis != null ) {
IBreakpointTarget bt = (IBreakpointTarget)dis.getDebugTarget().getAdapter( IBreakpointTarget.class );
@@ -294,7 +298,7 @@ public class DisassemblyEditorInput implements IEditorInput {
if ( bps[i] instanceof ICLineBreakpoint ) {
ICLineBreakpoint b = (ICLineBreakpoint)bps[i];
try {
- if ( address == bt.getBreakpointAddress( b ) )
+ if ( address.compareTo(bt.getBreakpointAddress( b )) == 0)
return b;
}
catch( NumberFormatException e ) {
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyInstructionPointerAnnotation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyInstructionPointerAnnotation.java
index dd331f9d2f7..4f48765dd0c 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyInstructionPointerAnnotation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyInstructionPointerAnnotation.java
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.debug.internal.ui.views.disassembly;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.debug.core.model.IDisassembly;
@@ -63,8 +64,8 @@ public class DisassemblyInstructionPointerAnnotation extends Annotation {
IDisassembly disassembly = getDisassembly( frame );
hashCode = 37*hashCode + (( disassembly != null ) ? disassembly.hashCode() : 0);
if ( frame != null ) {
- long address = frame.getAddress();
- hashCode = 37*hashCode + (int)(address^(address>>>32));
+ IAddress address = frame.getAddress();
+ hashCode = 37*hashCode + address.hashCode();
}
return hashCode;
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java
index 967d8f709bd..9fca0b7c826 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryControlArea.java
@@ -13,7 +13,6 @@ package org.eclipse.cdt.debug.internal.ui.views.memory;
import org.eclipse.cdt.debug.core.CDebugModel;
import org.eclipse.cdt.debug.core.ICMemoryManager;
import org.eclipse.cdt.debug.core.model.IFormattedMemoryBlock;
-import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils;
import org.eclipse.cdt.debug.internal.ui.preferences.ICDebugPreferenceConstants;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.debug.core.DebugException;
@@ -430,7 +429,7 @@ public class MemoryControlArea extends Composite implements ITextOperationTarget
}
}
if ( getMemoryBlock() != null ) {
- fAddressText.setText( CDebugUIUtils.toHexAddressString( getMemoryBlock().getStartAddress() ) );
+ fAddressText.setText( getMemoryBlock().getRealStartAddress().toHexAddressString() );
handleAddressEnter();
}
}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java
index 97b193ed8f8..736bbb299e8 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/memory/MemoryPresentation.java
@@ -11,15 +11,16 @@
package org.eclipse.cdt.debug.internal.ui.views.memory;
+import java.math.BigInteger;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
+import org.eclipse.cdt.core.IAddress;
import org.eclipse.cdt.debug.core.CDebugUtils;
import org.eclipse.cdt.debug.core.ICMemoryManager;
import org.eclipse.cdt.debug.core.model.IFormattedMemoryBlock;
import org.eclipse.cdt.debug.core.model.IFormattedMemoryBlockRow;
-import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils;
import org.eclipse.debug.core.DebugException;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
@@ -77,7 +78,7 @@ public class MemoryPresentation
{
int offset = sb.length();
sb.append( getRowText( rows[i] ) );
- fAddressZones.add( new Point( offset, offset + getAddressLength() ) );
+ fAddressZones.add( new Point( offset, offset + rows[i].getAddress().getCharsNum() ) );
}
return sb.toString();
}
@@ -104,7 +105,7 @@ public class MemoryPresentation
public Point[] getChangedZones()
{
fChangedZones.clear();
- Long[] changedAddresses = getChangedAddresses();
+ IAddress[] changedAddresses = getChangedAddresses();
for ( int i = 0; i < changedAddresses.length; ++i )
{
int dataOffset = getDataItemOffsetByAddress( changedAddresses[i] );
@@ -126,7 +127,7 @@ public class MemoryPresentation
public String getStartAddress()
{
- return ( fBlock != null ) ? getAddressString( fBlock.getStartAddress() ) : ""; //$NON-NLS-1$
+ return ( fBlock != null ) ? fBlock.getRealStartAddress().toHexAddressString() : ""; //$NON-NLS-1$
}
public String getAddressExpression()
@@ -141,15 +142,10 @@ public class MemoryPresentation
return new String( chars );
}
- private String getAddressString( long address )
- {
- return CDebugUIUtils.toHexAddressString( address );
- }
-
private String getRowText( IFormattedMemoryBlockRow row )
{
- StringBuffer result = new StringBuffer( getRowLength() );
- result.append( getAddressString( row.getAddress() ) );
+ StringBuffer result = new StringBuffer( getRowLength( ) );
+ result.append( row.getAddress().toHexAddressString() );
result.append( getInterval( INTERVAL_BETWEEN_ADDRESS_AND_DATA ) );
String[] items = row.getData();
for ( int i = 0; i < items.length; ++i )
@@ -175,9 +171,9 @@ public class MemoryPresentation
getDataBytesPerRow() : 0 ) + 1;
}
- private int getAddressLength()
- {
- return 10;
+
+ private int getAddressLength() {
+ return fBlock.getRealStartAddress().getCharsNum();
}
private boolean isInAsciiArea( int offset )
@@ -293,12 +289,12 @@ public class MemoryPresentation
return IFormattedMemoryBlock.MEMORY_FORMAT_HEX;
}
- private Long[] getChangedAddresses()
+ private IAddress[] getChangedAddresses()
{
- return ( getMemoryBlock() != null ) ? getMemoryBlock().getChangedAddresses() : new Long[0];
+ return ( getMemoryBlock() != null ) ? getMemoryBlock().getChangedAddresses() : new IAddress[0];
}
- private int getDataItemOffsetByAddress( Long address )
+ private int getDataItemOffsetByAddress( IAddress address )
{
if ( getMemoryBlock() != null )
{
@@ -307,15 +303,16 @@ public class MemoryPresentation
{
int wordSize = getMemoryBlock().getWordSize();
int numberOfColumns = getMemoryBlock().getNumberOfColumns();
- if ( address.longValue() >= rows[i].getAddress() &&
- address.longValue() < rows[i].getAddress() + (wordSize * numberOfColumns) )
+
+ if( address.compareTo( rows[i].getAddress()) >=0 &&
+ address.compareTo( rows[i].getAddress().add(BigInteger.valueOf(wordSize * numberOfColumns))) <0)
{
for ( int j = 1; j <= numberOfColumns; ++j )
{
- if ( address.longValue() >= rows[i].getAddress() + ((j - 1) * wordSize) &&
- address.longValue() < rows[i].getAddress() + (j * wordSize) )
+ if( address.compareTo( rows[i].getAddress().add(BigInteger.valueOf( (j - 1) * wordSize))) >=0 &&
+ address.compareTo( rows[i].getAddress().add(BigInteger.valueOf( j * wordSize))) <0)
{
- return (i * getRowLength()) + ((j - 1) * (getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS)) + getAddressLength() + INTERVAL_BETWEEN_ADDRESS_AND_DATA;
+ return (i * getRowLength()) + ((j - 1) * (getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS)) + address.getCharsNum() + INTERVAL_BETWEEN_ADDRESS_AND_DATA;
}
}
}
@@ -325,7 +322,7 @@ public class MemoryPresentation
return -1;
}
- private int getAsciiOffsetByAddress( Long address )
+ private int getAsciiOffsetByAddress( IAddress address )
{
if ( getMemoryBlock() != null )
{
@@ -334,14 +331,16 @@ public class MemoryPresentation
{
IFormattedMemoryBlockRow firstRow = rows[0];
IFormattedMemoryBlockRow lastRow = rows[rows.length - 1];
- if ( address.longValue() >= firstRow.getAddress() && address.longValue() <= lastRow.getAddress() )
+
+ if (address.compareTo( firstRow.getAddress()) >=0 && address.compareTo( lastRow.getAddress()) <=0)
+
{
- int asciiOffset = (int)(address.longValue() - firstRow.getAddress());
+ BigInteger asciiOffset = address.distance( firstRow.getAddress());
int asciiRowlength = getMemoryBlock().getWordSize() * getMemoryBlock().getNumberOfColumns();
- int numberOfRows = asciiOffset / asciiRowlength;
- int offsetInRow = asciiOffset % asciiRowlength;
+ int numberOfRows = asciiOffset.intValue() / asciiRowlength;
+ int offsetInRow = asciiOffset.intValue() % asciiRowlength;
return (numberOfRows * getRowLength()) +
- getAddressLength() + INTERVAL_BETWEEN_ADDRESS_AND_DATA +
+ address.getCharsNum() + INTERVAL_BETWEEN_ADDRESS_AND_DATA +
(getDataItemLength() + INTERVAL_BETWEEN_DATA_ITEMS) * getMemoryBlock().getNumberOfColumns() +
INTERVAL_BETWEEN_DATA_AND_ASCII + offsetInRow;
}
@@ -513,13 +512,13 @@ public class MemoryPresentation
{
if ( getMemoryBlock() != null )
{
- int index = getDataItemIndex( offset );
+ int index = getDataItemIndex(offset );
if ( index != -1 )
{
char[] chars = getDataItemChars( index );
if ( isInDataArea( offset ) )
{
- int charIndex = getOffsetInDataItem( offset, index );
+ int charIndex = getOffsetInDataItem(offset, index );
chars[charIndex] = newChar;
}
if ( isInAsciiArea( offset ) )
@@ -539,7 +538,7 @@ public class MemoryPresentation
int index = getDataItemIndex( offset );
if ( index != -1 )
{
- String newValue = getNewItemValue( offset, ch );
+ String newValue = getNewItemValue(offset, ch );
if ( newValue != null )
{
try
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
index 6c2d2a19d49..d5a931c425b 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/sharedlibs/SharedLibrariesView.java
@@ -13,7 +13,6 @@ package org.eclipse.cdt.debug.internal.ui.views.sharedlibs;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
import org.eclipse.cdt.debug.internal.ui.CDebugModelPresentation;
-import org.eclipse.cdt.debug.internal.ui.CDebugUIUtils;
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
import org.eclipse.cdt.debug.internal.ui.PixelConverter;
import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
@@ -83,11 +82,9 @@ public class SharedLibrariesView extends AbstractDebugEventHandlerView
case 2:
return ( library.areSymbolsLoaded() ) ? SharedLibrariesMessages.getString( "SharedLibrariesView.Loaded_1" ) : SharedLibrariesMessages.getString( "SharedLibrariesView.Not_loaded_1" ); //$NON-NLS-1$ //$NON-NLS-2$
case 3:
- return ( library.getStartAddress() > 0 ) ?
- CDebugUIUtils.toHexAddressString( library.getStartAddress() ) : ""; //$NON-NLS-1$
+ return library.getStartAddress().toHexAddressString(); //$NON-NLS-1$
case 4:
- return ( library.getEndAddress() > 0 ) ?
- CDebugUIUtils.toHexAddressString( library.getEndAddress() ) : ""; //$NON-NLS-1$
+ return library.getEndAddress().toHexAddressString(); //$NON-NLS-1$
}
}
return null;