From ae82c8efca8334ddf74730a0be655b701a27c01d Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Fri, 29 Aug 2003 20:50:45 +0000 Subject: [PATCH] Moving shared library features from mi to CDI. Added new methods to ICDISharedLibraryManager: - isAutoLoadSymbols - isStopOnSolibEvents - setAutoLoadSymbols - setStopOnSolibEvents - supportsAutoLoadSymbols - supportsStopOnSolibEvents --- debug/org.eclipse.cdt.debug.core/ChangeLog | 11 +++++ debug/org.eclipse.cdt.debug.mi.core/ChangeLog | 11 +++++ .../mi/core/cdi/SharedLibraryManager.java | 47 +++++++++++++++++++ .../debug/mi/core/command/CommandFactory.java | 4 ++ .../command/MIGDBSetStopOnSolibEvents.java | 20 ++++++++ 5 files changed, 93 insertions(+) create mode 100644 debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index dfbbebb3830..71f5e6579af 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,14 @@ +2003-08-29 Mikhail Khodjaiants + Moving shared library features from mi to CDI. + Added new methods to ICDISharedLibraryManager: + - isAutoLoadSymbols + - isStopOnSolibEvents + - setAutoLoadSymbols + - setStopOnSolibEvents + - supportsAutoLoadSymbols + - supportsStopOnSolibEvents + * ICDISharedLibraryManager.java + 2003-08-21 Mikhail Khodjaiants Removed the 'isAccessSpecifier' method from CVaraiable. * CArrayPartitionValue.java diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 0c34a1e4af7..55ebe61d209 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,14 @@ +2003-08-29 Mikhail Khodjaiants + + Added new command - 'set stop-on-solib-events'. + + * src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java + * src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java + + Implementation of the new methods added to the 'ICDISharedLibraryManager' interface. + + * src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java + 2003-08-26 Alain Magloire This is still a hack: "info shared" the real solution diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java index 99367b160c1..5318dd6f363 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.SharedLibrary; import org.eclipse.cdt.debug.mi.core.command.CommandFactory; import org.eclipse.cdt.debug.mi.core.command.MIGDBSetAutoSolib; import org.eclipse.cdt.debug.mi.core.command.MIGDBSetSolibSearchPath; +import org.eclipse.cdt.debug.mi.core.command.MIGDBSetStopOnSolibEvents; import org.eclipse.cdt.debug.mi.core.command.MIGDBShow; import org.eclipse.cdt.debug.mi.core.command.MIGDBShowSolibSearchPath; import org.eclipse.cdt.debug.mi.core.command.MIInfoSharedLibrary; @@ -168,6 +169,37 @@ public class SharedLibraryManager extends SessionObject implements ICDISharedLib return false; } + public void setStopOnSolibEvents(boolean set) throws CDIException { + Session session = (Session)getSession(); + MISession mi = session.getMISession(); + CommandFactory factory = mi.getCommandFactory(); + MIGDBSetStopOnSolibEvents stop = factory.createMIGDBSetStopOnSolibEvents(set); + try { + mi.postCommand(stop); + stop.getMIInfo(); + } catch (MIException e) { + throw new MI2CDIException(e); + } + } + + public boolean isStopOnSolibEvents() throws CDIException { + Session session = (Session)getSession(); + MISession mi = session.getMISession(); + CommandFactory factory = mi.getCommandFactory(); + MIGDBShow show = factory.createMIGDBShow(new String[]{"stop-on-solib-events"}); + try { + mi.postCommand(show); + MIGDBShowInfo info = show.getMIGDBShowInfo(); + String value = info.getValue(); + if (value != null) { + return value.equalsIgnoreCase("1"); + } + } catch (MIException e) { + throw new MI2CDIException(e); + } + return false; + } + /** * @see org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager#setSharedLibraryPaths(String[]) */ @@ -268,4 +300,19 @@ public class SharedLibraryManager extends SessionObject implements ICDISharedLib autoupdate = update; } + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager#supportsAutoLoadSymbols() + */ + public boolean supportsAutoLoadSymbols() + { + return true; + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager#supportsStopOnSolibEvents() + */ + public boolean supportsStopOnSolibEvents() + { + return true; + } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java index 2b9790fbf46..2ef3145589c 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java @@ -181,6 +181,10 @@ public class CommandFactory { return new MIGDBSetAutoSolib(set); } + public MIGDBSetStopOnSolibEvents createMIGDBSetStopOnSolibEvents(boolean set) { + return new MIGDBSetStopOnSolibEvents(set); + } + public MIGDBSetSolibSearchPath createMIGDBSetSolibSearchPath(String[] params) { return new MIGDBSetSolibSearchPath(params); } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java new file mode 100644 index 00000000000..976508e2c97 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetStopOnSolibEvents.java @@ -0,0 +1,20 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.mi.core.command; + +/** + * + * -gdb-set stop-on-solib-events + * + * Set an internal GDB variable. + * + */ +public class MIGDBSetStopOnSolibEvents extends MIGDBSet { + public MIGDBSetStopOnSolibEvents(boolean isSet) { + super(new String[] {"stop-on-solib-events", (isSet) ? "1" : "0"}); + } +}