2003-12-09  Martin Baulig  <martin@ximian.com>

	Released version 0.5 "Clemson" of the Mono Debugger :-)

2003-11-06  Martin Baulig  <martin@ximian.com>

	* configure.in: Completely disable the GUI for the moment.

2003-09-13  Martin Baulig  <martin@ximian.com>

	* arch/ArchitectureI386.cs (ArchitectureI386.UnwindStack): Use
	`(long) (uint)' instead of just `(long)' to make this work for
	registers having "negative" values (0xbfffffec for instance).

	* frontends/scripting/ScriptingContext.cs
	(FrameHandle.PrintVariable): Format this nicely.

2003-09-08  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/: When invoking a method with the `call'
	command, debug the invoked method.  See the NEWS file for details.

	* backends/IInferior.cs (IInferior.CallInvokeMethod): Removed.
	(IInferior.RuntimeInvoke): New method; there are two overloaded
	versions: one is similar to the old CallInvokeMethod() and the
	other one allows us to debug the invoked method.

	* backends/ILanguageBackends.cs
	(ILanguageBackend.RuntimeInvokeFunc): New property.
	(ILanguageBackend.CompileMethod): New method.

	* backends/SingleSteppingEngine.cs
	(SingleSteppingEngine.CallInvokeMethod): Renamed to RuntimeInvoke().
	(SingleSteppingEngine.RuntimeInvoke): Added overloaded version
	which allows us to debug the invoked function.

	* interfaces/ITargetFunctionObject.cs
	(ITargetFunctionObject.Invoke): Added `bool debug' argument; if
	true, debug the invoked method.

	* interfaces/ITargetFunctionType.cs
	(ITargetFunctionType.Invoke): Added `bool debug' argument; if
	true, debug the invoked method.

2003-09-07  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetStructType.cs
	(ITargetStructType.Constructors): New property.
	(ITargetStructType.GetConstructor): New method.

	* frontends/scripting/Parser.jay (variable_expression): Added `new
	type (args)' syntax to invoke a constructor.

2003-08-12  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs (StackFrame.GetRegister): Removed.
	(StackFrame.GetRegisterLocation): New public method.

	* backends/native/NativeLanguage.cs: The .ctor now takes an
	ITargetInfo because NativePointerType needs the target address
	size.

	* backends/native/NativePointerType.cs: Always set the correct
	size.

	* frontends/scripting/VariableExpression.cs
	(RegisterExpression.ResolveLocation): New public method.  This is
	used when resolving an `x %eax'.

2003-08-11  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Use a colon instead of a dot to
	separate a type name and its static member.  This deambiguates the
	grammar and also allows things like
	'print System.DateTime:MinValue.Ticks'.

2003-08-11  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs
	(ScriptingContext.Print): Don't call String.Format() on already
	formatted strings; this'll cause problems if the string contains
	any '{' or '}'s.

2003-08-11  Martin Baulig  <martin@ximian.com>

	* backends/IInferior.cs (IInferior.CallMethod): This method now
	takes two `long' arguments.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoSymbolTable.LookupType): Call `mono_debugger_lookup_type ()'
	in the JIT to do the actual lookup.

2003-08-07  Martin Baulig  <martin@ximian.com>

	* interfaces/ILanguage.cs (ILanguage.LookupType): New method.

	* interfaces/ITargetStructType.cs
	(ITargetMemberInfo): New public interface.
	(ITargetFieldInfo, ITargetPropertyInfo, ITargetMethodInfo): Derive
	from ITargetMemberInfo.

	* frontends/scripting/Parser.jay: Added `Type.StaticField',
	`Type.StaticProperty' and `Type.StaticFunc (args)' syntax to
	access static members of a type without an instance.

2003-08-06  Martin Baulig  <martin@ximian.com>

	* backends/mono-cshap/MonoClass.cs: Added support for static
	fields, properties and methods.

	* interfaces/ITargetMemoryAccess.cs (ITargetAccess.CallMethod):
	Added new overloaded version of this method.

	* interfaces/ITargetStructType.cs (ITargetStructType): Added
	StaticFields, StaticProperties and StaticMethods properties and
	GetStaticField(), GetStaticProperty() and GetStaticMethod()
	methods.

2003-08-06  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoStringType.cs: We don't get the vtable
	from the JIT anymore; instead we call mono_string_new_wrapper()
	via a special wrapper method to make this work for multiple
	application domains.

2003-08-04  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/*.cs: Completely reworked the type support.
	We're now just creating one single `MonoType' instance per type;
	arrays, strings and enums now also derive from MonoClass which
	allows us to access the System.Array, System.String and
	System.Enum members.

2003-07-28  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Tokenizer.cs: Allow identifiers to be quoted
	in apostrophs (').

	* frontends/scripting/VariableExpression.cs
	(StructAccessExpression): Do a simple overload resolution for methods.

2003-07-22  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoClass.cs: New class.  This is now used
	for class and value types and also for fundamental types; it
	allows us to call things like `Substring(int)' on a string.

	* backends/mono-csharp/MonoStructType.cs: Moved most of this class
	into MonoClass.

	* backends/mono-csharp/MonoFundamentalType.cs: Derive from
	MonoStructType since a fundamental type is also a valuetype.

2003-07-20  Martin Baulig  <martin@ximian.com>

	Largely improved the type support.  We can now invoke methods with
	arguments and also modify variables.

	* classes/TargetBinaryWriter.cs: New class.

	* interfaces/ITargetFunctionObject.cs (Invoke): The method now
	takes a `object[] args' argument.

	* backends/mono-csharp/*.cs: Improved this a lot; the JIT is now
	providing us with better type information and explicitly tells us
	about builtin types; added support to call methods with arguments;
	it's now possible to modify variables.

2003-07-12  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoStructType.cs: We can now call a
	property's getter function.

2003-07-12  Martin Baulig  <martin@ximian.com>

	Started to added support for calling methods in the target.

	* classes/TargetLocation.cs (TargetMemoryAccess): Renamed to
	TargetAccess and changed type to ITargetAccess.
	* classes/StackFrame.cs: Likewise.

	* classes/RelativeTargetLocation.cs: Made this public.

	* interfaces/ITargetFunctionType.cs (HasReturnValue): New
	property.

	* interfaces/ITargetMemoryAccess.cs
	(ITargetAccess.CallInvokeMethod): New method.

	* interfaces/ITargetStructObject.cs
	(ITargetStructObject.GetMethod): New method.
	(ITargetStructObject.InvokeMethod): Removed.

	* frontends/scripting/Parser.jay: Added `!!' expression which is
	the last VariableExpression which was printed, ie. you can say
	`print !!' to see the last expression again.
	Added '$foo.method ()' syntax to invoke that method.

2003-07-11  Martin Baulig  <martin@ximian.com>

	Added support to modify variables of fundamental types.

	* interfaces/ITargetMemoryAccess.cs
	(ITargetMemoryAccess.WriteBuffer): We don't need a `size' argument
	here since we can just use the buffer's length.

	* interfaces/ITargetFundamentalObject.cs
	(ITargetFundamentalObject.Object): Added setter to this property.

	* frontends/scripting/Parser.jay: Added a `set $variable =
	<expression>' command to modify variables.

2003-07-10  Martin Baulig  <martin@ximian.com>

	* backends/server/server.h (StackFrame): Replaced the
	`locals_address' and `params_address' fields with `frame_address'.

	* backends/ptrace/PTrace.cs (PTraceInferior.StackFrame): Added
	`FrameAddress' field.  We need to keep this structure in sync with
	StackFrame in server.h.

	* arch/ArchitectureI386.cs (UnwindStack): Registers are stored as
	`long's, not as `uint's.

2003-07-05  Martin Baulig  <martin@ximian.com>

	* arch/bfd/elf32-target.h, peigen.c, targmatch.h: Include these
	generated files in CVS and don't rebuild them.

2003-07-05  Martin Baulig  <martin@ximian.com>

	* interfaces/IProcess.cs (GetBacktrace): Added overloaded version
	which takes an `int max_frames' argument.

	* frontends/scripting/Parsing.jay: The `bt' command now takes an
	optional integer argument which is the maximum number of frames to
	include in the backtrace.

2003-07-05  Martin Baulig  <martin@ximian.com>

	Released version 0.4 "New York City" of the Mono Debugger :-)

2003-07-04  Martin Baulig  <martin@ximian.com>

	* backends/DaemonThreadRunner.cs: Rewrote this to use the
	SingleSteppingEngine.  This allows us to debug daemon threads if
	they ever crash.

	* backends/Process.cs: Don't give daemon processes negative IDs.

	* frontends/scripting/ScriptingContext.cs: Don't hide daemon processes.

2003-06-30  Martin Baulig  <martin@ximian.com>

	* arch/bfd: Imported from binutils 2.13.2.
	* arch/libiberty: Likewise.

	* arch/Makefile.am: We now build a minimal libbfd here and include
	it in the libmonodebuggerbfdglue.la.

2003-06-23  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetFunctionType.cs: New class.
	* interfaces/ITargetFunctionObject.cs: New class.

	* interfaces/TargetObjectKind: Added `function'.

	* arch/DwarfReader.cs: More work on native type support.

2003-06-23  Martin Baulig  <martin@ximian.com>

	* arch/DwarfReader.cs: Improved native type support.

	* backends/native/NativeOpaqueObject.cs: New class.
	* backends/native/NativePointerObject.cs: New class.
	* backends/native/NativePointerType.cs: New class.
	* backends/native/NativeStructObject.cs: New class.
	* backends/native/NativeStructType.cs: New class.

	* frontends/scripting/Parser.jay: Added `$foo->test' syntax; allow
	`*($foo.test)' syntax.

	* frontends/scripting/Tokenizer.cs: Don't allow dots in identifiers.

2003-06-22  Martin Baulig  <martin@ximian.com>

	* backends/native/NativeStringType.cs: Derive from
	NativeFundamentalType.

	* backends/native/NativeStringObject.cs: Derive from
	NativeFundamentalObject.

2003-06-21  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetType.cs (GetObject): New method.

	* interfaces/ILanguage.cs: New public interface.

	* classes/Module.cs: Renamed `Language' to `LanguageBackend' and
	added new `Language' property to return the ILanguage.

	* classes/StackFrame (Language): New public property.
	(GetRegister): Added overloaded version which takes the register
	index and an offset and returns a ITargetObject.

	* interfaces/ITargetObject.cs (Location): New property.
	(Print): New function.  Returns a stringified representation of
	the object - suitable to be displayed to the user.

	* interfaces/ITargetPointerObject.cs
	(HasAddress, Address): New properties.

	* interfaces/ITargetType.cs (GetObject): Made this method part of
	the interface.

	* interfaces/TargetObjectKind.cs: Added `Opaque'.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoSymbolTable): Implement ILanguage.

	* backends/mono-csharp/MonoOpaqueObject.cs: Don't implement
	ITargetPointerObject. Opaque objects are opaque and no pointers.
	* backends/mono-csharp/MonoOpaqueType.cs: Likewise.

	* frontends/scripting/VariableExpression.cs (RegisterExpression):
	Made this a VariableExpression.

	* frontends/scripting/Parser.jay: Added an `examine' command to
	examine memory.  Syntax like gdb's `x' command.

2003-06-21  Martin Baulig  <martin@ximian.com>

	* classes/TargetLocation.cs: Moved here from
	backends/classes/MonoTargetLocation.cs.

	* classes/RelativeTargetLocation.cs: Moved here from
	backends/classes/MonoRelativeTargetLocation.cs.

	* classes/AbsoluteTargetLocation.cs: New public class.

2003-06-20  Martin Baulig  <martin@ximian.com>

	* doc/debugger.sxi: Added the slides from the GUADEC talk.

2003-06-20  Martin Baulig  <martin@ximian.com>

	* interfaces/IArchitecture.cs
	(GetBreakpointTrampolineData): Removed.
	(IsRetInstruction): Added ITargetMemoryAccess argument.
	(GetCallTarget, GetTrampoline): Added ITargetAccess argument.

	* arch/ArchitectureI386.cs: The .ctor doesn't take an
	ITargetAccess argument anymore.  This allows us to use the
	IArchitecture in all threads, not just in the IInferior one.

	* interfaces/IMethod.cs (GetTrampoline): Changed return type from
	TargetAddress to SourceMethod; don't trigger a JIT compilation
	here.

	* backends/ILanguageBackend.cs (GetTrampoline): Added overloaded
	version which takes a TargetAddress and returns a SourceMethod.
	This version doesn't trigger a JIT compilation can may be called
	from all threads.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoSymbolTable): Added AddImage() and GetImage() methods to get
	a MonoSymbolTableReader from the TargetAddress of a `MonoImage *'.
	(MonoSymbolTableReader): Implement ISimpleSymbolTable.

2003-06-20  Martin Baulig  <martin@ximian.com>

	* wrapper/wrapper.c, wrapper/thread-manager.c: Don't declare
	variables as volatile which are not actually modified by the
	debugger.

2003-06-14  Martin Baulig  <martin@ximian.com>

	* backends/IInferior.cs (IInferiorStackFrame): Removed the
	`LocalsAddress' and `ParamsAddress' properties.
	* classes/StackFrame.cs: Likewise.

	* backends/classes/MonoRegisterLocation.cs: Removed.
	* backends/classes/MonoStackLocation.cs: Removed.

	* backends/classes/MonoVariableLocatin.cs: This is now used for all
	variables, no matter whether they're stored on the stack or in a
	register.  The JIT just distinguishes between variables which are
	stored in a register and variables which are at an offset from a
	register.  This base register can be %ebp or any other register.

2003-06-13  Martin Baulig  <martin@ximian.com>

	* wrapper/wrapper.c: Use POSIX semaphores instead of the mono
	io-layer.  For some reason, using the mono io-layer doesn't work
	on all systems.

2003-06-10  Martin Baulig  <martin@ximian.com>

	* arch/opcodes/: Imported from binutils 2.13.2.

	* configure.in: Don't require libopcodes and dis-asm.h, but use
	the included libopcodes.  Note that we still need libbfd for this.

2003-06-08  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceView.cs: Made the context menu actually work.

2003-06-08  Martin Baulig  <martin@ximian.com>

	* frontends/gui/GotoLineDialog.cs: New dialog for "Edit / Goto Line".

2003-05-08  Martin Baulig  <martin@ximian.com>

	* arch/bfdglue.c (bfd_glue_openr): New function.  We need to
	g_strdup() the arguments since bfd_openr() takes their ownership,
	but the P/Invoke wrapper would free it.

2003-05-08  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/CSharpMethod.cs: Suppress duplicate line
	numbers.

	* classes/MethodSource.cs: Re-enable the ObjectCache.

2003-05-04  Martin Baulig  <martin@ximian.com>

	* wrapper/mini-main.c: Always use MONO_OPT_SHARED.

2003-05-04  Martin Baulig  <martin@ximian.com>

	* configure.in: Dropped support for the old JIT, alwasy use Mini.

	* wrapper/main.c: Removed.

2003-04-27  Martin Baulig  <martin@ximian.com>

	Reworked the breakpoint code; we're now getting a callback from
	the JIT when a method containing a breakpoint is JITed instead of
	using the breakpoint trampoline.

	* backends/ILanguageBackend.cs (BreakpointHit): Removed.

	* backends/Debugger.cs (BreakpointHit): Removed.

	* classes/ModuleData.cs (EnableBreakpoint, DisableBreakpoint):
	Removed the ThreadGroup argument.

	* classes/BreakpointManager.cs
	(BreakpointManager.Handle): New public class.
	(InsertBreakpoint, RemoveBreakpoint, LookupBreakpoint): New public
	methods; this class is now responsible for actually inserting all
	breakpoints.

2003-04-22  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoSymbolFileTable.Reload): Don't load any referenced assemblies
	here; we already get a notification from the metadata library when
	it's loading them.

2003-04-21  Martin Baulig  <martin@ximian.com>

	Use a new libzvt based terminal widget to display the target's
	output instead of the old Gtk.TextView based one.

	* configure.in: Require libzvt-2.0.

	* widgets/sources/debuggerwidgets/debuggerterminal.[ch]: New
	files.  This is a new terminal widget using libzvt.

	* widgets/Mono.Debugger.GUI.metadata: New file.

	* frontends/gui/OutputWindow.cs: Use the new DebuggerTerminal widget.

2003-04-21  Martin Baulig  <martin@ximian.com>

	* backends/Debugger.cs (Quit): Removed.

	* frontends/scripting/ScriptingContext.cs (process_events):
	Removed, we don't need to run the glib main loop anymore to get
	the target's output.
	(PrintInferior): Call Write(), not WriteLine().

	* backends/server/i386-ptrace.c (server_ptrace_spawn): Use two
	socketpairs for the target's stdout/stderr and set them to O_ASYNC
	to receive a SIGIO when output becomes available.

	* backends/server/i386-linux-ptrace.c (do_wait): Use sigwait() to
	wait for events from the target; handle I/O.

	* backends/server/library.c (mono_debugger_server_initialize):
	Block the signals in all threads, just unblock them in sigwait()
	which is called from do_wait().

2003-04-17  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MethodAddress.ctor): Use the first and last source line as
	MethodStartAddress and MethodEndAddress, not the prolog/epilog
	data from the JIT.

	* backends/SingleSteppingEngine.cs (get_step_frame): Return a
	StepMode.SingleInstruction frame if we don't have source code, not
	just null.  This is required to handle JIT trampolines correctly
	in a managed method for which we don't have source code.

	* arch/ArchitectureI386.cs (GetCallTarget): Added support for the
	`0xff 0x10' opcodes (call *(%eax)).

2003-04-16  Martin Baulig  <martin@ximian.com>

	* frontends/gui/Parser.jay: Added `run' command to restart an
	application after it exited.

2003-04-16  Martin Baulig  <martin@ximian.com>

	* classes/ProcessStart.cs: Moved to ../backends/.

	* backends/ProcessStart.cs (ProcessStart): Make this abstract.
	(ProcessStart.Create): Take a `DebuggerOptions options' and a
	`string[] args' argument; parse the arguments here.

	* frontends/scripting/DebuggerOptions.cs: This is now part of
	../backends/ProcessStart.cs.

2003-04-15  Martin Baulig  <martin@ximian.com>

	* backends/BreakpointManager.cs: Correctly implement Dispose().

	* backends/ThreadManager.cs (Dispose): Also kill the main process.

	* backends/Process.cs (child_exited): Call Dispose().

	* backends/DaemonThreadRunner.cs, SingleSteppingEngine.cs (Dispose):
	Don't dispose the inferior here; this needs to be done by the
	daemon thread itself to avoid a race condition.

2003-04-13  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs (ObjectInvalidHandler): New delegate.
	(StackFrameHandler, StackFrameInvalidHandler): Removed.
	(StackFrame.FrameInvalid): Renamed to FrameInvalidEvent and use
	the new ObjectInvalidHandler.

	* classes/Backtrace.cs (BacktraceInvalidHandler): Removed, use
	ObjectInvalidHandler instead.

	* classes/TargetEvent.cs: New public class.  We're now sending a
	single `TargetEvent' instead of the FrameChanged, FrameInvalid,
	MethodChanged, MethodInvalid and StateChanged events.

	* backends/SingleSteppingEngine.cs: Send a single TargetEvent
	instead of the FrameChanged, FrameInvalid, MethodChanged,
	MethodInvalid and StateChanged events.  This makes things a lot
	easier for the gui.

	* frontends/gui/DebuggerWidget.cs, DebuggerManager.cs: Reflect
	latest SingleSteppingEngine changes.  Things are now a lot easier
	here since we're just listening to one single event.

2003-04-13  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetObject.cs (ObjectInvalidHandler): Removed.

2003-04-12  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs (TargetExitedEvent): New event.
	(Kill): Just call Dispose() here, this does everything for us.

	* backends/ThreadManager.cs (Kill): New public method.  The is the
	recommended API to kill the application being debugged.

	* backends/DaemonThreadRunner.cs, Debugger.cs, Process.cs,
	SingleSteppingEngine.cs, ThreadManager.cs (Dispose): Make this
	thread-safe.

	* frontends/scripting/Parser.jay: Make the `kill' command kill the
	whole application, not just one process.

2003-04-10  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetNotification.cs
	(TargetOutputHandler): Added `bool is_stderr' argument.
	(DebuggerOutputHandler): New public delegate.
	(TargetOutput, TargetError, DebuggerOutput, DebuggerError):
	Removed these events.

	* backends/ThreadManager.cs
	(TargetOutput): Renamed to `TargetOutputEvent'.
	(TargetError): Removed; we're now using one event for TargetOutput
	and TargetError.
	(TargetOutputEvent): Listen to this event to get the target's
	stdout and stderr.
	(DebuggerOutputEvent, DebuggerErrorEvent): New public events.

2003-04-10  Martin Baulig  <martin@ximian.com>

	* backends/server/library.c (mono_debugger_server_spawn): Return
	the error message as string, not as GError.

	* backends/ptrace/PTrace.cs (Run): Include the actual error
	message from the target in the CannotStartTargetException.

	* backends/SingleSteppingEngine.cs: Catch the exception we get if
	we cannot start / attach to the target and pass it to the caller.

2003-04-10  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoVariable.cs: Use correct scope info for
	parameters.

2003-04-10  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs (TargetOuput, TargetError): New public
	events; use them to get the target's stdout and stderr instead of
	the events in Process.

2003-04-10  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Don't make the "About" dialog
	modal.	

2003-04-07  Martin Baulig  <martin@ximian.com>

	* frontends/gui/ProgramToDebug.cs: Added a Gtk.Entry to specify the
	JIT optimizations.  See `mini --help' for a list of optimization
	options  [FIXME: we should add a real GUI element for this].

2003-04-07  Martin Baulig  <martin@ximian.com>

	* configure.in: Require mono and mini for the moment.

	* wrapper/Makefile.am: Build a `mono-debugger-jit-wrapper' for the
	old JIT and a `mono-debugger-mini-wrapper' for the new one.

	* wrapper/mini-main.c: New file.  This is the main.c for Mini.

	* lib/Makefile.am: Make `mono-debugger-mini-wrapper' the default;
	we're now using the new JIT in the debugger.

2003-04-07  Martin Baulig  <martin@ximian.com>

	Released version 0.3 "The White Mountains" of the Mono Debugger :-)

2003-04-06  Martin Baulig  <martin@ximian.com>

	* README.build: New file.  Please read it before compiling the
	debugger.

	* RELEASE-NOTES-0.3.txt: New file.

2003-04-05  Martin Baulig  <martin@ximian.com>

	* wrapper/thread-manager.c: Reflect latest libgc API changes.

2003-03-31  Martin Baulig  <martin@ximian.com>

	* wrapper/mono-debugger-jit-wrapper.h (MonoDebuggerThread): New
	type.  We create an instance of this type for each thread.

	* backends/ThreadManager.cs (AcquireGlobalThreadLock): Write the
	stopped thread's stack pointers into the corresponding
	MonoDebuggerThread structure so they can be accessed from the
	unmanaged code.
	
	* backends/SingleSteppingEngine.cs (AcquireThreadLock): Return the
	stopped thread's registers.

2003-03-31  Martin Baulig  <martin@ximian.com>

	* configure.in: Require the new libgc.

2003-03-30  Martin Baulig  <martin@ximian.com>

	* wrapper/thread-manager.c
	(mono_debugger_thread_manager_acquire_global_thread_lock): New
	function.  Calls ThreadManager.AcquireGlobalThreadLock() via a
	callback function.
	(mono_debugger_thread_manager_release_global_thread_lock): Release
	the lock again.

	* wrapper/icall.c
	(Mono.Debugger.Callbacks.ThreadManager::AcquireGlobalThreadLock):
	New interncalls; this is just to test the thread lock until we
	hooked it into boehm.

2003-03-30  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs (mono_thread_manager): Fixed a bug to
	make this actually work; don't insert a breakpoint, but pass the
	stop address to SingleSteppingEngine.Continue() and then wait
	until it has stopped again.

2003-03-30  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs: Run the BreakpointHitHandler()
	from the ready_event_handler() because it should be run after the
	target state has changed to TargetState.STOPPED and the
	corresponding notification has been sent.

2003-03-28  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs (SignalHandler): Ignore SIGPWR and
	SIGXCPU since they're used by the garbage collector.

2003-03-28  Martin Baulig  <martin@ximian.com>

	* arch/Bfd.cs: Read the dynamic symbol table and make it available
	via the ISimpleSymbolTable.  This finally gives us function names
	from shared libraries in backtraces.

2003-03-28  Martin Baulig  <martin@ximian.com>

	Use a special ISimpleSymbolTable to lookup function names in
	backtraces.  This simple symbol table may also be available if
	there's no debugging info for a module.

	* interfaces/ISymbolTable.cs
	(ISymbolLookup): Removed SimpleLookup().
	(ISimpleSymbolTable): New public interface.

	* interfaces/IDisassembler.cs (SymbolTable): Return an
	ISimpleSymbolTable, not an ISymbolTable.

	* classes/SymbolTableManager.cs (SymbolTableHandler): Added
	ISimpleSymbolTable argument to this delegate.
	(SimpleSymbolTable): New public property.

	* classes/SimpleSymbolTableCollection.cs: New public class.

	* classes/ModuleData.cs (SimpleSymbolTable): New public property.

	* classes/Module.cs (SimpleSymbolTable): New public property.

	* clases/MethodBase.cs (SimpleLookup): Removed.

2003-03-28  Martin Baulig  <martin@ximian.com>

	* arch/BfdModule.cs (SymbolsLoaded): Always return true since we
	always have at least the simple symbol table.  This is necessary
	to get function names for functions in shared libraries without
	debugging info.

2003-03-28  Martin Baulig  <martin@ximian.com>

	* wrapper/main.c: Call mono_config_parse() and mono_set_rootdir().

2003-03-25  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceList.cs (InsertBreakpoint): Implemented.

2003-03-25  Martin Baulig  <martin@ximian.com>

	* frontends/gui/debugger.glade: Splitted locals and params display.

	* frontends/gui/VariableDisplay.cs: Started to fix this.

2003-03-25  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceManager.cs: Use a single SourceList for all
	source files.

	* frontends/gui/SourceList.cs: Added "Duplicate View" item to the
	context menu to create another view of this source file.

2003-03-24  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceManager.cs (CreateSourceView): Pass the full
	pathname to the SourceList's .ctor.

	* frontends/gui/SourceList.cs: We need to use the full pathname
	when searching a breakpoint location

2003-03-24  Martin Baulig  <martin@ximian.com>

	* frontends/gui/debugger.glade: Disable the popup menu in the
	code-browser-notebook.

	* frontends/gui/SourceList.cs: Embed the setting of the contents
	in BeginNotUndoableAction()/EndNotUndoableAction().	

	* frontends/gui/ProgramToDebug.cs: Don't make the dialog modal and
	don't use Dialog.Run().

2003-03-23  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/DebuggerOptions.cs (--jit-optimizations):
	New command line argument to specify the optimization flags for
	the new JIT.  This is the same than the --optimize argument of the
	new JIT.

	* wrapper/main.c (main): The second command line argument now
	contains the optimization flags.

2003-03-23  Martin Baulig  <martin@ximian.com>

	* classes/ProcessStart.cs (SetupEnvironment): Pass all environment
	variables to the target.

2003-03-23  Martin Baulig  <martin@ximian.com>

	* classes/ProcessStart.cs (CommandLine): New public property.

	* frontends/gui/DebuggerGUI.cs (StartProgram): Use just the name
	of the managed application, not the full command line including
	the wrapper in the title.

2003-03-22  Martin Baulig  <martin@ximian.com>

	* classes/ProcessStart.cs: Moved here from ../backends/.

	* backends/ProcessStart.cs: Moved to ../classes/.

	* frontends/scripting/DebuggerOptions.cs: New file.  Moved
	`MyOptions' from ScriptingContext.cs here, renamed it to
	DebuggerOptions and made it public.  This class handles the
	parsing of the command line arguments.

	* frontends/scripting/ScriptingContext.cs
	(ScriptingContext..ctor): Added DebuggerOptions argument.
	(ScriptingContext.Start): Return the ProcessStart, don't call Run().
	(ScriptingContext.ParseArguments): Removed.
	(ScriptingContext.Run): Call Initialize() here.

	* frontends/gui/DebuggerGUI.cs: Use the new DebuggerOptions class
	to parse the command line arguments.

2003-03-22  Martin Baulig  <martin@ximian.com>

	* doc/guadec-abstract.txt: Added the abstract of my GUADEC talk.

2003-03-22  Martin Baulig  <martin@ximian.com>

	* interfaces/IVariable.cs (IsValid): Renamed to CheckValid() and
	added IsAlive().

	* backends/mono-csharp/MonoVariable.cs: Only use scope and
	liveness info if we actually have it.

	* backends/mono-csharp/MonoType.cs (CheckValid): New method.
	Checks whether the location is actually valid.

	* backends/mono-csharp/MonoTargetLocation.cs (Address): Return
	TargetAddress.Null on error; don't attempt to dereference null
	pointers, just return TargetAddress.Null.

2003-03-21  Martin Baulig  <martin@ximian.com>

	* doc/FAQ.txt: Updated documentation about JIT trampolines and
	debugging interncalls.

2003-03-21  Martin Baulig  <martin@ximian.com>

	* classes/Module.cs (HasDebuggingInfo): New public property.

	* frontends/scripting/ScriptingContext.cs (ShowModules): Ignore
	modules without debugging info.

2003-03-21  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs (StepNativeInstruction):
	New public method.  Steps one machine instruction and always
	enters all method calls, including trampolines.

	* frontends/scripting/Parser.jay: Added `native stepi' command
	for it.

2003-03-16  Martin Baulig  <martin@ximian.com>

	* interfaces/IMethod.cs (GetTrampoline): New method.

	* interfaces/IDisassembler.cs (DisassembleInstruction): Added
	`IMethod method' argument.

	* classes/AssemblerMethod.cs: The BfdDisassembler now calls the
	.ctor with an array of AssemblerLine's.

	* arch/Bfd.cs: Added support for ELF jump tables.

	* arch/BfdModule.cs (Language): Return the Bfd, which now
	implements ILanguageBackend.

	* backends/ILanguageBackend.cs (Modules): Removed this property.

	* backends/Process.cs (DisassembleInstruction): Removed.

2003-03-16  Martin Baulig  <martin@ximian.com>

	* arch/DwarfReader.cs: Fixed a bug to make shared libraries work
	again.

2003-03-14  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs (Locals): New public property.  Returns
	just the locals which are actually accessible at the current
	location.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Actually use
	the scope information from the symbol file.

2003-03-13  Martin Baulig  <martin@ximian.com>

	* test/TestLexicalScopes.cs: New tests.  The debugger should only
	display one variable called `a' at a time.

2003-03-12  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerManager.cs: New file.  Do all this event
	notification stuff here instead of doing it on a per-widget level
	in DebuggerWidget.

2003-03-12  Martin Baulig  <martin@ximian.com>

	* frontends/gui/ProcessManager.cs: Removed, this was way too immature.

	* frontends/gui/LineDebugStatusbar.cs: Removed.

2003-03-12  Martin Baulig  <martin@ximian.com>

	* frontends/gui/FileOpenDialog.cs: New file.  This is a customized
	Gtk.FileSelection which has a list of all source files.

2003-03-11  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Implemented "File / Open".

2003-03-11  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/SourceManager.cs: The text in the source
	buffer must always be terminated with a newline.

2003-03-11  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs (do_next): Step one instruction
	unless this is actually a call.

2003-03-11  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Use Log.PrintTraceLogFunction for
	glib and gtk+ to get backtraces.

2003-03-11  Martin Baulig  <martin@ximian.com>

	* backends/Debugger.cs (FindLocation): New convenience function.
	Walks the module list and calls FindLocation() on all modules
	until finding a match - or returns null.

	* frontends/scripting/ScriptingContext.cs (FindLocation): Call
	DebuggerBackend.FindLocation() and throw the ScriptingException if
	needed.

	* frontends/gui/SourceManager.cs: Use
	DebuggerBackend.FindLocation, not ScriptingContext.FindLocation.

	* frontends/gui/DebuggerGUI.cs (Context): Removed this property.

2003-03-10  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/SourceList.cs: Generate an informational message

2003-03-10  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine: When debugging managed code,
	don't step into methods without debugging info.

2003-03-10  Martin Baulig  <martin@ximian.com>

	* classes/SourceInfo.cs (SourceFile.Name): New property.

	* classes/MethodSource.cs (IMethodSource.Name): Return the
	SourceFile.Name, not the SourceFile.FileName.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* frontends/gui/: Added .ctors which take the glade name instead
	of a widget.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* frontends/gui/: Added "File / Open" menu item to open a source
	view.  Not yet implemented, though.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* test/TestSourceView.cs: Small test app for the Gtk.SourceView.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* frontends/command-line/Interpreter.cs (ProcessCommand): Repeat
	the last command when called with an empty string.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* backends/ProcessStart.cs
	(Path_Mono, Environment_Path, Environment_LibPath): Made them
	static and writable.

	* frontends/scripting/ScriptingContext.cs (--jit-wrapper): New
	command line argument to override the ProcessStart.Path_Mono.

2003-03-09  Martin Baulig  <martin@ximian.com>

	* configure.in: Set version number to 0.2.3.  The next release
	will be 0.3 "White Montains".

2003-03-09  Martin Baulig  <martin@ximian.com>

	Released version 0.2.2 "Cambridge" of the Mono Debugger :-)

2003-03-07  Martin Baulig  <martin@ximian.com>

	* configure.in: Check whether we're compiling from CVS and only
	check for gapi_codegen.exe if we do so.

	* widgets/generator/Makefile.am (USE_GAPI_CODEGEN): New automake
	conditional; don't rebuild if it's false.

2003-03-07  Martin Baulig  <martin@ximian.com>

	* configure.in: Set version number to 0.2.2.

2003-03-05  Martin Baulig  <martin@ximian.com>

	* wrapper/wrapper.c: This file was formerly known as main.c.

	* wrapper/main.c: Moved everything but a very simple main()
	function into wrapper.c.

	* Makefile.am: Create a static libmonodebuggerwrapper.a library
	containing everything but the main().

2003-03-04  Martin Baulig  <martin@ximian.com>

	* widgets/generator/Makefile.am: Only rebuild things if we're in
	maintainer mode.

	* widgets/*/generated/: Include the generated files in the
	distribution since we aren't rebuilding them in the tarballs.
	
2003-03-04  Martin Baulig  <martin@ximian.com>

	* configure.in: Improved the gtk# check; actually check for
	gapi_codegen.exe and don't build the GUI if we can't find gtk#.

2003-03-04  Martin Baulig  <martin@ximian.com>

	* RELEASE-NOTES-0.2.2.txt: New file.  This is more or less a copy
	of the RELEASE-NOTES-0.2.0.txt.

	* NEWS: Added a few news entries.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Generator.cs (Generator.PrintHelp): New
	method.  Takes whatever the user entered after the `help' command
	as a string and prints the help.

	* frontends/scriptings/Tokenizer.cs (token): If we encounter a
	Token.HELP, consume the rest of the line and pass it to
	Generator.PrintHelp().

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Generator.cs: New file.

	* frontends/scripting/Command.cs: Added a [Command] attribute to
	all commands.

	* frontends/scripting/Expression.cs: Added an [Expression]
	attribute to all expressions.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs (HelpCommand): Removed.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay (command): Splitted into
	`generated_command', `other_command' and `assert_command' and
	removed the "help" command.

	* frontends/scripting/Expression.cs
	(ProgramArgumentsExpression): New expression.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Expression.cs
	(BreakpointNumberExpression): New expression.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Expression.cs
	(ModuleOperationListExpression): New expression.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Expression.cs
	(ModuleListExpression, SourceListExpression, ProcessListExpression):
	New expressions.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs (StepCommand): Use a separate
	class for the individual stepping commands.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs
	(FrameHandle, BacktraceHandle): New public classes.

	* frontends/scripting/Expression.cs
	(FrameExpression): New expression.

	* frontends/scripting/Parser.jay: Use the new FrameExpression
	instead of a ProcessExpression and a frame number.

2003-03-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs: Moved some stuff into the
	following three new files.

	* frontends/scripting/Expression.cs: New file.
	* frontends/scripting/VariableExpression.cs: New file.
	* frontends/scripting/AssertCommand.cs: New file.

2003-03-01  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs: Automatically run newly
	created threads in the background.

2003-03-01  Martin Baulig  <martin@ximian.com>

	* arch/DwarfReader.cs: Ignore line numbers from other source files
	(macros or #include'd files, for instance).

2003-03-01  Martin Baulig  <martin@ximian.com>

	* classes/SourceFileFactory.cs: Cache the file contents in an
	ObjectCache.

	* backends/Debugger.cs (SourceFileFactory): New public property.

	* interfaces/IMethod.cs (IMethodSource.SourceBuffer): Always
	return the method contents here, also when the method belongs to
	an actual source file.	

2003-02-27  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceManager.cs (GetSourceView): Use the
	SourceFile / ISourceBuffer as hash key, not the IMethodSource.

2003-02-27  Martin Baulig  <martin@ximian.com>

	* backends/server/server.h (CommandError): Cleaned this up.

	* backends/ptrace/PTrace.cs: Throw a TargetMemoryException if
	reading from the target's memory failed.

	* classes/TargetException.cs (LocationInvalidException): Added
	.ctor which takes a TargetException.

	* backends/native/*: Pass TargetExceptions to the
	LocationInvalidException's .ctor.

	* backends/mono-csharp/*: Likewise.

2003-02-27  Martin Baulig  <martin@ximian.com>

	* backends/native/NativeStringObject.cs (ReadString): Quote
	non-printable characters in the returned string, read at most
	MaximumDynamicSize chars.

2003-02-26  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs (check_method_operation):
	Enable this for native methods as well.

2003-02-26  Martin Baulig  <martin@ximian.com>

	* backends/native/NativeStringType.cs: New file.
	* backends/native/NativeStringObject.cs: New file.

	* arch/DwarfReader.cs: Cleaned up the API a bit and added support
	for strings.

2003-02-26  Martin Baulig  <martin@ximian.com>

	* arch/DwarfReader.cs: Started to add support for native types to
	access parameters and local variables in native methods.

2003-02-26  Martin Baulig  <martin@ximian.com>

	* backends/native/: New directory.

	* backends/native/NativeFundamentalObject.cs: New file.
	* backends/native/NativeFundamentalType.cs: New file.
	* backends/native/NativeObject.cs: New file.
	* backends/native/NativeOpaqueType.cs: New file.
	* backends/native/NativeType.cs: New file.

2003-02-26  Martin Baulig  <martin@ximian.com>

	Moved MonoTargetLocation.cs, MonoRelativeTargetLocation.cs,
	MonoStackLocation.cs and MonoRegisterLocation.cs from
	backends/mono-csharp/ to backends/classes/ and put them into the
	Mono.Debugger.Backends namespace.

	* backends/classes/MonoTargetLocation.cs: Moved here.
	* backends/classes/MonoRelativeTargetLocation.cs: Moved here.
	* backends/classes/MonoStackLocation.cs: Moved here.
	* backends/classes/MonoRegisterLocation.cs: Moved here.

2003-02-25  Martin Baulig  <martin@ximian.com>

	* classes/SourceInfo.cs (SourceFile.FindMethod): Renamed the
	overloaded version which took a line into FindLine () and changed
	its return type to SourceLocation.

	* classes/Module.cs (FindMethod): Renamed the overloaded version
	which took a filename and line to FindLocation() and changed its
	return type to SourceLocation.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* interfaces/IMethod.cs (IMethodSource.SourceMethod): New property.

	* classes/SourceAddress.cs (SourceLocation): New property.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* interfaces/ISourceBuffer.cs (ISourceBuffer.HasContents): Removed
	this property; from now on, an ISourceBuffer always has contents.
	(ISourceBuffer.Contents): Changed the type of this property from
	`string' to `string[]'; it returns the source file splitted into
	lines (it turned out to be more useful that way).

	* interfaces/IMethod.cs (IMethodSource): Added Name, IsDynamic,
	SourceBuffer and SourceFile properties.

	* classes/SourceAddress.cs (SourceAddress.Buffer): Removed this
	property.
	(SourceAddress.MethodSource): New public property.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* classes/SourceInfo.cs: Renamed `SourceInfo' into `SourceFile'
	and `SourceMethodInfo' into `SourceMethod'.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* classes/SourceFileFactory.cs (SourceFileFactory.FindFile):
	Return an ISourceBuffer.
	(SourceFile): Removed.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* classes/SourceLocation.cs: New public class.

	* classes/BreakpointHandle.cs (BreakpointHandleMethod): Merged all
	the functionality into `BreakpointHandle' and removed this class.

	* classes/Module.cs (Module.AddBreakpoint): Take a SourceLocation.

2003-02-24  Martin Baulig  <martin@ximian.com>

	* backends/Process.cs (Kill): Send the event and call Dispose ().

	* backends/ThreadManager.cs (process_exited): Use Process.Kill()
	to kill all processes.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Unload the
	modules when the target exits.

2003-02-23  Martin Baulig  <martin@ximian.com>

	Renamed `SourceLocation' to `SourceAddress'.

	* classes/SourceAddress.cs: Formerly known as SourceLocation.

	* classes/SourceLocation.cs: Renamed into SourceAddress.

2003-02-22  Martin Baulig  <martin@ximian.com>

	* classes/SourceFileFactory.cs (SourceFile.ReadFile): Use
	`Encoding.GetEncoding (28591)' as the default encoding.  I've no
	idea why, but that's what MCS is doing in driver.cs and it's
	fixing my bug.

2003-02-22  Martin Baulig  <martin@ximian.com>

	* doc/user-manual.texi: Documented the new breakpoint code.

2003-02-22  Martin Baulig  <martin@ximian.com>

	* interfaces/IMethod.cs (IMethodSource.MethodLookup): New method.

	* backends/Debugger.cs (InsertBreakpoint): Removed the overloaded
	versions which took a method name / file name; the method lookup
	is now done by the client, we just take a SourceMethodInfo here.

	* frontends/scripting/: Completely reworked the `break' commands.
	Thread groups are now specified in `<', '>'.

2003-02-13  Miguel de Icaza  <miguel@ximian.com>

	* frontends/command-line/Main.cs: Make enter repeat the last command.

2003-02-09  Martin Baulig  <martin@ximian.com>

	* test/SymbolFileReader.cs: Moved to ../lib/.

	* lib/SymbolFileReader.cs: Added this to the build.

2003-02-08  Martin Baulig  <martin@ximian.com>

	* wrapper/main.c: Create a special command thread which is always
	stopped.  It is used by the debugger to invoke methods on the JIT,
	such as compiling a method or inserting a breakpoint.

2003-02-08  Martin Baulig  <martin@ximian.com>

	* classes/ModuleData.cs (FindMethod): New abstract method.

	* classes/Module.cs (FindMethod): Call ModuleData.FindMethod().

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoModule.FindMethod): Provide a custom implementation for this.

2003-02-07  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Reflect
	latest symbol writer changes.

2003-02-05  Martin Baulig  <martin@ximian.com>

	* tests/SymbolFileReader.cs: New test.  This is a nice tool which
	can dump the contents of a symbol file.

2003-02-03  Martin Baulig  <martin@ximian.com>

	* backends/server/library.c: Return the correct thread abort/restart
	signals.

	* backends/ThreadManager.cs: Make this work for native
	applications again.

2003-02-03  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs: Added `--prompt'
	command line argument to specify the prompt; useful when running
	the debugger inside the debugger.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* test/TestInternCall.cs: New test.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs: Added support for
	PInvoke/icall wrappers.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* interfaces/IMethod.cs (IsWrapper, WrapperAddress): New properties.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* wrapper/icall.c: New file.
	(Mono.Debugger.Tests.TestInternCall::Test): New interncall for
	testing purposes.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceView.cs (CreateWidget): New abstract method.
	(.ctor): Hook to the "map"/"unmap" events and don't update the
	widget while we're invisible.
	(frame_changed_event): If we're called the first time, queue an
	idle callback which scrolls to the current line.

2003-02-02  Martin Baulig  <martin@ximian.com>

	* arch/ArchitectureI386.cs (I386Register): Made this public.

2003-02-01  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs (Start): Splitted into
	ParseArguments() and Run().

	* backends/ProcessStart.cs (IsCoreFile, CoreFile): New properties.

	* frontends/gui/DebuggerGUI.cs (ProgramLoadedEvent): This is now
	emitted when the DebuggerBackend is created.
	(ProcessCreatedEvent): New public event which is emitted when the
	main process has been created.

	* frontends/gui/DebuggerWidget.cs (SetBackend): New protected
	virtual function; this is called before the main process is started.

2003-02-01  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerGUI.cs (ProgramLoadedEvent): New public
	event.

	* frontends/gui/DebuggerWidget.cs (SetProcess): Made this
	protected; we hook to the DebuggerGUI's ProgramLoadedEvent.

2003-02-01  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerWidget.cs: The `backend' is now set in
	SetProcess() and must not be used before SetProcess() has been called.

2003-02-01  Martin Baulig  <martin@ximian.com>

	* classes/ObjectCache.cs: Re-enable WeakReferences.

2003-02-01  Martin Baulig  <martin@ximian.com>

	* frontends/command-line/Interpreter.cs: The ScriptingContext is
	now created by the caller and passed to the .ctor as argument.

2003-01-26  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/: Use Mono.GetOptions.

2003-01-26  Martin Baulig  <martin@ximian.com>

	* doc/user-manual.texi: New file.  Explained thread groups and
	per-thread breakpoints there.

2003-01-26  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/: Implemented ThreadGroup support.

2003-01-26  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added `kill' command.	

2003-01-24  Martin Baulig  <martin@ximian.com>

	* wrapper/: Reflected lastest runtime changes.

2003-01-24  Martin Baulig  <martin@ximian.com>

	Made the serialization stuff actually work.  You can now save a
	debugger session - including all your breakpoints - to disk and
	read it back next time you start the debugger :-)

	* backend/ProcessStart.cs: Made this serializable.

	* backend/DebuggerBackend.cs: Made this serializable.

	* class/Module.cs: Make the serialization stuff actually work.  We
	can now serialize the module list, including all the breakpoints,
	to disk and reload it later.

2003-01-24  Martin Baulig  <martin@ximian.com>

	* classes/ModuleData.cs: Split out all the dynamic stuff from
	`Module'; this is now also the base class for `NativeModule'.

	* classes/BreakpointHandle.cs: This was formerly a nested class in
	`Module' and is now public.

	* classes/SymbolTableManager.cs: Don't use an AsyncQueue here.

	* arch/BfdModule.cs: The DwarfReader is now constructed here; we
	can also load/unload it.

2003-01-24  Martin Baulig  <martin@ximian.com>

	* wrapper/: Prefix all symbols which are accessed from the
	debugger with `MONO_DEBUGGER__' and mark them as volatile.

2003-01-23  Nick Drochak <ndrochak@gol.com>

	* frontends/gui/DebuggerGUI.cs: Hook up close button on window border.

2003-01-22  Martin Baulig  <martin@ximian.com>

	* lib/Makefile.am: Use the new wrapper instead of @MONO@.  Added
	the ${LD_LIBRARY_PATH} to the config files.

	* backends/ProcessStart: Pass the LD_LIBRARY_PATH to the target.

2003-01-22  Martin Baulig  <martin@ximian.com>

	* classes/Breakpoint.cs (BreakpointHit): Renamed to
	CheckBreakpointHit() and added BreakpointHit() which'll be called
	after the target is actually stopped and the notifications have
	been send.

2003-01-22  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs: Use the new mono thread manager in
	the wrapper.

	* wrapper/: New directory.  This is an unmanaged wrapper
	application which embeds the JIT.  It is launched from the
	debugger when debugging managed applications.

	* configure.in: Set version number to 0.2.1; require Mono 0.19.1.

2003-01-19  Martin Baulig  <martin@ximian.com>

	Released version 0.2.0 "Boston" of the Mono Debugger :-)

2003-01-19  Martin Baulig  <martin@ximian.com>

	* README.FreBSD: The mono and binutils binaries are ready :-)

2003-01-19  Martin Baulig  <martin@ximian.com>

	* README.FreeBSD: Unfortunately, the binutils issue is a bit worse
	than expected on FreeBSD.  I've made a FreeBSD port, including a
	binary package; added a link to them.

2003-01-19  Martin Baulig  <martin@ximian.com>

	* arch/DwarfReader.cs: Don't make this an IDisposable.

	* classes/SymbolTableManager.cs: Catch the ThreadAbortException
	and set the events to wake up a potentially waiting caller.

2003-01-18  Martin Baulig  <martin@ximian.com>

	* interfaces/IProcess.cs (State, Disassembler): New properties.

	* backends/SingleSteppingEngine.cs: Implement IDisassembler.

	* backends/Process.cs: Some API cleanups.
	(ProcessExitedEvent): New public event.

2003-01-18  Martin Baulig  <martin@ximian.com>

	* configure.in: Set version number to 0.1.9, we're almost ready for
	the release ....

2003-01-18  Martin Baulig  <martin@ximian.com>

	* RELEASE-NOTES-0.2.0.txt: Replaced `GNU/Linux' with `Linux and
	BSD kernels' since the debugger is now working on FreeBSD.

2003-01-17  Martin Baulig  <martin@ximian.com>

	* backends/DaemonThreadRunner.cs: Make the runner thread exit when
	the target receives a SIGKILL.

2003-01-17  Martin Baulig  <martin@ximian.com>

	* classes/ObjectCache.cs: Catch and silently ignore exceptions
	when creating the WeakReference.  This makes the debugger work
	with a runtime which has no GCHandle support.

2003-01-17  Martin Baulig  <martin@ximian.com>

	* configure.in: Don't check for gthread anymore.

	* backends/server/breakpoints.c: Don't use a GStaticRecMutex here; 
	mono_debugger_breakpoint_manager_new () now takes two delegate
	arguments - a lock an an unlock function.

	* classes/BreakpointManager.cs: Create a Mutex and pass the
	unmanaged breakpoint manager to delegates to lock/unlock it.

2003-01-16  Martin Baulig  <martin@ximian.com>

	* backends/server/i386-freebsd-ptrace.c (do_wait): FreeBSD
	requires the `WLINUXCLONE' option if and only if the target is a
	thread.

	* backends/server/i386-ptrace.c (InferiorHandle): Added
	`is_thread' field; this is set to 1 by server_ptrace_attach()
	since we currently only attach to threads.

2003-01-16  Martin Baulig  <martin@ximian.com>

	* configure.in: Check whether we have a shared libbfd.so; if not,
	tell people to read the "binutils and libbfd issues" section in
	README.FreeBSD.

	* README.FreeBSD: New file.

	* doc/FAQ.txt: Also added this to the FAQ.

2003-01-16  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs: Don't hardcode signal numbers.

	* backends/ptrace/PTrace.cs
	(ThreadAbortSignal, ThreadRestartSignal, ThreadDebugSignal,
	MonoThreadDebugSignal): New static properties.

2003-01-16  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs: Use the new thread manager in
	mono/io-layer when debugging managed applications.

2003-01-15  Peter Williams  <peterw@ximian.com>

	* frontends/scripting/Parser.jay: Change it so that expressions
	go in parentheses, not variable_expressions.

	* frontends/scripting/Command.cs: supporting changes of
	VariableExpressionGroup -> ExpressionGroup.

2003-01-13  Peter Williams  <peterw@ximian.com>

	* frontends/scripting/Command.cs: Implement a binary operator for
	simple math in expressions. Make variable_expressions convertible
	to expressions so that we don't need PrintCommand as well as 
	PrintVariableCommand. Change the default resolution of variables
	to try and get their actual values. Make array index take an
	expression so that we can do "$array[$i]".

	* frontends/scripting/Parser.jay: Define binary operators and make
	them possible expressions. Don't make processes possible expressions.
	Remove the PrintVariable command since we don't need it anymore.

	* frontends/scripting/Tokenizer.cs: Return the binary operator tokens
	if necessary. Needs fixing to support negative numbers.

2003-01-14  Martin Baulig  <martin@ximian.com>

	* NEWS: The Debugger is now working on FreeBSD 4.7 :-)

2003-01-14  Martin Baulig  <martin@ximian.com>

	* backends/IInferior.cs (StopSignal): Removed.

	* backends/ptrace/PTrace.cs (SIGSTOP, SIGINT, SIGCHLD, SIGPROF):
	New static properties; initialize them in a static .ctor.

	* backend/ThreadManager.cs (SignalHandler): Ignore SIGPROF as well.

2003-01-14  Martin Baulig  <martin@ximian.com>

	* arch/ArchitectureI386.cs: Keep the registers in sync with
	DebuggerI386Registers in backends/server/i386-arch.h.

2003-01-14  Martin Baulig  <martin@ximian.com>

	* backends/server/i386-linux-ptrace.c: Moved the
	architecture-specific stuff into i386-arch.[ch]; moved the
	portable stuff into i386-ptrace.c, created i386-linux-ptrace.c and
	i386-freebsd-ptrace.c.

2003-01-14  Martin Baulig  <martin@ximian.com>

	* configure.in (server_sources): AC_SUBST this to
	i386-linux-ptrace.c on Linux and to nothing on other systems.

	* backends/server/library.c: If we're on Linux, #include
	"i386-linux-ptrace.c", otherwise don't read a backend at all.

2003-01-14  Martin Baulig  <martin@ximian.com>

	* arch/CoreFileElfI386.cs (get_registers): Read the registers from
	the `.reg' section to make this more portable.

	* arch/bfdglue.c (bfd_glue_core_file_elfi386_get_registers): Make
	this work on FreeBSD 4.7.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* glue/mono-debugger-readline.c: Don't use a GIOChannel here, just
	read from stdin.

	* classes/GnuReadline.cs: We don't need an IOChannel anymore.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* configure.in (--disable-readline): New command line argument to
	disable the use of GNU readline.

	* glue/mono-debugger-readline.c: Don't use readline if we don't
	have it.  Only set the GIOChannel flags on startup.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* glue/bfdglue.c (bfd_glue_core_file_elfi386_get_registers):
	Changed the type of the `regs' argument to `gpointer *' to make it
	portable.

	* glue/bfdglue.h: Don't #include Linux-specific header files.

	* configure.in: Check whether we're actually on Linux.
	(--disable-gui): New command argument to disable building the gui.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs (Name): New public property.  Returns the
	method name from ISymbolLookup.SimpleLookup().

	* frontends/gui/BacktraceView.cs: Use the new StackFrame.Name
	property to get the method name.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* interfaces/ISymbolTable.cs (ISymbolLookup.SimpleLookup): New
	interface method which returns just the name of the method without
	constructing the method itself.

	* arch/Bfd.cs: Read the bfd symbol table and make it available via
	the ISymbolLookup's SimpleLookup() method.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* interfaces/IDisassembler.cs (DisassembleInstruction): Removed
	the version which took a `ref TargetAddress'; the other one now
	returns an AssemblerLine or null on error, it doesn't throw an
	exception any longer.

	* classes/AssemblerMethod.cs (AssemblerLine): Made this a sealed
	class, not a struct so we can pass this by reference and return null.

2003-01-13  Martin Baulig  <martin@ximian.com>

	* classes/AssemblerMethod.cs (AssemblerMethod.AppendOneLine): New
	public method to append a line at the end of the current method.

	* frontends/gui/DisassemblerView.cs: While we don't have a method,
	add all instructions we encounter here.

2003-01-12  Martin Baulig  <martin@ximian.com>

	* classes/NativeMethod.cs: Renamed to AssemblerMethod.

	* classes/AssemblerMethod.cs: New public class.  This derives from
	MethodSource, but we don't need an IMethod any longer.  The API is
	also a bit improved, you can for instance get an array of
	AssemberLines to access individual lines.

	* interfaces/IDisassembler.cs: Return an AssemblerMethod, not an
	IMethodSource.

	* frontends/gui/DisassemblerView.cs: If we don't have a method,
	just display the current instruction.

2003-01-12  Martin Baulig  <martin@ximian.com>

	* widgets/sources/debuggerwidgets/: New directory.

	* widgets/sources/debuggerwidgets/debuggerentry.[ch]: New widget.
	This is derived from GtkEntry and has "previos_line" and
	"next_line" signals which are emitted when the user presses the
	Up/Down keys.

	* frontends/gui/CurrentInstructionEntry.cs: Use the new
	DebuggerEntry widget; if the user presses the Up/Down keys,
	display the next/previous instruction.

2003-01-12  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Make the "Program to Debug" menu
	item work again.

	* frontends/gui/debugger.glade: Removed the "File / Open" and
	"Debug / Restart" menu items.

2003-01-12  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerWidget.cs: Removed all the method stuff;
	we only need it in the SourceManager.

	* frontends/gui/RegisterDisplay.cs (Active): New public property.
	This is set to true while the CPU view is being displayed.

2003-01-11  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs
	(DisassembleInstruction, DisassembleMethod): New public methods.

	* frontends/gui/DisassemblerView.cs: Use StackFrame.DisassembleMethod().

2003-01-11  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceView.cs: Don't derive from DebuggerWidget;
	moved most of the functionality from SourceList here.

	* frontends/gui/SourceList.cs: Derive from SourceView.

	* frontends/gui/DisassemblerView.cs: Derive from SourceView.

	* frontends/gui/SourceManager.cs: Nicely integrate the DisassemblerView.

2003-01-11  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceList.cs: Moved the SourceList class from
	SourceManager.cs into its own file.

2003-01-11  Martin Baulig  <martin@ximian.com>

	* widgets/generator/gtk-api.xml: Removed
	gtk_source_buffer_get_tag_start() and gtk_source_buffer_get_tag_end().

2003-01-11  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added `MODULE ALL module_operations'
	to do the operation on all modules.

2003-01-11  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added `SHOW MODULES' command and
	a `MODULE' command to modify modules.

2003-01-11  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Incremented
	MonoSymbolFileTable.DynamicVersion to 20 for the next Mono release.

2003-01-10  Peter Williams  <peterw@ximian.com>

	* lib/Makefile.in (clean): Remove *.dll on make clean as well as *.exe.
	Also add a rule to regenerate Makefile if Makefile.in changes.

2003-01-08  Peter Williams  <peterw@ximian.com>

	* frontends/scripting/Makefile.in: Make the jay rule not clobber Parser.cs
	if jay fails, and add a rule to regenerate Makefile if needed.

	* backends/ProcessStart.cs: If no directory argument is given, assume
	we're looking in the current directory.

2003-01-06  Martin Baulig  <martin@ximian.com>

	* configure.in: Set version number to 0.1.7 (this is an odd number
	which means that we're still unstable ...)

2003-01-06  Martin Baulig  <martin@ximian.com>

	* doc/debugger-status.txt: Added a "How you can help with the
	debugger" section.

2003-01-06  Martin Baulig  <martin@ximian.com>

	* doc/debugger-status.txt: Added a few notes about the current
	status here.

2003-01-06  Martin Baulig  <martin@ximian.com>

	* doc/debugger-status.txt: Updated this document.

	* doc/roadmap.txt: This one was too much outdated.  Removed.

	* RELEASE-NOTES-0.2.0.txt: Started to document all the cool new
	features here.

2003-01-06  Martin Baulig  <martin@ximian.com>

	* tests/TestManagedTypes.cmd: Added a few more test cases here.

2003-01-06  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/: It's called `accessible', not `accessable'.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* NEWS: Added a new item :-)

	* RELEASE-NOTES-0.1.0.txt: Added a comment about this release
	which never really happened.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* test/test.in: Added `test' target to run all the tests.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* test/D.cs: Renamed to TestManagedTypes.cs.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* lib/Debugger.exe.config.in: Moved here from ../test.
	* lib/Interpreter.exe.config.in: Moved here from ../test.

	* lib/: New directory.  Build everything here instead of in the
	test/ directory.

	* test/: This directory will now contain only tests.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* backends/IInferior.cs (Run): Added `bool redirect_fds' argument;
	if false, we don't redirect stdout and stderr.  This is used in
	the command line interpreter.

2003-01-04  Peter Williams  <peterw@ximian.com>

	* configure.in (READLINE_DEPLIBS): Check to see if libreadline
	needs -ltermcap and if so define it here.

	* glue/Makefile.am (libmonodebuggerreadline_la_LIBADD): Use
	@READLINE_DEPLIBS@ here.

2003-01-05  Martin Baulig  <martin@ximian.com>

	* backends/ProcessStart.cs: The way how the debugger starts the
	JIT has changed; make sure to update your JIT as well.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs: Support non-interactive
	debugging sessions; when reading commands from a file, we don't
	print the current frame when we stop and all errors are always fatal.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added a couple of `assert'
	commands to be used in a test suite.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetObject.cs (Kind): Moved to ITargetType.

	* interfaces/ITargetType.cs (Kind): Moved this property here.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added "length ($a)",
	"upper ($a)" and "lower ($a)" where $a is an array.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added the parent expression
	"print parent ($foo)".

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added the array access
	expression "print $a [5]".

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay (variable_expression): Move the
	`STAR variable_expression' rule above the struct element one.
	Added grouping expression "print (*$c.Object).Foo".

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs (VariableExpression): Added
	`ResolveType' which returns an ITargetType (without accessing the
	ITargetObject if possible).

	* frontends/scripting/Parser.jay: The `show type' command now
	accepts an arbitrary `variable_expression'.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetFundamentalObject.cs: New interface.

	* interfaces/ITargetFundamentalType.cs: New interface.

	* interfaces/TargetObjectKind.cs: New enum.

	* interfaces/ITargetObject.cs (Kind): New property.
	(HasObject, Object): Removed.

	* interfaces/ITargetType.cs (HasObject): Removed.

	* backends/mono-csharp/MonoFundamentalObjectBase.cs: New abstract
	base class for ITargetFundamentalObject.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs (VariableExpression): Added
	`ResolveVariable' method which returns an ITargetObject.

	* interfaces/ITargetPointerObject.cs
	(HasDereferencedObject, DereferencedObject): New properties.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added the dereferencing
	expression "print *$a" where $a is a pointer or a Mono `object'.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Command.cs: Renamed the old
	VariableExpression to VariableReferenceExpression.
	(VariableExpression): New abstract class.

	* frontends/scripting/Parser.jay (variable_expression): This is
	now always a VariableExpression.  Added scripting variables; you
	can now say "set !foo = $b.Test" and then later reference it with
	"print !foo".

2003-01-04  Martin Baulig  <martin@ximian.com>

	* backends/IInferior.cs (Bfd): New public property.

	* backends/Debugger.cs: Create a MonoCSharpLanguageBackend for
	core files from managed applications; use a special construction
	for it, it'll only read the symbol tables once on construction.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Provide a
	second .ctor which takes a CoreFile argument and immediately reads
	the symbol tables.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* configure.in: Link against -liberty as well as -lbfd.

	* classes/IOChannel.cs: Put this into the namespace Mono.Debugger.

	* classes/Utils.cs: Duplicate the contents of GLib.FileUtils here;
	this was the only method which we were using from glib-sharp in
	the backend, so this dependency is now gone.

	* test/Makefile.in: Don't link against glib-sharp.dll in the backend.

2003-01-04  Martin Baulig  <martin@ximian.com>

	* classes/Backtrace.cs: Don't make this abstract; move the stack
	unwind stuff from the SingleSteppingEngine here.

2003-01-03  Martin Baulig  <martin@ximian.com>

	* interfaces/IProcess.cs: Don't implement ITargetNotification.
	(IProcess.GetMemoryMaps): New method.

	* backends/SingleSteppingEngine.cs: Implement ITargetAccess and
	IProcess.

	* backends/TargetMemoryArea.cs: Moved to ../classes.

	* classes/TargetMemoryArea.cs: Moved here from ../backends; the
	.ctor is now public.

2003-01-03  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Breakpoints
	in not-yet-JITed methods are finally working again :-)

2003-01-02  Martin Baulig  <martin@ximian.com>

	* frontends/command-line/Main.cs: If the user gave any command
	line arguments, immediately start the program.

	* frontends/scripting/Parser.jay: The `start' command no longer
	has any default arguments, so it doesn't accept an empty list anymore.

2003-01-02  Martin Baulig  <martin@ximian.com>

	* backends/Process.cs (Process.Inferior): Removed this property.
	The IInferior is now a private interface and is not exposed to the
	outside.

2003-01-02  Martin Baulig  <martin@ximian.com>

	* interfaces/ILanguageBackend.cs: Moved to ../backends.

	* backends/ILanguageBackend.cs: This is now an internal interface.
	(BreakpointHit, GetTrampoline): Take an IInferior, not an
	IProcess argument.

	* classes/Module.cs (Module.Language): The return type of this
	property is now `object'.

	* arch/BfdContainer.cs: Don't implement ILanguageBackend.

2003-01-02  Martin Baulig  <martin@ximian.com>

	* arch/CoreFile.cs: Don't implement IInferior, just IProcess and
	ITargetAccess.

2003-01-02  Martin Baulig  <martin@ximian.com>

	* classes/AddressDomain.cs: New global class.

	* classes/TargetAddress.cs: Use an instance of the new
	AddressDomain class as the domain instead of just an `object'.
	The AddressDomain has a name and an unique ID which is now used in
	all error messages - this helps you a lot if you're evey wondering
	why a comparision fails with an ArgumentException.

2003-01-01  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetMemoryAccess.cs (ITargetMemoryInfo): New
	interface; derives from ITargetInfo; added `AddressDomain' and
	'GlobalAddressDomain' properties.
	(ITargetMemoryAccess): Derive from ITargetMemoryInfo.

	* arch/*.cs: Don't use the IInferior here.

2003-01-01  Martin Baulig  <martin@ximian.com>

	* interfaces/ITargetMemoryAccess.cs (ITargetAccess): New
	interface; derives from ITargetMemoryAccess has has a function to
	read a register.

	* arch/ArchitectureI386.cs: The ctor now takes an ITargetAccess
	and the global address domain; we don't use the IInferior here any
	longer.

2003-01-01  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.cs: Added `disassemble' and
	`disassemble method' commands.

2003-01-01  Martin Baulig  <martin@ximian.com>

	Happy New Year 2003 :-)

	* classes/Backtrace.cs: New public class; we're now using an
	instance of this class instead of a `StackFrame[]' for a backtrace.

	* classes/StackFrame.cs (Register): New public struct.
	(StackFrame.Registers): New abstract property.

	* backends/process.cs (Process.GetBacktrace): Return a Backtrace,
	not a StackFrame[].

	* arch/ArchitectureI386.cs (UnwindStack): New function to unwind
	the stack to get the registers of another stack frame.

2002-12-31  Martin Baulig  <martin@ximian.com>

	This is the end of the Year 2002.

	* frontends/scripting/Parser.jay: Implemented the `$a.Test'
	expression to access a struct/class field.

2002-12-31  Martin Baulig  <martin@ximian.com>

	* classes/StackFrame.cs: Made this class abstract.
	(Handle): Removed this property.
	(LocalsAddress, ParamsAddress): New abstract properties.
	(TargetMemoryAccess): New abstract property.

	* classes/SingleSteppingEngine.cs: Explicitly implement
	ITargetMemoryAccess; we're sending a sync_command for each
	operation.  This is used to read the target's memory.

2002-12-31  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Added `print $name'.

2002-12-31  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Tokenizer.cs: Only recognize the short
	keywords at the start of the line; `$' starts an identifier, so
	don't recognize any keywords in it.

	* frontends/scripting/Parser.jay: Added `show type $name' to show
	the type of a variable/parameter.

2002-12-31  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: The big type
	table rewrite; the JIT now allocates types in continuous memory
	areas rather than using an individually malloc()ed block for each
	type.

2002-12-30  Martin Baulig  <martin@ximian.com>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: The big
	rewrite; we're doing all the symbol table stuff in a background
	thread when we get a notification from the JIT.

	* backends/ThreadManager.cs: If we're debugging a managed
	application, the JIT creates a special debugger thread for us;
	create a DaemonThreadRunner for this thread.

2002-12-30  Martin Baulig  <martin@ximian.com>

	* arch/Bfd.cs: Use the ThreadManager as the TargetAddress domain
	for all symbol table addresses; they must be shared between all
	the threads.

	* interfaces/ILanguageBackend.cs (GetTrampoline, BreakpointHit):
	Added IProcess argument.

	* interfaces/ITargetMemoryAccess.cs
	(ITargetMemoryReader): Added `ReadGlobalAddress'; uses the
	ThreadManager as the TargetAddress'es domain.
	(ITargetMemoryAccess): Likewise.

2002-12-30  Martin Baulig  <martin@ximian.com>

	* backends/DaemonThreadRunner.cs: New public class.

	* backends/ThreadManager.cs: Use the DaemonThreadRunner for the
	pthread library's manager thread.

	* interfaces/ITargetNotification.cs (TargetState): Added `DAEMON'
	for undebuggable daemon threads.

2002-12-30  Martin Baulig  <martin@ximian.com>

	* backends/Debugger.cs: Only create the `csharp_language' if we're
	actually debugging a managed application.

	* backends/server/i386-linux-ptrace.c (server_ptrace_kill): Use
	`kill (handle->pid, SIGKILL)', not `ptrace (PTRACE_KILL)' since
	kill() works from any thread.
	(server_ptrace_finalize): Detach from the target after killing it.

2002-12-29  Peter Williams  <peterw@ximian.com>

	* frontends/gui/DebuggerGUI.cs (Main): Any argument after a
	nonoption argument is not for us, so just add it to args.
	(LoadProgram): Pass in our environment variables to the
	child process.

2002-12-28  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: Transformed all the old
	Expressions into Commands.

2002-12-27  Martin Baulig  <martin@ximian.com>

	* backends/server/breakpoints.h (BreakpointManager): Use a
	GStaticRecMutex instead of a GMutex so we can call
	mono_debugger_breakpoint_manager_lock/unlock recursively from the
	same thread.

	* backends/server/i386-linux-ptrace.c (server_ptrace_read_data):
	Remove breakpoints from the returned memory area.

2002-12-26  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.jay: The `break' command now takes
	an opt_process argument.

2002-12-26  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs: Correctly step over
	breakpoints in the current thread.

	* backends/IInferior.cs
	(EnableAllBreakpoints, DisableAllBreakpoints): Removed.

2002-12-26  Martin Baulig  <martin@ximian.com>

	* inferfaces/IProcess.cs: New interface.  This is implemented by
	backends/Process.cs; it's some kind of a hack because Process.cs
	is in the backends dir, but I need this in Module.cs.

	* classes/ThreadGroup.cs: New public class.  It is used to share
	information about breakpoints and signal handlers between
	different invocations of the same target.

	* classes/Module.cs (AddBreakpoint): Added ThreadGroup argument.
	(EnableBreakpoint, DisableBreakpoint): Likewise.

	* backends/classes/NativeModule.cs
	(EnableBreakpoint, DisableBreakpoint): Enable/disable the
	breakpoint on all threads in the ThreadGroup.

	* backends/SingleSteppingEngine.cs
	(InsertBreakpoint, RemoveBreakpoint): Make this work again.

	* frontends/scripting/Parser.jay: Added `break' command to insert
	a breakpoint.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* arch/Bfd.cs (Bfd.GetDisassembler): Take an IInferior argument
	and actually pass that argument to the BfdDisassembler's ctor; we
	cannot share a disassembler between multiple IInferior's.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs: If we're stepping one instruction
	and receive signal which we're supposed to ignore, the stepping operation
	has already been completed and we don't need to resume the target.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* frontends/gui/ProcessManager.cs: Added thread manager GUI.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* classes/DebuggerTextWriter.cs: New abstract base class.

	* frontends/scripting/ScriptingContext.cs: Use two
	DebuggerTextWriter's for the debugger and inferior output.

	* frontends/gui/OutputWindow.cs: Rewrote this to use the new
	DebuggerTextWriter.  We're now using a separate output window
	for the inferior output and error output is displayed in red.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerWidget.cs: Renamed SetBackend -> SetProcess;
	the DebuggerBackend can already be set in the ctor, so this only
	takes a Process argument.

2002-12-25  Martin Baulig  <martin@ximian.com>

	* classes/NativeMethod.cs: Create the ISourceBuffer in the ctor.

	* frontends/gui/SourceView.cs: Make this work again.

2002-12-24  Martin Baulig  <martin@ximian.com>

	This is my last commit for today, so merry x-mas !

2002-12-24  Martin Baulig  <martin@ximian.com>

	The Monday Night Hack of week #52 - the BreakpointManager is done.

	* backends/BreakpointManager.cs: New file.  This is just a wrapper
	around the unmanaged API in backends/server/breakpoints.[ch].

	* backends/server/breakpoints.[ch]: New files.
	* backends/server/i386-linux-ptrace.c: Use a breakpoint manager
	which is shared between all threads of the same application.

	* backends/ThreadManager.cs
	(AcquireGlobalThreadLock, ReleaseGlobalThreadLock): Don't
	lock/unlock the calling process.

	* backends/SingleSteppingEngine.cs: Breakpoints are almost working
	again; we can now safely hit a breakpoint in another thread
	(except of a few race conditions which aren't fixed yet).

2002-12-23  Martin Baulig  <martin@ximian.com>

	* frontends/gui/SourceManager.cs (SourceManager): Added events
	`MethodInvalidEvent', `MethodChangedEvent', `FrameChangedEvent'
	and `FramesInvalidEvent'.
	(SourceList): Connect these events on the SourceManager, not on
	the Process since their handlers must be called from the gtk# thread.

	* frontends/gui/DebuggerWidget.cs
	(RealMethodChanged, RealMethodInvalid): New protected virtual
	methods which may be called from any thread.
	(MethodChanged, MethodInvalid): New protected virtual methods
	which are guaranteed to be called from the gtk# thread.

2002-12-23  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerWidget.cs
	(RealFrameChanged, RealFramesInvalid, RealStateChanged): New
	protected virtual methods which may be called from any thread.
	(FrameChanged, FramesInvalid, StateChanged): New protected virtual
	methods which are guaranteed to be called from the gtk# thread.

2002-12-23  Martin Baulig  <martin@ximian.com>

	* class/ThreadNotify.cs: This can now have multiple listeners
	(since file descriptors are a precious resource).

2002-12-23  Martin Baulig  <martin@ximian.com>

	* frontends/gui/DebuggerWidget.cs: Added `DebuggerGUI' argument;
	get the Glade.XML from an internal property of the gui.
	* frontends/gui/SourceManager.cs: Derive from DebuggerWidget.

2002-12-15  Martin Baulig  <martin@ximian.com>

	* frontends/gui/RegisterDisplay.cs: Make this working again.
	* frontends/gui/CurrentInstructionEntry.cs: Likewise.

2002-12-15  Martin Baulig  <martin@ximian.com>

	* frondends/command-line/Interpreter.cs: Use the new command line
	interface here.

2002-12-15  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs: Added a global thread lock mechanism.

2002-12-14  Martin Baulig  <martin@ximian.com>

	* backends/SingleSteppingEngine.cs: All step commands now take an
	additional `bool synchronous' argument and return true on success;
	if the `synchronous' argument is set, the engine waits until the
	operation has been completed before returning.

2002-12-14  Martin Baulig  <martin@ximian.com>

	* backends/ThreadManager.cs: New file.

2002-12-13  Martin Baulig  <martin@ximian.com>

	* backends/server/i386-linux-ptrace.c: Added hardware breakpoints.

	* backends/SingleSteppingEngine.cs: Use a hardware breakpoint for
	the temporary breakpoints; this'll avoid some bigger headaches
	with threads.

2002-12-13  Martin Baulig  <martin@ximian.com>

	WARNING: The Debugger is currently more or less broken since I
	haven't finished all this stuff yet.

	Rewrote and redesigned the SingleSteppingEngine to do all the
	stepping in a background thread.

	* backends/server/*, backends/ptrace/PTrace.cs: Simplified this
	ugly async stuff; since we're now running in our own thread, we
	can just wait for our child.

2002-12-13  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/Parser.cs: Added `finish' command.

	* frontends/command-line/Interpreter.cs: Commented out almost
	everything in this file; it'll go away really soon.

	* classes/ThreadNotify.cs: New class; this is basically the same
	than Gtk.ThreadNotify, but we can't link against gtk in the
	backend.

	* classes/IOChannel.cs (IODataInputChannel, IODataOutputChannel):
	Added these classes for data channels.

	* backends/Process.cs, backends/Debugger.cs: Moved all
	process-specific stuff to the new `Process' class.

	* frontends/gui/DebuggerWidget.cs (DebuggerWidget.SetBackend):
	Added `Process process' argument; use the Process everywhere
	instead of the DebuggerBackend.

2002-12-11  Martin Baulig  <martin@ximian.com>

	* backends/server/i386-linux-ptrace.c: Get the registers each time
	the target stops and store them.

2002-12-11  Martin Baulig  <martin@ximian.com>

	* backends/ProcessStart.cs: New class.  Moved the argv and envp
	stuff here; this class specifies how to launch an application.

2002-12-10  Martin Baulig  <martin@ximian.com>

	* backends/Debugger.cs (DebuggerBackend.Run): This method
	now returns a new Process.
	(DebuggerBackend.ReadCoreFile): Likewise.

	* backends/Process.cs: Moved a few more things from Debugger.cs.

2002-12-10  Martin Baulig  <martin@ximian.com>

	Started to split DebuggerBackend into DebuggerBackend and Process.
	Later one, a DebuggerBackend will have a Process for each thread
	of the application being debugged.

	* backends/Process.cs: New public class.

2002-12-10  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/ScriptingContext.cs: Renamed `Process' to
	`ProcessHandle' since I'm about to create backends/Process.cs.

2002-12-08  Martin Baulig  <martin@ximian.com>

	* class/ObjectCache.cs: Use one global cleanup thread rather than
	one thread per object.

2002-12-08  Radek Doulik  <rodo@ximian.com>

	* glue/mono-debugger-readline.h: include stdio.h - fixes
	compilation on rh8, where readline .h file doesn't include it and
	FILE is then there undefined

2002-12-01  Martin Baulig  <martin@ximian.com>

	* frontends/scripting/: Added new scripting interface.

2002-11-30  Martin Baulig  <martin@ximian.com>

	* glue/mono-debugger-readline.[ch]: New files.

	* classes/GnuReadLine.cs: Added interface to GNU Readline.

2002-11-28  Martin Baulig  <martin@ximian.com>

	* frontends/command-line/Main.cs: Added new stand-alone command
	line interpreter.

	* frontends/command-line/Interpreter.cs: Improved this a bit.

2002-10-18  Martin Baulig  <martin@gnome.org>

	* RELEASE-NOTES-0.1.0.txt: Added preliminary release notes.

2002-10-17  Martin Baulig  <martin@gnome.org>

	* backends/SingleSteppingEngine.cs: Don't change the state to
	running unless the stepping operation actually succeeded.  Don't
	allow any stepping operations while sending out the event.

2002-10-17  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetLocation.cs, class/TargetLocation.cs: Removed.
	* backends/class/RelativeTargetLocation.cs: Removed.
	* backends/class/TargetStackLocation.cs: Removed.

	* interfaces/ITargetObject.cs (ITargetObject.Location): Removed
	this property, not all variables have an address.

	* backends/mono-csharp/MonoTargetLocation.cs: New class.
	* backends/mono-csharp/MonoStackLocation.cs: New class.
	* backends/mono-csharp/MonoRegisterLocation.cs: New class.
	* backends/mono-csharp/MonoRelativeTargetLocation.cs: New class.

	* backends/mono-csharp/: Use the new MonoTargetLocation code.

	* classes/StackFrame.cs (StackFrame.Level): New property.

2002-10-17  Martin Baulig  <martin@gnome.org>

	* interface/ILanguage.cs: Removed.

2002-10-15  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Check state of the backend before
	issuing a command, as even if we grey menu items, events can be
	queued.

	Reactivate the sensitivity code.

	Desensitize `Program to Debug' when running.

	* frontends/gui/ProgramToDebug.cs: Display the current settings,
	and allow the user to change those, instead of re-entering them. 

2002-10-14  Martin Baulig  <martin@gnome.org>

	* configure.in: We don't need to check for gdb anymore.

	* test/Debugger.exe.config.in: The configuration file is now
	finally called `Debugger.exe.config'.

2002-10-13  Martin Baulig  <martin@gnome.org>

	* class/SourceInfo.cs: Only read the methods when they're needed.

2002-10-12  Martin Baulig  <martin@gnome.org>

	Implemented a SymbolTableManager which maintains all the symbol
	tables and which uses a separate thread to update things in the
	background.

	Since reading the source list is a very CPU consuming operation
	and the source list is only needed when inserting a new breakpoint,
	it is now also read in the background thread.

	* class/SymbolTableManager.cs: This class now maintains all the
	symbol tables.  It's using a separate thread to update things in
	the background.

	* class/AsyncQueue.cs: New class.

	* class/SymbolTableCollection.cs: Added Lock() and UnLock()
	methods to avoid updates while adding several symbol tables.

	* arch/DwarfReader.cs: This class is now thread-safe.

	* interfaces/ILanguageBackend.cs (ILanguageBackend.SymbolTable):
	Removed, the SymbolTableManager now holds all the symbol tables.

	* backends/Debugger.cs: Use the SymbolTableManager.

2002-10-12  Martin Baulig  <martin@gnome.org>

	* class/Module.cs: Added property to get the ISymbolTable.

	* backends/Debugger.cs: Do all the symbol table handling here
	based on the module list.  Modifying the Module.StepInto property
	of shared libraries will now actually work.

	* backends/BfdModule.cs: Only report the symbols being loaded if
	we have a DwarfReader.

2002-10-11  Martin Baulig  <martin@gnome.org>

	* backends/server/i386-linux-ptrace.c: If the target received a
	signal, remember it and pass it to the target the next time it is
	resumed.  Also added a function to modify/clear the signal.

	* backends/Debugger.cs (DebuggerBackend.ClearSignal): New method
	to clear the signal.

2002-10-11  Martin Baulig  <martin@gnome.org>

	* arch/CoreFile.cs (CoreFile.GetMemoryMaps): New method to get a
	TargetMemoryArea[] for the core file's sections.

	* frontends/gui/MemoryMapsDisplay.cs: Added memory map display.

2002-10-11  Martin Baulig  <martin@gnome.org>

	* backends/TargetMemoryArea.cs: New struct.

	* backends/IInferior.cs (IInferior.GetMemoryMaps): New method to
	get the memory maps as an array of TargetMemoryArea's.

	* frontends/gui/HexEditor.cs: Use the memory maps to ensure that
	we're only accessing mapped memory, allow editing of the memory.
	You need a new Gtk# for this.

2002-10-11  Martin Baulig  <martin@gnome.org>

	* frontends/gui/HexEditor.cs: Added hex editor.

2002-10-11  Martin Baulig  <martin@gnome.org>

	* frontends/gui/ModuleDisplay.cs: Added module display.

2002-10-10  Martin Baulig  <martin@gnome.org>

	Improved core file support.

	* backends/IInferior.cs (IInferior.UpdateModules): New method to
	reload the modules.

	* backends/Debugger.cs (Backend.CurrentFrame, Backend.CurrentMethod,
	Backend.GetBacktrace): Don't use the SingleSteppingEngine if this
	is a core file.

	* arch/Bfd.cs: Improved support for core files and shared libraries.

2002-10-09  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/VariableDisplay.cs: Add a few GUI touchups to the
	variable display.

2002-10-08  Martin Baulig  <martin@gnome.org>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoCSharpLanguageBackend): Don't derive from SymbolTable but use
	a separate symbol table. This allows us to release the symbol
	table completely when the target exits.

	* backends/Debugger.cs (InferiorStateNotify): Removed this event,
	use the StateChanged event instead.

2002-10-05  Martin Baulig  <martin@gnome.org>

	* frontends/gui/: Display the SourceStatusbar while the source
	code is visible and the TargetStatusbar while the CPU view is
	visible.

2002-10-05  Martin Baulig  <martin@gnome.org>

	* frontends/gui/SourceView.cs: Made this class abstract.

	* frontends/gui/SourceManager.cs: Use Gtk.SourceView.

2002-10-03  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Hook up the signal and show an
	error message.

2002-10-02  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/SourceManager.cs: Add code to switch to a newly
	loaded file by default.

	* frontends/gui/RegisterDisplay.cs: Allow values to be changed,
	rewrite code to minimize duplicated code.

	Turn off advanced mode, so segment registers are not shown

	* backends/IInferior.cs: New property to tell if we can update the
	registers or not.
	
	* frontends/gui/Report.cs: New file, requires an updated Gtk#
	
	* arch/ArchitectureI386.cs: Add TOP constant.

2002-10-02  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetNotification.cs
	(ITargetNotification.DebuggerOutput): New event to emit diagnostic
	messages and errors.
	(ITargetNotification.DebuggerError): New event to emit non-fatal
	exceptions.

	* backends/Debugger.cs: Improved error handling a bit, we emit a
	`DebuggerError' event if we could not load the symbol table
	instead of throwing an exception.

2002-10-02  Martin Baulig  <martin@gnome.org>

	* backends/IInferior.cs (IInferior.SetRegister, SetRegisters):
	New methods to set registers.

	* backends/Debugger.cs (DebuggerBackend.SetRegister, SetRegisters):
	New methods to set registers.

2002-10-02  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetStructType.cs (ITargetStructType.Methods):
	New property to get the methods.
	(ITargetMethodInfo): New interface to represent a method.

	* interfaces/ITargetStructObject.cs (ITargetStructObject.PrintObject):
	New method to call a method in the target to print the object.

2002-10-01  Miguel de Icaza  <miguel@ximian.com>

	* frontends/command-line/Interpreter.cs: Update online help.

	* frontends/gui/RegisterDisplay.cs: Love touch ups, it now works
	as intended.

	* backends/Debugger.cs: Add a new event to notify when the
	inferior is set/reset.
	
	* frontends/gui/RegisterDisplay.cs: Use a custom view for the x386
	view of the register, so we can modify the flags at some point,
	and also to encourage the creation of target-specific register
	views that make sense for that particular target. 

	* frontends/gui/Utils.cs: Bug fix.

2002-10-01  Martin Baulig  <martin@gnome.org>

	* backends/mono-csharp/: Make "boxing" of non-valuetypes actually
	work.  Added exception support to the properties.

2002-10-01  Martin Baulig  <martin@gnome.org>

	Reworked the module stuff, implemented breakpoints and start to
	add support for properties.

	* interfaces/IModule.cs: Removed, has been replaced with class/Module.cs.

	* class/Module.cs: New public class, replaces IModule.  This class
	maintains all the breakpoints.

	* interfaces/ISymbolTable.cs (ISymbol): Removed this interface.

	* class/SingleSteppingEngine.cs: Moved the single-stepping engine
	into its own class.  This is now also doing all the method lookups.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* arch/BfdContainer.cs: New class to hold all Bfd instances of the
	DebuggerBackend.  It also maintains the module table and allows it
	to be shared across different invocations of the target.

	* interfaces/ISymbolTable.cs: Started to work on lookup-by-name.
	(ISymbol): New interface.
	(ISymbolLookup): Added `ISymbol Lookup (string name)'.
	(ISymbolTable): Added HasSymbols and Symbols properties.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* interfaces/IModule.cs (IModule.StepInto): New property to
	specify whether to enter methods in this module while
	single-stepping.

	* interfaces/IMethod.cs (IMethod.Language): Removed.
	(IMethod.Module): Added.

	* backends/ptrace/PTrace.cs (PTraceInferior.Step): Don't enter a
	method if it's IModule.StepInto is false.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* interfaces/IModule.cs: New interface.

	* backends/Debugger.cs (DebuggerBackend.Modules): New property to get a
	list of loaded modules.
	(DebuggerBackend.ModulesChangedEvent): New event.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* class/MethodBase.cs: Don't implement IMethodSource, added
	protected SetSource() method to set the IMethodSource.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* backends/*, arch/*: Removed the SourceFileFactory argument everywhere.

2002-09-27  Martin Baulig  <martin@gnome.org>

	* frontends/gui/SourceManager.cs: If ISourceBuffer.HasContents is false,
	ISourceBuffer.Name is a filename which we need to load.

	* backends/mono-csharp/CSharpMethod.cs: Don't lookup source files.
	* arch/DwarfReader.cs: Likewise.

2002-09-27  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/SourceManager.cs: New file, it will hold the
	source code manager, and currently also hosts the source listing
	widget (it will replace the old code in the future, but I have
	ketp it for compatibility reasons).

2002-09-27  Martin Baulig  <martin@gnome.org>

	* interfaces/IArchitecture.cs (IArchitecture.GetBreakpointTrampolineData):
	New method to read the data from a JIT breakpoint trampoline.

	* inferfaces/ILanguageBackends.cs (ILanguageBackend.BreakpointHit): New
	method.  The language backend may decide to continue the target if hit
	a breakpoint.

	* backends/ptrace/PTrace.cs (PTraceInferior.Continue): Don't check
	the `until' address, this is now done in DebuggerBackend.
	* backends/Debugger.cs (DebuggerBackend.Continue): Moved the check
	here.

	* backends/Debugger.cs (DebuggerBackend.frame_changed): If we hit
	a breakpoint and the language backend told us to continue, do so.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs
	(MonoCSharpLanguageBackend.BreakpointHit): If we're in the
	breakpoint trampoline, get its data but ignore the breakpoint for
	the moment.

	* backends/server/i386-linux-ptrace.c (server_ptrace_child_stopped):
	Send a `(MESSAGE_CHILD_HIT_BREAKPOINT, 0)' if we hit an unknown
	breakpoint, ie. there was an `int 3' in the code which we did not insert.

2002-09-26  Martin Baulig  <martin@gnome.org>

	* classes/ILDisassembler.cs: Removed.  We use the .il which has
	been created by the JIT as source code.

2002-09-26  Martin Baulig  <martin@gnome.org>

	* backends/Debugger.cs (DebuggerBackend.LoadNativeSymbolTable): New public
	property.  Only load the native symbol table if this is set.
	
2002-09-26  Martin Baulig  <martin@gnome.org>

	* interfaces/ISourceBuffer.cs (ISourceBuffer.HasContents): New property.

	* backends/Debugger.cs: Make the source factory optional and
	create an ISourceBuffer without contents if we don't have it.

2002-09-23  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetArray.cs: New interface.

	* interfaces/ITargetObject.cs: Replaced location with type, added HasObject
	and Object.

	* interfaces/ITargetType.cs (ITargetType.GetObject): Removed.

	* backends/classes/RelativeTargetLocation.cs: New class.

	* backends/mono-csharp/: Improved the type system; we're now supporting
	strings and arrays.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* README: Added information about the directory layout.

	* NEWS: Started to maintain a NEWS file :-)

2002-09-21  Martin Baulig  <martin@gnome.org>

	* backends/classes/: New directory.
	* backends/classes/TargetReader.cs: Moved here.
	* backends/classes/TargetStackLocation.cs: Moved here.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs (SymbolTableException):
	This exception already exists in class/SymbolTableException.cs.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* backends/StepFrame.cs: Moved StepFrame here and made it `public sealed'.

	* backends/IInferior.cs (IStepFrame): We don't need this interface.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* backends/Debugger.cs (TargetAsyncResult): Make this a private nested class
	inside PTraceInferior.

	* backends/TargetReader.cs: Moved TargetInfo and TargetReader here.

	* backends/ptrace/PTrace.cs: Renamed the class to PTraceInferior.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* arch/Bfd.cs, BfdDisassembler.cs, DwarfReader.cs: Made these classes internal.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* classes/StackFrame.cs: Moved here and made `public sealed'.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/ISourceLocation.cs: Removed.
	* classes/SourceLocation.cs: This is the only implementation.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/IBreakPoint.cs: Killed.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/ISourceFile.cs: Removed.
	* classes/SourceFileFactory.cs: This is the only implementation.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/ISymbolTable.cs (ISymbolTableCollection): Removed this interface.
	* classes/SymbolTableCollection.cs: This is the only implementation.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/IDebuggerBackend.cs: Removed.
	* interfaces/IStackFrame.cs: Removed.
	* interfaces/IInferior.cs: Moved to ../backends/.

	* classes/IOChannel.cs: Moved here from ../backends/ptrace/ and made public.

	* classes/Variable.cs: Removed.

	* backends/StackFrame.cs: Moved the StackFrame class here and made it public.
	* backends/IInferior.cs: Moved here from ../interfaces/.
	* backends/TargetStackLocation.cs: Moved here from ../classes/.
	* backends/Debugger.cs: It's now called `DebuggerBackend'.

	* test/Makefile.in: Create Mono.Debugger.dll and Mono.Debugger.Backend.dll.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/ILanguageCSharp.cs: Killed.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs: Make this
	work with the new symbol table format.

	* arch/CoreFile.cs, CoreFileElfI1386.cs: Reading memory and
	getting a backtrace works.

2002-09-21  Martin Baulig  <martin@gnome.org>

	* interfaces/IMethod.cs (IMethod.Locals): New property.

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs (MonoMethod):
	Added support for local variables.

2002-09-20  Martin Baulig  <martin@gnome.org>

	* interfaces/IStackFrame.cs (IStackFrame.GetLocalVariableLocation): Removed.
	(IStackFrame.GetParameterLocation): Removed.
	(IStackFrame.TargetMemoryAccess): New property.

	* interfaces/ITargetObject.cs: New interface.

2002-09-20  Martin Baulig  <martin@gnome.org>

	* interfaces/IInferior.cs (IInferiorStackFrame.Inferior): New property.

	* interfaces/ITargetLocation.cs (ITargetLocation.ReValidate): Removed.
	(ITargetLocation.Handle): New property.

	* interfaces/ITargetMemoryAccess.cs
	(ITargetMemoryReader.Size): New property.
	(ITargetMemoryReader.Contents): New property.
	(ITargetMemoryAccess.GetMemoryStream): Removed.

	* backends/mono-csharp/MonoVariable.cs: We can now read a parameter as a blob.
	
2002-09-20  Martin Baulig  <martin@gnome.org>

	Started to add support for variables.

	* interfaces/ITargetType.cs: New public interface.

	* interfaces/IVariable.cs: New public interface.

	* interfaces/IMethod.cs (IMethod.Parameters): New property.

2002-09-20  Martin Baulig  <martin@gnome.org>

	* backends/mono-csharp/MonoCSharpLanguageBackend.cs (MonoMethod):
	Set IMethod.MethodHandle to the method's Reflection.MethodBase.
	
2002-09-20  Martin Baulig  <martin@gnome.org>

	Started to add support for core files.

	* interfaces/IDebuggerBackend.cs (IDebuggerBackend.ReadCoreFile):
	New method to read a core file.

	* interfaces/ITargetNotification.cs (ITargetNotification): Added
	TargetExited event.
	(TargetState): Added CORE_FILE.

	* arch/CoreFile.cs: New abstract class to read core files.

	* arch/CoreFileElfI386.cs: Core file reader for ELF files on the i386.

	* frontends/gui/DebuggerGUI.cs (.ctor): Create the interpreter
	here since otherwise the `Quit' command won't work.
	(LoadProgram): HACK: if the first argument is `core' read a core
	file `thecore' in the current directory.

2002-09-19  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetNotification.cs: New file. Moved TargetState
	and ITargetNotification here.

	* interfaces/IInferior.cs: Put this into the Mono.Debugger.Backends
	namespace.

2002-09-19  Martin Baulig  <martin@gnome.org>

	* backends/Debugger.cs: Only dispose the current stack frame if it
	has actually changed.

2002-09-19  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetLocation.cs: Make this work again.

	* classes/TargetLocation.cs: This is now an abstract base class.

	* classes/TargetStackLocation.cs: New class to represent an
	address on the stack.

	* interfaces/IMethod.cs: Added HasMethodBounds, MethodStartAddress
	and MethodEndAddress.

	* interfaces/IStackFrame.cs: Added GetLocalVariableLocation and
	GetParameterLocation.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* interface/IStackFrame.cs: Added FrameInvalid event.

	* interface/IDebuggerBackend.cs (IDebuggerBackend.GetBackTrace):
	Removed all arguments; this method will cache the return value and
	emit the FrameInvalid event on each of the returned frames.

	* interface/IInferior.cs (IInferior.GetBackTrace): Return an array
	of IInternalBackTrace's;  this is an internal interface and should
	not be used outside of Debugger.cs.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* interface/IInferior.cs, IDebuggerBackend.cs: Added Stop() method.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* interface/IArchitecture.cs: Made this interface public.

	* interface/IDebugerBackend.cs (IDebuggerBackend.Inferior): Removed
	this property, the IInferior interface is a private interface.
	You implement it when writing a new debugger backend, but it
	shouldn't be used outside of Debugger.cs.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* interfaces/IDebuggerBackend.cs: Added properties to specify the
	application to debug, its command line arguments, environment and
	current working directory.

	* backend/Debugger.cs: The ctor no longer needs command line
	arguments and application name, they're set with the properties.

	* frontends/gui/DebuggerGUI.cs: Create a Debugger instance on
	startup and use the new properties to set the application.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* frontends/gui/DebuggerGUI.cs (DebuggerGUI.LoadProgram): Call
	SetBackend() on the source_view.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* class/ObjectCache.cs: New public class.  Keeps a hard reference
	to an object and transforms the hard reference into a weak
	reference after a timeout.

	* class/DwarfReader.cs, SymbolTable.cs, MethodBase.cs, MethodSource.cs:
	Use the new ObjectCache.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* class/TargetException (TargetException): Made this abstract.

	* class/InternalError.cs: New exception class.

2002-09-18  Martin Baulig  <martin@gnome.org>

	* interfaces/ITargetMemoryAccess.cs (ITargetMemoryReader.BinaryReader):
	Return a TargetBinaryReader instead of a BinaryReader.

	* backends/debugger.cs (TargetReader): Derive from TargetBinaryReader.

	* class/TargetBinaryReader.cs: New public class.  Moved most of
	DwarfReader.DwarfBinaryReader's functionality here.  Implement the
	Mono.CSharp.Debugger.IMonoBinaryReader interface so that we can
	pass an instance of this class to the symbol reader.

	* backends/gdb/*: Removed, nothing useful there anymore.

2002-09-18  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Rework the bootstrap phase for the
	program, now it is posisble to specify the program and arguments
	from a dialog box, or to pass them on the command line.

	Now it guesses the kind of program (managed/unmanaged) without
	having to use the `native' prefix.

	Added a few more event hooks to the UI.

	* frontend/gui/Everything that depends on DebuggerWidget: It no
	longer takes a backend argument.  The backend is now configured by
	a SetBackend virtual method.  If you want to hook up to this, you
	have to override the method, and extend it.

	* frontend/gui/debugger.glade: New user interface similar to
	the VisualStudio debugger.

2002-09-17  Miguel de Icaza  <miguel@ximian.com>

	* frontends/gui/DebuggerGUI.cs: Use embeded debugger.glade
	resource instead of loading from the configuration data.

	* test/Makefile.in: Embed debugger.glade.

