2003-02-19  Andrew Cagney  <ac131313@redhat.com>

	 * lib/remote.exp (local_exec, standard_close): Use shell
	 background instead of Tcl background to background the kill
	 processes.  Work around problem found by Nick Duffek in older
	 Cygwins.

2003-02-19  DJ Delorie  <dj@redhat.com>

	* config/sim.exp: Support both sid and rawsid protocols.

2003-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* dejagnu/baseboards/h8300-sim.exp: Don't set
	needs_status_wrapper.

2002-11-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* lib/libgloss.exp (newlib_include_flags): Use -isystem, not -I.
	(libio_include_flags, g++_include_flags, libstdc++_include_flags,
	winsup_include_flags): Ditto.
	* doc/user.sgml (Local Config File): Use -isystem, not -I, in
	example.

2002-11-21 Matt Bemis <bemis@iol.unh.edu>

	* modified xml_output to handle null input and output

2002-10-21  Adam Nemet  <anemet@lnxw.com>

	* libgloss.exp (get_multilibs): Don't use the first argument
	passed to this function as the multilib option unless it is in
	fact a multilib option.

2002-11-13 Matt Bemis <bemis@iol.unh.edu>

	* Fixed input/output to check for empty.

2002-11-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* lib/libgloss.exp (newlib_include_flags): Use -isystem, not -I.
	(libio_include_flags, g++_include_flags, libstdc++_include_flags,
	winsup_include_flags): Ditto.
	* doc/user.sgml (Local Config File): Use -isystem, not -I, in
	example.

2002-10-29  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* Makefile.am: Add support for DESTDIR.
	* Makefile.in: Regenerated.

2002-10-21  Matt Bemis  <bemis@iol.unh.edu>

       * added input/output to xml_output in lib/framework.exp
       * removed the log feature replaced by input/output_xml

2002-09-24  Richard Earnshaw  <rearnsha@arm.com>

	* lib/libgloss.exp (build_wrapper): Use a tool-specific filename on
	the host for the testglue.

2002-09-04  Rob Savoye  <rob@welcomehome.org>

	* Clean.tcl (cleanfiles): Add more patterns to remove.
	* Makefile.am: Fix tarball target to clean up the source tree
	better.

2002-09-03  Rob Savoye  <rob@welcomehome.org>

	* Makefile.am: Add support to build Solaris and HPUX packages.
	* Makefile.in: Regenerated with automake 1.6.
	* aclocal.m4: Regenerated with aclocal 1.6.
	* example/hello/Makefile.in:  Regenerated with automake 1.6.
	* example/calc/Makefile.in:  Regenerated with automake 1.6.
	* missing: Update with the one from automake 1.6.

2002-08-30  Rob Savoye  <rob@welcomehome.org>

	* configure.in: Add AC_NO_EXECUTABLES, so things configure without
	building C++ executables.
	* example/hello/hello.c: New C version of the example.
	* example/hello/Makefile.am: Build C based example.
	* example/hello/configure.in: Add AC_NO_EXECUTABLES, so things
	configure without building C++ executables.
	* configure: Regenerated.

2002-08-30  Nick Clifton  <nickc@redhat.com>

	* acinclude.m4: Provide alternative definition of AC_PROG_CXX
	which does not call AC_PROG_CXX_WORKS.  This allows dejagnu to
	be configured and built without a working C++ compiler.

2002-08-29  Rob Savoye  <rob@welcomehome.org>

	* debian/changelog: Update version number to 1.4.3.
	* redhat/dejagnu.spec: Update version number to 1.4.3.
	* dejagnu.h: Use __STDC_HOSTED__, rather than our own autoconf
	test to determine libstdc++ 2.x or 3.x.
	* testsuite/libdejagnu/unit.cc: Use __STDC_HOSTED__, rather than
	our own autoconf test to determine libstdc++ 2.x or 3.x.

2002-06-18  Dave Brolley  <brolley@redhat.com>

	From Catherine Moore, Michael Meissner, Mark Salter, Jim Blandy:
	* baseboards/frv-elf.exp: New board description.
	* baseboards/frv-sim.exp: New board description.
	* baseboards/frv-tiger.exp: New board description.
	* baseboards/frv-tomcat.exp: New board description.

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).

2002-08-28  Catherine Moore  <clm@redhat.com>

	* baseboards/v850-sim.exp (target_install): Add v850e-elf.

2002-07-16  Rob Savoye  <rob@direwolf.welcomehome.org>

	* doc/user.sgml: Add new tutorial by Niklaus Giger as a new
	chapter.
	* doc/Makefile.am: Tweak rules for building output files.
	* doc/Makefile.in: Regenerated.

2002-07-14 Daniel Jacobowitz <drow@false.org>

	* lib/remote.exp: Fix standard_spawn{} to support SSH.

Wed Jun  5 14:52:15 PDT 2002   Joey Ekstrom <joey@ekstrom.org>

	* dejagnu.h: Modified C functions to behave like printf().
	* dejagnu.h: Added wait() to fix problem with host_execute() in
	dejagnu.exp where if skips failed, untested, etc. messages from the
	executable.

2002-05-01  Matt Bemis <bemis@iol.unh.edu>

	* added documentation on xml capabilities

2002-05-02  Fernando Nasser  <fnasser@redhat.com>

	* runtest.exp: Add kfail_flag and kfail_prms variable
	initializations.
	* lib/framework.exp (setup_kfail): New proc. Like setup_xfail, but
	for known tool bugs already registered in a bug database.
	(kfail): New proc. Record that a test has failed due to a known bug.
	(kpass): New proc. Record that a test for a known bug has passed
	unexpectedly.
	(clear_kfail): Like clear_xfail, but for known bugs.
	(record_test): Handle KFAIL and KPASS.
	(pass, fail): Test for known failures.
	(clone_output): Add KFAIL to list of message types to be cloned.
	(log_summary): Add summary for KFAIL and KPASS.
	(unknown): Update comment.
	* doc/dejagnu.texi: Document the above.
	* lib/libsup.exp: Add counters for KFAIL and KPASS.
	* testsuite/runtest.all/stats-sub.exp: Test kfail and kpass.
	* testsuite/runtest.all/stats.exp: Ditto.

2002-04-30  Ben Elliston  <bje@redhat.com>

	* doc/runtest.1: Fix formatting error for --ignore option.

2002-04-25    <Matthew Bemis <bemis@iol.unh.edu>

	* lib/framework/exp: new procs check_xml{}, insertdtd{}, xml_output{},
	plus a few hooks to xml_output in the other logging procs to produce
	XML output.
	* runtest.exp: Add support for the --x option for XML output.

2002-04-25  Nick Clifton  <nickc@cambridge.redhat.com>

	* example/calc/configure.in (AM_MAINTAINER_MODE): Add invocation.
	* example/calc/aclocal.m4: Regenerate.
	* example/calc/configure: Regenerate.
	* example/calc/Makefile.in: Regenerate.

2002-03-22  Elena Zannoni  <ezannoni@redhat.com>

	* baseboards/powerpc-sim.exp: Don't disable inferior
	function calls.

2002-04-19  Nick Clifton  <nickc@cambridge.redhat.com>

	* Import files from sourceware dejagnu repository:

	2002-03-15  Chris Demetriou  <cgd@broadcom.com>
	* baseboards/mips-sim-idt32.exp: New file.
	2002-01-21  Ben Elliston  <bje@redhat.com>
	* baseboards/sh-sid.exp: New file.
	2001-11-26  Thomas Fitzsimmons  <fitzsim@redhat.com>
	* baseboards/i386-sid.exp: New file.
	2001-10-10  Frank Ch. Eigler  <fche@redhat.com>
	* config/sid.exp (set_host_info): New proc.  Call it to set
	gdb,nointerrupt flag to work around framework problems.
	2001-08-24  Frank Ch. Eigler  <fche@redhat.com>
	* baseboards/basic-sid.exp (find_sid_conf): Tolerate not
	finding path to pregen configuration file.
	2001-02-22  Ben Elliston  <bje@redhat.com>
	* config/sid.exp: New file.
	* baseboards/basic-sid.exp: Likewise.
	* baseboards/arm-sid.exp: Likewise.
	* baseboards/m32r-sid.exp: Likewise.
	* baseboards/m68k-sid.exp: Likewise.

2002-03-31  Hans-Peter Nilsson  <hp@bitrange.com>

	* lib/remote.exp (check_for_board_status): Also strip a \r before
	a \n before the exit message.

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

	* lib/libgloss.exp (build_wrapper): Wrap _exit too, unless
	wrap_m68k_aout, uses_underscores or is_vxworks are defined in
	target_info.

	* testglue.c [!VXWORKS && !UNDERSCORES && !WRAP_M68K_AOUT]
	(REAL__EXIT): Define.
	[!UNDERSCORES && !WRAP_M68K_AOUT] (ORIG__EXIT): Define.
	[REAL__EXIT] (REAL__EXIT): Prototype.
	[ORIG__EXIT] (ORIG__EXIT): New function wrapper.
	(done_exit_message): New static variable.
	(ORIG_EXIT): Set done_exit_message.

2002-03-11  Chris Demetriou  <cgd@broadcom.com>

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

Wed Nov 21 18:02:49 PST 2001  Brendan Conoboy <blc@redhat.com>

	* lib/rsh.exp: Obey rsh_prog/rcp_prog, support username
	* lib/remote.exp: same.

2002-02-22  Bob Wilson  <bob.wilson@acm.org>

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

2001-11-02  Alexandre Oliva  <aoliva@redhat.com>

	* lib/libgloss.exp [get_multilibs]: Compute multitop earlier, and
	use --print-multi-directory if available.

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

	* lib/libgloss.exp (g++_include_flags): Add top level
	libstdc++-v3 build include path, remove duplicate src path.
	(libstdc++_include_flags): Add top level libstdc++-v3 build
	include path.

2001-11-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* baseboards/mmixware-sim.exp: New file.
	* lib/remote.exp (check_for_board_status): Return 2 if the board
	uses a status wrapper and there was no match for the expected
	pattern.

2001-11-02  Philip A. Wilsey  <philip.wilsey@cliftonlabs.com>

	* lib/utils.exp: Need to pass -all to getdirs, so it descends
	through all the subdirectories.

2001-10-08  Gwenole Beauchesne  <gbeauchesne@mandrakesoft.com>

	* runtest.exp: Don't fail at processing Makefile style args in the
	second command line parsing pass. Actually, skip them in this pass
	since they are already processed in the first one for possible use
	by init scripts.

2001-10-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* lib/remote.exp (proc file_on_host): Fix typo in construction
	of file argument.

2001-09-12  Rob Savoye  <rob@peggyo.welcomehome.org>

	* Makefile.am: Add a clean-local target, and nuke example and
	testsuite from SUBDIRS, so they don't get built via "make all".
	* Makefile: All Makefiles regenerated.
	* debian/changelog: Update version for 1.4.2 release.
	* redhat/dejagnu.spec: Update version for 1.4.2 release.

2001-09-07  Will Cohen  <wcohen@redhat.com>

	* lib/target.exp: Ignore ld's warning about alternative functions
	to use.

Thu Aug 30 19:31:44 2001  J"orn Rennecke <amylaar@redhat.com>

	* baseboards/h8300-sim.exp: set_board_info uses_underscores 1
	set_board_info gcc,text_size 60000

2001-07-30  Paul A. Houghton <houghton@wcomnet.com>

	* dejagnu.h, testsuite/libdejagnu/unit.cc: Make the outstate array
	be a const to work with Sun's compiler.
	* runtest.exp: Move the command line variable instantiation to the
	first block of command line option tests, so command line
	variables can be used in tool init scripts.

2001-07-25  Will Cohen  <wcohen@redhat.com>

	* runtest.exp: Removed puts statement.

2001-07-17  Jason Merrill  <jason_merrill@redhat.com>

	* lib/utils.exp (runtest_file_p): An argument can match trailing
	directories as well as the basename.

2001-06-08 John Cotton <john.cotton@nrc.ca>

	* testglue.c:
	* lib/remote.exp:
	* lib/standard.exp:
	* lib/target.exp:
	* lib/utils.exp:
	* baseboards/mbx821_001.exp:
	* baseboards/mbx860_002.exp:
	* baseboards/mbx8xx.exp:
	* baseboards/mvme167.exp:
	 Added support for automated testing of RTEMS targets,
	 specifically the mbx821, mbx860 and mvme167.

2001-06-08 John Cotton <john.cotton@nrc.ca>

	 */lib/libgloss.exp: fixed regexp bug.

2001-05-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* doc/dejagnu.texi: Fix typographical errors.
	* doc/ref.sgml: Likewise.
	* doc/user.sgml: Likewise.

2001-05-30  Rob Savoye  <rob@peggyo.welcomehome.org>

	* dejagnu.h: Remove the iostream headers, so now we have no
	conditional compilation problems with libstdc++-v3 or v2.

2001-05-28  Rob Savoye  <rob@peggyo.welcomehome.org>

	* acinclude.m4(DJ_AC_STL): Also use
	AC_LANG_CPLUSPLUS so we build this test case with G++.
	* aclocal.m4, configure: Regenerated.
	* dejagnu.h: Don't use testout(), have each method print the array
	value directly, which is much simpler.

2001-05-27  Jeffrey Oldham  <oldham@codesourcery.com>

	* acinclude.m4(DJ_AC_STL): s/for for/for/.
	* dejagnu.h: Add conditional support for sstream.
	(testout): Likewise. Make return type `const'.

2001-05-25  Rob Savoye  <rob@peggyo.welcomehome.org>

	* acinclude.m4: Add DJ_AC_STL, which figures out if we're running
	libstdc++ version 2 or 3.
	* aclocal.m4: Regenerated.
	* configure.in: Add DJ_AC_STL.
	* configure: Regenerated.
	* dejagnu.h: Add the use of the std namespace, so we work with
	libstdc++ version 2 or 3.
	* testsuite/libdejagnu/unit.cc: Use setbuf() or pubsetbuff(),
	depending on the version.

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* baseboards/m68hc11-sim.exp: New file for 68HC11/68HC12 validation.
	* config/m68hc11.exp: New file.

2001-05-16  Rob Savoye  <rob@peggyo.welcomehome.org>

	* lib/target.exp: Reverse when add_flags gets set, so it actually
	links with the libraries being tested. From J. David Anglin
	<dave@hiauly1.hia.nrc.ca>.

2001-05-14  Rob Savoye  <rob@peggyo.welcomehome.org>

	* runtest.exp: Conditionally set the exit_status so we don't stomp
	on FAIL. Rearrange --status so it works correctly with --strace.

2001-05-13  Rob Savoye  <rob@peggyo.welcomehome.org>

	* lib/target.exp: Fix the regsub line where it prunes -fPIC
	warnings so the text variable is on the same line.

2001-05-09  Rob Savoye  <rob@peggyo.welcomehome.org>

	* runtest.exp: Add new command line option, --status (or -sta) to
	toggle whether Tcl script bugs in test drivers should be
	propogated as an error to the shell.

2001-05-08  Rob Savoye  <rob@peggyo.welcomehome.org>

	* lib/dejagnu.exp: Trim off test state part of the message, so we
	don't duplicate it.
	* runtest.exp: Set the exit status when their are Tcl script bugs,
	so make notices the errors. (contributed by Martin Muenstermann
	<muenstermann@trustcenter.de>)

2001-05-06  Rob Savoye  <rob@blackpeter.welcomehome.org>

	* debian/rules: Install all the doc formats.
	* redhat/dejagnu.spec: Install all the doc formats.
	* Clean.tcl: Also nuke all Emacs backup files.
	* Makefile.am: Fix dependencies on tarball target. Add new target
	to build Debian packages. Add $(includedir) to install-data-local
	target so dejagnu.h gets installed in the right place.

2001-05-03  Rob Savoye  <rob@peggyo.welcomehome.org>

	* doc/Makefile.am: Make all paths absolute, cause some versions of
	the db2* tools are braindead.
	* doc/overview.sgml: Update version numbers and log.
	* doc/user.sgml: Add mention of dejagnu.h header file.
	* doc/ref.sgml: Add chapter on dejagnu.h header file for unit
	testing.
	* config/default.exp: New file for default config settings for
	simple native testsuites that don't need anything else.
	* lib/dejagnu.exp: Add $text\r\n to all strings, to make sure we
	only get one line at a time.
	* testsuite/libdejagnu: New directory for dejagnu library test
	cases.
	* testsuite/libdejagnu/unit.cc: Test case for dejagnu.h.
	* testsuite/libdejagnu/tunit.exp: Test driver for dejagnu.h.
	* testsuite/libdejagnu/Makefile.am: New makefile to build the test
	case.
	* testsuite/libdejagnu/Makefile.in: Generated.
	* testsuite/Makefile.am: Add libdejagnu to SUBDIRS. Replace the
	site.exp rule, cause we don't want the $tool setting, so we run
	all the test suites. Don't pass the tool name for "make check".
	* configure.in: Add testsuite/libdejagnu/Makefile to AC_OUTPUT.

2001-05-02  Rob Savoye  <rob@peggyo.welcomehome.org>

	* Makefile.am: Rename dist2 to tarball target. Fix the version
	number to have the minor release too.
	* doc/Makefile.am: Convert all paths from relative to absolute,
	cause not all verions of the db2* tools can work with a relative
	path.
	* redhat/dejagnu.spec: Update version number, and install
	dejagnu.h.
	* debian/changelog: Update version number.
	* debian/rules: and install dejagnu.h

2001-05-01  Matt Hiller  <hiller@redhat.com>

	* lib/libgloss.exp (get_multilibs): Correction to Catherine
	Moore's patch of 2000-06-09.

2001-04-11  Rob Savoye  <rob@slipknot.welcomehome.org>

	* Clean.tcl: Add -r to rm, so it gets rid of CVS directories.
	* .clean: Don't install the debian or redhat packaging directories.
	* Makefle.am: Install dejagnu.h. Fix dist2 target, so we build our
	own tarballs, instead of letting automake do it for us.
	* examples/calc/Makefile.am: Use noist_PROGRAMS, so calc doesn't
	get installed.
	* doc/Makefile.am: Install the man page for runtest.
	* configure.in: Make VERSION 1.4.0, not just 1.4, so distributions
	get built right.

2001-04-07  Rob Savoye  <rob@blackpeter.welcomehome.org>

	* lib/dejagnu.exp: Test driver for embedded DejaGnu API.
	* dejagnu.h: Embedded DejaGnu API main header file.
	* config/default.exp: Default tool init file for simple test
	suites.

2001-04-06  Rob Savoye  <rob@slipknot.welcomehome.org>

	* Makefile.am: Add an empty check-DEJAGNU target, cause we only
	want to run the testsuite once.
	* example/Makefile.am: Don't run "calc" as part of check target,
	cause calc is just an example.
	* testsuite/Makefile.am: Use the runtest in the source tree, or
	refuse to run.

2001-04-03  David Billinghurst <David.Billinghurst@riotinto.com>

	* baseboards/unix.exp: Don't link with -lm on cygwin.
	* lib/target.exp: Remove compiler warnings about -fpic or -fPIC on
	cygwin.

2001-02-21  Rob Savoye  <rob@slipknot.welcomehome.org>

	* debian/changelog: Add entry for new release.
	* debian/control: Fix problem with "no binary package" error.
	* debian/rules: Fix so things actually build a package. This was
	mostly installing the new html version of the doc, not an info
	page.
	* doc/Makefile.am: Build and install the rtf and ps versions
	of the manual. Remove all the created files and subdirectories.
	* doc/overview.sgml: Update the copyright message.
	* doc/ref.sgml: Update the copyright messages. Add section on
	obtaining DejaGnu releases.
	* doc/user.sgml: Update the copyright messages. Add blurb about
	the --mail option.
	* doc/overview: Regenerated.

2001-02-17  Rob Savoye  <rob@slipknot.welcomehome.org>

	* Most all files: Update copyright notices.
	* Makefile.am: Add support for making RPMs. Force different
	values for RUNTEST and RUNTESTFLAGS, so we can test ourselves.
	* testsuite/Makefile.am: Force a different value for
	RUNTESTFLAGS.
	* acinclude.m4, configure.in: Find Tclsh, and Docbook.
	* configure: Regenerated.
	* doc/Makefile.am: Use $DOCBOOK to find the filters.
	* doc/overview: Add the html version of the doc so one doesn't
	need docbook to read the manual.

2001-01-31  Rob Savoye  <rob@slipknot.welcomehome.org>

	* Merge in latest snapshot from Red Hat.
	* example/calc/Makefile.am: New automake support.
	* example/calc/Makefile.in: Generated.
	* example/Makefile.am: Recursion support for make.
	* example/calc/Makefile.in: Generated by automake.
	* example/calc/calc.h.in: Move constants to calc.c, so we can use
	autoheader.
	* example/calc/calc.c: Add constants from calc.h.in.
	* redhat/dejagnu.spec: New RPM packaging file.
	* debian/{changelog,conffiles,control,copyright,postinst,preinst,
	rules,site.exp}: New Debian packaging support.


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-18  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-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.
