From ce342ee755ee0eeae46cf8f3b50e24bb36213043 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Thu, 2 Feb 2012 06:14:56 -0500 Subject: [PATCH] Bug 370376: [remote] Remote non-attach should not have a console for the inferior --- .../org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java | 7 +++++++ .../gdb/service/StartOrRestartProcessSequence_7_0.java | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java index 07f6120ad03..d6b40ea618b 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java @@ -505,6 +505,13 @@ public class GDBProcesses extends MIProcesses implements IGDBProcesses { * @since 4.0 */ protected void createConsole(final IContainerDMContext containerDmc, final boolean restart, final RequestMonitor rm) { + if (fBackend.getSessionType() == SessionType.REMOTE || fBackend.getIsAttachSession()) { + // Remote or attach sessions shouldn't have a console, since the inferior is not started + // by eclipse but by gdbserver + rm.done(); + return; + } + initializeInputOutput(containerDmc, new ImmediateRequestMonitor(rm) { @Override protected void handleSuccess() { diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java index 7d6b2d065c0..43634a226f9 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java @@ -295,6 +295,15 @@ public class StartOrRestartProcessSequence_7_0 extends ReflectionSequence { */ @Execute public void stepCreateConsole(final RequestMonitor rm) { + if (fBackend.getSessionType() == SessionType.REMOTE && !fBackend.getIsAttachSession()) { + // Remote non-attach sessions don't support multi-process and therefore will not + // start new processes. Those sessions will only start the one process, which should + // not have a console, because it's output is handled by GDB server. Therefore, + // no need to create an inferior process and add it to the launch + rm.done(); + return; + } + Process inferiorProcess; if (fPty == null) { inferiorProcess = new MIInferiorProcess(fContainerDmc, fBackend.getMIOutputStream());