From 0ece103fb9c705f61c9628c718f291d74f518d28 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Fri, 27 May 2011 19:18:16 +0000 Subject: [PATCH] Bug 339379: Instruction pointer is not always removed when terminating launch (GDB <= 6.8 solution) --- .../cdt/dsf/gdb/service/command/GDBControl.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl.java index f46bea42c72..1ee3a24197a 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl.java @@ -34,15 +34,19 @@ import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.concurrent.RequestMonitorWithProgress; import org.eclipse.cdt.dsf.concurrent.Sequence; import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent; +import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext; import org.eclipse.cdt.dsf.debug.service.command.ICommandControl; import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService; import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin; import org.eclipse.cdt.dsf.gdb.launching.FinalLaunchSequence; import org.eclipse.cdt.dsf.gdb.service.IGDBBackend; +import org.eclipse.cdt.dsf.gdb.service.IGDBProcesses; import org.eclipse.cdt.dsf.mi.service.IMIBackend; import org.eclipse.cdt.dsf.mi.service.IMIBackend.BackendStateChangedEvent; +import org.eclipse.cdt.dsf.mi.service.MIProcesses.ContainerExitedDMEvent; import org.eclipse.cdt.dsf.mi.service.IMICommandControl; import org.eclipse.cdt.dsf.mi.service.IMIRunControl; +import org.eclipse.cdt.dsf.mi.service.MIProcesses; import org.eclipse.cdt.dsf.mi.service.command.AbstractCLIProcess; import org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl; import org.eclipse.cdt.dsf.mi.service.command.CLIEventProcessor; @@ -308,8 +312,16 @@ public class GDBControl extends AbstractMIControl implements IGDBControl { @DsfServiceEventHandler public void eventDispatched(ICommandControlShutdownDMEvent e) { - // Handle our "GDB Exited" event and stop processing commands. - stopCommandProcessing(); + // Handle our "GDB Exited" event and stop processing commands. + stopCommandProcessing(); + + // Before GDB 7.0, we have to send the containerExited event ourselves + IGDBProcesses procService = getServicesTracker().getService(IGDBProcesses.class); + if (procService != null) { + IContainerDMContext processContainerDmc = procService.createContainerContextFromGroupId(fControlDmc, MIProcesses.UNIQUE_GROUP_ID); + getSession().dispatchEvent( + new ContainerExitedDMEvent(processContainerDmc), getProperties()); + } } @DsfServiceEventHandler