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@localhost.localdomain>

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

