2002-06-11  Nick Clifton  <nickc@cambridge.redhat.com>

	Import the following patches from the FSF GCC sources:
	2002-03-25  Zack Weinberg  <zack@codesourcery.com>

	* texi2pod.pl: Handle @end ftable and @end vtable.

	2001-12-12  Matthias Klose  <doko@debian.org>

	* texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows
	generation of more than one man page from one source.
	Add '-' to set of valid chars for an identifier.
	Let -D option accept flags of the form <flag>=<value>.
	Use \s+ for whitespace detection in '@c man' lines.
	Handle @set and @clear independent of $output.
	Substitute all @value{}'s in a line.

	2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* texi2pod.pl: Handle @ifnottex, @iftex and @display.  Handle @var
	in verbatim blocks specially.  Handle @unnumbered, @unnumberedsec
	and @center.  Allow [a-z] after @enumerate.  Handle 0 and numbers
	greater than 9 in enumerations.

	2001-07-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* texi2pod.pl: Handle @r inside @item.

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

	* fdl.texi: New file.

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

	* standards.texi: Import February 14, 2002 version.
	* make-stds.texi: Import 2001 version.

2002-01-26  Hans-Peter Nilsson  <hp@bitrange.com>

	* Makefile.in (install): Depend on install-info.

2001-03-25  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* texi2pod.pl: New file (from gcc/contrib).

1999-04-01  Jim Blandy  <jimb@zwingli.cygnus.com>

	* add-log.el, add-log.vi: New files.

1999-01-20  Angela Marie Thomas (angela@cygnus.com)

	* comp-tools-verify: Remove some checks that are no longer valid.

1998-12-03  Nick Clifton  <nickc@cygnus.com>

	* targetdoc/fr30.texi: New document.
	
1998-10-01  Angela Marie Thomas (angela@cygnus.com)

	* comp-tools-fix, cross-tools-fix: Replace /usr/include
	with ${FIXINCDIR}.

1998-08-11  Doug Evans  <devans@canuck.cygnus.com>

	* make-rel-sym-tree (version): Update calculation.

1998-06-12  Ian Lance Taylor  <ian@cygnus.com>

	* configure.texi: Various additions.
	* Makefile.in (TEXI2HTML, DVIPS): New variables.
	(standards.ps): New target.
	(configure.dvi): Copy .tin files in as well.
	(configure.ps, configure.html): New targets.
	(clean): Remove configdev.jpg and configbuild.jpg.
	* configdev.fig: New file.
	* configdev.ein: New file (EPS version of configdev.fig).
	* configdev.jin: New file (JPEG version of configdev.fig).
	* configbuild.fig: New file.
	* configbuild.ein: New file (EPS version of configbuild.fig).
	* configbuild.jin: New file (JPEG version of configbuild.fig).

1998-06-10  Ian Lance Taylor  <ian@cygnus.com>

	* configure.texi: New file.
	* configdev.tin: New file.
	* configbuild.tin: New file.
	* Makefile.in (MAKEINFO): Use makeinfo from texinfo directory if
	it exists.
	(TEXI2DVI): Likewise for texi2dvi.
	(INFOFILES): Add configure.info.
	(DVIFILES): Add configure.dvi.
	(info): Only build info files if the source files exist.
	(install-info): Only install info files if they exist.
	(dvi): Only build DVI files if the sources files exist.
	(configure.info): New target.
	(configure.dvi): New target.
	(clean): Remove configdev and configbuild derived files.

	Remove obsolete documentation.
	* intro.texi: Remove.
	* install.texi: Remove.
	* config-names.texi: Remove.
	* screen1.eps: Remove.
	* screen1.obj: Remove.
	* screen2.eps: Remove.
	* screen2.obj: Remove.
	* Makefile.in: Remove references to the above.

Thu May 21 14:34:51 1998  Nick Clifton  <nickc@cygnus.com>

	* targetdoc/arm-interwork.texi: Add note about ignoring linker
	warning message when using --support-old-code.

Mon May 18 14:27:37 1998  Angela Marie Thomas (angela@cygnus.com)

	* Install.in, comp-tools-fix, comp-tools-verify, cross-tools-fix:
	Use $GCCvn rather than substitute everywhere.

Thu May 14 14:43:10 1998  Nick Clifton  <nickc@cygnus.com>

	* targetdoc/arm-interwork.texi: Document dlltool support of
	interworking. 

Thu May  7 16:49:38 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* Install.in: Remove references to TCL_LIBRARY, TK_LIBRARY,
	and GDBTK_FILENAME.

Wed Apr  1 17:11:44 1998  Nick Clifton  <nickc@cygnus.com>

	* targetdoc/arm-interwork.texi: Document ARM/thumb interworking. 

Tue Mar 31 15:28:20 1998  Ian Lance Taylor  <ian@cygnus.com>

	* standards.texi, make-stds.texi: Update to current FSF versions.
	* Makefile.in (standards.info): Depend upon make-std.texi.

Tue Mar 24 16:13:26 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues
	for NT native builds. 

Mon Mar  9 16:41:04 1998  Doug Evans  <devans@canuck.cygnus.com>

	* make-rel-sym-tree (binprogs): Add objcopy.

Tue Feb 24 18:11:58 1998  Doug Evans  <devans@canuck.cygnus.com>

	* make-rel-sym-tree: as.new -> as-new, ld.new -> ld-new
	nm.new -> nm-new.  Make symlinks to crt*.o.

Fri Nov 21 12:54:58 1997  Manfred Hollstein <manfred@s-direktnet.de>

	* Makefile.in: Add --no-split argument to avoid creating files
	with names longer than 14 characters.

Thu Sep 25 13:13:11 1997  Jason Molenda  (crash@pern.cygnus.com)

	* intro.texi: Add closing ifset.

Mon Sep  1 10:31:32 1997  Angela Marie Thomas (angela@cygnus.com)

	* Install.in: Move setting HOST and TARGET to the beginning
	of the file for editing convenience.

Mon Sep  1 10:28:37 1997  Angela Marie Thomas (angela@cygnus.com)

	* Install.in.: More friendly options/messages when extracting
	from a file instead of a tape device.

Tue Jun 17 15:50:23 1997  Angela Marie Thomas (angela@cygnus.com)

	* Install.in: Add /usr/bsd to PATH for Irix (home of compress)

Thu Jun 12 13:47:00 1997  Angela Marie Thomas (angela@cygnus.com)

        * Install.in (show_exec_prefix_msg): fix quoting

Wed Jun  4 15:31:43 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* rebuilding.texi: Removed.

Sat May 24 18:02:20 1997  Angela Marie Thomas (angela@cygnus.com)

	* cross-tools-fix:  Remove host check since it doesn't matter
	for this case.
	* Install.in (guess_system): clean up more unused hosts.
	* Install.in, cross-tools-fix, comp-tools-fix, comp-tools-verify:
	Hack for host check to not warn the user for certain cases.

Fri May 23 23:46:10 1997  Angela Marie Thomas (angela@cygnus.com)

	* subst-strings: Remove a lot of unused code
	* Install.in: Remove reference to TAPEdflt, use variables instead of
	string substitution when able.

Fri Apr 11 17:25:52 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change file named in AC_INIT to Makefile.in.
	* configure: Rebuild.

Fri Apr 11 18:12:42 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Install.in (guess_system): Back out change to INSTALLHOST to
	call all IRIX systems "mips-sgi-irix4"

	* Makefile.in: Remove references to configure.texi and cfg-paper.texi.

Thu Apr 10 23:26:45 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* srctree.texi, emacs-relnotes.texi, cfg-paper.texi: Remove.
	* Install.in: Remove Ultrix-specific hacks.
	Update Cygnus phone numbers.
	(guess_system): Remove some old systems (Ultrix, OSF1 v1 & 2,
	m68k-HPUX, m68k SunOS, etc.)
	(show_gnu_root_msg): Remove.
	Removed all the remove option code.

Thu Apr 10 23:23:33 1997  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* configure.man, configure.texi: Remote.

Mon Apr  7 18:15:00 1997  Brendan Kehoe <brendan@cygnus.com>

        * Fix the version string for OSF1 4.0 to recognize either
        V4.* or X4.*

Mon Apr  7 15:34:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* standards.texi, make-stds.texi: Update to current FSF versions.

Tue Nov 19 15:36:14 1996  Doug Evans  <dje@canuck.cygnus.com>

	* make-rel-sym-tree: New file.

Wed Oct 23 00:34:07 1996  Angela Marie Thomas (angela@cygnus.com)

	* Lots of patches from progressive...
 	* Install.in: restore DDOPTS for AIX 4.x
 	* Install.in, subst-strings: add case for DG Aviion
 	* subst-strings: fix typo in INSTALLdir var setting
 	* comp-tools-verify: set SHLIB_PATH for shared libs
 	* Install.in, subst-strings:  add case for solaris2.5
 	* Install.in: fix regression for hppa1.1 check
 	* comp-tools-fix: set LD_LIBRARY_PATH
 	* comp-tools-fix: If fixincludes fixes /usr/include/limits.h,
 	install it as syslimits.h.

Wed Oct 16 19:20:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Install.in (guess_system): Treat powerpc-ibm-aix4.1 the same as
	rs6000-ibm-aix4.1, since the compiler now uses common mode by
	default.

Wed Oct  2 15:39:07 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* configure.in (AC_PROG_INSTALL): Added.
	* Makefile.in (distclean): Remove config.cache.

Wed Oct  2 14:33:58 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* configure.in: Switch to autoconf configure.in.
	* configure: New.
	* Makefile.in: Use autoconf-substituted values.

Tue Jun 25 18:56:08 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (datadir): Changed to $(prefix)/share.

Fri Mar 29 11:38:01 1996  J.T. Conklin  (jtc@lisa.cygnus.com)

	* configure.man: Changed to be recognized by catman -w on Solaris.

Wed Dec  6 15:40:28 1995  Doug Evans  <dje@canuck.cygnus.com>

	* comp-tools-fix (fixincludes): Define FIXPROTO_DEFINES from
	.../install-tools/fixproto-defines.

Sun Nov 12 19:31:27 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* comp-tools-verify (verify_cxx_initializers): delete argv,
	argc declarations, add -static to compile line.
	(verify_cxx_hello_world): delete argv, argc declarations, add
	-static to compile line.

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

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

Mon Aug 28 17:25:49 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Install.in (PATH):  add /usr/ucb to $PATH (for SunOS 4.1.x).

Tue Aug 15 21:51:58 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Install.in (guess_system): Match OSF/1 v3.x as the same as 
        v2.x--v2.x binaries are upward compatible.

Tue Aug 15 21:46:54 1995  Jason Molenda  (crash@phydeaux.cygnus.com)

	* Install.in (guess_system): recognize HP 9000/800 systems as the
	same as HP 9000/700 systems.

Tue Aug  8 13:11:56 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Install.in: For emacs, run show_emacs_alternate_msg and exit.
	(show_emacs_alternate_msg): New message saying how emacs can't be
	installed in an alternate prefix.

Thu Jun  8 00:42:56 1995  Angela Marie Thomas  <angela@cirdan.cygnus.com>

        * subst-strings: change du commands to $BINDIR/. & $SRCDIR/. just
        in case they are symlinks.

Tue Apr 18 14:23:10 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* cdk-fix: Extracted table of targets that don't need their
	  headers fixed from gcc's configure script.

	* cdk-fix, cdk-verify: Use ${HOST} instead of ||HOSTstr||

	* cdk-fix, cdk-verify: New files, install script fragments used
	  for Cygnus Developer's Kit.

	* Install.in (do_mkdir): New function.

	* Install.in: Added support for --with and --without options.
	  Changed so that tape commands are not run when extracting 
	  from a file.
	  (do_mt): Changed to take only one argument.

Wed Mar 29 11:16:38 1995  Jason Molenda (crash@phydeaux.cygnus.com)

	* Install.in: catch UNAME==alpha-dec-osf2.x and correct entry for
	alpha-dec-osf1.x
	
Fri Jan 27 12:04:29 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* subst-strings (mips-sgi-irix5): New entry in table.

Thu Jan 19 12:15:44 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Install.in: Major rewrite, bundle dependent code (for example,
	  fixincludes for comp-tools) will be inserted into the Install
	  script when it is generated.

Tue Jan 17 16:51:32 1995  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* Makefile.in (Makefile): Rebuild using $(SHELL).

Thu Nov  3 19:30:33 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (install-info): Depend on info.

Fri Aug 19 16:16:38 1994  Jason Molenda     (crash@phydeaux.cygnus.com)

	* Install.in: set $FIX_HEADER so fixproto can find fix-header.

Fri May  6 16:18:58 1994  Jason Molenda     (crash@sendai.cygnus.com)

	* Makefile.in (install-info): add a semicolon in the if statement.

Fri Apr 29 16:56:07 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* cfg-paper.texi: Update some outdated information.

	* Makefile.in (install-info): Pass file, not directory, as last
	arg to INSTALL_DATA.
	(uninstall): New target.

Thu Apr 28 14:42:22 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure.texi: Comment out @smallbook.

	* Makefile.in: Define TEXI2DVI and TEXIDIR, and use the latter.
	Remove info files in realclean, not clean, per coding standards.
	Remove TeX output in clean.

Tue Apr 26 17:18:03 1994  Jason Molenda (crash@sendai.cygnus.com)

        * Install.in:  fixincludes output is actually put in fixincludes.log,
        but echo'ed messages claim it is fixinc.log.  This is the same
	messages as I logged in March 4 1994, but for some reason we found
	the change hadn't been done.  I'll have to dig through the logs
	and find out what I really did do that day. :)

Mon Apr 25 20:28:19 1994  Jason Molenda   (crash@sendai.cygnus.com)

	* Install.in:  use eval to call do_mt() for Ultrix brokenness.

Mon Apr 25 20:00:00 1994  Jason Molenda   (crash@sendai.cygnus.com)

	* Install.in(do_mt): exit with error status 1 if # of parameters
	!= 3.

Mon Apr 25 19:42:36 1994  Jason Molenda   (crash@sendai.cygnus.com)

	* Install.in:  lose TAPE_FORWARD and TAPE_REWIND, add do_mt()
	to do all tape movement operations.  Currently untested.  Addresses
	PR # 4886 from bull.

	* Install.in: add 1994 to the copyright thing.

Fri Apr 22 19:05:13 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* standards.texi: Update from FSF.

Fri Apr 22 15:46:10 1994  Jason Molenda (crash@cygnus.com)

	* Install.in: Add $DDOPTS, has ``bs=124b'' for all systems except
	AIX (some versions of AIX don't understand bs=124b.  Silly OS).

Mon Apr  4 22:55:05 1994  Jason Molenda (crash@sendai.cygnus.com)

	* Install.in: null out $TOOLS before adding stuff to it
	non-destructively.

Wed Mar 30 21:45:35 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* standards.texi: Fix typo.

	* configure.texi, configure.man: Document --disable-.

Mon Mar 28 13:22:15 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* standards.texi: Update from FSF.

Sat Mar 26 09:21:44 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* standards.texi, make-stds.texi: Update from FSF.

Fri Mar 25 22:59:45 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* configure.texi, configure.man: Document --enable-* options.

Wed Mar 23 23:38:24 1994  Jason Molenda  (crash@sendai.cygnus.com)

	* Install.in: set CPP to be gcc -E for fixincludes.

Wed Mar 23 13:42:48 1994  Jason Molenda  (crash@sendai.cygnus.com)

        * Install.in: set PATH to $PATH:/bin:/usr/bin so we can pick
        up native tools even if the user doesn't have them in his
        path.

        * Install.in: ``hppa-1.1-hp-hpux'' -> ``hppa1.1-hp-hpux''.

Tue Mar 15 22:09:20 1994  Jason Molenda  (crash@sendai.cygnus.com)
        
        * Install.in: TAPE_REWIND and TAPE_FORWARD variables for Unixunaware,
        added switch statement to detect if system is Unixunaware.

Fri Mar  4 12:10:30 1994  Jason Molenda (crash@sendai.cygnus.com)

        * Install.in:  fixincludes output is actually put in fixincludes.log,
        but echo'ed messages claim it is fixinc.log.

Wed Nov  3 02:58:02 1993  Jeffrey Osier  (jeffrey@thepub.cygnus.com)

	* subst-strings:  output TEXBUNDLE for more install notes matching
	* install-texi.in:  PRMS info now exists

Tue Oct 26 16:57:12 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* subst-strings: match solaris*.  Also, add default case to catch
	  and error out for unrecognized systems.

Thu Aug 19 18:21:31 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* Install.in: handle the new fixproto work

Mon Jul 19 12:05:41 1993  david d `zoo' zuhn  (zoo@cirdan.cygnus.com)

	* Install.in: remove "MT=tctl" for AIX (not needed, and barely
	worked anyway)

Mon Jun 14 19:09:22 1993  Jeffrey Osier  (jeffrey@cygnus.com)

	* subst-strings: changed HOST to recognize Solaris for install notes

Thu Jun 10 16:01:25 1993  Jeffrey Osier  (jeffrey@cygnus.com)

	* dos-inst.texi:  new file.

Wed Jun  9 19:23:59 1993  Jeffrey Osier  (jeffrey@rtl.cygnus.com)

        * install-texi.in:        added conditionals (nearly complete)
                                  cleaned up
                                  added support for other releases (not done)

Wed Jun  9 15:53:58 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in (install-info): Use INSTALL_DATA.
	({dist,real}clean): Also delete Makefile and config.status.

Fri Jun  4 17:09:56 1993  Jeffrey Osier  (jeffrey@cygnus.com)

	* subst-strings:  added data for OS_STRING

	* subst-strings:  added support for OS_STRING

Thu Jun  3 00:37:01 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Install.in: pull COPYING and COPYING.LIB off of the tape 

Tue Jun  1 16:52:08 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* subst-strings: replace RELEASE_DIR too

Mon Mar 22 23:55:27 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: add installcheck target

Wed Mar 17 02:21:15 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Install.in: fix 'source only' extraction bug where it looked for
	the src dir under H-<host>/src instead of src; also remove stray
	reference to EMACSHIBIN

Mon Mar 15 01:25:45 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* make-stds.texi: added 'installcheck' to the standard targets

Tue Mar  9 19:48:28 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* standards.texi: added INFO-DIR-ENTRY, updated version from the FSF

Tue Feb  9 12:40:23 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (standards.info): Added -I$(srcdir) to find
	make-stds.texi.

Mon Feb  1 16:32:56 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* standards.texi: updated to latest FSF version, which includes:

	* make-stds.texi: new file

Mon Nov 30 01:31:40 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* install-texi.in, relnotes.texi, intro.texi: changed Cygnus phone
	numbers from the old Palo Alto ones to the new Mtn. View numbers

Mon Nov 16 16:50:43 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: define $(RM) to "rm -f"

Sun Oct 11 16:05:48 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* intro.texi: added INFO-DIR-ENTRY

