Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 237306 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/cdt/dsf/gdb/launching/FinalLaunchSequence.java (-3 / +18 lines)
Lines 26-31 Link Here
26
import org.eclipse.cdt.dsf.datamodel.DataModelInitializedEvent;
26
import org.eclipse.cdt.dsf.datamodel.DataModelInitializedEvent;
27
import org.eclipse.cdt.dsf.datamodel.IDMContext;
27
import org.eclipse.cdt.dsf.datamodel.IDMContext;
28
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
28
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
29
import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext;
29
import org.eclipse.cdt.dsf.debug.service.ISourceLookup.ISourceLookupDMContext;
30
import org.eclipse.cdt.dsf.debug.service.ISourceLookup.ISourceLookupDMContext;
30
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
31
import org.eclipse.cdt.dsf.gdb.IGDBLaunchConfigurationConstants;
31
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
32
import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
Lines 37-42 Link Here
37
import org.eclipse.cdt.dsf.gdb.service.SessionType;
38
import org.eclipse.cdt.dsf.gdb.service.SessionType;
38
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
39
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
39
import org.eclipse.cdt.dsf.mi.service.CSourceLookup;
40
import org.eclipse.cdt.dsf.mi.service.CSourceLookup;
41
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
40
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
42
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
41
import org.eclipse.cdt.dsf.mi.service.MIBreakpointsManager;
43
import org.eclipse.cdt.dsf.mi.service.MIBreakpointsManager;
42
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
44
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
Lines 64-70 Link Here
64
	private CommandFactory fCommandFactory;
66
	private CommandFactory fCommandFactory;
65
67
66
	private DsfServicesTracker fTracker;
68
	private DsfServicesTracker fTracker;
67
69
	private IMIContainerDMContext fInitialContainerCtx;
70
	
68
	public FinalLaunchSequence(DsfExecutor executor, GdbLaunch launch, SessionType sessionType, boolean attach, IProgressMonitor pm) {
71
	public FinalLaunchSequence(DsfExecutor executor, GdbLaunch launch, SessionType sessionType, boolean attach, IProgressMonitor pm) {
69
		super(executor, pm, LaunchMessages.getString("FinalLaunchSequence.0"), LaunchMessages.getString("FinalLaunchSequence.1"));     //$NON-NLS-1$ //$NON-NLS-2$
72
		super(executor, pm, LaunchMessages.getString("FinalLaunchSequence.0"), LaunchMessages.getString("FinalLaunchSequence.1"));     //$NON-NLS-1$ //$NON-NLS-2$
70
		fLaunch = launch;
73
		fLaunch = launch;
Lines 131-136 Link Here
131
			return;
134
			return;
132
		}
135
		}
133
136
137
        // We can cheat a little.  Since we know GDB starts off focused on the one
138
		// groupId it automatically created, we can simply create a container with the 'null'
139
		// groupId, which will get ignored and will use the process currently in focus.
140
		IProcessDMContext procCtx = fProcService.createProcessContext(fCommandControl.getContext(), null);
141
		fInitialContainerCtx = fProcService.createContainerContext(procCtx, null);
142
		
134
		requestMonitor.done();
143
		requestMonitor.done();
135
	}
144
	}
136
145
Lines 285-291 Link Here
285
		final IPath execPath = fGDBBackend.getProgramPath();
294
		final IPath execPath = fGDBBackend.getProgramPath();
286
		if (!noFileCommand && execPath != null && !execPath.isEmpty()) {
295
		if (!noFileCommand && execPath != null && !execPath.isEmpty()) {
287
			fCommandControl.queueCommand(
296
			fCommandControl.queueCommand(
288
					fCommandFactory.createMIFileExecAndSymbols(fCommandControl.getContext(), 
297
					fCommandFactory.createMIFileExecAndSymbols(fInitialContainerCtx, 
289
							execPath.toPortableString()), 
298
							execPath.toPortableString()), 
290
							new DataRequestMonitor<MIInfo>(getExecutor(), requestMonitor));
299
							new DataRequestMonitor<MIInfo>(getExecutor(), requestMonitor));
291
		} else {
300
		} else {
Lines 670-681 Link Here
670
	public void stepStartTrackingBreakpoints(final RequestMonitor requestMonitor) {
679
	public void stepStartTrackingBreakpoints(final RequestMonitor requestMonitor) {
671
		if (fSessionType != SessionType.CORE) {
680
		if (fSessionType != SessionType.CORE) {
672
			MIBreakpointsManager bpmService = fTracker.getService(MIBreakpointsManager.class);
681
			MIBreakpointsManager bpmService = fTracker.getService(MIBreakpointsManager.class);
673
			IBreakpointsTargetDMContext breakpointDmc = (IBreakpointsTargetDMContext)fCommandControl.getContext();
682
			//IBreakpointsTargetDMContext breakpointDmc = (IBreakpointsTargetDMContext)fCommandControl.getContext();
683
			IBreakpointsTargetDMContext breakpointDmc = fInitialContainerCtx;
674
684
675
			bpmService.startTrackingBreakpoints(breakpointDmc, requestMonitor);
685
			bpmService.startTrackingBreakpoints(breakpointDmc, requestMonitor);
676
		} else {
686
		} else {
677
			requestMonitor.done();
687
			requestMonitor.done();
678
		}
688
		}
689
		
679
	}
690
	}
680
	
691
	
681
	/**
692
	/**
Lines 712-716 Link Here
712
		fTracker = null;
723
		fTracker = null;
713
		requestMonitor.done();
724
		requestMonitor.done();
714
	}
725
	}
726
	
727
	protected IMIContainerDMContext getInitialContainerContext(){
728
		return fInitialContainerCtx;
729
	}
715
}
730
}
716
731
(-)src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpoints_7_0.java (-1 / +3 lines)
Lines 27-32 Link Here
27
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
27
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
28
import org.eclipse.cdt.dsf.gdb.internal.tracepointactions.ITracepointAction;
28
import org.eclipse.cdt.dsf.gdb.internal.tracepointactions.ITracepointAction;
29
import org.eclipse.cdt.dsf.gdb.internal.tracepointactions.TracepointActionManager;
29
import org.eclipse.cdt.dsf.gdb.internal.tracepointactions.TracepointActionManager;
30
import org.eclipse.cdt.dsf.gdb.service.command.GDBControlDMContext;
30
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
31
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
31
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
32
import org.eclipse.cdt.dsf.mi.service.IMIRunControl;
32
import org.eclipse.cdt.dsf.mi.service.MIBreakpointDMData;
33
import org.eclipse.cdt.dsf.mi.service.MIBreakpointDMData;
Lines 176-182 Link Here
176
    		}
177
    		}
177
	    };
178
	    };
178
	    
179
	    
179
	    fRunControl.executeWithTargetAvailable(context, new Step[] { insertBreakpointStep }, finalRm);
180
	    GDBControlDMContext ctx = DMContexts.getAncestorOfType(context,GDBControlDMContext.class );
181
	    fRunControl.executeWithTargetAvailable(ctx, new Step[] { insertBreakpointStep }, finalRm);
180
	}
182
	}
181
	
183
	
182
	/**
184
	/**
(-)src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses_7_2.java (+7 lines)
Lines 14-25 Link Here
14
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
14
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
15
import org.eclipse.cdt.dsf.datamodel.DMContexts;
15
import org.eclipse.cdt.dsf.datamodel.DMContexts;
16
import org.eclipse.cdt.dsf.datamodel.IDMContext;
16
import org.eclipse.cdt.dsf.datamodel.IDMContext;
17
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
17
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
18
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext;
18
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
19
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
19
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
20
import org.eclipse.cdt.dsf.gdb.service.command.IGDBControl;
20
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
21
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
21
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
22
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
22
import org.eclipse.cdt.dsf.mi.service.IMIProcessDMContext;
23
import org.eclipse.cdt.dsf.mi.service.IMIProcessDMContext;
24
import org.eclipse.cdt.dsf.mi.service.MIBreakpointsManager;
23
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
25
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
24
import org.eclipse.cdt.dsf.mi.service.command.output.MIAddInferiorInfo;
26
import org.eclipse.cdt.dsf.mi.service.command.output.MIAddInferiorInfo;
25
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
27
import org.eclipse.cdt.dsf.mi.service.command.output.MIInfo;
Lines 92-97 Link Here
92
    				           return;
94
    				           return;
93
        					}
95
        					}
94
	        				
96
	        				
97
	        				// Start tracking this context breakpoints.
98
	        				MIBreakpointsManager bpmService = getServicesTracker().getService(MIBreakpointsManager.class);
99
	        				IBreakpointsTargetDMContext breakpointDmc = createContainerContextFromGroupId(fCommandControl.getContext(), groupId);
100
	        				bpmService.startTrackingBreakpoints(breakpointDmc, rm);
101
	        				
95
	        				final IMIContainerDMContext containerDmc = createContainerContext(procCtx, groupId);
102
	        				final IMIContainerDMContext containerDmc = createContainerContext(procCtx, groupId);
96
	        				fCommandControl.queueCommand(
103
	        				fCommandControl.queueCommand(
97
	        						fCommandFactory.createMITargetAttach(containerDmc, ((IMIProcessDMContext)procCtx).getProcId()),
104
	        						fCommandFactory.createMITargetAttach(containerDmc, ((IMIProcessDMContext)procCtx).getProcId()),
(-)src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl.java (-2 / +3 lines)
Lines 45-50 Link Here
45
import org.eclipse.cdt.dsf.mi.service.IMIBackend;
45
import org.eclipse.cdt.dsf.mi.service.IMIBackend;
46
import org.eclipse.cdt.dsf.mi.service.IMIBackend.BackendStateChangedEvent;
46
import org.eclipse.cdt.dsf.mi.service.IMIBackend.BackendStateChangedEvent;
47
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
47
import org.eclipse.cdt.dsf.mi.service.IMICommandControl;
48
import org.eclipse.cdt.dsf.mi.service.IMIContainerDMContext;
48
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
49
import org.eclipse.cdt.dsf.mi.service.IMIProcesses;
49
import org.eclipse.cdt.dsf.mi.service.MIProcesses;
50
import org.eclipse.cdt.dsf.mi.service.MIProcesses;
50
import org.eclipse.cdt.dsf.mi.service.MIProcesses.ContainerExitedDMEvent;
51
import org.eclipse.cdt.dsf.mi.service.MIProcesses.ContainerExitedDMEvent;
Lines 362-371 Link Here
362
    			requestMonitor.done();
363
    			requestMonitor.done();
363
    			return;
364
    			return;
364
    		}
365
    		}
365
366
    		IMIContainerDMContext fContainerDmc = procService.createContainerContextFromGroupId(fControlDmc, MIProcesses.UNIQUE_GROUP_ID);
366
    		// Insert a breakpoint at the requested stop symbol.
367
    		// Insert a breakpoint at the requested stop symbol.
367
    		queueCommand(
368
    		queueCommand(
368
    				getCommandFactory().createMIBreakInsert(fControlDmc, true, false, null, 0, stopSymbol, 0), 
369
    				getCommandFactory().createMIBreakInsert(fContainerDmc, true, false, null, 0, stopSymbol, 0), 
369
    				new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), requestMonitor) { 
370
    				new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), requestMonitor) { 
370
    					@Override
371
    					@Override
371
    					protected void handleSuccess() {
372
    					protected void handleSuccess() {
(-)src/org/eclipse/cdt/dsf/gdb/service/command/GDBControlDMContext.java (-2 / +1 lines)
Lines 10-16 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.cdt.dsf.gdb.service.command;
11
package org.eclipse.cdt.dsf.gdb.service.command;
12
12
13
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
14
import org.eclipse.cdt.dsf.debug.service.IDisassembly.IDisassemblyDMContext;
13
import org.eclipse.cdt.dsf.debug.service.IDisassembly.IDisassemblyDMContext;
15
import org.eclipse.cdt.dsf.debug.service.IModules.ISymbolDMContext;
14
import org.eclipse.cdt.dsf.debug.service.IModules.ISymbolDMContext;
16
import org.eclipse.cdt.dsf.debug.service.ISignals.ISignalsDMContext;
15
import org.eclipse.cdt.dsf.debug.service.ISignals.ISignalsDMContext;
Lines 22-28 Link Here
22
 * 
21
 * 
23
 */
22
 */
24
public class GDBControlDMContext extends MIControlDMContext
23
public class GDBControlDMContext extends MIControlDMContext
25
    implements ISymbolDMContext, IBreakpointsTargetDMContext, ISourceLookupDMContext, 
24
    implements ISymbolDMContext, ISourceLookupDMContext, 
26
        ISignalsDMContext, IDisassemblyDMContext, ITraceTargetDMContext 
25
        ISignalsDMContext, IDisassemblyDMContext, ITraceTargetDMContext 
27
{
26
{
28
27
(-)src/org/eclipse/cdt/dsf/gdb/service/command/GDBControl_7_0.java (-5 / +5 lines)
Lines 33-38 Link Here
33
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
33
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
34
import org.eclipse.cdt.dsf.concurrent.Sequence;
34
import org.eclipse.cdt.dsf.concurrent.Sequence;
35
import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
35
import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
36
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
36
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
37
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
37
import org.eclipse.cdt.dsf.debug.service.command.ICommand;
38
import org.eclipse.cdt.dsf.debug.service.command.ICommand;
38
import org.eclipse.cdt.dsf.debug.service.command.ICommandControl;
39
import org.eclipse.cdt.dsf.debug.service.command.ICommandControl;
Lines 395-402 Link Here
395
    	        			rm.done();
396
    	        			rm.done();
396
    	        			return;
397
    	        			return;
397
    	        		}
398
    	        		}
398
    	        		
399
                   		IMIProcesses procService = getServicesTracker().getService(IMIProcesses.class);
399
    	        		queueCommand(getCommandFactory().createMIBreakInsert(fControlDmc, true, false, null, 0, userStopSymbol, 0),
400
                   	    fContainerDmc = procService.createContainerContextFromGroupId(fControlDmc, MIProcesses.UNIQUE_GROUP_ID);
401
    	        		queueCommand(getCommandFactory().createMIBreakInsert((IBreakpointsTargetDMContext)fContainerDmc, true, false, null, 0, userStopSymbol, 0),
400
   	        				         new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), rm) {
402
   	        				         new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), rm) {
401
    	        			@Override
403
    	        			@Override
402
    	        			public void handleSuccess() {
404
    	        			public void handleSuccess() {
Lines 423-429 Link Here
423
       	    	@Override
425
       	    	@Override
424
      	    	public void execute(final RequestMonitor rm) {
426
      	    	public void execute(final RequestMonitor rm) {
425
       	    		if (reverseEnabled) {
427
       	    		if (reverseEnabled) {
426
     	        		queueCommand(getCommandFactory().createMIBreakInsert(fControlDmc, true, false, null, 0, 
428
     	        		queueCommand(getCommandFactory().createMIBreakInsert((IBreakpointsTargetDMContext)fContainerDmc, true, false, null, 0, 
427
     	        									   ICDTLaunchConfigurationConstants.DEBUGGER_STOP_AT_MAIN_SYMBOL_DEFAULT, 0),
429
     	        									   ICDTLaunchConfigurationConstants.DEBUGGER_STOP_AT_MAIN_SYMBOL_DEFAULT, 0),
428
     							     new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), rm) {
430
     							     new DataRequestMonitor<MIBreakInsertInfo>(getExecutor(), rm) {
429
    	        			@Override
431
    	        			@Override
Lines 448-455 Link Here
448
      	    	new Step() { 
450
      	    	new Step() { 
449
       	    	@Override
451
       	    	@Override
450
      	    	public void execute(RequestMonitor rm) {
452
      	    	public void execute(RequestMonitor rm) {
451
               		IMIProcesses procService = getServicesTracker().getService(IMIProcesses.class);
452
               	    fContainerDmc = procService.createContainerContextFromGroupId(fControlDmc, MIProcesses.UNIQUE_GROUP_ID);
453
               	    ICommand<MIInfo> command;
453
               	    ICommand<MIInfo> command;
454
454
455
       	    		if (useContinueCommand(launch, restart)) {
455
       	    		if (useContinueCommand(launch, restart)) {
(-)src/org/eclipse/cdt/dsf/mi/service/IMIContainerDMContext.java (-1 / +2 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.cdt.dsf.mi.service;
11
package org.eclipse.cdt.dsf.mi.service;
12
12
13
import org.eclipse.cdt.dsf.debug.service.IBreakpoints.IBreakpointsTargetDMContext;
13
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
14
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
14
15
15
/**
16
/**
Lines 18-24 Link Here
18
 * identifier.  These thread groups are the basis for this context.
19
 * identifier.  These thread groups are the basis for this context.
19
 * @since 1.1
20
 * @since 1.1
20
 */
21
 */
21
public interface IMIContainerDMContext extends IContainerDMContext 
22
public interface IMIContainerDMContext extends IContainerDMContext ,IBreakpointsTargetDMContext
22
{
23
{
23
    /**
24
    /**
24
     * Returns the GDB/MI thread group identifier of this context.
25
     * Returns the GDB/MI thread group identifier of this context.
(-)src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java (-1 / +4 lines)
Lines 38-43 Link Here
38
import org.eclipse.cdt.dsf.debug.service.command.ICommandControl;
38
import org.eclipse.cdt.dsf.debug.service.command.ICommandControl;
39
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlShutdownDMEvent;
39
import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlShutdownDMEvent;
40
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
40
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
41
import org.eclipse.cdt.dsf.gdb.service.command.GDBControlDMContext;
41
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
42
import org.eclipse.cdt.dsf.mi.service.command.CommandFactory;
42
import org.eclipse.cdt.dsf.mi.service.command.events.MIWatchpointScopeEvent;
43
import org.eclipse.cdt.dsf.mi.service.command.events.MIWatchpointScopeEvent;
43
import org.eclipse.cdt.dsf.mi.service.command.output.CLICatchInfo;
44
import org.eclipse.cdt.dsf.mi.service.command.output.CLICatchInfo;
Lines 920-926 Link Here
920
    		}
921
    		}
921
	    };
922
	    };
922
		
923
		
923
		fRunControl.executeWithTargetAvailable(context, new Step[] { deleteBreakpointStep }, finalRm);
924
		// Context no longer a CommandControlDMContext , With GDB 7.2 IBreakpointsTargetDMContext extends IMIContainerContext
925
		GDBControlDMContext commandControl = DMContexts.getAncestorOfType(context, GDBControlDMContext.class);
926
		fRunControl.executeWithTargetAvailable(commandControl, new Step[] { deleteBreakpointStep }, finalRm);
924
	}
927
	}
925
928
926
	// -------------------------------------------------------------------------
929
	// -------------------------------------------------------------------------
(-)src/org/eclipse/cdt/dsf/mi/service/MIRunControl.java (+6 lines)
Lines 967-972 Link Here
967
		
967
		
968
		@Override
968
		@Override
969
		public void execute(final RequestMonitor rm) {
969
		public void execute(final RequestMonitor rm) {
970
			if (fCtx instanceof IContainerDMContext) {
971
				fContainerDmc = (IContainerDMContext)(fCtx);
972
				fTargetAvailable = isSuspended(fContainerDmc);
973
				rm.done();
974
			} else {
970
			IProcesses processControl = getServicesTracker().getService(IProcesses.class);
975
			IProcesses processControl = getServicesTracker().getService(IProcesses.class);
971
			processControl.getProcessesBeingDebugged(
976
			processControl.getProcessesBeingDebugged(
972
					fCtx,
977
					fCtx,
Lines 987-992 Link Here
987
						}
992
						}
988
					});
993
					});
989
		}
994
		}
995
		}
990
	};
996
	};
991
997
992
	/**
998
	/**
(-)src/org/eclipse/cdt/dsf/mi/service/command/commands/MIBreakDelete.java (+5 lines)
Lines 39-42 Link Here
39
            setParameters(brkids);
39
            setParameters(brkids);
40
        } 
40
        } 
41
    }
41
    }
42
    
43
    @Override
44
    public boolean supportsThreadGroupOption() {
45
    	return true;
46
    }
42
}
47
}
(-)src/org/eclipse/cdt/dsf/mi/service/command/commands/MIBreakInsert.java (+5 lines)
Lines 198-201 Link Here
198
			return adjustedValue.replace("\\\\", "\\"); //$NON-NLS-1$//$NON-NLS-2$
198
			return adjustedValue.replace("\\\\", "\\"); //$NON-NLS-1$//$NON-NLS-2$
199
		}
199
		}
200
	}
200
	}
201
	
202
    @Override
203
    public boolean supportsThreadGroupOption() {
204
    	return true;
205
    }
201
}
206
}
(-)src/org/eclipse/cdt/dsf/mi/service/command/commands/MICommand.java (-1 / +1 lines)
Lines 257-263 Link Here
257
    /**
257
    /**
258
     * @since 4.0
258
     * @since 4.0
259
     */
259
     */
260
    public boolean supportsThreadGroupOption() { return false; }
260
    public boolean supportsThreadGroupOption() { return true; }
261
    
261
    
262
    /**
262
    /**
263
     * Compare commands based on the MI command string that they generate, 
263
     * Compare commands based on the MI command string that they generate, 
(-)src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/AbstractDisassemblyBackend.java (+18 lines)
Added Link Here
1
package org.eclipse.cdt.debug.internal.ui.disassembly.dsf;
2
3
import java.math.BigInteger;
4
5
public class AbstractDisassemblyBackend {
6
7
	public void init(IDisassemblyPartCallback callback) {
8
		// TODO Auto-generated method stub
9
		
10
	}
11
12
	public BigInteger evaluateAddressExpression(String symbol,
13
			boolean suppressError) {
14
		// TODO Auto-generated method stub
15
		return null;
16
	}
17
18
}
(-)src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyBackendDsf.java (-1 / +4 lines)
Lines 27-32 Link Here
27
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition;
27
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition;
28
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyUtils;
28
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyUtils;
29
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.ErrorPosition;
29
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.ErrorPosition;
30
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyBackend.SetDebugContextResult;
30
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyPartCallback;
31
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyPartCallback;
31
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
32
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
32
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
33
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
Lines 79-84 Link Here
79
	protected IFrameDMData fTargetFrameData;
80
	protected IFrameDMData fTargetFrameData;
80
81
81
	private String fDsfSessionId;
82
	private String fDsfSessionId;
83
	private IDisassemblyPartCallback fCallback;
82
84
83
	/**
85
	/**
84
	 * Constructor
86
	 * Constructor
Lines 228-234 Link Here
228
				fTargetContext= newExeDmc;
230
				fTargetContext= newExeDmc;
229
				fTargetFrameContext= frame;
231
				fTargetFrameContext= frame;
230
				if (!result.contextChanged) {
232
				if (!result.contextChanged) {
231
					fCallback.gotoFrameIfActive(frame.getLevel());
233
					IDisassemblyPartCallback fCallback = null;
234
					//fCallback.gotoFrameIfActive(frame.getLevel());
232
				}
235
				}
233
			}
236
			}
234
		}
237
		}
(-)src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/DisassemblyPart.java (-16 / +1 lines)
Lines 28-37 Link Here
28
28
29
import org.eclipse.cdt.core.IAddress;
29
import org.eclipse.cdt.core.IAddress;
30
import org.eclipse.cdt.core.model.ITranslationUnit;
30
import org.eclipse.cdt.core.model.ITranslationUnit;
31
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AbstractDisassemblyBackend;
32
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition;
31
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.AddressRangePosition;
33
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyPosition;
32
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyPosition;
34
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.DisassemblyUtils;
35
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.ErrorPosition;
33
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.ErrorPosition;
36
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyBackend;
34
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyBackend;
37
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyDocument;
35
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyDocument;
Lines 3027-3046 Link Here
3027
	public BigInteger eval(String expr, boolean suppressError) {
3025
	public BigInteger eval(String expr, boolean suppressError) {
3028
		if (fBackend != null) {
3026
		if (fBackend != null) {
3029
			BigInteger address = null;
3027
			BigInteger address = null;
3030
			if (fBackend instanceof AbstractDisassemblyBackend) {
3028
3031
				address = ((AbstractDisassemblyBackend) fBackend).evaluateAddressExpression(expr, suppressError);
3032
			} else {
3033
				String value = fBackend.evaluateExpression(expr);
3034
				if (value != null) {
3035
					try {
3036
						address = DisassemblyUtils.decodeAddress(value);
3037
					} catch (NumberFormatException e) {
3038
						if (!suppressError) {
3039
							generateErrorDialog(DisassemblyMessages.Disassembly_log_error_expression_eval);
3040
						}
3041
					}
3042
				}
3043
			}
3044
			if (address != null)
3029
			if (address != null)
3045
				return address;
3030
				return address;
3046
		}
3031
		}
(-)src/org/eclipse/cdt/dsf/debug/internal/ui/disassembly/actions/AbstractDisassemblyAction.java (-1 / +7 lines)
Lines 10-15 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions;
11
package org.eclipse.cdt.dsf.debug.internal.ui.disassembly.actions;
12
12
13
import org.eclipse.cdt.debug.internal.ui.disassembly.dsf.IDisassemblyPartCallback;
13
import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart;
14
import org.eclipse.cdt.dsf.debug.internal.ui.disassembly.provisional.IDisassemblyPart;
14
import org.eclipse.core.runtime.Assert;
15
import org.eclipse.core.runtime.Assert;
15
import org.eclipse.jface.action.Action;
16
import org.eclipse.jface.action.Action;
Lines 20-26 Link Here
20
21
21
	protected IDisassemblyPart fDisassemblyPart;
22
	protected IDisassemblyPart fDisassemblyPart;
22
23
23
	AbstractDisassemblyAction() {
24
	protected AbstractDisassemblyAction() {
24
	}
25
	}
25
26
26
	/**
27
	/**
Lines 78-81 Link Here
78
			update();
79
			update();
79
		}
80
		}
80
	}
81
	}
82
83
	public void init(IDisassemblyPartCallback callback) {
84
		// TODO Auto-generated method stub
85
		
86
	}
81
}
87
}

Return to bug 237306