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.

