2002-10-18  Kevin Buettner  <kevinb@redhat.com>

	* gdbint.texinfo (Address Classes): Fix problems with insertion
	of ``{'' and ``}'' in example.

2002-10-17  Kevin Buettner  <kevinb@redhat.com>

	* gdbint.texinfo (Address Classes): New section.
	(Target Conditionals): Document ADDRESS_CLASS_NAME_TO_TYPE_FLAGS,
	ADDRESS_CLASS_NAME_TO_TYPE_FLAGS_P, ADDRESS_CLASS_TYPE_FLAGS,
	ADDRESS_CLASS_TYPE_FLAGS_P, ADDRESS_CLASS_TYPE_FLAGS_TO_NAME, and
	ADDRESS_CLASS_TYPE_FLAGS_TO_NAME_P.

2002-10-11  Klee Dienes  <kdienes@apple.com>

	* gdb.texinfo (Registers): Mention vector registers as well as
	floating registers in the documentation for 'info registers' and
	'info all-registers'.

2002-10-11  Daniel Jacobowitz  <drow@mvista.com>

	* gdbint.texinfo (CPLUS_MARKER): Remove item.

2002-10-03  Jeff Johnston  <jjohnstn@redhat.com>

	* gdbint.texinfo (Item Output Functions): Add new ui_out_field_fmt_int
	interface definition.

2002-10-03  Marko Mlinar   <markom@opencores.org>

	* gdb.texinfo (Target Commands): Add or1k target specific
	commands.
	* gdb.texinfo (Contributors): Add myself to the contributors list.

2002-10-01  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Mode Options): Update --interpreter option.  "mi2"
	and "mi1" instead of "mi1" and "mi0".

2002-09-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* gdb.texinfo (Packets): Fix typos "alligned".
	Correct z3/Z3 description.  Correct z4/Z4 title.

2002-09-27  Andrew Cagney  <ac131313@redhat.com>

	* all-cfg.texi: Use @sc for GDB and GCC.  Update copyright.

2002-09-25  Kevin Buettner  <kevinb@redhat.com>

	* gdb.texinfo: Use GNU/Linux instead of Linux.

2002-09-25  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Packets): Replace @samp{} with ``an empty string''.

2002-09-24  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo: Replace @example with @smallexample.

2002-09-20  Kevin Buettner  <kevinb@redhat.com>

	From Eli Zaretskii  <eliz@is.elta.co.il>:
	* gdb.texinfo (Character Sets): Use @smallexample instead of
	@example.  Use GNU/Linux instead of Linux.

2002-09-20  Jim Blandy  <jimb@redhat.com>

	* gdb.texinfo: Add character set documentation.

2002-09-19  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Packets): Revise `z' and `Z' packet documentation.
	(Packets): Add cross reference from `b' packet to `z' packets.

2002-09-19  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Maintenance Commands): Document ``maint
	internal-error'' and ``maint internal-warning''.

	* gdbint.texinfo (Target Architecture Definition): Revise
	description of STACK_ALIGN.  Add description of FRAME_ALIGN.

2002-09-19  Joel Brobecker  <brobecker@gnat.com>

	* gdbint.texinfo (Target Conditionals): Document the new
	NAME_OF_MALLOC macro.

2002-09-05  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Contributors): Mention 5.2 and 5.3 release
	engineer.

2002-09-02  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.texinfo (TUI Overview): Document status line fields.

2002-09-02  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.texinfo (TUI Commands): Document info win command.

2002-09-01  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.texinfo (TUI Overview): Document breakpoint markers.

2002-09-01  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.texinfo (TUI Single Key Mode): Document new SingleKey mode.
	(TUI Keys): Likewise.

2002-08-25  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Examples): Use ``->'' for a packet send and ``<-''
	for a packet receive.

2002-08-25  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (clean): Move to end of file.
	(distclean, maintainer-clean, realclean): Ditto.
	(mostlyclean): Move rule to end of file.  Use GDB_TEX_TMPS,
	GDBINT_TEX_TMPS, STABS_TEX_TMPS.
	(gdb.dvi, gdb.pdf): Do not cleanup TeX temp files after texi2dvi.
	(gdbint.dvi, gdbint.pdf, stabs.dvi, stabs.pdf): Ditto.

2002-08-24  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (GDBINT_TEX_TMPS): Define.
	(gdbint.dvi, gdbint.pdf): Use
	(GDB_TEX_TMPS): Define.
	(gdb.dvi, gdb.pdf): Use.
	(STABS_TEX_TMPS): Define.
	(stabs.dvi, stabs.pdf): Use.
	(GDB_DOC_SOURCE_INCLUDES): New macros.
	(GDB_DOC_BUILD_INCLUDES, GDB_DOC_FILES): New macros.
	(GDBINT_DOC_FILES_INCLUDES): New macros.
	(GDBINT_DOC_BUILD_INCLUDES): New macros.
	(GDBINT_DOC_FILES, STABS_DOC_SOURCE_INCLUDES): New macros.
	(STABS_DOC_BUILD_INCLUDES, STABS_DOC_FILES): New macros.
	(SFILES_DOC, SFILES_INCLUDED, SFILES_LOCAL): Delete macros.
	(links2roff): Replace SFILES_INCLUDED with
	GDB_DOC_SOURCE_INCLUDES.
	(gdb.dvi, gdb_toc.html, gdb.pdf, gdb.info): Update dependencies.
	(gdb.me, gdb.mm, gdb.ms): Update dependencies.
	(gdbint.dvi, gdbint_toc.html, gdbint.pdf, gdbint.info): Update
	dependencies.
	(stabs.info, stabs_toc.html, stabs.pdf, stabs.dvi): Update
	dependencies.
	(gdbmi.texinfo): Delete rule.
	(inc-hist.texinfo): Delete rule.
	(rluser.texinfo): Delete rule.

2002-08-23  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Update
	STORE_RETURN_VALUE, mention regcache.

2002-08-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Document
	print_registers_info.  Note that DO_REGISTERS_INFO is deprecated.

2002-08-19  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Remote Protocol): Reformat.  Use cross references.
	Fix minor typos.  Add index entries.

2002-08-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Data): Add ``Vector Unit'' to menu.

2002-08-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Document
	PRINT_VECTOR_INFO.
	* gdb.texinfo (Vector Unit): Document "info vectors" command.

2002-08-13  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Maintenance Commands): Document "maint print
	registers", "maint print raw-registers" and "maint print
	cooked-registers".

2002-08-08  Grace Sainsbury  <graces@redhat.com>

	From Mark Salter:            
	* gdb.texinfo (Protocol): Document T packet extension to
	allow watchpoint address reporting.

2002-08-03  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Dump/Restore Files): Move `[]' to outside of @var.

2002-08-01  Andrew Cagney  <cagney@redhat.com>

	* stabs.texinfo, gdb.texinfo, gdbint.texinfo: Obsolete references
	to CHILL.

2002-08-01  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Coding): Revise section "Include Files".

2002-07-24  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo: Obsolete references to m88k.
	* gdb.texinfo: Ditto.

2002-07-10  Joel Brobecker  <brobecker@gnat.com>

	* gdbint.texinfo (Create a release candiate): Add the location
	where the proper version of autoconf can be retrieved.

2002-07-09  Don Howard  <dhoward@redhat.com>

	* gdb.texinfo (Command Files): Further describe the behavior of
	sourced command files.

2002-06-27  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (User Interface): ISO C rather than ISO-C.
	(Coding): Clarify ISO C version that GDB assumes.

2002-06-26  Tom Tromey  <tromey@redhat.com>

	* gdbint.texinfo (User Interface): Mention add_setshow_cmd and
	add_setshow_cmd_full.

2002-06-25  Don Howard  <dhoward@redhat.com>

	* gdb.texinfo (Memory Region Attributes): Document new behavior
	for 'mem' command.

2002-06-11  Jim Blandy  <jimb@redhat.com>

	* gdb.texinfo (Symbols): Update documentation for `info source'
	command.

	* gdb.texinfo (Macros): Call the command `info macro', not
	`show macro'.

2002-06-09  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Coding): Add section ``Per-architecture module
	data''.

2002-06-09  Mark Kettenis  <kettenis@gnu.org>

	* gdbint.texinfo (Target Architecture Definition): Document
	GDB_OSABI_GO32 and GDB_OSABI_NETWARE.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Fix typos in @itemize @bullet
	lists.

2002-06-08  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Revise the section ``Cut the
	Branch''.

2002-06-01  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Add section
	``Converting an existing Target Architecture to Multi-arch''.

2002-05-30  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Rename ``Obsoleting any code''
	to ``Obsoleting code''.  Revise.

2002-05-17  Jim Blandy  <jimb@redhat.com>

	* gdb.texinfo (C Preprocessor Macros): New chapter.
	Include it in the main menu.
	(Contributors): Credit Jim Blandy with macro support.
	(Compilation): Explain how to get macro information into the
	executable.
	(Expressions): Note that preprocessor macros are expanded.

2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.texinfo (Debug Session): Document new `udp:' and `tcp:'
	options for `target remote'.

2002-05-13  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	documentation on NNPC_REGNUM.

2002-05-11  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Document
	REGISTER_TO_VALUE and VALUE_TO_REGISTER and CONVERT_REGISTER_P.
	(Target Architecture Definition): Revise section `Using Different
	Register and Memory Data Representations'.  Add section `Raw and
	Virtual Register Representations'.

2002-05-11  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Mention
	defaults for REGISTER_VIRTUAL_SIZE and REGISTER_RAW_SIZE.
	(Target Architecture Definition): Mention same.  Add references to
	web pages.

2002-05-08  Michael Snyder  <msnyder@redhat.com>

	* stabs.texinfo (Attributes): Document new "vector" attribute.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Revise `Create a Release'.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo: Delete obsolete references to a29k.

2002-04-24  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Replace
	IN_SIGTRAMP with PC_IN_SIGTRAMP.

2002-04-24  David S. Miller  <davem@redhat.com>

	* gdbint.texinfo (REGISTER_IN_WINDOW): Delete definition.

2002-04-21  David S. Miller  <davem@redhat.com>

	* gdbint.texinfo (SKIP_PROLOGUE_FRAMELESS_P): Delete definition.

2002-04-21  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	definition of HAVE_REGISTER_WINDOWS.

2002-04-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbint.texinfo (Releasing GDB, Coding): Fix typos.  Reported by
	"Theodore A. Roth" <troth@verinet.com>.

2002-04-15  Don Howard  <dhoward@redhat.com>

	From Eli Zaretskii <eliz@is.elta.co.il>
	* gdb.texinfo (show max-user-call-depth): Correct formatting.
	Provide a better explaination of this feature. 

2002-04-14  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Remove
	FRAME_CHAIN_COMBINE.

2002-04-12  Michael Chastain  <mec@shout.net>

	* gdbint.texinfo (Obsolete Conditionals): Remove reference to
	REG_STACK_SEGMENT.

2002-04-09  Michael Chastain  <mec@shout.net>

	* gdbint.texinfo (Obsolete Conditionals): Remove references to
	PYRAMID_* macros.

2002-04-07  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Bug Reporting): Document that the web is the
	prefered way of submitting bug reports.
	(Bug Reporting): Delete the s-mail address as the last resort.

2002-04-05  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	references to TARGET_WRITE_FP and write_fp.

2002-03-27  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo: Document new commands dump, append, and restore.

2002-03-27  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Revise the section `Before the
	Branch'.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo: Change all examples to @smallexample.
	* gdbint.texinfo: Ditto.
	
2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Add section ``Versions and
	Branches''.

2002-03-18  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Add the section``Branch Commit
	Policy''.

2002-03-04  Fred Fish  <fnf@redhat.com>

	* gdbint.texinfo: Fix a bunch of typos (alsways, mirrorred,
	expresson, suports, dependant, trhe, perhaphs, situtations,
	explictily, taged, oportunity, unfortunatly).

2002-02-24  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (gdb.info): Add explicit path to gdb.texinfo.
	Remove reference to 3.12.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo: Include fdl.texi.
	(Top): Add GNU Free Documentation License.
	* Makefile.in (SFILES_INCLUDED): Add gpl.texi.
	(gdbint.dvi, gdbint.pdf, gdbint.info): Add dependency on fdl.texi.
	(gdbint_toc.html): Add dependency on gdb-cfg.texi and fdl.texi.
	(gdbint.info): Add srcdir to include path.
	* gdb.texinfo: Include gpl.texi.
	(Top): Add Copying.
	* gpl.texi: New file.

2002-02-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Debugging GDB): Remove references to cygnus.com.

2002-02-19  Pierre Muller  <muller@ics.u-strasbg.fr>

	* gdb.texinfo: Document Cygwin native specific commands.

2002-02-15  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.texinfo: Document gdbserver ``--attach'' command.

2002-02-07  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (overlays): Change @var(_ovly_debug_event)
	to @code(_ovly_debug_event).

2002-02-07  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (How Overlays Work): Shrink the overlay diagram.

2002-02-06  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (overlays): Mention new magic symbol
	'_ovly_debug_event', which allows GDB to keep better track
	of overlays.

2002-02-03  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Memory Region Attributes): Fix the wording.
	Suggested by Dmitry Sivachenko.

	* (<many nodes>): Fix the spelling and punctuation of "i.e.".

2002-02-01  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (set trust-readonly): Change value{gdbn} to value{GDBN}.

2002-01-30  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo: (remote protocol): Gramatical fix-up.
	(set trust-readonly-sections): Document.

2002-01-29  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): Revise and update.

2002-01-28  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	description of TARGET_BYTE_ORDER_DEFAULT.

2002-01-27  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: Fix typos and markup.  From Dmitry Sivachenko
	<mitya@cavia.pp.ru>.

2002-01-23  Andrew Cagney  <ac131313@redhat.com>

	* libgdb.texinfo: Delete file.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo: Remove makeinfo 3.12 hacks.
	* gdbint.texinfo: Ditto.

Tue Jan 22 11:57:38 2002  Andrew Cagney  <cagney@redhat.com>

	* gdb.texinfo: Fix typo ``Remove' -> ``Remote''.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Update copyright.
	(TEXI2DVI): Define.
	(gdb.dvi, gdb.pdf, stabs.dvi, stabs.pdf): Use TEXI2DVI.
	(gdbint.dvi, gdbint.pdf): Use TEXI2DVI.  Add dependency on
	gdb-cfg.texi.
	(TEXINDEX, PDFTEX): Delete makefile variables.

2002-01-22  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Protocol): Move section to appendix.

2002-01-21  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Remote Debugging): Create a menu.
	(Top): Add ``Remote Debugging'' to menu.

2002-01-21  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Remote): Move the sub-section ``The GDB remote
	serial protocol'' from here.
	(Remote Debugging): To here.  New chapter.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Delete
	description of TARGET_BYTE_ORDER_SELECTABLE_P.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Host Definition): Revise.  xm-xyz.h and xyz.mh
	are no longer needed.
	(Porting GDB): Add maintainer note about configure.host.

2002-01-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Remove
	definition of IEEE_FLOAT.

2002-01-20  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: Beautify copyright years; fix a typo.
	(DJGPP Native): Fix overfull hboxes in examples.  From Brian Youmans
	<3diff@gnu.org>

2002-01-19  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Host Definition): Remove references to
	MALLOC_INCOMPATIBLE.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Host Definition): Remove references to XDEPFILES
	and xyz-xdep.o.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo 	(Maintenance Commands): Add appendix.
	(Set Breaks): Copy ``maint info breakpoint'' doco to
	``Maintenance Commands'' appendix.  Add reference.

2002-01-17  Andrew Cagney  <ac131313@redhat.com>

	* fdl.texi: Remove next/prev from @node.

2002-01-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: @include fdl.texi.  Fixes for overfull hboxes and
	for monstrous @multitable (from Brian Youmans).

	* fdl.texi: New file.

	* Makefile.in (SFILES_INCLUDED): Add fdl.texi.

2002-01-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Releasing GDB): New chapter.

2002-01-14  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Embedded Processors, Calling program functions):
	Obsolete references to a29k.

2002-01-13  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Coding): Review Cleanups section.  Examples
	examples.  Document that a code-block should do or discard its
	cleanups before exit.

2002-01-11  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (Choosing files): Change @samp to @file.

2002-01-05  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (--pid): Document new command line option (attach).

2002-01-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Tracepoints): Clarify that tracepoints need support
	in the stub.

2002-01-04  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Replace
	BIG_ENDIAN with BFD_ENDIAN_BIG.

2002-01-03  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Replace
	value_ptr with struct value pointer.

2002-01-02  Eli Zaretskii  <eliz@gnu.org>

	* gdb.texinfo (Free Software): Fix wording.

2001-12-31  Eli Zaretskii  <eliz@gnu.org>

	* gdb.texinfo (Free Software): New section ``Free Software Needs
	Free Documentation''.

2001-12-30  Eli Zaretskii  <eliz@is.elta.co.il>

	* stabs.texinfo:
	* gdb.texinfo:
	* gdbint.texinfo:
	* libgdb.texinfo:
	* annotate.texi: Fix the application of GFDL in the Copyright notice.

2001-12-29  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (maint info sections): Fix typo.

2001-12-26  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (maint info sections): Document.

	* gdb.texinfo (info proc): Comment out documentation for 
	'info proc' sub-options that are currently not implemented.

2001-12-20  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (TARGET_CHAR_SIGNED): Document.

2001-12-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Replace
	LITTLE_ENDIAN with BFD_ENDIAN_LITTLE.

2001-12-01  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Host Definition): Delete documentation on
	HOST_BYTE_ORDER.

2001-11-30  Jim Blandy  <jimb@redhat.com>

	* gdb.texinfo (Overlays): New chapter, documenting GDB's
        overlay support.  Add to top-level menu.

2001-11-26  Tom Tromey  <tromey@redhat.com>

	* gdb.texinfo (Command Syntax): Document C-o binding.

2001-07-26  Christopher Faylor  <cgf@redhat.com>

	* gdb.texinfo (Options): Eliminate attempt to explain .gdbinit/gdb.ini
	use since it is described in the referenced section.

	From Eli Zaretskii <eliz@is.elta.co.il>
	* gdb.texinfo (Command Files): Reword to make gdb.ini requirement
	clearer when using DJGPP.

2001-11-24  Christopher Faylor  <cgf@redhat.com>

	* gdb.texinfo (File Options): Change description of -nx and gdb.ini to
	specifically refer to MS-DOS.
	(command files): Mention gdb.ini is only used on MS-DOS.

2001-11-21  Tom Tromey  <tromey@redhat.com>

	* gdb.texinfo (Invoking GDB): Document --args.
	(Mode Options): Likewise.

2001-11-21  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (TARGET_RANGE_PROFITABLE_FOR_HW_WATCHPOINT):
 	Delete documentation; this macro has been removed from the
 	sources.

2001-11-13  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (COERCE_FLOAT_TO_DOUBLE): Clarify.

2001-11-06  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.texinfo (gdbarch_in_function_epilogue_p): Add documentation.

2001-11-05  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (info functions): Document use of backslash to 
	quote regexp chars in function names such as "operator*()".

2001-11-01  Fred Fish  <fnf@redhat.com>

	* gdbint.texinfo (SOLIB_ADD): Document additional new
	"readsyms" arg.

2001-10-30  Don Howard  <dhoward@redhat.com>

	* gdb.texinfo: (Command Files) Added documentation for the
	behavior of gdb with input redirected from a file.

2001-10-28  Fred Fish  <fnf@redhat.com>

	* gdb.texinfo (auto-solib-add): Change docs to match
	implementation change.
	(auto-solib-limit): Add docs for new variable.

2001-10-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Function
	value_as_pointer renamed to value_as_address.

2001-10-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Default
	POINTER_TO_ADDRESS functions assume unsigned addresses.
	(INTEGER_TO_ADDRESS): Document.  Derive pragmatics section from a
	posting by Jim Blandy.

2001-10-12  Jim Blandy  <jimb@redhat.com>

	* Makefile.in (MAKEHTMLFLAGS): Remove -glossary; the most recent
	version of texi2html (1.64) doesn't support this flag any more.

2001-09-08  Mark Kettenis  <kettenis@gnu.org>

	* gdbint.texinfo (Host Definition): Remove description of
	MEM_FNS_DECLARED.

	* gdbint.texinfo (Host Definition): Remove description of R_OK.

	* gdbint.texinfo (Host Definition): Remove description of
	HAVE_SIGSETMASK.

2001-09-04  Elena Zannoni  <ezannoni@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Add
	explanation of TARGET_PRINT_INSN macro.

2001-08-30  Jim Blandy  <jimb@redhat.com>

	* gdb.texinfo (`add-symbol-file'): Correct synopsis.
	Explain what it means to load relocatable files.

2001-08-28  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo: Bring the HTML `top' menu into sync with the
	info `top' menu.

Wed Aug 15 10:47:28 2001  Christopher Faylor <cgf@cygnus.com>

	* gdbint.texinfo: Add a cautionary note about macro use.

2001-08-02  Corinna Vinschen  <vinschen@redhat.com>
 
	* gdb.texinfo: Explain omitting the hostname in the
	`target remote' command.

2001-07-30  Daniel Jacobowitz  <drow@mvista.com>

	* gdbint.texinfo: Remove extraneous START-INFO-DIR-ENTRY
	and END-INFO-DIR-ENTRY.

2001-07-28  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.texinfo (TUI Configuration): Rename tui configuration variables.

2001-07-25  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (libgdb): Rewrite.

2001-07-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (gdbgui.dvi, gdb-gui, gdbgui.info): Targets deleted.

2001-07-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.texinfo (TUI): New chapter, document the TUI.
	(Mode Options): Document the -tui option.

2001-07-23  Mark Kettenis  <kettenis@gnu.org>

	* gdbint.texinfo (Host Definition): Remove description of
	NEED_POSIX_SETPGID.

2001-07-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.tex (DJGPP Native): New node, with descriptions of
	DJGPP-specific commands.

2001-07-19  John R. Moore  <jmoore@redhat.com>

	* gdbint.texinfo: Three misspellings.

2001-07-06  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (refcard.dvi): Rewrite to avoid problems with empty
	`test` expressions on bash.  Problem reported by Colin Walters.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (User Interface): Update ui-out documentation to
	refelect recent UI/MI updates.

2001-07-04  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Mode Options): Mention the mi0 and mi1
	interpreters.

2001-06-15  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): GDBARCH is a C
	structure and not macros.
	(Host Definition): Document that much of this chapter is obsolete.
	(Target Architecture Definition): Update list of files that make
	up a target architecture.
	(Coding): Update.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Update
	EXTRACT_STRUCT_VALUE_ADDRESS and EXTRACT_STRUCT_VALUE_ADDRESS_P.
	The latter has been changed to a true predicate.

2001-06-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* annotate.texi: Add @noindent where needed.  From Dmitry
	Sivachenko <dima@Chg.RU>.
	* gdb.texinfo: Indexing fix.  From Dmitry Sivachenko.

2001-06-16  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Protocol): Fix typo.  Extra parenthesis.

2001-06-14  Andrew Cagney  <ac131313@redhat.com>

	* gdb.texinfo (Remote Protocol): Document that the ``!'' packet
	returns ``OK''.  Document that the ``R'' packet does not reply.

2001-06-13  Michael Snyder  <msnyder@redhat.com>

	* gdb.texinfo (Protocol): Add doc for new packet "qSymbol:".

2001-06-13  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Signals): Clarify the default setting of signal
	handling.

2001-05-14  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (CLEAR_DEFERRED_STORES): Delete stray @item
	(FRAME_ARGS_ADDRESS_CORRECT): Ditto.

2001-05-12  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (GDBvn.texi): Set GDBVN from ../version.in.

2001-05-10  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbint.texinfo (Clean Design and Portable Implementation):
	Renamed from "Clean Design".
	(Clean Design and Portable Implementation): Document portable
	methods of handling file names, and the associated macros.

2001-04-02  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Tracepoint Actions): Mention the "info scope"
	command and provide a cross-reference to its description.
	(Symbols): Note that "info scope" is useful for trace experiments.

2001-04-01  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Symbols): Document "info scope".
	(Tracepoints): New chapter.
	(Contributors): Update for v5.1.
	<All nodes>: Change "C++" to "C@t{++}".

	* gdbint.texinfo (User Interface): A new section about ui_out
	functions, based on text written by Fernando Nasser.

	* stabs.texinfo: Change Permissions to GFDL.  Update Copyright.

2001-03-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: Change Permissions to GFDL.  Update Copyright.

	* gdbint.texinfo: Change Permissions to GFDL.  Update Copyright.

	* gdbgui.texinfo: Change Permissions to GFDL.  Update Copyright.
	Replace "GDB" with "@value{GDBN}".  Fix markup.

	* annotate.texi: Change Permissions to GFDL.  Update Copyright.

	* gdb.texinfo (Output Formats): Mention "info symbol" and provide
	a cross-reference to its description.
	(Symbols): Document "info symbol".

2001-03-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbint.texinfo (Algorithms): New section "Watchpoints" and new
	subsection "x86 Watchpoints".
	(Target Architecture Definition): Document the macros
	I386_USE_GENERIC_WATCHPOINTS and TARGET_HAS_HARDWARE_WATCHPOINTS.
	(Native Debugging): Document I386_USE_GENERIC_WATCHPOINTS.

2001-03-20  Andrew Cagney  <ac131313@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Update
	definition of SOFTWARE_SINGLE_STEP_P to include empty parameter
	list.

2001-03-06  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in, all-cfg.texi, annotate.texi, gdb.texinfo,
	gdbint.texinfo, refcard.tex: Update/correct copyright notices.

2001-02-21  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Signals): Document "ignore", "noignore", and "all".

2001-02-11  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Environment): Document that `path' does not change
	the value of PATH in GDB's own environment (it did in the past,
	but that was changed on March 15, 1994).  Reported by Doug Evans
	<dje@transmeta.com>.

	* gdbint.texinfo: Fix up @itemize lists so that @item is alone on
	its line.  Fix markup of commands and macros.  Add an Index node
	and index entries.

2001-01-23  J.T. Conklin  <jtc@redback.com>

	* gdb.texinfo (Memory region attributes): New manual section.

2001-01-04  Nicholas Duffek  <nsd@redhat.com>

	* gdbint.texinfo (POP_FRAME): Document use by return_command.

2000-12-25  Eli Zaretskii  <eliz@is.elta.co.il>

	* refcard.tex: Version and copyright fixed.  From Phil Edwards
	<pedwards@disaster.jaj.com>.

Thu Nov 30 16:57:19 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (ECOFF_REG_TO_REGNUM, DWARF_REG_TO_REGNUM,
 	DWARF2_REG_TO_REGNUM): Document.

Mon Nov 20 21:29:35 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (Coding): Update current value of
 	--enable-build-warnings.  Mention --enable-gdb-build-warnings.

2000-11-19  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Continuing and Stepping):  Fixed markup and typos,
	as suggested by Dmitry Sivachenko <dima@Chg.RU>.

2000-11-10  Christopher Faylor <cgf@cygnus.com>

	* gdb.texinfo: Document new 'set step-mode' command.

2000-10-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Contributors, MIPS Embedded): Minor spelling
	changes from Dmitry Sivachenko <dima@Chg.RU>.

2000-09-26  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Hooks): Document the new post-hook functionality.
	From Steven Johnson <sbjohnson@ozemail.com.au>.

2000-08-10  Mark Kettenis  <kettenis@gnu.org>

	* gdbint.texinfo (Overall Structure): Spelling fix.

2000-08-10  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdbint.texinfo (Target Architecture Definition): Document that
	REGISTER_CONVERT_TO_VIRTUAL should only be called on a register
	for which REGISTER_CONVERTIBLE returns a zero value.

2000-07-08  Christopher Faylor <cgf@cygnus.com>

	* Makefile.in (install-info): Find files to install in either the
	build or source directories (adapted from Makefile.am).

2000-07-07  Nicholas Duffek  <nsd@redhat.com>

	* stabs.texinfo: Fix spelling errors.
	(String Field): FILE-NUMBER starts from 0, not 1.

2000-07-05  Eli Zaretskii <eliz@is.elta.co.il>

	* refcard.tex: Remove \centerline from the blurb.  Patch from
        Brian Youmans.

2000-06-25  Eli Zaretskii <eliz@is.elta.co.il>

	* Makefile.in (install-info): Support installation from outside of
        the source directory.  Reported by Mark Harig
        <markh@frazier.landmark.com>.

2000-06-20  J.T. Conklin  <jtc@redback.com>

	* gdb.texinfo: Fix typo, $bpnum is set to last breakpoint number.

Fri May 26 15:55:33 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (pdf, gdbint.pdf, gdb.pdf, stabs.pdf): New targets.
  	Generate using pdftex.
	(PDFTEX): Define.
 	(STAGESTUFF, maintainer-clean realclean): Add *.pdf.
	(gdb.texinfo, gdbint.texinfo, stabs.texinfo): When TeX insert the
 	@contents at the start.

2000-05-24  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: Remove duplicate @syncodeindex.  From Brian
        Youmans.

Wed May 24 21:27:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Brian Youmans:
	* gdb.texinfo: Fix ``et al.''.

Tue May 23 22:57:41 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (refcard.dvi): Remove quotes around REFEDITS in for
 	loop.

2000-05-19  Jimmy Guo  <guo@cup.hp.com>

	* configure: Regenerate.

2000-05-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (install-info): Run install-info on installed Info
	files.

Fri May 12 20:18:04 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo: Add Stan Shebs, et.al. as authors.  Mention
 	Andrew Cagney.

2000-05-09  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo: Proofreading changes from Brian Youmans.

2000-05-01  Nick Duffek  <nsd@cygnus.com>

	* gdb.texinfo (Command Files): Mention -x, use @enumerate for
	startup sequence, minor edits.

2000-05-01  Eli Zaretskii  <eliz@is.elta.co.il>

	* annotate.texi: Remove "@syncodeindex fn cp", it causes grief in
	TeX.

	* gdb.texinfo: Add "@syncodeindex fn cp".  Convert all entries
	"@kindex f" into "@kindex f (foo)", otherwise we get index entries
	like `n' and `s' which look weird.  Convert some of the @kindex to
	@vindex, when they refer to variables, not commands.

Sat Apr 29 17:01:04 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (Hints): Do not use @value{GDBN in @nodes.

2000-04-23  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (GDBMI_DIR): New variable.
	(SET_TEXINPUTS): Add $(GDBMI_DIR).
	(SFILES_DOC): Add $(GDBMI_DIR)/gdbmi.texinfo.
	(gdbmi.texinfo): New target, for texi2roff.
	(gdb.me, gdb.ms, gdb.mm): Depend on gdbmi.texinfo.
	(gdb.info, gdb_toc.html): Add "-I ${GDBMI_DIR}".

	* gdb.texinfo (Top): Add GDB/MI to the main menu and @include
	gdbmi.texinfo.
	(Mode Options): Add xref to GDB/MI docs and remove a FIXME
	comment.

2000-04-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.texinfo (Files): Update description of add-symbol-file
 	command.

2000-04-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Porting GDB): Don't use @value in the node name, it
	prevents the build (and is generally a Bad Idea).

2000-04-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Protocol): Prevent makeinfo from complaining about
	a comma inside @var.
	(Command Files): Index markup changes from Dmitry Sivachenko
	<dima@Chg.RU>.

2000-04-16  Eli Zaretskii  <eliz@is.elta.co.il>

	* Makefile.in (LN_S): Define.
	(gdb-cfg.texi, gdb.dvi, links2roff, inc-hist.texinfo): Don't
	invoke "ln -s" unless it is known to work.

	* configure.in (AC_PROG_LN_S): Add.

2000-04-14  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (Pointers Are Not Always Addresses): New manual
	section.
	(Target Conditionals): Document ADDRESS_TO_POINTER,
	POINTER_TO_ADDRESS.

2000-04-11  Daniel Berlin  <dan@cgsoftware.com>

	* gdbint.texinfo: Replaced GDB with @value{GDBN}, @include
	gdb-cfg.texi to get the value.

2000-04-10  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Fix
	cross-references.

2000-04-08  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (Using Different Register and Memory Data
	Representations): New section.
	(REGISTER_CONVERTIBLE, REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE,
 	REGISTER_VIRTUAL_TYPE, REGISTER_CONVERT_TO_VIRTUAL,
 	REGISTER_CONVERT_TO_RAW): Document.

Mon Apr  3 19:16:32 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo (Protocol): Deprecate the sequence-id.  Add cindex
 	for acknowledgments.

Tue Mar 28 18:28:45 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo (Protocol): Replace ``qfThreadExtraInfo'' with
 	qThreadExtraInfo.

2000-03-28  J.T. Conklin  <jtc@redback.com> 

	* gdb.texinfo: Clarify which remote debug protocol commands are 
	required and which are optional. 

Tue Mar 28 16:06:22 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo: Revert remainder of Fri Mar 24 18:06:34 2000 Andrew
 	Cagney <cagney@b1.cygnus.com>.  Move @chapter and @node entries
 	back to annotate.texi, rluser.texinfo and inc-hist.texinfo.
	* annotate.texi: Update.

2000-03-28  Stan Shebs  <shebs@apple.com>

	* gdb.texinfo: Update dates, bump to Eighth Edition (note
	expectation of additional changes before release), update
	ISBN, add copy of top-level menu for @ifhtml, remove explicit
	node links, rephrase and/or shorten lines to fix formatting
	problem in both regular and @smallbook formats.
	* annotate.texi: Shorten lines in example, use smallexample
	consistently everywhere.
	* Makefile.in: Add comment about texinfo 4.0 html generation.
	(SFILES_INCLUDED): Add annotate.texi.

2000-03-27  Daniel Berlin  <dan@cgsoftware.com>

        * gdb.texinfo (Debugging Output): Added new section, documenting
        the "set/show debug" commands.

Fri Mar 24 18:06:34 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* annotate.texi (Annotations): When GDBN omit @chapter and @node
 	entry.

	* gdb.texinfo: Check for @ifinfo instead of @ifnottex.
	(rluser.texinfo, inc-hist.texinfo, annotate.texi): Add local
 	@chapter and @node entries.
	
	* gdb.texinfo: Link all top-level nodes.
	
Fri Mar 24 17:56:48 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (install-info): Create $(infodir) before installing
 	files.

2000-03-23  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	From David Whedon <dwhedon@gordian.com>
        * gdbint.texinfo : Added paragraphs about command deprecation.

2000-03-22  Daniel Berlin  <dan@cgsoftware.com>

      * gdb.texinfo: Add documentation for the apropos command.

2000-03-20  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* gdb.texinfo: Add new queries ThreadInfo and ThreadExtraInfo.

2000-03-20  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* gdb.texinfo: Add white space to prevent overprinting in 
	two places.

2000-03-17  Stan Shebs  <shebs@apple.com>

	* gdb.texinfo: Many minor changes from Dmitry Sivachenko
	<dima@Chg.RU>, also clarification of allowed content for
	string constants.

2000-03-16  Eli Zaretskii <eliz@is.elta.co.il>

	* gdb.texinfo (main menu): Add Annotations.
	(File Options): Add @cindex entries for each command-line option.
	Document --epoch, --annotate, --async, --interpreter, --write,
	--statistics, and --version.

	* annotate.texi: Convert to a chapter.  Use @value{GDBN} instead
	of GDB.

2000-02-23  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo (FUNCTION_START_OFFSET): Document.

2000-02-22  Jim Blandy  <jimb@redhat.com>

	* gdbint.texinfo: Document COERCE_FLOAT_TO_DOUBLE --- the new form.

2000-02-15  Jason Molenda  (jsm@bugshack.cygnus.com)

	* Makefile.in (diststuff): New target.

2000-02-15  Kevin Buettner  <kevinb@redhat.com>

	* agentexpr.texi: Fix wording regarding Intel's IA-64
	architecture.  [From Jim Wilson.]

2000-01-16  Tom Tromey  <tromey@cygnus.com>

	* gdb.texinfo (Breakpoints): Mention breakpoint ranges.
	(Delete Breaks): Mention range arguments.
	(Disabling): Likewise.

2000-01-05  Dmitry Sivachenko <dima@Chg.RU>

	* gdb.texinfo:  Wrap "ASCII" in @sc{}; clarify a few sentences.

Wed Dec  8 19:53:08 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (FRAME_CHAIN_VALID): Add the generic frame-chain
 	valid functions.

1999-11-05  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Clarify regular expressions used in rbreak.

1999-10-15  Kevin Buettner  <kevinb@cygnus.com>

	* gdbint.texinfo (MEMORY_INSERT_BREAKPOINT,
	MEMORY_REMOVE_BREAKPOINT):  Document.

Thu Oct 14 21:17:17 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo (remote): Document how GDB ignores the qOffsets BSS
 	offset re-using the DATA offset instead.

1999-10-11  Jim Kingdon  <kingdon@redhat.com>

	* gdbint.texinfo (Target Architecture Definition): Add PARM_BOUNDARY.

1999-10-05  Stan Shebs  <shebs@andros.cygnus.com>

	From Dmitry Sivachenko <demon@gpad.ac.ru>:
	* gdb.texinfo: Use GDBP and GDBN everywhere, fix a couple other
	typos.

	* gdb.texinfo: Various minor wording and formatting improvements,
	mentions of additional command-line options.

1999-09-30  Fred Fish  <fnf@cygnus.com>

	* gdb.texinfo:  Document additional forms of specifying section
	names and addresses for the add-symbol-file command.

1999-09-14  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* gdbint.texinfo: Fix typo, add the word "have".

1999-09-14  Jim Blandy  <jimb@cris.red-bean.com>

	* gdbint.texinfo (Target Architecture Definition): Document the
	SKIP_PERMANENT_BREAKPOINT macro.

1999-09-07  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Fiks speling errers.

	* gdb.texinfo: Fix uses of @multitable.

	From Eli Zaretskii  <eliz@is.elta.co.il>:
	* gdb.texinfo: Include details specific to DOS host, clarify
 	some confusing language, fix @ref/@xref/@pxref usages, add
	comments about using with optimization, add more indexing,
	fix info about disassembly-flavor.

Tue Sep  7 09:11:24 1999  Kevin Buettner  <kevinb@cygnus.com>

	* gdbint.texinfo (IN_SOLIB_DYNSYM_RESOLVE_CODE,
	SKIP_SOLIB_RESOLVER): Define.

Fri Sep  3 18:05:14 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.texinfo (Protocol): Review.  Add tables describing ``q'' and
 	``g'' packets.

1999-08-30  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Create a new "Configurations" chapter with
 	platform-specific info, inline remote.texi and move sections of it
 	into the new chapter, move bits about info proc, heuristic search,
	and register stack into the new chapter.
	* remote.texi: Remove, now part of gdb.texinfo.
	* Makefile.in (SFILES_INCLUDED): Remove ref to remote.texi.

1999-08-27  Jason Molenda  (jsm@bugshack.cygnus.com)

	* gdbint.texinfo (GDB_TARGET_IS_SUN3, GDB_TARGET_IS_SUN386,
	GDB_TARGET_IS_MACH386): These kludges have gone away.

Wed Aug 25 10:47:03 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (Target Architecture Definition): Mention
 	TDEPLIBS.

1999-08-20  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Remove remaining "HPPA" conditionals, rewrite
	surrounding text to fit HP-UX bits into general info.
	(HPPA-cfg.texi): Remove, no longer useful.

	* gdb.texinfo: Remove explicit links from @node lines, remove
	HP-added "Detailed Node Listing" from main menu which confuses
	things.

	From Dmitry Sivachenko <dima@Chg.RU>:
	* gdb.texinfo: Use @value{GDBN} instead of plain GDB, fix grouping
 	in description of `set environment'.

1999-08-17  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Update coding standard to allow pure ANSI/ISO C.

1999-08-12  Ben Elliston  <bje@cygnus.com>

	* gdbint.texinfo (Breakpoint Handling): Add missing words.

1999-08-10  Eli Zaretskii  <eliz@is.elta.co.il>

	* gdb.texinfo (Set Watchpoints): Explain some subtleties about
 	watch, awatch, and rwatch.  Explain why the latter two cannot be
 	set as software watchpoints.  Document that watchpoints for local
 	variables are deleted when the debuggee terminates.

Wed Aug 11 13:18:14 1999  Andrew Cagney  <cagney@amy.cygnus.com>

	* remote.texi (Protocol): Further clarification of the "qRcmd"
 	packet.  Allow E.. response packet.  "qRcmd" packet is no longer
 	reserved.

1999-08-10  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* Makefile.in: Rename inc-hist.texi to inc-hist.texinfo. 
	* gdb.texinfo: Ditto. 

1999-08-06  Tom Tromey  <tromey@cygnus.com>

	* gdb.texinfo (KOD): New node.

Fri Aug  6 17:05:48 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.texi (Rcmd): Fix minor formatting typos.

Thu Aug  5 17:57:41 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.texi (protocol qRcmd): Allow ``OK'' and ``O...'' response
 	packets.

1999-07-14  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdbint.texinfo (PREPARE_TO_PROCEED, ADDR_BITS_REMOVE): Doc
	fixes.

Tue Jun 29 11:43:55 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (SAVE_DUMMY_FRAME_TOS): Define.

Fri Jun 25 11:47:06 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.texi (Communication Protocol): ``v'' is in use. Fix
 	numerous formatting errors.  Clarify ``i''.  Mark ``i'', ``Z'',
 	``z'' and ``qRcmd'' as draft instead of reserved.  Identify
 	packets that are not supported on all hosts. Expand examples.
  	Spell check.

1999-06-24  Jason Molenda  (jsm@bugshack.cygnus.com)

	* Makefile.in: Recognize html, install-html.  Add targets
	to build HTML versions of documentation via texi2html.

Thu Jun 24 15:59:03 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo (Testsuite): New chapter, information about the
 	testsuite.

Fri Jun 25 02:40:34 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* remote.texi (Communication Protocol): Rewrite.

Thu Jun 24 16:59:54 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* stabs.texinfo: Fix uses of xref.

Thu Jun 17 17:23:25 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Add an anti-printf exhortation, and update the
	info about patch submission.

Mon Jun  7 15:49:40 1999  Stan Shebs  <shebs@andros.cygnus.com>

	From Per Bothner  <bothner@cygnus.com>:
	* gdb.texinfo: Document Chill support.

Fri Jun  4 16:58:22 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (SP_REGNUM, FP_REGNUM, PC_REGNUM): Add reference
 	to corresponding TARGET_READ_reg TARGET_WRITE_reg macros.
  	Document that the value should be greater-than or equal-to zero.
  	(NO_STD_REGS): Document. Deprecate.

Tue Jun  1 15:04:15 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (TARGET_COMPLEX_BIT, TARGET_DOUBLE_COMPLEX_BIT):
 	Document that these are not used.

Thu May 27 09:28:15 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (EXTRACT_STRUCT_VALUE_ADDRESS_P): Document.

Mon May 24 10:07:39 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (FRAME_NUM_ARGS): Update definition.  Parameter
 	numargs was dropped.

Thu May 20 12:26:59 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (FRAMELESS_FUNCTION_INVOCATION): Update.

Tue Apr 27 19:14:20 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (SKIP_PROLOGUE, SKIP_PROLOGUE_FRAMELESS_P):
 	Update.

Thu Apr 22 13:07:37 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (USE_GENERIC_DUMMY_FRAMES): Document.
	(GET_SAVED_REGISTER): Update, not just the a29k uses this.

Wed Apr 21 13:59:01 1999  Dave Brolley  <brolley@cygnus.com>

	* gdbint.texinfo: Fix typos: $ -> @.

Tue Apr 20 11:59:38 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (REGISTER_NAMES, BREAKPOINT, BIG_BREAKPOINT,
 	LITTLE_BREAKPOINT, LITTLE_REMOTE_BREAKPOINT,
 	BIG_REMOTE_BREAKPOINT): Deprecate in favor of REGISTER_NAME and
 	BREAKPOINT_FROM_PC.
	
Mon Apr 12 16:00:44 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (CALL_DUMMY_STACK_ADJUST_P,
 	CALL_DUMMY_STACK_ADJUST): Document.

Thu Apr  8 17:23:15 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (CALL_DUMMY_P, CALL_DUMMY_WORDS,
 	SIZEOF_CALL_DUMMY_WORDS, CALL_DUMMY): Define.

1999-04-02  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo (MAINTENANCE_CMDS): Remove ref, since it no
	longer exists.

Tue Mar  9 19:25:11 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo, remote.texi, all-cfg.texi, HPPA-cfg.texi: Remove
 	nearly all @ifset/@ifclear conditionals; nobody uses them, and
 	they make the manual source incomprehensible.
	* h8-cfg.texi: Remove, hasn't been used in years.

Thu Feb 11 18:00:59 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Update the credits.

Mon Feb  8 17:33:57 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Fix mistakes noticed in printout of last
	draft, add Alpha to discussion of heuristic fence post.

Fri Feb  5 17:20:00 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo, remote.texi: Many changes; update to Seventh
 	Edition, merge some HP changes into mainline, describe some
 	previously undocumented features, describe more of the target
 	commands available, eliminate obsolete section on renamed
 	commands.
	* all-cfg.texi, HPPA-cfg.texi: Remove some obsolete conditionals.

Wed Jan 20 17:47:45 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Make many HPPA conditionals unconditional,
	including catchpoint description, since now on for all configs.
	* all-cfg.texi: @clear HPPA, since is mainly for very HP-specific
	specializations.

Thu Jan 14 17:10:12 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in (GDBvn.texi): Fix match expression to work with
	current format of VERSION in gdb/Makefile.in.
	* gdb.texinfo: Fix node ref to match new readline.

Wed Jan 13 10:38:40 1999  Edith Epstein  <eepstein@sophia.cygnus.com>

	* gdb.texinfo: Changes made as part of a project to merge in 
	  changes made by HP. Documentation makes extensive use of 
	  @ifclear HPPA and @ifset HPPA. The HP manual omits doumentation
	  on remote debugging. There are differences in documentation
 	  (HP vs.  non-HP) on C++ support (aCC vs. gnu gcc++). Also,
	  the HP manual discusses catchpoints, hardware watchpoints, and
	  some HPUX specific limitations for shared library support.
	  
	  There are also a number of @node changes.

1999-01-12  Jason Molenda  (jsm@bugshack.cygnus.com)

	* gdbint.texinfo (Formatting): Disambiguate a sentence.
	(C Usage): Same.

Wed Jan  6 11:55:34 1999  David Taylor  <taylor@texas.cygnus.com>

	The following changes were made by Edith Epstein
 	<eepstein@cygnus.com> as part of a project to merge in changes
 	made by HP.
	
	* HPPA-cfg.texi: new file.

	* all-cfg.texi: set HPPA for HP PA-RISC targets.

	* refcard.tex: change documentation about catch.
	  removed info catch.

Mon Jan  4 18:29:18 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Expand on GDB's coding standards,
	specify the use of arg names with prototypes.

1998-12-14  J.T. Conklin  <jtc@redbacknetworks.com>

	* gdb.texinfo: Fix tipo.

Sun Dec 13 10:27:59 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo: Document TARGET_BYTE_ORDER_DEFAULT and
 	TARGET_BYTE_ORDER_SELECTABLE_P.

Thu Dec 10 16:07:09 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (FRAME_FIND_SAVED_REGS): Document.

1998-12-09  Jim Blandy  <jimb@zwingli.cygnus.com>

	* agentexpr.texi: New file.

Wed Dec  9 21:13:57 1998  Andrew Cagney  <cagney@chook>

	* gdbint.texinfo (REGISTER_NAME): Replace REGISTER_NAMES.

1998-12-03  J.T. Conklin  <jtc@redbacknetworks.com>

	* remote.texi: Changed wording that implied that the GDB remote
	protocol caches register values instead of GDB itself.

Tue Dec  1 17:45:43 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Add some info about symbol readers.
	(CHILL_PRODUCER, etc): Comment out descriptions, not useful.
	(IN_SOLIB_CALL_TRAMPOLINE): Rename info from IN_SOLIB_TRAMPOLINE.
	(IN_SOLIB_RETURN_TRAMPOLINE): Describe.
	(KERNEL_DEBUGGING, MIPSEL): No info about these, remove.

Mon Nov 30 11:32:21 1998  Andrew Cagney  <cagney@chook>

	* gdbint.texinfo (FRAME_CHAIN_VALID_ALTERNATE): 

Sat Nov 28 13:45:53 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (INNER_THAN): Update, now takes parameters.

Fri Nov 27 12:39:45 1998  Andrew Cagney  <cagney@chook>

	* gdbint.texinfo (NO_SINGLE_STEP): Replace with
 	SOFTWARE_SINGLE_STEP_P and SOFTWARE_SINGLE_STEP.

Wed Oct 14 10:02:40 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo: Fix minor typos.

Wed Sep 30 18:03:19 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Complete overhaul.  Group descriptions more
	logically, add more info on generic algorithms, remove much
	obsolete and/or wrong material.

Fri Jul 24 17:51:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.texinfo (Method Type Descriptor): Expand and correct.

Mon May  4 10:37:12 1998  Brian Youmans (3diff@gnu.org)

	* refcard.tex:  Copyright, address updates.

Tue Apr 21 18:09:56 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo (EDITION, DATE): Update and change to use ordinals
	for the edition instead of confusing GDB-version-like numbers.

Mon Apr 13 14:05:00 1998  Fred Fish  <fnf@cygnus.com>

	* gdb.texinfo (hbreak, watch): Fix typo, "date" -> "data".

Thu Apr  2 16:52:44 1998  Jason Molenda  (crash@bugshack.cygnus.com)

        * LRS: Reformat a bit to keep text under 80 columns.

Thu Apr  2 16:10:36 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Add some credits, mention bug monitor.
	* remote.texi: Mention mips monitor targets.
	* gdbint.texinfo: Describe SP_REGNUM, STEP_SKIPS_DELAY.
	
Mon Feb  2 17:13:03 1998  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbint.texinfo: Remove obsolete mentions of pinsn.c and opcode.h
 	files, finish sorting of host vs target vs native macros, describe
 	some more of them.

Tue Jan 13 16:44:50 1998  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (Host Conditionals): Document change from
	using NO_MMALLOC to it's inverse, USE_MMALLOC.

Mon Nov 24 13:55:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdbint.texinfo (Host Conditionals): Document
 	PRINTF_HAS_LONG_DOUBLE, SCANF_HAS_LONG_DOUBLE, HAVE_LONG_DOUBLE.

Fri Jul  4 14:52:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* gdbint.texinfo (Host Conditionals): Add CRLF_SOURCE_LINES.
	Document LSEEK_NOT_LINEAR.

Tue Mar 25 14:44:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.texinfo (Stab Section Basics): Make it clear that only
	some versions of the GNU linker remove the leading N_UNDF symbol.

Thu Feb 27 17:45:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.texinfo (String Field): Document type number pairs here,
	instead of in the Sun specific section.
	(Include Files): The GNU linker supports the N_BINCL
	optimization.  Clarify the N_BINCL value, and what it is used
	for.
	(Procedures): Document N_FUN with an empty string to mark the end
	of a function.
	(Typedefs): Mention that Sun compilers may use N_GSYM for a type.
	(Sun Differences): Remove this node, as the information is now
	elsewhere in the main document.
	(Stab Section Basics): Mention that the GNU linker may optimize
	stabs and remove the leading N_UNDF symbol.

Mon Dec  9 12:23:32 1996  Roland Pesch  <roland@wrs.com>

	* gdb.texinfo, refcard.tex: Restore author credit

Wed Oct  2 22:01:36 1996  Fred Fish  <fnf@fishfood.ninemoons.com>

	* gdbint.texinfo (SIGTRAMP_START, SIGTRAMP_END): Update
	documentation to account for START and END macros taking
	one arg.

Thu Aug 22 17:59:03 1996  Fred Fish  <fnf@cygnus.com>

	From: Eberhard Mattes <mattes@azu.informatik.uni-stuttgart.de>
	* gdb.texinfo (Frames): Fix typo.

Tue Jul 23 10:06:20 1996  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (NO_SINGLE_STEP): Document that single_step takes
	a target_signal as arg type, not a pid.

Fri Jul 12 11:10:05 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* gdb.texinfo:  Document `set assembly-language'.

Thu Jul 11 13:50:28 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* remote.texi: Update list of stubs in the GDB distribution.

Fri Jul  5 15:38:54 1996  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (NO_MMCHECK): Renamed from NO_MMALLOC_CHECK.
  	Also document that some systems can use mmalloc but must define
 	this if their C runtime allocates memory that is later freed.
	(MMCHECK_FORCE): Document new macro.
	
Fri Jun 28 22:17:10 1996  Dawn Perchik  <dawn@cygnus.com>

	* remote.texi: Add documentation for target Sparclet.

Mon Jun 24 18:12:22 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (srcdir, VPATH, prefix, infodir, INSTALL, 
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf set values.
	* configure.in: Rewritten for autoconf.
	* configure: New.

Mon Jun 17 10:43:41 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (DVIPS): New define, set to dvips.
	(dvi): Add stabs.dvi.
	(ps): New target.
	(all-doc): Depend on info, dvi, and ps targets.
	(STAGESTUFF): Add *.ps and *.dvi files.
	(clean-info, clean-dvi): Remove.
	(mostlyclean): Does not depend upon clean-info or clean-dvi,
	rules completely rewritten.
	(maintainer-clean): Remove clean-info and clean-dvi
	dependencies and put their actions in the rules.
	(gdb.ps): New target
	(gdb.dvi, gdbgui.dvi, gdbint.dvi, stabs.dvi): Remove 
	intermediate TeX files, whether they have 2 or 3 character
	extensions.
	(gdbint.ps): Add target and rules.
	(gdb-internals): Delete unused target.
	(Makefile): Depends upon config.status also.

Sat Mar 30 15:46:58 1996  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (CC_HAS_LONG_LONG): Clarify when/how this is
	set.

Sat Mar 16 15:10:20 1996  Fred Fish  <fnf@cygnus.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>
	* gdb.texinfo (Expressions): Fix erroneous array constant example.

Sat Mar 16 13:28:45 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.texinfo: Add missing "@bullet" to some "@itemize" commands.

Sat Feb 10 03:28:36 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.texinfo (Print settings):  Document
	`set/show print static-members' commands.

Wed Jan 10 14:16:37 1996  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (Native): Document name change, coredep.c to
	core-aout.c.

Wed Dec 13 12:35:28 1995  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.texinfo (Include Files): Document the values the SunOS4
	linker creates for N_BINCL/N_EINCL/N_EXCL stabs.

Fri Dec  8 21:08:44 1995  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (Releases): Change gdb.tar.Z to gdb.tar.gz.
	Fix typo.

Fri Dec  1 11:07:50 1995  Fred Fish  <fnf@cygnus.com>

	* gdbint.texinfo (Releases): Make "gdb.tar.gz" rather than
	"gdb.tar.Z".

Wed Sep 20 13:14:10 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New target, synonym for
	realclean.

Thu Aug  3 10:45:37 1995  Fred Fish  <fnf@cygnus.com>

	* Update all FSF addresses except those in COPYING* files.

Wed Jul 19 18:43:03 1995  Stan Shebs  <shebs@andros.cygnus.com>

	From Richard Earnshaw (rearnsha@armltd.co.uk):
	* gdb.texinfo (convenience variables): Document $_exitcode.
	(quit): Document optional expression to use as exit code.

Thu Jun 22 21:27:33 1995  Victoria Mixon  <victoria@cygnus.com>

	* gdb.texinfo, remote.texi: Brought up to date with various
	GDB changes.

Tue Jun 20 14:35:38 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.texinfo: Update dates and versions, fix comments about
	hardware watchpoints in future releases and about the
	sharedlibrary command.

Mon May  8 09:30:36 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Remove node `XCOFF differences'.  Describe value of
	C_FUN stab.  Other cleanups.

Wed Apr 19 07:02:19 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* remote.texi (Bootstrapping): Clarify that flush_i_cache is only
	for the sparc stub.

Tue Apr 11 11:41:49 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* annotate.texi: Clarify which addresses have differing formats
	depending on the language and which do not.

Tue Mar 28 16:56:22 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* remote.texi (NetWare): Changed example to use BOARD= instead of
	  NODE= argument to reflect correspoding change to gdbserve.nlm.

Fri Mar 17 06:47:02 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Mention the fact that
	GDB, as well as AIX dbx, supports the size type attribute.

Thu Mar 16 12:11:32 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Document types -31 to -34.

Mon Mar 13 16:49:13 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* gdb.texinfo (Define):  Document $arg0... arguments to commands,
	and new 'if' and 'while' commands.

Fri Feb 17 15:24:35 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* gdb.texinfo (Artificial arrays):  Note use of coerce-to-array-type.

Wed Feb 15 11:59:18 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* all-cfg.texi: New flag, GDBSERVE, for NetWare's gdbserve.nlm.
	* remote.texi (NetWare): New node, how to use gdbserve.nlm on
	  NetWare targets.  Mostly stolen from the Server node.

Fri Feb 10 20:20:08 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Setting): Talk about the language of a source file
	versus the working language.  The old documentation did not match
	what GDB did.

Wed Feb  1 20:26:36 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Source Files): Document N_SO used to mark the end
	of a source file.

Mon Jan 23 14:23:37 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Processes): New node.

Tue Jan 17 14:09:03 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* remote.texi: Update documentation of set/show mipsfpu.

Fri Jan  6 17:17:28 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* gdbgui.texinfo: New file, manual for GUI (gdbtk) users.
	* Makefile.in (gdbgui.dvi, gdbgui.info): New actions.

Sun Sep  4 16:47:21 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdbint.texinfo: Removed mentions of some incorrectly placed and
	obsolete conditionals, described some others.

Mon Aug  1 15:42:39 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdbint.texinfo: Remove references to BROKEN_LARGE_ALLOCA and
	SET_STACK_LIMIT_HUGE; they were removed from GDB 14 May 1994.

Mon Aug  1 15:12:02 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdbint.texinfo: Put regex conditionals in their own table.

Tue Jul 26 18:32:52 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdbint.texinfo: Removed mentions of many obsolete conditionals,
	described or fixed the descriptions of many others.

Sun Jul 17 14:14:03 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.texinfo: Add some more credits.
	* gdbint.texinfo: Capitalize GDB consistently, describe some
	macros and remove some.

Thu Jul 14 18:43:17 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdbint.texinfo: Removed mentions of many incorrectly placed and
	obsolete conditionals, described some others.

Tue Jul 12 12:23:15 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.texinfo (help targets):  Changed to `help target', which
	is the correct gdb command.

Wed Jun 22 18:00:51 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* annotate.texi (TODO): New node, for keeping track of annotations
	suggested but not yet implemented.

Wed Jun  1 16:10:45 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Statics): Value of xcoff C_BSTAT points to
	another symbol, it is not the address itself.

Thu May  5 20:23:36 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* stabs.texinfo (Stab Section Basics): Add comment about alignment
	of stabs-in-coff sections.

Wed May  4 06:26:11 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* annotate.texi: Change edition to 0.5 and date to May 1994.
	Add index.
	(Frames): New node, for frame annotation.
	(Displays): New node, for display annotation.

	* remote.texi (MIPS Remote): Say that set timeout doesn't apply
	when waiting for your program to stop.

Fri Apr 29 18:24:46 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* annotate.texi (Breakpoint Info): Document annotation of header
	fields and record annotation.

Thu Apr 28 07:44:28 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* annotate.texi: New file, to document annotations.

Thu Apr 21 14:20:51 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (clean): Don't remove GDBvn.texi (apparently on Jan
	16 I meant to make this change but did not).  Do remove gdb-cfg.texi.

Wed Apr 20 11:22:48 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stab Section Basics): Say what is in .stab
	section, and say n_strx field is compilation unit relative.
	* stabs.texinfo: Don't use @code for a.out when it is the name of
	an object file format.

Wed Apr 13 20:29:54 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.texinfo: Refer to file names, not path names, per rms
	convention.
	(Arguments): Fix typo.

Thu Mar 24 08:09:12 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Global Variables): Talk about stabs in files
	where variables are referenced, but not defined.

Wed Mar 23 07:16:36 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Move stuff on @ and # type descriptors from node
	Cplusplus to new nodes Member Type Descriptor and Method Type
	Descriptor.  Re-write stuff for #.

Wed Mar 16 08:20:19 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Print Settings): Don't document "set print
	fast-symbolic-addr off".  The bug which it worked around was fixed
	on 25 Feb 94 in coffread.c, so I'm nuking the command.

	* stabs.texinfo (Alternate Entry Points): New node, rewritten from
	N_ENTRY node.

	* stabs.texinfo (Type Descriptors): Add 'Y' type descriptor.

Tue Mar 15 08:43:02 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdbint.texinfo (Host Conditionals, Target Conditionals): Remove
	references to ieee-float.c.

Fri Mar 11 08:09:40 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Set Breaks): Update documentation for tbreak to
	match what the code actually does.

Wed Mar  9 19:43:05 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Symbol Descriptors): Add OS9000 symbol descriptor s.

Tue Mar  1 17:04:43 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* stabs.texinfo (Type Descriptors): Add OS9000 type descriptors c,
	i, and b.

Wed Feb 23 10:44:18 1994  Jim Kingdon  (kingdon@rtl.cygnus.com)

	* stabs.texinfo: Document N_RBRAC as function relative for COFF as
	well as for ELF and SOM.  Unify the descriptions of ELF and SOM
	as "stabs in sections" rather than just saying "ELF and SOM".
	Also make that stuff apply to COFF.

Fri Feb 18 08:25:58 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Formatting Documentation): Change GhostScript to
	Ghostscript.

Fri Feb  4 06:31:31 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Continuing and Stepping): When talking about "step"
	versus functions without line numbers, also mention stepping into
	them as well as "step" when you are in them.  Tell the user how to
	deal with the situation.  Add comment about "debugging information".

Thu Feb  3 11:39:59 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Enumerations): Document restriction on where
	enumeration types can appear and still win with GDB.

Wed Feb  2 11:29:17 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Document format for type
	-16.

Thu Jan 27 16:53:56 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Selection, Frame Info): Update information about
	arbitrary frame specficiations.

Wed Jan 26 15:31:57 1994  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, remote.texi: general editing pass prior to Net release

Tue Jan 25 12:12:04 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (String Field): Discuss continuing stabs with ?.

Wed Jan 19 06:39:24 1994  David J. Mackenzie  (djm@thepub.cygnus.com)

	* stabs.texinfo (Non-Stab Symbol Types): Mention N_SET* | N_EXT.

Sun Jan 16 12:43:32 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Re-do stuff about C_BSTAT and move from XCOFF
	Differences node to Statics node.
	(Statics): Discuss XCOFF use of V symbol descriptor.

	* Makefile.in: Remove refcard.dvi and GDBvn.texi in realclean,
	not clean.

Wed Jan 12 21:29:54 1994  John Gilmore  (gnu@cygnus.com)

	* gdb.texinfo (Print Settings): Document `set print
	fast-symbolic-addr' and improve the doc for some other
	`set print's.

Mon Jan  3 17:23:07 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (String Field): Talk about defining several type
	numbers at once.
	Fix lint regarding changing node ELF Transformations to
	ELF and SOM Transformations.

Fri Dec 31 00:42:43 1993  John Gilmore  (gnu@cygnus.com)

	* stabs.texinfo:  Insert Peter Kessler's name as inventor (I think).

Tue Dec 28 09:30:40 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Cross-References): `::' is for nested types only
	within <>.
	(Structures): Document static members.

Mon Dec 27 13:55:04 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Document S type attribute.

Sun Dec 26 20:46:36 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* stabs.texinfo: Add notes about stabs-in-som where appropriate.

Fri Dec  3 19:13:19 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Fix a few typos.

Sun Nov 28 18:06:25 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, remote.texi: formatting improvements

	* gdb.texinfo (New Features): mention threads.
	(Summary, C): fix xrefs in newly contributed text.
	(Threads): index entries, clarifications, example
	(passim): minor typos fixed, phrasing improvements

	* remote.texi (Bootstrapping): rephrase text on ^C and add index
	entries; (Server): explain use of gdbserver w/real-time systems,
	add example of conflicting TCP port; (MIPS Remote) break up
	running text into table, highlighting commands, and add example.
	
Wed Nov 24 14:15:56 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* refcard.tex: avoid bad linebreaks even when REFEDITS=psrc.sed

Fri Nov 12 16:10:58 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Nested Symbols): New node.
	(String Field, Symbol Descriptors, Cross-References): Refer to it.

Thu Nov 11 13:26:45 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stabs in ELF): Clarify how Bbss.bss work with respect
	to picking which Bbss.bss symbol to use, and (because there seems to
	be no good way of doing it) re-write some of the text to make it
	sound like Bbss.bss isn't such a great idea after all (as currently
	designed).

	* gdb.texinfo (C): In addition to saying people have to use g++ for
	good results, say they have to use stabs.  Specifically say cfront
	doesn't work well.
	(Summary): Merge in information on Modula-2, Pascal, and Chill from
	the gdb README.  Add xrefs to places where the support for the various
	languages is described in detail.

Mon Nov  8 11:47:34 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Clean up stuff about visibility and virtual
	characters.

	* stabs.texinfo (N_M2C): Cite Sun doc.

Fri Nov  5 16:27:27 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: updates re threads.
	* remote.texinfo: avoid index entries starting with digits.

Tue Nov  2 09:08:37 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Enumerations): Talk about large, negative and
	octal values.  Clean up cross reference to type attributes.
	(String Field): Say that GDB 4.11 supports size attribute.

Sun Oct 31 13:31:10 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* remote.texi (VxWorks Remote): Clarify that rebuilding VxWorks kernel
	is a mandatory step.  Make the stuff about that more concise.

Wed Oct 27 00:25:46 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Class Names): New node.

	* gdb.texinfo (Command Files): Explain order of init file reading.

	* remote.texi (Bootstrapping): Talk about getting the serial driver
	to deal with ^C sent by gdb to stop the remote system.

Mon Oct 25 03:25:41 1993  Tom Lord  (lord@cygnus.com)

	* libgdb.texinfo (I/O): incorporated better phrasing from rich.

	* libgdb.texinfo (Defining Commands): made the DOC arg
	to gdb_define_app_command a char * instead of char **
	per a suggestion from kingdon.

	* libgdb.texinfo: total rewrite from a different starting
	premise.

Wed Oct 20 18:07:44 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Local Variable Parameters): Re-write paragraph on
	floats passed as doubles (to improve clarity).

Tue Oct 19 14:21:18 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo (Source Path): index entries for $cwd, $pdir

	* a4rc.sed: update to work with Andreas Vogel papersize params

	* refcard.tex: use Andreas Vogel simplifications of papersize
	params; remove useless version info; update copyright date.

Tue Oct 19 10:46:22 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Symbols): Add class NAME to doc for ptype.

Tue Oct 12 09:11:45 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Files): Say what address the load command loads it at.

	* stabs.texinfo (Common Blocks): Minor cleanups.

	* stabs.texinfo: Update ld stabs in elf relocation to reflect the fact
	that Sun has backed away from the linker kludge and thus the relevant
	issue is changes to the SunPRO tools, not the Solaris linker.

	* stabs.texinfo (Traditional Integer Types): Clean up description
	of octal bounds a little bit.  Document extra leading zeroes.

Thu Oct  7 16:15:37 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Signaling): Update for symbolic symbol names
	and add a section explaining the difference between the GDB
	signal command and the shell kill utility.

Wed Oct  6 13:23:01 1993  Tom Lord  (lord@rtl.cygnus.com)

	* libgdb.texinfo: added `@' to braces that were unescaped.

Mon Oct  4 10:42:18 1993  Tom Lord  (lord@rtl.cygnus.com)

	* libgdb.texinfo: new file.  Spec for the gdb library.

Sun Oct  3 15:26:56 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Include Files): Fix typo (start -> end).

Thu Sep 30 18:24:56 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, remote.texi: assorted small improvements, mostly
	from Melissa at FSF's editing pass.

Thu Sep 30 11:54:38 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo: Remove stuff about ar and 14 character filenames.
	I believe this was fixed by the 13 Sep 89 change to print_frame_info.
	Also, modern versions of ar like BSD 4.4 or SVR4 don't have this bug.

Wed Sep 22 21:22:11 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* remote.texi (Bootstrapping): Discuss 386 call gates.

Sat Sep 18 17:10:44 1993  Jim Kingdon  (kingdon@poseidon.cygnus.com)

	* stabs.texinfo (Based Variables): New node.

Thu Sep 16 17:48:55 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Re-write discussions of
	names, sizes, and formats to suggest how not to lose.

Sat Sep 11 09:35:11 1993  Jim Kingdon  (kingdon@poseidon.cygnus.com)

	* stabs.texinfo (Methods): Fix typo.

Fri Sep 10 06:34:20 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* gdb.texinfo: Fix a few typos.

Wed Sep  8 09:11:52 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo: Clarify how well it works with Fortran.

	* stabs.texinfo (Stabs In ELF, Statics, ELF Transformations):
	More on relocating stabs in ELF files.

Tue Sep  7 13:45:02 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stabs In ELF): Talk about N_FUN value.

Mon Sep  6 19:23:18 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Local Variable Parameters): Talk about nameless
	parameters on VAX.

Fri Sep  3 17:06:08 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: @up/@down -> @raisesections/@lowersections

Fri Sep  3 12:04:15 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Make info author notice match the TeX author notice.

Tue Aug 31 13:21:06 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* stabs.texinfo: Initial-caps all words in node names and
	non-trivial words in section names.

Mon Aug 30 11:13:16 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Many minor cleanups.

	* stabs.texinfo: Remove @deffn except from Expanded Reference node.

Sat Aug 28 12:08:09 1993  David J. MacKenzie  (djm@edison.eng.umd.edu)

	* stabs.texinfo: Remove full description of big example.
	It's not really helpful; just use pieces of it where appropriate.
	Add more Texinfo formatting directives (@samp, etc.).
	Use @deffn to define stab types.
	Eliminate some wordiness.  Break up some nodes.
	Add an (alphabetized) index of symbol types.
	Use consistent capitalization style in node and section names.

Thu Aug 26 06:36:31 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* gdb.texinfo:  Change typo "Two two" to "The two".

Sun Aug 22 12:15:18 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (XCOFF-differences): Remove references to
	non-existent types N_DECL and N_RPSYM.

	* stabs.texinfo (String Field): Say that type attributes bug is
	fixed in GDB 4.10, since it is.

	* stabs.texinfo: Clean up djm cleanups, and more cleanups of my own.

Sat Aug 21 04:32:28 1993  David MacKenzie  (djm@cygnus.com)

	* stabs.texinfo: Formatting cleanups.

Fri Aug 20 20:49:53 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: When explaining the n_type of a stab, standardize
	how we do it ('#' as a comment indicator, "36 is N_FUN" as text,
	no tabs, use @r).
	(Global Variables): Clean up.

Tue Aug 17 15:57:27 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stack Variables): Re-write.

Mon Aug 16 21:20:08 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stabs-in-elf): Talk about getting the start
	addresses of a source file.  Also revise formatting.
	Change "object module" or "object file" to "source file".
	Various: Miscellaneous cleanups.

Thu Aug 12 15:11:51 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Point to mangling info in gcc's gpcompare.texi.

Tue Aug 10 16:57:49 1993  Stan Shebs  (shebs@rtl.cygnus.com)

	* gdbint.texinfo: Removed many nonsensical machine-collected
	host and target conditionals, described some of the remainder.

Tue Aug 10 13:28:30 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdbint.texinfo (Getting Started): Use @itemize, not @table.

	* gdbint.texinfo (Top): Add name to @top line, and re-write the
	paragraph which follows.

	* gdbint.texinfo (Host): Use @code not @samp for Makefile
	variables.  Looks better and avoids overful hbox.

Fri Jul 30 18:26:21 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Procedures): Improve stuff on nested functions.

Thu Jul 29 15:10:58 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* remote.texi: (MIPS Remote) clearer doc for set/show timeout,
	retransmit-timeout

Thu Jul 29 13:16:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdbint.texinfo: Update statement about `some ancient Unix
	systems, like Ultrix 4.0' to Ultrix 4.2.

Wed Jul 28 15:26:53 1993  Roland H. Pesch  (pesch@el_bosque.cygnus.com)

	* h8-cfg.texi, all-cfg.texi: new flag GDBSERVER

	* Makefile.in: depend on remote.texi rather than gdbinv-s.texi

	* remote.texi: (Server) New node on gdbserver.  (Remote Serial,
	ST2000 Remote, MIPS Remote): mention `host:port' syntax for TCP.

	* remote.texi: new name for former gdbinv-s.texi

	* gdb.texinfo: use remote.texi rather than gdbinv-s.texi

Wed Jul 28 08:26:24 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdbinv-s.texi: Documented timeout and retransmit-timeout
	variables for MIPS remote debugging protocol.

Mon Jul 26 13:00:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): FORTRAN LOGICAL fix.

Tue Jul 20 16:30:41 1993  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* Makefile.in (refcard.dvi): Use srcdir where necessary.

Mon Jul 19 12:02:50 1993  Roland H. Pesch  (pesch@cygnus.com)

	* gdb.texinfo: repair conditional bugs in text markup

Fri Jul 16 18:57:50 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, all-cfg.texi, h8-cfg.texi: introduce MOD2 switch
	to select Modula-2 material.

Thu Jul 15 13:15:01 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Cleanups regarding statics.

	* gdbinv-s.texi (Bootstrapping): Document exceptionHandler.
	(Debug Session): Mention exceptionHandler.  Add xref to Bootstrapping.

Mon Jul 12 13:37:02 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: N_MAIN is sometimes used for C.

Fri Jul  9 09:47:02 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdbint.texinfo (Host, Target Conditionals): Remove TM_FILE_OVERRIDE.

Tue Jul  6 12:41:28 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo (Target Conditionals): Remove NO_TYPEDEFS,
	removed from the code by Kingdon. 

Tue Jul  6 12:24:34 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.texinfo (Break Commands): Remove stuff about flushing terminal
	input when evaluating breakpoint conditions; the bug has been fixed.

	* gdb.texinfo (Continuing and Stepping): Argument to "continue"
	sets the ignore count to N-1, not to N.

Thu Jul  1 14:57:42 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* refcard.tex (\hoffset): correct longstanding error to match
	  intended offset; avoids cutting off edge on some printers

Wed Jun 30 18:23:06 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Parameters): Say that order of stabs is significant.

Fri Jun 25 21:34:52 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Common Blocks): Say what Sun FORTRAN does.

Fri Jun 25 16:15:10 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* Makefile.in: (REFEDITS) new var to control whether PS or CM
	fonts and whether US or A4 paper for GDB refcard; (refcard.dvi)
	collect sed edits if any, apply to refcard before formatting;
	(refcard.ps) stop implying PS fonts if PS output requested;
	(lrefcard.ps) delete extra target for variant PS fonts

	* refcard.tex: parametrize papersize dependent info, collect
	  in easily replaced spot

	* a4rc.sed: new file, edits to refcard for A4 paper

Fri Jun 25 14:21:46 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Type -16 is 4 bytes.

Wed Jun 23 15:02:50 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Negative Type Numbers): Minor character cleanups.

Tue Jun 22 16:31:52 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Express disapproval of 'D' symbol descriptor
	politely rather than rudely.

Fri Jun 18 19:42:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Document common blocks.

Fri Jun 18 12:12:57 1993  Fred Fish  (fnf@cygnus.com)

	* stabs.texinfo:  Add some basic info about stabs-in-elf.

Fri Jun 18 13:57:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Top): Minor cleanup.

Mon Jun 14 16:16:51 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)

	* Makefile.in (install-info): remove parentdir support

Tue Jun 15 18:11:39 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo (Copying): delete this node and references to it;
	RMS says this manual need not carry GPL. (passim): Improvements
	from last round at FSF, largely due to Ian Taylor review, and
	minor formatting improvements.

	* gdbinv-s.texi (passim): Improvements from last round at FSF,
	largely due to Ian Taylor review. (Debug Session): minor edits to
	new text.

Sun Jun 13 12:52:39 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in (realclean): Remove info and dvi files too.

Sat Jun 12 16:09:22 1993  Jim Kingdon  (kingdon@cygnus.com)

	* {all,h8}-config.texi: Rename to *-cfg.texi for 14 char filenames.
	* Makefile.in: Change accordingly.  gdb-config.texi -> gdb-cfg.texi.
	* gdb.texinfo: Change accordingly.

	* stabs.texinfo: Clean up N_{L,R}BRAC.  Discuss what addresses of
	N_{L,R}BRAC,N_SLINE are relative to.

Fri Jun 11 15:15:55 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in (GDBvn.texi): Update atomically.

Wed Jun  9 10:58:16 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdbinv-s.texi (Debug Session): Document exceptionHook.

Tue Jun  8 13:42:04 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.texinfo (Print Settings): Move all stuff relating to symbolic
	addresses together.  Also motivate the set print symbol-filename
	command and suggest other solutions.

Tue Jun  1 22:46:43 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.texinfo (set print elements):  Note that the number of
	elements is set to unlimited by "set print elements 0".

Mon May 31 08:06:55 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo (Builtin Type Descriptors): Try to clarify what
	NF_LDOUBLE means.
	(Stab Types): Include Solaris stab types.
	(Procedures): Document Solaris extensions.

Thu May 27 06:20:42 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.texinfo:  Add `set print symbol-filename' doc.

Wed May 26 00:26:42 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Arrays): Talk about type definition vs. type
	information.

	* stabs.texinfo (Builtin Type Descriptors): Talk about omitting
	the trailing semicolon.

Tue May 25 14:49:42 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Line Numbers, Source Files): Re-write these two nodes
	and merge in other parts of the document addressing these subjects.
	gdbint.texinfo (XCOFF): Remove info which is now in stabs.texinfo.

	* stabs.texinfo (Subranges, Arrays): Try to explain about the semicolon
	at the end of a range type.

	* stabs.texinfo (Subranges): "A offset" and "T offset" are not
	AIX extensions.

Mon May 24 09:00:33 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Stabs Format):  Misc fixes.

Sat May 22 10:40:56 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Constants):  Allow an `e' constant to be non-enum.
	(Traditional builtin types): Document convex convention for long long.
	(Negative builtin types): Discuss type names, and misc fixes.

Fri May 21 11:20:31 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Builtin Type Descriptors): Document the floating
	point types used with @samp{R} type descriptor.
	(Symbol Descriptors): Describe how to handle conflict between
	different meanings of @samp{P} symbol descriptor.

Thu May 20 13:35:10 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo: Remove node Quick Reference and put its children
	directly under the main menu.

	* stabs.texinfo: Many more changes to bring it into line with
	AIX documentation and reality.  I think it now has all the
	information from the AIX documentation, except that I burned
	out when I got to variant records (Pascal and Modula-2) and
	all the COBOL types.  Oh well, we can add them later when we're
	worrying more about those languages.

	* stabs.texinfo (Automatic variables): Talk about what it means
	to omit the symbol descriptor.

Tue May 18 17:59:18 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* stabs.texinfo (Parameters): Add "(sometimes)" when describing
	gcc2 behavior with promoted args.

Fri May 14 21:35:29 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: include readline appendices in info version of manual

Fri May  7 11:56:18 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdbinv-s.texi (Remote Serial): describe new ^C behavior in
	target remote.

	* gdb.texinfo (Machine Code): more index entries for disassemble

Fri May  7 10:12:30 1993  Fred Fish  (fnf@cygnus.com)

	* Clarify the intended use of the gdb-testers and gdb-patches
	mailing lists, and shrink gzip comment.

Thu May  6 16:39:50 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo (Shell Commands): do not mention SHELL env var in
	DOSHOST configuration of manual.

	* gdb.texinfo (MIPS Stack): new node.

	* all-config.texi (MIPS) new switch.

	* gdbinv-s.texi (Nindy Options) Remove two instances of future
	tense; (MIPS Remote) new node.

	* gdb.texinfo (passim) rephrases to work around makeinfo @value
	bug; (Environment) less passive, other small cleanups in text about
	.cshrc/.bashrc; (Invoking GDB) new MIPS Remote menu entry;
	(Remote) new MIPS Remote menu entry.

Thu Apr 29 09:36:25 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo: Many changes to include information from the
	AIX documentation.

	* gdb.texinfo (Environment): Mention pitfall with .cshrc.

Tue Apr 27 14:02:57 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdbint.texinfo (new node Debugging GDB, elsewhere):
	Move a bunch of information from ../README.
	(Getting Started): New node.

Fri Apr 23 17:21:13 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdbinv-s.texi, gdb.texinfo: include Hitachi SH target

	* gdb.texinfo: advance manual revision dates to present

	* gdbinv-s.texi, gdb.texinfo, all-config.texi, h8-config.texi:
	stop using silly Roman numerals in @set variable names

Fri Apr 23 07:30:01 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo (Parameters): Keep trying to get this right.

Wed Apr 21 15:18:47 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo (Parameters): More on "local parameters".

Mon Apr 19 08:00:51 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo (Parameters): Re-do "local parameters" section.

Sun Apr 18 09:47:45 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo (Symbol descriptors): Re-do using @table and @xref.
	(Parameters): Rewrite.
	(xcoff-differences, Sun-differences): Minor changes.

Thu Apr 15 02:35:24 1993  John Gilmore  (gnu@cacophony.cygnus.com)

	* stabs.texinfo:  Minor cleanup.

Wed Apr 14 17:31:00 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdbint.texinfo: Minor xcoff stuff.

Wed Apr  7 14:11:07 1993  Fred Fish  (fnf@cygnus.com)

	* gdbint.texinfo:  Update for new config directory structure.
	Add info about internal type data structures.

Mon Apr  5 09:06:30 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (SFILES_INCLUDED): gdb-config.texi is no longer in
	$(srcdir).
	(gdb-config.texi): Depend on file in $(srcdir).

Fri Apr  2 16:55:13 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo: Fixes about N_SO.

Fri Mar 26 18:00:35 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: include list of nonstandard init file names

	* *-config.texi: new switch GENERIC for text that applies *only*
	to (usual) multiple-target version of manual

	* gdb.texinfo, gdbinv-s.texi: Update conditional markup to correct
	h8 config

	* gdb.texinfo: depend on latest fixed makeinfo, use conditionals
	in menus (rather than conditionally selected multiple alternative
	menus).

	* Makefile.in: define and use DOC_CONFIG var to select
	configuration for GDB user manual.

	* gdb-config.texi: delete from repository, generate from Makefile.

	* all-config.texi: normal `generic' configuration file, formerly
	stored as gdb-config.texi

Wed Mar 24 14:03:19 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: add dvi target to build all .dvi files

Tue Mar 23 16:03:24 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, gdvinv-s.texinfo: formatting improvements.

Fri Mar 19 21:46:50 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Doc NO_MMALLOC and NO_MMALLOC_CHECK as
	host conditionals.
	* stabs.texinfo:  More array fixes inspired by Jim's.

Fri Mar 19 10:23:34 1993  Jim Kingdon  (kingdon@cygnus.com)

	* stabs.texinfo: Fixes re arrays and continuations.

	* gdbint.texinfo: Add XCOFF node.

Mon Mar  8 15:52:18 1993  John Gilmore  (gnu@cygnus.com)

	* gdb.texinfo:  Add `set print max-symbolic-offset' doc.

Sun Feb 21 17:09:38 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* stabs.texinfo:  Fix for array types to mention lower bounds.

Thu Feb 18 01:19:49 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Update PTRACE_ARG3_TYPE doc, pull PT_*.

Wed Feb 17 08:15:24 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Remove SET_STACK_LIMIT_HUGE from target defines.

Thu Feb 11 10:38:40 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Fix thinko (NM_FILE => NAT_FILE).  Found
	by Michael Ben-Gershon <mybg@CS.HUJI.AC.IL>.

Wed Feb 10 23:59:19 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Eliminate IBM6000_HOST, document IBM6000_TARGET.

Tue Feb  9 18:26:21 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, gdbinv-s.texi: misc updates

Sat Feb  6 10:25:47 1993  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Brief documentation for longjmp support,
	from an email msg by Stu.

Fri Feb  5 14:10:15 1993  John Gilmore  (gnu@cygnus.com)

	* stabs.texinfo:  Fix description of floating point "range"
	types (which really define basic types).  Reported by Jim Meehan,
	<meehan@src.dec.com>.

	* gdbint.texinfo:  Remove COFF_NO_LONG_FILE_NAMES define, now gone.

Thu Feb  4 13:56:46 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdbint.texinfo: Slightly expand section on supporting a new
	object file format.

Thu Feb  4 01:49:04 1993  John Gilmore  (gnu@cygnus.com)

	* Makefile.in (refcard.ps, lrefcard.ps):  Remove psref.tex
	intermediate file.

Tue Feb  2 12:18:06 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, gdbinv-s.texi: miscellaneous stylistic cleanups

Mon Feb  1 15:35:47 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdbinv-s.texi: z8000 simulator target name is just "sim"

	* gdbinv-s.texi:  Mention that Z8000 simulator can simulate Z8001
	as well as Z8002.

Sat Nov 28 06:51:35 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Add sections on clean design and on how to send
	in changes.

Mon Nov  9 23:57:02 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Add how to declare the result of make_cleanup.

Mon Oct 26 11:09:47 1992  John Gilmore  (gnu@cygnus.com)

	* gdb.texinfo:  Fix typo, reported by Karl Berry.

Fri Oct 23 00:41:21 1992  John Gilmore  (gnu@cygnus.com)

	* gdb.texinfo:  Add opcodes dir to GDB distribution description.

Sat Oct 10 18:04:58 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* gdbint.texinfo: fixed a stray email address (needs @@),
	added @table @code to node "Native Conditionals"

Tue Sep 22 00:34:15 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Describe coding style of GDB.

Mon Sep 21 19:32:16 1992  John Gilmore  (gnu@cygnus.com)

	* stabs.texinfo:  Minor wording changes.

Tue Sep 15 02:57:09 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Improve release doc slightly.

Fri Sep 11 01:34:25 1992  John Gilmore  (gnu@sphagnum.cygnus.com)

	* gdbint.texinfo:  Improve doc of GDB config macros.

Wed Sep  9 16:52:06 1992  John Gilmore  (gnu@cygnus.com)

	* stabs.texinfo:  Remove Bothner's changes for C++ nested types.
	These will be reinserted when examined.

Mon Aug 24 01:17:55 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Make a start at documenting all the #if macros
	in GDB.  At least list them all, and start separating them into
	host-specific and target-specific.

Tue Aug 18 15:59:13 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdbinv-s.m4.in: refrain from using @cartouche for just a few
	examples (not consistent w others).  
	gdb.texinfo: issue disclaimer paragraph on cmdline options only
	for generic vn of doc

Tue Aug 18 14:53:27 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: always create installation directories.

Tue Aug 18 14:11:50 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: in h8 config, do not describe searching commands.

Mon Aug 17 18:07:59 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo, none.m4, h8.m4, gdbinv-s.m4.in: improve H8/300
	  conditionals; introduce a few generic switches that may be
	  useful for other cross-dev or dos-hosted configs.

	* gdb.texinfo: fix typo in "info reg" description

Sun Aug 16 01:16:18 1992  John Gilmore  (gnu@cygnus.com)

	* stabs.texinfo:  Minor updates from running TeX over it.
	* Makefile.in (stabs.dvi, stabs.ps):  Add.

Sat Aug 15 20:52:24 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* stabs.texinfo:  Stabs documentation, written by Julia Menapace.
	First pass at converting it to texinfo.

Sat Aug 15 03:14:59 1992  John Gilmore  (gnu@cygnus.com)

	* gdb.texinfo, refcard.tex:  Document mult args on `info reg'.
	* Makefile.in (refcard.ps, lrefcard.ps):  Add missing $(srdir).

Fri Aug 14 21:08:47 1992  John Gilmore  (gnu@cygnus.com)

	* gdbint.texinfo:  Add section on partial symbol tables.

Sat Jun 20 16:31:10 1992  John Gilmore  (gnu at cygnus.com)

	* gdb.texinfo:  document `set remotedebug' and `set
	rstack_high_address'.

Thu May 14 17:09:48 1992  Roland H. Pesch  (pesch@fowanton.cygnus.com)

	* gdb.texinfo: slight expansion of new text on reading info files
	* gdbinv-s.m4.in: correct and expand info on cross-debugging
	H8/300 from DOS.

Tue May 12 12:22:47 1992  John Gilmore  (gnu at cygnus.com)

	* gdb.texinfo:  `info user' => `show user'.  Noticed by David Taylor.

Mon May 11 19:06:27 1992  John Gilmore  (gnu at cygnus.com)

	* gdb.texinfo:  Say how to read the `info' files.

Tue May  5 12:11:38 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: gm4 -> m4.

Fri Apr 10 17:50:43 1992  John Gilmore  (gnu at rtl.cygnus.com)

	* gdb.texinfo:  Update for GDB-4.5.  Move `Formatting
	Documentation' ahead of `Installing GDB' to match README.
	Update shared library doc, -readnow and -mapped, and directory
	structure (add glob and mmalloc).  Update configure doc.	

Tue Mar 24 23:28:38 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in: remove $(srcdir) from gdb.info rule.

Sat Mar  7 18:44:50 1992  K. Richard Pixley  (rich@rtl.cygnus.com)

	* Makefile.in: commented out gdb-all.texinfo rule.  This is
	  temporary.

Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)

	* Makefile.in, configure.in: removed traces of namesubdir,
	  -subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
	  copyrights to '92, changed some from Cygnus to FSF.

Fri Dec 13 09:47:31 1991  John Gilmore  (gnu at cygnus.com)

	* gdb.texinfo:  Improve how we ask for bug reports.

Tue Dec 10 04:07:21 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: infodir belongs in datadir.

Fri Dec  6 23:57:34 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: remove spaces following hyphens, bsd make can't
	  cope.  install using INSTALL_DATA.  added clean-info.  added
	  standards.text support. 

Thu Dec  5 22:46:12 1991  K. Richard Pixley  (rich at rtl.cygnus.com)

	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
	  and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
	  and mandir now keyed off datadir by default.


Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
