2006-03-13  DJ Delorie  <dj@redhat.com>

	* MAINTAINERS: Add self as m32c sim maintainer.

2006-02-23  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (syscall_map): Remove CB_SYS_time / TARGET_SYS_time
	mapping.
	(cris_break_13_handler) <case TARGET_SYS_time>: New case.

2006-01-23  Jim Blandy  <jimb@redhat.com>

	Add simulator for Renesas M32C and M16C.

	* m32c: New directory.
	* configure.ac: Add entry for Renesas M32C.
	* configure: Regenerate.

2006-01-10  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cris-tmpl.c (MY (f_model_insn_before)): Only display basic
	cycle count for the current insn.

2005-12-06  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cpuv10.h, cris/cpuv32.h, cris/cris-desc.c, cris/cris-opc.h,
	cris/decodev10.c, cris/decodev10.h, cris/decodev32.c,
	cris/decodev32.h, cris/modelv10.c, cris/modelv32.c,
	cris/semcrisv10f-switch.c, cris/semcrisv32f-switch.c: Regenerate.

2005-12-05  Hans-Peter Nilsson  <hp@axis.com>

	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.

2005-11-20  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (TARGET_O_RDONLY, TARGET_O_WRONLY): Define.
	(open_map): Use TARGET_O_ACCMODE, TARGET_O_RDONLY and
	TARGET_O_WRONLY.
	(cris_break_13_handler) <case TARGET_SYS_fcntl>: Add support for
	F_GETFL on fd 0, 1 and 2.

2005-11-17  Hans-Peter Nilsson  <hp@axis.com>

	* cris/sim-main.h (struct _sim_cpu): New members last_syscall,
	last_open_fd, last_open_flags.
	* cris/traps.c: Don't include targ-vals.h.
	(TARGET_O_ACCMODE): Define.
	(cris_break_13_handler): Set new _sim_cpu members.
	<case TARGET_SYS_fcntl>: Support special case of F_GETFL.
	Rearrange code as switch.  Emit "unimplemented" abort for
	unimplemented fcntl calls.

	* cris/traps.c (TARGET_SYS_stat): Define.
	(syscall_stat32_map): Add entry for TARGET_SYS_stat.
	(cris_break_13_handler) <case TARGET_SYS_stat>: New case.

2005-11-16  Hans-Peter Nilsson  <hp@axis.com>

	* cris/cris-tmpl.c (MY (f_model_insn_before)): Make sure only the
	low 32 bits are used after an unsigned long cast.

2005-05-28  Hans-Peter Nilsson  <hp@axis.com>

	* cris/Makefile.in (stamp-v32fmloop): Depend on stamp-v10fmloop.

2005-05-26  Chris Demetriou  <cgd@netbsd.org>

	* MAINTAINERS: Update my mail address, move myself to the
	"Past maintainers" section.

2005-05-17  Corinna Vinschen  <vinschen@redhat.com>

	* configure.ac: Add igen to v850 build.
	* configure: Regenerate.

2005-04-29  Paul Brook  <paul@codesourcery.com>

	* common/callback.c (PIPE_BUF): Provide default definition.
	(os_lstat): Use stat if lstat is not available on the host.
	(os_ftruncate): Return EINVAL if not available on the host.
	(os_truncate): Ditto.
	* common/configure.ac: Check for lstat, truncate and ftruncate.
	* common/configure: Regenerate.
	* common/config.in: Regenerate.

2005-04-27  Paul Brook  <paul@codesourcery.com>

	* common/Make-common.in: Add $(EXEEXT) to "run".

2005-04-18  Hans-Peter Nilsson  <hp@axis.com>

	* cris/traps.c (cris_break_13_handler) <case TARGET_SYS_mmap2>:
	For ((len & 8191) != 0 && fd == (USI) -1), don't say this isn't
	implemented.  In call to create_map, pad length argument to 8k. 

2005-04-15  Corinna Vinschen  <vinschen@redhat.com>

	* configure.ac: Add explicit sh64 case.
	* configure: Regenerate.

2005-03-30  Paul Brook  <paul@codesourcery.com>

	* arm/wrapper.c: Provide SIGTRAP and SIGBUS.

2005-03-24  Hans-Peter Nilsson  <hp@axis.com>

	* cris/Makefile.in (stamp-v10fcpu, stamp-v32fcpu): Add kludge to
	include cgen-ops.h in decodev10.c and decodev32.c.
	* cris/sim-main.h: Don't include cgen-ops.h here.
	* cris/arch.c, cris/arch.h, cris/cpuall.h, cris/cpuv10.c,
	cris/cpuv10.h, cris/cpuv32.c, cris/cpuv32.h, cris/cris-desc.c,
	cris/cris-desc.h, cris/cris-opc.h, cris/decodev10.c,
	cris/decodev10.h, cris/decodev32.c, cris/decodev32.h,
	cris/modelv10.c, cris/modelv32.c, cris/semcrisv10f-switch.c,
	cris/semcrisv32f-switch.c: Regenerate.

	* cris/traps.c (cris_break_13_handler) <case
	TARGET_SYS_rt_sigaction>: Rename sa_handler, sa_flags,
	sa_restorer, sa_mask_low, sa_mask_high to target_sa_handler etc.

2005-03-23  Mark Kettenis  <kettenis@gnu.org>

	* cris/configure: Regenerate.

2005-02-28  Jim Blandy  <jimb@redhat.com>

	* d10v/configure.ac, igen/configure.ac, m68hc11/configure.ac,
	mips/configure.ac, mn10300/configure.ac, v850/configure.ac:
	Regenerated, after change to common/aclocal.m4.

2005-02-18  Corinna Vinschen  <vinschen@redhat.com>

	* iq2000: New target subdirectory.
	* configure.ac: Add iq2000 target.
	* configure: Regenerate.

2005-01-29  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (all, clean mostlyclean, distclean maintainer-clean)
	(realclean, install): Fail if subdir make failed.

2005-01-28  Hans-Peter Nilsson  <hp@axis.com>

	* cris: New directory, simulator for Axis Communications CRIS
	including CRIS v32, CGEN-based.
	* configure.ac: Add corresponding configury.
	* configure: Regenerate.

2005-01-17  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: For mips*-*-* and mn10300*-*-* configure the
	common directory.  Remove sparc*-*-* from list.
	
2005-01-11  Andrew Cagney  <cagney@gnu.org>

	* Makefile.in (autoconf-common autoheader-common): Add --force to
	autoconf and autoheader.
	(autoconf-common autoheader-common)
	(autoconf-install autoheader-install): Check for configure.ac, not
	configure.in.
	* configure.ac: Delete AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Replace configure.in.  Requires autoconf 2.59 and
	correctly calls AC_CONFIG_SUBDIRS.
	* configure: Re-generate.

2004-12-01  Andrew Cagney  <cagney@gnu.org>

	* i960, h8500: Delete directory.

2004-11-12  Andrew Cagney  <cagney@gnu.org>

	* d30v, fr30, mn10200, z8k: Delete directory.

2004-03-10  Ben Elliston  <bje@gnu.org>

	* MAINTAINERS: Update my mail address.

2004-01-26  Chris Demetriou  <cgd@broadcom.com>

	* configure.in (mips*-*-*): Configure in testsuite.
	* configure: Regenerate.

2003-10-08  Dave Brolley  <brolley@redhat.com>

	* configure.in: Move frv handling to alphabetically correct placement.

2003-09-03  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (FLAGS_TO_PASS): Pass down $(bindir) and $(mandir).

2003-08-29  Dave Brolley  <brolley@redhat.com>

	* MAINTAINERS: Add myself as maintainer of the FRV port.

2003-08-20  Michael Snyder  <msnyder@redhat.com>
            Dave Brolley  <brolley@redhat.com>

	* frv/: New directory, simulator for the Fujitsu FRV.
	* configure.in: Add frv configury.
	* configure: Regenerate.

2003-08-10  Ben Elliston  <bje@wasabisystems.com>

	* MAINTAINERS: Update my mail address.

2003-08-09  Andrew Cagney  <cagney@redhat.com>

	* MAINTAINERS: Andrew Cagney (mips) and Geoff Keating (ppc) drop
	maintenance.  List igen and sh maintainers.  Mention that target
	and global maintainers pick up the slack.

2003-07-09  Michael Snyder  <msnyder@redhat.com>

	* configure.in: Add testsuite to extra_subdirs for sh.
	* configure: Regenerate.

2003-01-23  Nick Clifton  <nickc@redhat.com>

	* Add sh2e support:

2002-04-02  Alexandre Oliva  <aoliva@redhat.com>

	* sh/gencode.c: Replace sh3e with sh2e except in fsqrt.

2002-08-24  Geoffrey Keating  <geoffk@redhat.com>

	* MAINTAINERS: Update my email address.

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

	* w65/: Delete directory.

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

	* configure.in (extra_subdirs): Mark fr30-*-* as obsolete.
	* configure: Re-generate.

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

	* configure.in (extra_subdirs): Mark d30v-*-* as obsolete.
	* configure: Re-generate.
	
2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in (autoconf-changelog autoheader-changelog): Let name,
	id, date and host to be overriden by NAME, ID, DATE and HOST
	respectfully.  Use ISO dates.

Thu Jun  6 12:34:13 2002  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (ChangeLog): New makefile variable.
	* README-HACKING: Mention the ChangeLog makefile variable.

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

	* tic80/: Delete directory.

2002-05-16  Stephane Carrez  <stcarrez@nerim.fr>

	* MAINTAINERS: Update my email address.

2002-03-06  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* MAINTAINERS: Record self as maintainer of m68hc11 simulator.

2002-03-01  Frank Ch. Eigler  <fche@redhat.com>

	* MAINTAINERS: Record self as a co-maintainer of just common/.

2002-02-07  Nick Clifton  <nickc@cambridge.redhat.com>

	* MAINTAINERS: Point to GDB files describing overall maintaince
	and check-in procedures.

2002-01-10  Nick Clifton  <nickc@cambridge.redhat.com>

	* MAINTAINERS: Add myself for ARM portions.

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

	* configure.in: When Linux or NetBSD, enable PowerPC simulator.
	* configure: Re-generate.

2001-02-16  Ben Elliston  <bje@redhat.com>

	* MAINTAINERS: Add myself for common portions.

2001-01-15  Chris Demetriou  <cgd@broadcom.com>

	* MAINTAINERS: Added self and Andrew for the mips sim.

2000-10-25  Geoff Keating  <geoffk@cygnus.com>

	* MAINTAINERS: Added self and Andrew for the ppc sim.

Thu Jul 27 21:26:26 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Stephane Carrez <Stephane.Carrez@worldnet.fr>:
	* m68hc11: New directory.
	* configure.in: Add.
	* configure: Regenerate.

Tue Jul  4 13:43:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* tic80: New directory.
	* configure.in: Add configury.
	* configure: Regenerate.

2000-04-20  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add testsuite to strongarm
	directories. 
	* configure: Regenerate.

Sat Mar  4 16:48:54 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* MAINTAINERS: New file.  Blank.

1999-11-18  Ben Elliston  <bje@cygnus.com>

	* configure.in: Require autoconf 2.13 and remove obsolete
	invocation of AC_C_CROSS.
	* configure: Regenerate.

1999-09-29  Doug Evans  <devans@casey.cygnus.com>

	* configure.in: Configure the testsuite directory for thumb.
	* configure: Regenerate.

1999-07-16  Ben Elliston  <bje@cygnus.com>

	* configure.in: Configure the testsuite directory for arm.
	* configure: Regenerate.

1999-04-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for MCore target.
	* configure: Regenerate.

1999-03-14  Stan Shebs  <shebs@andros.cygnus.com>

	* Makefile.in (FLAGS_TO_PASS, TARGET_FLAGS_TO_PASS): Remove
 	RUNTEST instead of commenting out, fixes portability problem.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for StrongARM target.
	* configure: Regenerate.

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

	* configure.in: Require autoconf 2.12.1 or higher.

1998-12-08  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* configure.in (i960-*-*): Add.
	* configure: Rebuild.

Wed Nov  4 19:11:43 1998  Dave Brolley  <brolley@cygnus.com>

	* configure.in: Added case for fr30-*-*.
	* configure: Regenerated.

Fri Sep 25 10:12:19 1998  Christopher Faylor <cgf@cygnus.com>

	* ppc/Makefile.in: Add EXEEXT to installed powerpc-eabi-run program
	to allow successful operation on Windows.

Thu May 28 14:59:46 1998 Jillian Ye <jillian@cygnus.com>

	* Makefile.in: Take RUNTEST out of FLAGS_TO_PASS so that make
	check can be invoked recursively.

Wed Apr 29 12:38:53 1998  Mark Alexander  <marka@cygnus.com>

	* configure.in: Build simulator on sparclite and sparc86x targets.
	* configure: Regenerate.

Sun Apr 26 15:21:01 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (autoconf-common autoheader-common): Don't pass -l
	to autoconf and autoheader.

Fri Apr 24 11:14:13 1998  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (autoconf-common autoheader-common): Pass `-l
	../common' to autoconf and autoheader.  Unconditionally run
	autoconf in every subdir.
	(autoconf-changelog autoheader-changelog): Unconditionally run
	commands in every subdir.
	(autoconf-install autoheader-install): Likewise.

Tue Mar 24 17:12:43 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Makefile.in:  Get SHELL from configure.
	* (FLAGS_TO_PASS):  Pass down SHELL.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

Tue Mar 24 11::18:00 1998  Joyce Janczyn  <janczyn@cygnus.com>

	* configure.in (extra_subdirs): Enable igen for mn10300.
	* configure: Re-generate.

Tue Dec  2 10:10:42 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add support for thumb target.

	* configure (extra_subdirs): Add support for thumb target.

Wed Oct  8 12:38:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): Add IGEN directory when MIPS
 	target.
	* configure: Regenerate.
	
Fri Sep 12 13:10:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): v850ea needs igen.
	* configure: Re-generate.
	
Mon Sep  1 16:48:23 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (testdir): When a testsuite directory, add that to
 	the list of confdirs.

Tue Aug 19 11:17:46 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (extra_subdirs): Enable igen ready for V850.

Tue Aug 26 15:14:48 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (w65-*-*, only_if_enabled): Set.
	* configure: Re-generate.
	
Mon Aug 25 16:26:53 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (sparc*-*-*, only_if_enabled): Set
 	only_if_enabled=yes.  Check only_if_enabled before enabling a
 	simulator.
	* configure: Regenerate.
	
Mon Aug 18 10:56:59 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add v850e target.

Mon Aug 18 10:56:59 1997  Nick Clifton  <nickc@cygnus.com>

	* configure.in (extra_subdirs): Add v850ea target.

Fri Jul 25 11:40:47 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (sparc*-*-*): Don't build erc32.
	* configure: Regenerate.

Thu Apr 24 00:47:20 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (m32r-*-*): New target.
	* configure: Regenerate.

	* Makefile.in (autoconf-common, autoconf-changelog): Change $* to $@.

Mon Apr 21 22:57:55 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (.NOEXPORT, MAKEOVERRIDES): Moved to end, BSD make
 	thought that .NOEXPORT was the default target.

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

	* Makefile.in (clean mostlyclean): Restore targets accidentally
	deleted in earlier change.

Thu Apr  3 12:20:32 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (autoheader-common, autoheader-changelog,
 	autoheader-install): Perform autoheader in addition to autoconf.

Wed Apr  2 15:09:05 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (autoconf-install): New target.
	(autoconf-changelog): Try different way to obtain user name.

Wed Apr  2 14:25:52 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* Makefile.in (autoconf-changelog): New target, update
 	ChangeLog for all subdirectories - normally used after
 	autoconf-common target.

Wed Mar 19 14:26:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* configure.in (extra_subdirs): Include testsuite for d30v.
	* configure: Regenerate.
	
	* Makefile.in (RUNTEST, RUNTESTFLAGS): Borrow test rules from
 	../gdb/Makefile.in
	(check): New rules - drive the testsuite.

Mon Mar  3 13:01:00 1997  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Add mn10200 configure lines accidentally
	removed.
	* configure: Regenerated.

Wed Feb 19 10:34:20 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* configure.in (extra_subdirs): Generalize common sub directory
 	into a list.
	(extra_subdirs): For d30v add igen to the list to be built.

Sun Feb 16 16:37:47 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* configure.in (d30v): New target.
	* configure: Regenerated.
	
Wed Feb 19 23:17:13 1997  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Don't require GCC to build the mn10200
	simulator anymore.
	* configure: Rebuilt.

Wed Feb  5 13:28:13 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in: Don't configure any subdirs if no simulator
	is being built.  Don't use erc32 for sparc64.
	* configure: Regenerated.

Tue Feb  4 13:19:39 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (autoconf-common): New target.
	* configure.in: Do configure common.
	* configure: Regenerated.

Thu Jan 23 13:59:52 1997  Stu Grossman  (grossman@critters.cygnus.com)

	* configure configure.in:  Don't configure common anymore.  Files
	from common are now built in the individual simualtor directories.
	This fixes problems with the WinGDB build procedure.

Mon Jan 13 13:16:42 1997  Jeffrey A Law  (law@cygnus.com)

	* configure: Enable the mn10200 simulator.

Wed Nov 20 01:00:36 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (configdirs): Add common.
	* configure: Regenerated.

Fri Nov  1 08:03:30 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-*-linux*): Treat like the other powerpc
	system V based targets.
	* configure: Regenerate.

Thu Oct 17 12:50:08 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (--enable-sim-powerpc): Delete.
	(--enable-sim): Add.
	* configure: Regenerated.

Fri Oct 11 21:13:43 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Only build the V850 simulator if
	we are using gcc.
	* configure: Rebuild.

Sun Sep  8 17:22:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Do build erc32 for DOS and Windows hosts.
	* configure: Rebuild.

Wed Sep  4 18:11:27 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* Makefile.in erc32/Makefile.in:  Don't set srcroot.  This should
	be inherited from the parent.  Remove INSTALL_XFORM and
	INSTALL_XFORM1.  Make INSTALL be set from configure.

Wed Sep  4 15:49:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Only build the MIPS simulator if we are using
	gcc.
	* configure: Rebuild.

Wed Aug 28 19:05:23 1996  Jeffrey A Law  (law@cygnus.com)

	* configure.in (v850-*-*): Added V850 simulator.

Thu Aug  1 17:08:41 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* configure.in (d10v-*-*): Added D10V simulator.

Wed Jun 26 12:33:57 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	(AC_PROG_INSTALL): Added.
	* configure: Rebuilt.

Mon Jun 24 14:18:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Only configure erc32 if using gcc.
	* configure: Rebuild.

Tue Jun  4 09:24:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (sim_target): Build PowerPC simulator for powerpc
	System V.4, Solaris, and Elf targets.
	* configure: Regenerate with autoconf 2.10.

Wed May 22 12:10:49 1996  Rob Savoye  <rob@chinadoll>

	* configure.in: Only built erc32 simulator on Unix hosts as it
	uses pseudo ttys.
	* configure: Regenerated with autoconf 2.8.

Sun May 19 20:20:40 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* erc32: Sparc simulator from the ESA.

Sun Apr  7 21:00:09 1996  Fred Fish  <fnf@cygnus.com>

	From: Miles Bader  <miles@gnu.ai.mit.edu>
	* configure.in: Use AC_CHECK_TOOL to find AR & RANLIB.
	* configure: Regenerate using autoconf.

Thu Feb 22 11:31:50 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (install): Fix typo.

Wed Feb 21 11:59:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Regenerate with autoconf 2.7.

	* Makefile.in (all): Simplify.
	(clean, mostlyclean): SUBDIRS may contain whitespace; fix the loop
	as in the all target.
	(distclean, maintainer-clean, realclean): Likewise.
	(install): Likewise.

Thu Feb 15 18:37:00 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (all): Remove extra '\' char from shell script.

Wed Feb 14 16:43:59 1996  Mike Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (all): Avoid a for loop with zero elements, even if
	the loop will not be executed because of an if statement.

Wed Jan 31 21:48:34 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (install): Add missing semicolon in "fi \".

Thu Nov  9 16:10:56 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* Makefile.in (AR, CC, CFLAGS, CC_FOR_BUILD, RANLIB): Pick up
	defaults from configure.

	* configure.in: Pick up AR, CC, CFLAGS, CC_FOR_BUILD, RANLIB using
	configure defaults.
	(powerpc*-*-eabi*): Build simulator for all powerpc eabi targets
	if either --enable-sim-powerpc is used, or the host compiler is
	GCC.

Wed Nov  8 15:46:49 1995  James G. Smith  <jsmith@pasanda.cygnus.co.uk>

	* configure.in (mips*-*-*): Added "mips" simulator target.
	* configure: Re-generated.

Tue Oct 10 11:08:20 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (BISON): Remove macro.
	(FLAGS_TO_PASS): Remove BISON.

Sun Oct  8 04:26:27 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in:  Explicitly `exit 0' for broken shells.
	* configure:  Rebuilt.

Fri Oct  6 12:03:27 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* common/run.c (main): Initialize the callbacks.

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

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

Fri Aug 25 11:53:43 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc*-*-eabisim*): Only build the simulator if
	the target is powerpc*-*-eabisim*, since it requires GCC to build.

Mon Aug 21 17:53:48 1995  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (powerpc{,le}-*-*): Add psim from Andrew Cagney
	<cagney@highland.com.au>.
	* configure: Regnerate from configure.in.

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

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

Thu Jul 20 15:17:29 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (CC_FOR_BUILD):  Define default and arrange to pass
	submakes either default or passed in value.

Wed Jul  5 14:32:54 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (all, clean, distclean, mostlyclean, realclean,
	  install): Changed targets so that they descend all
	  subdirectories in $(SUBDIRS).
	  (*-all, *-clean, *-install): Removed targets.

	* configure.in: Don't bother with target makefile fragments, they
	  are no longer needed.
	* configure: regenerated.

	* Makefile.in, configure.in: converted to autoconf.
	* configure: New file, generated with autconf 2.4.

Wed May 24 14:48:46 1995  Steve Chamberlain  <sac@slash.cygnus.com>

	* Makefile.in: Support ARM.
	* configure.in: Ditto.

Sun Jan 15 16:53:47 1995  Steve Chamberlain  <sac@splat>

	* Makefile.in: Support W65.
	* configure.in: Ditto.

Sun Mar 13 09:27:50 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Add TAGS target.

Mon Sep 13 12:47:15 1993  K. Richard Pixley  (rich@sendai.cygnus.com)

	* Makefile.in (all-z8k, install-z8k, clean-z8k, all-h8300,
	  install-h8300, clean-h8300, all-h8500, install-h8500,
	  clean-h8500, all-sh, install-sh, clean-sh): do not echo
	  recursion lines.

Wed Jun 30 14:12:05 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: remove endian.h trace from h8500

Sun Jun 13 13:08:58 1993  Jim Kingdon  (kingdon@cygnus.com)

	* Makefile.in: Add distclean, realclean, and mostlyclean targets.

Fri May 21 11:21:16 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: make all of the all-* target (except all-nothing)
	depend on endian.h, so that if we're not building a simulator, we
	don't built endian

Fri May 21 10:55:06 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (check, installcheck): Added dummy targets.

Mon May  3 21:39:43 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (endian): Find endian.c in $(srcdir), and also
	explicitly make it, since some makes apparently don't work with
	VPATH and .c to executable rules (SunOS make for example).

Mon May  3 08:29:01 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in (endian): Add explicit rule for broken makes.

Mon Mar 15 15:47:53 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (info, install-info): New targets.
	(DO_INSTALL): Renamed from INSTALL, which is overridden by the top
	level Makefile.

Wed Feb 10 20:12:27 1993  K. Richard Pixley  (rich@ok.cygnus.com)

	* Makefile.in (endian.h): build endian.h via a temporary file so
	  that we don't leave an incomplete file lying around on
	  interrupted builds.
	  (clean): remove endian, e.h, and endian.h.

Mon Feb  8 11:46:06 1993  Steve Chamberlain  (sac@thepub.cygnus.com)

	* Makefile.in, configure.in: if target isn't supported, build a
	harmless makefile.


