Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java')
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java275
1 files changed, 0 insertions, 275 deletions
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
deleted file mode 100644
index d4d604a124e..00000000000
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2012 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.debug.mi.core.cdi.model;
-
-import java.math.BigInteger;
-import java.util.HashMap;
-
-import org.eclipse.cdt.debug.core.cdi.CDIException;
-import org.eclipse.cdt.debug.core.cdi.ICDILocator;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIArgument;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIArgumentDescriptor;
-import org.eclipse.cdt.debug.core.cdi.model.ICDILocalVariable;
-import org.eclipse.cdt.debug.core.cdi.model.ICDILocalVariableDescriptor;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
-import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
-import org.eclipse.cdt.debug.mi.core.MIException;
-import org.eclipse.cdt.debug.mi.core.MIFormat;
-import org.eclipse.cdt.debug.mi.core.MISession;
-import org.eclipse.cdt.debug.mi.core.cdi.CdiResources;
-import org.eclipse.cdt.debug.mi.core.cdi.Locator;
-import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
-import org.eclipse.cdt.debug.mi.core.cdi.Session;
-import org.eclipse.cdt.debug.mi.core.cdi.VariableManager;
-import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
-import org.eclipse.cdt.debug.mi.core.command.MIExecFinish;
-import org.eclipse.cdt.debug.mi.core.command.MIExecReturn;
-import org.eclipse.cdt.debug.mi.core.output.MIFrame;
-import org.eclipse.cdt.debug.mi.core.output.MIInfo;
-
-/**
- */
-public class StackFrame extends CObject implements ICDIStackFrame {
-
- MIFrame frame;
- Thread cthread;
- int level;
- ICDIArgumentDescriptor[] argDescs;
- ICDILocalVariableDescriptor[] localDescs;
- Locator fLocator;
- /**
- *
- */
- private HashMap fTypeCache;
-
- /*
- *
- GDB/MI does not keep the stack level, from what we expect. In gdb, the
- highest stack is level 0 and lower stack as the highest level:
- -stack-list-frames
- ^done,stack=[frame={level="0 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
- frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
-
- -stack-list-frames
- ^done,stack=[frame={level="0 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
- frame={level="1 ",addr="0x08048501",func="main",file="hello.c",line="41"},
- frame={level="2 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
-
- This is of no use to us since the level is always "0". The level is necessary for example when
- doing recursive calls to make a distinction between frames.
- So in CDT this reverse the hidghest frame will have the highest number. In CDT:
- stack=[frame={level="2 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
- frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
-
- stack=[frame={level="3 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
- frame={level="2 ",addr="0x08048501",func="main",file="hello.c",line="41"},
- frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]
- */
- public StackFrame(Thread thread, MIFrame f, int l) {
- super((Target)thread.getTarget());
- cthread = thread;
- frame = f;
- level = l;
- fTypeCache = new HashMap();
- }
-
- public MIFrame getMIFrame() {
- return frame;
- }
-
- public ICDIType getFromTypeCache(String typeName) {
- return (ICDIType)fTypeCache.get(typeName);
- }
- public void addToTypeCache(String typeName, ICDIType typeDefinition) {
- fTypeCache.put(typeName, typeDefinition);
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getThread()
- */
- @Override
- public ICDIThread getThread() {
- return cthread;
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getArgumentDescriptors()
- */
- @Override
- public ICDIArgumentDescriptor[] getArgumentDescriptors() throws CDIException {
- if (argDescs == null) {
- Session session = (Session)getTarget().getSession();
- VariableManager mgr = session.getVariableManager();
- argDescs = mgr.getArgumentDescriptors(this);
- }
- return argDescs;
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocalVariableDescriptors()
- */
- @Override
- public ICDILocalVariableDescriptor[] getLocalVariableDescriptors() throws CDIException {
- if (localDescs == null) {
- Session session = (Session)getTarget().getSession();
- VariableManager mgr = session.getVariableManager();
- localDescs = mgr.getLocalVariableDescriptors(this);
- }
- return localDescs;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#createArgument(org.eclipse.cdt.debug.core.cdi.model.ICDIArgumentDescriptor)
- */
- @Override
- public ICDIArgument createArgument(ICDIArgumentDescriptor varDesc) throws CDIException {
- if (varDesc instanceof ArgumentDescriptor) {
- Session session = (Session)getTarget().getSession();
- VariableManager mgr = session.getVariableManager();
- return mgr.createArgument((ArgumentDescriptor)varDesc);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#createLocalVariable(org.eclipse.cdt.debug.core.cdi.model.ICDILocalVariableDescriptor)
- */
- @Override
- public ICDILocalVariable createLocalVariable(ICDILocalVariableDescriptor varDesc) throws CDIException {
- if (varDesc instanceof ArgumentDescriptor) {
- return createArgument((ICDIArgumentDescriptor)varDesc);
- } else if (varDesc instanceof LocalVariableDescriptor) {
- Session session = (Session)getTarget().getSession();
- VariableManager mgr = session.getVariableManager();
- return mgr.createLocalVariable((LocalVariableDescriptor)varDesc);
- }
- return null;
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLocation()
- */
- @Override
- public ICDILocator getLocator() {
- BigInteger addr = BigInteger.ZERO;
- if (frame != null) {
- if (fLocator == null) {
- String a = frame.getAddress();
- if (a != null) {
- addr = MIFormat.getBigInteger(a);
- }
- fLocator = new Locator(frame.getFile(),
- frame.getFunction(),
- frame.getLine(),
- addr);
- }
- return fLocator;
- }
- return new Locator("", "", 0, addr); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#getLevel()
- */
- @Override
- public int getLevel() {
- return level;
- }
-
- /**
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame#equals(ICDIStackFrame)
- */
- @Override
- public boolean equals(ICDIStackFrame stackframe) {
- if (stackframe instanceof StackFrame) {
- StackFrame stack = (StackFrame)stackframe;
- boolean equal = cthread != null &&
- cthread.equals(stack.getThread()) &&
- getLevel() == stack.getLevel();
- if (equal) {
- ICDILocator otherLocator = stack.getLocator();
- ICDILocator myLocator = getLocator();
- if (Locator.equalString(myLocator.getFile(), otherLocator.getFile())) {
- if (Locator.equalString(myLocator.getFunction(), otherLocator.getFunction())) {
- return true;
- }
- }
- }
- }
- return super.equals(stackframe);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIExecuteStepReturn#stepReturn()
- */
- @Override
- public void stepReturn() throws CDIException {
- finish();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.cdi.model.ICDIExecuteStepReturn#stepReturn(org.eclipse.cdt.debug.core.cdi.model.ICDIValue)
- */
- @Override
- public void stepReturn(ICDIValue value) throws CDIException {
- execReturn(value.toString());
- }
-
- /**
- */
- protected void finish() throws CDIException {
-
- ((Thread)getThread()).setCurrentStackFrame(this, false);
-
- Target target = (Target)getTarget();
- MISession miSession = target.getMISession();
- CommandFactory factory = miSession.getCommandFactory();
- MIExecFinish finish = factory.createMIExecFinish();
- try {
- miSession.postCommand(finish);
- MIInfo info = finish.getMIInfo();
- if (info == null) {
- throw new CDIException(CdiResources.getString("cdi.model.Target.Target_not_responding")); //$NON-NLS-1$
- }
- } catch (MIException e) {
- throw new MI2CDIException(e);
- }
- }
-
- /**
- */
- protected void execReturn(String value) throws CDIException {
-
- ((Thread)getThread()).setCurrentStackFrame(this, false);
-
- Target target = (Target)getTarget();
- MISession miSession = target.getMISession();
- CommandFactory factory = miSession.getCommandFactory();
- MIExecReturn ret;
- if (value == null) {
- ret = factory.createMIExecReturn();
- } else {
- ret = factory.createMIExecReturn(value);
- }
- try {
- miSession.postCommand(ret);
- MIInfo info = ret.getMIInfo();
- if (info == null) {
- throw new CDIException(CdiResources.getString("cdi.model.Target.Target_not_responding")); //$NON-NLS-1$
- }
- } catch (MIException e) {
- throw new MI2CDIException(e);
- }
- }
-
-}

Back to the top