/*******************************************************************************
* Copyright (c) 2000, 2006 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 org.eclipse.cdt.debug.core.cdi.model.ICDITargetConfiguration;
import org.eclipse.cdt.debug.mi.core.MIInferior;
import org.eclipse.cdt.debug.mi.core.MIProcess;
import org.eclipse.cdt.debug.mi.core.MISession;
/**
*/
public class TargetConfiguration extends CObject implements ICDITargetConfiguration {
public TargetConfiguration(Target target) {
super(target);
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsBreakpoints()
*/
public boolean supportsBreakpoints() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsDisconnect()
*/
public boolean supportsDisconnect() {
MISession miSession = ((Target)getTarget()).getMISession();
return miSession.isAttachSession() ? true : false;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsExpressionEvaluation()
*/
public boolean supportsExpressionEvaluation() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsInstructionStepping()
*/
public boolean supportsInstructionStepping() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsMemoryModification()
*/
public boolean supportsMemoryModification() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsMemoryRetrieval()
*/
public boolean supportsMemoryRetrieval() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsRegisterModification()
*/
public boolean supportsRegisterModification() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsRegisters()
*/
public boolean supportsRegisters() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsSharedLibrary()
*/
public boolean supportsSharedLibrary() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsRestart()
*/
public boolean supportsRestart() {
MISession miSession = ((Target)getTarget()).getMISession();
return miSession.isAttachSession() ? false : true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsStepping()
*/
public boolean supportsStepping() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsTerminate()
*/
public boolean supportsTerminate() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsResume()
*/
public boolean supportsResume() {
return true;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#supportsSuspend()
*/
public boolean supportsSuspend() {
String os = null;
try {
os = System.getProperty("os.name", ""); //$NON-NLS-1$ //$NON-NLS-2$
} catch (SecurityException e) {
}
Target target = (Target)getTarget();
MISession miSession = target.getMISession();
MIProcess gdb = miSession.getGDBProcess();
MIInferior inferior = miSession.getMIInferior();
if (gdb.canInterrupt(inferior)) {
// If we attached sending a control-c,
// seems to alays work.
if (miSession.isAttachSession()) {
return true;
}
// If we have a pty, sending a control-c will work
// except for solaris.
if (os.equals("SunOS")) { //$NON-NLS-1$
if (inferior.getTTY() != null) {
// FIXME: bug in Solaris gdb when using -tty, sending a control-c
// does not work.
return false;
}
return true;
}
return true;
}
return false;
}
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIConfiguration#terminateSessionOnExit()
*/
public boolean terminateSessionOnExit() {
return true;
}
}