2001-01-24  Fernando Nasser  <fnasser@redhat.com>

	From Gabriel Dos Reis  <gdr@codesourcery.com>
	* lib/dg.exp (dg-trim-dirname): New function.
	(dg-test): Use it to rip directory-name out of file name.
 
2001-01-20  Ben Elliston  <bje@redhat.com>

	* runtest.exp (usage): Replace --mail in usage output.
	* doc/runtest.1: Re-document --mail option, which was erroneously
	removed from this man page in 1994.

2001-01-19  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/target.exp (prune_warnings): Avoid ``.*'' in NetBSD warnings
 	pattern.

2001-01-15  Ben Elliston  <bje@redhat.com>

	* lib/framework.exp (record_test): Invoke a user-defined procedure
	if one is named in local_record_procs($type).

2001-01-12  Richard Earnshaw  <rearnsha@arm.com>

	* target.exp (prune_warnings): Prune warnings from NetBSD linker.

2000-11-29  Drew Moseley  <dmoseley@redhat.com>

	* baseboards/xscale-cygmon.exp: New file for xscale board testing.

2000-10-19  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* baseboards/linux-gdbserver.exp: New file.
	* baseboards/linux-libremote.exp: New file.

2000-08-14  Jimmy Guo  <guo@cup.hp.com>

	* runtest.exp: Eliminate from test_top_dirs entries that
        are subdirectories of other entries, to avoid redundant
        testing on *.exp files in these subdirectories.

2000-08-14  Jimmy Guo  <guo@cup.hp.com>

	* runtest.exp: Reapply part of the backed out change to
	runtest.exp -- handle multiple directories in TCL variables
	dir_to_run and cmdline_dir_to_run.

2000-08-04  Geoff Keating  <geoffk@cygnus.com>

	Back out this change:

	* lib/utils.exp: Add support for a -maxdepth <n>
	option to limit find to <n> directories deep.
	* runtest.exp: Handle multiple directories in TCL variables
	dir_to_run and cmdline_dir_to_run; limit *.exp find to
	one directory level to avoid foo/bar/baz.exp getting tested
	twice (when ${dir} is 'foo', and when ${dir} is 'foo/bar').

2000-08-02  Jimmy Guo  <guo@hpcleara.cup.hp.com>

	* lib/target.exp (default_target_compile,default_target_assemble,
	default_link): Remove env() interface for *_FOR_TARGET TCL vars.

	* lib/framework.exp (setup_xfail): Relax PRMS string pattern
	to allow a more general bug ID specification (without '-').

	* lib/utils.exp: Add support for a -maxdepth <n>
	option to limit find to <n> directories deep.
	* runtest.exp: Handle multiple directories in TCL variables
	dir_to_run and cmdline_dir_to_run; limit *.exp find to
	one directory level to avoid foo/bar/baz.exp getting tested
	twice (when ${dir} is 'foo', and when ${dir} is 'foo/bar').
	
	* runtest.exp: Cleanup reference to $env(MULTIPASS) and
	$env(PASS).  These were added by HP but unused since.

	* lib/framework.exp (pass): make compiler_conditional_xfail_data
	a global, corresponding to a recent change to 'proc fail'.
	
2000-07-21  Frank Ch. Eigler  <fche@redhat.com>

	* example/Makefile.am (SUBDIRS): Remove to prevent automatic recursion
	into `calc'.
	(all-local): Add at least `calc' building back.
	* example/Makefile.in: Regenerated.

Fri Jul 21 16:01:43 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-25 Felix Lee <flee@cygnus.com>:
	* baseboards/tx39-sim.exp: Use idt, not dve linker script.  Delete
 	misleading comments and null statements.

2000-07-08  Angela Marie Thomas <angela@cygnus.com>

	* lib/framework.exp: Use compiler_conditional_xfail_data as a global
	rather than assuming it's set in the level above us.

Fri Jun  9 09:10:48 2000  Catherine Moore  <clm@cygnus.com>

	* lib/libgloss.exp (proc_get_multilibs):  Handle multilib
	pathnames for ports that have defined MULTILIB_EXTRA_OPTS.

Sun Jun  4 12:59:06 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/target.exp (reboot_target): Don't reboot target twice.

Wed May  3 19:41:07 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From Felix Lee <flee@cygnus.com>:
	* example/calc/Makefile.in (install-info): Add target.

Fri Apr 21 13:33:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* example/calc/Makefile.in: Add target info.

Tue Apr 18 15:49:00 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.am (SUBDIRS): Add directory example.
	* Makefile.in: Re-generate.

2000-04-10  Tom Tromey  <tromey@cygnus.com>

	* lib/target.exp (default_target_compile): Put sources before
	$add_flags unless building an object file.

Thu Dec 16 18:27:47 1999  Anthony Green  <green@cygnus.com>

	* lib/target.exp: Put the source file after options, for
	compatibility with libtool.

Fri Mar 31 00:15:54 2000  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* runtest (expectbin): After choosing expectbin, try
	$expectbin-bld.sh and use it instead.

Wed Mar 29 16:13:46 2000  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* lib/target.exp (prune_warnings): Discard not-implemented
	warnings from libgloss/libnosys non-functional functions.

Thu Feb 17 20:24:21 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* baseboards/d10v.exp (gdb_init_command): Force register DMAP2 to
 	0x2000 so that the d10v VM matches the simulator.

2000-02-15  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* lib/target.exp: Strip warnings about dangerous functions.

1999-12-14  Geoff Keating  <geoffk@cygnus.com>

	* baseboards/rom68k-idp.exp: Don't pass -nostdlib to the IDP
	boards when using ELF, they need crtbegin and crtend.

1999-11-09  Jason Molenda  (jsm@bugshack.cygnus.com)

	* config.guess:  Copy current top-level config.guess down to
	the dejagnu/ subdir.  The dejagnu automake configuation should
	probably be changed to grab the top-level config.guess instead
	of the random one in this dir.

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

	* baseboards/arm-sim.exp: Underscore no longer needed for arm-pe
	ports.

Tue Oct 12 11:44:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/libgloss.exp (process_multilib_options): Add support for
 	generic gdb variable option - ``gdb:VARIABLE=VALUE''.

1999-09-28  Angela Marie Thomas <angela@cygnus.com>

	* lib/rsh.exp (rsh_download, rsh_upload): Use rcp_prog if set.

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

	* baseboards/d10v.exp: Request disable of X- and Z-packets
	from GDB, all D10V boards respond incorrectly to these.

1999-08-31  Doug Evans  <devans@casey.cygnus.com>

	* lib/target.exp (default_link): New local proc only--Ls.
	Use it to pick out -L arguments in $ldflags.
	Strip -Wl, from $ldscript.

1999-07-12  Felix Lee  <flee@cygnus.com>

	* config/i960.exp: complain if 'sx' not found.

1999-07-12  Drew Moseley  <dmoseley@cygnus.com>

	* baseboards/strongarm-cygmon.exp: Rename the StrongARM boards as
	follows:
	                EBIX-DB           -> SA-IOP
	                EBSA285           -> EBSA-285
	                BRUTUS            -> SA1100DP
	                SA1100-MULTIMEDIA -> SA1100MM

1999-06-08  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* lib/framework.exp (record_test): Remove weird recursion and
	make sure exit_status is properly set to 1.

1999-06-08  Felix Lee  <flee@cygnus.com>

	* lib/telnet.exp (telnet_open): need to match '(Advanced or Simple)'

1999-06-06  Felix Lee  <flee@cygnus.com>

	* lib/utils.exp (getdirs): When -all, return parents of
	subdirectories too.

1999-06-03  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* lib/remote.exp (standard_send): Add -- to protect strings that
	start with a '-'; also added a verbose 3 statement with the send
	command that is being issued.

Fri May 21 17:36:56 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/target.exp: Don't import CC_FOR_TARGET, CXX_FOR_TARGET or
 	F77_FOR_TARGET from environment.

Thu May 20 10:28:23 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/target.exp: Do not import CFLAGS_FOR_TARGET,
 	LDFLAGS_FOR_TARGET and ASFLAGS_FOR_TARGET from external
 	environment.  GNUMAKE in conjunction with the top level Makefile
 	will set/export these variables according to the needs of the
 	target libraries.  Such a configuration may not be applicable to
 	testsuites.

1999-05-17  Keith Seitz  <keiths@cygnus.com>

	* baseboards/mcore-elf.exp: New file.
	* baseboards/mcore-pe.exp: New file.
	* baseboards/mcore-sim.exp: Don't run gdb's float tests
	and increase timeout.

1999-05-09  Nick Clifton  <nickc@cygnus.com>

	* baseboards/mcore-moto-sim.exp: New file: Support Motorola's
	proprietry MCore simulator.

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

	From HP's WDB group:
	* lib/target.exp: Add ability to pick CC_FOR_TARGET,
 	CFLAGS_FOR_TARGET, etc from env vars, add ability to use HP F77
 	compiler.

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

	* lib/utils.exp (getdirs): Add option -all to get subdirs too.

1999-05-05  Jason Merrill  <jason@yorick.cygnus.com>

	* baseboards/sparclite-sim.exp: Set needs_status_wrapper.
	* baseboards/sparclite-sim-le.exp: Likewise.

1999-05-05  Angela Marie Thomas <angela@cygnus.com>

	* baseboards/strongarm-cygmon.exp: Use "boardtype" instead of "name"
	to avoid variable name clash in lib/target.exp.  Add support for
	ebsa and ebix boards.

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

	Finer control over test runs, from HP's WDB group:
	* runtest.exp: Look for MULTIPASS in env also, define variable or
	env var PASS to choose particular pass in multipass, search for
	subdirs recursively, and if ignoredirs is set, skip over those
	directories.
	(--directory): New argument to limit test running to
	a single directory.
	(usage): Document, fix tabbing.

Mon May  3 11:14:37 1999  Jim Wilson  <wilson@cygnus.com>

	* config/dos.exp (dos_load): Look for cygwin1.dll in addition to
	cygwin.dll.  New variable dll_name for use in download command.
	* lib/libgloss.exp (winsup_include_flags): Change windows to windows.h.

1999-04-27  Felix Lee  <flee@cygnus.com>

	* testsuite/runtest.all/stats.exp: make sure tmpdir is set

	* baseboards/Makefile.am: deleted.
	* config/Makefile.am: deleted.
	* lib/Makefile.am: deleted.
	* configure.in: delete references to the above.
	* Makefile.am: install things correctly.
	
	* testsuite/Makefile.am: set DEJATOOL.

	* configure, Makefile.in, */Makefile.in: regenerated.
	
	* runtest.exp: fix location of config.guess.
	
1999-04-26  Felix Lee  <flee@cygnus.com>

	* lib/libgloss.exp (libgloss_link_flags): remove bogus -L flag.

1999-04-23  Angela Marie Thomas <angela@cygnus.com>

	* baseboards/cf.exp: gdb protocol is case-sensitive.
 
1999-04-19  Nick Clifton  <nickc@cygnus.com>

	* baseboards/Makefile.am (boards): Add mcore-sim.exp

1999-04-13  Angela Marie Thomas <angela@cygnus.com>

	* baseboards/sh-hms-sim.exp:  Pass "-m 18" to standalone sim.

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

	* baseboards/mcore-sim.exp: New file: Definitions for MCore
	simulator support.

1999-04-07  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp (cflags): Add -Wa,-C to suppress
	warnings about symbols being the same as registers.

Fri Apr  2 13:13:51 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* lib/target.exp (prune_warnings): Ignore cc1, cc1plus warnings when
	called with -g and -mabi=32.

1999-03-28  Angela Marie Thomas <angela@cygnus.com>

	* baseboards/x86-cygmon.exp: New file.

1999-03-19  Gavin Romig-Koch  <gavin@cygnus.com>

	* lib/libgloss.exp (get_multilibs): Handle MULTILIB_MATCHES.

1999-03-18  James Ingham  <jingham@cygnus.com>

	* baseboards/strongarm-cygmon.exp: Add a baseboard for the
	strongARM boards.

Fri Mar 12 14:01:31 1999  Jim Wilson  <wilson@cygnus.com>

	* baseboards/d10v-sim.exp, baseboards/d10v.exp (ldflags): Add
	libgloss_link_flags.
	* lib/libgloss.exp (libgloss_link_flags): Map d10v to libnosys.

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

	* baseboards/arm-sim.exp: Set timeout to 800.

1999-03-01  Jim Wilson  <wilson@cygnus.com>

	* baseboards/cf.exp: New file for coldfire.
	* config/cfdbug.exp: Likewise.
	* config/base68k.exp (base68k_ld): Don't call remote_binary if
	no_binary_mode set.  Send return and wait for prompt before sending
	download command.

Sun Feb 28 23:26:36 1999  Geoffrey Noer  <noer@cygnus.com>

	* configure.in: AC_EXEEXT, not AM_EXEEXT.  Require Autoconf 2.13.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

1999-02-25  Felix Lee  <flee@cygnus.com>

	* config/dos.exp (dos_send): rewrite.  add short delay.

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

	* baseboards/arm-sim.exp: Disable uses_underscores for COFF
	targets as the linker now works correctly.

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

	* lib/remote.exp (proc remote_exec): Display timeout in log
	message.

	* lib/target.exp (proc default_target_compile): Add support for
	timeout option. 

	* baseboards/arm-sim.exp: Set gcc,timeout to 500.

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

	* config/dos.exp: Fix typo: need_status_wrapper ->
	needs_status_wrapper. 

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

	* baseboards/arm-sim.exp: Enable uses_underscores for the COFF
	based targets.

1999-02-06  Felix Lee  <flee@cygnus.com>

	* runtest.exp: Don't trap SEGV.

Fri Feb  5 15:43:59 1999  Jeffrey A Law  (law@cygnus.com)

	* lib/target.exp (prune_warnings): Prune +vcompatwarnings output
	from the HP linker.

1999-02-02  Felix Lee  <flee@cygnus.com>

	* lib/libgloss.exp (find_nm): new function.

1999-01-31  Felix Lee  <flee@cygnus.com>

	* Makefile.am: Add cygnus option.  Add doc to SUBDIRS
	* doc/Makefile.am: Add cygnus option.  Add info_TEXINFOS.
	* Makefile.in, */Makefile.in: Regenerated.

1999-01-29  Felix Lee  <flee@cygnus.com>

	* baseboards/fr30-cygmon.exp: New file.

	* config/gdb_stub.exp (gdb_stub_load): Fix another typo.

Fri Jan 29 17:16:25 1999  Edith Epstein  <eepstein@sophia.cygnus.com>

	* lib/remote.exp: Added check for value of $outp.

	* lib/target.exp: Ignore some hppa specific warning messages. Added 
	checks for CC_FOR_TARGET and CXX_FOR_TARGET. Check for redirection 
	and optimization flags.

1999-01-26  Frank Ch. Eigler  <fche@cygnus.com>

	* configure.in: Define BOARDS/CONFIG for automake.
	* baseboards/Makefile.am: Use $(boards) for public files.
	* config/Makefile.am: Use $(config) for public files.

	* configure: Regenerated.
	* Makefile.in: Regenerated.
	* doc/Makefile.in: Regenerated.
	* baseboards/Makefile.in: Regenerated.
	* config/Makefile.in: Regenerated.
	* example/Makefile.in: Regenerated.
	* lib/Makefile.in: Regenerated.	
	
	* testsuite/aclocal.m4: Deleted obsolete file.
	* testsuite/configure.in: Deleted obsolete file.

Sun Jan 17 17:11:52 1999  Jeffrey A Law  (law@cygnus.com)

	* lib/target.exp (prune_warnings): Ignore osf4 NFS messages.

Fri Jan 15 14:19:31 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* lib/libgloss.exp (get_multilibs): Multilib directories can
	contain '=', too.

Thu Jan 14 00:10:25 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* lib/target.exp (prune_warnings): Ignore -g not supported
	warnings.  Ignore o32 as warning when called with -O3 (IRIX 6).

1999-01-07  Felix Lee  <flee@cygnus.com>

	* runtest.exp (setup_target_hook): add missing globals.
	
1998-12-31  Felix Lee  <flee@cygnus.com>

	* config/dos.exp (dos_spawn): ignore optional args.

	* lib/ftp.exp (ftp_upload): ftp error messages vary.
	
1998-12-30  Rob Savoye  <rob@chinadoll.welcomehome.org>

	* doc/{overview,user,ref},sgml: New manual in DocBook format. This
	includes most of the old manual, but is tottally up to date.
	* /doc/Makefile.am, baseboards/Makefile.am, config/Makefile.am,
	example/Makefile.am, lib/Makefile.am, Makefile.am,
	testsuite/Makefile.am: New Makefiles for automake support.
	* /doc/Makefile.in, baseboards/Makefile.in, config/Makefile.in,
	example/Makefile.in, lib/Makefile.in, Makefile.in,
	testsuite/Makefile.in: New Makefiles for autoconf as generated by
	automake.
	* runtest.exp: Look for config.guess in a libexec directory.
	* config.guess: Add so it gets installed correctly.
	* Most Files: Update copyright message, add 1998 and 1999.

1998-10-19  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/rsh.exp(rsh_exec): Check the board info before blindly
	setting RSH to remsh.
	* lib/remote.exp(remote_reboot): Don't close the shell connection,
	or all the remote procedures stop working.

1998-12-29  Ken Raeburn  <raeburn@cygnus.com>

	* lib/framework.exp (istarget): Do string compare on first
	argument, not tcl list containing first argument, against actual
	target name.

1998-12-29  Felix Lee  <flee@cygnus.com>

	* runtest.exp: option --a=b=c wasn't handled right.

	* lib/ftp.exp (ftp_download): ftp error messages vary.

Fri Dec 18 21:48:25 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp(quit_gdb): Don't close connection to the
 	host if it's remote.
	(gdb_comm_go_idle): The "No exec file" prompt has mysteriously
	changed; detect either.

1998-12-11  Felix Lee  <flee@cygnus.com>

	* contrib/test-tool: diagnostic if no test summary,
	and add summary headers, in case of multiple test runs.

	* contrib/test-tool: don't print location of log file if it's not
	really there.

1998-12-10  Felix Lee  <flee@cygnus.com>

	* lib/remote.exp (remote_download): in the non-remote case, try to
	make the copy writable as well as readable.

1998-12-09  Felix Lee  <flee@cygnus.com>

	* contrib/test-tool: spit out test summary first.

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

	* baseboards/i960-sim.exp: New file.

Thu Dec  3 14:03:27 1998  Dave Brolley  <brolley@cygnus.com>

	* baseboards/fr30-elf.exp: New file.
	* baseboards/fr30-sim.exp: New file.

1998-11-30  Gavin Romig-Koch  <gavin@cygnus.com>

	* lib/libgloss.exp (get_multilibs): Multilib options can contain '='.

1998-11-27  Felix Lee  <flee@cygnus.com>

	* config/gdb-comm.exp (gdb_comm_reload): give up after N reboot
	failures.

Mon Nov 23 10:19:06 1998  Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

	* lib/target.exp (prune_warnings): Kill NFS server not responding
	warnings too.

1998-11-18  Jim Wilson  <wilson@cygnus.com>

	* baseboards/tx39-dve.exp: Add cygmon support.

1998-11-05  Jim Wilson  <wilson@cygnus.com>

	* baseboards/vx960.exp (cflags): Set to -mca if cpu is I960CA.
	* config/vxworks.exp (vxworks_unld): Don't run unld if os is
	vxworks5.0.
	(vxworks_load): Sed out carriage returns.

Thu Oct 15 16:33:01 1998  Doug Evans  <devans@canuck.cygnus.com>

	* lib/remote.exp (remote_spawn): Properly pass trailing args
	to call_remote.

Tue Oct 13 21:04:04 1998  Felix Lee  <flee@cygnus.com>

	* config/vxworks.exp: grok preload_obj_flags.  recognize
 	"Operation Fault" messages from the board.  increase reboot_delay
 	so we don't interrupt the countdown-to-autoboot
	* i960glue.c: add missing file.

Mon Oct 12 20:08:06 1998  Mark Alexander  <marka@cygnus.com>

	* baseboards/danlite-elf.exp: New file.

1998-10-11  Michael Meissner  <meissner@cygnus.com>

	* baseboards/powerpc{,le}-sim.exp (needs_status_wrapper): Don't
	set, normal exit returns the appropriate status.

Thu Oct  8 13:49:04 1998  Doug Evans  <devans@canuck.cygnus.com>

	* lib/standard.exp (${tool}_load): Clear up argument order.

	* config/sim.exp: Fix typo in inpfile computation.

	* lib/remote.exp (remote_spawn): Pass $args to call_remote.

Fri Oct  2 00:02:51 1998  Tom Tromey  <tromey@cygnus.com>

	* config/unix.exp (unix_load): Pass `--' to verbose when
	displaying program output.
	* lib/remote.exp (standard_load): Pass `--' to verbose when
	displaying program output.

1998-09-29  Felix Lee  <flee@cygnus.com>

	* config/gdb_stub.exp: watch for the exitcodes generated by the
	testglue wrapper.  workaround for failing to hit _exit breakpoint.

1998-09-18  Rob Savoye  <rob@chinadoll.cygnus.com>

	* testsuite/runtest.all/options.exp: Also pass --srcdir to the
	child runtest being tested, so it doesn't try to execute the
	config files.

Thu Sep 17 18:03:16 1998  Christopher Faylor <cgf@cygnus.com>

	* runtest.exp: Allow // at beginning of path spec since
	this is a valid Windows (Posix?) construction.

Tue Sep 15 17:06:17 1998  Nick Clifton  <nickc@cygnus.com>

	* config/gdb-comm.exp: Catch RDI_open failure.

Mon Sep 14 20:00:57 1998  Michael Snyder  <msnyder@cleaver.cygnus.com>

	* baseboards/m68k-emc.exp: New file.
	* config/m68k-emc.exp: New file.

1998-09-12  Michael Meissner  <meissner@cygnus.com>

	* baseboards/powerpc{,le}-sim.exp: Call process_multilib_options
	so multilib tests can be run.

Fri Sep  4 09:26:47 1998  Nick Clifton  <nickc@cygnus.com>

	* lib/utils.exp (proc prune): Initialise $tmp to an empty list.

Mon Aug 31 13:43:47 1998  Tom Tromey  <tromey@cygnus.com>

	* lib/libgloss.exp (find_gcj): Renamed from find_gjavac; compiler
	now named `gcj'.

Tue Aug 25 13:31:18 1998  Anthony Green  <green@cygnus.com>

	* lib/libgloss.exp (find_gjavac): New function.

1998-08-25  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/framework.exp(check_conditional_xfail): Add spaces to the
	search pattern, so it doesn't match just part of an option.

1998-08-24  Rob Savoye  <rob@chinadoll.cygnus.com>

	* runtest: Update copyright date.
	* runtest.exp: Add compiler_flags as a new global variable.
	* lib/framework.exp: Add new proc, check_conditional_xfail. This
	is like xfail, only it looks in all the compiler options for
	options to determine the actual test result state.
	(pass,fail): If there is a conditional xfail setup, check the
	condition to determine the actual test result state.
	* lib/target.exp(default_target_compile): Set the global
	compiler_opts to the compiler flags used to invoke the compiler.

Sat Aug  1 08:02:15 1998  Mark Alexander  <marka@cygnus.com>

	* config/mn10200-eval.exp: New file.
	* baseboards/mn10200-cygmon.exp: New file.

Wed Jul  8 11:41:21 1998  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Update for recent mn10200 newlib/libgloss
	changes.

Fri Jun  5 11:29:26 1998  Felix Lee  <flee@cygnus.com>

	* config/gdb_stub.exp (gdb_stub_load): fix typo

Thu Jun  4 14:16:32 1998  Felix Lee  <flee@zog.cygnus.com>

	* config/gdb_stub.exp (gdb_stub_wait): watch for "Program exited",
 	which may happen on segv or similar.
	(gdb_stub_start,gdb_stub_wait): need to save exit_brnum and
	abort_brnum.
	(gdb_stub_ld): delete old breakpoints when loading a new program.
	(gdb_stub_spawn): return the right result.

	* baseboards/d10v-sim.exp: add process_multilib_options.

Tue Jun  2 01:51:47 1998  Mark Alexander  <marka@cygnus.com>

	* baseboards/sparclite-sim-le.exp: New file.

Mon Jun  1 00:15:34 1998  Angela Marie Thomas (angela@cygnus.com)

	* config/sim.exp (spawn_sim): Pass sim,options to the standalone
	simulator if set.
	* baseboards/sparclite-sim.exp: Set sim,options and
	gdb,target_sim_options.

Mon Jun  1 01:40:26 1998  Felix Lee  <flee@zog.cygnus.com>

	* runtest.exp(iterate_target_variants_two): concat multiple globs
 	correctly.

Tue May 26 17:56:57 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp(dos_send): Handle text without newlines
	properly.

Sun May 17 17:08:46 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/sh-hms-sim.exp: Need to pass "18" to the target sim
	command in GDB.

	* baseboards/sparclite-sim.exp: Need to pass "-sparclite" to the
 	target sim command in GDB.

Thu May 14 12:03:36 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_exec): Add optional timeout
 	parameter. Move local execution code to...
	(local_exec): New procedure.

Wed May 13 18:41:23 1998  John Metzler  <jmetzler@cygnus.com>

	* runtest.exp (main) : Add printout of schedule of variations

Fri May  8 14:36:49 1998  Doug Evans  <devans@canuck.cygnus.com>

	* baseboards/basic-sim.exp (find_sim): Check $SIM first.
	(setup_sim): Rename arg `name' to `subdir_name'.  Print message
	of simulator found.

Tue Apr 28 14:12:01 1998  Mark Alexander  <marka@cygnus.com>

	* lib/libgloss.exp (libgloss_link_flags): Recognize sparc86x target.

Sun Apr 19 09:29:44 1998  Mark Alexander  <marka@cygnus.com>

	* baseboards/sparclite-sim.exp: New file.

Tue Apr 14 09:55:37 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/telnet.exp: Look for "VxWorks Boot"; be a bit more picky about
	looking for "account name" prompt.

Mon Apr  6 13:14:52 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb-ether.exp(remote_wait): If we see "Exception Cause"
 	from the board, reboot it.

Thu Apr  2 18:22:33 1998  Jim Wilson  <wilson@cygnus.com>

	* lib/target.exp (prune_warning): Extend regexp for Irix6 warnings
	to handle all 3 linker names.

Thu Apr  2 15:39:38 1998  Felix Lee  <flee@zog.cygnus.com>

	* config/sim.exp(sim_spawn): code for remote host was wrong.

Tue Mar 31 00:31:53 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/dos.exp: Disable GDB interrupt tests if we're testing
 	on a DOS host.

Mon Mar 30 23:44:19 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp(dos_send): Don't send string if we've already
 	sent it once.

Thu Mar 26 11:34:18 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_exec): Need to look at the result from
 	wait if we used spawn.

Wed Mar 25 22:20:25 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_exec): More attempts at working around
 	tcl/expect's inadequacies in dealing with processes.
	
1998-03-25  Brendan Kehoe  <brendan@cygnus.com>

	* contrib/test-g++: Only do the libg++ tests if the directory exists.

Wed Mar 25 12:24:25 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/basic-sim.exp(find_sim): Search for the sim rather than
	assuming tool_root_dir points to the right place.

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

	* configure doc/configure example/configure example/calc/configure
 	testsuite/configure:  Regenerate with autoconf 2.12.1 to fix shell
	issues for NT native builds.
	
Sun Mar 15 23:25:06 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/target.exp(default_target_compile): If the compiler produced
 	no output and the compiler execution failed, return a string
 	signifying this. (This is the wrong fix, but...)

	* lib/remote.exp(remote_exec): Don't append arbitary strings to
 	the output from the program; callers must check the exit status.
  	Also, when killing a runaway process, try sending a SIGINT before
 	sending a SIGTERM (may help to terminate gcc properly).

Mon Mar  9 01:54:39 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_exec): Use spawn directly, rather than
 	trying to potentially manage multiple spawn processes on the same
 	host.

Sun Mar  8 21:40:40 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_exec): Use remote_spawn and remote_wait
	if the machine is local.

Fri Mar  6 23:28:59 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/sparclite-cygmon.exp: New file.

Wed Mar  4 18:05:46 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/basic-sim.exp(find_sim): Don't search tool_root_dir
	because it's always the root of the tree.
	(setup_sim): Don't pass tool_root_dir to find_sim.

Tue Mar  3 00:08:53 1998  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/unix.exp: Tell the benchmark code to use alarms.
	* baseboards/basic-sim.exp(find_sim): Use tool_root_dir.
	* baseboards/i960-cyclone.exp: Ditto.
	* baseboards/op50n.exp: Ditto.
	* baseboards/rom68k-idp.exp: Ditto.
	* baseboards/sparclet-aout.exp: Ditto.

Mon Mar  2 21:54:30 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/utils.exp(runtest_file_p): Be a bit more lenient about
	what files we match.

	* lib/telnet.exp: Clean up regexps.
	
	* lib/target.exp(default_target_compile): Use tool_root_dir.
	(target_link, default_link): New functions.

	* lib/remote.exp: Wrap close statements with catch.

	* lib/framework.exp(cleanup): Remove unused global declaration.

	* config/unix.exp(unix_load): Unset LD_LIBRARY_PATH and
 	SHLIB_PATH after loading.

	* config/sim.exp(sim_spawn, sim_wait): New functions.

	* config/i960.exp(i960_spawn, i960_wait): New functions.
	(i960_load): Use spawn and wait.

	* config/gdb-comm.exp: Use tool_root_dir instead of objdir.
	* config/ddb.exp: Ditto.

	* config/gdb_stub.exp: Use tool_root_dir.
	(gdb_stub_spawn, gdb_stub_wait): New functions.
	(gdb_stub_load): Use spawn and wait.
	
	* config/dos.exp(dos_send): Send strings one line at a time.
	(dos_file): Delete files using del instead of rm.

	* config/ddb-ether.exp(ddb_ether_spawn, ddb_ether_wait): New functions.

	* config/cygmon.exp: Set send_initial_cr.

	* runtest.exp: Must process tool_root_dir option in multiple
	places (should be fixed!)

Mon Feb 23 09:08:43 1998  Mark Alexander  <marka@cygnus.com>

	* baseboards/mn10300-sim.exp: Use libgloss when compiling/linking,
	and new linker script sim.ld when linking.
	* baseboards/mn10300-cygmon.exp: New file for MN10300 Cygmon.
	* config/mn10300-eval.exp:  New file for MN10300 eval board.

Thu Feb 19 18:23:17 1998 John Metzler  <jmetzler@cygnus.com>

	* baseboards/mips64vr4100-sim.exp
	Defines simulated test target for mips46vr4100-*-elf

Wed Feb 18 15:29:12 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp: Use tool_root_dir instead of base_dir or
	objdir when searching for uninstalled libraries or executables.

	* runtest.exp(tool_root_dir): New variable.

Sat Feb 14 15:06:25 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/vxworks.exp(${board}_init): If we don't get useful info
 	from the 'p' command in the VxWorks boot ROM, reboot the board.
	(vxworks_exec): Check more closely for problems executing the
	testcase.

Mon Feb  9 16:48:55 1998  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(get_multilibs): If the compiler doesn't exist,
 	return nothing.
	(find_ld): New function.

	* config/powerpc-bug.exp: New file.

	* baseboards/powerpc-bug.exp: Load the generic powerpc-bug
	configuration.

Mon Feb  2 15:44:10 1998  Bob Manson  <manson@charmed.cygnus.com>

	* contrib/test-tool (patterns): Glob pattern to match log files.
	Add appropriate glob for new logfile naming scheme.

Sun Feb  1 14:29:16 1998  Joseph H. Buehler  <jhpb@sarto.gaithersburg.md.us>

	* runtest: Handle finding runtest.exp better automounted
	environments.

Mon Jan 19 10:37:13 1998  Mark Alexander  <marka@cygnus.com>

	* config/dve.exp: New file to support Densan boards.
	* baseboards/tx39-sim.exp: New file to support TX39 simulator.
	* baseboards/tx39-dve.exp: New file to support Densan TX39 board.

Tue Jan 13 01:21:14 1998  Alexandre Oliva <oliva@dcc.unicamp.br>

	* lib/libgloss.exp: Handle setting of LD_LIBRARY_PATH/SHLIB_PATH
	when testing with installed libraries.

1998-01-12  Brendan Kehoe  <brendan@cygnus.com>

	* contrib/test-tool (todayname): Refer to and use ChangeLog.egcs
	instead of ChangeLog.fsf.

Mon Jan  5 17:25:25 1998  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp ({c,ld}flags): Set libgloss flags in
	addition to newlib flags.

Sun Dec 28 11:06:49 1997  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in: Change "gxx_includedir" to "gxx_include_dir".

Tue Dec 23 14:46:44 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp(gdb_comm_load): Use "signal 0" instead of
	continue. Check for testcase_timeout board feature to determine
	how long we wait before we decide the testcase has gone into
	an infinite loop.

	* baseboards/cygmon.exp: Set shell_prompt and send_initial_cr.

	* lib/libgloss.exp(libgloss_link_flags): Add case for sparc64.

	* baseboards/usparc-cygmon.exp: New file.

Sat Dec 13 18:43:16 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp (ldflags): Fix typo.

Thu Dec 11 20:23:28 1997  Jeffrey A Law  (law@cygnus.com)

	* config/unix.exp (unix_load): Set LD_LIBRARY_PATH and SHLIB_PATH
	for native tests if ld_library_path is defined.
	* lib/libgloss.exp (g++_link_flags): Build up ld_library_path.
	(libstdc++_link_flags): Likewise.

Thu Dec 11 12:35:12 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp (ldflags): Also set stack to end of
	default 8 meg external area.

Wed Dec 10 16:11:47 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp(gdb_comm_load): Add more possible error
 	messages.

	* lib/remote.exp(standard_close): Make sure we close both file
 	descriptors, if there are two.

Wed Dec 10 14:35:05 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp (ldflags): Add -mextmem to allow testing
	larger tests.

Tue Dec  9 21:38:03 1997  Fred Fish  <fnf@cygnus.com>

	* lib/libgloss.exp (get_multilibs): Use previously set value
	of "target_board" rather than "board", since it may not exist.

Tue Dec  9 10:54:34 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(standard_wait): We have to call wait, even though
 	it can't possibly work.

Mon Dec  8 11:55:33 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_spawn): Use -leaveopen.
	(standard_wait): If we used -leaveopen, call close ourselves.
	(standard_close): Ditto.

	* lib/libgloss.exp(get_multilibs): Remove bogus tests for board
 	variable. Only set the board's multitop variable if we didn't
	get an explicit list of multilib options to use.

Sun Dec  7 08:29:40 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_spawn): Fix typo.
	(standard_wait): If the process was created with a pipeline, we
	have to use close instead of wait.

Fri Dec  5 14:21:18 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_spawn): If the "spawn -open" command
 	fails, clean up after the command we just spawned.

Thu Dec  4 11:32:06 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_open): Use catch.

Tue Dec  2 22:44:42 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_close): Move close statement after we
	determine the PID. Look at fileid_pid feature.
	(remote_spawn): If we're invoking a pipeline, stash the PID we
	get in the board's fileid_pid feature.

Sun Nov 30 19:09:49 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/target.exp (prune_warning): Prune some unwanted warnings
	from the HP assembler and gcc when using the HP assembler.

Fri Nov 28 10:42:30 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp: Re-enable trampolines.

Tue Nov 25 09:24:13 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp: Re-enable using label values.

Mon Nov 24 09:56:20 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/cygmon.exp, baseboards/cygmon.exp,
	  baseboards/msparc-cygmon.exp: New files.

	* config/i960.exp: Don't call perror.

Sun Nov 16 20:55:59 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp: Turn off trampolines and label values
	temporarily.

Thu Nov 13 22:51:42 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d30v-sim.exp: New file for d30v support.

Wed Nov 12 23:45:48 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/unix.exp(unix_load): Call remote_spawn and remote_wait
 	instead of using exec.

	* lib/remote.exp(remote_wait): Use $dest, not host.

Tue Nov  4 17:39:58 1997  Jim Wilson  <wilson@cygnus.com>

	* lib/target.exp (default_target_compile): Put math library
	before linker script.

Sun Oct 26 20:00:34 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp(base68k_wait): New procedure.
	(base68k_load): Use remote_spawn and remote_wait.

Sat Oct 25 21:48:36 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp(base68k_spawn): New procedure.

Fri Oct 24 10:55:17 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: Add missing -re. If we get an EXIT message
 	from the remote system, we know that we've exited gdb.

	* lib/remote.exp(standard_wait): Keep the timer running even if we
 	get output from the remote program.

	* config/dos.exp(dos_wait): Ditto.

Fri Oct 17 22:20:35 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/libgloss.exp (find_g77): No longer need --driver stuff.

Wed Oct 15 21:13:39 1997  Philippe De Muyter  <phdm@macqel.be>

	* runtest (mypath): Scan $PATH to set mypath if $0 does not give it.

Mon Oct 13 11:09:09 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp(base68k_load): Don't call exp_continue
 	outside of an expect statement.

Sun Oct 12 21:29:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Replace datadir with dejadatadir throughout.

Mon Oct  6 10:52:25 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/libgloss.exp (find_g77): New function.

Fri Oct  3 14:13:30 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vr4100-ddb.exp: Fix start addresses.

	* config/vxworks.exp: Remove 'set timeout' statements.

	* runtest.exp: Always output board name of target.

Tue Sep 30 15:35:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/arm-sim.exp: No longer uses underscores.
	* baseboards/arm-ice.exp: Ditto.

Tue Sep 30 12:47:19 1997  Doug Evans  <dje@canuck.cygnus.com>

	* lib/remote.exp (standard_file, cmp): Ensure file exists before
	computing file size.

Sun Sep 28 14:30:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/powerpc-sim.exp: The simulator directory is
	named "ppc", not "powerpc".

	* config/mips-idt.exp: Set the "syn-garbage-limit" gdb
	value to 0.

Sat Sep 27 22:11:45 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(get_multilibs): Return the multilib directory
 	that matches closest to the specified set of options.

Fri Sep 26 10:20:56 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(find_binutils_prog): Changed from find_objdump.

	* lib/remote.exp(remote_load): Use objcopy instead of objdump.

Thu Sep 25 10:54:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/h8300.exp: Use global prefix_dir instead of
	explicitly putting a pathname in the file.
	* baseboards/i386-bozo.exp: Ditto.
	* baseboards/i960-cyclone.exp: Ditto.

Wed Sep 24 13:06:47 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb.exp: Close the connection to the board after we've
	initialized it.

	* testglue.c: Add support for atexit() and _exit() if VXWORKS
	is defined.

	* lib/libgloss.exp(build_wrapper): Define VXWORKS if is_vxworks
 	target feature is set.

	* config/vxworks.exp: Set is_vxworks and gdb,nosignals target
 	features.

Tue Sep 23 17:56:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_load): If is_simulator board feature is
 	set, don't try to cache executables for this target.

	* baseboards/basic-sim.exp: Set is_simulator board feature.

Thu Sep 18 20:31:57 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/libgloss.exp (libio_include_flags): If we can't find
	_G_config.h, look for iostream.list in the same directory.

1997-09-18  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* contrib/test-tool: Put all of the failure stuff up above the
	pass stuff.

Tue Sep 16 22:15:20 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_load): Skip all the caching code if the
 	REMOTELOAD_CACHE env variable isn't set. Use objdump to get only
 	the executable contents, so we avoid problems with timestamps in
 	the executable.
	(remote_expect): Check remote_suppress_flag instead of
 	suppress_flag.

	* config/tic80.exp: Set gdb,use_breakpoint_for_stub. Don't
	bother skipping the float tests, as the gdb stub now traps
	FPU errors.
	* config/dos.exp: If there is a timeout, try to interrupt
	the remote job.
	(dos_interrupt_job): Return a null string on success.
	(dos_copy_download): Make the files on the destination world-writable
	as well.
	(dos_copy_upload): Ditto.

Fri Sep 12 11:10:42 1997  Bob Manson  <manson@charmed.cygnus.com>

	* testsuite/runtest.all/options.exp: Commented out failing strace
 	test--test is probably failing because of a TCL8 interaction.

Thu Sep 11 18:13:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/tic80-board.exp: Added support for running gdb.

	* config/dos.exp(dos_exec): Add support for an output file.

	* lib/remote.exp(remote_load): Only cache executables that
 	pass. Allow use of a checksum program in place of caching the
 	entire executable.

	* lib/libgloss.exp(find_objdump): New procedure.

	* config/gdb_stub.exp: Don't loop forever in gdb_stub_ld.
	(gdb_stub_retry_ld): New procedure.

Wed Sep 10 12:58:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/tic80.exp: Add new procedure tic80_ld. Call
	tic80_ld from tic80_load. Add settings for gdb testing.

	* lib/remote.exp: Add missing quotes around eval arguments.

Tue Sep  9 14:45:24 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/tic80.exp: Remove bogus call to "fix" program.
	Add timeout to remote_wait.

Tue Sep  9 11:40:01 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/arc.exp: New file.
	* baseboards/arc-sim.exp: New file.

Fri Sep  5 15:17:38 1997  Jeffrey A Law  (law@cygnus.com)

	* lib/libgloss.exp (get_multilibs): Search for "libraries" directory
	as the toplevel multilib directory too.
	(libstdc++_link_flags, libstdc++_include_flags): New functions.

Wed Sep  3 16:55:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(standard_file): cmp now returns 0 on "files
 	identical", some other value if the files are different.

	* baseboards/sh-hms-sim.exp: Need to pass -mieee when building
	testcases that rely on IEEE-compliant behavior.
	* baseboards/sh-hms.exp: Ditto.

	* lib/remote.exp(remote_load): Remove spurious debug output.
	Use "remote_file cmp" instead of invoking cmp directly.
	(standard_file): Added cmp operation to compare two binary
	files.

	* lib/libgloss.exp: Add dwarf2 target variant.  
	
	* lib/target.exp: Make sure the CC_FOR_TARGET variable overrides
 	any default compiler.

Tue Sep  2 18:28:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb_stub.exp: Detect gratuitous change to sparclet
	gdb target mode.

	* lib/remote.exp(remote_expect): Added timeout setting.

Tue Sep  2 16:39:21 1997  Doug Evans  <dje@canuck.cygnus.com>

	* dg.exp (dg-test): New arg -keep-output.

Wed Aug 27 13:16:32 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vxworks.exp: Set the gdb_prompt target feature to be
 	(vxgdb).

Fri Aug 22 13:24:58 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vxworks.exp: Check for negative values from the "value ="
 	return string. If preload_obj is a target feature, load the
 	specified object file after a reboot.

Thu Aug 21 18:06:20 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vx4300.exp: New file.

Wed Aug 13 12:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* lib/target.exp (prune_warnings): Generalize alpha ld warning.
	Also handle IRIX 6 linker "I give up" message.

Tue Aug 12 21:44:58 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/framework.exp(clone_output): Don't use lindex on things that
 	aren't really lists.

Mon Aug 11 20:51:08 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_expect): Nasty ugliness to work around
	change in behavior of lrange in tcl8.

Sat Aug  9 00:59:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/netware.exp (${board}_init): Change ld.new to ld-new.

Wed Aug  6 18:41:24 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* lib/libgloss.exp (libio_include_flags): Look for _G_config.h, not
	libio.a.

Wed Aug  6 00:41:46 1997  Ian Lance Taylor  <ian@cygnus.com>

	* lib/libgloss.exp (find_gas): Look for as-new, not as.new.

Sat Aug  2 20:44:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: Look for "Program exited with" exit status,
 	even though this should *never* appear (we're setting a breakpoint
 	in _exit and abort, duh).

Fri Aug  1 15:56:06 1997  Felix Lee  <flee@yin.cygnus.com>

	* runtest.exp: "runtest gcc.c-torture/execute/execute.exp" didn't
 	work because expected global vars weren't set.

Wed Jul 30 09:05:41 1997  Felix Lee  <flee@yin.cygnus.com>

	* lib/ftp.exp (ftp_download): and needed an -re flag.  and changed
 	"Timeout" to "421", to catch other premature disconnects.

Wed Jul 30 00:15:04 1997  Felix Lee  <flee@cygnus.com>

	* lib/ftp.exp (ftp_download): "Timeout ..." pattern wasn't listed
 	early enough to ever get matched.

Mon Jul 28 21:20:59 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(get_multilibs): Iterate through the list of
 	compiler-specified options looking for a match, rather than
 	farting around with regexps.

Mon Jul 28 15:28:09 1997  Felix Lee  <flee@cygnus.com>

	* lib/ftp.exp (ftp_upload): return localfilename, not
 	remotefilename.

Mon Jul 28 15:28:09 1997  Felix Lee  <flee@cygnus.com>

	* config/base68k.exp (base68k_ld): need global objdir.

Tue Jul 22 10:24:54 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp: More cleanups for setting isremote board feature.
	Leave the previous setting alone if the board already has one.

	* lib/framework.exp(is_remote): Add debugging info.

	* lib/remote.exp(remote_spawn): If the local spawn fails, return
	-1 instead of falling through.

Mon Jul 21 14:30:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/target.exp(list_targets): Deleted, no longer meaningful.
	(default_target_compile): Use warning instead of perror when
	download fails. Delete an existing a.out object file if we're
	running on a remote host.

	* lib/libgloss.exp(libgloss_ld): Deleted, not used.

	* config/dos.exp(dos_copy_download): If the local file doesn't
 	exist, don't try to download it.

	* runtest.exp: Change tests for setting isremote board feature.
	We assume the board is remote unless the name is the same as
	the local hostname or we're defining the build board.

Wed Jul 16 12:45:30 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp(dos_copy_upload): If the remote file doesn't
 	exist, don't try to upload it.

	* baseboards/basic-sim.exp: Don't transform the simulator name
 	using the target alias if no_transform_name is set on the host.

	* lib/kermit.exp: Don't try to unset the file descriptor if it
 	isn't set.

Mon Jul  7 12:01:54 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/m32r-sim.exp(ldflags): Use libgloss_link_flags, not
 	libgloss_include_flags.
	* baseboards/m32r-elf.exp: Ditto.

Sat Jul  5 18:42:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(libgloss_link_flags): Add sparclet->sparc CPU
	mapping. (This needs to be fixed.)

Thu Jul  3 15:34:21 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb.exp: Use base68k instead of gdb-comm.

	* stub-loader.c: Renamed from sparclet-loader.c.
	* config/gdb_stub.exp: Refer to stub-loader.c now.

Tue Jul  1 17:48:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp: Allow boards_dir to be a list of directories to
 	search for board descriptions.

Mon Jun 30 19:12:14 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* baseboards/arm-ice.exp: Board doesn't do I/O, signals,
	or call functions from GDB.

Mon Jun 30 18:32:44 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/arm-ice.exp: New file.
	* baseboards/arm-ice.exp: New file.

Sun Jun 29 22:12:51 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/arm-sim.exp: New file.

	* lib/libgloss.exp(process_multilib_options): Added pe object format.

	* baseboards/armpe-sim.exp: Removed file.

Sat Jun 28 13:37:27 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb_stub.exp: Use gdb_opts feature instead of a random
 	check if the host is remote.

	* runtest.exp: Use the no_transform_name feature instead of
 	looking for a specific host triplet.

	* baseboards/*-sim.exp: Use load_base_board_description, not
	load_board_description.

	* lib/target.exp(default_target_compile): If we're compiling
	with the C++ compiler, include g++_include_flags and 
	g++_link_flags as appropriate.

Fri Jun 27 15:17:12 1997  Bob Manson  <manson@charmed.cygnus.com>

	(load_board_description): Set the board feature isremote if the
 	board appears to be remote.
	Call setup_build_hook with the local hostname.

	* lib/target.exp(push_build): New procedure.

	* lib/framework.exp(is_remote): Detect if the board name specified
 	is the name of the build or host, and handle appropriately.

	* lib/remote.exp(check_for_board_status): Be a bit more aggressive
 	about stripping trailing CRLFs.

	* config/dos.exp(dos_exec): Add support for an input file.
	(dos_load): Pass program arguments and input file to remote_exec.

Wed Jun 25 20:01:37 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/target.exp(target_compile): Always add the target's cflags
 	spec. Use find_g++ to find a compiler if we've been asked to use a
 	C++ compiler.

	* lib/remote.exp(remote_spawn): Wrap open and spawn
	statements with catch.

	* lib/libgloss.exp(g++_link_flags): Add -L options to point to the
 	correct libiberty and librx directories.
	(find_g++): New routine.

	* lib/kermit.exp: Loosen up the regexp matching the connect
	string.

	* lib/ftp.exp: Look for a "Timeout after..." message from
	ftp.

	* config/sparclet.exp: The gdb prompt is "gdbslet".

	* config/gdb_stub.exp: If running on a remote host, add --command
 	gdbinit to the gdb command line. Use the gdb_is_running target
 	feature to keep track of whether or not we started gdb. Replace
	errors with warnings in many cases.
	(gdb_stub_load): Always set a breakpoint on exit if the
	target feature always_break_exit is set. Retry the testcase
	if it times out.
	(gdb_stub_close): New routine.

	* baseboards/sparclet-aout.exp: varargs and label values
	apparently don't work. Always set a breakpoint at
	exit() even if we can break at _exit instead.

	* sparclet-loader.c: Add global variable "remote_debug"
	initialized to 0.

	* runtest.exp: If running on a DOS host, don't canonicalize
	the tool names.

	* config/i386-bozo.exp(${board}_reboot): Return 1.

Mon Jun 23 14:55:13 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb_stub.exp: Clean up a few regexps. Check for either
 	the breakpoint function name (preferred) or the breakpoint number.

Sun Jun 22 12:31:02 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(standard_file): Add dirname, join, and absolute
 	operators.
	(unix_clean_filename): New procedure.

	* runtest.exp(lookfor_file): Call 'remote_file build dirname'
	instead of appending "/..".

	* lib/framework.exp(is_remote): Really fix the problem with
 	"unix/cpu=v8" this time. Minor cleanups.

Wed Jun 18 21:21:00 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb-ether.exp(ddb_ether_try): Fix typo.

Tue Jun 17 16:18:00 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp: Wait for an entire line before appending
	it to the result buffer.
	(base68k_load): Check every optional argument, and don't allow
	any (yet). Use -re in front of regular expressions.

	* lib/framework.exp(is_remote): Strip off any variant info from
 	the board name before determining if the board is remote.

Tue Jun 17 02:32:07 1997  Bob Manson  <manson@farmer>

	* config/gdb-comm.exp(gdb_comm_load): Check for parameters we don't
 	support, and return UNSUPPORTED as appropriate. Don't set a
 	breakpoint in exit if we can set one in _exit.
	* config/gdb_stub.exp: Ditto.

Mon Jun 16 16:07:32 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp(dos_wait): Add timeout parameter.

	* lib/remote.exp(remote_expect): Add timeout parameter.
	(remote_wait): Ditto.
	(standard_wait): Ditto. Also give up if the program outputs
	more than 512,000 bytes.

	* config/vxworks.exp: Use timeout parameter instead of setting
	timeout variable.
	* config/dos.exp: Ditto.
	* config/ddb.exp: Ditto.
	* lib/mondfe.exp: Ditto.
	* lib/rlogin.exp: Ditto.
	* lib/telnet.exp: Ditto.
	* config/base68k.exp: Ditto.
	* config/i386-bozo.exp: Ditto.
	* config/gdb-comm.exp: Ditto.
	* config/gdb_stub.exp: Ditto.
	* config/i960.exp: Ditto.
	* config/ddb-ether.exp: Ditto.
	* config/sim.exp: Ditto.

Fri Jun 13 19:54:24 1997  Bob Manson  <manson@charmed.cygnus.com>

	* contrib/test-tool: Default to assuming a standard tree
	structure. Don't die if we don't have a previous file to
	diff against--diff against /dev/null instead.

	* config/m32r.exp: Misc fixes.

	* config/m32r-stub.exp: New file.

	* config/gdb_stub.exp: Download the loader program to the host
 	before we try to load it.

	* config/dos.exp: Move the cygwin exception check to a point
 	earlier in the expect sequence.
	(dos_copy_upload): New routine.

Thu Jun 12 19:05:21 1997  Bob Manson  <manson@charmed.cygnus.com>

	* testglue.c (write_int): write_int takes two args.

	* lib/target.exp(target_compile): Must insert spaces when
	appending flags.

	* lib/remote.exp(remote_reboot): Print a message stating that
	the board is being rebooted.

	* config/dos.exp(dos_exec): Call remote_wait instead of
	doing it ourselves.
	(dos_wait): Minor cleanups.

Wed Jun 11 10:07:10 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp: Look for "cygwin except" string and reboot
	the board if we see it. Make sure we get output from the
	right place.
	(dos_exec): We always need to return a result list.

	* lib/target.exp(target_compile): Strip extra newlines/CRs from
	the start of the compiler output.

	* config/dos.exp: Make sure we can have multiple spawned commands
 	open to the board without reusing the same batch file name. Use
 	the new conninfo board feature to hold the name of the batch file
	being used for the current connection.
	(dos_interrupt_job): New procedure.

	* config/tic80.exp, baseboards/tic80-board.exp: New files.

	* lib/remote.exp(remote_swap_conn): New procedure.
	(remote_pop_conn,remote_push_conn): The conninfo board feature
	is used to store data specific to the current connection; make
	sure we update it correctly when we push and pop connections.

Fri Jun  6 14:24:36 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: Fix typo (missing call to list).

	* lib/libgloss.exp(g++_link_flags): Put spaces in appropriate
 	places. If we don't have a multilib pathname to use, try
	global $objdir instead.
	(g++_include_flags): Don't bother checking to see if the libraries
	are there, just look for the source directories.

Thu Jun  5 18:09:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb.exp: Fix typo.

	* lib/remote.exp(remote_close): Use nasty ugly shell stuff to kill
 	the program being closed.
	(remote_expect): Make sure expect fails if there isn't a
 	connection open to the requested board.

	* lib/libgloss.exp(winsup_include_flags,winsup_link_flags): New
	functions.

	* baseboards/dos.exp: Fix link flags and prompt regexp.

	* config/dos.exp(dos_load): New function.

Tue Jun  3 12:04:15 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/unix.exp: Add call to process_multilib_options.

	* runtest.exp: Clean up target iteration expansion.

	* testglue.c: Add #ifndef NO_UNISTD_H test.

	* config/vxworks.exp: Try to boot the system into the desired OS.

	* lib/telnet.exp(telnet_open): Remove the option of passing
	the port #. If the first optional argument is "raw", return
	immediately rather than trying to look for a shell prompt.

	* lib/util-defs.exp: Remove expect_before statement.

	* config/gdb-comm.exp(gdb_comm_add_breakpoints): Check for "No
 	symbol table" message from gdb.

	* config/vxworks.exp(*_load): Don't set global exec_output
 	variable. We return a list of two members, the first containing
 	the pass/fail string, and the second containing the output
	from the executable.
	* lib/dg.exp(dg-test): Ditto.

	* config/rom68k.exp: Fix shell_prompt value (add a space at the
	end).

	* baseboards/h8300.exp: Put back magic linker script brain-damage.

	* baseboards/mips-sim.exp: Check for ecoff object file format,
	and use idtecoff.ld instead of idt.ld.

	* config/dos.exp(dos_wait): Wait for a shell prompt from
	the board before returning.

	* config/i960.exp: Detect if the board starts spewing nonsense,
 	and reboot it if it does.
	* config/base68k.exp: Ditto. Also tighten up the checks for
	a shell prompt.

	* lib/remote.exp: Add a bit more debugging output. Use -9 when
	killing the process.

Mon Jun  2 09:50:33 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(standard_close): Check the return value from
 	catch. Fix quoting on the after command.

	* baseboards/rom68k-idp.exp: Look for a.out object file format.

	* baseboards/vr4300-sim.exp: Look for ecoff object file format.
	* baseboards/vr4300-ddb.exp: Ditto.
	* baseboards/mips-idt.exp: Ditto.

	* lib/libgloss.exp: Set the board's obj_format feature according
	to the specified object file format. Handle "stabs" variant.

	* baseboards/i960-cyclone.exp: Mark the board as being unreliable.

	* config/i960.exp: Check for a couple of common failure modes and
 	reboot the board as needed. Also reboot if the testcase fails and
 	the board is marked as "unreliable".

Sun Jun  1 16:48:30 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp: Add base68k_ld procedure. Clean up a few
 	regexps.

	* baseboards/rom68k-idp-aout.exp: We need to pass the load offset
 	to gdb's load command.

	* baseboards/rom68k-idp.exp: Use -msoft-float by default.

	* lib/telnet.exp: If dont_wait_for_prompt is set, don't bother
 	trying to get a prompt back before returning.

	* config/i960.exp(${board}_init): Send several CRs in order to get
 	a prompt from the board (fun with autobaud). Set
 	dont_wait_for_prompt. Clear exec_output.

Sat May 31 00:29:33 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp: Handle various errors more gracefully.

	* config/dos.exp(dos_start_command): Flush any pending output
	before sending the new command to be run. Make regexp for
	prompt more strict.

	* contrib/test-tool: Add support for compressed log files.
	(Can't compress ChangeLog files yet.)

Fri May 30 15:08:15 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(build_wrapper): New procedure.

	* config/base68k.exp: Check for use_vma_offset target feature.
	Make sure we keep in sync with the remote target.

	* baseboards/rom68k-idp-aout.exp: Try using objcopy again.
	Make sure we link with -N.

	* testglue.c: Handle m68k-aout specially.

Thu May 29 19:57:47 1997  Bob Manson  <manson@charmed.cygnus.com>

	* testglue.c: Include sys/unistd.h.

	* lib/telnet.exp: Use $connhost correctly.

	* lib/remote.exp(remote_wait, remote_raw_wait, standard_wait): New
	procedures.

	* config/sim.exp(sim_load): Use remote_wait to wait on the
	spawned child.

	* config/dos.exp(dos_spawn): Make sure we can return an exit
 	status from the spawned command.
	(dos_wait): New procedure.

Thu May 29 15:08:07 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/rom68k-idp-aout.exp: Status wrapper seems to be
	working in devo.

Wed May 28 12:34:28 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/sparc64-sim.exp: New file.

	* baseboards/vx68k.exp: New file.

	* lib/libgloss.exp(newlib_link_flags): Also look for the linker
 	script directory that's part of ld, and include it if it
	exists.

Tue May 27 20:00:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(libgloss_link_flags): If we're building
	for a powerpc target, the cpu is rs6000, not powerpc.

Sat May 24 11:31:26 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: Strip off "Continuing." response
	from gdb. Set the height and width to 0 so GDB doesn't
	try to scroll.

Fri May 23 12:02:29 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/i960-cyclone.exp: It's noargs now.

	* lib/remote.exp(call_remote): Make sure we set the
	board's database name entry if we tried to load it.

	* lib/libgloss.exp(process_multilib_options): Look for aout and
 	elf board variants, and set is_aout/is_elf as appropriate.

	* lib/targetdb.exp(set_currtarget_info,unset_currtarget_info):
	New functions.

	* config/gdb-comm.exp: Check for gdb_sect_offset target feature;
	if it's set, adjust the sections in the executable with the
	.sect command.

	* config/i386-bozo.exp: New file.
	* baseboards/i386-bozo.exp: New file.

Thu May 22 15:24:48 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/op50n.exp: Set gdb,timeout to 9 minutes.

	* config/base68k.exp: Display the output from the board in
	verbose mode.

	* config/proelf.exp: Use base68k to load programs instead of
	GDB.

	* baseboards/hppa-proelf.exp: Renamed to baseboards/op50n.exp.

	* lib/libgloss.exp: Make sure we don't include the libio
	stdio directory.

Wed May 21 22:58:05 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/i960-cyclone.exp: Link with i960.ld linker
	script.

Tue May 20 19:03:54 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/sim.exp: Check for magic CHILDKILLED nonsense from
	wait.

Mon May 19 13:07:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/i960-cyclone.exp: New file.
	* config/i960.exp: New file.
	
Tue May 20 17:55:39 1997  Jeffrey A Law  (law@cygnus.com)

	* config/sim.exp: Set "slow_simulator".

Tue May 20 08:54:55 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/*: Change "gdb,noargs" to just "noargs".

Mon May 19 13:07:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/telnet.exp: Backquote the braces in "VxWorks Boot"
	correctly this time.

	* lib/remote.exp: Use catch to wrap exp_pid calls.

Sat May 17 21:44:08 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(standard_close): Don't wait forever on close; if
 	it's a process, give it a SIGTERM after 10 seconds.
	(remote_spawn): Make sure stderr and stdout all go to the same
	place.

Sat May 17 19:10:36 1997  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (install): Add missing ';' to datadir for...done.

Fri May 16 23:30:27 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/powerpc-sim.exp: Can't call functions from within
 	GDB.

Wed May 14 20:59:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp: Add spaces before options passed to
	the compiler.

Fri May 16 10:11:54 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Remove redundant setting of
	"cflags".
	* baseboards/mn10300-sim.exp: Likewise.

Thu May 15 14:26:20 1997  Mike Meissner  <meissner@cygnus.com>

	* baseboards/tic80-sim.exp (gcc,no_varargs): Set to 1, the TIC80
	doesn't support varargs.

Tue May 13 11:51:06 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (install): Take out errant semicolon.

Mon May 12 21:48:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(find_gas): New procedure.

	* lib/target.exp(default_target_compile): Look for
	CC_FOR_TARGET and CFLAGS_FOR_TARGET global variables.
	(target_assemble,default_target_assemble): New procedures.

Thu May  8 21:53:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp: Add more informative startup messages describing
 	the various files that are being loaded.
	(setup_target_hook): Give a warning if a target board is the local
 	machine and a "non-native" test is being run; check if the user
	has set their DEJAGNU variable.

Tue May  6 14:27:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp(lookfor_file): Use .. instead of [file dirname].

Mon May  5 22:06:14 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vxsparc.exp: New file.

	* config/vxworks.exp: Look for [VxWorks Boot] prompt.
	* lib/telnet.exp: Ditto.
	
Fri May  2 15:19:00 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_spawn): Add new argument for readonly
	or writeonly processes, and use open to create a pipeline when
	it is given.
	* config/sim.exp(sim_load): Use it.

Fri May  2 10:47:40 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/tic80-sim.exp: New file.

Thu May  1 14:42:51 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/d10v.exp: Set gdb,short_int.
	* baseboards/d10v-sim.exp: Ditto.
	* baseboards/h8300.exp: Ditto.
	* baseboards/h8300-sim.exp: Ditto.

	* lib/remote.exp(remote_download): Ignore "files are identical"
	error from cp.

	* testglue.c: Renamed from test-glue.c.

Tue Apr 29 17:42:22 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/h8300-sim.exp: Remove magic linker script braindamage.
	Set gdb,noinferiorio, gdb/noresults, gcc,stacksize and no_long_long.
	* baseboards/h8300.exp: Similarly.

Tue Apr 29 12:56:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/rlogin.exp: Misc cleanups.

	* lib/libgloss.exp(g++_include_flags): Don't skip if native. We're
	also building multilib versions of the libraries now, so don't
	pass a null argument to get_multilibs.
	(g++_link_flags): Ditto.

Mon Apr 28 12:14:27 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/telnet.exp: Default to /usr/kerberos/bin/telnet if it
 	exists.

	* lib/target.exp(target_compile): Add use_at target feature, to
 	support using the @file syntax of GCC on a go32 host.

	* lib/rlogin.exp(rlogin_open): Don't try to open a connection if
 	we already have one open. Use hostname and shell_prompt features of
 	target.  Remove gratuitous $type variable. Don't use $board here.
	Don't die if we get Kerberos login failures; the destination may
	not support kerberos.
	(rlogin_spawn): New function.

	* lib/libgloss.exp(g++_include_flags): Use spaces in
	appropriate places when appending flags.

Fri Apr 25 19:03:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/sim.exp(sim_load): Stop using bash/ulimit. If an input
 	file is supplied, feed it into the simulator using
 	remote_transmit.

Thu Apr 24 14:37:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(g++_include_flags): Make sure libg++/src
	is part of the include path.

	* lib/telnet.exp(telnet_open): Look for "simple or advanced"
 	prompt from ataman. Use $connhost instead of $hostname
 	correctly. Check for hostname feature of target machine.

Fri Apr 18 16:43:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/sh-hms.exp: Set exit_statuses_bad.

	* lib/telnet.exp: Handle more unexpected responses from telnet.
	Don't give a warning if we don't get a prompt back after sending
	the escape character.

	* config/gdb-comm.exp: Check for SIGTRAP; retry if we get one.
	Also reboot if the program gets any other signal. Check for
	exit_statuses_bad on the target.

	* config/base68k.exp: Retry if we didn't get a real exit status.

Thu Apr 10 20:04:14 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/h8300.exp: The board is unreliable, make sure failing
 	commands get retried.

	* Makefile.in: Make sure we copy in any .c stub files.

	* config/dos.exp: Use the pid as part of the file in /tmp;
	delete the file after we're done. Don't create the file
	locally until we're ready to download it (in case we're
	being called recursively).

Thu Apr 10 14:35:02 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10300-sim.c: The mn10300 can perform inferior
	function calls.

Wed Apr  2 19:35:13 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/h8300.exp: Add appropriate references to linker
	scripts. Set noinferiorio, and noresults.

Sun Mar 30 00:25:59 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb-ether.exp: Check for "Exception Cause" from the
 	monitor, and also retry 3 times on "invalid executable" message.

	* config/ddb.exp: Add timeout section. Reboot the
	board if we can't get any sort of a prompt.

	* config/dos.exp(dos_exec): Return an error status
	when the connection fails to the remote host. Retry
	connecting several times, and also call remote_reboot
	as appropriate.

	* lib/ftp.exp: Check return value from ftp_open.

Sat Mar 29 00:42:59 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/*.exp: General cleanup, yet again. Take
	advantage of the new target variant support.

	* runtest.exp: Fix everyone's favorite bug; now it says
	"interrupted by user" instead of "segmentation violation"
	when ^C is pressed.

	* baseboards/vr4300-ddb.exp: Set gdb,noargs and gdb,nosignals.

	* config/dos.exp: Increase timeout on program execution
	to 5 minutes. Pass target alias to initialization
	script. Don't delete the remote batch file.

Thu Mar 27 01:38:35 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/framework.exp(is_remote): Use current_target_name, not
	current_target.

	* baseboards/m32r-sim.exp: Don't set unnecessary options here.

	* lib/target.exp(default_target_compile): Add ldscript
	option.

	* config/gdb_stub.exp: Check for netport as well as serial. Use
	gdb,start_symbol as appropriate.

Wed Mar 26 16:45:42 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp(process_target_variants,iterate_target_variants): New
	procedures, called as part of building up the list of targets
	to test.

	* lib/libgloss.exp(process_multilib_options,add_multilib_option): New
	procedures.

	* baseboards/*.exp: Call process_multilib_options instead of setting
	multilib_flags directly.

Wed Mar 26 16:04:48 1997  Doug Evans  <dje@canuck.cygnus.com>

	* baseboards/m32r-sim.exp (multilib_flags): Test all code models.

Wed Mar 26 13:55:19 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/a29k-udi.exp: Don't use libio.

Tue Mar 25 15:22:24 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(libgloss_link_flags): Always add a -L
	pointing to the libgloss source directory, if it exists.

	* lib/telnet.exp(telnet_binary): Thanks, HPsUX.
	* lib/rsh.exp:(rsh_exec) Likewise, I'm sure.

Mon Mar 24 22:20:18 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp: Grab the exit status from the command we
	executed.

Sat Mar 22 13:07:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/mondfe.exp: General cleanups; don't be quite so
	picky about when a prompt should appear (the last
	step may not always be clearing the BSS section).

	* config/gdb-comm.exp: Check for response when setting
	baud rate.

	* config/udi.exp: Don't be quite so picky when checking
	for "Halt instruction encountered".

	* testsuite/runtest.all/*.test: $srcdir/$subdir, not
	$srcdir$subdir.

Fri Mar 21 17:36:29 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d10v-sim.exp (sim_time_limit): Bump the default time
	limit to 10 minutes, since gcc.c-torture/execute/920501-6.c takes
	quite a while to do 64 bit arithmetic on a 16 bit host.

Fri Mar 21 01:02:39 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10300-sim.exp: The mn10300 can't perform
	inferior function calls yet.

Thu Mar 20 22:45:18 1997  Jeffrey A Law  (law@cygnus.com)

	* testsuite/runtest.all/options.exp: Remove "baud" test.

Tue Mar 18 15:15:16 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10300-sim.exp: Various updates from mn10200-sim.exp.

Mon Mar 17 15:11:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* testsuite/runtest.all/stats-sub.exp: Add missing brace.

	* config/sim.exp: If bash isn't in the user's path, then use spawn
 	and expect to try and catch cases where the simulator has gone
 	into an infinite loop.

Thu Mar 13 11:59:52 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp: If running on multiple targets, output a summary
 	for each target. Use log_and_exit instead of log_summary.

	* lib/framework.exp: Use an array (test_count) instead of
	separate variables for each pass/fail/xpass/... count.
	(log_and_exit, init_testcounts,incr_count): New procedures.

	* lib/debugger.exp: Call log_and_exit instead of log_summary.

	* lib/libgloss.exp(get_multilibs): Use -all. Substitute " -"
	with " ", not the null string.

Thu Mar 13 11:21:56 1997  Angela Marie Thomas (angela@cygnus.com)

	* baseboards/mips-lsi-sim{,-EL,-sf,-sfEL}.exp: New files.

Wed Mar 12 16:37:03 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/h8300-sim.exp: Add noargs and nosignals.
	* baseboards/h8300.exp: Ditto.

Tue Mar 11 17:17:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: If we're talking to a remote host,
	download the executable being loaded before starting GDB.
	Check for the gdb_opts feature of the host.
	(gdb_comm_leave): New procedure. If we're talking to a
	remote host, always start and exit gdb for each download.

	* config/dos.exp: Use remote_expect.

	* config/ddb.exp: If we're talking to a remote host, don't
	try to init the prompt.

	* baseboards/vr4300-ddb.exp: Don't link in libio.

	* baseboards/vr4100-ddb.exp: Don't link in libio. Do use
	-msoft-float "just in case".
	
	* baseboards/sh-hms.exp: We need to pass in the -L options
	for the libgloss directories so we find the linker scripts.

	* baseboards/dos.exp: Make sure --command gdbinit is passed
	to gdb.

	* runtest.exp: Prefer target_alias over target_install.
	* baseboards/basic-sim.exp: Ditto.

Sat Mar  8 12:01:04 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/mn10200-sim.exp: Fix comment.

	* baseboards/sh-hms.exp: Include libgloss so we can find
	the linker scripts.
	
	* baseboards/sh-hms-sim.exp: Ditto.
	
	* config/vxworks.exp: Add additional error checking cases. Remove
 	unused procedure "vxworks_transform_path".

Fri Mar  7 13:53:35 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vr5000-ddb.exp: Add configury for nullstone.
	* baseboards/vr4300-ddb.exp: Ditto.

	* config/ddb-ether.exp(ddb_ether_ld): New routine.
	(ddb_ether_try): Use ddb_ether_ld.
	(ddb_ether_load): Make sure we return "fail" at the end of the loop.

	* config/bug.exp: Use set_board_info.

	* baseboards/vr4300-sim.exp: Use mips-sim as a base configuration.

	* config/gdb_stub.exp: Use remote_expect.

	* lib/remote.exp(remote_ld, remote_raw_ld, remote_push_conn,
 	  remote_pop_conn): New routines.

Thu Mar  6 09:34:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/ddb-ether.exp: Use remote_expect and remote_send.
	* config/vxworks.exp: Ditto.
	
	* runtest.exp: Remove --baud and --connect options, no longer
 	functional.
	(setup_target_hook): Use the hostname of the local machine when
 	searching for a board file, if a board wasn't specified with
	--host_board.

Wed Mar  5 09:37:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp: Use $dest instead of target, and remote_send
	and remote_expect.

	* lib/framework.exp(clone_output): If $sum_file is null, don't try
 	to write to the file.

	* config/ddb-ether.exp(ddb_ether_try): Add -re to regexp pattern.

	* baseboards/mips-sim.exp: New file.

	* runtest.exp: Move loading the libraries and the
	tool initialization file before the start of the
	file. Allow the tool to add additional options to runtest.
	(transform): target_install is now a list kept as part of the
 	board description. Search the list for the current target alias;
 	if found, use in preference to the default target_install entry.

	* lib/targetdb.exp(set_board_info,unset_board_info): New procedures.
	
	* baseboards/*.exp: Use set_board_info instead of setting entries
 	in the board_info array directly. Also, some general cleanup,
 	removal of useless entries, etc.

Tue Mar  4 22:58:37 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vr5000-ddb.exp: Set gdb,nosignals and gdb,noargs.

Tue Mar  4 14:43:50 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/powerpc-sim.exp: Set gdb,nosignals.

Mon Mar  3 12:38:28 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/base68k.exp(base68k_load): Send an extra CRLF pair.

	* lib/telnet.exp(telnet_binary): Only send a linefeed to telnet
 	after the command. Don't send an extra CRLF pair after the
 	command.

	* config/ddb-ether.exp: Minor cleanups.
	
	* lib/remote.exp(remote_expect): New procedure.

Fri Feb 28 17:04:11 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vr5000.exp: Use ddb-ether, as it's faster.

	* baseboards/vr5000-ddb.exp: Use ddb.ld. Add setup info for
 	nullstone. Mark it as unreliable, as it gets random SIGFPEs.

	* runtest.exp(setup_target_hook): Call perror instead of error.

	* config/ddb-ether.exp: New file.

Thu Feb 27 12:58:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/rom68k-idp.exp: Set gdb,noargs gdb,nosignals
	and gdb,noresults.

	* config/vr5000.exp,baseboards/vr5000-ddb.exp: New files.

	* config/ddb.exp(${board}_init): Don't go into a recursive
	tailspin.

	* config/gdb-comm.exp(quit_gdb): New procedure.
	(gdb_comm_load): Use it. Check for board feature
 	"unreliable". If the testcase times out, try rebooting the board
 	and reexecuting before deciding that the testcase is going into an
 	infinite loop.
	
	* lib/rsh.exp(rsh_exec): Explicitly call sh.

	* lib/telnet.exp(telnet_open): Make sure we wait for the telnet to
	exit after closing it.

	* test-glue.c: Include stdio.h and string.h.

	* lib/remote.exp(standard_load): program args are in 0, input
	is in 1.

	* config/vxworks.exp(vxworks_open): Use password, not passwd.
Sun Feb 23 14:32:34 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/telnet.exp(telnet_open): Add "catch" to the exp_send command
 	after telnet gets a connection refused.

	* lib/framework.exp(record_test): Add global variable pf_prefix,
 	which contains a string that will be prefixed to every pass/fail
 	message.

	* runtest.exp(runtest): Pass the name of the expect script to
	the tool init function.

	* baseboards/rom68k-idp.exp: Don't include libio.

Sat Feb 22 21:02:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/telnet.exp(telnet_binary): Wait for a prompt after sending
 	the telnet escape character.

Fri Feb 21 13:46:45 1997  Bob Manson  <manson@charmed.cygnus.com>

	* Makefile.in (install): Install the baseboards and config
	.exp files.

	* config/vxworks.exp: General cleanup and restructuring.
	Added vxworks_exec.

Thu Feb 20 17:17:08 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vxworks.exp(vxworks_ld): Unload modules after testing them.
	Check the results from remote_open; reboot the target if needed.

	* lib/remote.exp(remote_download): Check the result code from "cp".

Wed Feb 19 16:19:04 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/vr4300-sim.exp: Not "setup_sim vr4300", it's
	mips.

	* config/gdb-comm.exp: Use warning instead of perror in several
 	places.

Wed Feb 19 09:36:06 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/powerpc-bug{,1}.exp: New files for dealing with
	PPCBUG monitor on ports 0 and 1.

	* baseboards/powerpc-sim.exp (needs_status_wrapper): Delete,
	simulator can return exit statuses correctly.

Mon Feb 17 16:52:37 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d10v-sim.exp (needs_status_wrapper): Delete,
	simulator can return exit statuses correctly.
	(sim_time_limit): Delete, simulator can take more than 10 seconds
	on some tests.

Thu Feb 13 15:59:28 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp(runtest): Record number of seconds it took to
	run the testcase.

	* lib/framework.exp(log_summary): Log finish time.

	* lib/remote.exp(check_for_board_status): If $result ends up being
	empty, don't crash. Also, be a bit more lax about what we're
	removing from the result being processed.

Thu Feb 13 13:17:19 1997  Michael Meissner  <meissner@cygnus.com>

	* baseboards/d10v{,-sim}.exp: D10v has small stack, no trampoline
	support, and can't do labels as values.

Tue Feb 11 12:54:17 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/mondfe.exp: Use mondfe,name instead of remote_host.

	* config/gdb_stub.exp: Remove bogus global declaration.
	
	* lib/target.exp(default_target_compile): Append -lm at the end of
 	the argument list, so it is linked in as appropriate.

Tue Feb 11 11:01:33 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Remove gdb,cannot_call_functions.

	* lib/remote.exp (remote_exec): Send PARGS to exec, not ARGS.

	* lib/remote.exp (remote_exec): OUTP comes from argument 2, not
	argument 1!

Mon Feb 10 16:40:27 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vxworks.exp: Return $shell_id like we should.

	* baseboards/d10v.exp: Fix.

	* lib/telnet.exp: Don't be quite so verbose.

	* lib/remote.exp(standard_send): Quote the string being sent
	correctly.
	(standard_transmit): Change a few verbose message levels.

	* config/dos.exp: Return the result of remote_raw_send.
	* config/vxworks.exp: Ditto.

Sun Feb  9 20:58:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/rom68k-idp.exp: Use objcopy by default, as
	otherwise gdb won't work with srecords.
	* baseboards/rom68k-idp-aout.exp: Output srecords directly.

Sat Feb  8 13:40:38 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(libio_include_flags): Use the correct
	binary directory when including _G_config.h.

	* baseboards/mips-idt.exp: Add -nostdlib. Use idt.ld, not
	pmon.ld.

	* lib/remote.exp(standard_send): Use catch. Return a success
	or fail status. Don't use error, use perror.

	* config/vr4100.exp, config/ddb.exp: New files.

	* config/gdb-comm.exp: Try reopening 4 times before failing,
	rather than just once. Also, if we get a valid status result
	from the board, use it instead of trying to check the exit
	code passed to exit().

	* lib/telnet.exp(telnet_open): Don't send the initial cr until
 	we've seen the "Escape character is..." line from telnet. Also,
	if we got an unexpected EOF from telnet, wait 5 seconds before
	trying again.

Fri Feb  7 13:22:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* runtest.exp: Add --tool_exec and --tool_opt options. Clean
	up the help messages to correspond with reality a bit better.

	* lib/target.exp(prune_warnings): Merge in all the various
	random versions of prune_system_crud and prune_warnings.
	Nuke prune_system_crud without prejudice; replace with calls
	to prune_warnings.
	
	* lib/dg.exp: Use prune_warnings instead of prune_system_crud.

Fri Feb  7 09:41:40 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Set gdb,noresults gdb,noinferiorio
	and no_double.

Thu Feb  6 13:08:50 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp(remote_download): When copying to a local file,
 	make sure the copied file has read permissions for other.

	* baseboards/vx960.exp: New file.
	
	* config/vxworks.exp: Fix.

	* lib/libgloss.exp(get_multilibs): If a list of multilib options
 	is specified, don't return the cached multilib path.

Wed Feb  5 22:08:03 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Random cleanups.
	Set gdb,noargs gdb,nosignals and gdb,cannot_call_functions.

Tue Feb  4 21:43:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* baseboards/sh-hms.exp: Set gcc,stack_size as well.

	* config/gdb-comm.exp: Add gdb_run_command target feature.

	* baseboards/a29k-udi.exp: Use gcc,stack_size instead of
	defining STACK_SIZE.
	* baseboards/armpe-sim.exp: Ditto.
	* baseboards/mn10200-sim.exp: Ditto.
	* baseboards/sh-hms-sim.exp: Ditto.

Tue Feb  4 15:51:21 1997  Jim Wilson  <wilson@cygnus.com>

	* baseboards/sh-hms-sim.exp (cflags): Add -DSTACK_SIZE=16384.

Mon Feb  3 12:30:02 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/remote.exp: Be a little be more lenient about what matches
	the exit code returned from the board.

	* baseboards/rom68k-idp-aout.exp: Fix.

	* lib/telnet.exp: Added send_initial_cr board feature.
	Make sure we respawn telnet if it dies.
	* config/base68k.exp: Set it.
	  (base68k_load): Set exec_output. If we get a timeout from the
	  board, this is now considered to be a failure.

	* baseboards/sh-hms.exp: This is now the baseboard for a SH board,
	not the simulator.

	* baseboards/sh-hms-sim.exp: New file.
	* config/sh.exp: New file.
	* baseboards/m32r-sim.exp: New file.

Mon Feb  3 07:54:04 1997  Jeffrey A Law  (law@cygnus.com)

	* baseboards/mn10200-sim.exp: Add -DSTACK_SIZE=4096 to cflags.
	Set no_long_long for this target.
	
Sun Feb  2 15:29:09 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(find_gcc): Don't be quite so choosy about
	the name of the compiler. But, make sure we look in all the
	right places.
	
	* lib/remote.exp(standard_close): Return 0.
	
	* lib/mondfe.exp(mondfe_close): Return 0 if the connection is
	already closed.

Sun Feb  2 17:47:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* lib/target.exp: Only mention the compiler exit status if it is
	non-zero.

Sun Feb  2 00:00:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/dos.exp: Use $shell_prompt, not $prompt.
	* config/netware.exp: Ditto.
	* lib/rlogin.exp: Ditto.
	* lib/rsh.exp: Ditto.
	* lib/telnet.exp: Ditto.
	* lib/tip.exp: Ditto.

Sat Feb  1 12:38:05 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/unix.exp: It's $dest, not $targetname.

	* runtest.exp: Add global variable boards_dir, which will
	point to the directory containing the board description
	files referred to by site.exp.

	* lib/target.exp: Always log output from the compile.

Sat Feb  1 10:36:05 1997  Ian Lance Taylor  <ian@cygnus.com>

	* lib/libgloss.exp (libgloss_link_flags): Add slash at the end of
	the -B option.

Fri Jan 31 11:36:12 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/gdb-comm.exp: Use $spawn_id consistently in expect.
	Grab output from the board and stuff it into exec_output;
	also check for status output from the status wrapper.

	* baseboards/vr4300-ecoff-sim.exp: New file.

	* baseboards/mips64-sim.exp: It's basic-sim, not basic-sim.exp.

	* lib/target.exp(default_target_compile): If we end up with no
 	compiler, or if we can't find it and we're compiling locally, give
 	an error and return.

	* lib/libgloss.exp(get_multilibs): If the host is remote, or if we
 	have no compiler, or it can't be found, don't look for multilibs.
	(find_gcc): Don't even check to see if the compiler exists.
	(libio_include_flags): Don't bother looking for the include dir if we 
	haven't got libio.a.

Thu Jan 30 11:48:29 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/libgloss.exp(get_multilibs):  Options can be all caps too.

	* config/gdb-comm.exp: Remove spurious quote. (Thanks, TCL!)
	  Add dest parameter to gdb_comm_reload calls.
	  Remind me not to reuse code (go_idle).

	* runtest.exp(setup_target_hook): Use the non-generic name of
	the host when searching for a host-specific target description.
	(load_board_description): Use append correctly.

	* baseboards/sparclite-coff.exp: New file.

	* config/gdb_stub.exp: Add generic support for GDB stub targets
	(derived from sparclet.exp).
	* config/sparclet.exp: Use it.
	* config/slite.exp: Use it.

	* config/gdb-comm.exp: Rename the rest of the routines while
	I'm at it.

	* baseboards/d10v-sim.exp: Set gdb,nosignals and gdb,noargs.

	* config/gdb-comm.exp: Change gdb_reload to gdb_comm_reload,
	gdb_file_cmd to gdb_comm_file_cmd and gdb_add_breakpoint to
	gdb_comm_add_breakpoint.

	* baseboards/d10v.exp: It's d10v-elf.
	* baseboards/d10v-sim.exp: Ditto.

	* config/dos.exp: Check for errors when opening a connection.

	* runtest.exp: Remove the slash after $srcdir when generating $subdir.

	* config/m32r.exp: Use load_generic_config, not load_config.
	* config/proelf.exp: Ditto.

	* runtest.exp(transform): Add missing global declaration.

	* lib/remote.exp(remote_reboot): Call ${board}_init after we
	reboot the board.
	(call_remote): If we're not working on a raw connection, look for a
	protocol specified by the board	description and use it.

	* config/unix.exp: Replace ${board} with unix, and set the board's
	protocol to unix.

	* config/udi.exp: Replace ${board} with udi, and set the board's
	protocol to udi.

	* config/sim.exp: Replace ${board} with sim, and set the board's
	protocol to sim.

	* config/dos.exp: Replace ${board} with dos, and set the board's
	protocol to dos.

	* runtest.exp(load_generic_config): Don't set the generic name of
 	the board if it already has one.

	* config/gdb-comm.exp: Remove definition of ${board}_init, and move
	initialization to gdb_comm_start. Change $prompt to $gdb_prompt.
	Look to see if the destination board has defined gdb_prompt, and use
	it. Change ${board} to gdb_comm, and set the board's protocol as
	gdb_comm.

	* baseboards/armpe-sim.exp: Fix typo; it's "needs_status_wrapper".
	* baseboards/d10v-sim.exp: Ditto.
	* baseboards/vr4300.exp: Ditto.
	* baseboards/sparclet-aout.exp: Ditto.
	* baseboards/sh-hms.exp: Ditto.
	* baseboards/mn10300-sim.exp: Ditto.
	* baseboards/mn10200-sim.exp: Ditto.
	* baseboards/m32r-elf.exp: Ditto.
	* baseboards/h8300.exp: Ditto.
	* baseboards/h8300-sim.exp: Ditto.
	* baseboards/vr4300-ddb.exp: Ditto
	* baseboards/vr4300-ddbecoff.exp: Ditto.

Thu Jan 30 00:00:48 1997  Angela Marie Thomas (angela@cygnus.com)

	* baseboards/vr4300-ddb*: New files.

Wed Jan 29 14:19:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/sim.exp: Log which simulator is being run.

	* {baseboards,config}/h8300.exp: New files.

	* baseboards/vr4300.exp: Don't need to set generic_name anymore,
	this is done by load_generic_config.
	* baseboards/m32r-elf.exp: Ditto.
	* baseboards/unix.exp: Ditto.
	* baseboards/v850-sim.exp: Ditto.
	* baseboards/vr4300-sim.exp: Ditto.

	* config/vr4300.exp: It's load_generic_config now; don't need the
	.exp suffix either.
	* config/bug.exp: Ditto.
	* config/mips-idt.exp: Ditto.
	* config/rom68k.exp: Ditto.

	* config/gdb-comm.exp(go_idle): Set shell_id before doing an
	send/expect. Use "remote_send host" instead of send.
	(gdb_comm_start): GDB and prompt are globals; declare them so.
	(${board}_load): need to give a boardname to board_info.

	* lib/remote.exp(remote_exec): Add logging.

Wed Jan 29 00:19:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	Major revisions for cross-testing and remote hosted testing.

	* runtest.exp: Remove several global variables, including variables
	that describe target info; this is now kept in the board_info
	array. Add new options --host_board and --target_board. Remove
	--name option.
	(search_and_load_file): New routine.
	(lookfor_file): New routine.
	(load_lib): Use search_and_load_file.
	(setup_target_hook, setup_host_hook): New routines.
	(load_generic_config, load_tool_target_config, load_tool_init,
	load_board_description, load_base_board_description): New routines.
	(runtest): New routine, code moved from main loop.

	* site.tmpl: Update using new format of site.exp.

	* lib/dg.exp(dg-init): Remove call to ${tool}_init, this is now done
	by runtest.exp.
	(dg-test): Change the format of the results returned from
	${tool}-dg-test to include the output from the test.

	* lib/framework.exp(is_remote): New routine.

	* lib/libgloss.exp: Add libgloss_{link,include}_flags,
	newlib_{link,include}_flags, libio_{link_include}_flags,
	g++_{link,include}_flags.

	* lib/remote.exp: Major rewrite. Add remote_* functions,
	move telnet, rlogin, ftp, kermit, et al to separate files.

	* lib/target.exp(set_target_info, compile, archive, ranlib,
	link_objects, execute_anywhere, getprompt, make): Deleted.
	(push_target,push_config,pop_config,pop_target): Don't copy
	the entries around, just change the name.
	(target_compile, default_target_compile, reboot_target): New routines.

Fri Jan  3 12:30:07 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* site.tmpl (powerpc*-*-eabi*): Add sample entry.

Thu Dec 12 18:11:24 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/utils.exp (diff): Set list_a and list_b to null so diffing
	empty files works.
	* lib/framework.exp (unknown): Set the exit status before calling
	log_summary. 

Thu Dec  5 10:24:27 1996  Fred Fish  <fnf@rtl.cygnus.com>

	* runtest.exp: Fix an indentation glitch.  Before running a new
	test case clear any pending errcnt so that the first test in the
	new test case won't become a spurious "unresolved" test.

Mon Dec  2 21:55:22 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/utils.exp (diff): Notice the file dofferences even if the
	file lengths are the same.
	* lib/remote.exp (rsh_exec): Work with both csh and sh.
	* lib/target.exp (execute_anywhere): Print an error message if
	START & END aren't found rather than core dump.

Fri Oct 18 20:54:10 1996  Doug Evans  <dje@canuck.cygnus.com>

	* lib/target.exp (prune_warnings): Fix typo in sunos pattern.

Thu Oct  3 16:00:52 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* doc/Makefile.in (clean): Move config.log to distclean.
	* example/calc/Makefile.in (clean): Move config.log to distclean.
	* testsuite/Makefile.in (clean): Move config.log to distclean.

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

	* Makefile.in (distclean): Remove config.cache
	* doc/Makefile.in (clean): Remove config.log
	* example/calc/Makefile.in (clean): Remove config.log

Wed Oct  2 16:59:24 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* testsuite/Makefile.in (clean): Remove config.log.

Mon Sep 30 11:23:25 1996  Tom Tromey  <tromey@cygnus.com>

	* configure: Regenerated.
	* aclocal.m4 (CY_AC_PATH_TKLIB): Typo fix.

Fri Sep 27 12:17:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* contrib/test-tool (todayname): Add some echos around the "Here is"
	lines.

Thu Sep 26 17:09:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* contrib/test-tool: For g++, also track ChangeLog.fsf.

Fri Aug 30 10:35:12 1996  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Don't use cp -p if not supported.
	Fix first call to grep to extract PASS/FAIL/Ufoo messages.

Fri Aug 23 22:58:56 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp(libgloss_cflags): Convert the mips part of the
	target triplet to just "mips", so the libgloss stuff can be found.

Fri Aug 23 13:46:30 1996  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in (configure): Delete dependencies.
	(config.status): Depend on configure.
	* example/Makefile.in: Likewise.
	* testsuite/Makefile.in: Likewise.

Thu Aug 15 16:38:52 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/libgloss.exp (libgloss_flags): Add trailing slash to -B we
	added.
	(newlib_flags): Likewise.

Mon Aug 12 16:07:21 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp(libgloss_cflags): Convert the hppa part of the
	target triplet to just "pa", so the libgloss stuff can be found.

Thu Aug  8 17:07:52 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp(libgloss_flags): Don't look in new config info,
	just use CFLAGS & LDFLAGS as they're set as the default variables
	by the config code.

	* lib/libgloss.exp(libgloss_flags): Look for the srcdir too, so we
	can find the linker script when libgloss isn't installed yet.

Thu Aug  8 15:54:59 1996  Tom Tromey  <tromey@charmed.cygnus.com>

	* lib/remote.exp (telnet): Don't exp_send directly after a spawn.
	Make line-termination-matching regexp more strict.  Use "expect",
	not "catch expect".  Loop terminates when prompt is found.
	login/password check no longer matches everything.

Tue Aug  6 21:08:37 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp(get_multilibs): New proc to run gcc
	--print-multi-lib and to parse out the path and option info.
	(libgloss_flags,newlib_flags): Use get_multilibs, and set the
	-B and -L paths right based on the -m options passed to the cross
	compiler.

Wed Jul 31 15:21:08 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp: Don't return an empty linker script name with
	-T.

Thu Jul 25 15:19:32 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* runtest: Add another place to look for runtest.exp.

Wed Jul 24 15:41:21 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* runtest.exp: Accept "0-9_-" as legit characters for variable
	names defined on the command line.

Thu Jul 11 12:45:38 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* runtest: Find runtest.exp in $(prefix)/share, not $(prefix)/lib.

Mon Jul  8 16:05:57 1996  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Update gcc/g++ testing directory.

Tue Jun 25 10:21:24 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* runtest.exp (load_file): Catch errors in "file exists".

Mon Jun 24 17:26:20 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, infodir, includedir): Use 
	autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* configure: Rebuilt.
	* doc/Makefile.in (VPATH, mandir, infodir, INSTALL_PROGRAM, 
	INSTALL_DATA): Use autoconf set values.
	* doc/configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* doc/configure: Rebuilt.
	* example/Makefile.in (bindir, libdir, datadir, mandir, infodir, 
	includedir): Use autoconf set values.
	(docdir): Removed.
	* example/configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* example/configure: Rebuilt.
	* example/calc/configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* example/calc/configure: Rebuilt.	
	* testsuite/configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* testsuite/configure: Rebuilt.
	* testsuite/aclocal.m4: New.  Include ../aclocal.m4.

Wed Jun 12 14:18:09 1996  Tom Tromey  <tromey@thepub.cygnus.com>

	* configure: Regenerated.
	* aclocal.m4 (CY_AC_PATH_TCLH, CY_AC_PATH_TKH): Use odd names to
	avoid name clashes with SunOS headers.

Tue Jun  4 17:53:16 1996  Gordon Irlam  <gordoni@snuffle.cygnus.com>

	* install-sh: Add MIT copyright.  Fix typo.

Fri May 31 14:09:32 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* QuickRef.ps: Removed.

Tue May 28 13:03:48 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* testsuite/configure: Regenerated.
	* configure: Regenerated.
	* aclocal.m4 (CY_AC_PATH_TCLH): Don't use AC_TRY_RUN.
	(CY_AC_PATH_TKH): Don't use AC_TRY_RUN.

Tue May 21 11:40:41 1996  Doug Evans  <dje@seba.cygnus.com>

	* aclocal.m4 (CY_AC_PATH_TCLH): Guess Tcl version if cross compiling.
	* testsuite/configure: Regenerated.

Tue May 14 15:38:04 1996  Mark Alexander  <marka@andros.cygnus.com>

	* lib/target.exp (compile): Use append instead of lappend
	to prevent cflags from being surrounded by curly braces.

Wed Apr 10 13:29:15 1996  Jeffrey A Law  (law@cygnus.com)

	* site.tmpl (h8300*-*-*): Define STACK_SIZE and NO_LONG_LONG.

Mon Apr  8 16:21:15 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* testsuite/Makefile.in (configure): Removed bogus tab.

Tue Feb 20 19:43:47 1996  Doug Evans  <dje@charmed.cygnus.com>

	* runtest.exp (main loop): Handle a=b=c in $MULTIPASS.

Fri Feb  2 10:25:32 1996  Jeffrey A Law  (law@cygnus.com)
	
	* site.tmpl (hppa*-*-proelf*): Update.

	* lib/target.exp (compile): Add a space before appending $arg
	to $options.

Thu Feb  1 22:48:15 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* framework.exp (perror, warning): Add an errno global so the
	error message is from a subroutine is accessible to the calling
	proc.
	* remote.exp (rlogin, telnet, rsh): Trap various kerberos message
	when kinit is needed. 
	* testsuite/runtest.all/libs.exp: Trap untested, unsupported,
	warnings, and errors too. 
	* testsuite/runtest.all/remote.exp: Look for kerberos messages so
	those come up untested, rather than failures. This is only cause
	we're testing by connecting to the localhost.

Mon Jan 29 08:49:14 1996  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-format-linenum): dg-linenum-format is global.

Sun Jan 28 13:28:12 1996  Doug Evans  <dje@charmed.cygnus.com>

	* lib/dg.exp (dg-test): Update to handle new results from ${tool}_load.

Sat Jan 27 13:04:58 1996  Doug Evans  <dje@charmed.cygnus.com>

	From Anthony Green <green@cygnus.com>.
	* lib/dg.exp (dg-do-what-default, dg-interpreter-batch-mode,
	dg-linenum-format): New globals.
	(dg-format-linenum): New proc.
	(dg-{error,warning,bogus}): Call dg-format-linenum.
	(dg-test): Set dg-do-what to ${dg-do-what-default}.
	Use ${dg-linenum-format} in trimming line number field.
	Don't scan for excess errors or delete output file if testing an
	interpreter.

	* lib/dg.exp (${tool}-dg-test): Delete default_flags and libs args.
	(dg-extra-tool-flags): Renamed from dg-default-tool-flags.
	(dg-runtest): Delete libs arg.
	(dg-test): Likewise.  Merge ${tool_flags} ${dg-extra-tool-flags} when
	calling ${tool}-dg-test.

Thu Jan 18 19:51:11 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/remote.exp: All tcp/ip connection procs now are consistant
	with each other. The all take (optionall) "target" or "host" and
	establish a connection using the config array. plus they all do
	three retries on each connection.
	* runtest.exp: Minor formatting changes.
	* lib/target.exp: Fix a few config bugs.
	* testsuite/runtest.all/{remote,target}.exp: New test cases for
	remote.exp and target.exp. 

Wed Jan 17 11:32:21 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* testsuite/Makefile.in (check): Find Tcl library directory.

Tue Jan 16 11:11:44 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* testsuite/runtest.all/{remotelib,targetlib,utilslib,framelib}.exp:
	Removed.
	* testsuite/runtest.all/{clone_output,config,utils}.test: New
	files for testing DejaGnu's library procs without runtest. These
	all run standalone, as well as under DejaGnu.
	* testsuite/runtest.all/libs.exp: Run standalone DejaGnu tests.

Mon Jan 15 18:16:07 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* tcl-mode.el: Updated to version 1.49.

Thu Jan 11 12:26:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* runtest.exp (--help): Fix --build description.

Thu Jan 11 10:08:14 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* testsuite/configure.in: Macro now called CY_AC_PATH_TCLH.
	* testsuite/configure: Regenerated.

	Changes in sync with expect:
	* configure.in (ENABLE_GDBTK): Use CY_AC_PATH_TCL and
	CY_AC_PATH_TK.
	* aclocal.m4: Replaced with version from expect.
	* configure: Regenerated.

Fri Jan  5 19:57:06 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* testsuite/lib/libsupp.exp: New support file for testing
	DejaGnu's libraries.
	* testsuite/runtest.all/
	framelib.exp,remotelib.exp,targetlib.exp,utilslib.exp: New test
	drivers, one for each library.
	* testsuite/runtest.all/options.exp: Create mini config file so
	the test cases still work.

Thu Jan  4 22:51:46 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* doc/dejagnu.texi: Add new sections on all the new librry
	routines. Rewrite config section, lots of other editing changes.

Wed Dec 20 00:49:16 1995  Jeffrey A Law  (law@cygnus.com)

	* lib/utils.exp (prune_system_crud): Discard warning about
	lack of exception sections from osf linker.

Mon Dec 11 09:31:55 1995  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Use TMPDIR if set.

Fri Dec  1 20:58:03 1995  Rob Savoye  <rob@chinadoll.cygnus.com>

	* doc/Makefile.in: Don't include the expect and tcl texinfo files
	anymore, they're incredibly out of date.
	* doc/dejagnu.texi: Updates for version 1.3.

Wed Nov 29 17:33:22 1995  Ian Lance Taylor  <ian@cygnus.com>

	* lib/utils.exp (prune_system_crud): Discard warning about g++ not
	supporting -g with DWARF.

Wed Nov 29 12:47:22 1995  Rob Savoye  <rob@chinadoll.cygnus.com>

	* lib/libgloss.exp: Look for newlib and libgloss with the new
	configure path so stuff fully links again.

Wed Nov 22 13:15:05 1995  Ian Lance Taylor  <ian@cygnus.com>

	* lib/utils.exp (prune_system_crud): Discard -g -O warnings from
	native compilers on OSF/1 and SunOS.

Thu Nov  2 14:50:23 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* runtest.exp: Set host_triplet to $build_triplet if it doesn't
	exist.

Thu Oct 19 21:34:55 1995  Fred Fish  <fnf@cygnus.com>

	* doc/Makefile.in, example/Makefile.in:  Remove extraneous tabs
	from otherwise empty line.  Confuses older non-GNU versions of "make".

Tue Oct 17 12:11:40 1995  Jim Wilson  <wilson@chestnut.cygnus.com>

	* lib/libgloss.exp (newlib_flags): Delete msoft-float support.
	Pass a -B option instead of a -L option.  Add a -I option for the
	machine dependent header files.

Mon Oct 16 13:27:27 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/target.exp (execute_anywhere): Use -log argument to verbose
	to eliminate duplicate messages in log file.

Fri Oct  6 20:44:05 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/libgloss.exp (newlib_flags, libgloss_flags): Just return the
	options so they work if gcc is in your path for a canadaian cross.
	* lib/remote.exp: Use "current" as an index into the target array
	rather than "target". Remove the need to
	target_info(current,prompt).
	* lib/target.exp (prune_warnings): Filter out the other warning we
	can safely ignore. Also strip out "\r" characters added by a
	remote command.
	(remote_open) Look for output between START and END rather than a
	prompt.

Fri Sep 29 12:36:43 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	*  lib/targets.exp (prune_warnings): Only check for ld.so warning
	on sunos systems. Check against host, not target.
	* lib/debugger.exp: 
	* runtest.exp: Set target_abbrev to default to "unix" rather than
	"-unset-".

Wed Sep 27 10:10:48 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/targets.exp (prune_warnings): Remove certain host specific
	warnings from the compiler and linker.
	(compile,archive,ranlib): Use prune_warnings, and make comp_output
	a global incase the final error message is wanted to display.

Tue Sep 26 23:58:16 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/framework.exp (warning, perror): Take an optional numeric
	value to set the count to. A "0" effectively resets after the
	message so it doesn't have side effects on unrelated tests.

Fri Sep 22 13:02:00 1995  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp (srcdir): Mark trailing '/' as deprecated,
	and append it outside the main loop.

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

	* Makefile.in (maintainer-clean): New synonym for realclean.  Run
	target in subdirectories before current directory.
	* example/Makefile.in (maintainer-clean): Likewise.
	* doc/Makefile.in (maintainer-clean): New synonym for realclean.
	* example/calc/Makefile.in (maintainer-clean): Likewise.
	* testsuite/Makefile.in (maintainer-clean): Likewise.

Wed Sep 20 11:28:09 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* testsuite/runtest.all/subdirs*: Add subdirs and bogus test files
	to use for testing the getdirs and find procs.
	* testsuite/runtest.all/libs.exp: New test driver for library
	procs.

Tue Sep 19 16:58:57 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/remote.exp (remote_open): If we can't find netdata in the
	path, return a shell_id of -1.

Mon Sep 18 10:24:51 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/utils.exp (getdir): Stip out CVS, RCS, and a few other
	directories we don't need.

	* runtest.exp: Get $tool dirs first, then process the subdirs.
	* lib/utils.exp (getdir,find): Search for directories and files
	the old way. 

	* testsuite/runtest.all/options.exp: Fix broken options and add
	tests for new options.

Sat Sep  9 16:14:55 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/vxworks.exp (vxworks_spawn): Add `global checktask'.

Sat Sep  9 08:54:01 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/utils.exp: (diff) Fix to return correct value. Also make the
	output clearer for the differences found, and scan the whole file.

Fri Sep  8 13:57:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/remote.exp (download): Use verbose, not puts, when saying
	how many lines we downloaded.

Thu Sep  7 10:56:41 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/utils.exp (find): Fix so it doesn't get duplicate
	directories.

Wed Sep  6 20:51:40 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/libgloss.exp: New file. Find linker scripts and search paths
	for the linker for libgloss supported targets.
	* lib/framework.exp: Set default output file to testrun.sum and
	testrun.log if --tool wasn't specified.
	* lib/remote.exp: Change from "current" to "target" for
	target_info index.

Tue Sep  5 22:05:52 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* runtest.exp: Extract the vaules for *_cpu, *_vendor, and *_os
	from the config triplets. Tweak a few comments. Init files can now
	also be named $target_os.exp.
	* lib/target.exp: Add procs to find libgloss so we can produce a
	fully linked executable. Tweak a few comments, fixed push_target.

Thu Aug 31 21:16:08 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/utils.exp: (getdirs) now ignores directories named CVS, RCS,
	and SCCS.
	* runtest.exp: --tool is now optional. init files can also be
	named using the target_os part of target_triplet

Thu Aug 31 02:52:57 1995  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp: Don't set target_triplet if already set.

Wed Aug 30 21:34:16 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* runtest.exp: Use $*_triplet rather than $arg_*_triplet so
	configfile settings don't get trashed.

	* runtest.exp: Fix argument processing for --host, --build, and
	--target.

Mon Aug 28 23:39:17 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* lib/target.exp: New file containing most of the new config code.
	* lib/framework.exp: Fix ishost, istarget, isnative to use new
	config subsystem. Add is3way, isbuild.
	* lib/utils.exp: Add diff, setenv, getenv, unsetenv procs that
	function like the Unix commands of the same name.
	* lib/remote.exp: Add support to use the new config subsystem.
	* runtest.exp: Add support for handling the new config subsystems.

Fri Aug  4 15:37:55 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-test): Also watch for unsupported from
	${tool}-dg-prune.

Wed Aug  2 21:36:10 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/dg.exp (dg-test): Watch for untested/unresolved markers
	from ${tool}-dg-prune.

	* runtest.exp (init section): Delete host, target.
	Document host_triplet, target_triplet, target_alias.

Tue Aug  1 11:34:46 1995  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp (target_abbrev): Provide initial value in case
	$DEJAGNU not set and global config file doesn't exist.

Fri Jul 28 11:43:59 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/vxworks.exp (checktask): New variable, default to `fp'.
	(vxworks_spawn): Use it.

	* lib/vx29k.exp: Delete file.

Fri Jul 28 00:24:40 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* site.tmpl: Make gdbserver the default for cross tests;
	no easy way to make it conditional on lynx  here.

Thu Jul 27 16:21:05 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/{mh-linux, mh-sysv4}: Removed.

	* Makefile.in (configure): Removed rule that automatically
	rebuilds configure script.  Users might not have autoconf.
	* configure.in: Use AC_PROG_CC instead of AC_SUBST, but still
	set CC to ${CC-cc} before that as per cygnus conventions.
	* configure: Regenerated with autoconf 2.4.2.

Wed Jul 26 19:41:56 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* lib/vx29k.exp: Copy of vxworks.exp, but without `filesys:' and
	using the `tt' command instead of `fp'.

Wed May 10 18:33:21 1995  Stu Grossman  (grossman@andros.cygnus.com)

	* site.tmpl:  Create rule for Oki targets.  Make Winbond rule more
	specific.

Wed May 10 14:50:12 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/bug.exp (bug_load): send two carriage returns to leave
	  s-record download mode.
	  (bug_execute): set exec_output.

Thu May  4 11:48:12 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/remote.exp (remote_open): If $reboot is set, call
	  reboot_hook proc if it exists.
	  Added experimental new connect type "netdata".

Wed May  3 15:40:55 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* runtest.exp: Redo argument parsing so that arguments of the form
	  --foo=bar are processed correctly.

Sat Apr 29 12:59:18 1995  Doug Evans  <dje@chestnut.cygnus.com>

	* lib/dg.exp: New file.

	* runtest.exp (verbose): New option -log.

Wed Apr 26 12:40:23 1995  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp (main loop): Set multipass_name.
	* lib/framework.exp (record_test): Print multipass_name if not empty.

	* lib/framework.exp (record_test): Handle UNTESTED, UNRESOLVED,
	and UNSUPPORTED.
	(untested, unresolved, unsupported): Call record_test.
	* lib/util-defs.exp: Whitespace and verbosity cleanup.
	* testsuite/Makefile.in (site.exp): Set tmpdir.
	(realclean): rm -rf tmpdir.
	* testsuite/config/default.exp: Whitespace cleanup.
	* testsuite/runtest.all/options.exp: Likewise.
	* testsuite/runtest.all/stats.exp: New file.
	* testsuite/runtest.all/stats-sub.exp: New file.

	* runtest.exp: Parse --tool in time for config files to use it.

Mon Apr 24 14:15:21 1995  Stu Grossman  (grossman@andros.cygnus.com)

	* site.tmpl:  Re-install hppro config lost in previous change.

Mon Apr 24 11:29:51 1995  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp (multipass): New global.
	(main loop): Make multiple passes if MULTIPASS set.
	(VAR= processing): Allow A=b=c.

Sun Apr 23 10:29:37 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* site.tmpl: Revert last change, GDB isn't the only program that
	  uses dejagnu for testing.

Fri Apr 21 15:46:42 1995  Stu Grossman  (grossman@rtl.cygnus.com)

	* site.tmpl:  Change configs for monitor-based GDB targets to use
	common startup file.

Fri Apr 21 12:16:56 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/remote.exp (kermit, rlogin, rsh, telnet, tip): Don't set
	  connectmode.
	  (telnet): Send "\r\n" before attempting to match prompt.
	  (remote_open): split apart $netport into host and port,
	  and pass those values to the telnet proc.

Wed Apr 19 17:30:40 1995  Stu Grossman  (grossman@cygnus.com)

	* site.tmpl:  Add support for m68k-cpu32bug-coff.

Sat Apr 15 17:44:57 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/utils.exp (prune_system_crud): Only define if not already
	defined.

Tue Mar 28 17:45:37 1995  Stu Grossman  (grossman@cygnus.com)

	* site.tmpl:  Add nosignals flag to indicate targets that can't
	use signals.  Change a bunch of append commands to set commands.

Tue Mar 28 15:50:44 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/remote.exp (remote_open, remote_close): New procs.
	  (download): changed to not convert contents of file to
	  s-records, as file is already supposed to contain s-records.

Fri Mar 24 15:40:39 1995  Stu Grossman  (grossman@cygnus.com)

	* site.tmpl: Add m68k-est-coff.

Fri Mar 24 13:44:52 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* doc/dejagnu.texi (Posix): Remove 3 words accidentally repeated.

Thu Mar 23 22:12:07 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* aclocal.m4: Split AC_PATH_T* into two pieces, one for	headers
	and one for libraries. 
	* testuite/configure.in: Use CY_PATH_TCLH so we don't get a
	warning looking for the libraries.

Wed Mar 22 21:04:26 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* testuite/configure.in: Use CY_PATH_TCL so we can set TCL_LIBRARY
	right and run the selftests with a freshly built expect.
	* aclocal.m4: New support for autoconf.
	* configure.in, doc/configure.in: Use AC_PROG_INSTALL.
	* Makefile.in, doc/Makefile.in: Use mkinstalldirs and a BSD style
	install program.
	* mkinstalldirs, install-sh: Borrowed from autoconf to install
	without using special Cygnus install program.
	* testsuite/Makefile.in: Take out a bogus dependacy for exp_test.

Tue Mar 21 09:18:15 1995  Doug Evans  <dje@canuck.cygnus.com>

	* lib/vxworks.exp (vxworks_transform_path): New proc.
	(vxworks_ld): Clarify return codes.  Call vxworks_transform_path
	on argument.  Handle preset passwords.  Clean up main loop.
	(vxworks_spawn): Clarify return codes.  Poll board until program
	exits.  Watch for AbOrT abort() marker.  Only print remaining buffer
	contents on failure.

	* contrib/test-tool: Watch for framework errors that prevent
	$tool.sum from being created.

	* runtest.exp: Treat $DEJAGNU as a global config file (which it is).
	Don't exit if there isn't a global config file, just warn the user.
	Error if $DEJAGNU is defined but file doesn't exist.

Sun Mar 19 12:01:06 1995  J.T. Conklin  (jtc@rtl.cygnus.com)

	* runtest.exp: Don't use site.tmpl as a global config file.  It is
	  only useful as an example.

Fri Mar 17 14:41:26 1995  Mike Stump  <mrs@cygnus.com>

	* contrib/test-tool: Don't include expected failures in the tests
	that now fail, but worked before section.

Thu Mar 16 16:52:23 1995  Mike Stump  <mrs@cygnus.com>

	* contrib/test-tool: Treat expected failure to unexpected failure
	as a test that still doesn't work.

Thu Mar 16 11:29:57 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* Makefile.in, example/Makefile.in, example/calc/Makefile.in,
	testsuite/Makefile.in, doc/Makefile.in: Don't rebuild the
	configure scripts automatically. Change how recursion works. Add
	.PHONY targets.

Wed Mar 15 16:07:25 1995  Stu Grossman  (grossman@cygnus.com)

	* site.tmpl (m68k-*-coff):  Add config for talking to IDP board.

Wed Mar 15 16:32:41 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* Makefile.in, example/Makefile.in, example/calc/Makefile.in,
	testsuite/Makefile.in, doc/Makefile.in: Add rules to rebuild the
	configure scripts.

Tue Mar 14 20:24:19 1995  Rob Savoye  <rob@darkstar.cygnus.com>

	* configure, example/configure, example/calc/configure,
	testsuite/configure, doc/configure: New autoconf scripts.
	* configure.in, example/configure.in, example/calc/configure.in,
	testsuite/configure.in, doc/configure.in: Rewritten to be autoconf
	based.
	* Makefile.in, example/Makefile.in,  example/calc/Makefile.in,
	testsuite/Makefile.in, doc/Makefile.in: Rewritten to use autconf
	variables.

Fri Mar 10 06:57:53 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* contrib/test-tool: Only call date once and put the result in a
	variable.  This should help behavior when run around midnight.

Tue Mar  7 11:49:59 1995  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool (testdir): binutils tests are in `.'.

Tue Feb 28 09:46:42 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* doc/dejagnu.texi (Posix): Clarify discussion of expected
	failures.  Add note about what POSIX requires with respect to
	UNRESOLVED.  Editorial changes (e.g. samp -> code).

Tue Feb 21 22:46:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)

	* contrib/test-tool (tool): If we're testing g++, also do a make
	check for each of libg++, libio, and libstdc++.

Fri Feb 17 14:06:50 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* lib/vxworks.exp (vxworks_ld): Update pattern used to match a
	  successful load.

Fri Feb 10 10:25:53 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* contrib/test-tool: Put errors and warnings into the output.

Mon Feb  6 16:34:51 1995  Ian Lance Taylor  <ian@cygnus.com>

	* runtest.exp (transform): Return a name based on target_alias,
	not on target_triplet.
	(target_alias): Default to target_triplet, not host_triplet.

Thu Feb  2 11:29:49 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/framework.exp (setup_xfail): Clear xfail_prms.  Before this
	change, if setup_xfail was called without a PRMS number,
	xfail_prms would have a value from the previous (completely
	unrelated, perhaps even for a different target) setup_xfail.

Tue Jan 24 11:23:40 1995  J.T. Conklin  (jtc@rtl.cygnus.com)

	* doc/runtest.1:  Fix typos and formatting bugs.

Wed Jan 11 13:09:22 1995  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Treat expected things as "pass" only if
	-expectedpass given.

Fri Jan  6 10:57:12 1995  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Pass 3 -v's to runtest.  Don't pass -a.
	Save output in test-$tool.log if -keepoutput given.

Fri Dec 30 12:46:06 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>

	* runtest.exp: catch takes only two arguments; quote accordingly.

Sun Dec  4 01:14:49 1994  Doug Evans  <dje@canuck.cygnus.com>

	* contrib/test-tool: Handle gas, gld, and binutils.
	Treat XFAIL as PASS, XPASS as FAIL.
	Always pass options to `comm' as first argument.

	* lib/remote.exp (*): Rename `retries' to `tries'.
	(rsh): Mark as deprecated.
	(rcp_download): Distinguish between failure and success in verbose
	message.  Call proc verbose, don't use global.
	(rsh_exec): New proc.

	* lib/framework.exp (warning_threshold, perror_threshold): New vars.
	(record_test): Use them.
	(reset_vars): Reset them.
	(get_warning_threshold, set_warning_threshold): New procs.

Mon Nov 14 00:21:05 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/framework.exp: Lots of formatting cleanup.
	(unknown): Delete unnecessary calls to close_logs, cleanup, exit.
	(warning, perror): errorInfo is global.
	(note): New proc.

	* runtest.exp: Document perror vs send_error quandary.
	(unresolvedcnt): Initialize.
	(configfile): Use consistently in place of site.exp.
	(verbose): Call clone_output instead of perror.
	(load_file): New proc.
	(argument parsing): Always call send_error for error messages.
	(all loading of files, except testcases): Consistently exit if tcl
	error occurs.
	(all loading of files): Consistently handle errorInfo.
	(main loop): Delete useless test for $test_name == "".

Wed Nov  2 08:49:06 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/udi.exp (shell_id): Delete.
	(mondfe): Delete unneeded global's.  Delete references to `shell_id'.
	(mondfe_download): New argument `shell_id'.
	Move verbose messages to level 2.  Tighten up pattern matching on
	text coming back from target.  Don't set `timeout'.  Only log
	expect buffer contents if connection failed.
	(exit_mondfe): Delete unneeded global's.  New argument `shell_id'.
	(exit_montip): Likewise.
	* lib/remote.exp (telnet): Use -gl for shell prompt pattern.
	(rlogin, rsh): Likewise.
	(exit_remote_shell): Delete nilpotent resetting of `shell_id'.

Fri Oct 28 10:38:41 1994  Rob Savoye  (rob@cygnus.com)

	* runtest: Make it an error if runtest.exp doesn't exist.

Fri Oct 21 23:15:27 1994  Doug Evans  <dje@canuck.cygnus.com>

	* lib/utils.exp (prune_system_crud): Fix ld.so pattern to catch
	multiple occurrences in a row.

Fri Oct 14 17:26:38 1994  Doug Evans  <dje@canuck.cygnus.com>

	* runtest.exp (test_name): Delete unnecessary initialization.
	* lib/framework.exp (clone_output): Reformat comment.
	(reset_vars): Delete `test_name'.
	(log_summary): Delete `tool.sum'.
	(cleanup): Fix comment.
	(record_test): New (internal) proc (taken from pass/fail).
	Test `warncnt',`errcnt' before `xfail_flag'.
	Don't incr `passcnt' prematurely.
	(pass, fail, xpass, xfail): Call it.
	(untested, unresolved, unsupported): Don't call xfail.
	* lib/utils.exp (grep): Don't pass trailing ".*" to regexp.
	(prune_system_crud): New proc.

Fri Oct  7 19:19:12 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/utils.exp (runtest_file_p): Add support for glob style
	expressions.

Mon Sep 26 12:03:16 1994  Doug Evans  (dje@canuck.cygnus.com)

	* runtest: Handle relative paths in $0.

Sun Sep 25 16:51:11 1994  Doug Evans  (dje@canuck.cygnus.com)

	* runtest.exp: Add more docs on complexity of argument parsing.
	Parse --host, --objdir, --srcdir, --target, and --verbose before
	sourcing any config files.  Don't let config files override --host
	and --target.  Don't call `verbose' until it's useful.  Call
	config.guess after $objdir/site.exp has been sourced.
	Delete unused variable `match'.  Reword verbose message for --name.
	Delete existence check of `host_triplet' and `target_triplet'.

Sat Sep 24 14:23:49 1994  Doug Evans  (dje@cygnus.com)

	* runtest.exp: Lots of whitespace cleanup.  Update copyright.
	Exit with nonzero status for illegal arguments and if we can't
	determine the host.
	(verbose): Add two new arguments (-n, --).
	* lib/remote.exp: Formatting cleanup.
	(exit_remote_shell): Add a note about `shell_id'.
	* lib/udi.exp: Formatting cleanup.
	(mondfe): Send message when trying to connect.
	Watch and print more error messages coming from `mondfe'.
	(mondfe_download): Use "verbose -n" so the pretty dots appear on
	one line.  Fix regexp in "Clear.*BSS section" message.

Tue Sep 13 10:51:47 1994  Doug Evans  (dje@canuck.cygnus.com)

	* lib/framework.exp (log_summary): Clean up code that handles
	`testcnt'.
	(xfail, unsupported, untested): Don't set `exit_status',
	these aren't errors.

	* runtest.exp: Sort options in --help.

Mon Sep 12 12:25:22 1994  Doug Evans  (dje@canuck.cygnus.com)

	* runtest.exp: Delete special handling of *.[Ccso] arguments.
	Accept new argument: foo.exp[=arg(s)].
	(all_runtests): New global.
	(runtests): Records arguments for each .exp script.
	(main test loop): Move setting of srcdir out of loop.
	Set up `runtests' for each script.
	* lib/utils.exp (find): Remove unnecessary "\n" in verbose message.
	(runtest_file_p): New proc.

Wed Sep  7 10:41:33 1994  Doug Evans  (dje@canuck.cygnus.com)

	* runtest.exp (verbose): Handle leading -'s in message.

Mon Jul 18 11:16:02 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* lib/vxworks.exp: no need to use system, stty is an expect
	  builtin and can be called directly.

Thu Jun 30 15:23:19 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* lib/bug.exp: replaced "rm -foreach" with "rm -f".

Tue Jun 14 12:38:44 1994  David J. Mackenzie  (djm@rtl.cygnus.com)

	* doc/dejagnu.texi: Fix a few typos and omissions.

Tue Jun  7 13:55:30 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* Makefile.in (mostlyclean, realclean): New targets.
	* doc/Makefile.in, example/Makefile.in: Likewise.
	* example/calc/Makefile.in, testsuite/Makefile.in: Likewise.

Mon Apr 25 17:11:30 1994  Bill Cox  (bill@cygnus.com)

	* Makefile.in: Add FSF standard comment block.
	* example/calc/Makefile.in: Define and use EXPECT and
	  RUNTEST variables, so 'make check' will use tools in the
	  current objdir tree if they're present.
	* lib/remote.exp: Add rcp_download proc, to download a
	  file using remote 'cp'.  This was first used for the
	  Lynx cross-host tests.
	* testsuite/Makefile.in: Update copyright date.
	* testsuite/runtest.all/options.exp: Update copyright date.

Wed Apr 13 18:05:44 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* runtest: Pass ${1+"$@"} instead of "$@", because many shells
	incorrectly pass an empty string when no arguments were specified.

Wed Apr 13 11:46:11 1994  Bill Cox  (bill@cygnus.com)

	* lib/remote.exp (rcp_download): New proc for using 'rcp'
	  to download (used first for Lynx cross-testing).

Tue Apr 12 13:27:15 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in (TCLIBRARY): Define and use.

Wed Mar  9 13:08:54 1994  Doug Evans  (dje@canuck.cygnus.com)

	* runtest.exp: Misc. formatting/typo cleanups.
	Process ~/.dejagnurc and $base_dir/site.exp before command line
	options and clarify search order of all config files.
	Clean up verbose output for -v, -srcdir, -host, and -target options.

Mon Feb 14 20:37:10 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: Re-write init file search/loading code.

Tue Feb  8 19:27:07 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: Move transform from lib/utils.exp so it can be used
	in config files.

Thu Jan 20 20:05:39 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: findfile: New proc to be used in config files.

Tue Jan 18 14:46:12 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: Fix so things don't bomb if whoami doesn't exist.

Mon Jan 17 15:26:50 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/framework.exp (setup_xfail): Re-write so it works correctly
	with numbers in the config string.

Mon Jan 10 21:29:08 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/framework.exp: Create exp_continue if it doesn't exist.
	* runtest.exp: Don't try to print errorInfo unless it exists.

Tue Jan  4 16:01:40 1994  Rob Savoye  (rob@rtl.cygnus.com)

	* All files: Updated to 1.1.3. This version works with Tcl7.3 and
	Expect5.2.

Sat Jan  1 19:53:40 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/framework.exp: Fixed log_summary to cleanup all the way.
	setup_xfail now only use canonical names, catch errors from
	sourcing $tool_exit and $tool_version.
	* runtest.exp: Changed the order of sourcing init files. Removed
	all references to target_alias or host_alias. uses target and host
	triplet only, uses config.guess to get a host type.

Thu Dec 23 18:26:24 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest (debug): Add an environment variable DEJAGNULIBS to
	point to where runtest.exp and the rest live.

Wed Dec 15 20:38:49 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: Fix signal handling so only one ^C is required and
	it actually exists after printing the summary.

Fri Dec  3 20:58:27 1993  Rob Savoye  (rob@darkstar.cygnus.com)
 
	* runtest.exp: Only consider a TCL_ERROR to be a sign of a problem
	worth handling. This is when sourcing the test case.
 
Thu Dec  2 14:16:20 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: If the verbose level is greater than 2, display
	debugging output to the screen.

Wed Dec  1 16:04:08 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest.exp: Change error handling to use the return from
	"catch" rather than depending on errorInfo.

Fri Nov 19 15:08:34 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* site.tmpl: Add LDFLAGS "-r" to vxworks targets.

Mon Nov 15 19:43:28 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/debugger.exp: Add dumpvars which dumps the values of
	variables specified by a regular expression.Add dumpvars
	which dumps the body of procedures specified by a regular
	expression.
	* Makefile.in: Install site.exp as only config file. 
	* runtest.exp: look for site.tmpl in $srcdir, not site.exp in
	$objdir.
	* lib/framework.exp: Make istarget and isnative procs use
	$target_alias rather than target_triplet.
	* lib/framework.exp: Make warning and perror keep count. Have
	pass or fail procs check, and change to unresolved.

Mon Nov 15 10:20:42 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* runtest.exp: corrected a few typos in the comments. Added
	  test for getting user name from the environment first. Now
	  checks for USER and the LOGNAME. If unable to get the logname
	  from the environment, then try whoami and who am i

Thu Nov  4 13:38:32 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest: Use sed rather than expr to get the execution path and
	the runtest name cause expr doesn't seem to work portably on all
	machines.

Wed Nov  3 11:27:34 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* Makefile.in, configure.in: Install and build with new config
	system.
	* config/mt-*: Set default connection parameters and name
	transformation.
	* lib/framework.exp: Change "error" proc to "perror" so I can use
	Tcl's builtin error handling.
	* runtest.exp: Re-write error handling so it's now real
	descriptive with errors and misses nothing. Add support for new
	config file system. Up version number to 1.1.
	* runtest: General cleanup. Add support for passing the config
	name down to runtest.exp.

Sat Oct 16 07:47:38 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* doc/runtest.1: Fix typos in font changes (\fi where \fI was meant).

Wed Oct 13 11:00:55 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* runtest.exp: insert missing space
	* lib/framework.exp: made proc verbose work as expected. Now will
	  display a message if the level is = or > than the verbose level.
	* lib/utils.exp: replaced if $verbose>X then { send_user "foo\n" }
	  stuff with the verbose "foo" X proc call

Mon Oct 11 17:11:37 1993  Jeffrey Wheat (cassidy@cygnus.com)

	* runtest.exp: fixed stupid scoping bugs.

Mon Oct 11 16:26:25 1993  Jeffrey Wheat (cassidy@cygnus.com)

	* runtest.exp: fixed "$test_result" bug, and minor reformatting
	  changes to help make the file more readable

Sat Oct  9 18:43:31 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)

	* configure.in: recognize mips*- instead of mips-

Mon Sep 27 21:09:26 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/bug.exp: Add new file for procs related to "bug" boot
	monitor.

Wed Sep 22 21:01:43 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/framework.exp: Added m68k-idp-* to target list.
	* configure.in: Added m68k-idp-* to target list.
	* config/mt-m68k-abug-aout: Fixed objobjcopy to be objcopy.
	* config/mt-m68k-abug-coff: Fixed objobjcopy to be objcopy.

Wed Sep 22 12:10:34 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/framework.exp: Folded in test counting mechanism.

Tue Sep 21 19:41:07 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/vxworks.exp: Added a vxworks_spawn proc to execute tasks.

Mon Sep 20 21:28:23 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/vxworks.exp: Prompt user for password if the default login
	fails.

Mon Sep 13 11:30:37 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* runtest.exp: add global testcnt variable.
	* lib/framework.exp: add testcnt mechanism. Gives a total
	  number of testcases run in summary. incremented by the
	  pass/fail/etc procs. Also added a "Tool version" string 
	  in the summary.

Thu Sep  9 12:37:27 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/utils.exp: Added new procs for pwd{} and absolute{}.
	* lib/utils.exp: Removed pwd{} proc, added a download{} proc.

Mon Sep  6 12:55:54 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/utils.exp: fixed scoping problem of missing ""'s
	  nasty little bugger. broken since the start.

Fri Sep  3 16:47:07 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/framework.exp: Added support for the h8/500.

Fri Sep 03 10:42:12 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* configure.in: (h8300-*-*) (h8300h-*-*) (h8500-*-*) targets added.

	* config/mt-h8300hms: new file for h8300-hitachi-hms support.
	* config/mt-h8500hms: new file for h8500-hitachi-hms support.
	* config/mt-h8300hhms: new file for h8300h-hitachi-hms support.

Tue Aug 31 16:57:12 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/utils.exp: Add a proc to kill process started within the
	current shell session.

Sun Aug 29 23:10:35 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/remote.exp: wait after exiting the remote shell.

Sun Aug 15 22:27:23 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/framework.exp: Numeric column in summary line up and only
	print if the sub total is greater than zero.

Tue Jul 20 15:32:51 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* lib/framework.exp: Added code for initial POSIX (PCTS) support.

Mon Jul 19 09:31:48 1993  Jeffrey Wheat  (cassidy@cygnus.com)

	* remote.exp: Added a supplied patch to allow specifing a port 
	  to the telnet command.

Mon Jul 12 17:54:58 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Remove support for command line options to use "++"
	as a prefix. Also removed all the old code for the --diff option.
	The --debug option can now be abbreviated to just -d.

Sun Jul 11 20:49:49 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Exit after printing the version numbers.
	* lib/utils.exp: Ignore extraneous words in the argument passed.

Thu Jul  8 07:17:17 1993  Doug Evans  (dje@canuck.cygnus.com)

	* lib/framework.exp: Add support for the h8/300.

Tue Jun 29 15:04:05 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest: Added Dje's patch so the shell stops stripping out the
	quotes from the command line.

Sun Jun 13 21:05:25 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Remove runtests option. Use any valid file name on
	the command line instead.
	* runtest: Add support for the Tcl debugger from the command line.

Thu May 27 20:01:51 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* Makefile.in: Make the release image of the testsuites from the
	special stubs. 

Sun May 23 18:40:01 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Don't flag successful return codes as errors.
	* runtest: Don't look for expect binary anymore.

Tue May 11 17:31:29 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* runtest: Pass "--" to $expectbin.

Fri May  7 08:19:37 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): Added CC, CFLAGS, LDFLAGS, RUNTEST,
	RUNTESTFLAGS.
	* example/Makefile.in (FLAGS_TO_PASS): Was being used, but was
	never defined.
	* example/calc/Makefile.in: (CFLAGS): Removed -I arguments.
	(.c.o): Use required -I arguments.
	(PROG): Pass CFLAGS to CC.

Tue May  4 22:51:06 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: load_lib exits if it can't find the file. It also
	finds library files if srcdir = .

Tue Apr 27 08:59:32 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (FLAGS_TO_PASS): Define.

Fri Apr 23 13:12:27 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/framework.exp:
	  Made cosmetic changes to procedure "diff_logs".

Wed Apr 21 18:05:30 1993  Rob Savoye  (rob@cygnus.com)

	* runtest: Looks in $rootme/../../expect and $rootme/../expect and
	if there is one, it uses that to run runtest.exp.

Wed Apr 21 12:34:10 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* runtest.exp:
	  Changed how -diff and -mail affect the printing and
	  mailing of logs.
	* lib/framwork.exp:
	  Changed format of the output of the diff log.  Made
	  minor changes to "diff_logs" to acommodate the changes
	  to runtest.exp (above).

Mon Apr 19 18:45:10 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* runtest.exp:
	  Added the ability to specify, as an option parameter, the name
	  of the previous summary log to diff against. Added a call to
	  "close_logs" to the signal handlers. Enabled -mail option.
	  Cleaned up some comments.
	* lib/framework.exp:
	  Added procedure "mail_file" for mailing test log summaries.
	  Removed support for automatically generating log file names with
	  embedded time/date stamps. Cleaned up "diff_logs".

Sun Apr 18 19:54:17 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Fixed so signal trapping now works again. Cleaned
	up configuration stuff and how it finds the site.exp file.
	* Makefile.in: Remove unneeded macro definitions.

Fri Apr 16 15:11:52 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/framework.exp:
	  Added the procedures "diff_logs", "open_logs", and "close_logs".
	  Changed the name of the procedure "sum" to "log_summary".
	  Changed the name of the procedure "alldone" to "cleanup".
	  "Cleanup", formerly "alldone", no longer exits; runtest
	  explicitly exits.
	* runtest.exp:
	  Now calls "open_logs", "close_logs", and "diff_logs" to do the
	  respective goodies. We also now make explicit calls to "cleanup"
	  and exit.  Enabled --diff command line option which when used
	  will cause a call to the procedure "diff_logs".

Sun Apr 11 17:17:20 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* Makefile.in: Removed runtest target. Cleaned up install
	procedure.
	* runtest.exp: No longer uses --config option.
	* runtest: New bourne shell script to start runtest.exp.

Thu Apr  8 18:12:24 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib/utils.exp: the list of directories returned by getdirs now
	contains only directories that allow read permission.

Wed Apr  7 18:30:45 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Now looks for init files by ${target_os}.exp as
	well as ${target_os}-${tool}.exp.
	* config/mt-*: Added macros for COPY and DEMANGLE, new
	binutils.

Fri Apr  2 12:23:22 1993  Mike Werner  (mtw@deneb.cygnus.com)

	* lib: relocated old-dejagnu.exp to devo/gcc/testsuite/lib

Mon Mar 29 14:59:23 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* framework.exp: Added tests for spectra.

Thu Mar 25 14:16:54 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Fixed command line option processing. Now
	things like CFLAGS="-v -a" should work.

Thu Mar 25 12:40:50 1993  Ian Lance Taylor  (ian@cygnus.com)

	* lib/udi.exp (mondfe): Return -1 on failure.  Don't remove *_soc
	files.
	(mondfe_download): Fixed invalid expect usage which could never
	have worked.

Wed Mar 24 14:11:46 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Added --target and --host for specifying the config
	strings. The old --target is now --name.
	* lib/framework.exp: Moved all the host/target naming stuff from
	runtests.exp.
	* runtest.exp: Fixed bug so CFLAGS="-v" works. I changed the way
	the verbose pattern works in $argv.

Tue Mar 23 08:48:09 1993  Fred Fish  (fnf@cygnus.com)

	* configure.in:  Use host makefile fragment config/mh-sysv4
	on *-*-sysv4* configurations.
	* config/mh-sysv4:  New host makefile fragment for SVR4 systems.

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

	* Makefile.in: add dvi, check and installcheck targets

	* doc/Makefile.in: add defines for MAKEINFO, TEXI2DVI

Sun Mar 21 17:44:11 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: New command line option --ignore. Ignore any tests
	specified this way.
	* lib/framework.exp: Now uses puts send_error of send_user for
	some procs. Now warnings and errors go to stderr, and can
	be redirected. They still go to the logs.

Tue Mar 16 18:07:56 1993  Rob Savoye  (rob at poseidon.cygnus.com)

	* runtest.exp: Finds site.exp file with new install.
	* Makefile.in: Installs much better.

Tue Mar  9 08:17:04 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (MAKEOVERRIDES): Set to be empty.

Mon Mar  8 17:40:41 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/vrtx.exp: Spectra shell procedures.

Mon Mar  8 19:26:41 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in, config/{mt-a29k-udi, mt-frwcom-aout, mt-i386-aout,
	mt-i960-nindy, mt-i960-vx, mt-m68k-abug-aout, mt-m68k-abug-coff,
	mt-m68k-aout, mt-m68k-coff, mt-m68k-vx, mt-mips, mt-sparc-aout,
	mt-sparc-vx, mt-sparclite} (GDBFLAGS):  The default is -nx, to not
	load whatever random '.gdbinit' file might happen to be in the
	directory where the dejagnu tests are run.  If tests require
	a specific init file, they should load them explicitly.

Sun Mar  7 15:16:42 1993  Rob Savoye  (rob@cygnus.com)

	* runtest.exp, Makefile.in: Now sets default for objdir.

Sun Feb 28 15:30:00 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Now find site.exp in a path list. Also now supports
	using a short config file in each directory to override options.
	* Makefile.in, configure.in: Removed link for lib directory. Added
	doc as a subdir, runtest and site.exp now built as a dependancy,
	rather than by configure.

Thu Feb 25 11:07:30 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/mt-mips: New file for mt-idt-ecoff target.
	* configure.in (mips-idt-ecoff): New target; uses mt-mips.
	* runtest.exp: If mips-idt-ecoff, set target_abbrev to mips.
	* runtest.exp: Print any error produced by ${tool_init}.
	* lib/remote.exp (kermit): Made work.

Mon Feb 22 17:11:18 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* configure.in: Removed unneccesary code from configure.in

Mon Feb 22 07:54:03 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* devo/dejagnu: made modifications to framework, etc., to allow
	it to work properly  given the reorganization of deja-gnu and the
	relocation of the testcases from deja-gnu to a "tool" subdirectory.

Sun Feb 21 11:15:22 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* devo/dejagnu: Initial creation of devo/dejagnu.
	Migrated dejagnu testcases and support files for testing software
	tools to reside as subdirectories, currently called "testsuite",
	within the directory of the software tool.  Migrated all programs,
	support libraries, etc. beloging to dejagnu proper from
	devo/deja-gnu to devo/dejagnu.  These files were moved "as is"
	with no modifications.  The changes to these files which will
	allow them to configure, build, and execute properly will be made
	in a future update.

Wed Feb 17 10:51:13 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t02/whatis.exp, gdb.t03/ptype.exp: Remove expected failures
	for mips-*-* that now work (gcc was fixed to distinguish int and
	long in COFF debugging output).

Tue Feb 16 17:31:54 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp (test_gnu_style_demangling,
	test_cfront_style_demangling):  Add tests for some cases that
	involve const that were previously broken.

Mon Feb 15 14:09:33 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/default.exp (attach, core-file, r, run, target core):
	Add more error messages used by cross gdb.

Fri Feb 12 11:17:05 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp:  Add yet more cfront demangling tests.

Thu Feb 11 12:23:53 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp:  Add new demangling tests, for various
	gnu and cfront patterns, that match recent bug fixes.
	* configure.in (configdirs):  Add gdb.t23.
	* gdb.t23/ {Makefile.in, configure.in, in-gdbme.cc,
	templates.exp}:  New test case to testing templates.  Currently
	contains just the framework, but no tests.
	* gdb.t21/demangle.exp (demangle):  Fix proc so that demangling
	failures don't trigger two failure reports, one erroneously
	indicating the cause as a timeout.
	* gdb.t21/demangle.exp (various):  Print number of correct 
	demanglings when suppressing remaining tests.
	* gdb.t21/demangle.exp (test_cfront_style_demangling):
	New test for cfront style demangling.
	* gdb.t21/demangle.exp (do_test):  Call cfront style demangling
	test.

Wed Feb 10 18:28:40 1993  Stu Grossman  (grossman at cygnus.com)

	* gdb.t11/list.exp (list filename:function; wrong filename not
	rejected):  Revise expected failure profile.  All systems are
	expected to fail.

Mon Feb  8 21:25:47 1993  Stu Grossman  (grossman at cygnus.com)

	* gdb.t00/help.exp (help set):  Look for prompt on next line to
	prevent timeout error.
	* gdb.t11/list.exp (list filename:function; wrong filename not
	rejected):  Document expected failure for general case.  Set
	expected failure for sunos.

Wed Feb  3 09:42:14 1993  Mike Stump  (mrs@rtl.cygnus.com)

	* g++.niklas, configure.in: Add some test cases from Niklas.

Mon Feb  1 18:40:27 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* code_quality.exp, compile.exp, execute.exp, noncompile.exp,
	  special.exp, unsorted.exp: added "unset subdir_created".

Fri Jan 29 14:20:11 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* Makefile.in (install): changed the sed command, which creates
	  $(target-alias)-runtest, to have the installed
	  $(target-alias)-runtest call $(bindir)/runtest.exp instead of
	  $(srcdir)/runtest.exp . This worked earlier but was broken by a
	  change to $(EXPECT) .

Thu Jan 28 14:24:56 1993  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in (info, install-info): Deleted extraneous @'s.

Thu Jan 28 08:29:57 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (CC_FOR_TARGET, CFLAGS, CXX_FOR_TARGET, CXXFLAGS,
	CXX, GCC_FOR_TARGET, FLAGS_TO_PASS):  Match definitions in
	upper level devo/Makefile.in.
	* config/mt-unix (EXPECT):  Remove definition, it is set by
	Makefile.in to use the latest built version.
	* Makefile.in (CHILL_FOR_TARGET, CHILLFLAGS, CHILL_LIB):  Match
	definitions in upper level devo/Makefile.in.

Wed Jan 27 21:48:15 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (clean):  Test if directory exists before trying
	to run submake in it.
	* gdb.t00/teststrategy.exp:  Add cases that work when gdb is
	compiled with ALIGN_STACK_ON_STARTUP defined.  Fix "print foo"
	expected output to match current gdb.  Fix tests for finding
	pathname to gdb executable to use the TCL "file" command.
	* gdb.t20/classes.exp:  Change error when binfile does not 
	exist to be a simple fail instead.
	* tcl.tests/Makefile.in (tcltest):  Use CC_FOR_TARGET.
	* tcl.tests/Makefile.in (Makefile):  Add target.
	* gdb.t30/chexp.exp:  Set up expected failure for printing
	uninitialized convenience variables.
	* gdb.t31/chillvars.exp:  Set up expected failure for references
	to string4, which chill compiler doesn't handle yet.  Add tests
	for string repetition operator.
	* gdb.t31/in-gdbme.ch:  Comment out string4, not handled yet.

Mon Jan 25 15:12:41 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* gcc.unsorted/unsorted.exp
	  gcc.special/special.exp
	  gcc.noncompile/noncompile.exp
	  gcc.execute/execute.exp
	  gcc.compile/compile.exp
	  gcc.code_quality/code_quality.exp:
	  Modified to properly find source code for the test cases,
	  create the appropriate subdirectories to hold the compiled
	  testcases, and delete the subdirectories when finished.

Thu Jan 21 18:05:54 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* Makefile.in: cosmetic changes.
	* gcc.code_quality/code_quality.exp: repalced a "source xxx"
	  with a "load_lib xxx".
	* gcc.compile/compile.exp: replaced a "source xxx" with a
	  "load_lib xxx".

Thu Jan 21 08:03:16 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (CC, CXX):  Change to CC_FOR_TARGET, CXX_FOR_TARGET.
	* Makefile.in (FLAGS_TO_PASS):  Add AR_FOR_TARGET, CC_FOR_tARGET
	CXX_FOR_TARGET, RANLIB_FOR_TARGET.
	* {gdb.t00, gdb.t01, gdb.t02, gdb.t03, gdb.t04, gdb.t05, gdb.t06,
	gdb.t07, gdb.t08, gdb.t09, gdb.t10, gdb.t11, gdb.t12, gdb.t13,
	gdb.t15, gdb.t16, gdb.t20, gdb.t21, gdb.t22}/Makefile.in:
	Add Makefile target, dependencies, and rules, replace CC with
	CC_FOR_TARGET and CXX with CXX_FOR_TARGET.
	* gdb.t03/ptype.exp:  Add tests for string constants and array
	constants.
	* gdb.t16/printcmds.exp:  Add tests for string constants and array
	constants.
	* Makefile.in (CHILL):  Change to CHILL_FOR_TARGET.
	* Makefile.in (FLAGS_TO_PASS):  Add CHILL_FOR_TARGET.
	* {gdb.t30, gdb.t31}/Makefile.in:  Add Makefile target,	dependencies,
	and rules.  Replace CHILL with CHILL_FOR_TARGET.
	* gdb.t31/chillvars.exp:  Set print address off, add tests for
	strings.
	* gdb.t31/in-gdbme.ch:  Add some initialized string variables.

Tue Jan 19 14:07:38 1993  Mike Werner  (mtw@rtl.cygnus.com)

	* Makefile.in: corrected anchoring error in sed script, within
	  the "install" rule, which created the the file {mach}-runtest

Fri Jan 15 21:16:51 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t04/setvar.exp:  Minor changes to match current syntax for
	printing array-of-char in string form.
	* gdb.t16/printcmds.exp:  Fix one test case to match bug fix.
	* gdb.t30/chexp.exp:  Disable tests that check for control
	sequence form of character literals, not supported in GNU Chill.

Wed Jan 13 21:33:05 1993  Mike Stump  (mrs@cygnus.com)

	* doc/dejagnu.texi, Makefile.in: Change .../gcc to .../xgcc.

Wed Jan 13 08:21:00 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (CHILLFLAGS):  Add appropriate -L arg to find
	libchill.a, if a freshly built one exists.
	* gdb.t31/Makefile.in (LIBCHILL, LIBS):  Define local defaults.

	* Makefile.in (runtest):  Fix to properly find freshly built
	"expect" binary.

Tue Jan 12 12:51:46 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (CPLUS):  Remove macro.
	* Makefile.in (CC, CXX, GDB, EXPECT):  Use freshly build binaries
	if available.
	* Makefile.in (CFLAGS, CXXFLAGS, GDBFLAGS):  Provide default
	flags to go with CC, CXX, and GDB respectively.
	* Makefile.in (FLAGS_TO_PASS):  Add CXX, CXXFLAGS, LINK.
	* Makefile.in (info, subdir_do, subdirs):  Use rootme and
	rootsrc to find tool directories, use FLAGS_TO_PASS.
	* Makefile.in (runtest):  Use new EXPECT macro.
	* Makefile.in:  Other minor macro rearrangements.
	* config/{abug-g++.exp, aout-g++.exp, coff-g++.exp, mt-a29k-udi,
	mt-i960-nindy, mt-i960-vx, mt-m68k-abug-aout, mt-m68k-abug-coff,
	mt-m68k-aout, mt-m68k-coff, mt-m68k-vx, mt-unix, nind-g++.exp,
	udi-g++.exp, unix-g++.exp, vx-g++.exp}, doc/deja-gnu.texi, 
	g++.mike/{misc2.exp, misc8.exp, misc9.exp}, g++.old-deja/tests/
	g++.sun/g++.frag/1076585.C, gdb.t20/Makefile.in, gdb.t21/
	Makefile.in, gdb.t22/Makefile.in, lib/mike-g++.exp:
	Use CXX rather than CPLUS, CPLUSPLUS, or C++, use CXXFLAGS 
	rather than CFLAGS or CPLUSFLAGS or C++FLAGS.
	* Makefile.in (CHILL):  Use freshly built binaries if available.
	* Makefile.in (CHILLFLAGS):  Provide default flags for CHILL.
	* Makefile.in (FLAGS_TO_PASS):  Add CHILL, CHILLFLAGS.

Mon Jan 11 18:02:48 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* expect.tests/exp-after.test, exp-before.test, log-file.test,
	send-exp.test, spawn.test: Test case for expect tests.
	* expect.tests/exp-test.exp: Test driver for expect tests.
	* expect.tests/Makefile.in, configure.in: Configure
	support. 
	* expect.tests/exp-test.c: Simple interactive program for expect
	tests.
	* expect.tests: New directory.
	* config/unix-expect.exp: New tool.

Fri Jan  8 16:41:51 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config/udi-gdb.exp (gdb_start): don't require "UDI socket" in
	the startup message.

Wed Jan  6 08:53:08 1993  Fred Fish  (fnf@cygnus.com)

	* {gdb.t01, gdb.t02, gdb.t03, gdb.t04, gdb.t05, gdb.t06, gdb.t07,
	gdb.t11, gdb.t12}/Makefile.in:  Add explicit "all" target to
	Makefiles missing it, supply explicit rules to make object files
	from source files to subvert bug in GNU make that assumes gcc
	style "-c -o" handling.
	* tcl.texts/Makefile.in: Look in tcl sibling dir for library,
	rather than picking up whatever happens to be installed.
	* config/unix-gdb.exp (gdb_start):  Temporarily increase timeout
	by 60 seconds to accommodate heavily loaded or otherwise slow
	systems during gdb startup.  A similar fix was also installed in
	a 14-Dec change, but mysteriously disappeared.
	* gdb.t31/chillvars.exp:  Go ahead and try to run test on non-
	DWARF systems, as long as there is a chill executable to test.

Mon Jan  4 17:19:08 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t30/chexp.exp (test_print_accept, test_print_reject):
	Convert to varargs function.
	* gdb.t30/chexp.exp (test_arithmetic_expressions):  New tests.
	* gdb.t31/Makefile.in (CHILL, CHILLFLAGS):  Provide defaults.
	* gdb.t31/chillvars.exp (test_UBYTE):  Remove FIXME`s, fixed.
	* gdb.t31/in-gdbme.ch (scalar_arithmetic, write_arrays,
	booleans):  Add procs for testing.
	* lib/gdb.exp (runto):  Don't expect hex format for breakpoint
	address.

Sun Jan  3 14:24:53 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t30/chexp.exp (test_float_literals_accepted):  Use
	literals in comparisons, rather than printing their values
	directly.  Avoids spurious failures due to conversion or
	representational differences between machines types.

Sat Jan  2 22:56:53 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t30/chexp.exp (test_float_literals_accepted):  New test.
	* gdb.t31/in-gdbme.ch (testvars):  Add floating point assigns.

Thu Dec 31 08:30:08 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/help.exp:  Track recent gdb changes in description
	of "set" command for assigning expression values to variables.

Wed Dec 30 13:17:36 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/gdbvars.exp:  New tests for convenience variables and
	history value list.
	* gdb.t30/chexp.exp:  Add tests for convenience variables and
	history value list.

	* config/unix-gdb.exp (gdb_exit):  Put escaped quotes around
	command to send to gdb inside a catch.  Otherwise the newline
	at the end of the quit command gets eaten.
	* lib/gdb.exp (gdb_test):  Replace bogus message about the
	gdb process no longer existing with a error that reports the
	real reason for the send command failing.  Remove use of
	"$command" in the expect pattern, since it may contain sequences
	that look like regular expressions but should not be interpreted
	as regular expressions.

Tue Dec 29 22:49:56 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: define FLAGS_TO_PASS

Sun Dec 27 11:52:45 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/udi.exp: Fixed so that it downloads stably. Added better
	error trapping. Works with simulator or demo board.
	* runtest.exp: Cleaned up handling of signals during the init
	phase. 
	* lib/old-dejagnu.exp: Fixed bug that made $CFLAGS accumulate
	repititions of the same flags.
	* runtest.exp: cleans up temp file better.
	* config/udi-g++.exp: Minor bug fixes. Doesn't die it it can't
	connect now.

Sat Dec 26 19:21:14 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/vx-gdb.exp: Now it exits if it can't connect to the
	target.
	* most everything: Made *all* (whew) error and warning messages
	use new procedures. These messages are controlled by --all rather
	than --verbose.
	* lib/framework.exp: Fixed clone_output so everything gets sent to
	the correct files. Also added a procedure for standard warning and
	error messages.

Sat Dec 26 11:16:55 1992  Fred Fish  (fnf@cygnus.com)

	* tcl.tests/tcltest.c (Tcl_DumpActiveMemory):  Remove extern
	declaration, which is now incompatible with tcl.h.


Tue Dec 22 22:36:42 1992  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (subdir_do):  Remove blank line after target,
	that gives older makes indigestion.
	* configure.in:  When running "make", use environment definition
	of MAKE if one exists, default to "make" if not in environ.
	* gdb.t21/cplusfuncs.exp:  Update regular expressions for matching
	operators to track gdb C++ demangling fixes.

Mon Dec 21 22:32:46 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t31/in-gdbme.ch (bytetable3, bytetable4):  Reduce ranges
	of array dimensions to something more managable for explicit
	initialization.  Add initializers.
	* gdb.t31/in-gdbme.ch (inttable1, inttable2, longtable1,
	longtable2):  Fix typo, initializers were intended to be
	sequential values for easy identification.
	* gdb.t31/chillvars.exp:  Update to track changes in in-gdbme.ch.

Mon Dec 21 19:48:42 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Has new option to specify the target's
	configuration string. Only used by runtest.
	* g++.other/*.exp: Now use procs from mike-g+.exp.
	* g++.mike/*.exp: Now use procs from mike-g+.exp.
	* Makefile.in: Now has install & uninstall targets.
	* lib/prebase, postbase.exp: Merged into lib/mike-g++.exp and made
	into procs.
	* runtest.exp: Traps error when trying to test a tool that does't
	have support.
	* lib/framework.exp: Contains all the procs from runtest.exp.
	These are basically the guts of the testing framework.
	* runtest.exp: Moved all procs to a library file.

Sat Dec 19 16:50:46 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Upped version number to 0.8.1
	* lib/nm-defs.exp: Support procs for nm tests.
	* nm.all/nm.exp: Now uses a generic nm testing proc.
	* nm.all/Makefile.in: Changes the path for the linker script so it
	won't produce srecs.
	* nm.all/configure.in: Copies linker script for m68k-abug and
	edits out OUTPUT_FORMAT line.
	* config/*-nm.exp: They only contain stubs calling the procs in
	nm-defs.exp.

Fri Dec 18 18:13:15 1992  Rob Savoye  (rob@cygnus.com)

	* gcc.*/*.exp: Doesn't change into the subdir.
	* lib/c-torture.exp: Adds subdir to path for objects and binaries
	* runtest.exp: Added tests for targetname and connectmode when
	using a MVME m68k board.
	* configure.in: Now tests for m68k-abug-[coff|aout].
	* config/mt-m68k-abug: Now a mt-m68k-abug-coff and
	mt-m68k-abug-aout version so either tool chain can be used to
	produce the srecords.

Fri Dec 18 10:26:46 1992  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (.NOEXPORT):  Add for GNU make.  Don't pass defines
	with pathnames relative to this directory to submakes.
	* gdb.t00/{default.exp, help.exp}:  Update to track latest gdb
	changes.
	* gdb.t30/chexp.exp:  Update to track latest gdb changes.
	* gdb.t31/{in-gdbme.ch, chillvars.exp}:  Add some arrays and
	tests for arrays, update to track latest gdb changes.

Mon Dec 14 18:42:58 1992  Fred Fish  (fnf@cygnus.com)

	* config/unix-gdb.exp (gdb_start):  Temporarily set timeout up
	to 60 seconds to accommodate heavily loaded or otherwise slow
	systems during gdb startup.

Mon Dec 14 12:16:27 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t11/list.exp, gdb.t16/printcmds.exp: added expected failures
	for i960-*-*.
	* gdb.t15/funcargs.exp: increase timeout for *-*-vxworks.

Fri Dec 11 21:15:07 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t16/{in-gdbme.c, printcmds.exp}:  Add some tests for
	printing the contents of multidimensional arrays.

Wed Dec  9 13:18:39 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* tcl.test/tcl-test.exp:
	  changed the comparison that looks for the end-of-test return
	  string, "%", from the tcl interpreter, tcltest, to check for
	  "^%$" instead of just "%".

Tue Dec  8 13:49:18 1992  Fred Fish  (fnf@cygnus.com)

	* chillvars.exp:  Only run the tests if the target is an
	SVR4 target (which presumes DWARF format).  They are only
	expected to work right now for targets that use DWARF.

Tue Dec  8 13:42:45 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* removed accidental change to config/unix-tcl.exp that
	  occurred during last check-in.

Tue Dec  8 13:21:45 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* tcl.test/configure.in
	  corrected error in "files=" line; changed "defs.h" to "defs".

Sun Dec  6 22:00:06 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/*-nm: Fixed nm_version.
	* configure.in: Doesn't configure tcl tests for a cross test.

Sat Dec  5 14:13:15 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* doc/dejagnu.l, dejagnu.texi: Added documentation for --baud
	option.
	* runtest.exp: Added --baud option to spcify the baud rate for a
	serial connection.

Fri Dec  4 07:00:45 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t31/chillvars.exp:  Add new tests, fix expected results
	for some existing ones.

Thu Dec  3 12:28:52 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t20/{classes.exp, inherit.exp, misc.exp},
	gdb.t21/cplusfuncs.exp, gdb.t22/virtfunc.exp:  Downgrade
	missing test executables from ERROR to just FAIL.
	* gdb.t30/chillvars.exp:  Downgrade missing test executables
	from ERROR to just FAIL.  Start adding some real tests.
	* gdb.t30/in-gdbme.ch:  Start adding some initializations of
	fundamental type variables.

Wed Dec  2 11:46:04 1992  Ian Lance Taylor  (ian@cygnus.com)

	* runtest.exp (setup_xfail): only set xfail_prms if xfail_flag is
	set.
	* gdb.t11/list.exp, gdb.t12/scope.exp, gdb.t15/funcargs.exp: more
	mips-*-* expected failures.

Wed Dec  2 11:39:28 1992  Fred Fish  (fnf@cygnus.com)

	* lib/gdb.exp (gdb_reinitialize_dir):  New utility proc.
	* gdb.t03/ptype.exp, gdb.t06/break.exp, gdb.t07/watchpoint.exp,
	gdb.t08/opaque.exp, gdb.t09/corefile.exp, gdb.t11/list.exp, 
	gdb.t12/scope.exp, gdb.t13/bitfields.exp, gdb.t15/funcargs.exp,
	gdb.t16/printcmds.exp, gdb.t20/{classes.exp, inherit.exp,
	misc.exp}, gdb.t21/{cplusfuncs.exp, demangle.exp},
	gdb.t22/virtfunc.exp: Use new gdb_reinitialize_dir tcl proc.
	* gdb.t20/{classes.exp, inherit.exp, misc.exp},
	gdb.t21/{cplusfuncs.exp, demangle.exp}, gdb.t22/virtfunc.exp:
	Suppress tests if executable not found.
	* Makefile.in:  Add CHILL and CHILLFLAGS as things to pass
	to recursive makes.
	* gdb.t31/{configure.in, Makefile.in, in-gdbme.ch, chillvar.exp}:
	New directory of chill tests.
	* config/mt-unix (CHILL, CHILLFLAGS):  New defs for chill
	compiler name and flags to pass to compiler.
	* configure.in (configdirs):  Add gdb.t31.
	* gdb.t30/chexp.exp:  Don't need to load a gdb.

Mon Nov 30 20:38:00 1992  Fred Fish  (fnf@cygnus.com)

	* runtest.exp (setup_xfail, clear_xfail):  Modify to accept
	multiple arguments and examine each one for a valid config
	triplet or a prms id.
	* gdb.t03/ptype.exp:  Clear xfail flag for ptype of unnamed
	enumeration members for SVR4 systems (presumes DWARF).
	* gdb.t11/list.exp:  Set up xfail flag for tests that are
	expected to fail on SVR4 systems (presumes DWARF).

Mon Nov 30 17:32:36 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/default.exp (set write, show write): don't leave it at
	set write on, because that causes debugging problems in later
	testing on Ultrix.

Mon Nov 30 17:18:32 1992  Rob Savoye  (rob@cygnus.com)

	* runtest.exp: Now uses find proc to recursively find all expect
	file.

Mon Nov 30 11:55:36 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t20/inherit.exp:  Recognize a '.' as the g++/gdb
	CPLUS_MARKER, rather than just '$'.  This particular piece of
	brain damage is spreading like ooze; gcc, gdb, and libiberty are
	all infected as well.

Mon Nov 30 11:23:42 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: use mt-i960-nindy, not mt-i960-nind.
	* gdb.t02/whatis.exp, gdb.t03/ptype.exp, gdb.t08/opaque.exp,
	gdb.t09/corefile.exp, gdb.t11/list.exp, gdb.t12/scope.exp: add
	expected failures for mips-*-*.

Sun Nov 29 23:10:43 1992  Mike Stump  (mrs@rtl.cygnus.com)

	* prebase.exp (not_compiler_output): Change from looking for
	Segmentation Violation to Internal compiler error, as the compiler
	no longer issues the former.

Sun Nov 29 15:16:06 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config:/vx-g++.exp, udi-g++.exp: Replaced with gcc init code.
	* runtest.exp: Now executes recursively any *.exp files.  
	* lib/old-dejagnu.exp: proc old-dejagnu executes tests that are
	supposed to.
	* g++.old-deja/old-deja.exp: Recursively get all the C code in a
	subdirectory tree.
	* lib/utils.exp: New file, contains utility procs grep, find,
	and which. 
	* runtest.exp: Applied Fred's patch for the output.

Sun Nov 29 08:51:15 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t22/virtfunc.exp:  Make "ptype VA" an expected failure.
	* runtest.exp:  Fix a couple of minor formatting glitches.
	* gdb.t30/chexp.exp(test_print_reject):  Add another possible
	failure expect string.

Sat Nov 28 21:09:33 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* g++.old-deja/tests: New directories for C++ code from the old
	style DejaGnu tests.
	* g++.old-deja/old-deja.exp: New file for running the old style
	DejaGnu tests.
	* lib/old-dejagnu.exp: New file. Support procs for running the
	old style DejaGnu tests.

Wed Nov 25 08:05:59 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t16/printcmds.exp:  Set up expected failure for
	"p 123DEADBEEF".  Gdb thinks this is a floating point number.

Mon Nov 23 12:14:43 1992  Ian Lance Taylor  (ian@cygnus.com)

	* config/mt-i960-vx: set LIBS to -lgcc, not -lg (lost when file
	was renamed).
	* gdb.t07/watchpoint.exp: Added expected failures for Sun3.

Fri Nov 20 15:39:07 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/default.exp (info set): don't get fooled by the prompt
	in the output.
	(detach): gdb_test can not include $prompt in the expected result.
	* gdb.t00/teststrategy.exp (backtrace): don't insist on main being
	at level 7; any level is acceptable.

Sun Nov 22 14:44:35 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/remote.exp: Added proc for kermit.

Fri Nov 20 11:23:26 1992  Fred Fish  (fnf@cygnus.com)

	* config/unix-gdb.exp (gdb_exit):  Add explicit close as
	workaround for expect bug that slowly consumes file descriptors.
	* gdb.t22/virtfunc.exp:  When gdb dumps core, start a new one
	for the benefit of later tests that expect a gdb to be currently
	running.  This is a kludge.
	* configure.in (configdirs):  Add gdb.t16.
	* gdb.t16/{Makefile.in, configure.in, in-gdbme.c, printcmds.exp}:
	New test for exhaustive printing of all ASCII characters and
	substrings, and a few tests for printing of integral values.
	* gdb.t30/chexp.exp:  Add tests for character literals.

Thu Nov 19 17:45:53 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/udi.exp: New procs for udi shells.
	* config/udi-gcc.exp: Made gcc_load
	* config/udi-gdb.exp: Made gdb_start, gdb_load gdb_exit
	* gdb.t00/default.exp: Lots of ugly hacks cause many default
	actions kill the UDI connection. Lookfor for new xfails. Sigh...
	* config/*-gdb.exp: Use which in gdb_version.
	* lib/gcc.exp: Use which in default_gcc_version.
	* runtest.exp: New proc which that does a path lookup.

Wed Nov 18 17:08:08 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* Updated c torture tests from the package c-torture-1.7
	  The test in:	    gcc.code_quality
			    gcc.compile
			    gcc.execute
			    gcc.noncompile
			    gcc.unsorted
	  were updated. Existing tests in a given directory that had
	  changed or that were not in 1.7 were moved into a subdirectory
	  called "old-tests". 1.7 had a new directory called "special",
	  the contents of which were placed in deja-gnu/gcc.special .
	  Also, deleted from a prior Changelog entry was the erroneous
	  statement of the removal of support in gcc for the recognition
	  of the ".C" extension.

Wed Nov 18 13:36:43 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t30/chexp.exp:  Change print tests to include explicit
	print command so we can also include formats.

Wed Nov 18 12:32:53 1992  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: never change target_os; we need to be able to
	check it in istarget tests.
	* config/unix-gdb.exp (gdb_exit): the string match test was the
	wrong way around; also, call close to try to avoid the file
	descriptor leak in some versions of expect.
	* teststrategy.exp: added some expected failures for Sun4 and
	Solaris, and changed the core dump test to accept a timeout (no
	response from gdb) if a core file was actually created.
	* gdb.t02/whatis.exp, gdb.t03/ptype.exp, gdb.t05/expr.exp,
	gdb.t15/funcargs.exp: added PRMS bug numbers for expected i960
	failures.
	* gdb.t10/crossload.exp (bfddefault): corrected error message.
	(whole file): changed fixme handling to use setup_xfail.

Tue Nov 17 09:14:11 1992  Ian Lance Taylor  (ian@cygnus.com)

	* runtest.exp (setup_xfail): take optional second argument which
	is the PRMS bug number.
	(pass, fail): use it.
	* gdb.t00/default.exp (accept): gdb 4.7 returns a different
	string.
	(show): don't get fooled by the prompt in the output.
	* gdb.t12/scope.exp: RS/6000 expects to fail print 'file'::var.
	* gdb.t21/cplusfuncs.exp: use setup_xfail rather than FIXME.

Mon Nov 16 12:38:47 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t10/Makefile.in (EXECUTABLES):  Add sparc-elf.
	* gdb.t10/README:  Document sparc-elf.
	* gdb.t10/crossload.exp:  Load and test sparc-elf.
	* gdb.t10/sparc-elf.u:  New test executable.

Mon Nov 16 11:31:30 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/unix-tcl.exp: Tcl library init module.
	* tcl.tests: Add the tests directory from the Tcl release.
	* tcl.tests/Makefile.in, configure.in: Support stuff.
	* tcl.tests/tcl-test.exp: Test the Tcl library.

Sun Nov 15 09:30:29 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t30/{Makefile.in, chexp.exp, configure.in}:  New tests
	for GNU-Chill.
	* configure.in (configdirs):  Add gdb.t30.

Fri Nov 13 21:14:13 1992  Ian Lance Taylor  (ian@cygnus.com)

	* runtest.exp (pass): don't print \n\nXPASS\n\n; just XPASS:
	suffices.
	(setup_xfail): don't set xfail_flag unconditionally; instead set
	it if the argument is the target so that it can be called several
	times.
	(clear_xfail): new function to conditionally clear xfail_flag.
	* config/unix-gdb.exp (gdb_load): set the directory to point to
	whereever the program is loaded from, for the benefit of symbol
	formats which don't know that.
	* teststrategy.exp: accept AIX error messages.
	(print "foo"): AIX shared libraries mean gdb can't find malloc.
	(stack trace): fails on AIX.
	* gdb.t02/in-gdbme.c, gdb.t03/in-gdbme.c: assign to nested_su
	field so that AIX linker doesn't strip it from object file.
	* gdb.t03/ptype.exp (unnamed enumeration): works on RS/6000.
	* gdb.t04/setvar.exp: don't set prms_id to garbage value.
	* gdb.t08/opaque.exp: RS/6000 can't do xrefs.
	* gdb.t09/corefile.exp: AIX gdb can't get name or signal from a
	core file.
	* gdb.t10/crossload.exp: v_signed_char on MIPS generally fails.
	* gdb.t11/list.exp: some tests fail because gcc generates
	incorrect debugging information.
	* gdb.t12/in-gdbme0.c, gdb.t12/in-gdbme1.c: don't let AIX strip
	unreferenced variables.

Thu Nov 12 08:17:40 1992  Ian Lance Taylor  (ian@cygnus.com)

	* runtest.exp (sum): catch errors from tool_version and tool_exit,
	to ensure that we exit as expected even if they fail.
	* gdb.t00/default.exp, gdb.t00/help.exp: some targets, notably the
	RS/6000, don't support "set write" and "show write".
	* gdb.t11/list.exp (list gdbme0.c:unused, list gdbme1.c:unused):
	mark as expected failures for i960-*-*.  These should perhaps be
	considered successes.

Tue Nov 10 20:40:43 1992  Rob Savoye  (rob at rtl.cygnus.com)

	* lib/gcc.exp: Added $LDFLAGS to default_gcc_start so targets can
	get their linker scripts.

Mon Nov  9 10:57:44 1992  Ian Lance Taylor  (ian@cygnus.com)

	* lib/gcc.exp: new file; defines default_gcc_version and
	default_gcc_start.
	* config/*-gcc.exp: use routines in gcc.exp.
	* gcc.execute/execute.exp: don't use c-torture, because it gives
	us undesired PASS and FAIL reports; use gcc_start instead.
	* gcc.execute/920501-6.c, gcc.execute/920726-1.c: don't include
	<stdio.h> or <strings.h>, so these can be used on VxWorks.
	* gdb.t01/run.exp: expect "run" after sending it to avoid waiting
	for the VxWorks shell too early.

Sun Nov  8 21:38:55 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: added subdir_do target, use it for info and install-info

Fri Nov  6 14:10:58 1992  Ian Lance Taylor  (ian@cygnus.com)

	* config/vx-gdb.exp (gdb_load, spawn_vxgdb): increase timeouts.
	* gdb.t00/default.exp: accept AIX error messages, and set the init
	file name based on the target.
	* gdb.t01/run.exp, gdb.t12/scope.exp: increase timeouts for
	VxWorks.
	* gdb.t06/break.exp: increase timeouts for VxWorks, and rewrite a
	few tests to use gdb_test function.

Fri Nov  6 11:34:20 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* Moved the following ChangeLog entry from devo/ChangeLog to here:

Wed Nov	 4 17:57:47 1992  Michael Werner  (mtw@rtl.cygnus.com)

	* Makefile.in:	Added stuff for building deja-gnu.
	* ./deja-gnu/gdb.t21/ & ./deja-gnu/gdb.t22/:
	Moved in-gdbme.C file to in-gdbme.cc to enhance portability.
	Changed the configure.in file to reflect the filename extension
	change.

Fri Nov  6 14:00:48 1992  Ian Lance Taylor  (ian@tweedledumbest.cygnus.com)

	* gdb.t15/funcargs.exp: continue to call6k is an expected failure
	for i960-*-vxworks; PRMS 1786.

Thu Nov  5 18:09:23 1992  Mike Stump  (mrs@rtl.cygnus.com)

	* lib/prebase.exp: Remove incorrect fix.  CPLUSFLAGS needs to be
	reset on a per test case basis, as it is changed by each test
	case.  The correct way to fix this is to establish a default value
	for the variable, and set the variable to that value.

Thu Nov  5 18:04:21 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: proc unknown doesn't print the error codes if
	they're aren't any.
	* lib/remote.exp: New procs tip and tip_download for boards that
	live on the end of a serial cable.
	* config/abug-gcc.exp: Init module for MVME board.
	* config/mt-m68k-abug: Makefile frag for m68k MVME board.
	* configure.in: Only makes links for config files that exist.

Thu Nov  5 17:40:27 1992  Fred Fish  (fnf@cygnus.com)

	* {gdb.t20, gdb.t21, gdb.t22}/{Makefile.in, configure.in}:
	Convert C++ filenames from '.C' to '.cc'.  Rename test files.

Wed Nov  4 11:50:34 1992  Ian Lance Taylor  (ian@tweedledumbest.cygnus.com)

	* lib/gdb.exp (gdb_test): don't check specially for attach error,
	since that doesn't belong in a general test.
	* gdb.t00/default.exp: fix attach and run tests for VxWorks.
	* gdb.t04/setvar.exp: clean up a few broken tests, eliminating
	some false failures incorrectly marked FIXME.
	* gdb.t12/scope.exp: do two ``next'' commands if necessary to skip
	over the call to init.
	* gdb.t20/classes.exp, gdb.t20/inherit.exp: make FIXME cases use
	setup_xfail.

Tue Nov  3 11:53:37 1992  Ian Lance Taylor  (ian@tweedledumbest.cygnus.com)

	* runtest.exp (clone_output): send strings to the user even if
	they say FIXME.
	* gdb.t01/in-gdbme.c (vxmain): new function for VxWorks which
	takes an argument and calls main with it.
	gdb.t01/run.exp: for *-*-vxworks, call vxmain to pass arguments,
	and look for results from connected task, not gdb.
	* gdb.t01/term.exp: don't run these tests unless native.
	* gdb.t02/whatis.exp, gdb.t03/ptype.exp, gdb.t05/expr.exp: expect
	the i960 to fail to print type char correctly, because gdb treats
	char as unsigned char.
	* gdb.t06/in-gdbme.c (vxmain): new function for VxWorks which
	takes an argument and calls main with it.
	gdb.t06/break.exp: adjust line numbers for previous change.  For
	target *-*-vxworks, call vxmain to pass arguments.
	* gdb.t07/watchpoint.exp: don't check the first old value after
	restarting the program, because on VxWorks it will not have been
	reset.
	* gdb.t08/opaque.exp: don't check the breakpoint number, because
	on VxWorks gdb_load stops and restarts gdb.
	* gdb.t10/crossload.exp: don't run these tests for i960 targets,
	because bfd uses SELECT_VECS and these formats are unknown.
	* gdb.t11/list.exp: changed some FIXME strings to use setup_xfail.

Mon Nov  2 19:00:36 1992  Ian Lance Taylor  (ian@tweedledumbest.cygnus.com)

	* config/vx-gdb.exp: use the new generic communication routines in
	lib/remote.exp.
	lib/remote.exp (rlogin): if we get "Sorry, this system is
	engaged", try again; it can come from VxWorks just after
	rebooting.

Sat Oct 31 20:11:12 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: procs pass & fail now use a flag set by setup_xfail
	to determine it a test is an expected failure or an unexpected
	success.
	* runtest.exp: New proc setup_xfail. If called with a configure
	pattern it sets up the next test as an expected failure or an
	unexpected success.

Sat Oct 31 16:10:14 1992  Rob Savoye  (rob@darkstar.cygnus.com)

	* gdb.t10/crossload.exp: Entire file re-written to use the new
	gdb_test command.

Sat Oct 31 12:12:08 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/gdb.exp: gdb_test now traps cleanly if send fails cause gdb
	core dumped.
	* gdb.t00/default.exp: Rewrote the first few tests to use the
	gdb_test proc.
	* lib/gdb.exp: Added a gdb_test proc. It takes a command and a
	pattern and runs the gdb test.

Fri Oct 30 11:46:45 1992  Fred Fish  (fnf@cygnus.com)

	* runtest.exp:  Guard against nonexistant PWD environment var,
	which is shell dependent.

Fri Oct 30 20:23:06 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp: Changed format of log messages. $prms_id & $bug_id
	are only printed if they are not 0. Also they now appear at the
	end of the line in parens with a label.
	* runtest.exp: New procs xpass & xfail for expected failures and
	unexpected successes. Added successes to proc sum.
	* runtest.exp: istarget & ishost with no arguments returns the
	target and host triplet strings.
	* runtest.exp: New proc isnative. Returns a 1 if running native,
	a 0 if on a target.
	* config/nind-gcc.exp, coff-gcc.ecp, aout-gcc.exp: Applied patch
	from vx-gcc.exp so errror messages don't always go to the screen.

Thu Oct 29 19:07:28 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Changed all refences to $srcdir/lib to ./lib since configure now
	makes a link for it.
	* config/vx-gcc.exp: gcc_load doesn't try to load a program if
	there is no remote shell.
	* lib/remote.exp: The network procs telnet, rlogin, rsh now do
	three retries before exiting with an error.
	* runtest.exp: Fixed so there are multiple ways to get the users
	login name so it can be printed in the logs.
	* doc/DejaGnu.l, dejagnu.texi: Removed references to $nfshost.
	* runtest.exp: Removed the --nfshost option cause it's become
	unnessary.
	* configure.in: Deals with the shorter names in config. Creates an
	 abbreviation for the OS and uses that for the filename substring. 
	* config/*: All names shortened to <= 14 characters.
	All init-$target_os-$tool.exp changed to $target_os-$tool.exp. 
	* config/mt-vxworks68, mt-vxworks960: Changed to use the
	abbreviated triplet form like all the other stubs. Now mt-m68k-vx
	and mt-i960-vx. 

Tue Oct 27 10:27:33 1992  Mike Stump  (mrs@cygnus.com)

	* runtest.exp: When setting base_dir don't use getenv("PWD") until
	the code works when there is no PWD env variable.

Tue Oct 27 07:37:38 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/default.exp: accept "can't create process" error for run
	on VxWorks.
	gdb.t08/opaque.exp: don't look for $binfile when setting
	breakpoint.
	gdb.t15/funcargs.exp: added -re "$prompt $" cases.
	gdb.t20/classes.exp: accept \t as well as space after line number.
	gdb.t22/virtfunc.exp: added expected failure for "cannot invoke
	functions on this machine".
	lib/gdb.exp (runto): added -re "$prompt $" cases.

	* lib/gdb.exp: renamed from break.exp.  Moved gdb_unload and runto
	in from config/init-unix-gdb.exp.
	config/init-unix-gdb.exp: removed gdb_unload and runto.
	config/init-vxworks-gdb.exp: removed runto.
	(gdb_start): added "set args main" so that "run" with no arguments
	works as on Unix.
	config/*-gdb.exp: include gdb.exp, not break.exp.

	* gdb.t01/in-gdbme.c: supply static atoi for vxworks, return
	rather than calling exit (avoids VxWorks vs. libgcc problem).
	gdb.t07/in-gdbme.c: return rather than calling exit.
	gdb.t08/in-gdbme0.c: return rather than calling exit.
	gdb.t13/in-gdbme.c: return rather than calling exit.
	* gdb.t00/default.exp: don't set height and width here.
	config/init-unix-gdb.exp (gdb_start): set it here.
	config/init-vxworks-gdb.exp (gdb_start): and here.
	* config/init-vxworks-gdb.exp (runto): new function, similar to
	init-unix-gdb.exp function.

Mon Oct 26 09:16:24 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t12/scope.exp: check for $prompt when failing, not just
	timeout.
	* gdb.t11/list.exp: accept tab as well as space after line number.
	* gdb.t09/corefile.exp: don't run these tests on a target system.
	gdb.t09/Makefile.in: don't complain if can not dump core.
	* lib/break.exp: new file, for delete_breakpoints function.
	config/*-gdb.exp: include it.
	* config/init-vxworks-gdb.exp (gdb_start): open the telnet
	connection in gdb_start, not just once.
	(telnet_init): If shell is locked, retry.
	(gdb_load): check for $prompt; also stop and restart gdb before
	loading each file, because vxgdb accumulates symbols and lets the
	old ones take precendence.

Sun Oct 25 11:35:49 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/init-vxworks-gcc.exp: Now works good, traps load errors
	cleanly. 
	* runtest.exp, doc/dejagnu.texi: Changed all occurences of
	$defaultmode to $connectmode.
	* config/init-vxworks-gcc.exp, init-unix-gcc.exp: Fixed so
	compiler output doesn't go to the screen unless $verbose>1.
	* runtest.exp: Improved error handling in proc unknown by having
	it dump state.

Sun Oct 25 11:35:49 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest.exp, doc/dejagnu.texi: Changed all occurences of
	$defaultmode to $connectmode.
	* config/init-vxworks-gcc.exp, init-unix-gcc.exp: Fixed so
	compiler output doesn't go to the screen unless $verbose>1.
	* runtest.exp: Improved error handling in proc unknown by having
	it dump state.

Sat Oct 24 22:44:09 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* gcc.execute/execute.exp: Looks at $status after executing the
	test code.
	* config/init-unix-gcc.exp: Made gcc_load work and set $status.
	* runtest.exp: Moved regex variables for decimal and hex from
	init-unix-gdb.exp. 

Fri Oct 23 12:03:47 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/mt-m68k-aout, mt-m68k-coff, mt-i960-nindy, mt-a29k-udi:
	New makefile stubs.
	* config/init-nindy-gdb.exp, init-nindy-gdb.exp, init-nindy-gdb.exp:
	New init modules for nindy tests.
	* configure.in: Added aout, coff, udi targets.
	* config/init-aout-gdb.exp, init-coff-gdb.exp, init-udi-gdb.exp:
	New init modules for gdb tests.
	* config/init-aout-gcc.exp, init-coff-gcc.exp, init-udi-gcc.exp:
	New init modules for gcc tests.
	* config/init-aout-nm.exp, init-coff-nm.exp, init-udi-nm.exp: New
	init modules for nm tests.
	* lib/c-torture.exp: Fixed so warning messages are still a PASS.
	* runtest.exp: Fixed bug so --connectmode now works.

Fri Oct 23 11:56:02 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t06/in-gdbme.c: added definition of atoi when using VxWorks.
	gdb.t06/break.exp: adjusted line numbers for above change.

Thu Oct 22 21:39:03 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Makefile.in: Added to site target so the value of LIBS goes into
	site.exp.

Thu Oct 22 12:16:03 1992  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/help.exp: VxWorks support:
	help i, help info: info sharedlibrary line is optional
	help source: accept .vxgdbinit as well as .gdbinit
	* gdb.t00/default.exp: VxWorks support:
	add-symbol-file, show prompt: use $prompt, not (gdb)
	i, info: info sharedlibrary line is optional
	load, r, run, x: accept vxgdb responses as legitimate
	* config/init-vxworks-gdb: send a single \n at end, because
	otherwise the multiple prompts confuse the expect scripts.

Wed Oct 21 16:06:33 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in, */Makefile.in: use new variable $(LIBS) when
	linking.
	config/mt-vxworks68, config/mt-vxworks960: define LIBS as -lgcc.
	* configure.in: add irix* to list of unix targets.

Tue Oct 20 12:31:38 1992  Mike Stump  (mrs@rtl.cygnus.com)

	* Makefile.in (subdirs): Fixed so that make works, even when whole
	subdirectories of tests are removed.  This way, subsets of the
	whole set of test can be distributed.

Mon Oct 19 10:59:19 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* gcc.execute/execute.exp: Runs all the test from the c-torture test's
	execute directory.
	* gcc.execute: New directory
	* gcc.code_quality/code_quality.exp: Runs all the test from the c-torture test's
	code_quality directory.
	* gcc.code_quality: New directory
	* gcc.noncompile/noncompile.exp: Runs all the test from the c-torture test's
	noncompile directory.
	* gcc.noncompile: New directory
	* gdb.*/*.exp: Removed all references to $det_file.
	* nm.all/nm.exp: Removed all references to $det_file.
	* g++.other/g++-03.exp, g++-04.exp:  Source prebase.exp and
	postbase.exp from lib directory.
	* g++.mike/misc1.exp, misc2.exp, misc3.exp, misc4.exp, misc5.exp,
	misc6.exp, p646.exp, p710.exp: Source prebase.exp and postbase.exp
	from lib directory.
	* prebase.exp, postbase.exp: Moved into lib directory.

Sun Oct 18 15:46:07 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* lib/c-torture.exp: New support procs for running tests from the
	C torture test.
	* gcc.unsorted/unsorted.exp: Runs all the test from the c-torture test's
	unsorted directory.
	* gcc.unsorted: New directory
	* lib: New directory for Tcl procs used by tests.

Sun Oct 18 00:39:59 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t11/list.exp:  Revise to install FIXME cases for things
	that are known to fail when used with DWARF.
	* gdb.t07/watchpoints.exp:  Rewrite to avoid cascading of errors.

Sat Oct 17 10:54:42 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/teststrategy.exp:  Fix single step tests to succeed
	if the source for the gdb being tested is no longer available
	for the gdb doing the testing.

Fri Oct 16 17:25:31 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* g++.mike/misc1.C, misc4.C misc5.C p646.C: Changed all occurences
	of 'i' as a variable, cause it screws up the vxworks 'i' shell
	command. 

Fri Oct 16 15:51:10 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/default.exp:  Set height to zero.  Fix target cmds
	to accept either "child" or "procfs" depending upon whether
	gdb uses /proc.
	* gdb.t00/help.exp:  Accept either "child" or "procfs" for
	target commands, depending upon gdb configuration for /proc.
	* gdb.t00/teststrategy.exp:  Make disassembly output more
	portable.  Make test for gdb core dump more portable.
	* gdb.t07/watchpoint.exp:  Test only for pattern at line
	for watchpoint hit, ignore break addr and linenumber.
	* gdb.t09/corefile.exp:  Minor fixes for system dependencies.

Wed Oct 14 13:11:51 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Add gdb.t22
	* gdb.t22/{Makefile.in, configure.in, in-gdbme.C, virtfunc.exp}:
	New tests for calling C++ virtual functions.

Wed Oct 14 00:30:07 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Add gdb.t21
	* config/init-unix-gdb.exp (delete_breakpoints):  Minor cleanup.
	* config/init-unix-gdb.exp (runto):  New proc.
	* gdb.t00/teststrategy.exp (test_with_self):  Preserve the
	original timeout and restore when done.  Extend the timeout
	for loading gdb into itself to 10 minutes (old limit of 5 minutes
	was hit on a SPARCstation under moderate load).
	* gdb.t01/term.exp:  Fix run command in "info terminal" test.
	* gdb.t06/break.exp:  Fix linenumber in "run 2" output.
	* gdb.t12/scope.exp:  Remove "runto" proc, moved to init file.
	* gdb.t20/inherit.exp:  Remove "runto" proc, moved to init file.
	* gdb.t20/classes.exp:  Remove "runto" proc, moved to init file.
	Also remove some junk leftover from gdbtest case conversion.
	* gdb.t21/{Makefile.in, configure.in, in-gdbme.C, cplusfuncs.exp,
	demangle.exp}:  New test case for demangling and C++ function
	lookups.	

Mon Oct 12 09:10:22 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/default.exp:  Add expect strings for setting height and
	width commands.  Add expect string for add-symbol-file.
	* gdb.t00/teststrategy.exp:  Add proc to convert current gdb
	pathname to fully qualified pathname for the copy command.
	Reorganize so that the test can be gracefully skipped if this
	fails.  Increase timeout to load gdb to 5 minutes for systems
	where loading is done over the network and/or full symtabs are
	required.
	* gdb.t20/{Makefile.in, configure.in, in-gdbme.C, classes.exp,
	inherit.exp, misc.exp}:  New tests for C++.

Sat Oct 10 18:23:20 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest: New makefile created bourne shell to load runtest.exp
	into expect. Needed for machine that don't grok #!/bin/expect kind
	of things.
	* config/mt-vxworks960: Uses new p3 naming convention. Also
	expects to find all the binaries in your path.
	* gdb.t13/bitfields.exp: Added a line after every test to dump the
	output to the detail file.
	* gdb.t15/funcargs.exp: Added a line after every test to dump the	output to the detail file.
	* configure.in: Do a "make runtest" for post target.
    	* Makefile.in: Has new target for making runtest. Runtest is a
	bourne shell script that start $srcdir/runtest.exp.
	* runtest.exp: made the printing of the summary counts a proc so a
	^C or SIGQUIT will print the summary, then exit.
	* runtest: Renamed to runtest.exp.

Fri Oct  9 07:15:04 1992  Fred Fish  (fnf@cygnus.com)

	* gdb.t11/configure.in (srctrigger):  Change to list.exp.

Fri Oct  9 00:16:02 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in:  Add gdb.t11.
	* runtest:  Add new variable efailcnt for expected failures.
	Treat expected failures as passes, but count them separately
	and report summary.
	* config/init-unix-gdb.exp (delete_breakpoints):  Add proc.
	* gdb.t03/ptype.exp:  Add expected failure for enums.
	* gdb.t04/setvar.exp: Make FIXME's consistent with other tests.
	* gdb.t06/break.exp: Add new test for next over recursive calls.
	* gdb.t11/{Makefile.in, configure.in, in-gdbme0.c, in-gdbme0.h,
	in-gdbme1.c, list.exp}:  New test for list command.
	* gdb.t15/in-gdbme.c (test_struct_args):  Remove aggregate initial-
	ization.

Tue Oct  6 19:25:00 1992  Fred Fish  (fnf@cygnus.com)

	* config/init-unix-gdb.exp: Don't spawn gdb with a null argument
	when GDBFLAGS is empty.
	* gdb.t00/default.exp:  Set width to 0 (unlimited).
	* gdb.t00/default.exp:  Add expect strings for "attach", "run",
	"source", and "x", that match current gdb.
	* gdb.t00/help.exp:  Fix expect string for "help breakpoints".
	* gdb.t00/teststrategy.exp:  Fix "run" send string and expected
	output.  Fix expected output for control-C.
	* gdb.t06/break.exp:  Restart gdb to avoid leftovers from other
	tests.  Adjust line numbers to account for changes in test source.

Tue Oct  6 11:08:26 1992  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Add gdb.t13 gdb.t15.
	* gdb.t12/in-gdbme0.c:  Add code for checking auto variables and
	local scopes.
	* gdb.t12/scope.exp:  Add tests for auto variables and local scopes.
	* gdb.t13/{Makefile.in, configure.in, in-gdbme.c, bitfields.exp}:
	New test for bitfields.
	* gdb.t15/{Makefile.in, configure.in, in-gdbme.c, funcargs.exp}:
	New test for actual args passed to functions.

Fri Oct  2 15:42:10 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Makefile.in: Added support for srcdir going to site.exp.

Thu Oct  1 21:26:35 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* teststrategy.exp:  Changed the test for target vs host to using
	$target_alias & $host_alias instead of $target_os & $host_os. 
	* corefile.exp: Added line to dump output of tests to detail
	log. 
	* scope.exp: Added line to dump output of tests to detail
	log. 
	* opaque.exp: Added line to dump output of tests to detail
	log. 
	* crossload.exp: Added line to dump output of tests to detail
	log. 
	* watchpoint.exp: Added line to dump output of tests to detail
	log. 

Thu Oct  1 21:05:28 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest: Changed the test for target vs host to using
	$target_alias & $host_alias instead of $target_aos & $host_os. 

Sep 30 08:45:00 1992  Fred Fish  (fnf@fishpond.cygnus.com)

	* configure.in (configdirs):  Add gdb.t07, gdb.t08, gdb.t09
	gdb.t10, gdb.t12.
	* runtest:  Fix some misspellings in trap commands.
	* runtest (proc unknown):  Change arg to args.
	* runtest (clone_output, pass, fail):  Remove leading tabs from result
	lines that waste space that can be used for more meaningful
	comments.
	* runtest:  Remove extraneous 12 newlines at end of file.
	* config/init-unix-gdb.exp:  Add convenience abbreviations for
	hex and decimal number strings.
	* config/init-unix-gdb.exp:  Add gdb_unload proc.
	* gdb.t06/break.exp:  Replace hardcoded directory with $subdir.
	* gdb.t07/{Makefile.in, configure.in, in-gdbme.c, watchpoint.exp}:
	New tests for watchpoints.
	* gdb.t08/{Makefile.in, configure.in, in-gdbme0.c, in-gdbme1.c,
	opaque.exp}:  New tests for opaque structs.
	* gdb.t09/{Makefile.in, configure.in, in-gdbme.c, corefile.exp}:
	New tests for core file handling.
	* gdb.t10/{Makefile.in, configure.in, README, in-gdbme.c, 
	crossload.exp, i486-elf.u, i860-elf.u, m68k-aout.u, m68k-aout2.u,
	m68k-elf.u, mips-ecoff.u, sparc-aout.u}:  New files for non-native
	executable handling tests.
	* gdb.t12/{Makefile.in, configure.in, in-gdbme0.c, in-gdbme1.c,
	scope.exp}:  New tests for handling scope specifications.

Sun Sep 20 14:18:19 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* configure.in: Better support for multiple platforms. Configures
	for most unix variants and targets.
	* DejaGnu.l, dejagnu.texi: Updated with new command line option.
	* runtest: Added option to not reboot the target evry time.

Thu Sep 10 17:15:37 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest: Check for config variable targetname and nfshost after
	cmd options rather than before.

Mon Sep  7 21:06:23 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* config/mt-m68k-coff: Created for m68k based bare board.

Sun Sep  6 16:48:29 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* postbase.exp: add $srcdir for g++_start invocation from
	different directory tree.
	* postbase.exp: made output other than pass/fail go only to
	screen only if $verbose > 1.

Wed Sep  2 23:29:14 1992  Rob Savoye  (rob at rtl.cygnus.com)

	* Minor bug fixes. Now works with local config file.

Sun Aug 16 23:00:40 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* dejagnu.texi: updated some more.
	* configure.in: added nm support.
	* Makefile.in: added nm.all to subdirs list.
	* config/init-sunos-nm.exp: new init module for nm tests.
	* nm.all/in-nmtest.c: new test case code for nm.
	* nm.all/nm.exp: new test cases for nm.
	* nm.all/Makefile.in: new makefile fragment
	for nm tests.
	* nm.all/configure.in: new config file file for nm tests.

Sat Aug 15 16:30:39 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* All test cases: changed how the tool is invoked. Now use the
	_start function.
	* configure.in: added g++ init module.
	* init-*-g++.exp: Created new global called $exec_output, to hold
	the output of an executable produce by g++.
	* init-sunos-g++.exp: Added stubs to target dependant routines.
	* g++-init.exp: renamed to config/init-sunos-g++.exp.
	* Features.txt: moved to doc directory.

Sun Aug  9 22:49:21 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Added self-defined makefile style arguments.
	* Added most of the makefile variables for tools to site.exp.
	* Merged *-gdb-exit.exp into the config/init-*-gdb.exp and made it
	a function call instead.

Sat Aug  8 18:47:40 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* runtest: Now lets all site.exp set all configuration variables.
	Command line options overrule the config file's.
	* runtest: Rearranged all command line options. Made most of them
	use a --fullname syntax.
	* runtest: Now --verbose prints only the tests that failed. Added
	option --all that prints tests that passed too.

Fri Aug  7 21:55:48 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* init-vxworks-gdb.exp: Now uses config file.
	* Makefile.in: Now has a target to make a config file.
	* site.exp: Created by make/configure. Holds init values for
	init module. 
	* configure.in: Now configures init modules for tool.
	* runtest: Now uses init setup by configure.

Wed Aug  5 23:04:47 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* all files: Changed the prompt pattern to a variable $prompt that
	is set in the init module.

Thu Jul 16 11:12:44 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Changed the framework executable from DejaGnu to runtest.

Sun Jul 12 16:08:04 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Changed command line options so cc, gdb, etc... are specified
	like makefiles. ie: CC=gcc CFLAGS="-v -r"
	* Changed several command line option names.

Fri Jul 10 11:28:00 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* Added support to gdb_load in gdb-init.exp for loading a program
	if another one is already loaded. Also now deals with reloading if
	still debugging previous program.
	* Added multiple levels of verbose. Verbose gets incremented
	depending on how many times it appears on the command line.
	* Added more subdirectories for gdb tests.
	* Added tests for testing "run" and "terminal" commands.
	* Added support to gdb_load() so it can load a file to replace the
	previous one.

Tue Jun 30 22:22:00 1992  Rob Savoye  (rob at darkstar.cygnus.com)

	* DejaGnu: Added changes to main loop adding support for init and
	exit modules.  Moved *_version stuff to init modules.
	* DejaGnu.l: Added new command line option for targets. Added lots
	on how to write a test.
	* Added section on init and exit modules. Added keyword use by
	DejaGnu.
	* vxworks-gdb-init.exp: Expect script that logs in to vxworks board,
	starts GDB, and loads a file.
	* gdb-init.exp: New init module for gdb native. Was gdb-01.exp.
	* gdb-exit.exp: New exit module for GDB native.
	* features.txt: List of features and goals. Based on testing meeting
	notes.
	* g++-init.exp: New module for G++ initialization.
	* Gave gdb.all tests intelligent names instead of numbers.
	* default.exp: Was xdefault.exp. Removed spawn commnd. Added prompt
	for test failure.
	* help.exp: Removed process spawning part. Added prompt match for test
	failure.
	* echo.exp: Was gdb-02.exp.

Thu May 21 17:20:23 1992  Rob Savoye  (rob@darkstar.cygnus.com)

	* Hacking in better detailed reports.
