From 82a91d1c7f375cf98e1f8ef81191282329e55a27 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Fri, 18 Feb 2011 19:49:18 +0000 Subject: [PATCH] Bug 337602: Setting program arguments should be done per process --- .../gdb/service/DebugNewProcessSequence.java | 4 ++-- .../mi/service/command/CommandFactory.java | 19 +++------------- .../command/commands/MIGDBSetArgs.java | 22 ++++++------------- .../core/GDBJtagDSFFinalLaunchSequence.java | 5 ++++- 4 files changed, 16 insertions(+), 34 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java index a0e171930e3..997afc91601 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/DebugNewProcessSequence.java @@ -183,9 +183,9 @@ public class DebugNewProcessSequence extends ReflectionSequence { String args = fBackend.getProgramArguments(); if (args != null) { + String[] argArray = args.replaceAll("\n", " ").split(" "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ fCommandControl.queueCommand( - // here we need to pass the proper container context - fCommandFactory.createMIGDBSetArgs(fCommandControl.getContext(), args), + fCommandFactory.createMIGDBSetArgs(getContainerContext(), argArray), new DataRequestMonitor(ImmediateExecutor.getInstance(), rm)); } else { rm.done(); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java index 82d1bd3a97c..63aaac950a7 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/CommandFactory.java @@ -527,16 +527,6 @@ public class CommandFactory { return new MIExecUntil(dmc, loc); } - @Deprecated - public ICommand createMIFileExecAndSymbols(ICommandControlDMContext dmc, String file) { - return new MIFileExecAndSymbols(dmc, file); - } - - @Deprecated - public ICommand createMIFileExecAndSymbols(ICommandControlDMContext dmc) { - return new MIFileExecAndSymbols(dmc); - } - /** @since 4.0 */ public ICommand createMIFileExecAndSymbols(IMIContainerDMContext dmc, String file) { return new MIFileExecAndSymbols(dmc, file); @@ -571,16 +561,13 @@ public class CommandFactory { return new MIGDBSet(ctx, params); } - public ICommand createMIGDBSetArgs(ICommandControlDMContext dmc) { + /** @since 4.0 */ + public ICommand createMIGDBSetArgs(IMIContainerDMContext dmc) { return new MIGDBSetArgs(dmc); } - public ICommand createMIGDBSetArgs(ICommandControlDMContext dmc, String arguments) { - return new MIGDBSetArgs(dmc, arguments); - } - /** @since 4.0 */ - public ICommand createMIGDBSetArgs(ICommandControlDMContext dmc, String[] arguments) { + public ICommand createMIGDBSetArgs(IMIContainerDMContext dmc, String[] arguments) { return new MIGDBSetArgs(dmc, arguments); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetArgs.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetArgs.java index 287f638794b..13b34a8c8d9 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetArgs.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/commands/MIGDBSetArgs.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Ericsson and others. + * Copyright (c) 2008, 2011 Ericsson 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 @@ -12,7 +12,7 @@ package org.eclipse.cdt.dsf.mi.service.command.commands; -import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext; +import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext; /** * -gdb-set args ARGS @@ -21,14 +21,14 @@ import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommand * @since 1.1 */ public class MIGDBSetArgs extends MIGDBSet { - public MIGDBSetArgs(ICommandControlDMContext dmc) { + + /** @since 4.0 */ + public MIGDBSetArgs(IMIContainerDMContext dmc) { this(dmc, new String[0]); } - /** - * @since 4.0 - */ - public MIGDBSetArgs(ICommandControlDMContext dmc, String[] arguments) { + /** @since 4.0 */ + public MIGDBSetArgs(IMIContainerDMContext dmc, String[] arguments) { super(dmc, null); String[] cmdArray = new String[arguments.length + 1]; @@ -38,12 +38,4 @@ public class MIGDBSetArgs extends MIGDBSet { } setParameters(cmdArray); } - - /** - * @deprecated Use MIGDBSetArgs(ICommandControlDMContext, String[]) instead. - */ - @Deprecated - public MIGDBSetArgs(ICommandControlDMContext dmc, String arguments) { - this(dmc, arguments.replaceAll("\n", " ").split(" ")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - } } diff --git a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java index 43d2a7d6dab..7c669a16460 100644 --- a/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java +++ b/jtag/org.eclipse.cdt.debug.gdbjtag.core/src/org/eclipse/cdt/debug/gdbjtag/core/GDBJtagDSFFinalLaunchSequence.java @@ -51,6 +51,7 @@ import org.eclipse.cdt.dsf.mi.service.CSourceLookup; import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext; import org.eclipse.cdt.dsf.mi.service.IMIProcesses; import org.eclipse.cdt.dsf.mi.service.MIBreakpointsManager; +import org.eclipse.cdt.dsf.mi.service.MIProcesses; import org.eclipse.cdt.dsf.mi.service.command.CommandFactory; import org.eclipse.cdt.dsf.mi.service.command.commands.CLICommand; import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo; @@ -212,8 +213,10 @@ public class GDBJtagDSFFinalLaunchSequence extends Sequence { String args = fGDBBackend.getProgramArguments(); if (args != null) { + String[] argArray = args.replaceAll("\n", " ").split(" "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + IMIContainerDMContext containerDmc = fProcService.createContainerContextFromGroupId(fCommandControl.getContext(), MIProcesses.UNIQUE_GROUP_ID); fCommandControl.queueCommand( - fCommandFactory.createMIGDBSetArgs(fCommandControl.getContext(), args), + fCommandFactory.createMIGDBSetArgs(containerDmc, argArray), new DataRequestMonitor(getExecutor(), requestMonitor)); } else { requestMonitor.done();