From c89cc3f9e9a9b94d8c4617f8e6dd34b6ac536076 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Mon, 3 Feb 2003 21:29:44 +0000 Subject: [PATCH] catch MIInferiorSignalExitEvent. --- .../eclipse/cdt/debug/mi/core/RxThread.java | 9 +++++++- .../cdt/debug/mi/core/cdi/EventManager.java | 3 +++ .../debug/mi/core/cdi/event/ExitedEvent.java | 23 +++++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java index 9f4c65194c4..6ee711447e1 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.debug.mi.core.event.MIErrorEvent; import org.eclipse.cdt.debug.mi.core.event.MIEvent; import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent; import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent; +import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent; import org.eclipse.cdt.debug.mi.core.event.MILocationReachedEvent; import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent; import org.eclipse.cdt.debug.mi.core.event.MISignalEvent; @@ -374,7 +375,6 @@ public class RxThread extends Thread { } session.getMIInferior().setSuspended(); } else if ("exited-normally".equals(reason) || - "exited-signalled".equals(reason) || "exited".equals(reason)) { if (exec != null) { event = new MIInferiorExitEvent(exec); @@ -382,6 +382,13 @@ public class RxThread extends Thread { event = new MIInferiorExitEvent(rr); } session.getMIInferior().setTerminated(); + } else if ("exited-signalled".equals(reason)) { + if (exec != null) { + event = new MIInferiorSignalExitEvent(exec); + } else if (rr != null) { + event = new MIInferiorSignalExitEvent(rr); + } + session.getMIInferior().setTerminated(); } return event; } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index 839a9f3d682..a77409fd395 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -44,6 +44,7 @@ import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent; import org.eclipse.cdt.debug.mi.core.event.MIEvent; import org.eclipse.cdt.debug.mi.core.event.MIGDBExitEvent; import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent; +import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent; import org.eclipse.cdt.debug.mi.core.event.MIMemoryChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIMemoryCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent; @@ -139,6 +140,8 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs } else if (miEvent instanceof MIDestroyedEvent) { if (miEvent instanceof MIThreadExitEvent) { cdiList.add(new DestroyedEvent(session,(MIThreadExitEvent)miEvent)); + } else if (miEvent instanceof MIInferiorSignalExitEvent) { + cdiList.add(new ExitedEvent(session, (MIInferiorSignalExitEvent)miEvent)); } else if (miEvent instanceof MIInferiorExitEvent) { cdiList.add(new ExitedEvent(session, (MIInferiorExitEvent)miEvent)); } else if (miEvent instanceof MIGDBExitEvent) { diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java index 1bc4e91c83f..5b8a50352ff 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java @@ -5,30 +5,43 @@ */ package org.eclipse.cdt.debug.mi.core.cdi.event; -import org.eclipse.cdt.debug.core.cdi.ICDIExitInfo; +import org.eclipse.cdt.debug.core.cdi.ICDISessionObject; import org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent; import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; -import org.eclipse.cdt.debug.mi.core.cdi.Session; import org.eclipse.cdt.debug.mi.core.cdi.ExitInfo; +import org.eclipse.cdt.debug.mi.core.cdi.Session; +import org.eclipse.cdt.debug.mi.core.cdi.SignalExitInfo; +import org.eclipse.cdt.debug.mi.core.event.MIEvent; import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent; +import org.eclipse.cdt.debug.mi.core.event.MIInferiorSignalExitEvent; /** */ public class ExitedEvent implements ICDIExitedEvent { - MIInferiorExitEvent event; + MIEvent event; Session session; public ExitedEvent(Session s, MIInferiorExitEvent e) { session = s; event = e; } + + public ExitedEvent(Session s, MIInferiorSignalExitEvent e) { + session = s; + event = e; + } /** * @see org.eclipse.cdt.debug.core.cdi.event.ICDIExitedEvent#getExitInfo() */ - public ICDIExitInfo getExitInfo() { - return new ExitInfo(session, event); + public ICDISessionObject getReason() { + if (event instanceof MIInferiorExitEvent) { + return new ExitInfo(session, (MIInferiorExitEvent)event); + } else if (event instanceof MIInferiorSignalExitEvent) { + return new SignalExitInfo(session, (MIInferiorSignalExitEvent)event); + } + return session; } /**