From be32b9611687ecb3b3e1ce7527606b636610546f Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 9 Oct 2002 17:56:17 +0000 Subject: [PATCH] Implementation of disassembly mode. --- .../sourcelookup/DisassemblyManager.java | 23 ------- .../core/sourcelookup/ICSourceLocator.java | 2 +- .../internal/core/model/CDebugTarget.java | 8 +-- .../CDirectorySourceLocation.java | 2 +- .../sourcelookup/CProjectSourceLocation.java | 2 +- .../core}/sourcelookup/CSourceLocator.java | 5 +- .../core}/sourcelookup/CSourceManager.java | 42 +++++++++++-- .../core/sourcelookup/DisassemblyManager.java | 61 +++++++++++++++++++ .../cdt/debug/ui/CUISourceLocator.java | 2 +- 9 files changed, 108 insertions(+), 39 deletions(-) delete mode 100644 debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/DisassemblyManager.java rename debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/{core/internal => internal/core}/sourcelookup/CDirectorySourceLocation.java (98%) rename debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/{core/internal => internal/core}/sourcelookup/CProjectSourceLocation.java (98%) rename debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/{core/internal => internal/core}/sourcelookup/CSourceLocator.java (98%) rename debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/{core/internal => internal/core}/sourcelookup/CSourceManager.java (79%) create mode 100644 debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/DisassemblyManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/DisassemblyManager.java deleted file mode 100644 index 27c540f1b77..00000000000 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/DisassemblyManager.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - *(c) Copyright QNX Software Systems Ltd. 2002. - * All Rights Reserved. - * - */ - -package org.eclipse.cdt.debug.core.internal.sourcelookup; - -/** - * Enter type comment. - * - * @since: Oct 8, 2002 - */ -public class DisassemblyManager -{ - /** - * Constructor for DisassemblyManager. - */ - public DisassemblyManager() - { - super(); - } -} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/ICSourceLocator.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/ICSourceLocator.java index 082c3414cf7..72036a50f0d 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/ICSourceLocator.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/sourcelookup/ICSourceLocator.java @@ -36,7 +36,7 @@ public interface ICSourceLocator extends ISourceLocator * @param fileName the file name for which to locate source * @return an object representing a source element. */ - Object getSourceElement( String fileName ); +// Object getSourceElement( String fileName ); /** * Returns the source locations of this locator. 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 ba24fa0a5c2..74b9726201b 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 @@ -53,9 +53,9 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDIThread; import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint; -import org.eclipse.cdt.debug.core.internal.sourcelookup.CSourceLocator; -import org.eclipse.cdt.debug.core.internal.sourcelookup.CSourceManager; -import org.eclipse.cdt.debug.core.internal.sourcelookup.DisassemblyManager; +import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLocator; +import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceManager; +import org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator; import org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint; @@ -1805,7 +1805,7 @@ public class CDebugTarget extends CDebugElement protected ISourceLocator createSourceLocator( IProject project ) { return new CSourceManager( ( getLaunch().getSourceLocator() != null ) ? getLaunch().getSourceLocator() : new CSourceLocator( project ), - new DisassemblyManager() ) ; + new DisassemblyManager( this ) ) ; } protected void setSourceSearchPath() diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CDirectorySourceLocation.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java similarity index 98% rename from debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CDirectorySourceLocation.java rename to debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java index 67b306727fc..f39f63aaf08 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CDirectorySourceLocation.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CDirectorySourceLocation.java @@ -3,7 +3,7 @@ * All Rights Reserved. * */ -package org.eclipse.cdt.debug.core.internal.sourcelookup; +package org.eclipse.cdt.debug.internal.core.sourcelookup; import java.io.File; diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CProjectSourceLocation.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java similarity index 98% rename from debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CProjectSourceLocation.java rename to debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java index baa1387edcd..501c1a05570 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CProjectSourceLocation.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CProjectSourceLocation.java @@ -3,7 +3,7 @@ * All Rights Reserved. * */ -package org.eclipse.cdt.debug.core.internal.sourcelookup; +package org.eclipse.cdt.debug.internal.core.sourcelookup; import java.io.File; diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceLocator.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java similarity index 98% rename from debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceLocator.java rename to debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java index 3d292d51b3e..cfa47e77da1 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceLocator.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceLocator.java @@ -4,7 +4,7 @@ * */ -package org.eclipse.cdt.debug.core.internal.sourcelookup; +package org.eclipse.cdt.debug.internal.core.sourcelookup; import java.util.ArrayList; @@ -106,6 +106,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.ICSourceLocator#getSourceElement(String) */ +/* public Object getSourceElement( String fileName ) { Object result = null; @@ -128,7 +129,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato } return result; } - +*/ /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.ICSourceLocator#contains(IResource) */ diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceManager.java similarity index 79% rename from debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceManager.java rename to debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceManager.java index f8b98442d53..21e0163dd11 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/internal/sourcelookup/CSourceManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/CSourceManager.java @@ -4,7 +4,7 @@ * */ -package org.eclipse.cdt.debug.core.internal.sourcelookup; +package org.eclipse.cdt.debug.internal.core.sourcelookup; import org.eclipse.cdt.debug.core.IStackFrameInfo; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation; @@ -32,8 +32,8 @@ public class CSourceManager implements ICSourceLocator, ISourceMode, IAdaptable */ public CSourceManager( ISourceLocator sourceLocator, DisassemblyManager disassemblyManager ) { - fSourceLocator = sourceLocator; - fDisassemblyManager = disassemblyManager; + setSourceLocator( sourceLocator ); + setDisassemblyManager( disassemblyManager ); } /* (non-Javadoc) @@ -58,11 +58,12 @@ public class CSourceManager implements ICSourceLocator, ISourceMode, IAdaptable /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#getSourceElement(String) */ +/* public Object getSourceElement( String fileName ) { return ( getCSourceLocator() != null ) ? getCSourceLocator().getSourceElement( fileName ) : null; } - +*/ /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#getSourceLocations() */ @@ -106,7 +107,7 @@ public class CSourceManager implements ICSourceLocator, ISourceMode, IAdaptable fMode = mode; } - protected int getRealMode() + public int getRealMode() { return fRealMode; } @@ -129,7 +130,21 @@ public class CSourceManager implements ICSourceLocator, ISourceMode, IAdaptable */ public Object getSourceElement( IStackFrame stackFrame ) { - return ( getSourceLocator() != null ) ? getSourceLocator().getSourceElement( stackFrame ) : null; + Object result = null; + if ( getMode() == ISourceMode.MODE_SOURCE && getSourceLocator() != null ) + { + result = getSourceLocator().getSourceElement( stackFrame ); + } + if ( result == null && getDisassemblyManager() != null ) + { + setRealMode( ISourceMode.MODE_DISASSEMBLY ); + result = getDisassemblyManager().getSourceElement( stackFrame ); + } + else + { + setRealMode( ISourceMode.MODE_SOURCE ); + } + return result; } protected ICSourceLocator getCSourceLocator() @@ -143,4 +158,19 @@ public class CSourceManager implements ICSourceLocator, ISourceMode, IAdaptable { return fSourceLocator; } + + protected void setSourceLocator( ISourceLocator sl ) + { + fSourceLocator = sl; + } + + protected void setDisassemblyManager( DisassemblyManager dm ) + { + fDisassemblyManager = dm; + } + + protected DisassemblyManager getDisassemblyManager() + { + return fDisassemblyManager; + } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java new file mode 100644 index 00000000000..b6aaeb80a24 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/sourcelookup/DisassemblyManager.java @@ -0,0 +1,61 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.internal.core.sourcelookup; + +import org.eclipse.cdt.debug.core.IStackFrameInfo; +import org.eclipse.cdt.debug.internal.core.DisassemblyStorage; +import org.eclipse.cdt.debug.internal.core.model.CDebugTarget; +import org.eclipse.debug.core.model.IStackFrame; + +/** + * Enter type comment. + * + * @since: Oct 8, 2002 + */ +public class DisassemblyManager +{ + private CDebugTarget fDebugTarget; + private DisassemblyStorage fStorage = null; + + /** + * Constructor for DisassemblyManager. + */ + public DisassemblyManager( CDebugTarget target ) + { + setDebugTarget( target ); + } + + public int getLineNumber( IStackFrameInfo frameInfo ) + { + return 0; + } + + public Object getSourceElement( IStackFrame stackFrame ) + { + return null; + } + + private void setDebugTarget( CDebugTarget target ) + { + fDebugTarget = target; + } + + public CDebugTarget getDebugTarget() + { + return fDebugTarget; + } + + private void setDisassemblyStorage( DisassemblyStorage ds ) + { + fStorage = ds; + } + + protected DisassemblyStorage getDisassemblyStorage() + { + return fStorage; + } +} diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CUISourceLocator.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CUISourceLocator.java index ec543b4e7e5..7bb8c206733 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CUISourceLocator.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CUISourceLocator.java @@ -8,7 +8,7 @@ package org.eclipse.cdt.debug.ui; import java.text.MessageFormat; import org.eclipse.cdt.debug.core.IStackFrameInfo; -import org.eclipse.cdt.debug.core.internal.sourcelookup.CSourceLocator; +import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceLocator; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration;