2003-12-22 Mikhail Khodjaiants
	Fix for bug 49282 terminate the gdb session if the termination of the inferior fails.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java

2003-12-22 Mikhail Khodjaiants
	Fix for Bug 49278 do not retry the "info threads" command if the first attempt fails.
	Throw an exception from the "getCThreads" method when it fails.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java

2003-12-18 Alain Magloire

	PR 49148
	Set environment variable value to give the program.
	Arguments are VAR VALUE where VAR is variable name and VALUE is value.
	VALUES of environment variables are uninterpreted strings.
	This does not affect the program until the next "run" command.
	
	So pass the string raw.

	* src/org/eclipse/cdt/debug/mi/core/command/MIGDBSetEnvironment.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java
	* src/org/eclipse/cdt/debug/mi/core/CommandFactory.java

2003-12-17 Mikhail Khodjaiants

	Fix for bug 49061: Different values are used as default for the "Load shared library symbols automatically" option.

	* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/IMILaunchConfigurationConstants.java
	* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java

2003-12-16 Mikhail Khodjaiants

	Show the gdb arguments when tracing.

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
 
2003-12-16 Mikhail Khodjaiants

	Fix for PR 48870: Terminate gdb if attach to process fails.

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java

2003-12-09 Alain Magloire

	Do not try to interrupt if the target was suspended.

	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java

2003-12-08 Alain Magloire

	Target.terminate() did not pass the exception up.
	Added new method MIInferior.terminate().

	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java

2003-12-02 Alain Magloire

	Retry the stack-info-depth when it fails the first time
	and decrement the count.  GDB can cope up the second try
	and probably mark the thread invalid.
	Patch base on Ashish Karkare patch:

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java

2003-11-26 Mikhail Khodjaiants
	Cleanup.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
	* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java

2003-11-26 Mikhail Khodjaiants
	Cleanup.
	
	* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumedEvent.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java
	* src/org/eclipse/cdt/debug/mi/core/command/MIBreakAfter.java
	* src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java
	* src/org/eclipse/cdt/debug/mi/core/event/MIInferiorSignalExitEvent.java
	* src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java
	* src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java
	* src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowDirectoriesInfo.java
	* src/org/eclipse/cdt/debug/mi/core/output/MIGDBShowSolibSearchPathInfo.java
	* src/org/eclipse/cdt/debug/mi/core/output/MIList.java

2003-11-25 Alain Magloire

	Process the suspend event even if there is not threads
	or stack associated with the target.

	* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java

2003-11-22 Alain Magloire

	In MISession constructor if the initialization fails shutdown
	the Tx/RX/Event threads.
	In MIPlugin if the initialization fails shutdown the pty console.
	Ditto for GDBDebugger/GDBServerDebugger/CygwinGDBDebugger.

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
	* src/org/eclipse/cdt/debug/mi/core/MISession.java
	* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
	* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java

2003-11-21 Alain Magloire

	The wrong MIPlugin.createCSession() method was used.
	Problem noted by Ashish.

	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java

2003-11-21 Mikhail Khodjaiants

	* src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
	Fix for PR 46592: Debug View shows Functions as func(type param,...)().
	Return an empty string instead of "??" if the function name is not available.

2003-11-20 Alain Magloire

	Fix NPE: 46313. Setting breakpoint when the target was running
	was throwing NPE.

	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
	* src/org/eclipse/cdt/debug/mi/core/cdit/EventManager.java

2003-11-19 Mikhail Khodjaiants

	Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process.
	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: removed the 'getAdjustedTimeout' method.
	
2003-11-19 Mikhail Khodjaiants

	Fix for PR 45533: MIException while creating MISession can leave an orphan gdb process. 
	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java: initialization of preferences by default values. 
	* src/org/eclipse/cdt/debug/mi/core/MISession.java: removed the duplicate constant for the default 
	launch timeout value. 

2003-11-13 Mikhail Khodjaiants

	* src/org/eclipse/cdt/debug/mi/core/output/MIFrame.java
	Fix for PR 46592: Debug View shows Functions as func(type param,...)().
	In some situations gdb returns the function names that include parameter types. 
	To make the presentation consistent truncate the parameters.
	
2003-11-06 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java:
	Small fix for the defferred breakpoint support.

2003-11-06 Alain Magloire
	
	Patch from Ashish Karkare:
	A CDT 1.2 patch that enables setting of
	serial line speed in the launch configuration when debugging remote targets.
 
	* src/org/eclipse/cdt/debug/mi/core/IGDBServerMILaunchConfigurationConstants.java
    New attribute definition DEV_SPEED.
 
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java
    Extracts  serial speed value and passes it to createCSession().
  

2003-10-29 Alain Magloire

	Deal with PR 45533

	Make a preferenc for Timeout and use it when launching
	the ICDebugger session, when way wait for for gdb
	to say "ready" by returning the prompt.

	* src/org/eclipse/cdt/debug/mi/core/MISession.java
	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java
	* src/org/eclipse/cdt/debug/mi/core/IMIConstants.java
	
2003-10-17 Alain Magloire

	Put the framework to deal with deferred breakpoint.

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ResumeEvent.java
	Deal with MIRunningEvent.RETURN.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java
	Check if MIBreakpoint is null first.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Watchpoint.java
	Check if MIWathchpoint is null first.
	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
	Implement Deferred Breakpoint
	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
	Implement Deferred Breakpoint
	* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java
	Enable deferredBreakpoint.
	* src/org/eclipse/cdt/debug/mi/core/CygwinDebugger.java
	Enable deferredBreakpoint.
	

2003-10-07 Mikhail Khodjaiants

	All methods of 'IRuntimeOptions' should throw CDI exceptions in case of failure.
	* src/org/eclipse/cdt/debug/mi/core/cdi/RuntimeOptions.java

2003-09-30 Alain Magloire

	ICDIVariableObject.equals();
	
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java

2003-09-29 Mikhail Khodjaiants
	Added the initialization of the shared libraries' attributes to CygwinGDBDebugger.
	
	* src/org/eclipse/cdt/debug/mi/core/CygwinGDBDebugger.java

2003-09-26 Alain Magloire

	Second part of PR 43496.
	On the startup of GDB, we have to wait for "(gdb)" prompt
	to make sure that gdb is ready to accept command.

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java

2003-09-25 Alain Magloire

	Fix for PR 43496.
	In the event of an error we should Process.destroy()
	after creating the Process.

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java

2003-09-11 Mikhail Khodjaiants
	Moving the shared library search paths block to mi UI.
	* IMILaunchConfigurationConstants.java: added the 'ATTR_DEBUGGER_SOLIB_PATH' attribute.

2003-09-11 Alain Magloire

	Fix to info shared parsing.

	* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSharedLibary.java

2003-09-09 Mikhail Khodjaiants
	Regrouping the launch configuration constants.
	* IMILaunchConfigurationConstants.java

2003-09-09 Mikhail Khodjaiants
	Added the 'stop-on-solib-events' option. 
	Changed the initialization of the shared library search path.
	Changed the messages of the thrown exceptions.
	* GDBDebugger.java

2003-09-09 Mikhail Khodjaiants

	CoreFileConfiguration supports shared libraries.

	* src/org/eclipse/cdt/debug/mi/core/cdi/CoreFileConfiguration.java

2003-08-30 Alain Magloire

	Unnecessary synchronization making deadlocks.  Should revisit this code.
	
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java

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
	is to implement in GDB/MI the corresponding command.
	So now we do weird parsing, that varies from platform
	to platform.  For example Cygwin output of "info shared"
	is totally different from the GNU/Linux one etc ...
	We the best we can to cope ... but things will break.

	* src/org/eclipse.cdt/debug/mi/core/output/MIInfoSharedLibraryInfo.java

2003-08-26 Alain Magloire

	Using the wrong method for toString() and we were returning
	a overly verbose string.

	* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java

2003-08-25 Alain Magloire

	Small fix, get the datatype for the GDBTypeParser.

	* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java

2003-08-22 Alain Magloire

	For casting array we use the "@" format, hide it in
	the name.  But show it the qualifiedName() since the
	expression is use to evaluate.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java 
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 

2003-08-21 Alain Magloire

	GDB varobj for the arrays children name only returns
	the index.  We need to construct the entire name:
	char buffer[2]
	GDB return "0", "1" for the children names.
	We will return
	"buffer[0]", "buffer[1]"

	* src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java

2003-08-20 Alain Magloire

	GDB/MI altough define an interface that all commands should
	follow .. they do not.  For example, we should be able
	to separate options from agument with a "--" string not
	all commands.  The latest is -break-condition.
	So we override the MICommand.toString() to do specific
	parsing for specific commands.

	* src/org/eclipse/cdt/debug/mi/core/command/MICommand.java
	break the toString() method.
	* src/org/eclipse/cdt/debug/mi/core/command/MIBreakCondition.java

2003-08-19 Alain Magloire

	Fix to the GDBTypeParser to deal with gdb
	awkwardness
	* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java

2003-08-19 Alain Magloire

	GDB, uses false category for C++ class/struct.
	Fix to return the correct name.
	
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java

2003-08-18 Alain Magloire

	Patch from Chris Songer, excerpt from the email.
	Using the phrase "To ensure consistency between a register name and its
	number, the output list may include empty register names," the MI protocol
	appears to allow gdb to return a "sparse" array of registers by giving a 0
	length name in response to the -data-list-register-names-command. CDT 1.0.1
	does not handle this especially well and subsequently exposes a bug in GDB
	5.1.3 and crashes it if the debugger has more than 3  register names of 0
	length.
	
	example:

	8-data-list-register-names
	(gdb)                                                                                                                          
	8^done,register-names=["ar0","ar1",... ,"","","","","","","ur0",\
	"ur1","ur2","ur3","ur4","ur5","ur6","ur7","","" ..]
	

	* src/org/eclipse/cdt/debug/mi/core/output/MIDataListRegisterNamesInfo.java:
	New method getNumRealNames().
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
	Check if the register name is not empty.
	
2003-08-18 Alain Magloire

	From the manual:
	By default GDB will automatically keep track of objects as they are
	loaded and unloaded by the dynamic linker.  By using the command `set
	stop-on-solib-events 1' you can arrange for GDB to stop the inferior
	when shared library events occur, thus allowing you to set breakpoints
	in shared libraries which are explicitly loaded by the inferior.

	* src/org/eclipse/cdt/debug/mi/core/event/MISharedLibEvent.java:
	New file, StoppedEvent du to shared lib events.
	* src/org/eclipse/cdt/debug/mi/core/cdi/event/SuspendedEvent.java:
	Catch MISharedLibEvent.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryevent.java:
	New file implements ICDISharedLibaryEvent.
	* src/org/eclipse/cdt/debug/mi/core/RxThread.java:
	Hack to catch suspend/stop on shared library.

2003-08-11 Mikhail Khodjaiants
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Removed the 'type' parameter from the 'getVariableObjectAsArray' method.

2003-08-11 Mikhail Khodjaiants
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
	The 'type' argument of the 'getVariableObjectAsArray' method shouldn't be null.
 
2003-08-11 Mikhail Khodjaiants
	* src/org/eclipse/cdt/debug/mi/core/cdi/variableManager.java
	Mistype in the 'CheckType' method.

2003-08-07 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/variableManager.java
	getVariableObjectAsArray() ignore the type argument it does
	not work with gdb.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java
	Added hasChildren() method.

2003-08-07 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Update the interface to reflect ICDIVariableManager.

2003-08-06 Mikhail Khodjaiants
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
	Removed the unused local variable 'children' from the 'getVariables' method.

2003-08-07 Alain Magloire

	PR 38964.
	
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java:
	The method interrupted was synchronized and so was the
	setSuspended().  Now do a notify when the status change.
	Throw an exception if the interrupt() failed.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
	Do not check for running.

2003-08-06 Alain Magloire

	Dealing with casting: Casting a field of a structure did not
	work properly for example:
		struct foo { int bar; } foobar;
	To cast the field bar, we need to construct the full qualified
	name "foobar.bar".
	Unfortunately for C++ things are hectic in the GDB/MI world
	the childre of structure are not the fields.  So we try to
	deal with it too.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
	New constructor, new method getLanguage() to deal with
	different type of languages ex: C vs C++.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	Clean up and added a bunch of set/getXXX() methods instead of
	accessing directly the fields.
	* src/og/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Clean the methods use for casting and format the indentation.
	* src/org/eclipse/cdt/debug/mi/core/command/MIVarInfoExpression.java:
	Added parsing method.

2003-08-06 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	Implement isEditable method.

2003-08-06 Mikhail Khodjaiants
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
	Fix for 'isEditable'.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	Use correct expression in 'sizeof'.
	
2003-08-06 Alain Magloire

	First framework to deal with breaking the arrays in ranges.

	*  src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java:
	Remove unused getArgumentObject().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
	Remove unuse getRegisterObject().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
	Move methods to VariableObject to comply with the interface.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	Implement new methods of ICDIVariableObject.java
	Save the castin information.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java:
	New method getVariables(int, int).
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	New method encodeVariable(), to get the encode specific string
	for gdb casting of arrays.

2003-07-28 Mikhail Khodjaiants

	Minimize the number of the "evaluate expression" requests when changing the value of the floating point types.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java

2003-07-17 Alain Magloire

	Catch the use of cli command "detach" and fire the appropriate events.

	* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java

2003-07-16 Alain Magloire

	Provide FunctionValue, PointerValue and ArrayValue.
	For ArrayValue apply the patch from Chris Songer, excerpt from
	his email:
		Given GDB performance, we saw CDT start to time out on large array 
 		requests. The following patch corrects this by scaling the time out with 
		the number of children being retrieved. I have not looked at the head on 
		this so your mileage may vary. On 1.0.1 with this and the MIParser change 
		you can open 16k arrays.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValueValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java

2003-07-10 Alain Magloire

	In the case of not having a PTY to unmixed inferior output from gdb commands
	do the only sane thing and when a response comes in that is not a valid
	MI format consider it as inferior output.

	* src/org/eclipse/cdt/debug/mi/core/output/MIParser.java:
	Put non valid lines in the TargetStream.
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java:
	Pass output straight to the target.
	* src/org/eclipse/cdt/debug/mi/core/TxThread.java:
	Remove unused code.
	* src/org/eclipse/cdt/debug/mi/core/command/Command.java:
	Try to remove duplicate errors when throwing the MIException.

2003-07-08 Alain Magloire

	Unfortunately GDB/MI does not make the errors available via the advertise
	way explain in the documentation, for example:
		27-var-create - * this->aaa
		&"There is no member or method named aaa.\n"
		&"Type Hello has no component named aaa.\n"
		27^error,msg="."

	According to the doc, the error should be available in the msg field:
		27^error,msg="There is no member or method named aaaa"

	Since this will not be fix in GDB/MI anytime soon, we cope with it by
	grabing the logstream error and make it available in
	
		CDIException.getDetailedMesssage().

	* src/org/eclipse/cdt/debug/mi/core/command/*.java:  All the commands
	changed to grab also the logstream messages if any for the exception.
	
2003-06-25 Alain Magloire

	Patch from Chris Songer, excerpt from its email:
	The MIParser is O(N^2) time in the length of a line returned from GDB. 
	While not an issue for OOB messages, this can be quite an issue for array 
	retrieval from the target and other potentially long messages. It's N^2 
	because it relies on StringBuffer.deleteCharAt( 0 ) and 
	StringBuffer.delete( 0, X ). These operations appear to do a copy of the 
	remaining data in the Sun Java library rather than bumping some index.

	The following diffs are code that we are using on 1.0.1 to correct this 
	issue. It's relatively new, so there may be some bugs but has certainly 
	performed just fine in our initial regressions. Because of that I'm not 
	sending it in as a patch, more an FYI really. The basic change is exactly 
	what you'd expect: these diffs make MIParser use a new type of string 
	buffer that's quite efficient at deleting from the head of the array.

	* src/org/eclipse/cdt/debug/mi/core/output/MIParser.java

2003-06-18 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java:
	Check if the variable was a register.
	* src/org/eclipse/cdt/debug/mi/core/cdi/event/CreatedEvent.java:
	Cleanup.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
	Removing of method {get,set}Value() and new method getChildren().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
	(setValue): calls update on the appropriate manager.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterValue.java:
	Remove file, unused.
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	(getVariableObjectAsType): check for register.
	(getVariableObjectAsArray): check for register.	
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
	(getRegister): reimplemented.

2003-06-18 Mikhail Khodjaiants
	Removed unused local variable.
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java

2003-06-17 Alain Magloire

	PR 38934
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java (update):
	We have to call "-var-update" to update the register values in gdb.

2003-06-05 Mikhail Khodjaiants
	gdb/mi support of infinite values of the floating point types.
	* DoubleValue.java
	* FloatingPointValue.java
	* FloatValue.java

2003-06-05 Mikhail Khodjaiants
	Removed the redundant methods from the 'ICDIFloatingPointValue' interface.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java

2003-06-04 Mikhail Khodjaiants
	Correction in the parsing of reference value.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
	
2003-06-04 Mikhail Khodjaiants
	Added some missing types and methods for the type parsing.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DoubleValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatingPointValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FloatValue.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java: new
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java: new

2003-06-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java:
	Bug fix gdb returns fix like "char [200]" no variables.

2003-06-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
	(getType): save the head of the type for the return value.

2003-06-02 Alain Magloire

	Enable the new type parsing with the class GDBTypeParser.
	This class takes the output of GDB/MI
	(gdb) whatis
	or
	(gdb) ptype
	And parse it.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayType.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedType.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerType.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionType.java
	* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java
	* src/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java

2003-05-25 Alain Magloire

	Do extra parsing.
	* src/org/eclipse/cdt/debug/mi/core/model/type/ArrayType.java
	* src/org/eclipse/cdt/debug/mi/core/model/type/DerivedType.java
	* src/org/eclipse/cdt/debug/mi/core/model/type/PointerType.java
	* src/org/eclipse/cdt/debug/mi/core/model/type/FunctionType.java
	* src/org/eclipse/cdt/debug/mi/core/model/Variable.java

2003-05-24 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/StackFrame.java
	When execption reset the variable to null and rethrow the exception.

2003-05-24 Alain Magloire

	Continuing the implementation of types.
	ICDIType is ICDIObject.
	* src/org/eclispe/cdt/mi/core/cdi/model/type/Type.java:
	Extends CObject

2003-05-23 Alain Magloire

	Draft implementation of org.eclipse.cdt.debug.core.cdi.model.type/*

2003-05-06 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java (suspend):
	Suspend the program before selecting the thread.

2003-05-01 Mikhail Khodjaiants
	Implementations of the new "terminateSessionOnExit" method of ICDIConfiguration.
	* Configuration.java
	* CoreFileConfiguration.java

2003-04-30 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java:
	Call MIInferior.update() if attaching session.

2003-04-30 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/Configuration.java (supportsTerminate):
	Returns true.

2003-04-25 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/EventManager.java (update):
	Remove the call to MIInferior.update(), wrong place.
	* src/org/eclipse/cdt/debug/mi/core/EventThread.java (run):
	Call MIInferior.update() when suspended.
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (update):
	Do not do the call to "info program" for type "attached" sessions.
	* src/org/eclipse/cdt/debug/mi/core/MISession.java (terminate):
	When terminate() is call disable posting commands to the queue etc...

2003-04-25 Mikhail Khodjaiants

	Fix for bug 36909.
	* MIFrame.java: 
	gdb returns "??" as a function name if symbols are not available.
	Set the function name in this case to "";

2003-04-24 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIInfoProgram):
	New method.
	* src/org/eclipse/cdt/debug/mi/core/command/MIInfoProgram.java:
	New file, "info program".
	* src/org/eclipse/cdt/debug/mi/core/output/MIInfoProgramInfo.java:
	New file, parsing of "info Program".
	* src/org/eclipse/cdt/debug/mi/core/output/EventManager.java (processSuspend):
	Call MIInferio.update();
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (update):
	New method to retrieve the pid.
	(interrupt): Try doing Spawner.raise(pid, INT) as a fallback.
	* src/org/eclipse/cdt/debug/mi/core/cdi/Configuration.java (supportSuspend):
	Bug fix.	

2003-04-23 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java (update):
	Move the creation of the list after the call to "info signals".
	The call may fail.

2003-04-21 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/Target.java (suspend):
	Remove the delay of 10 secs.
	* src/org/eclipse/cdt/debug/mi/core/MIInferior.java (interrupt):
	Do a delay of 10 secs to allow time for the inferior to stop.
	* src/org/eclipse/cdt/debug/mi/core/MISession.java (terminate) :
	Clear the EventQueue, if we restart.
	* src/org/eclipse/cdt/debug/mi/core/Queue (isEmpty):
	New method.

2003-04-21 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/GDBDebugger.java:
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java:
	Ignore exception when doing "set auto-solib-path on".

2003-04-17 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
	setCurrentThread(), calls VariableManager.update();
	* src/org/eclipse/cdt/debug/micore/cdt/model/Thread.java:
	setCurrentStackFrame() calls VariableManager.update();

2003-04-07 Mikhail Khodjaiants
	Changed the messages of CDI exceptions.
	* MISession.java
	* Target.java

2003-04-04 Alain Magloire

	Code from Monta Vista to add a Session via GDBServer.
	
	* src/org/eclipse/cdt/debug/mi/core/MIPlugin.java:
	* src/org/eclipse/cdt/debug/mi/core/GDBServerDebugger.java:
	* src/org/eclipse/cdt/debug/mi/core/IGDBServerMILaunchConfigurationConstants.java:
	* plugin.xml

2003-04-04 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdt/VariableManager.java:
	Check for null in update().

2003-04-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdt/VariableManager.java:
	update(), put a limit on the number of stack we check for variables.

2003-04-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdt/model/Target.java:
	* src/org/eclipse/cdt/debug/mi/core/cdt/model/Thread.java:
	Before updating the register check if the manager is on autoupdate.

2003-04-02 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdt/model/Target.java:
	suspend() sync for at least < 10 seconds to allow the gdb to
	suspend via SIGINT the program.

2003-03-28 Mikhail Khodjaiants
	Added time stamp to the trace messages.
	* MIPlugin.java

2003-03-28 Mikhail Khodjaiants
	Correction of the previous patch.
	* MIAsm.java

2003-03-27 Mikhail Khodjaiants
	Applied patch from Chris Songer: Assembly View Fixups
	* Instruction.java
	* MIAsm.java

2003-03-19 Alain Magloire

	Some applications, like recursive code, have a very deep stackframes
	bigger > 50.  This can turn out to be a problem, as the VariableManager
	will try to update all the variables and there can be a lot of local
	variable in all those stackframes.  We can not use:
	"-var-update *"
	either since on gdb-5.2.1, for reasons unknown to me this will make
	gdb unstable/crash.  So the approach is to only update variables
	in the current stackframe.
	The advantage we only update a small set of variables.
	The downside if we have side effects i.e. pointers pass to
	argument and modifying the pointer affect the callees memory.
	But this is a small price to pay and usually C/C++ programmer
	are interrested to see changes of variables in the current stack
	not changes 20 stack before.
	
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Method update() only check the variable in the scope of the
	current stackframe(the highest stack).  This will include
	any globals.

2003-03-19 Alain Magloire

	Base on PR/patch from Chris Songer.
	Assigning a value to a register may have side-effects
	on other registers.  When assigning, the action is now
	to upate again the values.  The same for the variables.
	
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
	Method setValue() calls manager.update() after the assignment.

2003-03-17 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java:
	getArguments() and getLocalVariable() are caching the results.

2003-03-16 Alain Magloire

	GDB/MI does not keep the stack level, from what we expect.  In gdb, the
	highest stack is level 0 and lower stack as the highest level:
	-stack-list-frames
	^done,stack=[frame={level="0 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
	             frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]

	-stack-list-frames
	^done,stack=[frame={level="0 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
	             frame={level="1 ",addr="0x08048501",func="main",file="hello.c",line="41"},
	             frame={level="2 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]

	This is of no use to us since the level is always "0".  The level is necessary for example when
	doing recursive calls to make a distinction between frames.
	So in CDT this reverse the hidghest frame will have the highest number. In CDT:
	stack=[frame={level="2 ",addr="0x0804845b",func="main",file="hello.c",line="24"},
	       frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]

	stack=[frame={level="3 ",addr="0x08048556",func="main2",file="hello.c",line="58"},
	       frame={level="2 ",addr="0x08048501",func="main",file="hello.c",line="41"},
	       frame={level="1 ",addr="0x42017499",func="__libc_start_main",from="/lib/i686/libc.so.6"}]


	* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java:
	Takes a new Argument in the constructor, the level.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Threawd.java:
	Create the StackFrame with the constructor.
	* src/org/eclipse/cdt/debug/mi/core/cdi/Location.java:
	Fix equals().
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Use the right level when setting the frame.

2003-03-14 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Argument.java:
	New method getArgumentObject().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
	New method getRegisterObject().
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	Checks for ICDIVariable and ICDIArgument since they are now ICDIVariableObject too.
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java:
	Checks for ICDIRegister when creating since they are now ICDIRegisterObject too.

2003-03-13 Alain Magloire

	Small bug fix
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java

2003-03-13 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	New method getLocalVariableObjects() implemented returns all the local.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/StackFrame.java
	getLocalVariables() use getLocalVariableObjects().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java:
	getName() does not longer throw an Exception.

2003-03-11 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	New methods getVariableObjectAsArray() getVariableObjectAsType().

2003-03-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/CommandQueue.java (print): Comment out.
	* src/org/eclipse/cdt/debug/mi/core/Queue.java (print): Comment out.

2003-02-12 Mikhail Khodjaiants
	The 'setAutoSolib' method is no longer in ICDISharedLibraryManager.
	* GDBDebugger.java

2003-02-12 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
	Removed getRegisterObjects(), getRegisters(), getSharedLibraries().
	Those actions are done via the managers.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java (getChild):
	Check the grand children also.

2003-02-12 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (isAutoLoadSymbols):
	New method.
	* src/org/eclipse/cdt/deb/mi/core/command/MIGDBShow.java (getMIGDBShowInfo):
	New method.

2003-02-12 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java (ChangedEvent):
	Returns a Variable.
	* src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java (DestroyedEvent):
	Check if it was an expression also.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java (getVariables):
	Calls the parent's implementation.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java (getVariables):
	New implementation.
	* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java (update):
	Deal with new MIVarDeleteEvent.
	* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java (addExpression):
	Removed.
	(removeExpression): New method.
	* src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java (getScope):
	removed.
	* src/org/eclipse/cdt/debug/mi/core/event/MIVarDeletedEvent.java:
	New file.

2003-02-09 Alain Magloire

	in GDB/MI 5.3 and below, the -data-list-register-xxx can bring gdb down with
	an assert().  The problem is that code like this
	ui_out_list_begin();
	for () {
		if(error)
			return ERROR;
	}
	ui_out_list_end();
	The ui_out_list_end() is never call.
	However gdb offers the varobj to deal cleanly with register but calling
	"-var-update *" seems to make gdb misbehave and hang after a while.
	So we use a mixed of -data-list-register-xxx calls and var-object to deal
	with registers and do not call "-var-update *" but rather call it for
	each time for individual objects to see the updates.

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java:
	Reimplemented to use the var obj.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterValue.java:
	New file implement ICDIValue.
	* src/org/eclipse/cdt/debug/mi/core/cdi/EventManagero.java (processSuspendedEvent):
	Call each manager.update().
	* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java (update):
	Reimplemented.
	* src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java (update):
	Reimplemented
	* src/org/eclipse/cdt/debug/mi/core/cdi/UpdateManager.java:
	Removed.
	* src/org/eclipse/cdt/debug/mi/core/cdi/IUpdateListener.java:
	Removed.
	* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java:
	Catch the cli "run" command.

2003-02-06 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java (getVariableArrayObject):
	New Method to type cast in an array.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java (VariableObject):
	New constructor.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManger.java(getSignal):
	Return an signal object even when the session is terminated.

2003-02-05 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/command/MISignal.java:
	* src/org/eclipse/cdt/debug/mi/core/command/MIJump.java:
	Return a fake ^running, since the MI semantic is not respected.

2003-02-04 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/CLICommand.java:
	Catch cli command "jump"

2003-02-04 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java:
	New implementation for signal(), jump, and stepReturn(boolean).
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java:
	(signal): Calls Target.signal().
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/SignalManager.java:
	(signal): Method removed.
	* src/org/eclipse/cdt/debug/mi/core/command/MIJump.java:
	New file.
	* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java:
	New method creteMIJump().

2003-02-04 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManger.java:
	Implement signal() method.
	* src/org/eclipse/cdt/debug/mi/core/command/MISignal.java:
	New file.
	* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java:
	(createMISignal): new method.

2003-02-04 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java:
	Catch MIInferiorSignalExitEvent.
	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ExitedEvent.java:
	Catch MIInferiorSignalExitEvent.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalExitInfo.java:
	New File.
	* src/org/eclipse/cdt/debug/mi/core/event/MIInferiorSignalExitEvent.java:
	New File
	* src/org/eclipse/cdt/debug/mi/core/event/CLIProcessir.java:
	"signal" command is like continue.
	* src/org/eclipse/cdt/debug/mi/core/event/RxThread.java:
	Catch MIInferiorSignalExitEvent.

2003-02-04 Alain Magloire

	Refactor MISignal in MISigHandle to not confus with 
	CLI command "signal SIGNAL".

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java:
	* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSignalsInfo.java:
	* src/org/eclipse/cdt/debug/mi/core/output/MISigHandle.java:

2003-02-03 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java:
	(loadSymbols): set the read flag to true.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/SharedLibrary.java:
	(getMIShared): New method.
	* src/org/eclipse/cdt/debug/mi/core/output/MIShared.java:
	(setSymbolsRead): New method.

2003-02-01 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java:
	Support for ICDISignal event.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Signal.java (handle):
	Implemented.
	* src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java (update):
	Support for ICDISignal event.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java (handle):
	New method.
	* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIHandle):
	New method
	* src/org/eclipse/cdt/debug/mi/core/command/MIHandle.java:
	New File.
	* src/org/eclipse/cdt/debug/mi/core/CLICommand.java:
	Check for "handle" and "signal" cli command.

2003-01-31 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/event/DestroyedEvent.java:
	Use deleteSharedLibrary from the manager.
	* src/org/eclipse/cdt/debug/mi/core/cdi/signal/Signal.java:
	Construct a signal base on the MISignal response.
	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
	(suspendedInferior): Take ICDITarget as argument.
	(resumeInferior): Take ICDITarget as argument.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java
	(containsSharedLibrary): removed.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalManager.java
	(update): implemented.
	(getSignals): implemented.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SignalReceived.java:
	Ask the manager for the signal.
	* src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java:
	New file.

2003-01-29 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (getSharedLibraryPaths):
	New method.
	(setSharedLibraryPaths): New method.
	(setAutoLoadSymbols): New methos set autosolib.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SourceManager.java (setAutoSolib):
	Move to SharedLibraryManager.java
	
2003-01-28 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/command/MIInfoSignals.java:
	* src/org/eclipse/cdt/debug/mi/core/output/MIInfoSignalsInfo.java:
	* src/org/eclipse/cdt/debug/mi/core/output/MISignal.java:
	New files.

2003-01-28 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/ArgumentObject.java:
	Use ICDIStackFrame in the constructor.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterObject.java:
	Use ICDIStackFrame in the constructor.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	Use ICDIStackFrame in the constructor.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java (getVariables):
	No need to cast to StackFrame.
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java (setCurrentFrame):
	Implement new method, takes a boolean as the second method.
	* src/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java:
	No need to cast to StackFrame.
	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java:
	No need to cast to StackFrame.

2003-01-28 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java (getCondition):
	Condition was initialize with the wrong parameter.
	(setMIBreakpoint): reset location and condition.

2003-01-28 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Breakpoint.java (setMIBreakpoint):
	New method.
	* src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java (update):
	Reset the new MIBreakpoint on the Breakpoint object.
	(containsBreakpoint): Removed.
	(hasBreakpointChanged): Change arguments.
	* src/org/eclipse/cdt/debug/mi/core/output/MIBreakpoint.java (parser):
	Better check for watchpoints.
	* src/org/eclipse/cdt/debug/mi/core/CLIProcessor.java (isChangeBreakpoint):
	Check for "ignore" and "condition" cli commands.

2003-01-27 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java (getTypeName):
	Use MIWhatis to get the type of the register.
	(getVariables): Cache the answer.
	* src/org/eclipse/cdt/debug/mi/core/cdi/SharedLibraryManager.java (loadSymbols):
	Use MISharedLibrary.
	* src/org/eclipse/cdt/debug/mi/core/command/CommandFactory.java (createMIWhatis):
	New method.
	(MIPType): New method.
	* src/org/eclipse/cdt/debug/mi/core/command/MISharedLibrary.java:
	New file.


2003-01-27 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java (getCThreads):
	When attaching gdb(at least on some platform) does not show
	the selected thread(info threads).  Fallback on the first one.

2003-01-27 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java (findVariable):
	Bug fix, did not compare the stacks correctly.

2003-01-27 Alain Magloire

	* src/org/eclipse/cdt/debug/mi/core/cdi/model/VariableObject.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/ArgumentObject.java:
	* src/org/eclipse/cdt/debug/mi/core/cdi/model/RegisterObject.java:
    Move to model package.

2003-01-26 Alain Magloire

	Major refactor of the code.  Rewrote/Added Managers:
	VariableManager
	ExpressionManager
	RegisterManager
	UpdateManager.

	Refactor of CSession to Session, CTarget to Target
	and CThread to Thread.
	* src/.../mi/core/cdi/event/ChangedEvent.java:
	* src/.../mi/core/cdi/event/CreatedEvent.java:
	* src/.../mi/core/cdi/event/DestroyedEvent.java:
	* src/.../mi/core/cdi/event/DisconnectedEvent.java:
	* src/.../mi/core/cdi/event/ExitedEvent.java:
	* src/.../mi/core/cdi/event/MemoryChangedEvent.java:
	* src/.../mi/core/cdi/event/ResumedEvent.java:
	* src/.../mi/core/cdi/event/SuspendedEvent.java:


	* src/.../mi/core/cdi/model/Argument.java:
	* src/.../mi/core/cdi/model/Breakpoint.java:
	* src/.../mi/core/cdi/model/Thread.java:
	* src/.../mi/core/cdi/model/Target.java:
	* src/.../mi/core/cdi/model/MemoryBlock.java:
	* src/.../mi/core/cdi/model/MixedInstruction.java:
	* src/.../mi/core/cdi/model/Instruction.java:
	* src/.../mi/core/cdi/model/Signal.java:
	* src/.../mi/core/cdi/model/SharedLibrary.java:
	* src/.../mi/core/cdi/model/CObject.java:
	* src/.../mi/core/cdi/model/Expression.java:
	* src/.../mi/core/cdi/model/Variable.java:
	* src/.../mi/core/cdi/model/Value.java:
	* src/.../mi/core/cdi/model/Register.java:
	* src/.../mi/core/cdi/model/StackFrame.java:

	* src/.../mi/core/cdi/ArgumentObject.java:
	* src/.../mi/core/cdi/VariableObject.java:
	* src/.../mi/core/cdi/RegisterObject.java:
	* src/.../mi/core/cdi/BreakpointHit.java:
	* src/.../mi/core/cdi/BreakpointManager.java:
	* src/.../mi/core/cdi/VariableManager.java:
	* src/.../mi/core/cdi/ExpressionManager.java:
	* src/.../mi/core/cdi/RegisterManaget.java:
	* src/.../mi/core/cdi/SignalManager.java:
	* src/.../mi/core/cdi/SharedLibraryManager.java:
	* src/.../mi/core/cdi/EventManager.java:
	* src/.../mi/core/cdi/MemoryManager.java:
	* src/.../mi/core/cdi/ErrorInfo.java:
	* src/.../mi/core/cdi/Session.java:
	* src/.../mi/core/cdi/ExitInfo.java:
	* src/.../mi/core/cdi/UpdateManager.java:
	* src/.../mi/core/cdi/IUpdateListener.java:
	* src/.../mi/core/cdi/SessionObject.java:
	* src/.../mi/core/cdi/SignalReceived.java:
	* src/.../mi/core/cdi/SourceManager.java:
	* src/.../mi/core/cdi/RuntimeOptions.java:
	* src/.../mi/core/cdi/WatchpointScope.java:
	* src/.../mi/core/cdi/WatchpointTrigger.java:
	* src/.../mi/core/cdi/EndSteppingRange.java:

	* src/.../mi/core/MIPlugin.java:
	* src/.../mi/core/CygwinGDBDebugger.java:
	* src/.../mi/core/GDBDebugger.java:



2003-01-24 Alain Magloire

	* src/.../mi/core/CLIProcessor.java (isEnableBreakpoint):
	Check for "enable", "disable"  cli commands.

2003-01-23 Alain Magloire

	* src/.../mi/core/CLIProcessor.java (isDeletingBreakpoint):
	Check for "d" it means delete breakpoints.

2003-01-20 Alain Magloire

	* src/.../mi/core/cdi/Configuration.java (supporstSharedLibrary):
	New method.
	* src/.../mi/core/cdi/CoreFileConfiguration.java (supporstSharedLibrary):
	New method.
	* src/.../mi/core/cdi/SharedLibraryManager.java (update):
	Checks if support for shared Libary before doin an update.

2003-01-20 Alain Magloire

	* src/.../mi/core/cdi/SuspendedEvent.java: Use SignalReceived.
	* src/.../mi/core/cdi/model/Signal.java: New file.
	* src/.../mi/core/cdi/model/SignalManager.java: Use model/Signal.
	* src/.../mi/core/cdi/SignalReceived.java: New file.

2003-01-20 Alain Magloire

	The problem was that no check was done for the existence of
	the program/executable nor the working directory etc ...
	By asking the arguements to be File, the check is done by
	the caller.

	* src/.../mi/core/MIPlugin.java (createCSession): Change the
	the arguments.
	* src/.../mi/core/GDBDebugger.java (createCSession): Change the

2003-01-20 Alain Magloire

	* src/.../mi/core/command/MIWhatis.java: New file.
	* src/.../mi/core/command/MIPType.java: New file.
	* src/.../mi/core/command/MISharedLibary.java: New file.
	* src/.../mi/core/output/MIWhatisInfo.java: New file.
	* src/.../mi/core/output/MIPTypeInfo.java: New file.

2003-01-18 Alain Magloire

	* src/.../mi/core/cdi/event/DestroyedEvent.java (DestroyedEvent):
	Remove the deleted shared library from the list.
	* src/.../mi/core/cdi/SharedLibraryManager.java (getUnloadedLibrary):
	Get a shared library slated for unload.
	(removeFromUnloadedList): Remove the library form the list.

2003-01-17 Alain Magloire

	* src/.../mi/core/output/MIInfoSharedLibraryInfo.java (parseWinShared):
	Break the methods in parserUnixShared() and parseWinShared() to cope
	with the different formats.

2003-01-17 Alain Magloire

	* src/.../mi/core/cdi/SharedLibraryManager.java (loadSymbols):
	New method takes and array of ICDISharedLibrary.
	* src/.../mi/core/cdi/SharedLibrary.java (loadSymbols):
	Call the share manager to load.

2003-01-17 Alain Magloire

	* src/.../mi/core/cdi/SharedLibraryManager.java (loadSymbols):
	Call "shared libraryname".

2003-01-17 Alain Magloire

	The problem here is that we do not knw the state of
	the session, for example "target remote server:port"
	was issue, in this case the state is suspended.
	We try to guess by posting a "info remote-process"
	and set suspended when no error.

	* src/.../mi/core/MIPlugin.java (createCSession):
	Try "info remote-process" to guess the state.
	Remove the "new-console" call to windows specific files.
	* src/.../mi/core/CygwinGDBDebugger.java(createLaunchSession):
	call "set new-console" for windows plaforms.

2003-01-16 Alain Magloire

	* src/.../mi/core/cdi/SharedLibary.java (setMIShared):
	New method.
	* src/.../mi/core/cdi/SharedLibraryManager.java (update):
	When changed reset the MIShared of the SharedLibrary.

2003-01-16 Alain Magloire

	Process gdbinit configuration file.

	* src/.../mi/core/MIPlugin.java (createCSession): Takes now two new
	arguments for working directory and configuration file gdbinit.
	* src/.../mi/core/GDBDebugger.java (createAttachSession):
	(createCoreSession): pass the working directory and gdbinit file
	(createLaunchSession): pass the working directory and gdbinit file
	* src/.../mi/core/IMILaunchConfigurationConstants.java:
	New constant ATTR_GDB_INIT.

2003-01-16 Alain Magloire

	* src/.../mi/core/cdi/EventManager.java (processSuspended):
	Also process the Shared lib by calling update on the manager.

	* src/.../mi/core/cdi/CSession.java: Create a shared
	library manager.

2003-01-16 Alain Magloire

	* src/.../mi/core/event/MISharedLibCreatedEvent.java: New file.
	* src/.../mi/core/event/MISharedLibChangedEvent.java: New file.
	* src/.../mi/core/event/MISharedLibUndloadedEvent.java: New file.

	* src/.../mi/core/cdi/event/CreatedEvent.java:
	new constructors to deal with MISharedLibCreatedEvent.
	* src/.../mi/core/cdi/event/ChangedEvent.java:
	new constructors to deal with MISharedLibChangedEvent.
	* src/.../mi/core/cdi/event/DestroyedEvent.java:
	new constructors to deal with MISharedLibUnloadedEvent.

	* src/.../mi/core/cdi/model/SharedLibrary.java: New file.

	* src/.../mi/core/cdi/SharedLibraryManager.java: New file.
	* src/.../mi/core/cdi/CSession.java (getSharedLibraryManager):
	New method.
	* src/.../mi/core/cdi/EventManager.java (update):
	Deal with the new MISharedLibXXXEvents.

2003-01-15 Alain Magloire

	* src/.../mi/core/command/CommandFactory.java (createMIInfoSharedLibrary):
	New method.
	* src/../mi/core/command/MIInfoSharedLibrary.java: New file.
	* src/../mi/core/output/MIInfoSharedLibraryInfo.java: New File.
	* src/../mi/core/output/MIShared.java: new File.

2003-01-13 Mikhail Khodjaiants
	* CTarget.java: in the 'runUntil' method check if file name or function name length > 0, otherwise use address.

2003-01-10 Alain Magloire

	* src/.../mi/core/cdi/BreakpointManager.java (update): fix subscript
	(setCondition): Fire a ChangedEvent.
	(enableBreakpoint): Fire a ChangedEvent.
	(disableBreakpoint): Fire a ChangedEvent.

2003-01-10 Alain Magloire

	* src/.../mi/core/cdi/model/CTarget.java (runUntil): Address breakpoint
	needs a "*" prefix.

2003-01-09 Alain Magloire

	* src/.../mi/core/cdi/BreakpointManager.java (hasBreakpointChanged):
	Implemented.

2003-01-09 Alain Magloire

	* src/.../mi/core/cdi/model/CTarget.java (setCurrentThread): takes
	a new argument to decide if the events should be fired.
	* src/.../mi/core/cdi/model/CThread.java (getStackFrameCount): use
	the setCurrentThread() with events updates disable
	(getStackFrames): Ditto.
	(updateState): Wrong subscript in the loop.

2003-01-09 Alain Magloire

	Generate CreatedEvent's for Variable, Argument, Expression, Memory, Thread
	objects when they are created.  This makes it consistent with the generated
	DestroyedEvent's.

	* src/.../mi/core/cdi/EventManager.java (update): Deal with
	MI{Register,Memory,Thread,Var}CreatedEvent events.
	* src/.../mi/core/cdi/model/Ctarget.java (updateState): Fire events
	when threads are created or destroyed.
	* src/.../mi/core/cdi/model/MemoryBlock.java: Move here.
	* src/.../mi/core/cdi/model/Register.java (getID): rename getId() to getID().
	* src/.../mi/core/cdi/event/CreatedEvent.java: New constructors
	to deal with MI{Register,Memory,Thread,Var}CreatedEvent.

	* src/.../mi/core/event/MIMemoryCreatedEvent.java: New file.
	* src/.../mi/core/event/MIRegisterCreatedEvent.java: New file.
	* src/.../mi/core/event/MIThreadCreatedEvent.java: New file.
	* src/.../mi/core/event/MIVarCreatedEvent.java: New file.
	* src/.../mi/core/event/MIBreakpointChangedEvent.java (MIBreakpointChangedEvent):
	Reuse the constructor.
	* src/.../mi/core/event/MIBreakpointCreatedEvent.java (MIBreakpointCreatedEvent):
	Reuse the constructor.
	* src/.../mi/core/event/MIBreakpointDeletedEvent.java (MIBreakpointDeletedEvent):
	Reuse the constructor.

2003-01-08 Alain Magloire

	Refactoring, split the org.eclipse.cdt.debug.mi.core.cdi in pacackages
	org.eclipse.cdt.debug.mi.core.cdi
	org.eclipse.cdt.debug.mi.core.cdi.event
	org.eclipse.cdt.debug.mi.core.cdi.model
	This help structure things up.
	* src/.../mi/core/cdi/event: New files.
	* src/.../mi/core/cdi/model: New files.

2003-01-08 Alain Magloire

	* src/.../mi/core/cdi/EventManager.java (update): bug fix
	was calling DestroyedEvent() incorrectly.

2003-01-08 Alain Magloire

	CLIProcessor a new class to recognise the CLI(Command Line Interface)
	of gdb example:
	 (gdb) next
	 (gdb) n
	 (gdb) b
	 (gdb) break
           etc ..:
	When the patterns are discover, the class will generate some events
	to warn te UI that something change.

	* src/.../mi/core/cdi/BreakpointManager.java (update):
	Send a -break-list and generate events for any difference, in
	the breakpoints that we know about.
	(deleteBreakpoint): Take as argument the breakpoint number.
	(getBreakpoints): Call update() to generate events if new breakpoints.
	(getMIBreakpoints): return the MIBreakpoints.
	* src/.../mi/core/cdi/ChangedEvent.java (ChangedEvent):
	New constructor with MIBreakPointChangedEvent.
	* src/.../mi/core/cdi/DestroyedEvent.java (DestroyedEvent):
	New constructor with MIBreakPointDeletedEvent.
	* src/.../mi/core/cdi/Created.java: New file.
	* src/.../mi/core/cdi/EventManager.java (update):
	Watch for the new MIBreakPoint*Events.
	* src/.../mi/core/event/MIBreakPointCreatedEvent.java: New file.
	* src/.../mi/core/event/MIBreakPointChangedEvent.java: New file.
	* src/.../mi/core/event/MIBreakPointDeletedEvent.java: New file.
	* src/.../mi/core/event/MICreatedEvent.java: New file.
	* src/.../mi/core/event/MIDestroyedEvent.java: New file.
	* src/.../mi/core/event/MIInferiorExitEvent.java: Extends MIDestroyedEvent
	* src/.../mi/core/event/MIThreadExitEvent.java: Extends MIDestroyedEvent
	* src/.../mi/core/event/MIGDBExitEvent.java: Extends MIDestroyedEvent
	* src/.../mi/core/event/MIDetachedEvent.java: Extends MIDestroyedEvent
	* src/.../mi/core/CLIProcessor.java: New file.
	* src/.../mi/core/TxThread.java: New file.

2003-01-07 Alain Magloire

	* src/.../mi/core/MIInferior.java (getOutputStream): Remove useless assignement.
	* src/.../mi/core/MIPluging.java (debugLog): Not need to be static.
	* src/.../mi/core/cdi/EventManager.java (update): Remove useless assignement.

2003-01-06 Alain Magloire

	* build.properties: Patch from Judy Green.

2003-01-06 Alain Magloire

	* src/.../mi/core/cdi/BreapoinManager.java (createLocation): new method
	to create a breakoint with an address.
	* src/.../mi/core/cdi/Location.java (Location): New constructor takes
	an address as argument.

2003-01-03 Alain Magloire

	The Class creating the CDISession part of the initialization would call
		(gdb) set autosolib on
	this works fine for Unix system, but on Windows it throws an error
	failing the debugger.  Windows(Cygwin, MingWin) does not need any
	special initialization like solib-search-paths etc ..

	* src/.../mi/core/cdi/SourceManager.java (setAutoSolib): Takes a boolean argument
	to set the autosolib on or off.
	* src/.../mi/core/CygwinGDBDebugger.java(initializeLibraries):
	Empty method, cygwin does not need any special handling.
	* src/.../mi/core/GDBDebugger.java (initializeLibraries):
	Always call autosolib.


2003-01-02 Alain Magloire

	Bug when using recursive:
	int recursive(int x) {
		if (x > 10)
			recursive(++x);
		return 0;
	}
	
	The Variable Manager is caching the MI/GDB var-obj for speed.
	It is finding the object by looking at the name and the stack/thread,
	for recursive calls, this is wrong and the code would be full in
	thinking the variable "x"(see above) is the same object.  To make the distinction
	we use the depth "-stack-info-depth" that will be use also in the equality
	to make sure we identify an object uniquely.  In the recursive() case above
	because the depth is different, a new "x" object will be created.  The downside
	is that on certain platform doing deep recursive/stackframe, we have noticed
	that "-stack-info-depth" can be very long, test done for gdb/QNX with
	a stack depth of 1000.

	* src/.../mi/core/cdi/VariableManager.java (getElement):
	Use the depth when doing equal().
	(createElement): Save the depth of the stack part of the Element.

2003-01-02 Alain Magloire

	GDB/MI uses some oob reasons that was not documented for the watchpoints
		*stopped,reason="access-watchpoint-trigger"...
		*stopped,reason="read-watchpoint-trigger",...
	* src/.../mi/core/event/MIWatchpointTrigger.java (parse):
	check for "hw-awpt" and "hw-rwpt".
	* src/.../mi/core/RxThread.java (createEvents):
	Check for "access-watchpoint-trigger", "read-watchpoint-trigger.

2002-12-17 Alain Magloire

	* src/.../mi/core/cdi/Register.java (setFormat): bug fix
	The format variable was not set.

2002-12-05 Alain Magloire

	GDB/MI provides error messages in its log stream, one problem
	is that it is not consistent, for example doing:
	 (gdb) info threads
         & "info threads\n"
	which is obviously not an error.
	So we put the error stream output par of the exception so when
	it is relevant it shows in the Exception.
	MI2CDIException is the bridge class.

	* src/.../mi/core/cdi/BreakpoinManager.java:
	* src/.../mi/core/cdi/CSession.java:
	* src/.../mi/core/cdi/CTarget.java:
	* src/.../mi/core/cdi/CThread.java:
	* src/.../mi/core/cdi/MemoryBlock.java:
	* src/.../mi/core/cdi/MemoryManager.java:
	* src/.../mi/core/cdi/Register.java:
	* src/.../mi/core/cdi/RegisterManager.java:
	* src/.../mi/core/cdi/SourceManager.java:
	* src/.../mi/core/cdi/Value.java:
	* src/.../mi/core/cdi/Variable.java:
	* src/.../mi/core/cdi/VariableManager.java:

	* src/.../mi/core/command/Command.java (getMIInfo):
	When error get the log stream and put it in the MIException.
	* src/.../mi/core/event/MIErrorEvent.java:
	Get the log stream error also.
	* src/.../mi/core/MIException.java (getLogMessage): New method
	contains buffer output.
	* src/.../mi/core/RxThread.java (processMIOutput): get the
	oob arrays up so it can be use in MIErrorEvent.

2002-12-02 Alain Magloire

	* src/.../mi/core/cdi/CTarget.java (updateState): If we
	have the current thread id set it before, getCThread() if
	it is implemented with "info threads" can override it but
	"-stack-list-thread" does not give this information.
	* src/.../mi/core/cdi/ErrorInfo.java: New file
	* src/.../mi/core/cdi/EventManager.java (getReason): Return
	an ErrorInfo also.
	* src/.../mi/core/event/MIErroEvent.java: New file
	* src/.../mi/core/RxThread.java (processMIOutput):
	Generated MIErrorEvent for "^error".

2002-11-29 Alain Magloire

	* src/.../mi/core/cdi/EventManager.java (processSuspended):
	get the threadId.

2002-11-29 Alain Magloire

	* src/.../mi/core/cdi/MemoryBlock.java (setValue):
	Check if the change affects other block and fire MemoryChangedEvent
	when necessary.

2002-11-29 Alain Magloire

	* src/.../mi/core/event/MIBreakpointEvent.java:
	* src/.../mi/core/event/MIFunctionFinishedEvent.java:
	* src/.../mi/core/event/MILocationReachedEvent.java:
	* src/.../mi/core/event/MISignalEvent.java:
	* src/.../mi/core/event/MISteppingRangeEvent.java:
	* src/.../mi/core/event/MIStoppedEvent.java:
	* src/.../mi/core/event/MIWatchpointEvent.java:
	* src/.../mi/core/event/MIWatchpointTriggerEvent.java:
	* src/.../mi/core/RxThread.java:
	Some events like the temporary events, do not have
	any specific format but do provide a frame and a thread-id
	move the code in MIStoppedEvent.

2002-11-28 Alain Magloire

	* src/.../mi/core/cdi/MemoryBlock.java (setValue):  Only get a byte.

2002-11-28 Alain Magloire

	* src/.../mi/core/cdi/CTarget.java (runUntil): new method implemented.
	* src/.../mi/core/cdi/CThread.java (runUntil): new method implemented.

2002-11-26 Doug Schaefer

	* src/.../mi/core/CygwinGDBDebugger.java:
	New Debugger that provides the Cygwin Command Factory to the MISession
	* src/.../mi/core/command/CygwinCommandFactory.java:
	New Command Factory for Cygwin specific implementations of the commands
	* src/.../mi/core/command/CygwinMIEnvironmentDirectory.java:
	New.  Subclasses the MIEnvironmentDirectory command to convert the
	paths using cygpath.
	* plugin.xml:
	Defines the new debugger extension.

2002-11-25 Alain Magloire

	* src/.../mi/core/cdi/Watchpoint.java:
	Check if it was access point also.
	* src/.../mi/core/output/MIBreakInsertInfo.java (parse):
	Check for "wpt" variable.
	* src/.../mi/core/output/MIBreakpoint.java (IsWriteWatchpoint):
	implemented.

2002-11-20 Mikhail Khodjaiants
	Fix for bug 26595.
	* src/.../mi/core/cdi/MemoryManager.java (compareBlocks):
	If the start address of a memory block has changed fir 'changed' event 
	only for the corresponding bytes of the overlapping area of new and old blocks.
	
2002-11-19 Alain Magloire

	* src/.../mi/core/cdi/MemoryManager.java (compareBlocks):
	The startAddress() may have change for example if we were
	watching "char *p;" and the address move "p++".  Take this
	into account now.

2002-11-18 Alain Magloire

	* src/.../mi/core/cdi/StackFrame.java (getCurrentStackFrame):
	if the currentFrame was not set only get the top level
	frame for the current.
	* src/.../mi/core/cdi/CTarget.java (updateStateId):
	Set the currentThreads && currentThreadId.
	
2002-11-18 Alain Magloire

	* src/.../mi/core/cdi/CThread.java (getStackFrameCount):
	Set the new thread before getting the value and restore
	after.

2002-11-14 Alain Magloire

	This is needed in post-mortem, application doing a 
	very deep recursion and crashing the stack size, for example
	on GNU/Linux it may reach 200000 levels deep.  Trying to
	bring in the UI a bactrace tree of 200000 nodes is useless.
	The UI could check the count and do the appropriate action
	by showing ranges etc ..

	* src/.../mi/core/cdi/CThread.java (getStackFrame):
	new method with a hi and low.
	(getStackFrameCount): new method.
	* src/.../mi/core/command/CommandFactory.java (createMIStackInfoDepth):
	new method.
	* src/.../mi/core/command/MIStackInfoDepth.java (getMIStackInfoDepthInfo):
	new method.

2002-11-13 Dave Inglis
	* plugin.xml
	Added "native" cpu support.
	
2002-11-06 Alain Magloire

	* src/.../mi/core/cdi/StackFrame.java (getLocals):
	If an exception was thrown, the array may contain null
	entries.  Use a list and catch the exception.

2002-11-06 Alain Magloire

	* src/.../mi/core/cdi/StackFrame.java (getArguments):
	If an exception was thrown, the array may contain null
	entries.  Use and a List and catch the exception.

2002-11-05 Alain Magloire

	* src/.../mi/core/cdi/Register.java (setValue): Fire a
	MIRegisterChangedEvent when changing value.
	Fix PR:25730

2002-11-01 Alain Magloire

	The change in MISession(), will catch things like starting gdb-5.0
	with argument "-i mi1", that level of mi is not supported.

	* src/.../mi/core/cdi/MemoryBlock.java (refresh):  When doing the refresh
	check if other blocks wehre affected and update them.
	* src/.../mi/core/cdi/MemoryManager.java (update): Return the array of
	affected addresses.
	* src/.../mi/core/MIPlugin.java (createCSession): Do not throw an
	error when trying "set new-console", it does not work on Linux.
	* src/.../mi/core/MISession.java (MISession):  Check if the process
	terminated early, maybe because of wron arguments etc .. and throw
	the exception.

2002-11-1 David Inglis
	* src/.../mi/core/MIPlugin.java
	throw MIExceptions in createSession (not rethorwn IOExceptions)

2002-10-30 Alain Magloire

	* src/.../core/cdi/MemoryBlock.java (setDirty): When need a
	refresh setDirty() to true.
	(isDirty): Return the flag value.

	* src/.../core/cdi/MemoryManager.java (update): Check if
	the MemoryBlock isDirty().

2002-10-30 Alain Magloire

	* src/.../core/cdi/MemoryBlock.java (setValue): reuse refresh()
	to update the memory and fire any MemoryChangedEvents.

2002-10-26 Alain Magloire

	* src/.../core/cdi/MemoryBlock.java (setValue): Generate
	a MemoryChangeEvent when the value is set, gdb/mi will not
	do it.

2002-10-25 Alain Magloire

	* src/.../core/cdi/CThread.java (getStackFrames): Save the
	current thread before changing and restore when operation finish.

	* src/.../core/cdi/MemoryBlock.java (refresh):  Flush the old
	data and get new memory.
	(update): New method to compare individual blocks.

2002-10-25 Alain Magloire

	Automatically suspend/resume gdb when setting a breakpoint.
	The workflow when debuggin which gdb command prompt is to
	hit CTRL-C set the breakpoint and continue.  The UI debugger
	should be smart enought to do this by itself.  So if the
	inferior is running, when setting a breakpoint the program
	is suspended(target.suspend()), the suspend event is ignore
	the breakpoint is set (--break-insert) and the target is resume.
	To ignore a specific event, we use a (mis)behaviour of gdb that
	associate the suspend(*stopped) with the last execution command.
	(gdb)
	111-exec-continue
	111^running
	(gdb)
	222-exec-interrupt
	222^done
	(gdb)
	111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
	frame={addr="0x00010140",func="foo",args=[],file="try.c",line="13"}
	(gdb)
	In the case above event 111 is ignore.

	* src/.../core/command/CLICommand.java (toString): Always put
	the identifying token.
	* src/.../core/command/Command.java (setToken): Removed.
	(getUniqToken): New method returns a global uniq token.
	(getToken): Returns a uniq token for the command.
	* src/.../core/MIInferior.java (setTerminated): New argument token,
	since now all MIEvent has the corresponding command token.
	* src/.../core/MISession.java (cmdCount): Removed.
	(postCommand): the command getToken() will return a uniq token.
	* src/.../core/RxThread.java (processMIOOBRecord): MIEvent take
	the corresponding command token as argument.
	* src/.../core/TxThrea.java (token): Field removed, token are no
	longer created in this tread.
	* src/.../core/event/MIBreakpointEvent.java:
	* src/.../core/event/MIBreakpointEvent.java:
	* src/.../core/event/MIChangedEvent.java:
	* src/.../core/event/MIDetachedEvent.java:
	* src/.../core/event/MIEvent.java:
	* src/.../core/event/MIFunctionFinishedEvent.java:
	* src/.../core/event/MIGDBExitEvent.java:
	* src/.../core/event/MIInferiorExitEvent.java:
	* src/.../core/event/MILocationReachedEvent.java:
	* src/.../core/event/MIMemoryChangedEvent.java:
	* src/.../core/event/MIRegisterChangedEvent.java:
	* src/.../core/event/MIRunningEvent.java:
	* src/.../core/event/MISignalEvent.java:
	* src/.../core/event/MISteppingRangeEvent.java:
	* src/.../core/event/MIStoppedEvent.java:
	* src/.../core/event/MIThreadExitEvent.java:
	* src/.../core/event/MIVarChangedEvent.java:
	* src/.../core/event/MIWatchpointScopeEvent.java:
	* src/.../core/event/MIWatchpointTriggerEvent.java:
	Calls super with getToken().
	* src/.../core/cdi/BreakpointManager.java (allowProgramInterruption):
	New method to allow suspending the program to set a breakpoint.
	(suspendInferior): get the last token execution an ignore the suspend
	event.
	* src/.../core/cdi/CTarget.java (getLastExecutionToken): New method
	returns the token of the last execution command.
	* src/.../core/cdi/EventManager.java (enableEventToken): New method.
	(enableEventTokens): New method.
	(disableEventToken): New method.
	(disableEventTokens): New method.
	(update): Ignore token in the disable list.
	* src/.../core/cdi/RegisterManager.java (update): MIEvent takes
	a token.
	* src/.../core/cdi/Variable.java (setValue): MIEvent takes a token.
	* src/.../core/cdi/VariableManager.java (update): MIEvent takes a token.

2002-10-24 Alain Magloire

	* src/.../core/RxThread.java (processMIOutput): Fire a
	suspended event when seeing an error.

2002-10-24 Alain Magloire

	* src/.../core/output/MIConst.java (isoC): Change to return
	a string instead '\n' is platform dependent and has to be
	translate to "\r\n" for SWT widgets to work correctly on windows.

2002-10-23 Alain Magloire

	gdb/mi for program control command will fire a change state event:
	-exec-run
	^running
	This allow the UI to change its state and wait for the suspended.
	Providing a gdb prompt adds some problems, since there is no state
	change, i.e.(^running) after command like, next/step/...:
	next
	&"next\n"
	...
	So to palliate, the txthread do some query when the commands are
	CLI commands trying to discover the type and fire any appropriate
	events on behalf on gdb.

	* src/.../core/RxThread.java (createEvent): Adjust the parser to
	not rely on the oob "*stopped", since for CLI command it is not
	in the result-class.  So the suspended state will be base of
	the "reason" only.
	* src/.../core/TxThread.java (processCLICommand): new method,
	get the command and try to recognize if it is a program control
	command like: next, step, etc ..
	* src/.../core/command/CLICommand.java (getOperation): New method,
	returns the command string.

2002-10-22 Alain Magloire

	Change the framework to support access to gdb prompt.
	Trying to reuse as much as possible Eclipse framework.
	The session/gdb process is available via CDI.

	* src/.../core/GDBStreamsProxy.java: Removed.
	* src/.../core/GDBProcess.java: Removed.
	* src/.../core/GDBStreamMonitor.java: Removed.
	* src/.../core/SessionProcess.java: New file.
	* src/.../core/MISession.java (getMISessionProcess):
	New method, returns a "fake" Process that wraps the input/outpu
	stream of gdb.
	(getGDBProcess): was getMIProcess(), renamed.
	* src/.../core/cdi/CSession.java (getSessionProcess): New method
	return gdb process.

2002-10-22 Alain Magloire

	* src/.../core/GDBStreamsProxy.java (write):
	Replace the OutputStream with a Write class.
	And clear the buffer on flush().

2002-10-21 Alain Magloire

	* src/.../core/GDBProcess.java (getExitValue): Catch
	IllegalThreadStateException.
	(getAttribute): Only create Properties, when call.
	(setAttribute): Only create Properties, when call.
	(getAdapter): Implemented.
	(canTerminate): true only of the process is alive.
	(GDBProcess): Takes one more argument the name.
	* src/.../core/GDBStreamMonitor.java (fireStreamAppend): New method.
	Use a synchronized LinkedList for the listeners.
	(read): new Method.
	(startMonitoring): New method, start a thread in the background
	to monitor the input.
	* src/.../core/GDBStreamsProxy.java (getErrorStream): Start the monitor thread.
	(getOutputStream): Start the monitor thread.

2002-10-21 Alain Magloire

	Framework for having a gdb console.  The idea is to reuse
	the eclipse console and save a lot of work.  We "adapt"
	the gdb Process to what eclipse debug LaunchView wants(IProcess).
	So when this fake "gdb process" is selected we can grab the
	input/output of the console and redirect everything to raw gdb.

	* src/.../core/GDBProcess.java: New file, it implements Eclipse
	debug class IProcess.
	* src/.../core/GDBStreamMonitor: New file, it implements Eclipse
	debug class IStreamMonitor.
	* src/.../core/GDBStreamsProxy: New file, it implements Eclipse
	debug class IStreamsProxy.
	* src/../core/MISession.java (getMIConsoleStream): New method
	to return the mi console stream output that we get from gdb/mi.
	(getMILogStream): New method, to return the mi log stream output
	that we get from gdb/mi.
	(terminate): close the fake MI Console and Log streams. 
	* src/../core/RxThread.java (processMIOOBRecord): Redirect the
	console and the log stream to a buffer pipe.

2002-10-21 Alain Magloire

	* src/.../core/cdi/EventManager.java (update): Only
	fire the event for MemoryChangedEvent if the block was
	not frozen.

2002-10-20 Alain Magloire

	Eclipse provides plugins a way to trace by having an .options file,
	this mechanism is use to print out the mi exchange between gdb
	and the plugin.  To enable this in the debug launch one must enable
	"tracing" and set for the "org.eclipse.debug.mi.core/debug" to true.
	But one problem, the console will simply blow taking down eclipse,
	for big MI line response, say 4k length, for example asking the children
	of "char buffer[4096]", -var-list-children varxx.
	This seem only to happen in Eclipse-gtk or Eclipse-motif
	on GNU/Linux, so it will be break in smaller chunks to give a chance to
	the console.

	* .options: Set debug to true.
	* src/.../core/MIPlugin.java (debugLog): Break the log line in small chuncks of 100.
	* src/.../core/MISession.java (postCommand): Print the gdb/mi command.
	* src/.../core/RxThread.java (run): Print gdb/mi responses.

2002-10-20 Alain Magloire

	-data-write-register-values is not in the texinfo manual but implemented in
	gdb-5.2.1/gdb/mi/mim-main.c:
	Write given values into registers. The registers and values are
	given as pairs. The corresponding MI command is 
	-data-write-register-values <format> [<regnum1> <value1>...<regnumN> <valueN>]

	* src/.../core/command/MIDataWriteRegisterValues.java: New file.
	* src/.../core/command/CommandFactory.java (createMIDataWriteMemory): New method.
	* src/.../core/cdi/Register.java (setValue): Implemented.
	
2002-10-20 Alain Magloire

	Althought -data-write-memory is not documented in the texinfo manual
	it is implemented and well documented in the code(gdb-5.2.1/gdb/mi/mi-main.c).
	"mi_cmd_data_write_memory: Usage: [-o COLUMN_OFFSET] ADDR FORMAT WORD-SIZE VALUE.");

	* src/.../core/command/MIDataWriteMemory.java: New file
	* src/.../core/command/CommandFactory.java (createMIDataWriteMemory): New method.
	* src/.../core/cdi/MemoryBlock.java (setValue): Implemented.

2002-10-20 Alain Magloire

	* src/.../core/cdi/CTarget.java (getMemoryBlock): Remove
	we use the MemoryManager instead.
	(EvaluateExpressionToValue): Removed not use.
	* src/.../core/cdi/SourceManager.java (setFile): Removed not use.
	(getFile): Removed not use.
	(reset): Removed not use.

2002-10-19 Alain Magloire

	The responsability to generate Events for modify memory blocks is push
	on the CDI implementation.  The way we do this is every time consuming,
	when the inferior is suspended(see EventManager.processSuspendedEvent()),
	MemoryManager.update() is called, the method will go through the list of MemoryBlocks
	that are not MemoryBlocks.setFrozen() and fetch the new memories, the data is compare
	and MemoryChangedEvents are fired for blocks with changed values.
	Gdb/mi var objects does not seem to provide any support for Memory ranges.

	* src/.../core/cdi/MemoryChangedEvent.java: New File implements ICDIMemoryChangedEvent.
	* src/.../core/cdi/EventManager.java (update): Process MIMemoryChangedEvent's.
	(processSuspendedEvent): call MemoryManager.update().
	* src/.../core/cdi/MemoryBlock.java (getExpression): New method.
	(getMIDataReadMemoryInfo): New method.
	(setMIDataReadMemoryInfo): New method.
	* src/.../core/cdi/MemoryManager.java (update): New method.
	(compareBlock): New method.
	(listMemoryBlocks): New method.

	* src/.../core/cdi/CTarget.java (setCurrentThread): Catch null pointer.
	(getCThreads): Likewise.
	* src/.../core/event/MIMemoryChangedEvent.java: New File.
	* src/.../core/event/MIThreadExitEvent.java: Indentation fixes.
	* src/.../core/event/MIVarChangedEvent.java: Indentation fixes.


	
2002-10-16 Alain Magloire

	* src/.../mi/core/cdi/MemoryManager.java (createMemoryBlock):
	New method that takes a string instead of a long, rearrange
	the method for it.

2002-10-12 Alain Magloire

	There are some serious problems with gdb/mi, for example
	the most recurrent one is when using -data-disassemble
	in a threaded program, GNU/Linux uses a thread manager
	when trying to access the stackframe, gdb usually coredumps
	with an assert, it goes something like this:
	
-data-disassemble -f manager.c -l 136 -n 100 0
&"Cannot access memory at address 0x4002d794\n"
^error,msg="Cannot access memory at address 0x4002d794"
(gdb) 
-data-disassemble -s 0x4002d900 -e 0x4002d964 0
&"Cannot access memory at address 0x4002d900\n"
^error,msg="Cannot access memory at address 0x4002d900"
(gdb) 
-thread-select 2
&"ui-out.c:133: gdb-internal-error: push_level: Assertion `uiout->level >= 0 && uiout->level < MAX_UI_OUT_LEVELS' failed.\n"

	The RxThread will spawn a thread to terminate the session
	and clear the receiving queue.


	* RxThread.java (run): When the thread is being cancel() or
	running out of run(), clear the receiving queue(rxQueue) and
	notify any commands waiting.

	* TxTread.java (run): Before putting the command in the
	receiving queue(rxQueue) check to see if the thread is
	still running.
	When the thread is being cancel() or running out of run(),
	clear the transmition queue(txQueue) an notify any commands
	waiting.

	* Queue.java (clearItems): New method that clear the items
	on the queue and returning them.

	* CommandQueue.java (clearCommands): New method calls super.clearItems()
	whith the appropriate castings.

	* cdi/CThread.java (setCurrentStackFrame): Check for null.

2002-10-12 Alain Magloire

	The memory block is implemented with
	-data-read-memory (MIDataReadMemory)
	Since the ICDIMemoryBlock only have
	byte[] getBytes()
	We will always issue:
	-data-read-memory address x 1 1 length
	The CDI upper layer will deal with any conversions
	
	The problem now is how to send changedEvent when
	an element of the memory changed.
	
	* cdi/MemoryBlock.java (getLength): Implemented
	(getBytes): Implemented
	(getStartAddress): Implemented

	* cdi/MemoryManager.java: Implemented.
	
	* command/MIDataReadMemory (getMIDataReadMemoryInfo):
	New helper method.

2002-10-12 Alain Magloire

	* cdi/Location (getInstructions): Methods removed
	no longer define in ICDILocation.

2002-10-11 Alain Magloire

	* cdi/SourceManager (getMixedInstruction):
	Implement the 3 new methods to return Mixed source
	and assemby instructions.
	
	* cdi/MixedInstruction: New class implements
	ICDIMixedInstruction.

2002-10-11 Alain Magloire

	* cdi/ExpressionManager.java:  Not needed, removed.

2002-10-10 Alain Magloire

	The Eclipse/UI/Debug framewok is being very repetive
	and each command can be ask 2, 3 times.  So we'll try
	to make certain commands smarter by not reissuing them
	to gdb if the state is the same.  We do this when
	selecting the thread and when selecting the stackframe.
	
	The other problem is that Eclipse/UI/Debug is calling
	ICDISession.terminate() twice, this is catch by looking
	at isTerminated().

	* cdi/CThread.java (setCurrentStackFrame): Make it smarter
	to not reselect the stack level if it is already at that
	level.

	* MISession.java (isTerminated): Declare a flag that will
	hold the state.
	(terminate): Check if it was call already.

2002-10-10 Alain Magloire

	* SourceManager.java:  Implement getInstructions().
