2005-08-09  Corinna Vinschen  <vinschen@redhat.com>

	* lib/mi-support.exp (mi_gdb_load): Fix typo.

2005-08-02  Bob Rossi  <bob@brasko.net>

	* gdb.mi/mi-basics.exp: Tell mi_gdb_start to use a PTY for inferior.
	(test_setshow_inferior_tty): Add global mi_inferior_tty_name to scope.
	Change tests to inferior-tty-set/show.
	* gdb.mi/mi-console.exp: Tell mi_gdb_start to use a PTY for inferior.
	(47-exec-next): Use mi_gdb_test to get GDB and Inferior output.
	* gdb.mi/mi-syn-frame.exp: Tell mi_gdb_start to use a PTY for
	inferior.  Use mi_gdb_test to get GDB and Inferior output.
	* lib/mi-support.exp (mi_inferior_spawn_id): Add inferior PTY
	descriptor.
	(mi_inferior_tty_name): Add inferior PTY file name.
	(mi_gdb_start): Add INFERIOR_PTY parameter.
	(mi_gdb_test): Add IPATTERN parameter.

2005-08-02   Bob Rossi  <bob@brasko.net>
  
	* gdb.mi/mi-syn-frame.exp, gdb.mi/mi2-syn-frame.exp: Add MESSAGE
	parameter to mi_gdb_test.
	* lib/mi-support.exp (mi_gdb_test): Make MESSAGE parameter necessary.

2005-07-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.mi/mi-var-child.c (do_children_tests): Initialize
	struct_declarations.
	* gdb.mi/mi-var-child.exp: Step over the initialization of
	struct_declarations.

2005-07-31  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.mi/basics.c, gdb.mi/var-cmd.c: Revert last change.
	* gdb.mi/mi-stack.c: New file, based on gdb.mi/basics.c.
	* gdb.mi/mi-var-child.c: New file, based on gdb.mi/var-cmd.c.
	* gdb.mi/mi-stack.exp: Update to use mi-stack.c as a source file.
	* gdb.mi/mi-var-child.exp: Update to use mi-var-child.c as a source
	file.

2005-07-27  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.mi/var-cmd.c: Give long_array in _struct_decl 12 elements.
	(do_children_tests): Assign values to the extra elements.

	* gdb.mi/mi-var-child.exp: Adapt tests for extra elements and use
	them for tests for "-var-update --no-values" and
	"-var-update --all-values".  
	Add test for "-var-list-children --simple-values".

	* gdb.mi/basics.c (callee4): Add integer array D[3]...

	* gdb.mi/mi-stack.exp (test_stack_locals_listing): ...to test
	"-stack-list-locals --simple-values"  Improve doc strings and
	comments.

2005-07-18  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/sigaltstack.exp (finish_test): KFAIL gdb/1736 on
	*-*-openbsd*.
	* gdb.base/sigstep.exp (advancei): KFAIL gdb/1736 on *-*-openbsd*.

	* gdb.base/sigaltstack.c (main): Use stack_t instead of `struct
	sigaltsatck'.

2005-07-14  Bob Rossi  <bob@brasko.net>
  
	* gdb.base/default.exp (tty): Changed output of command.
	* gdb.base/help.exp (help tty): Ditto.

2005-07-12  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-sse.exp: Compile with -msse when using GCC.

2005-07-10  Mark Kettenis  <kettenis@gnu.org>

	* gdb.mi/mi2-stack.exp (test_stack_locals_listing): Remove test for
	-stack-select-frame without arguments.
	(test_stack_frame_listing): Add test for newly implemented command
	-stack-info-frame.

2005-07-06  Bob Rossi  <bob@brasko.net>

	* gdb.mi/mi-basics.exp (test_setshow_inferior_tty): Test MI tty
	command.
	(Copyright): Update copyright.

2005-07-06  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.fortran/exprs.exp (test_arithmetic_expressions): Add five
	tests to evaluate exponentiation expression.

2005-06-29  Andreas Schwab  <schwab@suse.de>

	* gdb.base/sigrepeat.c: Include <stdlib.h> and add return type for
	main to avoid warnings.

	* gdb.base/sigrepeat.exp: Fix reference to undefined variable.

2005-06-20  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.mi/mi-stack.exp (test_stack_locals_listing): Remove test for
	-stack-select-frame without arguments.
	(test_stack_frame_listing): Add test for newly implemented command
	-stack-info-frame.
	
2005-06-17  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.fortran/array-element.f: New file.
	* gdb.fortran/array-element.exp: New testcase.

2005-06-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/bigcore.exp: Correct checks for systems which can
	not dump a large core file.

2005-06-13  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/relocate.c: Add a copyright notice.
	(dummy): Remove.
	* gdb.base/relocate.exp: Test printing the values of variables
	from a relocatable file.

2005-06-12  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.mi/mi-syn-frame.exp, gdb.mi/mi2-syn-frame.exp: Don't expect
	excess MI output after an error.

2005-05-29  Joel Brobecker  <brobecker@adacore.com>

	* gdb.arch/alpha-step.c: New file.
	* gdb.arch/alpha-step.exp: New testcase.

2005-05-17  Daniel Jacobowitz  <dan@codesourcery.com>
	    Dennis Brueni  <dennis@slickedit.com>

	* gdb.mi/mi-cli.exp, gdb.mi/mi-return.exp, gdb.mi/mi-stack.exp,
	gdb.mi/mi-stepi.exp, gdb.mi/mi-syn-frame.exp, gdb.mi/mi-until.exp,
	gdb.mi/mi-var-display.exp, gdb.mi/mi-watch.exp, gdb.mi/mi2-cli.exp,
	gdb.mi/mi2-return.exp, gdb.mi/mi2-stack.exp,
	gdb.mi/mi2-syn-frame.exp, gdb.mi/mi2-until.exp,
	gdb.mi/mi2-var-display.exp: Expect fullname field in stack frames.
	* lib/mi-support.exp (mi_runto, mi_execute_to_helper): Likewise.

2005-05-17  Paul Gilliam  <pgilliam@us.ibm.com>
	    Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.base/shreloc.exp: Use gdb_compile_shlib.  Add support for
	IBM's xlc compiler.
	* gdb.base/shreloc1.c (fn_1): Reference variable static_var_1.
	* gdb.base/shreloc2.c (fn_2): Reference variable static_var_2.

2005-05-13  Jim Blandy  <jimb@redhat.com>

	* gdb.base/call-ar-st.exp: Call 'untested' and return -1 instead of
	calling gdb_suppress_entire_file.
	* gdb.base/charset.exp: Same.
	* gdb.base/call-rt-st.exp: Same.

2005-05-05  Bob Rossi  <bob_rossi@cox.net>

	* lib/gdb.exp (fullname_syntax): Added global regex.
	(fullname_syntax_POSIX): Ditto.
	(fullname_syntax_UNC): Ditto.
	(fullname_syntax_DOS_CASE): Ditto.
	(fullname_syntax_DOS): Ditto.
	* gdb.mi/mi-file.exp (test_file_list_exec_source_file): Added
	fullname_syntax variable to scope and use it.
	(test_file_list_exec_source_files): Ditto.
	* gdb.mi/mi2-file.exp (test_file_list_exec_source_file): Ditto.

2005-05-04  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.threads/linux-dp.exp: Check for *-*-linux-gnu*.

2004-05-02  Paul Gilliam  <pgilliam@us.ibm.com>

        * lib/gdb.exp (skip_altivec_tests): New function, based on
        check_vmx_hw_available from the GCC testsuite.
        * lib/gdb.arch/altivec-abi.exp: Use skip_altivec_tests.
        * lib/gdb.arch/altivec-regs.exp: Likewise.

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

	* gdb.base/auxv.exp: Call 'untested' and return -1 instead of
	calling gdb_suppress_entire_file.

2005-04-30  Randolph Chung  <tausq@debian.org>

	* gdb.threads/staticthreads.exp: Override signal to check for hppa.
	Slightly relax "sem_post" name checking.

2005-04-29  Paul Gilliam  <pgilliam@us.ibm.com>

	* gdb.base/unload.exp: Use new shared library infrastructure.

2005-04-29  Paul Gilliam  <pgilliam@us.ibm.com>

	* gdb.base/so-impl-ld.exp: Use new shared library
        infrastructure.

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

	* gdb.asm/asm-source.exp: Add h8300 to supported targets.
	* gdb.asm/h8300.inc: New file.

2005-04-28  Paul Gilliam  <pgilliam@us.ibm.com>

	* gdb.base/shlib-call.exp: Change to use new shared library
	infrastructure.

2005-04-28  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.base/pending.exp: Change to use new shared library
        infrastructure.

2005-04-28  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.base/nodebug.exp: Allow for compiling by IBM's xlc compiler,
        use test_compiler_info instead of gcc_compiled, and update copyright.

2005-04-27  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.base/annota1.exp : Deal with messages caused by breakpoints in
        shared objects being adjusted and update copyright years.

2005-04-27  Daniel Jacobowitz  <dan@codesourcery.com>

	* ChangeLog: Correct some 2003-01-13 dates.
	* gdb.base/sigbpt.exp, gdb.base/signull.exp, gdb.cp/bs15503.exp,
	gdb.cp/exception.exp, gdb.cp/userdef.cc, gdb.cp/userdef.exp,
	gdb.mi/mi-console.exp, gdb.mi/mi2-console.exp,
	gdb.trace/collection.exp, gdb.trace/passc-dyn.exp,
	gdb.trace/tfind.exp: Update copyright years.

2005-04-14  Paul Gilliam  <pgilliam@us.ibm.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* lib/gdb.exp (gdb_compile): Handle shlib=.
	(gdb_compile_shlib): New function.

2005-04-12  Paul Gilliam  <pgilliam@us.ibm.com>

        * lib/gdb.exp (test_compiler_info): Give argument a default value.

2005-04-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (ALL_SUBDIRS): Replace gdb.gdbserver with
	gdb.server.
	* configure.ac: Likewise.
	* configure: Regenerated.
	* gdb.gdbserver/Makefile.in: Moved to...
	* gdb.server/Makefile.in: ... here.
	* gdb.gdbserver/server.c: Moved to...
	* gdb.server/server.c: ... here.
	* gdb.gdbserver/server-run.exp: Moved to...
	* gdb.server/server-run.exp: ... here.

2005-04-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (ALL_SUBDIRS): Add gdb.gdbserver.
	* configure.ac: Create gdb.gdbserver/Makefile.
	* configure: Regenerated.
	* lib/gdbserver-support.exp: New file, derived from
	config/gdbserver.exp.
	* config/gdbserver.exp: Use gdbserver-support.exp.
	* gdb.gdbserver/Makefile.in: New file.
	* gdb.gdbserver/server.c: New file.
	* gdb.gdbserver/server-run.exp: New file.

2005-04-06  Paul Gilliam  <pgilliam@us.ibm.com>

        * lib/gdb.exp (test_compiler_info): Return compiler_info
        if no arguments are given.

2005-04-01  Paul Gilliam  <pgilliam@us.ibm.com>

	* gdb.arch/altivec-abi.exp: Check for compiler and set
	use altivec' flag accordingly.
	* gdb.arch/altivec-regs.exp: Likewise.

2005-03-29  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/ptr-typedef.exp, gdb.base/ptr-typedef.c: New files.

2005-03-27  Andreas Schwab  <schwab@suse.de>

	* gdb.base/bigcore.c (main): Add missing mode argument in open
	call.

2005-03-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* lib/mi-support.exp (mi_gdb_load): Use /tmp for gdbserver
	downloads.
	* config/gdbserver.exp (gdb_load): Likewise.

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

	* lib/mi-support.exp: Use mi_gdb_target_cmd to connect to remote
	targets.

2005-03-09  Joel Brobecker  <brobecker@adacore.com>

	* gdb.dwarf2/dup-psym.S: New file.
	* gdb.dwarf2/dup-psym.exp: New testcase.

2005-03-09  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/exec_changed/first.adb: New file.
	* gdb.ada/exec_changed/second.adb: New file.
	* gdb.ada/exec_changed.exp: New testcase.

2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb.cp/userdef.cc (A1::operator+): New unary plus.
	(A2): New class.
	(main): Test operator+.
	* gdb.cp/userdef.exp: Test unary plus.  Use A2::operator+ for
	breakpoint test.

	* gdb.base/sigbpt.exp: Disable if gdb,nosignals.
	* gdb.base/signull.exp: Disable if gdb,nosignals.
	* gdb.cp/bs15503.exp: Disable if skip_cplus_tests
	* gdb.cp/exception.exp: Disable if skip_cplus_tests.
	* gdb.mi/mi-console.exp: Disable hello test if gdb,noinferiorio.
	* gdb.mi/mi2-console.exp: Likewise.
	* gdb.trace/collection.exp (run_trace_experiment): Consume the
	continue output at start.
	(gdb_collect_locals_test): Robustify regexp.
	* gdb.trace/passc-dyn.exp: Fix comment typo.
	* gdb.trace/tfind.exp: Don't enable optimization. Remove stray ']'.

2005-03-08  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Add iq2000 case.
	* gdb.asm/iq2000.inc: New file.

2005-03-07  Manoj Iyer <manjo@austin.ibm.com>
	
	* gdb.base/command.exp: Change hardcoded value to regular expression.
	* gdb.base/float.exp: Add powerpc to the list of targets checked.

2005-03-07  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.asm/alpha.inc, gdb.asm/frv.inc, gdb.asm/i386.inc,
	gdb.asm/ia64.inc, gdb.asm/m68hc11.inc, gdb.asm/m68k.inc,
	gdb.asm/mips.inc, gdb.asm/pa.inc, gdb.asm/powerpc.inc,
	gdb.asm/s390.inc, gdb.asm/s390x.inc, gdb.asm/sh.inc,
	gdb.asm/x86_64.inc: Use .purgem before redefining macros.

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

	* gdb.cp/ovldbreak.exp: Adjust regular expression for recent
	changes.

2004-03-03  Paul Gilliam  <pgilliam@us.ibm.com>

        * lib/compiler.c: Add test for IBM's xlc compiler.
        * lib/compiler.cc: Likewise.

2004-02-24  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/fixed_points.exp: Create compilation object directory
	before running the test.
	* gdb.ada/null_record.exp: Likewise.
	* gdb.ada/packed_array.exp: Likewise.
	* gdb.ada/start.exp: Likewise.

2005-02-15  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/packed_array/pa.adb: New file.
	* gdb.ada/packed_array.exp: New testcase.

2005-02-10  Mark Kettenis  <kettenis@gnu.org>

	* gdb.dwarf2/dw2-intermix.exp, gdb.dwarf2/dw2-intermix.S: New
	files.

	* gdb.dwarf2/dw2-basic.exp, gdb.dwarf2/dw2-intercu.exp: Run tests
	on *-*-openbsd*.  Correctly match whitespace in regukar
	expressions.

2005-02-10  Daniel Jacobowitz  <dan@debian.org>

	From Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>:
	PR exp/1821
	* gdb.base/gdb1821.c: New test file.
	* gdb.base/gdb1821.exp: New test file.

2005-02-09  Joel Brobecker  <brobecker@adacore.com>

	* gdb.base/start.c: New file.
	* gdb.base/start.exp: New testcase.

2005-02-09  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/start/dummy.adb: New file.
	* gdb.ada/start.exp: New testcase.

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

	* maint.exp: Raise timeout to give Cygwin targeted GDBs more time
	for printing symbols and statistics.
	Add test for using relative pathnames in "maint print msymbols" test.
	Mark "maint info sections DATA" XFAIL on Cygwin.
	Remove Cygwin XFAIL mark on "help maint dump-me" and "maint dump-me"
	tests.

2005-02-09  Andreas Schwab  <schwab@suse.de>

	Committed by Andrew Cagney  <cagney@gnu.org>
	* gdb.base/remotetimeout.exp: New file.

2005-02-07  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/interp.exp: Remove trailing \n in gdb_test commands.

2005-02-03  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/gnat_ada.gpr: New file.
	* gdb.ada/gnat_ada.gin: Delete, no longer used.
	* lib/ada.exp (gdb_compile_ada): Minor adaptation to new project file.
	* configure.ac: No longer generate gnat_ada.gpr.
	* configure: Regenerate.
	* gdb.ada/Makefile.in: Minor adaptations due to new project file.
	* gdb.ada/null_record/null_record.adb: Moved here from gdb.ada.
	* gdb.ada/null_record/bar.ads: Likewise.
	* gdb.ada/null_record/bar.adb: Likewise.
	* gdb.ada/fixed_points/fixed_points.adb: Likewise.
	* gdb.ada/null_record.exp (testdir): New variable.
	(testfile): executable is now in testdir subdirectory.
	(srcfile): Use full path to the main compilation unit.
	* gdb.ada/fixed_points.exp: Same changes as above.

2005-02-03  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.base/interp.exp: New test.

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

	* gdb.base/sigrepeat.exp, gdb.base/sigrepeat.c: New test.

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

	* gdb.stabs/Makefile.in (Makefile): Update dependencies -
	configure.ac not configure.in.

	* gdb.base/scope.exp (test_at_main): Delete any XFAIL and/or KFAIL
	of powerpc*-*-*.
	* gdb.hp/gdb.base-hp/callfwmall.exp (do_function_calls): Ditto.
	* gdb.base/list.exp (test_list_function) 
	(test_list_filename_and_function): Ditto.
	* gdb.base/callfuncs.exp (do_function_calls): Ditto.

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

	* gdb.base/source.exp: Delete KFAIL gdb/1846, simplify.

	* gdb.base/source-error.gdb, gdb.base/source.exp: New files.

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

	* gdb.mi/mi-var-cmd.exp: Adjust "create int" test to match output.
	* gdb.mi/mi2-var-cmd.exp: Ditto.

2005-01-10  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/fileio.c: Include unistd.h as required for lseek(2).

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

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.
	* gdb.stabs/configure.ac: Rename configure.in, require autoconf 2.59.
	* gdb.stabs/configure: Re-generate.
	* gdb.hp/configure.ac: Rename configure.in, require autoconf 2.59.
	* gdb.hp/configure: Re-generate.
	* gdb.hp/gdb.objdbg/configure.ac: Rename configure.in, require
	autoconf 2.59.
	* gdb.hp/gdb.objdbg/configure: Re-generate.
	* gdb.hp/gdb.defects/configure.ac: Rename configure.in, require
	autoconf 2.59.
	* gdb.hp/gdb.defects/configure: Re-generate.
	* gdb.hp/gdb.compat/configure.ac: Rename configure.in, require
	autoconf 2.59.
	* gdb.hp/gdb.compat/configure: Re-generate.
	* gdb.hp/gdb.base-hp/configure.ac: Rename configure.in, require
	autoconf 2.59.
	* gdb.hp/gdb.base-hp/configure: Re-generate.
	* gdb.hp/gdb.aCC/configure.ac: Rename configure.in, require
	autoconf 2.59.
	* gdb.hp/gdb.aCC/configure: Re-generate.

2004-12-15  Jim Blandy  <jimb@redhat.com>

	* gdb.threads/linux-dp.exp: Fix output regexp to handle output
	under NPTL when there is debugging info available for libpthread.

2004-12-13  Jerome Guitton  <guitton@gnat.com>

	* gdb.ada/fixed_points.c: New file.
	* gdb.ada/fixed_points.exp: New file.

2004-12-03  Randolph Chung  <tausq@debian.org>

	* gdb.arch/pa-nullify.exp: New file.
	* gdb.arch/pa-nullify.s: New file.

2004-11-30  Randolph Chung  <tausq@debian.org>

	* gdb.threads/thread_check.exp: Use ${srcfile} for test program name
	instead of "tbug".  Fix regexp to work properly with gdb_test.

2004-11-29  Paul Hilfinger  <Hilfinger@gnat.com>

	* gdb.base/bitfields2.exp: New test.
	* gdb.base/bitfields2.c: New file.

2004-11-28  Richard Earnshaw  <rearnsha@arm.com>

	* config/sim.exp (gdb_load): Return 0 on success, -1 on failure.

2004-11-16  Randolph Chung  <tausq@debian.org>

	* gdb.base/unload.exp: Pass relative path to gdb_get_line_number.

2004-11-14  Daniel Jacobowitz  <dan@debian.org>

	* gdb.threads/threadapply.exp: Correct "macro details" test.

2004-11-11  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.threads/threadapply.exp: New test.
	* gdb.threads/threadapply.c: New file.

2004-11-07  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/savedregs.exp: Correct pattern used for sigtramp
	frames.

2004-11-05  Felix Lee  <felix+log1@specifixinc.com>

	* gdb.base/cursal.exp: New file.
	* gdb.base/cursal.c: New file.

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

	* gdb.base/savedregs.exp, gdb.base/savedregs.c: New files.

2004-10-30  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Add mips*-*-netbsd* to the list of
	NetBSD/ELF targets.

2004-10-29  Joel Brobecker  <brobecker@gnat.com>

	* gdb.threads/bp_in_thread.c: New file, copied from
	pthread_cond_wait.c.
	* gdb.threads/bp_in_thread.c: Use bp_in_thread.c as the source
	file, rather than reusing the .c file from another testcase.

2004-10-20  Joel Brobecker  <brobecker@gnat.com>

	* gdb.ada/null_record.exp: Check where we stopped after
	sending the start command, instead of where the associated
	temporary breakpoint was inserted.

2004-10-14  Andrew Cagney  <cagney@gnu.org>

	* gdb.mi/gdb701.c (main): Return 0.

2004-10-13  Daniel Jacobowitz  <dan@debian.org>

	* gdb.dwarf2/dw2-intercu.S, gdb.dwarf2/dw2-intercu.exp: New files.

2004-10-12  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.threads/schedlock.c: Add comment markers to use to find
	line numbers.
	* gdb.threads/schedlock.exp: Adjust regex to handle the new
	comments.
	* gdb.threads/watchthreads.exp: Use gdb_get_line_number to find
	breakpoint lines.

2004-10-12  Daniel Jacobowitz  <dan@debian.org>

	* gdb.dwarf2/dw2-basic.exp: Run on Hurd also.

2004-10-12  Daniel Jacobowitz  <dan@debian.org>

	* configure.in: Add gdb.dwarf2.
	* configure: Regenerated.
	* Makefile.in: Add gdb.dwarf2.
	* gdb.dwarf2/Makefile.in, gdb.dwarf2/dw2-basic.S,
	gdb.dwarf2/dw2-basic.exp, gdb.dwarf2/main.c,
	gdb.dwarf2/file1.txt: New files.

2004-10-11  Orjan Friberg  <orjanf@axis.com>

	* gdb.threads/bp_in_thread.exp: Use runto_main and "continue" instead 
	of "run", since the latter doesn't work with remote targets.  Adjust
	the breakpoint numbering accordingly.
	* gdb.threads/pthread_cond_wait.exp: Ditto.

2004-10-08  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/overlays.exp: Update copyright years.

2004-10-08  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* gdb.base/overlays.exp: Disable if target is Linux.

2004-10-06  Felix Lee  <felix+log1@specifixinc.com>

	* config/gdbserver.exp (gdb_load): Use right filename on remote.

2004-10-05  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* gdb.asm/asm-source.exp: Add m32r-linux target.
	* gdb.asm/m32r-linux.inc: New file.

2004-09-24  Andrew Cagney  <cagney@redhat.com>
	    David Anderson <anderson@redhat.com>

	* gdb.base/bigcore.exp (extract_heap): If the expect "file size"
	command fails, assume things will work.
	* gdb.base/bigcore.c: Include <sys/stat.h> and <fcntl.h>.
	(_GNU_SOURCE): Define.
	(print_unsigned, print_hex): Change parameter to "long long".
	(print_byte_count): New function, use to print byte counts.
	(large_off_t, large_lseek, O_LARGEFILE): Define dependant on
	O_LARGEFILE.
	(main): Compute an upper bound on a corefile in max_core_size.
	Limit memory chunk size to max_core_size.  Limit total memory
	allocated to max_core_size.

2004-09-23  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/bigcore.exp: Replace the code that creates a corefile
	from a separate process with code that creates a corefile by
	making the inferior dump core.

2004-09-23  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/sigstep.exp: Avoid comments withing gdb_test_multiple
	block.

2004-09-23  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/constvars.exp (local_compiler_xfail_check_2):
	New proc.  Accept both gcc 3.x.x and gcc 4.x.x.
	* gdb.base/volatile.exp (local_compiler_xfail_check_2):
	Likewise.

2004-09-20  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.java/jprint.exp: New test case for java inferior call.
	* gdb.java/jprint.java: Ditto.

2004-09-15  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/bigcore.exp: Deactivate on IRIX targets.

2004-09-14  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.threads/killed.c: Include <stdlib.h>.
	* gdb.threads/pthreads.c: Likewise.

2004-09-14  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.threads/killed.c: Add copyright notice.

2004-09-10  Jason Molenda  (jmolenda@apple.com)

        * gdb.base/define.exp: Two new tests to verify zero space chars
        after 'if' and 'while' commands in a user-defined command is correctly
        parsed.

2004-09-08  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/signals.exp (signal_tests_1): Delete.  Merge signal
	delivery test with duplicate at end of file.

2004-09-06  Mark Kettenis  <kettenis@jive.nl>

	* gdb.base/unload.exp: Link with -dl on *-*-solaris*.

2004-09-05  Michael Chastain  <mec.gnu@mindspring.com>

	* config/hppro.exp: Removed.

2004-09-05  Michael Chastain  <mec.gnu@mindspring.com>

	* config/sparclet.exp: Removed.

2004-09-05  Michael Chastain  <mec.gnu@mindspring.com>

	* config/udi.exp: Removed.

2004-09-02  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/sigstep.exp (advance): Use "-continue_timer" option
	of "exp_continue".
	(advancei): Likewise.

2004-09-01  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/unload.exp: Fix so messages aren't duplicated.

2004-09-01  Manoj Iyer  <manjo@austin.ibm.com>

	* gdb.gdb/complaints.exp (setup_test): Use new gdb.exp functionality
	to check for nodebug in executable.
	* gdb.gdb/observer.exp (setup_test): Likewise.
	* gdb.gdb/selftest.exp (test_with_self): Likewise.
	* gdb.gdb/xfullpath.exp (setup_test): Likewise.

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

	* gdb.threads/staticthreads.c, gdb.threads/staticthreads.exp: New
	files.

2004-09-01  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/unload.exp: Fix expected warning message to match
	latest format.

2004-09-01  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/call-rt-st.exp: Fix typos.

2004-08-31  Manoj Iyer  <manjo@austin.ibm.com>

	* gdb.threads/thread_check.exp: New testcase.
	* gdb.threads/thread_check.c: New testcase.

2004-08-31  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sigstep.exp (breakpoint_to_handler_entry)
	(skip_to_handler_entry): New procedures.  Test stepping into a
	handler when the breakpoint is at the handler's entry point.

2004-08-30  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sigstep.exp (breakpoint_over_handler): Remove kfail
	gdb/1757.

2004-08-27  Michael Chastain  <mec.gnu@mindspring.com>

	With code from Manoj Iyer <manjo@austin.ibm.com>:
	* lib/gdb.exp (gdb_file_cmd): Return more information in the
	return value.  Add an arm for "no debugging symbols found".
	Change a stray "error" to "perror".
	(gdb_run_cmd): Adapt to new return value.
	* gdb.base/remote.exp: Adapt to new return value.
	* gdb.gdb/complaints.exp: Likewise.
	* gdb.gdb/observer.exp: Likewise.
	* gdb.gdb/selftest.exp: Likewise.
	* gdb.gdb/xfullpath.exp: Likewise.

2004-08-27  Joel Brobecker  <brobecker@gnat.com>

	* gdb.threads/bp_in_thread.exp: New testcase.

2004-08-27  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR testsuite/1735.
	* gdb.threads/schedlock.c (thread_function): Add a cast
	to suppress a gcc warning.
	* gdb.threads/thread-specific.c (thread_function): Likewise.

2004-08-26  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/unload.c: Include <stdlib.h>.

2004-08-26  Michael Chastain  <mec.gnu@mindspring.com>

	From Paul Gilliam <pgilliam@us.ibm.com>:
	* gdb.base/call-sc.exp (test_scalar_returns): Make sure PC is
	synchronized after the "return".

2004-08-26  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/basics.c: Include <stdio.h>.
	* gdb.mi/pthreads.c: Include <stdlib.h>.
	* gdb.mi/var-cmd.c: Include <stdlib.h>.

2004-08-26  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.threads/schedlock.c: Add copyright notice.

2004-08-25  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sigstep.exp (breakpoint_to_handler, skip_to_handler)
	(skip_over_handler, breakpoint_over_hander): New test procedures.
	(advance, advancei): Add a proper prefix, do not use
	rerun_to_main.
	* gdb.base/sigstep.c (main): Change to use an infinite loop.

2004-08-24  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/basics.c: Add copyright notice.
	* gdb.mi/var-cmd.c: Add copyright notice.

2004-08-23  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/gdb.exp: Remove signed_keyword_not_used.
	* lib/compiler.c: Likewise.
	* lib/compiler.cc: Likewise.

2004-08-23  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/whatis.c: Remove conditional disabling of "signed".
	* gdb.base/whatis.exp: Remove signed_keyword_not_used.

2004-08-23  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/whatis.c: Add copyright notice.

2004-08-20  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp (skip_breakpoint): New function.  Use
	it to skip the breakpoints encoded in the inline assembly.

2004-08-20  Michael Chastain  <mec.gnu@mindspring.com>

	* Makefile.in: Add gdb.fortran.

2004-08-20  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/call-sc.exp (test_scalar_returns):
	Fix cut-and-paste glitch in "Make fun return now".

2004-08-17  Michael Chastain  <mec.gnu@mindspring.com>

	* configure.in: Add gdb.fortran.
	* configure: Regenerate.
	* gdb.fortran/Makefile.in: New file.
	* lib/gdb.exp (skip_fortran_tests): New procedure.

2004-08-17  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/mi-var-block.exp: Use gdb_get_line_number.  Remove
	reference to bug-gnu@prep.ai.mit.edu.
	* gdb.mi/mi-var-child.exp: Likewise.
	* gdb.mi/mi-var-cmd.exp: Likewise.
	* gdb.mi/mi-var-display.exp: Likewise.
	* gdb.mi/mi2-var-block.exp: Likewise.
	* gdb.mi/mi2-var-child.exp: Likewise.
	* gdb.mi/mi2-var-cmd.exp: Likewise.
	* gdb.mi/mi2-var-display.exp: Likewise.

2004-08-15  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/unload.c (main): Make local variable msg const.

2004-08-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/mi-cli.exp: Use gdb_get_line_number.  Remove reference
	to bug-gnu@prep.ai.mit.edu.
	* gdb.mi/mi-disassemble.exp: Likewise.
	* gdb.mi/mi-eval.exp: Likewise.
	* gdb.mi/mi-file.exp: Likewise.  Also, add comment about the
	default line number.
	* gdb.mi/mi-return.exp: Likewise.
	* gdb.mi/mi-simplerun.exp: Likewise.
	* gdb.mi/mi-stack.exp: Likewise.
	* gdb.mi/mi-stepi.exp: Likewise.  Also, replace wildcarded line
	number with explicit range test.
	* gdb.mi/mi-watch.exp: Likewise.
	* gdb.mi/mi2-break.exp: Likewise.
	* gdb.mi/mi2-cli.exp: Likewise.
	* gdb.mi/mi2-disassemble.exp: Likewise.
	* gdb.mi/mi2-eval.exp: Likewise.
	* gdb.mi/mi2-file.exp: Likewise.  Also, add comment about the
	default line number.
	* gdb.mi/mi2-return.exp: Likewise.
	* gdb.mi/mi2-simplerun.exp: Likewise.
	* gdb.mi/mi2-stack.exp: Likewise.
	* gdb.mi/mi2-stepi.exp: Likewise.  Also, replace wildcarded line
	number with explicit range test.
	* gdb.mi/mi2-watch.exp: Likewise.

2004-08-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/ctti.exp: Tweak srcfile and objfile to have no slashes.
	* gdb.cp/m-static.exp: Likewise.
	* gdb.cp/rtti.exp: Likewise.

2004-08-14  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/bigcore.c: Include <sys/types.h> and <sys/time.h>.

2004-08-14  Eli Zaretskii  <eliz@gnu.org>

	* ChangeLog: Prefix Local Variables with semi-colons and indent
	the reference to older ChangeLog files, to fix fontification in
	Emacs.

2004-08-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/mi-break.exp: Use gdb_get_line_number.
	* gdb.mi/mi2-break.exp: Likewise.

2004-08-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.gdb/selftest.exp: Revert removal of call to init_malloc.

2004-08-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/inherit.exp: Use cp_test_ptype_class.

2004-08-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Remove unused declarations.  Just let
	test names default instead of providing special names.  Remove
	extraneous demangler test.

2004-08-12  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/unload.exp: New test for breakpoints in dynamically
	loaded libraries.
	* gdb.base/unload.c: Ditto.
	* gdb.base/unloadshr.c: Ditto.

2004-08-12  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp (test_ptype_class_objects): Call
	cp_test_ptype_class.
	(test_enums): Likewise.

2004-08-10  Andrew Cagney  <cagney@gnu.org>

	* gdb.threads/staticthreads.c, gdb.threads/staticthreads.exp: New
	files.

2004-08-10  Andrew Cagney  <cagney@gnu.org>

	* gdb.gdb/selftest.exp (do_steps_and_nexts): Remove code to skip
	init_malloc call.

2004-08-10  Michael Chastain  <mec.gnu@mindspring.com>

	* ChangeLog: Add copyright notice.  The notice is copied
	from emacs 21.3 top level ChangeLog.

2004-08-09  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/cp-support.exp: New file.
	* lib/cp-support.exp (cp_test_type_class): New function.
	* gdb.cp/derivation.exp: Use cp_test_ptype_class.
	* gdb.cp/virtfunc.exp (test_one_ptype): Removed.
	* gdb.cp/virtfunc.exp (test_ptype_of_classes): Use
	cp_test_ptype_class.

2004-08-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/mi2-basics.exp, gdb.mi/mi2-break.exp,
	gdb.mi/mi2-console.exp, gdb.mi/mi2-disassemble.exp,
	gdb.mi/mi2-eval.exp, gdb.mi/mi2-file.exp, gdb.mi/mi2-hack-cli.exp,
	gdb.mi/mi2-read-memory.exp, gdb.mi/mi2-regs.exp,
	gdb.mi/mi2-return.exp, gdb.mi/mi2-simplerun.exp,
	gdb.mi/mi2-stack.exp, gdb.mi/mi2-stepi.exp, gdb.mi/mi2-until.exp,
	gdb.mi/mi2-var-block.exp, gdb.mi/mi2-var-child.exp,
	gdb.mi/mi2-var-cmd.exp, gdb.mi/mi2-var-display.exp,
	gdb.mi/mi2-watch.exp: Update copyright years.

2004-08-09  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/sigaltstack.exp: Provide proper anchoring.

2004-08-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/gdb792.exp, gdb.mi/mi-basics.exp, gdb.mi/mi-break.exp,
	gdb.mi/mi-console.exp, gdb.mi/mi-disassemble.exp,
	gdb.mi/mi-eval.exp, gdb.mi/mi-file.exp, gdb.mi/mi-hack-cli.exp,
	gdb.mi/mi-read-memory.exp, gdb.mi/mi-regs.exp,
	gdb.mi/mi-return.exp, gdb.mi/mi-simplerun.exp,
	gdb.mi/mi-stack.exp, gdb.mi/mi-stepi.exp, gdb.mi/mi-until.exp,
	gdb.mi/mi-var-block.exp, gdb.mi/mi-var-child.exp,
	gdb.mi/mi-var-cmd.exp, gdb.mi/mi-var-display.exp,
	gdb.mi/mi-watch.exp: Update copyright years.

2004-08-08  Daniel Jacobowitz  <dan@debian.org>

	PR gdb/1738
	* gdb.base/signals.exp (signal_tests_1): KFAIL bug in continuing
	from a breakpoint with a pending signal.

2004-08-08  Daniel Jacobowitz  <dan@debian.org>

	PR gdb/1736
	* lib/gdb.exp (gdb_test_multiple): Handle return -code return.
	* gdb.base/sigaltstack.exp (finish_test): Consume output until
	the prompt.
	* gdb.base/sigstep.exp: Add KFAIL for gdb/1736.

2004-08-08  Daniel Jacobowitz  <dan@debian.org>

	* gdb.cp/templates.exp: Handle (char)115 for template argument 's'.

2004-08-08  Daniel Jacobowitz  <dan@debian.org>

	PR gdb/1736
	* gdb.base/sigaltstack.exp (finish_test): New procedure.  KFAIL
	for i?86-*-linux*.

2004-08-08  Daniel Jacobowitz  <dan@debian.org>

	* gdb.arch/i386-prologue.exp: Compile without debug information.

2004-08-08  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/gdb.exp (gdb_get_line_number): Rewrite with native tcl
	rather than asking gdb to search.

2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/gcore.c: Include <string.h>.

2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/gcore.c: Add copyright notice.

2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/freebpcmd.c: Include <stdio.h>.
	* gdb.base/long_long.c: Include <string.h>.
	* gdb.base/sigaltstack.c: Include <stdlib.h> <string.h>.
	* gdb.base/siginfo.c: Include <string.h>.
	* gdb.base/sigstep.c: Include <string.h>.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/complex.c: Include <stdlib.h>.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/complex.c: Add copyright notice.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/charset.c: Include <stdlib.h>.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/auxv.c: Include <stdlib.h>.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/auxv.c: Add copyright notice.

2004-08-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/coremaker.c: Add copyright notice.
	* gdb.base/coremaker2.c: Add copyright notice.

2004-08-04  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/store.exp: Update copyright.
	(check_set, up_set, check_struct, up_struct): Add a prefix to test
	names, do not import gdb_prompt.

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

	Fix PR testsuite/1729.
	* gdb.base/dump.exp: Add test name to callers of capture_value, do
	not use capture_value with value 4.
	(capture_value): Add optional test name parameter.
	(test_reload_saved_value, test_restore_saved_value): Use $msg as
	the prefix, pass to capture_value.

2004-08-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp: Add testcase for standard prolgue.
	* gdb.arch/i386-prologue.c (standard): New prototype and function.
	(main): Call new function.

2004-07-31  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/namespace.exp: Accept more varieties of ptype output.

2004-07-31  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.exp: Accept more varieties of ptype output.

2004-07-31  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/inherit.exp: Accept more varieties of ptype output.
	Accept more values of vtbl pointer.  Remove some messages
	about "obsolete gcc or gdb".

2004-07-30  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Accept more varieties of ptype output.

2004-07-30  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/asm-source.exp: Properly convert target board
	debug flags from gcc format to binutils format.

2004-07-28  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp: Remove KFAIL of "backtrace in
	gdb1718".  PR backtrace/1718 partially fixed.

2004-07-27  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.threads/watchthreads.exp: New test for threaded watchpoints.

2004-07-26  Nick Clifton  <nickc@redhat.com>

	* gdb.asm/asm-source.exp (debug-flags): New variable.  If a known
	good default value for a specific architecture is available then
	set it to that value.  Otherwise default to the -gstabs switch.
	Remove the -g... switches from the asm-flags variable.  Allow the
	target board info to override the value if it wants to.  Pass the
	switch on the assembler command line.

2004-07-23  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp: Add testcase for PR backtrace/1718.
	* gdb.arch/i386-prologue.c (gdb1718): New prototype and function.
	(main): Call new function.

2004-07-22  Michael Chastain  <mec.gnu@mindspring.com>

	Test for PR exp/1715.
	* gdb.base/radix.exp: Refactor common procedures.  Make all
	test names unique.  Change XFAIL to KFAIL.

2004-07-20  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.ada/gnat_ada.gpr.in: Rename from here ...
	* gdb.ada/gnat_ada.gin: ... to here.
	* configure.in: Use gnat_ada.gin.
	* configure: Regenerate.

2004-07-20  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/signals.exp: Replace send_gdb and gdb_expect with
	gdb_test and gdb_test_multiple.  Delete bash_bug.  Delete suspect
	XFAILs.  Clean up test messages and comments.  Check backtraces.
	Delete re-sync code.

2004-07-19  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR cli/740.
	* gdb.base/annota1.exp: Honor gdb,nosignals.
	* gdb.base/annota3.exp: Likewise.

2004-07-19  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/java.exp: Update copyright notice.

2004-07-19  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/selftest.exp: Copy file from here ...
	* gdb.gdb/selftest.exp: ... to here.

2004-07-16  Andrew Cagney  <cagney@redhat.com>

	* lib/insight-support.exp: Delete file.
	* lib/java.exp (java_init): Fix copyright.

2004-07-16  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/restore.c: Append "prologue" to comments marking the a
	function's prologue.
	* gdb.base/restore.exp: Update copyright, re-indent.
	(restore_tests): Use gdb_test_multiple.  Add "calleeN calls
	callerN" prefix where needed.  Update patterns that match a
	function's prologue.

2004-07-16  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/restore.c: Add copyright notice.

2004-07-16  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/logical.exp: Update copyright.
	(evaluate): New procedure.  Use to re-implement tests using
	several tables.

2004-07-14  Martin Hunt  <hunt@redhat.com>

	* lib/insight-support.exp (gdbtk_start): Unset TCL_LIBRARY
	which fixes some problems where init.tcl was not found.

2004-07-13  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sizeof.exp: Skip test when no inferior I/O.
	(check_sizeof, check_valueof): Do not include the output in the
	test name.  Use gdb_test.
	(get_valueof): Use gdb_test_multiple.

	* gdb.base/step-test.exp: Update copyright.  Use
	gdb_test_multiple.  Ensure that test names do not include
	architecture dependent output.

	* gdb.gdb/observer.exp: Update copyright.
	(setup_test): Use gdb_test_multiple.
	(attach_first_observer, attach_second_observer)
	(attach_third_observer, detach_first_observer)
	(detach_second_observer, detach_third_observer)
	(reset_counters, check_counters): Make $message a prefix.
	(test_normal_stop_notifications): Add "args" parameter - a list of
	init functions to be called.  Make $message a prefix,
	(test_observer_normal_stop): Change the message prefixes so that
	they are unique, pass the attach / detach procedures to
	test_normal_stop_notifications.

	* gdb.base/signull.exp (test_segv): Prefix all tests with
	"${name}".  Clean up test messages.

	* gdb.base/annota3.exp, gdb.base/annota1.exp: Update copyright.

	* gdb.base/ena-dis-br.exp: Update copyright.
	(break_at): New function.  Replace send_gdb with gdb_test,
	break_at, and gdb_test_multiple.  Replace XFAIL of "continue with
	ignore count, not stopped at bpt", with KFAIL.

2004-07-13  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/attach.exp: Remove cleanupfile handling.

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

	* gdb.base/annota1.exp: Cleanup corefile test name.
	* gdb.base/annota3.exp: Ditto.

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

	* gdb.base/signals.exp: Clean up copyright, re-indent.

	* gdb.base/attach.exp: Replace send_gdb and gdb_expect with
	gdb_test and gdb_test_multiple.

2004-07-08  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.java/jmain.exp: Fix expected line number for main to
	break at.  Set XFAIL for break at main test since gcj does not 
	provide line number info for first statement in main.

2004-07-08  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/attach.exp: Cleanup copyright.  Re-indent.

	* gdb.base/sigbpt.exp: Make the common part of each test name a
	prefix instead of suffix.

2004-07-07  Bob Rossi  <bob_rossi@cox.net>

	* gdb.mi/mi2-file.exp: Revert to version 1.1, except changed name of
	test from test_tbreak_creation_and_listing to
	test_file_list_exec_source_file
	* gdb.mi/mi-file.exp: Add test for -file-list-exec-source-files
	Changed name of test from test_tbreak_creation_and_listing to
	test_file_list_exec_source_file

2004-07-07  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.java/jmisc.exp: Fix expected output of ptype to look for
	the jmisc() constructor instead of <init>.
	* gdb.java/jmisc1.exp: Ditto.

2004-07-07  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sigbpt.exp (stepi_out): Check for a single step
	corrupting the PC.

2004-07-06  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp: Accept whitespace change in demangler
	output.

2004-07-06  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/sigbpt.exp, gdb.base/sigbpt.c: New test.

2004-07-02  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/compiler.c: Accept __HP_CXD_SPP for old hp ansi c compiler.
	* lib/compiler.cc: Likewise.

2004-06-30  Michael Chastain   <mec.gnu@mindspring.com>

	* lib/compiler.cc: Work around string preprocessing problem
	with old hp c++ compiler.
	* lib/compiler.c: Likewise.

2004-06-29  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.arch/i386-prologue.c: Add copyright header.  Use preprocessor
	directives to conditionalize symbol prefixing.
	* gdb.arch/i386-prologue.exp: Allow symbol prefixing by adding
	additional_flags handling.  Add underscore prefix for Cygwin.
	* gdb.arch/i386-unwind.c: Use preprocessor directives to
	conditionalize symbol prefixing.
	* gdb.arch/i386-unwind.exp: Allow symbol prefixing by adding
	additional_flags handling.  Add underscore prefix for Cygwin.

2004-06-29  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/bigcore.exp: Skip test on Cygwin.

2004-06-28  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.hp/gdb.base-hp/reg.exp: Accept both old and new gdb output
	formats for "info register".  Use gdb_test_multiple.  Fix
	the "invalid register" test.

2004-06-28  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/attach.exp: Fix copyright date.  Set testpid to Windows
	PID for Cygwin.  Add Cygwin specific strings to check for in some
	tests.
	(do_attach_tests): Add a test for user interaction when attaching
	to a process with no matching symbol table already loaded.

2004-06-26  Andrew Cagney  <cagney@gnu.org>

	Test PR java/1567 and PR java/1565.
	* gdb.java/jmain.exp, gdb.java/jmain.java: New files.
	* gdb.java/jmisc2.exp: Delete file.

2004-06-26  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.hp/gdb.base-hp/reg.exp: Update copyright notice.

2004-06-25  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/attach.exp (do_attach_tests): Don't forget to kill second
	attach process.

2004-06-23  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/pr-1553.exp: Remove.

2004-06-22  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/pr-1553.cc: Remove.
	* gdb.cp/pr-1553.exp: Disable this test.

2004-06-20  Jim Blandy  <jimb@redhat.com>

        Fix PR testsuite/1680.
	* gdb.arch/i386-sse.exp: Properly quote curly braces in
	regular expressions.

2004-06-19  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR testsuite/1679.
	* gdb.arch/i386-sse.exp: Do not call gdb_suppress_entire_file.
	Issue an UNSUPPORTED result instead.

2004-06-18  Jim Blandy  <jimb@redhat.com>

	* gdb.base/charset.exp: Only send a control-C if we see a new
	prompt and incomplete command.

2004-06-18  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/pr-574.cc: Add copyright notice.

2004-06-17  Jim Blandy  <jimb@redhat.com>

	* gdb.base/charset.exp: Don't refer to $expect_out(1,string) in
	cases where the regexp has no groups; this grabs random text from
	the previous test suite, whatever that was.

2004-06-17  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/printmethod.cc: Add copyright notice.

2004-06-16  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/psmang1.cc, gdb.cp/psmang2.cc: Add copyright notice.

2004-06-16  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/signull.c: Update copyright.  Include <string.h>.
	(bowler): Replace data_pointer with data_read
	and data_write cases.  Add code_descriptor case.
	(zero, desc): New array and pointer.
	(data, code): Change to simple pointers.
	* gdb.base/signull.exp: Fix probe pattern matching a function
	descriptor SIGSEGV.  Replace data_pointer with data_read and
	data_write tests.

2004-06-16  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/long_long.exp, gdb.base/long_long.c: Rewrite.

2004-06-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/long_long.c: Add copyright notice.

2004-06-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/long_long.exp: Remove reference to
	bug-gdb@prep.ai.mit.edu.  Change line-number-specific breakpoint
	to gdb_breakpoint and gdb_continue_to_breakpoint.

2004-06-14  Jim Blandy  <jimb@redhat.com>

	* gdb.arch/e500-regs.exp: Fix up 'print' pattern for the little-
	endian case.

2004-06-14  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/gcore.exp (capture_command_output): Delete the always
	passing tests containing inferior values.
	* gdb.base/ending-run.exp: Do not include the breakpoint address
	in the test message.  Update copyright.
	* gdb.base/sizeof.exp (check_sizeof): Do not include the type's
	size in the test name, use gdb_test_multiple.  Update copyright.

2004-06-14  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/ref-types.cc: Add copyright notice.

2004-06-14  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/compiler.c: Remove gcc_compiled, hp_cc_compiler,
	hp_aCC_compiler.
	* lib/compiler.cc: Likewise.
	* lib/gdb.exp (get_compiler_info): Eval lines only if they are
	'set' commands.  Log diagnostics for other lines.  Set
	gcc_compiled, hp_cc_compiler, and hp_aCC_compiler.

2004-06-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/try_catch.cc: Add copyright notice.

2004-06-12  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/userdef.cc: Add copyright notice.

2004-06-11  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.cc: Add copyright notice.

2004-06-11  Randolph Chung  <tausq@debian.org>

	* gdb.base/structs2.exp: Mark two tests as xfail because of a compiler
	problem.

2004-06-10  Andrew Cagney  <cagney@gnu.org>

	* lib/compiler.cc, lib/compiler.c: Append either
	__GNUC_PATCHLEVEL__, or "unknown" to the compiler_info.
	* gdb.base/structs.exp (test_struct_calls): Check for gcc-3-3-*
	instead of gcc-3-3.

2004-06-09  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/structs.exp (test_struct_calls): Fix KFAIL for
	gdb/1455, bug is specific to "long long" and "double".
	
	* gdb.base/structs.exp (test_struct_returns, test_struct_returns)
	(test_struct_calls): Remove KFAIL of "long double" on i*86-*-*,
	x86_64-*-*, sparc64-*-*, and sparc*-*-solaris2*.  PR tdep/1447
	fixed.

2004-06-09  Andrew Cagney  <cagney@gnu.org>

	* gdb.base/structs.exp (test_struct_returns): Replace
	"return_value_unknown" and "finish_value_unknown" by
	"return_value_known" and "finish_value_known".  Instead of
	"return_value_unknown" iff "finish_value_unknown", check
	"return_value_known" implies "finish_value_known".

2004-06-08  Martin Hunt  <hunt@redhat.com>

	* gdb.base/float.exp: Add pattern for mips targets.

2004-06-08  Randolph Chung  <tausq@debian.org>

	* gdb.base/float.exp: Add pattern for hppa*-* target; make the failure
	message for unknown architectures more clear.

2004-06-08  Joel Brobecker  <brobecker@gnat.com>

	* gdb.ada/null_record.exp: Use "start" instead of "begin" to
	start the execution of the program.

2004-06-07  Jim Blandy  <jimb@redhat.com>

	* gdb.arch/i386-sse.exp, gdb.arch/i386-sse.c: New tests.
	* gdb.arch/i386-cpuid.h: New helper file.

2004-06-07  Randolph Chung  <tausq@debian.org>

	* gdb.base/shlib-call.exp: Allow breakpoint to be added after inferior
	has started.

2004-06-04  Roland McGrath  <roland@redhat.com>

	Fix PR gdb/1647.
	* gdb.base/auxv.exp (fetch_auxv): Revert last change and fix it
	differently to be robust to output buffering differences.

2004-06-04  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.threads/pthreads.exp: Update copyright years.
	(check_control_c): Change asynchronous 'after' to synchronous.

2004-06-04  Roland McGrath  <roland@redhat.com>

	* gdb.base/auxv.exp (fetch_auxv): Consume output fully through
	next gdb prompt.

2004-06-02  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR gdb/1636.
	* gdb.threads/manythreads.exp: Change asynchronous 'after'
	calls to synchronous.

2004-05-26  Jim Blandy  <jimb@redhat.com>

	* gdb.arch/e500-prologue.exp, gdb.arch/e500-prologue.c: New tests.

2004-05-24  Randolph Chung  <tausq@debian.org>

	* gdb.asm/asm-source.exp: Enable test for hppa-linux target.
	* gdb.asm/pa.inc: New file.

2004-05-22  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/signull.c: Use sigjmp_buf instead of jmp_buf.

2004-05-21  Joel Brobecker  <brobecker@gnat.com>
            Daniel Jacobowitz  <drow@mvista.com>

	* lib/gdb.exp (gdb_test_multiple): Improve regexp matching the
	GDB prompt.

2004-05-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>

	* gdb.base/signull.c: Use sigsetjmp/siglongjmp instead of
	setjmp/longjmp.  Use sigaction instead of signal.

2004-05-19  J. Brobecker  <brobecker@gnat.com>
            Michael Snyder  <msnyder@redhat.com>

	* gdb.threads/pthread_cond_wait.c: New file.
	* gdb.threads/pthread_cond_wait.exp: New testcase.

2004-05-13  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/signull.exp, gdb.base/signull.c: New files.
	* gdb.base/gdb1476.c, gdb.base/gdb1476.exp: Delete files.

2004-05-11  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/sigstep.exp (advancei): Update KFAILs.  gdb/1613 is
	fixed but revealed gdb/1639.

2004-05-10  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/signals.exp (signal_tests_1): Simplify "continue to
	func1" and "next to 2nd alarm", kernel bug avoided.

2004-05-10  Daniel Jacobowitz  <dan@debian.org>

	PR external/1568
	* gdb.base/bigcore.exp: Check the size of the dumped core file.
	XFAIL if it is smaller than bytes_allocated.
	* gdb.base/bigcore.c (bytes_allocated): Make static and unsigned.
	(main): Make chunks_allocated unsigned.  Correct comment.

2004-05-07  Joel Brobecker  <brobecker@gnat.com>

	* gdb.arch/powerpc-aix-prologue.c: New file.
	* gdb.arch/powerpc-aix-prologue.exp: New file.

2004-05-07  Jim Blandy  <jimb@redhat.com>

	* gdb.base/lineinc.exp, gdb.base/lineinc1.h, gdb.base/lineinc2.h,
	gdb.base/lineinc3.h, gdb.base/lineinc.c: New tests.

2004-05-06  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/sep.exp: No longer setup_kfail when the program was
	built with dwarf2.

2004-05-05  Jim Ingham  <jingham@apple.com>

	* gdb.base/pending.exp: Make sure pending breakpoints
	preserve the ignore count.

2004-04-27  Jerome Guitton  <guitton@gnat.com>

	* i386-prologue.exp: Add testcase for jump instruction as first
	instruction of the real code.
	* i386-prologue.c (jump_at_beginning): New function.

2004-04-28  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/call-sc.exp: Remove patterns to KFAIL PR gdb/1624 on
	x86_64-*-*.

2004-04-28  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/call-sc.exp: Remove patterns to KFAIL PR gdb/1623 on
	i*86-*-*.

2004-04-25  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/call-sc.exp (start_scalars_test): Fix regular
	expression that checks the return type.

2004-04-23  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/call-sc.exp: New test of scalar call/return values.
	* gdb.base/call-sc.c: Ditto.

2004-04-23  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	* gdb.threads/manythreads.c: Reduce thread stack size.

2004-04-23  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.threads/manythreads.c: Add copyright notice.

2004-04-23  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/siginfo.exp: Better handle step out of signal.
	* gdb.base/sigstep.exp: Ditto.

2004-04-22  Jeff Johnston  <jjohnstn@redhat.com>
            Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/manythreads.c: New testcase.
	* gdb.threads/manythreads.exp: Ditto.

2004-04-22  Jim Blandy  <jimb@redhat.com>

	* gdb.stabs/exclfwd.exp, gdb.stabs/exclfwd1.c,
	gdb.stabs/exclfwd2.c, gdb.stabs/exclfwd.h: New test.

2004-04-21  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.stabs/weird.exp: Accept full pathname for $binfile.

2004-04-21  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/sigstep.c: New file.
	* gdb.base/sigstep.exp: New file.

2004-04-16  Joel Brobecker  <brobecker@gnat.com>

	* gdb.gdb/observer.exp (test_normal_stop_notifications): Update
	call to observer_notify_normal_stop.

2004-04-15  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/siginfo.c: New file.
	* gdb.base/siginfo.exp: New file.

2004-04-12  J. Brobecker  <brobecker@gnat.com>

	* gdb.base/sep.exp: Fix typo in comment.

2004-04-12  J. Brobecker  <brobecker@gnat.com>

	* gdb.base/sep.c: New file.
	* gdb.base/sep-proc.c: New file.
	* gdb.base/sep.exp: New testcase.

2004-04-09  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/bigcore.exp: Disable on Solaris; no sparse core file
	support.

2004-04-05  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/sigaltstack.c: New file.
	* gdb.base/sigaltstack.exp: New file.

2004-04-04  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/foll-fork.exp: Update the expected output for
	"help set follow-fork-mode", to match a change that was made
	to the help of this variable on 2004-01-13.

2004-04-01  Joel Brobecker  <brobecker@gnat.com>

	* lib/ada.exp: Add copyright notice.
	* bar.ads: Likewise.
	* bar.adb: Likewise.
	* null_record.adb: Likewise.
	* null_record.exp: Likewise.
	* gnat_ada.gpr.in: Likewise. Fix typo in a comment, clarify another.

2004-04-01  Joel Brobecker  <brobecker@gnat.com>

	* configure.in: Generate gdb.ada/Makefile and gdb.ada/gnat_ada.gpr.
	* configure: Regenerate.

2004-04-01  Joel Brobecker  <brobecker@gnat.com>

	* lib/ada.exp (gdb_compile_ada): Emit UNSUPPORTED if we failed
	to build the application. Remove the message printed when in
	verbose mode, redundant with the UNSUPPORTED message above.

2004-03-31  Joel Brobecker  <brobecker@gnat.com>

	* gdb.ada (bar.ads, bar.adb, null_record.adb): New files.
	* gdb.ada (null_record.exp): New testcase.

2004-03-31  Joel Brobecker  <brobecker@gnat.com>

	* Makefile.in (ALL_SUBDIRS) Add gdb.ada.

2004-03-31  Joel Brobecker  <brobecker@gnat.com>

	* gdb.ada: New subdirectory.
	* gdb.ada/Makefile.in: New file.
	* gdb.ada/gnat_ada.gpr.in: New file.

2004-03-31  Joel Brobecker  <brobecker@gnat.com>

	* lib/ada.exp: New file.

2004-03-24  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/gdb1250.exp: Use runto {allow-pending}.
	* lib/gdb.exp (runto, gdb_breakpoint): Support {allow-pending}.

2004-03-22  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/watchpoint.exp (test_stepping): Delete bogus XFAILs
	hiding problems with DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET.
	Problem identified by Ulrich Weigand.

2004-03-17  David Carlton  <carlton@kealia.com>

	* gdb.cp/classes.exp (test_enums): Refer to PR c++/1588 instead of
	PR c++/826.

2004-03-16  Roland McGrath  <roland@redhat.com>

	* gdb.base/auxv.exp: New file.
	* gdb.base/auxv.c: New file, copied verbatim from coremaker2.c.

2004-03-12  David Carlton  <carlton@kealia.com>

	* gdb.cp/pr-1553.exp: New.  Tests for PR c++/1553.
	* gdb.cp/pr-1553.cc: Ditto.
	* gdb.cp/local.exp (ptype NestedInnerLocal): Add comment, third
	pass branch.

2004-03-12  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp: Accept more template types.

2004-03-09  Michael Chastain  <mec.gnu@mindspring.com>

	From Corinna Vinschen with modifications.
	* gdb.cp/classes.cc (enums1): Add a line to extend scope of
	local variable obj_with_enum.
	* gdb.cp/classes.exp (test_enums): Remove TODO note about FAIL
	results with obj_with_enum.

2004-03-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.cc: New file, copied from misc.cc.
	* gdb.cp/classes.exp: Use classes.cc rather than misc.cc.

2004-03-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/misc.cc: Add copyright notice.

2004-03-05  David Carlton  <carlton@kealia.com>

	* gdb.cp/rtti.exp: Add 'print *obj3' test.
	* gdb.cp/rtti.h: Update copyright.
	(namespace n2::n3): New.
	* gdb.cp/rtti1.cc: (refer_to (n2::n3::C3 *)): New.
	(n2::n3::func3): New.
	(main): Call n2::n3::func3.
	* gdb.cp/rtti2.cc: Update copyright.
	(n2::create3): New.

2004-03-04  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/openbsd.inc: Fix typo.

2004-03-03  Fred Fish  <fnf@redhat.com>

	* gdb.base/pc-fp.exp (get_valueofx): Fix apparent typo to now set
	"val" instead of unused "size".  Update copyright year.

2004-02-29  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.cp/ctti.exp: Handle unsigned char type.  Expect templates
	to use unsigned char.
	* gdb.cp/cttiadd.c, gdb.cp/cttiadd1.c, gdb.cp/cttiadd2.c,
	gdb.cp/cttiadd3.c: Change type of variable to unsigned char.

2004-02-29  Daniel Jacobowitz  <drow@mvista.com>

	* config/gdbserver.exp (gdbserver_gdb_load): Wait for a complete
	line of output.

2004-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/relocate.c (dummy): Initialize.

2004-02-28  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/chng-syms.exp: Anchor exit pattern.  Allow
	a breakpoint at exit.

2004-02-27  Fred Fish  <fnf@redhat.com>

	* gdb.base/chng-syms.exp: Add expect condition to match failing
	case that isn't a timeout.

2004-02-27  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/bigcore.exp: Disable on HP/UX, no sparse corefile
	support.

2004-02-26  Fred Fish  <fnf@redhat.com>

	* gdb.arch/gdb1431.c: Remove.
	* gdb.arch/gdb1431.s: New file, copy of gdb1291.s
	* gdb.arch/gdb1431.exp: Use "advance" correctly instead
	of "until" incorrectly.

2004-02-26  J. Brobecker  <brobecker@gnat.com>

	* gdb.cp/class2.cc (empty): New class.
	(refer): New function.
	(main): Declare an object of type empty and use it.
	* gdb.cp/class2.exp: Print the value of an object of type empty.

2004-02-26  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/langs.exp: Update query string to match the
	new nquery format used for pending breakpoints.

2004-02-26  Andrew Cagney  <cagney@redhat.com>

	Fix PR i18n/1570.
	* gdb.base/charset.c: Update copyright notice.
	(main, init_string): Remove the escape character '\e' tests.
	* gdb.base/printcmds.exp (test_print_all_chars): Ditto.
	* gdb.base/charset.exp (valid_host_charset): Ditto.
	* gdb.base/setvar.exp: Ditto.

2004-02-24  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/corefile.exp: Use gdb_test_multiple, make "accessing
	mmapped data in core file" PASS and FAIL messages consistent.

	* gdb.java/jmisc.exp: Use the fully quallified name of "main" when
	setting a breakpoint.  Work around PR java/1565.

2004-02-23  Jeff Johnston  <jjohnstn@redhat.com>

	* lib/gdb.exp (gdb_breakpoint): Update query string to match
	new nquery format.
	* gdb.base/pending.exp: Ditto.

2004-02-22  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Run stabs tests on *BSD.
	* configure: Regenerated.

2004-02-21  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/bigcore.exp: Bail out on *BSD instead of only NetBSD.

2004-02-20  Fred Fish  <fnf@redhat.com>

	* gdb.base/callfuncs.exp (do_function_calls): Remove extraneous
	blank in test for "returns short", for consistency with other
	"returns xxx" tests.  Update copyright year.

2004-02-19  Fred Fish  <fnf@redhat.com>

	New testcase for PR breakpoint/1558.
	* gdb.arch/gdb1558.exp: New file.
	* gdb.arch/gdb1558.c: New file.

2004-02-19  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/nodebug.exp: Fix typo.

2004-02-17  Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	Committed by Jim Blandy  <jimb@redhat.com>.

	* gdb.objc/basicclass.exp: Adapt to fixed return type of printHi.

	* gdb.base/dump.exp: Handle negative offsets in decimal, not hex.

	* gdb.base/float.exp: Support s390*-*-* targets.

2004-02-17  Adam Fedor  <fedor@gnu.org>

	* gdb.base/gdb1555.exp: New file.
	* gdb.base/gdb1555-main.c, gdb.base/gdb1555.c: New files.

2004-02-17  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/selftest.exp (do_steps_and_nexts): Add comment.

2004-02-16  Fred Fish  <fnf@redhat.com>

	* gdb.arch/gdb1291.c: Remove
	* gdb.arch/gdb1291.s: New test input file.
	* gdb.arch/gdb1291.exp: Expand test to check case that should not
	fail.  Test for correct result, known incorrect result, other
	failures and timeouts.

2004-02-16  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/bigcore.exp: New file.
	* gdb.base/bigcore.c: New file.

2004-02-13  Andrew Cagney  <cagney@redhat.com>

	* gdb.mi/mi1-basics.exp, gdb.mi/mi1-break.exp: Delete file.
	* gdb.mi/mi1-console.exp, gdb.mi/mi1-disassemble.exp: Delete file.
	* gdb.mi/mi1-eval.exp, gdb.mi/mi1-hack-cli.exp: Delete file.
	* gdb.mi/mi1-pthreads.exp, gdb.mi/mi1-read-memory.exp: Delete file.
	* gdb.mi/mi1-regs.exp, gdb.mi/mi1-return.exp: Delete file.
	* gdb.mi/mi1-simplerun.exp, gdb.mi/mi1-stack.exp: Delete file.
	* gdb.mi/mi1-stepi.exp, gdb.mi/mi1-symbol.exp: Delete file.
	* gdb.mi/mi1-until.exp, gdb.mi/mi1-var-block.exp: Delete file.
	* gdb.mi/mi1-var-child.exp, gdb.mi/mi1-var-cmd.exp: Delete file.
	* gdb.mi/mi1-var-display.exp, gdb.mi/mi1-watch.exp: Delete file.

2004-02-11  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.asm/ia64.inc (gdbasm_startup): Make sure first instruction
	executed is an alloc instruction.

2004-02-11  David Carlton  <carlton@kealia.com>

	* gdb.cp/breakpoint.exp: New.
	* gdb.cp/breakpoint.cc: New.

2004-02-11  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR gdb/1543.
	* gdb.cp/ambiguous.exp, gdb.cp/annota2.exp, gdb.cp/annota3.exp,
	gdb.cp/anon-union.exp, gdb.cp/casts.exp, gdb.cp/classes.exp,
	gdb.cp/cplusfuncs.exp, gdb.cp/ctti.exp, gdb.exp/demangle.exp,
	gdb.cp/derivation.exp, gdb.cp/exception.exp, gdb.cp/hang.exp,
	gdb.cp/inherit.exp, gdb.cp/local.exp, gdb.cp/maint.exp,
	gdb.cp/member-ptr.exp, gdb.cp/method.exp, gdb.cp/misc.exp,
	gdb.cp/namespace.exp, gdb.cp/overload.exp, gdb.cp/ovldbreak.exp,
	gdb.cp/psmang.exp, gdb.cp/ref-types.exp, gdb.cp/templates.exp,
	gdb.cp/userdef.exp, gdb.cp/virtfunc.exp: Remove reference
	to bug-gdb@prep.ai.mit.edu .
	* gdb.cp/bs15503.cc, gdb.cp/class2.cc, gdb.cp/cttiadd.cc,
	gdb.cp/cttiadd1.cc, gdb.cp/cttiadd2.cc, gdb.cp/cttiadd3.cc,
	gdb.cp/exception.cc, gdb.cp/member-ptr.cc, gdb.cp/namespace1.cc:
	Likewise.

2004-02-10  Andrew Cagney  <cagney@redhat.com>

	* lib/gdb.exp (gdb_expect_list): Recover from internal-errors
	using gdb_internal_error_resync.

2004-02-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/thread-specific.exp: Stop early if no threads are
	found.

2004-02-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/pending.exp: Remove extra \n from gdb_test calls.

2004-02-08  Daniel Jacobowitz  <drow@mvista.com>

	* lib/gdb.exp (gdb_breakpoint): Fail on unexpected pending
	breakpoints.

2004-02-07  Daniel Jacobowitz  <drow@mvista.com>

	* config/sim.exp (gdb_load): Handle $arg == "".
	* lib/gdb.exp (gdb_run_cmd): Honor gdb,do_reload_on_run.
	* gdb.objc/basicclass.exp: Use gdb_run_cmd.

2004-02-07  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/maint.exp: Update test to reflect
         obstack changes.

2004-02-04  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/pendshr.c (pendfunc): New function that calls
	pendfunc1.
	* gdb.base/pending.c: Call pendfunc instead of pendfunc1.

2004-02-04  Fred Fish  <fnf@redhat.com>

	* gdb.arch/gdb1431.c: Add underbar prefixed version of global
	function symbols and update copyright years.
	* gdb.arch/gdb1291.c: Ditto.

2004-02-03  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.exp: Accept both "ctor()" and "ctor(void)".

2004-02-03  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/inherit.exp: Accept both "ctor()" and "ctor(void)".

2004-02-03  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/inherit.exp: Accept output with gcc 3.2-7-rh.

2004-02-02  Fred Fish  <fnf@redhat.com>

	* gdb.base/bang.exp: Use gdb_run_cmd so this tests works with
	remote targets.  Update copyright years.

2004-02-02  Jeff Johnston  <jjohnstn@redhat.com>

	* lib/gdb.exp (gdb_breakpoint): Add pending breakpoint
	support.
	* gdb.base/langs.exp: Fix test which attempts to create
	breakpoint on non-existent function to handle new pending
	support.
	* gdb.base/shlib-call.exp: Use gdb_breakpoint to set
	a breakpoint.
	* gdb.base/pending.exp: New test.
	* gdb.base/pending.c: New file.
	* gdb.base/pendshr.c: Ditto.

2004-02-02  David Carlton  <carlton@kealia.com>

	* gdb.cp/overload.exp: Add overloadNamespace tests.
	* gdb.cp/overload.cc (dummyClass, dummyInstance): New.
	(overloadNamespace, XXX): New.
	(main): Call XXX::marker2.

2004-02-01  Fred Fish  <fnf@redhat.com>

	* gdb.base/dump.exp: Use runto_main instead of "runto main".
	* gdb.base/finish.exp: Ditto.
	* gdb.base/gcore.exp: Ditto.
	* gdb.base/huge.exp: Ditto.
	* gdb.base/info-proc.exp: Ditto.
	* gdb.base/return2.exp: Ditto.
	* gdb.threads/gcore-thread.exp: Ditto.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/thread-specific.exp: Add missing anchor to regexp.

2004-02-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/fileio.c (test_open): Replace O_RDONLY with O_RDWR such
	that opening the file succeeds on OpenBSD.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/thread-specific.c: New file.
	* gdb.threads/threads-specific.exp: New test script.
	* lib/gdb.exp (gdb_test_multiple): Allow user patterns access
	to expect_out.

2004-02-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/call-ar-st.exp: Call get_debug_format.  Remove xfail on
	sparc*-*-solaris* into a kfail PR gdb/1539 on sparc-*-* for stabs
	only on the "print_small_structs from print_long_arg_list" test.

2004-02-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/completion.exp: Kill a stray backslash.

	From Jim Ingham <jingham@apple.com>:
	* gdb.base/completion.exp: Test that "complete file ./gdb.base/compl"
	agrees with the result from sending a tab.

2004-01-31  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/chng-syms.exp: Remove stray newline.

2004-01-31  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Set asm-note to "openbsd" for
	*-*-openbsd*.
	* gdb.asm/openbsd.inc: New file.

2004-01-30  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Strip -Wl, from link-flags.  Don't
	append -static to link-flags for *-*-freebsd*, *-*netbsd* and
	*-*solaris2*.  Remove commented out default settings for
	asm-flags.  Replace gdb_compile with target_link.

2004-01-29  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/inherit.exp: Rewrite.  Use gdb_test_multiple and gdb
	for all tests.  Remove old hp-ux and cygnus xfail cases.

2004-01-29  Paul N. Hilfinger  <Hilfinger@gnat.com>

	* gdb.base/chng-syms.exp: New file.
	* gdb.base/chng-syms.c: New file.

2004-01-24  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/local.exp: Rewrite "ptype Local".  Add "ptype l".
	Provide arms for current output in all my configurations.

2004-01-24  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/compiler.c: Add hp_cc_compiler and hp_aCC_compiler.
	* lib/compiler.cc: Likewise.
	* lib/gdb.exp (get_compiler_info): Always call gdb_compile to
	get the right preprocessor.  Eval the output directly.  Remove
	special tests for hp_cc_compiler and hp_aCC_compiler.  Remove
	hp_f77_compiler and hp_f90_compiler completely.
	(gdb_preprocess): Delete.
	(get_compiler): Delete.

2004-01-24  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/charset.c, gdb.base/dump.c, gdb.base/huge.c: Include
	<string.h>.

2004-01-24  Nick Roberts  <nick@nick.uklinux.net>

	* gdb.mi/mi-stack.exp: Update copyright.

2004-01-23  David Carlton  <carlton@kealia.com>

	* gdb.cp/rtti.exp: Don't include full path in ${srcfile}.  Add
	test for cp_lookup_transparent_type.
	* gdb.cp/rtti1.cc: Update copyright.  Add n2::func and refer_to;
	call them.

2004-01-23  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.mi/mi-var-child.exp: Update copyright year.  Move new test
	after -var-update.

2004-01-23  David Carlton  <carlton@kealia.com>

	* gdb.cp/namespace.cc (C::ensureRefs): New.
	* gdb.cp/namespace1.cc (C::ensureOtherRefs): New.

2004-01-20  Nick Roberts  <nick@nick.uklinux.net>

	* gdb.mi/mi-stack.exp (test_stack_locals_listing): Test for
	case "-stack-list-locals 2".
	* gdb.mi/mi-var-child.exp: Test for case
	"-var-list-children --all-values NAME".

2004-01-18  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/local.exp: Accept correct output for gcc v3 -gstabs+.

2004-01-18  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/fileio.exp: Add "$gdb_prompt $" anchors to patterns
	used with gdb_test_multiple.

	* gdb.base/gdb1476.exp: Accept alternat pattern for failed memory
	read at address 0.  This fixes PR testsuite/1504.

2004-01-18  Daniel Jacobowitz  <drow@mvista.com>

	* config/gdbserver.exp (gdbserver_gdb_load): Rename from gdb_load.
	Remove downloading, guessing the host executable, the calls to
	gdb_file_cmd and gdb_target_cmd, and "load" support.
	(infer_host_exec): New function broken out from gdb_load.
	(gdb_load): New wrapper for gdbserver_gdb_load.
	* lib/mi-support.exp (mi_gdb_target_cmd): New function, based on
	gdb_target_cmd.  Use -target-select.
	(mi_gdb_file_cmd): New function, broken out from mi_gdb_load.
	Download binaries to the host.  Clear last_mi_remote_file when
	we load a new binary.
	(mi_gdb_load): Call mi_gdb_file_cmd.  If gdbserver.exp is loaded,
	call gdbserver_gdb_load and mi_gdb_target_cmd.

2004-01-17  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp: Accept more spaces with "<foo, ?bar>"
	type patterns.

2004-01-17  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp: Fix typo in test name of
	"print Foo<volatile char*>::foo".

2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/setvar.exp: Remove setup_xfail for hppa*-*-*11*.

2004-01-16  Ben Elliston  <bje@wasabisystems.com>

	* gdb.arch/Makefile.in (MISCELLANEOUS): Remove.
	(clean mostlyclean): Remove empty rm.

2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/setvar.exp: Add copyright years.

2004-01-14  David Carlton  <carlton@bactrian.org>

	* gdb.cp/rtti.exp: Update copyright.  KFAIL test with repect to
	PR c++/1511 and update coment.
	* gdb.cp/templates.exp: Update patterns to match current output.
	If changes involve something other than whitespace, KFAIL
	w.r.t. PR c++/1512 or PR c++/931 as appropriate.

2004-01-14  David Carlton  <carlton@kealia.com>

	* gdb.cp/namespace.exp: Add tests involving classes defined within
	namespaces.
	* gdb.cp/namespace.cc (C::CClass): New.
	* gdb.cp/namespace1.cc (C::OtherFileClass): New.

2004-01-14  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/sepdebug.exp: Bail out of the test if we don't know
	what debug info we have. Print a better message if something goes
	wrong while producing the separate debug info file.

2004-01-14  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/callfuncs.c: Remove explicit declaration of malloc.

2004-01-14  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/callfuncs.c: Add copyright notice.

2004-01-13  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/derivation.exp: Add XFAIL for bug with protected
	inheritance.  PR gdb/1498, PR gcc/13539.

2004-01-13  Elena Zannoni  <ezannoni@redhat.com>

         * gdb.threads/gcore-thread.exp: Prefix name of binary with
         test specific name.
         * gdb.mi/gdb669.exp: Ditto.
         * gdb.mi/mi-pthreads.exp: Ditto.
         * gdb.mi/mi1-pthreads.exp: Ditto.
         * gdb.mi/mi2-pthreads.exp: Ditto.

2004-01-12  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/member-ptr.cc: Add copyright notice.

2004-01-12  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/member-ptr.exp: Use gdb_test, gdb_test_multiple.  Add
	some patterns for recent versions of gcc and hpacc.  Delete
	calls to setup_xfail for hppa*-*-*.  Delete redundant tests.
	Delete tests that access a NULL pointer-to-member-data.  This
	script is still disabled for gcc.

2004-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.mi/mi2-basics.exp: Make sure that full pathnames are
        escaped correctly.

2004-01-12  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/sepdebug.exp: New file.
	* gdb.base/sepdebug.c: New file.
	* lib/gdb.exp (separate_debug_filename): New procedure.
	(gdb_gnu_strip_debug): New procedure.

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* gdb.mi/ChangeLog: Delete file.  Renamed to ...
	* gdb.mi/ChangeLog-1999-2003: New file.

2004-01-12  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/fileio.exp: Update copyright year.  On GNU/Linux, for
	"Renaming a directory to a non-empty directory returns ENOTEMPTY
	or EEXIST", treat EBUSY as an XFAIL.

2004-01-11  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/scope.exp: Remove obsolete setup_xfail for
	hp_cc_compiler.

2004-01-10  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Remove old "(obsolescent gcc or gdb)"
	decorations.

2004-01-10  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.exp: Remove old "(obsolescent gcc or gdb)"
	and "(aCC)" decorations.  Remove obsolete doco about old
	test results.

2004-01-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/exception.exp: Fix typo in doco.

2004-01-09  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/gdb1476.exp: Fix typo.

2004-01-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.hp/gdb.aCC/exception.exp: Re-create as a nearly empty
	file.

2004-01-09  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/exception.cc: Change <iostream.h> to <iostream>.
	* gdb.cp/exception.exp: Use gdb test, gdb_test_multiple.
	Use gdb_compile.  Remove restriction on gcc.  Add some patterns
	for recent version of gdb.  Delete second half, which was a copy
	of the first half with different build flags.  This test is
	still disabled because it is still not ready for production.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/exception.cc: Add copyright notice.
	* gdb.cp/exception.exp: Add a notice that this file is broken
	because of line number changes caused by addition of copyright
	notice.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc.
	* gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Accept gnu abi 2.
	* gdb.cp/derivation.exp: Likewise.
	* gdb.cp/overload.exp: Likewise.
	* gdb.cp/virtfunc.exp: Likewise.

2004-01-08  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.mi/pthreads.c (done_making_threads): Remove extraneous
	semicolon after end of function.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/bs15503.cc: Include <iostream>, not <iostream.h>.
	* gdb.cp/bs15503.exp: Remove hp-only restriction.  Use modern
	boilerplate code for compiling and running the program under
	test.  Add some string method tests.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/bs15503.cc: Add copyright notice.
	* gdb.cp/bs15503.exp: Adjust line number.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.hp/gdb.defects/bs15503.exp: Renamed to gdb.cp/bs15503.exp.
	* gdb.hp/gdb.defects/bs15503.cc: Renamed to gdb.cp/bs15503.cc.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/funcargs.exp: Remove obsolete setup_xfail for
	hp_cc_compiler.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/cttiadd.c: Add a marker for gdb_get_line_number.
	* gdb.cp/ctti.exp: Use the marker instead of "next".
	With gcc, run further before bailing.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/cttiadd.cc: Add copyright notice.
	* gdb.cp/cttiadd1.cc: Likewise.
	* gdb.cp/cttiadd2.cc: Likewise.
	* gdb.cp/cttiadd3.cc: Likewise.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/ctti.exp: Partial rewrite.  Call gdb_compile properly.
	Use gdb_test, gdb_test_multiple.  Use floating-point values that
	have exact representations in IEEE-ish formats.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/constvars.exp: Do not force lang=c++ if using HP
	compilers.  Delete duplicate call to get_compiler_info.
	(local_compiler_xfail_check): setup_xfail if $hp_cc_compiler.
	* gdb.base/volatile.exp: Likewise.

2004-01-07  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/gdb1476.exp: Only run the tests if we can't read the
	memory at address 0.

2004-01-07  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.stabs/weird.exp: Use hp_cc_compiler and hp_aCC_compiler
	to test for hp-ux assembler.  Fix copyright years.

2004-01-07  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/fileio.c (strerrno): Add "EBUSY".

2004-01-07  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/fileio.c (test_open): Do not pass S_IWUSR to "open"
	when creating the read-only file.  From analysis by Roland McGrath
	and Elena Zannoni.

2004-01-06  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/namespace.exp: Call get_compiler_info with "c++".

2004-01-06  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/cvexpr.c: Be type-safe with function pointers and
	data pointers.

2004-01-06  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/m-static.exp: Compile one source file at a time.
	Delete unused call to get_compiler_info.

2004-01-06  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/call-ar-st.exp: Delete explicit reference to ${binfile}.ci.
	* gdb.base/call-rt-st.exp: Likewise.
	* gdb.base/nodebug.exp: Likewise.
	* gdb.base/volatile.exp: Likewise.
	* gdb.cp/ref-types.exp: Likewise.
	* gdb.cp/templates.exp: Likewise.

2004-01-05  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/gdb1476.exp, gdb.base/gdb1476.c: New files.

2004-01-05  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/funcargs.exp: Delete special timeout of 240 seconds for
	hppa*-hp-hpux*.

2004-01-04  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for
	x86_64-*-*.

	* gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for
	sparc64-*-* and sparc*-solaris2*.

2004-01-04  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/structs.exp: Remove ${testfile} from "zed L<n> for
	return ${tests}" test.  The ${tests} already mentions the
	filename.

2004-01-02  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/local.exp: Accept gcc abi 2.

2004-01-02  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp: Accept gcc abi 2.

2004-01-02  Michael Chastain  <mec.gnu@mindspring.com>

	* lib/compiler.cc: Remove supports_template_debugging.
	* gdb.cp/templates.exp: Do not test supports_template_debugging.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/namespace.exp: Accept gcc abi 2.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/method.exp: Accept gcc abi 2.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Generate identical results as old version.
	* gdb.cp/derivation.exp: Likewise.
	* gdb.cp/overload.exp: Likewise.
	* gdb.cp/virtfunc.exp: Likewise.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.exp: Modify some patterns to avoid a
	mysterious bug with sourceware version of expect.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/overload.exp: Rewrite.  Clean up patterns to match
	current versions of gcc, including gcc abi 2.  Remove gratuitous
	restart of test program.  Use gdb_test_multiple and gdb_test for
	all tests.  Add patterns to xfail missing "const" in "const char *"
	and kfail PR gdb/1155.

2004-01-01  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/derivation.exp: Rewrite.  Clean up patterns to match
	current versions of gcc, including gcc abi 2.  Remove gratuitous
	restart of test program.  Use gdb_test_multiple and gdb_test for
	all tests.  Add patterns to kfail PR gdb/1498.

2003-12-31  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/virtfunc.exp: Rewrite.  Clean up patterns to match
	current versions of gcc, including gcc abi 2.  Use "breakpoint"
	and "continue" instead of restarting the target program.  Use
	gdb_test_multiple and gdb_test for all tests.

2004-01-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Update copyright year.  Link statically
	for *-*-solaris2*.

2003-12-31  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/classes.exp: Rewrite.  Clean up patterns to match
	current versions of gcc, including gcc abi 2.  Use "breakpoint"
	and "continue" instead of restarting the target program several
	times.  Use gdb_test_multiple and gdb_test for all tests.

2003-12-18  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/sect-cmd.exp: Handle compiling test case from multiple
	source files.

2003-12-16  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/environ.exp: Handle compiling test case from multiple
	source files.

2003-12-16  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/structs.exp: Call gdb_exit as well as gdb_start.

2003-12-17  Jim Blandy  <jimb@redhat.com>

	* gdb.base/freebpcmd.c: Add copyright notice.

	* gdb.base/freebpcmd.exp: Mark the interesting failure as known.

2003-12-16  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/maint.exp: Add generic FAIL patterns to prevent timeouts.

2003-12-13  Jim Blandy  <jimb@redhat.com>

	* gdb.base/freebpcmd.exp, gdb.base/freebpcmd.c: New test.

2003-12-12  Kevin Buettner  <kevinb@redhat.com>

	* gdb.asm/frv.inc: New file.
	* gdb.asm/asm-source.exp: Add frv-*-* as a supported target.

2003-12-09  Fred Fish  <fnf@redhat.com>

	* gdb.base/break.c (marker1, marker2, marker3, marker4): Move
	functions to break1.c and leave prototypes behind.  Add more
	"set breakpoint NN here" comments.
	* gdb.base/break1.c: New file.

	* gdb.base/break.exp: Handle compiling test case from multiple
	source files and change source file references as needed.
	* gdb.base/completion.exp: Ditto.
	* gdb.base/condbreak.exp: Ditto.
	* gdb.base/define.exp: Ditto.
	* gdb.base/ena-dis-br.exp: Ditto.
	* gdb.base/info-proc.exp: Ditto.
	* gdb.base/maint.exp: Ditto.
	* gdb.base/until.exp: Ditto.

	* gdb.base/condbreak.exp: Use bp_locationNN variables instead of
	hardcoded line numbers.
	* gdb.base/define.exp: Ditto.
	* gdb.base/ena-dis-br.exp: Ditto.
	* gdb.base/maint.exp: Ditto.
	* gdb.base/until.exp: Ditto.

	* gdb.base/completion.exp: Use "break1" for completion tests since
	"break" is no longer a unique prefix.

2003-12-06  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/structs.exp (test_struct_returns): When applicable, set
	"return_value_unimplemented".  When an unimplemented struct return
	architecture, report incorrect values as a KFAIL

2003-12-05  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/rtti.exp: Accept new wording of warning from
	cp_lookup_rtti_type.

2003-12-05  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/scope.exp (test_at_main): Replace references to
	gcc_compiled with calls to test_compiler_info.
	(test_at_foo): Likewise.
	(test_at_bar): Likewise.

2003-12-04  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/so-impl-ld.exp: Replace reference to gcc_compiled with call
	to test_compiler_info.

2003-12-03  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.base/so-impl-ld.exp: Update copyright notice.

2003-12-02  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/mips_pro.exp: Replace references to gcc_compiled with calls
	to test_compiler_info.

2003-11-28  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.objc/objcdecode.exp: Match and KFAIL the output that comes
	from current versions of gdb.  Clean up regular expressions.
	Delete redundant timeout case.

2003-11-28  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.objc/nondebug.exp: Match and KFAIL the output that comes
	from current versions of gdb.  Clean up regular expressions.
	Delete redundant timeout case.

2003-12-01  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/callfuncs.exp (do_function_calls): Replace reference to
	gcc_compiled with call to test_compiler_info.

2003-11-30  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/list.exp (test_list_function): Delete unused declaration
	of gcc_compiled.

2003-11-29  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/complex.exp: Replace reference to gcc_compiled with
	call to test_compiler_info.

2003-11-29  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Initialize asm-note to "empty".  Set
	asm-note to "netbsd" for *-*-netbsdelf* and x86_64-*-netbsd*.  Use
	it to create the appropriate note.inc.
	* gdb.asm/asmsrc1.s: Include "note.inc".
	* gdb.asm/netbsd.inc: New file.
	* gdb.asm/empty.inc: New file.

2003-11-28  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/constvars.exp: Replace references to gcc_compiled with
	calls to test_compiler_info.

2003-11-27  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.base/volatile.exp: Replace references to gcc_compiled with
	calls to test_compiler_info.

2003-11-27  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/structs.exp: Use i*86-*-* instead of i686-*-* as a
	pattern for the KFAILs.

2003-11-25  Adam Fedor  <fedor@gnu.org>

	* gdb.objc/objcdecode.exp: Test for PR objc/1238.
	* gdb.objc/objcdecode.m: New file.

2003-11-25  Adam Fedor  <fedor@gnu.org>

	* gdb.objc/nondebug.exp: Test for PR objc/1236.
	* gdb.objc/nondebug.m: New file.

2003-11-26  Ben Elliston  <bje@wasabisystems.com>

	* gdb.asm/asm-source.exp: Make sure the final link succeeds on
	NetBSD as it does on FreeBSD.  Modelled on a similar change by
	Mark Kettenis on 2003-05-30.
	(link-flags): Set to "--entry _start" regardless of target.
	Special linker flags are to be appended to $link-flags.
	* gdb.asm/mips.inc (gdbasm_startup): Remove __start label.

2003-11-25  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/method.exp: Accept output of new demangler.

2003-11-25  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb/class2.exp: New file.
	* gdb/class2.cc: New file.

2003-11-25  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.cp/templates.exp (test_ptype_of_templates): Accept output
	of new demangler.

2003-11-23  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-unwind.exp: Use gdb_run_cmd and gdb_expect instead
	of gdb_test "run".

2003-11-23  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-unwind.exp: Don't use runto_main.  Change
	"continue" into "run".

2003-11-23  Michael Chastain  <mec.gnu@mindspring.com>

	Partial fix for PR testsuite/1456.
	* gdb.cp/ambiguous.exp: Replace reference to gcc_compiled with
	call to test_compiler_info.
	* gdb.cp/ctti.exp: Likewise.
	* gdb.cp/derivation.exp: Likewise.
	* gdb.cp/member-ptr.exp: Likewise.
	* gdb.cp/virtfunc.exp (test_virtual_calls): Remove unused
	reference to gcc_compiled.

2003-11-23  Michael Chastain  <mec.gnu@mindspring.com>

	Fix PR testsuite/1463.
	* gdb.base/structs.exp (start_structs_test): Call
	get_debug_format before using the debug format.

2003-11-22  Andrew Cagney  <cagney@redhat.com>

	* lib/gdb.exp (gdb_test_multiple): Add simple example.
	* gdb.base/structs.exp: Use gdb_test_multiple.

2003-11-20  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/structs.exp: Handle and recover from internal errors.
	Replace "foo${n}" with "foo<n>" in test messages.

	* gdb.base/structs.exp: Update copyright.  Rewrite.
	* gdb.base/structs.c: Update copyright.  Rewrite.

	* lib/gdb.exp (gdb_internal_error_resync): Issue a perror when the
	resync count exceeded.

	* gdb.base/maint.exp: Use gdb_internal_error_resync to recover
	from the internal error.
	* lib/gdb.exp (gdb_internal_error_resync): New procedure.
	Original from Jim Blandy.
	(gdb_test_multiple): Use gdb_internal_error_resync.

2003-11-19  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/callfuncs.exp: Change the XFAILed descriptor test to a
	KFAIL.

2003-11-17  Mark Kettenis  <kettenis@gnu.org>

	New testcase for PR backtrace/1435.
	* gdb.arch/i386-unwind.exp: New file.
	* gdb.arch/i386-unwind.c: New file.

2003-11-17  Andrew Cagney  <cagney@redhat.com>

	* lib/gdb.exp (compiler_info): New global.
	(test_compiler_info): New function.
	(get_compiler_info): Set compiler_info.
	* lib/compiler.c, lib/compiler.cc: Add copyright.  When GNUC, set
	"compiler_info" to gcc-<major>-<minor>.

2003-11-15  Michael Chastain  <mec.gnu@mindspring.com>

	* gdb.trace/configure: Remove.

2003-11-13  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/break.c: Add comments to aid finding line numbers for
	breakpoints.
	* gdb.base/break.exp: Remove all references to explicit line
	numbers.

2003-11-11  Nick Clifton  <nickc@redhat.com>

	* gdb.base/shreloc.exp: Do not run for targets which do not
	support shared objects.

2003-11-10  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/fileio.exp: Drop tests for nointerrupts and noinferiorio.
	Don't run tests if nofileio flag is given.

2003-11-07  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.cp/annota3.exp: Make sure we can match 'Hardware watchpoint'
        as well as 'Watchpoint'.

2003-11-06  Elena Zannoni  <ezannoni@redhat.com>

	Reported by Jim Ingham <jingham@apple.com>:
	* gdb.base/annota1.exp: Match at least one occurrence of the
	signal handler annotation.

2003-11-06  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.cp/annota2.exp: Make sure we can match 'Hardware watchpoint'
        as well as 'Watchpoint'.

2003-11-05  Michael Chastain  <mec@shout.net>

	* gdb.mi/pthreads.c (routine): Handle early return from sleep.

2003-11-03  Kris Warkentin  <kewarken@qnx.com>

	* gdb.arch/gdb1291.c: New test file.
	* gdb.arch/gdb1291.exp: New test script.
	* gdb.arch/gdb1431.c: New test file.
	* gdb.arch/gdb1431.exp: New test script.

2003-10-22  Michael Chastain  <mec@shout.net>

	* gdb.mi/pthreads.c: Add copyright notice.

2003-10-22  Michael Chastain  <mec@shout.net>

	* gdb.threads/pthreads.c: Add copyright notice.

2003-10-20  Michael Chastain  <mec@shout.net>

	* gdb.base/gdb1056.exp: New test script.

2003-10-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/killed.exp: Use gdb_run_cmd.

2003-10-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/gcore.exp: Issue an UNSUPPORTED and exit if we can't
	create a core file.
	* gdb.threads/gcore-thread.exp: Likewise.

2003-10-13  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/call-rt-st.c (struct bit_flags_char_t): New bitfield
	type, based on char type.
	(struct bit_flags_short_t): New bitfield type, based on short type.
	(init_bit_flags_char): New fuction.
	(init_bit_flags_short): Ditto.
	(print_bit_flags_char): Ditto.
	(print_bit_flags_short): Ditto.
	(main): Add handling for bit_flags_char_t and bit_flags_short_t.

2003-10-11  Michael Chastain  <mec@shout.net>

	* gdb.base/call-rt-st.exp: Update copyright year.

2003-10-10  Kei Sakamoto  <sakamoto.kei@renesas.com>

	* config/hmsirom.exp: Replace "Hitachi" with "Renesas".
	* gdb.disasm/sh3.s: Ditto.

2003-10-07  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/switch-threads.exp: New test.
	* gdb.threads/switch-threads.c: New source file.

2003-10-07  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.exp: Add sh specific case.

2003-10-06  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/watchpoint.exp: Delete obsolete clear_xfail.
	* gdb.disasm/mn10200.exp: Delete obsolete file.

2003-09-29  Daniel Jacobowitz  <drow@mvista.com>

	* ChangeLog: Correct an entry command.exp -> commands.exp.
	* gdb.base/commands.exp (bp_deleted_in_command_test)
	(temporary_breakpoint_commands): Check noargs.

2003-09-25  David Carlton  <carlton@kealia.com>

	* gdb.cp/namespace.exp: Tweak comments.  Add non-quoted versions
	of some print tests, where appropriate.  Add tests for C::D::cd,
	E::ce, F::cXfX, G::XgX.
	* gdb.cp/namespace.cc: Add XgX, cXfX, ce.

2003-09-25  Richard Earnshaw  <rearnsha@arm.com>

	* lib/java.exp (java_init): Import target_alias before using it.

2003-09-25  David Carlton  <carlton@kealia.com>

	* gdb.base/corefile.exp: Delete obsolete setup_xfail.

2003-09-23  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/selftest.exp: Accomodate more instruction reordering
        weirdness.

2003-09-17  Michael Chastain  <mec@shout.net>

	* gdb.cp/gdb1355.exp: New file.
	* gdb.cp/gdb1355.c: New file.

2003-09-15  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Add sh*-*-* as supported target.
	* gdb.asm/sh.inc: New file.

2003-09-11  David Carlton  <carlton@kealia.com>

	* gdb.cp/namespace.exp: Add tests for namespace types.
	* gdb.cp/maint.exp (test_help): Test 'help maint cp namespace'.
	(test_namespace): New.

2003-09-11  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/relocate.exp: Handle new gdb output at startup.
	* gdb.stabs/weird.exp: Ditto.

2003-09-08  Michael Chastain  <mec@shout.net>

	* gdb.base/gdb1250.c: Rename 'gamma' to 'my_gamma'.

2003-09-07  Michael Chastain  <mec@shout.net>

	* gdb.cp/classes.exp: Accommodate both 'syntax error' and
	'parse error'.

2003-09-07  Mark Kettenis  <m.kettenis@osp.nl>

	* gdb.arch/i386-prologue.exp: Add checks for saved registers.

2003-08-30  Michael Chastain  <mec@shout.net>

	* gdb.base/selftest.exp: Remove support for m68k*-*-hpux.
	* gdb.gdb/observer.exp: Ditto.
	* gdb.gdb/xfullpath.exp: Ditto.

2003-08-29  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/interrupt.exp: XFAIL "call function when asleep" for
	*-*-*bsd*.

2003-08-28  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/dump.exp: Skip for ia64.

2003-08-25  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.asm/asm-source.exp: Add ia64 support.
	* gdb.asm/ia64.inc: New file.

2003-08-22  Michael Chastain  <mec@shout.net>

	* gdb.cp: New directory.
	* gdb.cp/*: Copy from gdb.c++/*.
	* gdb.c++/*: Remove.
	* Makefile.in: Change gdb.c++ to gdb.cp.
	* configure.in:  Ditto.
	* configure: Regnerate.

2003-08-18  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp: Add testcase for PR backtrace/1338.
	* gdb.arch/i386-prologue.c (gdb1338): Add function.

2003-08-17  Daniel Jacobowitz  <drow@mvista.com>

	* mi-var-display.exp (-var-list-children weird): Accept function
	pointers with argument types.
	* mi1-var-display.exp (-var-list-children weird): Likewise.
	* mi2-var-display.exp (-var-list-children weird): Likewise.

2003-08-17  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/annota3.exp: Add missing newline.

2003-08-06  Michael Chastain  <mec@shout.net>

	* gdb.java/jmisc1.exp: Add test for pr gdb/1322.

2003-08-12  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/float.exp: Add test for SH.

2003-08-10  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.c, gdb.arch/i386-prologue.exp: New files.

2003-08-07  Elena Zannoni  <ezannoni@redhat.com>

       * gdb.base/completion.exp: Remove reduntant completion test
       on filename.

2003-08-07  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/attach.exp, gdb.base/detach.exp, gdb.base/gcore.exp,
        gdb.mi/mi-basics.exp, gdb.threads/gcore-thread.exp,
        gdb.trace/save-trace.exp: Make sure that full pathnames are
        escaped correctly.

2003-08-07  Elena Zannoni  <ezannoni@redhat.com>

        * configure.in: Don't generate config.h from config.hin.
        * configure: Regenerate.
        * config.hin: Remove file.
        * gdb.mi/pthreads.c: Remove include of config.h, and other ifdefs.
        * gdb.threads/pthreads.c: Ditto.

2003-08-07  Daniel Jacobowitz  <drow@mvista.com>

	From Kei Sakamoto <sakamoto.kei@renesas.com>:
	* gdb.asm/asm-source.exp : Add -lgloss to link-flags.
	* gdb.asm/m32r.inc : Remove an illegal nop after bl instruction.
	Replace ld24 with seth/add3.

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

	* gdb.base/annota3.exp: New file.
	* gdb.base/annota3.c: New file.
	* gdb.c++/annota3.exp: New file.
	* gdb.c++/annota3.cc: New file.

2003-07-29  Michael Chastain  <mec@shout.net>

	* gdb.threads/tls.c (spin): Check errno only if sem_wait
	actually failed.
	(do_pass): Likewise.
	* gdb.threads/tls.exp: Always initialize no_of_threads.

2003-07-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/print-threads.exp (test_all_threads): Loosen KFAIL
	pattern.
	* gdb.threads/tls-shared.exp: Don't use gdb_suppress_entire_file.
	* gdb.threads/tls.exp: Recognize one case of the host library not
	supporting TLS.

2003-07-27  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/fileio.exp: Use SH when running commands using
	remote_exec.

2003-07-24  Daniel Jacobowitz  <drow@mvista.com>

	From Kei Sakamoto <sakamoto.kei@renesas.com>:
	* gdb.base/relocate.c (dummy): New padding array.

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

	* gdb.disasm/8300s.s: Fix syntax of bsr insn.

	* gdb.disasm/h8300s.exp : Minor changes in disassembler output require
	patterns to be more general, accepting old and new output.
	Some output chars (such as '+') also must be quoted.
	Some addresses are displayed numerically instead of
	symbolically.

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

	* gdb.base/return2.exp: Don't test long-long return.

	* gdb.disasm/t01_mov.s: New file, h8300sx disassembly tests.
	* gdb.disasm/t01_mov.exp: Ditto.
	* gdb.disasm/t02_mova.s: Ditto.
	* gdb.disasm/t02_mova.exp: Ditto.
	* gdb.disasm/t03_add.s: Ditto.
	* gdb.disasm/t03_add.exp: Ditto.
	* gdb.disasm/t04_sub.s: Ditto.
	* gdb.disasm/t04_sub.exp: Ditto.
	* gdb.disasm/t05_cmp.s: Ditto.
	* gdb.disasm/t05_cmp.exp: Ditto.
	* gdb.disasm/t06_ari2.s: Ditto.
	* gdb.disasm/t06_ari2.exp: Ditto.
	* gdb.disasm/t07_ari3.s: Ditto.
	* gdb.disasm/t07_ari3.exp: Ditto.
	* gdb.disasm/t08_or.s: Ditto.
	* gdb.disasm/t08_or.exp: Ditto.
	* gdb.disasm/t09_xor.s: Ditto.
	* gdb.disasm/t09_xor.exp: Ditto.
	* gdb.disasm/t10_and.s: Ditto.
	* gdb.disasm/t10_and.exp: Ditto.
	* gdb.disasm/t11_logs.s: Ditto.
	* gdb.disasm/t11_logs.exp: Ditto.
	* gdb.disasm/t12_bit.s: Ditto.
	* gdb.disasm/t12_bit.exp: Ditto.
	* gdb.disasm/t13_otr.s: Ditto.
	* gdb.disasm/t13_otr.exp: Ditto.

2003-07-22  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.threads/tls.exp :Add kfail for 'info address' case.

2003-07-22  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.threads/tls.c : New file.
        * gdb.threads/tls.exp : New file.
        * gdb.threads/tls-main.c : New file.
        * gdb.threads/tls-shared.c : New file.
        * gdb.threads/tls-shared.exp : New file.

2003-07-22  Andreas Schwab  <schwab@suse.de>

	* gdb.asm/powerpc.inc (gdbasm_startup): Force alignment.

2003-07-20  Andreas Schwab  <schwab@suse.de>

	* gdb.base/selftest.exp (do_steps_and_nexts): Add more patterns
	due to insn reordering.

2003-07-15  Andrew Cagney  <cagney@redhat.com>

	* gdb.asm/asm-source.exp: Do not allow "start" in the backtrace.

2003-07-15  Michael Chastain  <mec@shout.net>

	* gdb.base/gdb1250.exp: New file.
	* gdb.base/gdb1250.c: New file.

2003-07-09  Michal Ludvig  <mludvig@suse.cz>

	* gdb.c++/templates.exp (test_ptype_of_templates): Recognize
	expansion of size_t to 'unsigned long', not only to 'unsigned'.

2003-07-09  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.threads/tls.c: New file.
        * gdb.threads/tls.exp: New file.
        * gdb.threads/tls-main.c: New file.
        * gdb.threads/tls-shared.c: New file.
        * gdb.threads/tls-shared.exp: New file.

2003-07-09  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/annota1.exp: Make sure that we properly escape the
	full path of the source file. Xfail more permissive patterns,
	due to a compiler debug info problem.

2003-07-07  Andreas Schwab  <schwab@suse.de>

	* gdb.asm/m68k.inc: New file.
	* gdb.asm/asm-source.exp: Use it for m68k-*-*.

	* gdb.objc/basicclass.exp ("Call an Objective-C method with no
	arguments"): Also match negative number.

	* gdb.base/float.exp ("info float"): Add test for m68k-*-*.

2003-07-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/store.c (charest): New typedef.
	(add_char): Rename to add_charest, update.
	(wack_char): Rename to wack_charest, update types.  Return l + r
	to keep r live across the call.
	(wack_short, wack_int, wack_long, wack_longest, wack_float)
	(wack_double, wack_doublest): Return l + r to keep r live across
	the call.
	* gdb.base/store.exp: Accomodate store.c changes.

2003-06-30  David Carlton  <carlton@kealia.com>

	* gdb.c++/maint.exp (test_invalid_name): New.
	(test_first_component): Add tests for invalid names.

2003-06-29  Michael Chastain  <mec@shout.net>

	* gdb.c++/inherit.exp (test_print_svi_classes): Accept gdb
	output of '<VTT for class>' for virtual base classes.

2003-06-29  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/completion.exp: Tab-complete "complet" instead of
	"compl".
	* gdb.base/complex.exp, gdb.base/complex.c: New files.

2003-06-29  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/constvars.exp: Remove most xfails for GCC 3.x.
	* gdb.base/volatile.exp: Likewise.

2003-06-29  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/print-threads.exp (test_all_threads): Add kfail for
	gdb/1265.

2003-06-28  Michael Chastain  <mec@shout.net>
	    Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/selftest.exp (do_steps_and_nexts): Increase maximum
	initial line count of 'captured_main' from 26 to 32.
	(test_with_self): Allow xmalloc call to be interleaved with the
	preceding two lines.

2003-06-24  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/bang.exp: New testcase.

2003-06-23  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/langs.exp: Add some tests for the "minimal" language
	support.

2003-06-23  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.objc/basicclass.exp: Return -1 if we cannot compile
	the testcase.

2003-06-22  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/relocate.exp: Test add-symbol-file with a variable
	offset.

2003-06-22  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/pr-1210.cc: New file.
	* gdb.c++/pr-1210.exp: New file.

2003-06-21  Daniel Jacobowitz  <drow@mvista.com>

	* lib/mi-support.exp (mi_run_cmd): Expect an MI response to
	000-exec-continue.

2003-06-15  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/attach.exp: Use -1 for the ID of a nonexistent process
	on *-*-*bsd* instead of *-*-freebsd*.

2003-06-14  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/store.exp: Test longest and doublest.  Test all
	parameters.  Weaken return statement match.
	* gdb.base/store.c: Add longest and doublest - aka long long and
	long double functions.  Put all parameters into local register
	variables.  Use negative values.

2003-06-14  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/fileio.c: Include <errno.h>, and <sys/wait.h>.  Gag
	-Wformat errors.  Add lost line.  Use WEXITSTATUS to get system
	exit status.
	* gdb.base/fileio.exp: Disable target when nointerrupts and
	noinferiorio, instead of limiting it to remote.  Use remote_exec
	instead of system.

2003-06-12  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.base/float.exp: Add ia64 support.

2003-06-12  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/fileio.exp: Run only on remote targets.

2003-06-10  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/fileio.c: New file, testing File-I/O.
	* gdb.base/fileio.exp: Ditto.

2003-06-09  Raoul Gough  <RaoulGough@yahoo.co.uk>

	* gdb.base/shreloc.exp: New file, check symbol values obtained from
	shared objects after relocation at load time (gdb PR/1132).
	* gdb.base/shreloc.c, gdb.base/shreloc1.c, gdb.base/shreloc2.c:
        as above, part of the shared object relocation test.

2003-06-08  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/readline.exp: Add tests for operate-and-get-next with a
	fully filled history list.
	* gdb.base/gdb_history: New file.

	* gdb.base/signals.exp: XFAIL "continue to func1" on
	i*86-*-freebsd*.

	* gdb.base/attach.exp: When trying to attach to a nonexistent
	process, make it possible to specify the PID based on the target,
	and do so for *-*-freebsd*.

2003-06-02  Richard Henderson  <rth@redhat.com>

	* gdb.base/float.exp: Add expected regexp for alpha-*-*.

2003-06-02  Richard Henderson  <rth@redhat.com>

	* gdb.base/selftest.exp: Next over lim_at_start initialization.

2003-06-02  Richard Henderson  <rth@redhat.com>

	* gdb.base/dump.exp [alpha*-*-*]: Add -taso linker switch.

2003-06-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.asm/asm-source.exp: Dissassemble from &globalvar instead
	of globalvar.

2003-06-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Check for memory read errors in
	disassembler test on *BSD too.

2003-06-01  Richard Henderson  <rth@redhat.com>

	* gdb.asm/alpha.inc (gdbasm_enter): Use numeric register names
	for .frame.
	(gdbasm_call): Lose ldgp.
	(gdbasm_startup): Add frame information.
	* gdb.asm/asm-source.exp (alpha*-*): Add -no-mdebug to asm-flags.

2003-05-31  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/float.exp: Expect similar output for x86_64-*-* as for
	i?86-*-*.

2003-05-30  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/asm-source.exp: Make sure the final link succeeds on
	FreeBSD.

2003-05-29  Richard Henderson  <rth@redhat.com>

	* gdb.asm/alpha.inc: New file.
	* gdb.asm/asm-source.exp: Use it.

2003-05-29  Jim Blandy  <jimb@redhat.com>

	* gdb.base/corefile.exp: Find corefiles on Linux, which names them
	'core.PID'.

2003-05-22  Jim Blandy  <jimb@redhat.com>

	* gdb.base/corefile.exp: Tolerate stuff after argument parens in
	backtrace.

2003-05-20  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/namespace1.cc: Actually do 'cvs add' before committing
	this time.

2003-05-19  David Carlton  <carlton@bactrian.org>

	* gdb.c++/rtti.exp: New file, containing tests for PR c++/488.
	* gdb.c++/rtti.h, gdb.c++/rtti1.cc, gdb.c++/rtti2.cc: Ditto.

2003-05-19  David Carlton  <carlton@bactrian.org>

	* gdb.c++/namespace.exp: Add namespace scope and anonymous
	namespace tests.
	Bump copyright date.
	* gdb.c++/namespace.cc: Add anonymous namespace and namespace C.
	(main): Call C::D::marker2.
	* gdb.c++/namespace1.cc: New file.

2003-05-14  Jeff Johnston  <jjohnstn@redhat.com>

	Roland McGrath  <roland@redhat.com>
	* gdb.threads/linux-dp.exp: Account for fact that in nptl model
	there is no manager thread.

2003-05-08  Jeff Johnston  <jjohnstn@redhat.com>

	* gdb.threads/schedlock.exp: Remove assumption that all threads
	will run in a particular small time slice.  Also ensure we break
	in one of the child threads rather than the main thread.

2003-05-07  Jim Blandy  <jimb@redhat.com>

	Add support for assembly source testing on the s390x.
	* gdb.asm/asm-source.exp: Add a case for the s390x-*-*
	architecture.
	* gdb.asm/s390x.inc: New file.

	* gdb.asm/asm-source.exp: Use a 'switch -glob' statement, not a
	succession of 'if' statements.

2003-05-05  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/maint.exp: Add tests for "maint print dummy-frames".

2003-05-05  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/watchpoint.exp: Rename CALL_DUMMY_BREAKPOINT_OFFSET to
	DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET in comments.

2003-05-02  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/charset.exp: Update based on new behavior of set/show
	charset commands.

2003-05-01  Andrew Cagney  <cagney@redhat.com>

	* gdb.asm/asm-source.exp: Check that "disassm" and "x/i" of a
	variable do not give memory errors.

2003-04-30  Adam Fedor  <fedor@gnu.org>

	* Makefile.in (ALL_SUBDIRS): Add gdb.objc
	* configure.in (AC_OUTPUT): Add gdb.objc/Makefile
	* gdb.objc/Makefile.in, gdb.objc/basicclass.exp,
	gdb.objc/basicclass.m: : New files

	* lib/gdb.exp (gdb_compile_objc): New procedure.

2003-04-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/signals.exp: Make backtrace tests more specific.

2003-04-23  David Carlton  <carlton@bactrian.org>

	* gdb.c++/maint.exp (test_first_component): Add tests for
	'operator' in more locations.

2003-04-16  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/args.exp: Invoke gdb_load for simulator targets.

2003-04-16  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/completion.exp: Make 'info func mark' complete on 'info
        func marke' instead. Update test name.

2003-04-15  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/maint.exp: New file.

2003-04-14  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.threads/schedlock.c: Change type of thread function argument
	to long, to avoid warnings on 64-bit platforms.

2003-04-14  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/attach.exp: Add new message from ptrace in case of
        attaching to nonexistent process.

2003-04-11  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/derivation.exp, gdb.c++/overload.exp,
	gdb.c++/userdef.cc: Place comments on the lines to which the
	marker function might return.
	* gdb.c++/derivation.exp, gdb.c++/overload.exp,
	gdb.c++/userdef.exp: Look for those comments to check that we've
	returned to the right place, instead of checking line numbers.

2003-04-11  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.threads/pthreads.exp (test_startup): When setting a breakpoint
        match on sourcefile name, instead of directory name.

2003-04-10  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/completion.exp: Use string_to_regexp to match the
	working directory name.

2003-04-09  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/derivation.exp, gdb.c++/overload.exp,
	gdb.c++/userdef.exp: If GDB fails to restore the selected frame
	after an inferior function call, report the failure, but allow the
	test to continue.

2003-04-05  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.base/break.exp: marker4() is defined at line 46 when compiled
	with -DPROTOTYPES.

2003-04-05  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.base/break.exp: Revert last patch.

2003-04-04  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.base/break.exp: marker4() is defined at line 46 when compiled
	with -DPROTOTYPES.

2003-04-02  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/callfuncs.exp: Make "print add" messages unique.
	* gdb.base/ending-run.exp: Put spaces around "breakpoint" to stop
	matching directories by the name breakpoint.
	* gdb.base/pointers.exp: Make "ptype pppC" message consistent.
	Make "continue to marker1" consistent.
	* gdb.base/call-rt-st.exp: Make "finish out from loop_count"
	message consistent.
	* lib/gdb.exp: Put "the program is no longer running", and "the
	program exited" in parenthesis.
	* lib/mi-support.exp: Ditto.

2003-04-02  Bob Rossi  <bob_rossi@cox.net>

	* gdb.mi/mi-file.exp: New file for -file-list-exec-source-file.

2003-03-29  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/sizeof.c (main): Print the value of '\377'.
	* gdb.base/sizeof.exp: Check the sign of '\377'.

2003-03-27  Michael Chastain  <mec@shout.net>

	* gdb.base/gdb1090.exp: New file.
	* gdb.base/gdb1090.cc: New file.

2003-03-27  J. Brobecker  <brobecker@gnat.com>

	* gdb.gdb/observer.exp: New regression test.

2003-03-27  Michael Chastain  <mec@shout.net>

	* gdb.base/list.exp: Remove setup_xfail_format for DWARF 1.
	* gdb.base/ptype.exp: Likewise.

2003-03-27  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.c++/casts.exp: Fix startup to run also on embedded targets.

2003-03-26  Michael Chastain  <mec@shout.net>

	* gdb.base/ptype.exp: Actually use some typedef'd types.

2003-03-21  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.asm/asm-source.exp: Set asm-arch for m6811 and m6812.
	* gdb.asm/m68hc11.inc: New file for HC11/HC12 macros.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/default.exp: Fix regular expression.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/args.exp: Fix regular expression.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/help.exp: Allow Win32 child process.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.exp: Check for Cygwin specific wrapper function
	when stepping out of main().

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/default.exp: Check for win32 specific message when calling
	"run" without executable.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/args.exp: Expect .exe in output.

2003-03-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Add appropriate --entry linker flag for
	Cygwin native.

2003-03-17  Andrew Cagney  <cagney@redhat.com>

	From Elena Zannoni <ezannoni@redhat.com>.  Test e500 abi and
	vector registes.
	* gdb.arch/e500-regs.c, gdb.arch/e500-regs.exp: New files.
	* gdb.arch/e500-abi.c, gdb.arch/e500-abi.exp: New files.

2003-03-17  David Carlton  <carlton@math.stanford.edu>

	* gdb.base/watchpoint.exp (test_watchpoint_and_breakpoint): New
	test, for PR breakpoints/38.
	Call test_watchpoint_and_breakpoint.
	* gdb.base/watchpoint.c (func3): New function.
	(main): Call func3.

2003-03-04  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/templates.exp (do_tests): Accept valid const in "print
	Garply<Garply<char> >:: garply".
	(test_ptype_of_templates): KFAIL "ptype T5<int>" and "ptype t5i"
	with respect to PR c++/1111; note also PR c++/1113.
	(test_template_breakpoints): KFAIL "constructor breakpoint" with
	respect to PR c++/1062.
	KFAIL "destructor breakpoint" with respect to PR c++/1112.

2003-03-03  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/classes.exp (test_enums): KFAIL "ptype obj_with_enum"
	with respect to PR c++/57.
	KFAIL "print (ClassWithEnum::PrivEnum) 42" with respect to PR
	c++/826.
	Create "print ('ClassWithEnum::PrivEnum') 42"; KFAIL it with
	respect to PR c++/57.

2003-03-03  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/templates.exp (do_tests): Convert the KFAILs with
	respect to PR c++/33 into FAILs.

2003-03-03  Michael Chastain  <mec@shout.net>

	* configure.in: Update copyright years.

2003-03-03  Michael Chastain  <mec@shout.net>

	* Makefile.in: Update copyright years.

2003-02-28  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/classes.exp (test_ptype_class_objects): Accept it if we
	print class instead of struct and/or superfluous protection
	specifiers, as long as the resulting output is equivalent to the
	source code.
	Delete FIXME from end of messages on tests that don't need
	fixing.

2003-02-28  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/templates.exp (do_tests): Allow const in the two
	Foo<volatile char *>::foo tests.

2003-02-27  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/restore.c (main): Return zero, so exit code
	will be consistant.

2003-02-26  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/templates.exp (do_tests): KFAIL the "print Foo<volatile
	char *>::foo" test with respect to PR c++/33.  Create a new test
	which is identical to that one except that it doesn't put the
	space between the "char" and the "*"; KFAIL it, too.

2003-02-26  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/templates.exp (do_tests): Convert XFAILs about printing
	template types into either PASSes or KFAILs (corresponding to PR
	c++/57).  Tweak indentation.  Update copyright.

2003-02-23  Stephane Carrez  <stcarrez@nerim.fr>

	* lib/gdb.exp: Don't execute C++ tests on m6811/m6812 targets.

2003-02-13  Michael Chastain  <mec@shout.net>

	* gdb.base/exprs.exp: Remove i960 remnants.
	* gdb.base/funcargs.exp: Likewise.
	* gdb.base/list.exp: Likewise.
	* gdb.base/ptype.exp: Likewise.

2003-02-14  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/virtfunc.exp (test_virtual_calls): Change 'print
	pEe->D::vg()" from XFAIL to KFAIL.

2003-02-13  Jason Molenda  (jmolenda@apple.com)

	* gdb.base/maint.exp: Update maint print statistics regexp to include
	new entries.

2003-02-13  Michael Chastain  <mec@shout.net>

	* gdb.c++/inherit.exp: Remove call to get_debug_format.

2003-02-12  Michael Chastain  <mec@shout.net>

	* gdb.c++/classes.exp: Remove setup_xfail_format for DWARF 1.
	* gdb.c++/inherit.exp: Likewise.
	* gdb.c++/cplusfuncs.exp: Remove suppression logic for DWARF 1.
	* gdb.c++/templates.exp: Likewise.
	* gdb.c++/virtfunc.exp: Likewise.

2003-02-06  Jason Molenda  (jason-cl@molenda.com)

	* gdb.mi/mi-syn-frame.c (subroutine): Add a comment explaining
	why the code is written that way.

2003-02-05  Michael Chastain  <mec@shout.net>

	* gdb.base/dump.exp: Add missing copyright line.

2003-02-05  Jason Molenda  (jason-cl@molenda.com)

	* gdb.mi/mi-syn-frame.c (subroutine): Add an extra statement
	at the beginning so the breakpoint doesn't get set on the loop.

2003-02-05  Michael Chastain  <mec@shout.net>

	* gdb.c++/local.exp: Relax the test for PR gdb/825 to accept
	output for configurations with gcc 2.95.3.

2003-02-05  Keith Seitz  <keiths@redhat.com>
	    Andrew Cagney  <ac131313@redhat.com>

	* gdb.mi/mi-cli.exp: New file.

2003-02-04  Michael Chastain  <mec@shout.net>

	* gdb.c++/anon-union.exp: Do not call gdb_suppress_entire_file.
	Call perror and then continue.

2003-02-03  Michael Chastain  <mec@shout.net>

	* gdb.c++/pr-1023.cc: New file.
	* gdb.c++/pr-1023.exp: New file.

2003-02-05  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/local.exp: Don't expect Local to be in scope in main;
	it's local to foobar.  Check for it there, and check that it's not
	present in main.
	* gdb.c++/local.cc (marker2): New function.
	(foobar): Call marker1.
	(main): Call marker2 instead of marker1.

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

	* gdb.disasm/mn10200.exp: Obsolete file.
	* gdb.trace/Makefile.in (clean mostlyclean): Remove mn10200.
	* gdb.disasm/Makefile.in (clean mostlyclean): Remove mn10200.
	* gdb.base/watchpoint.exp: Mark the mn10200 xfails as obsolete.

2003-02-04  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/overload.exp: Test intToChar(1).
	* gdb.c++/overload.cc (intToChar): New.
	(main): Call intToChar.

2003-02-03  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/ovldbreak.exp (continue_to_bp_overloaded): Add
	'might_kfail' arg.
	KFAIL some of the continue_to_bp_overloaded calls, according to
	PR c++/1025.

2003-02-01  Michael Chastain  <mec@shout.net>

	* gdb.base/advance.c (marker1): New marker function.
	* gdb.base/advance.exp: When the 'advance' command lands on the
	return breakpoint, it can legitimately stop on either the
	current line or the next line.  Accommodate both outcomes.
	* gdb.base/until.exp: Likewise.

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

	2002-11-10 Jason Molenda (jason-cl@molenda.com):
        * gdb.mi/mi-var-child.exp: -var-list-children's CHILDREN field is
        now a list, not a tuple.
        * gdb.mi/mi-var-display.exp: Ditto.
        * gdb.mi/gdb792.exp: Ditto.

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

	From 2002-11-09 Jason Molenda (jason-cl@molenda.com):
        * gdb.mi/mi-syn-frame.exp: New tests for synthetic frames in
        stack backtraces.
        * gdb.mi/mi-syn-frame.c: Part of same.

2003-02-01  Mark Kettenis  <kettenis@gnu.org>

	* gdb.mi/gdb669.exp, gdb.mi/mi-pthreads.exp,
	gdb.mi/mi1-pthreads.exp: Return instead of calling
	gdb_suppress_entire_file.

2003-02-01  Mark Salter  <msalter@redhat.com>

	* gdb.asm/arm.inc (gdbasm_startup): Clear frame pointer, not sp.

2003-01-31  Mark Salter  <msalter@redhat.com>

	* lib/mi-support.exp (mi_gdb_load): Support remote targets.
	Support empty arg.

2003-01-30  Michael Chastain  <mec@shout.net>

	* lib/gdb.exp: Revert patch of 2003-01-06, which set LC_ALL.
	This was a workaround for a UTF-8 bug in readline 4.3.  The bug
	has been fixed in gdb/readline on 2003-01-09.

2003-01-29  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/maint.exp: Allow for leading underscore in symbol.
	* gdb.base/display.exp: Allow for leading underscore in symbol.
	* gdb.base/args.exp: Skip if target does not support args passing.

2003-01-22  Daniel Jacobowitz  <drow@mvista.com>

	* lib/gdb.exp (gdb_test_multiple): New function, cloned from
	gdb_test.  Accept a list of expect arguments as the third
	parameter.
	(gdb_test): Use it.

2003-01-20  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.arch/altivec-abi.exp: Set variable 'srcfile' differently, to
	allow for different test tree configurations.  Update some
	tescases accordingly.
	* gdb.arch/altivec-regs.exp: Ditto.
	* gdb.asm/asm-source.exp: Ditto.
	* gdb.base/advance.exp: Ditto.
	* gdb.base/display.exp: Ditto.
	* gdb.base/long_long.exp: Ditto.
	* gdb.base/mips_pro.exp: Ditto.
	* gdb.base/overlays.exp: Ditto.
	* gdb.base/relocate.exp: Ditto.
	* gdb.base/setshow.exp: Ditto.
	* gdb.base/step-line.exp: Ditto.
	* gdb.base/step-test.exp: Ditto.
	* gdb.base/until.exp: Ditto.
	* gdb.c++/virtfunc.exp: Get rid of variable 'src'.

2003-01-17  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/demangle.exp (test_lucid_style_demangling): KFAIL test
	corresponding to PR c++/945.
	Update copyright.

2003-01-17  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/inherit.exp (test_print_mi_members): KFAIL tests
	corresponding to PR c++/68.

2003-01-17  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/cplusfuncs.exp (print_addr_2_kfail): New procedure.
	(test_paddr_hairy_functions): Call print_addr_2_kfail for
	hairyfunc5 through hairyfunc7.  KFAIL for PR c++/19.

2003-01-15  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/break.exp: Fix change of default location, because of
	removal of until tests.
	* gdb.base/help.exp: Update test for new 'until' help message.
	Add test for help on 'advance'.
        * gdb.base/args.exp: Fix foobar with GDBFLAGS global.

2003-01-15  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/default.exp: Adapt "info float" test for recent changes
	to that command.  Add test for "info vector".
	* gdb.base/float.exp: New file.  Add test for "info float" that
	resembles the old test in gdb.base/default.exp.

2003-01-15  David Carlton  <carlton@math.stanford.edu>

	* gdb.base/selftest.exp (do_steps_and_nexts): Allow gdb_sysroot.

2003-01-15  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/break.exp: Move the tests of until command from here...
	* gdb.base/until.exp: ... to here. New file. Add other tests.
	* gdb.base/advance.c: New file.
	* gdb.base/advance.exp: New file.

2003-01-14  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/args.c: New file.
        * gdb.base/args.exp: New file.

2003-01-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/virtfunc.exp: Remove fixed XFAIL.

2003-01-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/killed.exp: Use KFAIL for gdb/568.

2003-01-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/constvars.exp: Remove two extra XFAILs.  Update copyright
	dates.

2003-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/printmethod.exp (print virtual method): Accept "(void)".

2003-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/printcmds.exp: Enable setup_kfail for gdb/538
	(ptype &*"foo").
	* gdb.c++/local.exp: Enable setup_kfail for gdb/482.

2003-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.mi/mi-console.exp: Remove extra "(known bug)".
	* gdb.mi/mi1-console.exp: Likewise.

2003-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.mi/mi-console.exp: Add KFAIL for "Hello message (known bug)".
	* gdb.mi/mi1-console.exp: Likewise.

2003-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/overload.exp: Remove some fixed XFAILs.

2003-01-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/detach.exp: New test.

2003-01-09  Daniel Jacobowitz  <drow@mvista.com>

	* Makefile.in (ALL_SUBDIRS): New variable.
	(subdirs, clean, distclean): Use it.
	* gdb.arch/Makefile.in: Clean up Makefile.  Remove rules for
	regenerating Makefile, since it is generated from the top level.
	* gdb.asm/Makefile.in: Likewise.
	* gdb.base/Makefile.in: Likewise.
	* gdb.c++/Makefile.in: Likewise.
	* gdb.disasm/Makefile.in: Likewise.
	* gdb.java/Makefile.in: Likewise.
	* gdb.mi/Makefile.in: Likewise.
	* gdb.threads/Makefile.in: Likewise.
	* gdb.trace/Makefile.in: Likewise.

2003-01-09  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/annota2.exp: KFAIL "watch triggered on a.x".
	Add copyright year 2003.

2003-01-06  Michael Chastain  <mec@shout.net>

	* gdb.mi/mi-pthreads.exp (check_mi_thread_command_set):
	When selecting a thread, 'line' and 'file' are optional.
	* gdb.mi/mi1-pthreads.exp: Likewise.

2003-01-06  Andreas Schwab  <schwab@suse.de>

	* lib/gdb.exp: Set LC_ALL to "C" to avoid spurious testsuite
	failures.

2003-01-04  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/844
	* lib/gdb.exp (gdb_compile): Handle "quiet" option.
	(gdb_compile_pthreads): Pass "quiet" to gdb_compile.

	* gdb.threads/gcore-thread.exp: Use gdb_compile_pthreads.  Return
	instead of calling gdb_suppress_entire_file.
	* gdb.threads/print-threads.exp: Likewise.
	* gdb.threads/schedlock.exp: Likewise.

	* gdb.threads/killed.exp: Return instead of calling
	gdb_suppress_entire_file.
	* gdb.threads/linux-dp.exp: Likewise.
	* gdb.threads/pthreads.exp: Likewise.

2003-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/callfuncs.exp: Don't XFAIL unprototyped functions for
	stabs.
	* gdb.base/completion.exp: Allow marker1(void) as well as marker1().
	* gdb.base/whatis.exp: Always allow (void) after function names.

2003-01-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/casts.exp: Correct regexp.

2003-01-04  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Call AC_CONFIG_HEADER.  Don't call
	AC_CONFIG_SUBDIRS on gdb.arch, gdb.asm, gdb.base gdb.c++ gdb.java,
	gdb.disasm, gdb.mi, gdb.threads and gdb.trace.  Call
	AC_CHECK_HEADERS on pthread.h.  Put Makefiles in the
	aforementioned directories in the AC_OUPUT call.
	* config.hin: New file.
	* gdb.mi/gdb669.exp, gdb.mi/mi-pthreads.exp,
	gdb.mi/mi1-pthreads.exp, gdb.threads/gcore-thread.exp,
	gdb.threads/killed.exp, gdb.threads/print-threads.exp,
	gdb.threads/pthreads.exp, gdb.threads/schedlock.exp: Make sure we
	pass -I$objdir instead of -I$objdir/$subdir in compilation.
	* gdb.arch/configure.in, gdb.arch/configure, gdb.asm/configure.in,
	gdb.asm/configure, gdb.base/configure.in, gdb.base/configure,
	gdb.c++/configure.in, gdb.c++/configure, gdb.disasm/configure.in,
	gdb.disasm/configure, gdb.java/configure.in, gdb.java/configure,
	gdb.mi/configure.in, gdb.mi/configure, gdb.mi/config.in,
	gdb.threads/configure.in, gdb.threads/configure,
	gdb.threads/config.in, gdb.trace/configure.in,
	gdb.trace/configure: Removed.

2003-01-03  Michael Chastain  <mec@shout.net>

	* gdb.base/miscexprs.c: Fix PR gdb/697, "buglet in
	testsuite/gdb.base/miscexprs.c, off-by-1 array reference".

2003-01-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/store.exp: Fix regular expressions.

2002-12-28  Mark Kettenis  <kettenis@gnu.org>

	* configure.in: Rewrite.
	* configure: Regenerated.

2003-01-03  David Carlton  <carlton@math.stanford.edu>

	* gdb.base/psymtab.exp: New file.
	* gdb.base/psymtab1.c: Ditto.
	* gdb.base/psymtab2.c: Ditto.

2002-12-23  Adam Fedor  <fedor@gnu.org>

	* gdb.base/maint.exp: Update expect output to include 'ObjC'.

2002-12-23  David Carlton  <carlton@math.stanford.edu>

	* gdb.base/selftest.exp (do_steps_and_nexts): Allow initial brace
	and current_directory initialization.

2002-12-22  Jim Blandy  <jimb@redhat.com>

	* gdb.trace/tfind.exp: Pass '-O1' flag via the 'optimize' option,
	rather than as part of the output file name.

	* gdb.base/attach.exp: There's no need to copy the test program to
	/tmp; that was only ever necessary on HP/UX, and this test is
	entirely disabled there anyway.

2002-12-21  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/psmang.exp: Doc fix.

	* gdb.c++/psmang.exp, gdb.c++/psmang1.cc, gdb.c++/psmang2.cc: New
	test.

2002-12-20  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/annota2.exp: KFAIL annotate-quit.

2002-12-18  Michael Chastain  <mec@shout.net>

	* gdb.c++/annota2.exp: Add copyright year 2002.

2002-12-17  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/try_catch.cc: Add marker comments.
	* gdb.c++/try_catch.exp: Get line numbers from marker comments.
	* gdb.c++/m-data.cc: Delete namespace __gnu_test.
	* gdb.c++/m-static.cc: Ditto.
	* gdb.c++/m-static1.cc: Ditto.
	* gdb.c++/try_catch.cc: Ditto.

2002-12-16  Jeff Johnston  <jjohnstn@redhat.com>

	* lib/mi-support.exp (mi_reinitialize_dir): Check mi level
	to see whether we are using the new -environment-directory
	command which resets via -r or the old version of the command
	which may prompt the user.  Part of fix for gdb/741.

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

	* gdb.fortran/types.exp: Update obsolete comment.
	* gdb.fortran/exprs.exp: Ditto.
	* lib/gdb.exp: Delete obsolete code.
	* gdb.chill/ChangeLog, gdb.chill/Makefile.in: Delete.
	* gdb.chill/builtins.ch, gdb.chill/builtins.exp: Delete.
	* gdb.chill/callch.ch, gdb.chill/callch.exp: Delete.
	* gdb.chill/chexp.exp, gdb.chill/chillvars.ch: Delete.
	* gdb.chill/chillvars.exp, gdb.chill/configure: Delete.
	* gdb.chill/configure.in, gdb.chill/enum.ch: Delete.
	* gdb.chill/enum.exp, gdb.chill/func1.ch: Delete.
	* gdb.chill/gch1041.ch, gdb.chill/gch1041.exp: Delete.
	* gdb.chill/gch1272.ch, gdb.chill/gch1272.exp: Delete.
	* gdb.chill/gch1280.ch, gdb.chill/gch1280.exp: Delete.
	* gdb.chill/gch922.ch, gdb.chill/gch922.exp: Delete.
	* gdb.chill/gch981.ch, gdb.chill/gch981.exp: Delete.
	* gdb.chill/misc.ch, gdb.chill/misc.exp: Delete.
	* gdb.chill/powerset.ch, gdb.chill/powerset.exp: Delete.
	* gdb.chill/pr-4975-grt.ch, gdb.chill/pr-4975.ch: Delete.
	* gdb.chill/pr-4975.exp, gdb.chill/pr-5016.ch: Delete.
	* gdb.chill/pr-5016.exp, gdb.chill/pr-5020.ch: Delete.
	* gdb.chill/pr-5020.exp, gdb.chill/pr-5022.ch: Delete.
	* gdb.chill/pr-5022.exp, gdb.chill/pr-5646-grt.ch: Delete.
	* gdb.chill/pr-5646.ch, gdb.chill/pr-5646.exp: Delete.
	* gdb.chill/pr-5984.ch, gdb.chill/pr-5984.exp: Delete.
	* gdb.chill/pr-6292.ch, gdb.chill/pr-6292.exp: Delete.
	* gdb.chill/pr-6632-grt.ch, gdb.chill/pr-6632.ch: Delete.
	* gdb.chill/pr-6632.exp, gdb.chill/pr-8134.exp: Delete.
	* gdb.chill/pr-8136.ch, gdb.chill/pr-8136.exp: Delete.
	* gdb.chill/pr-8405.ch, gdb.chill/pr-8405.exp: Delete.
	* gdb.chill/pr-8742.ch, gdb.chill/pr-8742.exp: Delete.
	* gdb.chill/pr-8894-grt.ch, gdb.chill/pr-8894.ch: Delete.
	* gdb.chill/pr-8894.exp, gdb.chill/pr-9095.ch: Delete.
	* gdb.chill/pr-9095.exp, gdb.chill/pr-9946.ch: Delete.
	* gdb.chill/pr-9946.exp, gdb.chill/result.ch: Delete.
	* gdb.chill/result.exp, gdb.chill/string.ch: Delete.
	* gdb.chill/string.exp, gdb.chill/tests1.ch: Delete.
	* gdb.chill/tests1.exp, gdb.chill/tests2.ch: Delete.
	* gdb.chill/tests2.exp, gdb.chill/tuples.ch: Delete.
	* gdb.chill/tuples.exp, gdb.chill/xstruct-grt.ch: Delete.
	* gdb.chill/xstruct.ch, gdb.chill/xstruct.exp: Delete.

2002-12-11  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/m-data.exp: Add test for members that shadow global
	variables: see PR gdb/804.
	* gdb.c++/m-data.cc: Ditto.

2002-12-10  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/foll-vfork.exp: Re-enable test on HP/UX.

2002-12-06  David Carlton  <carlton@math.stanford.edu>

	* gdb.base/store.c: Don't declare functions static.

2002-12-04  Andrew Cagney  <ac131313@redhat.com>

	* gdb.base/store.exp, gdb.base/store.c: New files.

2002-12-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/selftest.exp: Update for current gdb.

2002-12-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/maint.exp: Only dump symbols from one source file
	or objfile.

2002-12-03  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/step-test.exp: Allow MIPS to return to the line of a
	function call.

2002-11-25  Jim Blandy  <jimb@redhat.com>

	* lib/mi-support.exp (mi_delete_breakpoints): Change name of
	function appearing in error message.

2002-11-21  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/maint.exp (help maint dump-me): Update with typo fix.

2002-11-08  Jeff Johnston  <jjohnstn@redhat.com>

	* lib/mi-support.exp (mi_gdb_start): Verify the startup message
	for mi1 and current mi is in correct format.  New mi startup message
	should be in mi console format.  This is part of fix for PR gdb/604.

2002-09-18  Fernando Nasser  <fnasser@redhat.com>

	* gdb.asm/asm-source.exp: Adjust patter to new disassembler routine
	which explicitly prints the zero offset as "+0".

2002-10-22  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/schedlock.c (args): Make unsigned.

2002-10-21  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.asm/asm-source.exp: Add "mips*-*" pattern.  Update line
	numbers.  Allow "foo2|selected stack frame".
	* gdb.asm/asmsrc1.s: Use gdbasm_declare and gdbasm_end.
	* gdb.asm/asmsrc2.s: Likewise.
	* gdb.asm/common.inc: Define gdbasm_declare and gdbasm_end.  Update
	comments.
	* gdb.asm/mips.inc: New file.

2002-10-18  Adam Fedor  <fedor@gnu.org>

	* gdb.base/default.exp: Update expected output to include 'ObjC'.
	* gdb.base/help.exp: Likewise.

2002-10-17  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/constvars.c (struct crass, struct crisp): New structs.
	* gdb.base/constvars.exp (ptype crass, ptype crisp): New tests.

2002-10-02  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/casts.cc, gdb.c++/casts.exp: New test.

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

	* mi1-basics.exp: Copy of mi1-basics.exp MIFLAGS set "-i=mi1".
	* mi1-break.exp, mi1-console.exp, mi1-disassemble.exp: Ditto.
	* mi1-eval.exp, mi1-hack-cli.exp, mi1-pthreads.exp: Ditto.
	* mi1-read-memory.exp, mi1-regs.exp, mi1-return.exp: Ditto.
	* mi1-simplerun.exp, mi1-stack.exp, mi1-stepi.exp: Ditto.
	* mi1-until.exp, mi1-var-block.exp, mi1-var-child.exp: Ditto.
	* mi1-var-cmd.exp, mi1-var-display.exp, mi1-watch.exp: Ditto.

2002-09-29  Andrew Cagney  <ac131313@redhat.com>

	* mi0-basics.exp, mi0-break.exp, mi0-console.exp: Delete.
	* mi0-disassemble.exp, mi0-eval.exp: Delete.
	* mi0-hack-cli.exp, mi0-read-memory.exp: Delete.
	* mi0-regs.exp, mi0-return.exp, mi0-simplerun.exp: Delete.
	* mi0-stack.exp, mi0-stepi.exp, mi0-until.exp: Delete.
	* mi0-var-block.exp, mi0-var-child.exp: Delete.
	* mi0-var-cmd.exp, mi0-var-display.exp, mi0-watch.exp: Delete.

2002-09-27  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/annota1.exp (info break): Make directory components of
	path optional since not all compilers emit this debug information.

 	* gdb.base/shlib-call.exp (step inside shr2): Don't fail if first
 	step ends up stepping out of the function instead of stopping on
 	the epilogue.

2002-09-26  Keith Seitz  <keiths@redhat.com>

	* lib/insight-support.exp (gdbtk_start): Figure out where
	the insight executable is based on where gdb is. Use this
	executable to start insight instead of gdb.

2002-09-25  Andrew Cagney  <cagney@redhat.com>

	* gdb.base/pc-fp.exp, gdb.base/pc-fp.c: New test.

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

	* gdb.gdb/complaints.exp (test_initial_complaints): Rename
	test_isolated_complaints.
	(test_empty_complaint): New function.
	(test_empty_complaints): New function.  Check no output when no
	complaints.

2002-09-19  Jim Blandy  <jimb@redhat.com>

        * gdb.base/charset.exp, gdb.base/charset.c: New files.

2002-09-19  Andrew Cagney  <ac131313@redhat.com>

	* gdb.gdb/complaints.exp: New file.

2002-09-18  Andrew Cagney  <ac131313@redhat.com>

	* gdb.base/maint.exp: Check `help maint internal-warning'.

2002-09-18  David Carlton  <carlton@math.stanford.edu>

	* gdb.c++/m-static.exp: Remove breakpoints depending on line
	numbers, and replace them by a single breakpoint after the
	constructors are all finished.
	Add test 4.
	* gdb.c++/m-static.cc: Add test 4.
	* gdb.c++/m-static.h: New file.
	* gdb.c++/m-static1.cc: New file.

	* gdb.c++/printmethod.exp: New file.
	* gdb.c++/printmethod.cc: New file.

	* gdb.c++/pr-574.exp: New file.
	* gdb.c++/pr-574.cc: New file.

2002-09-18  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.exp: Add handling of "step to end of run" for
	embedded targets which never actually exit.

2002-09-18  Fernando Nasser  <fnasser@redhat.com>

	* gdb.base/ending-run.exp: Properly mark "continue after exit" and
	"don't step after run" as unresolved or unsupported, instead of xfail.

2002-09-18  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.exp: Fix expected string for _wrap_main to
	allow correct handling of #ifdef UNDERSCORES from dejagnu/testglue.c.
	Add newline to expected string in "step out of main (status wrapper)"
	case.

2002-09-18  Corinna Vinschen  <vinschen@redhat.com>

	* lib/gdb.exp (rerun_to_main): Allow restarting application.
	* gdb.base/ena-dis-br.exp (rerun_to_main): Eliminate.

2002-09-17  Tom Tromey  <tromey@redhat.com>

	* gdb.base/printcmds.exp (test_print_string_constants): Expect
	\000, not \0, in double-quoted string.

2002-09-14  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/commands.exp: Don't expect a "Program exited normally"
	string after running the commands execution on breakpoint tests.

2002-09-13  Corinna Vinschen  <vinschen@redhat.com>

	* lib/gdb.exp (gdb_continue_to_end): Fix typo in expected string.

2002-09-12  Joel Brobecker  <brobecker@gnat.com>

	* gdb.base/call-strs.exp: Fix a small typo in one of the comments.

2002-09-10  Keith Seitz  <keiths@redhat.com>

	* lib/mi-support.exp (mi_runto): New proc. Does the same as gdb's
	runto proc.
	(mi_run_to_main): Use mi_runto.
	(mi_execute_to): Renamed from mi_run_to. Changed all callers.

2002-09-10  Keith Seitz  <keiths@redhat.com>

	* lib/mi-support.exp: (mi_run_to_main): Allow anything to precede
	regexp for stopping at main. Could have multiple event notifications.
	Don't assume that main was declared with no parameters.
	(mi_next): Use mi_step_to.
	(mi_step): Use mi_next_to.

2002-09-09  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/default.exp: Fix expected string in `info float' test.

2002-09-09  Ben Elliston  <bje@redhat.com>

	* config/mips.exp: Update comments.
	* config/mips-idt.exp: Likewise.
	* config/nind.exp: Likewise.
	* config/slite.exp: Likewise.
	* config/sparclet.exp: Likewise.
	* config/udi.exp: Likewise.
	* config/vx.exp: Likewise.
	* config/vxworks29k.exp: Likewise.

2002-09-05  Jim Blandy  <jimb@redhat.com>

	* gdb.threads/killed.exp: Fix test failure message.

2002-09-04  Keith Seitz  <keiths@redhat.com>

	* lib/mi-support.exp: Update copyright.
	(mi_gdb_test): Increase the priority of the expected pattern
	so that it matches gdb_test.

2002-09-03  Keith Seitz  <keiths@redhat.com>

	* lib/gdb.exp (gdb_compile_pthreads): Fix "build_bin" typo.
	Use integer comparison instead of string comparison for testing
	whether binary was built.

2002-09-03  Jim Blandy  <jimb@redhat.com>

	* gdb.threads/killed.exp, gdb.threads/killed.c: New test.

2002-08-29  Jim Blandy  <jimb@redhat.com>

	* gdb.threads/pthreads.exp: Move the portable thread compilation
	code into a function in lib/gdb.exp, and call that from here.
	* lib/gdb.exp (gdb_compile_pthreads): New function.

2002-08-29  Keith Seitz  <keiths@redhat.com>

	* lib/mi-support.exp (mi_gdb_test): Add global declaration for
	expect_out so that callers can get at it.

2002-08-23  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/print-threads.c: New file.
	* gdb.threads/print-threads.exp: New file.
	* gdb.threads/schedlock.c: New file.
	* gdb.threads/schedlock.exp: New file.

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

        * gdb.arch/altivec-abi.exp: The source C file is altivec-abi.c,
        not altivec.c.

2002-08-17  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/return.exp: Remove i*86-*-* from list of xfail'ed
	targets.  The problem should be fixed now.

2002-08-15  Mark Kettenis  <kettenis@gnu.org>

	* gdb.java/jv-print.exp: Fix p '' and p ''' tests to deal with
	2002-07-24 change that removes final dots from error messages.

2002-08-13  Tom Tromey  <tromey@redhat.com>

	* gdb.base/readline.exp: New file.

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

	* lib/gdb.exp (gdb_expect_list): Only print one pass, fail, or
	supress message.

2002-08-01  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (TARGET_FLAGS_TO_PASS): Remove CHILLFLAGS, CHILL,
	CHILL_FOR_TARGET and CHILL_LIB.
	* configure.in (configdirs): Remove gdb.chill.
	* configure: Regenerate.
	* lib/gdb.exp: Obsolete references to chill.
	* gdb.fortran/types.exp: Ditto.
	* gdb.fortran/exprs.exp: Ditto.

2002-07-30  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/shlib-call.exp (additional_flags): Conditionally
	set Irix-specific compile and link flags.

2002-07-29  Kevin Buettner  <kevinb@redhat.com>

	* lib/gdb.exp (mips*-*-irix*): Use alternate method for preprocessing
	source files.  The ``-o'' option doesn't work with the ``-E'' option
	when using the Irix compiler.

2002-07-19  Daniel Jacobowitz  <drow@mvista.com>

	* config/gdbserver.exp (gdb_load): Don't use TCL varargs.
	Improve support for reusing an exec file.  Copy exec file
	to target, and run gdbserver on the target instead of on the host.

2002-07-18  Jim Blandy  <jimb@redhat.com>

	* gdb.base/ending-run.exp: Don't expect to see the program end in
	some orderly fashion when we're running on a real stand-alone
	board.

	* gdb.base/interrupt.exp: Correct logic for skipping tests on
	targets that don't support interrupts.

2002-07-10  Paul N. Hilfinger  <hilfingr@otisco.mckusick.com>

	* gdb.base/attach.exp: Add patterns to match output from /proc-based
	systems.
	Move comments in expect statements to inside the actions, so that they
	don't get matched against.

2002-07-10  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/interrupt.exp: Setup xfail for all i386 BSD's on "call
	function when asleep" test.

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

	* gdb.base/page.exp: Rewrite to handle problems with very long
	`info set' output.  Update copyright.

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

	* gdb.hp/configure.in (AC_CONFIG_SUBDIRS): Do not try to configure
	gdb.threads-hp.
	* gdb.hp/configure: Regenerate.
	* gdb.hp/gdb.threads-hp/configure.in: Delete file.
	* gdb.hp/gdb.threads-hp/configure: Delete file.
	* gdb.hp/gdb.threads-hp/Makefile.in: Delete file.

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

	* gdb.base/selftest.exp (do_stes_and_next): Skip calls to
	setlocale, bindtextdomain and textdomain.

2002-06-11  Jim Blandy  <jimb@redhat.com>

	* lib/gdb.exp (get_debug_format): Tolerate message saying whether
	preprocessor macro information is present.

	* macscp.exp, macscp1.c, macscp2.h, macscp3.h, macscp4.h: New
	tests.

2002-06-06  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/overlays.exp: Record addresses of overlay
	functions in TCL variables rather than in GDB variables,
	to avoid having GDB convert them to pointers (with loss
	of information).

	* gdb.base/d10v.ld: Merge in several years worth of
	default linker script changes.
	* gdb.base/long_long.exp: Add check for sizeof (long double).

2002-06-06  Michal Ludvig  <mludvig@suse.cz>

	* gdb.asm/asm-source.exp: Add x86-64 target.
	* gdb.asm/x86_64.inc: New.

2002-05-30  Michael Chastain  <mec@shout.net>

	From Benjamin Kosnik <bkoz@redhat.com>:
	* gdb.c++/m-static.cc: New file.
	* gdb.c++/m-static.exp: New file.

2002-05-28  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/call-ar-st.exp: Allow for reduced floating point
	precision.

2002-05-27  Michael Chastain  <mec@shout.net>

	From Benjamin Kosnik <bkoz@redhat.com>:
	* gdb.c++/m-data.cc: New file.
	* gdb.c++/m-data.exp: New file.

2002-05-27  Michael Chastain  <mec@shout.net>

	From Benjamin Kosnik <bkoz@redhat.com>:
	* gdb.c++/try_catch.cc: New file.
	* gdb.c++/try_catch.exp: New file.

2002-05-27  Michael Chastain  <mec@shout.net>

	* gdb.c++/local.exp: Accept more nested types in output.

2002-05-26  Michael Chastain  <mec@shout.net>

	* gdb.base/call-rt-st.exp: Fix typo in brace quoting.

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

	* lib/gdb.exp (gdb_wrapper_init): Just because
	gdb_wrapper_file exists, this does not mean that the file
	should not be rebuilt.  That is what gdb_wrapper_initialized
	is for.
	(default_gdb_init): Reset gdb_wrapper_initialized.

2002-05-23  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/all-bin.exp: Revise previous patch by just reducing
	the precision of the floating point test results.
	* gdb.base/call-rt-st.exp: Ditto.

	* gdb.base/all-bin.exp: Allow for reduced floating point precision.
	* gdb.base/call-rt-st.exp: Ditto.

2002-05-19  Michael Chastain  <mec@shout.net>

	* gdb.c++/inherit.exp: Accept "VTT for ..." in output strings.

2002-05-19  Elena Zannoni  <ezannoni@redhat.com>

        * configure.in (configdirs): Add gdb.arch.
        * configure: Regenerate.

2002-05-17  Jim Blandy  <jimb@redhat.com>

	* gdb.base/completion.exp: Recognize the more detailed error
	messages produced by the macro expander's lexical analyzer.

2002-05-14  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.arch/altivec-abi.c: New file.
        * gdb.arch/altivec-abi.exp: New file.
        * gdb.arch/altivec-regs.c: New file.
        * gdb.arch/altivec-regs.exp: New file.

2002-05-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/maint.exp (maint print type): Update for new type
	structure.

2002-05-14  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.arch: New directory.
	* gdb.arch/configure.in: New file.
	* gdb.arch/configure: New file.
	* gdb.arch/Makefile.in: New file.

2002-05-13  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Add v850 as supported target.
	* gdb.asm/v850.inc: New file.

2002-05-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/annota2.exp (annotate-quit): Add comment.

2002-05-12  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/break.exp: Check 'break "marker2"'.

2002-05-10  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/long_long.exp: Fix typo.

2002-05-10  Jim Blandy  <jimb@redhat.com>

	* gdb.base/printcmds.exp: Don't xfail the ptype command.  This is
	a bug.

	* gdb.base/printcmds.exp (test_integer_literals_rejected):
	Recognize more detailed error message produced by the macro
	expander's lexical analyzer.
	* lib/gdb.exp (test_print_reject): Same.

2002-05-09  Mark Kettenis  <kettenis@gnu.org>

	* gdb.c++/method.exp: Fix typo.

2002-05-08  Michael Snyder  <msnyder@redhat.com>

	* gdb.mi/mi-var-child.exp: Accept (void) as well as ().
	* gdb.mi/mi0-var-child.exp: Accept (void) as well as ().
	* gdb.base/default.exp: Merge clauses for arm, strongarm, xscale.
	* gdb.base/long_long.exp: Merge clauses for arm and xscale.
	Add iftarget clause for strongarm.

2002-05-06  Michael Snyder  <msnyder@redhat.com>

	* lib/gdb.exp (gdb_test): Add case to allow for status wrapper.
	(gdb_continue_to_end): Accept output from status wrapper.
	* gdb.base/ending-run.exp: Add case for output from status wrapper.
	Clean up fail messages to match pass messages.

	Enable the "needs_status_wrapper" testsuite feature.
	* lib/gdb.exp (gdb_wrapper_init): New procedure.
	(gdb_compile): Conditionally call gdb_wrapper_init.
	* gdb.base/a2-run.exp: Recognize output from status wrapper.
	* gdb.c++/method.exp: Recognize output from status wrapper.

2002-05-06  Ben Elliston  <bje@redhat.com>
From Graydon Hoare  <graydon@redhat.com>

	* config/sid.exp: Include support for "rawsid" protocol.

2002-05-03  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/hang.exp: Check for corruption of the cv_type chain.
	* gdb.c++/hang3.C: New file.

2002-05-04  Andrew Cagney  <ac131313@redhat.com>

	* gdb.base/default.exp: Remove obsolete code.
	* gdb.c++/misc.exp: Ditto.  Update copyright.
	* gdb.c++/cplusfuncs.exp: Ditto.  Update copyright.
	* gdb.base/whatis.exp: Ditto.  Update copyright.
	* gdb.base/scope.exp: Ditto.  Update copyright.
	* gdb.base/ptype.exp: Ditto.  Update copyright.
	* gdb.base/printcmds.exp: Ditto.  Update copyright.
	* gdb.base/opaque.exp: Ditto.  Update copyright.
	* gdb.base/list.exp: Ditto.
	* gdb.base/funcargs.exp: Ditto.  Update copyright.
	* gdb.hp/gdb.threads-hp/usrthbasic.c: Delete.
	* gdb.hp/gdb.threads-hp/usrthbasic.exp: Delete.
	* gdb.hp/gdb.threads-hp/usrthcore.c: Delete.
	* gdb.hp/gdb.threads-hp/usrthcore.exp: Delete.
	* gdb.hp/gdb.threads-hp/usrthfork.c: Delete.
	* gdb.hp/gdb.threads-hp/usrthfork.exp: Delete.

2002-05-02  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/watchpoint.exp: Add xscale target.
	* gdb.base/long_long.exp: Add xscale target.
	* gdb.base/default.exp: Add xscale target.

2002-05-01  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/hang1.C, gdb.c++/hang2.C, gdb.c++/hang.H,
	gdb.c++/hang.exp: New test.

2002-05-01  Fred Fish  <fnf@redhat.com>

	* gdb.base/completion.exp: Handle completions of "./Make" for
	more than one completion possibility, as is the case when we
	build and test in the source tree.

2002-04-29  Anthony Green  <green@redhat.com>

	* gdb.java/jmisc1.exp: New file.
	* gdb.java/jmisc2.exp: New file.

2002-04-24  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/linux-dp.exp: Use 'unset' instead of 'array unset'.

2002-04-23  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.base/help.exp: Change 'help status' to allow for target
	dependent output differences.

2002-04-22  Michael Chastain  <mec@shout.net>

	* gdb.c++/local.exp: Add PR numbers: gdb/482, gdb/483.

2002-04-22  Michael Chastain  <mec@shout.net>

	* gdb.c++/method.exp: Fix syntax of reference to gdb/277.

2002-04-17  David S. Miller  <davem@redhat.com>

	* gdb.asm/sparc64.inc: New file.
	* gdb.asm/asm-source.exp: Handle sparc64-*-*.

2002-04-19  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.asm/asm-source.exp: Don't use a symlink, just copy the
	instruction file directly into the build tree.  Clean up at end of
	test.

2002-04-18  David S. Miller  <davem@redhat.com>

	* gdb.base/annota1.exp: Expect addresses as $hex + whitespace to
	handle 64-bit platforms correctly.
	* gdb.base/maint.exp: Likewise.

2002-04-18  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/shlib-call.exp (additional_flags): AIX doesn't need
	``-fpic'' when compiling files comprising a shared library, but
	it does need additional linker flags in order to find shared
	libraries at run time.

2002-04-18  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/cvexpr.c (use): New function.
	(main): Invoke use() on all global variables to prevent
	some linkers from deleting these otherwise unused symbols.

2002-04-17  Michael Chastain  <mec@shout.net>
From David S. Miller  <davem@redhat.com>

	* gdb.c++/ovldbreak.exp: Expect addresses as $hex + whitespace to
	handle 64-bit platforms correctly.

2002-04-12  Michael Snyder  <msnyder@redhat.com>
From Jim Blandy  <jimb@redhat.com>
        * gdb.base/foo.c (foox): Remove section attribute; the linker
	script can handle this instead.
	* gdb.base/bar.c (barx): Same.
	* gdb.base/baz.c (bazx): Same.
	* gdb.base/grbx.c (grbxx): Same.

	* gdb.base/overlays.exp: New test: check that GDB's manual overlay
	manager doesn't automatically unmap overlays unnecessarily.

2002-04-10  Martin M. Hunt  <hunt@redhat.com>

	* gdb.base/ending-run.exp: Fix pattern for Mips targets
	stepping out of main.

2002-04-09  Michael Chastain  <mec@shout.net>

	* gdb.c++/local.cc (main): Move call to marker1() inside nested
	scope so that the nested scope tests will make sense.
	* gdb.c++/local.exp: Write patterns that actually work with gcc
	(the HP patterns "were never known to work with gcc").
	Keep the old aCC patterns too.

2002-04-09  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/attach.exp: Correct target board test.

2002-04-08  Michael Chastain  <mec@shout.net>

	* gdb.c++/method.exp: Require "const ... A * ..." for "ptype this"
	in a const method.  Add some xfail and fail cases for configurations
	that do not emit the "const ...".

2002-04-07  Michael Chastain  <mec@shout.net>

	* gdb.c++/method.exp: Use gdb_test instead of send_gdb/gdb_expect.
	Accept "A * const" and "const A * const" as type of "this".
	Fix spelling of getFunky throughout.  Make messages uniform.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

        Work around for PR gdb/285:
	* gdb.asm/asm-source.exp: Bail out if multilibs are detected.

2002-04-07  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.asm/asm-source.exp: Build symbolic link to arch specific
	instructions file at run time instead of configure time.
	Sometimes we run the test in a directory that is not the one we
	configured in.
	* gdb.asm/configure.in: Delete creation of symlink.
	* gdb.asm/configure: Regenerate.

2002-04-05  J. Brobecker  <brobecker@gnat.com>

	* gdb.gdb/xfullpath.exp: New test, to exercise the new
	xfullpath () function.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.asm/Makefile.in: Correct dependencies.

	* gdb.asm/powerpc.inc: New file.
	* gdb.asm/asm-source.exp: Add PowerPC.
	* gdb.asm/configure.in: Likewise.
	* gdb.asm/configure: Regenerated.

2002-04-04  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/relocate.exp: New file.
	* gdb.base/relocate.c: New file.

2002-04-04  Fred Fish  <fnf@redhat.com>

	* gdb.base/step-test.exp: Update comment regarding stopping in
	memcpy/bcopy calls inserted as part of the compiler runtime.

2002-04-04  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/ovlymgr.c: Add overlay event breakpoint support.

2002-04-03  Daniel Jacobowitz  <drow@mvista.com>

	* lib/gdb.exp (gdb_test): Move -notransfer inside of gdb_expect.
	(gdb_expect): Remove $notransfer hack.

2002-04-02  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/classes.exp ("calling method for small class"): Match
	updated register output.

2002-03-30  Daniel Jacobowitz  <drow@mvista.com>

	Fix PR gdb/452
	* gdb.base/dbx.exp: Restore old definition of gdb_file_cmd
	when finished.  Make gdb_file_cmd send "exec-file" when
	appropriate.

2002-03-30  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/attach.exp: Remove extra setup_xfail.

2002-03-26  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/default.exp: Add tests for dump, append, and restore.
	* gdb.base/help.exp: Add tests for dump, append, and restore.
	* gdb.base/dump.exp: New file, test dump, append and restore.
	* gdb.base/dump.c: New file.

2002-03-27  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/help.exp: Modify expect strings to reflect
	clean-ups in help messages.

2002-03-26  Fred Fish  <fnf@redhat.com>

	* gdb.base/step-test.exp: Accept stopping in memcpy/bcopy when we
	have debugging info for those functions and the compiler uses them
	internally to copy structs around.

2002-03-26  Fred Fish  <fnf@redhat.com>

	* gdb.base/list.exp: Revert the change made yesterday and add note
	about why we don't list the default lines for remote targets.

2002-03-25  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/help.exp: Clean up unnecessary wild cards in regexps.

2002-03-25  Fred Fish  <fnf@redhat.com>

	* gdb.base/list.exp: This test works on remote targets so remove
	the short circuit for remote targets.  Update copyright.

2002-03-25  Fred Fish  <fnf@redhat.com>

	* gdb.base/attach.exp: Fix logic error that was suppressing this
	test for all non hppa*-*-hpux* targets, instead of the hp target.
	Move comments closer to the suppression point.  Also now need to
	check that we are running natively.

2002-03-22  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/default.exp: Add test for gcore.  Update copyright.
	* gdb.base/help.exp: Add test for gcore.  Update copyright.

2002-03-06  Fred Fish  <fnf@redhat.com>

	* gdb.base/funcargs.c:  Remove extraneous ';' character.
	* gdb.trace/gdb_c_test.c: Remove extraneous ';' character.

2002-03-04  Michael Chastain  <mec@shout.net>

	* gdb.mi/mi-var-cmd.exp: In test "create local variable func",
	accommodate gcc v3 function signature.
	* gdb.mi/mi0-var-cmd-exp: Ditto.

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

	* testsuite/gdb.base/huge.c: Replace ``Linux'' with either
	``GNU/Linux'' or ``Linux kernel''
	* testsuite/gdb.threads/pthreads.c: Ditto.

2002-02-24  Michael Chastain  <mec@shout.net>

	* gdb.threads/pthreads.c (thread1): Add a return statement.
	(thread2): Likewise.
	(foo): Likewise.

2002-02-23  Michael Chastain  <mec@shout.net>

	* gdb.threads/linux-dp.c (philosopher): Add a return statement
	to placate gcc.

2002-02-23  Michael Chastain  <mec@shout.net>

	* gdb.c++/templates.exp: Remove setup_xfail_format "stabs" on
	test "ptype bint".  The test passes on all my stabs configurations.

2002-02-21  Jim Blandy  <jimb@redhat.com>

	* gdb.asm/asm-source.exp: Parse the output from `info sources' one
	filename at a time, and watch for the ones we want to see.

	* gdb.base/ptype.exp, gdb.base/ptype.c: Add tests for printing
	types of pointers to prototyped functions.

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

	* gdb.base/sizeof.c (main): Call fill_structs.  Print value of
	signed, unsigned and straight char.
	(padding_char, padding_short, padding_int, padding_long,
	padding_long_long, padding_float, padding_double,
	padding_long_double): New global variables.
	(fill, fill_structs): New functions.

	* gdb.base/sizeof.exp: Check for signed and unsigned char.  Check
	for correctly sized writes.  Update copyright.
	(get_valueof): New procedure.
	(get_sizeof): Call get_valueof.
	(check_valueof): New procedure.
	(check_padding): New procedure.

2002-02-20  Michael Chastain  <mec@shout.net>

	* gdb.c++/virtfunc.exp (test_virtual_calls): Remove obsolete calls
	to setup_xfail.  Document some of the remaining calls.

2002-02-18  Michael Chastain  <mec@shout.net>

	* gdb.c++/userdef.exp: Update copyright year.

2002-02-18  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/userdef.exp: Test overloaded operators properly.
	Remove xfails.

2002-02-14  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/gcore.exp: Relax recognition of function breakpoint.

2002-02-14  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/a2-run.exp: Check for a remote target properly.
	* gdb.base/annota1.exp: Likewise.
	* gdb.base/list.exp: Likewise.
	* gdb.base/reread.exp: Likewise.
	* gdb.base/scope.exp: Likewise.
	* gdb.base/shlib-call.exp: Likewise.
	* gdb.base/term.exp: Likewise.
	* gdb.c++/annota2.exp: Likewise.

2002-02-13  Richard Earnshaw  <rearnsha@arm.com>

	* gdb.base/watchpoint.exp: Restore previous timeout at end of test.

2002-02-10  Michael Chastain  <mec@shout.net>

	* gdb.base/funcargs.c (localvars_after_alloca): Fix return type.
	(call_after_alloca): Ditto.

2002-02-10  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/ending-run.exp: Guard "cont" test with
	gdb_skip_stdio_test.

2002-02-06  Jim Blandy  <jimb@redhat.com>

	* gdb.base/callfwmall.c, gdb.base/callfwmall.exp: Move these tests
	from here...
	* gdb.hp/gdb.base-hp/callfwmall.c, gdb.hp/gdb.base-hp/callfwmall.exp:
	To here.  Disable this test on non-HP platforms.  Add big comment.

2002-02-04  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/ovlymgr.c  (ovly_copy): Generalize for targets
	  other than d10v and m32r.

2002-02-02  Richard Earnshaw  <rearnsha@arm.com>

	* gdb.base/default.exp: Rewrite test patterns to reduce time
	taken to match them.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/annota1.exp (backtrace from shlibrary): Fix spelling.
	Allow a start function above main.
	* gdb.threads/linux-dp.exp: Fix copyright date.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

        * gdb.threads/linux-dp.exp: Use 'array unset', not 'array set'.
        (check_philosopher_stack): Check for manager thread before checking
        for a just-starting thread.

2002-01-30  Daniel Jacobowitz  <drow@mvista.com>

	From Neil Booth <neil@daikokuya.demon.co.uk>:
	* gdb.base/bitfields.c: Correct assignments to bitfields to avoid
	warnings.

2002-01-21  Fred Fish  <fnf@redhat.com>

	* gdb.base/restore.exp (restore_tests): Fix obvious typo, callee
	not caller.

2002-01-21  Jim Blandy  <jimb@redhat.com>

	* gdb.base/reread.exp: Check that GDB properly re-reads the
	executable file when it changes while no inferior is running.

2002-01-21  Fred Fish  <fnf@redhat.com>

        * gdb.base/maint.exp: Simplify the "maint info breakpoints" test to
        optionally accept the "shlib events" variation.

2002-01-21  Jim Blandy  <jimb@redhat.com>

	* gdb.base/ending-run.c (main): Avoid messing with setvbuf; just
	call `fflush' after every `printf', so that the output is produced
	at predictable points, regardless of whatever buffering does (or
	doesn't) take place.
	* gdb.base/ending-run.exp: Adjust tests to expect output to appear
	at different points.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/inherit.exp: Update copyright years.
	* gdb.c++/method.exp: Likewise.

2002-01-20  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/classes.exp: Update for improved v3 support and skipping
	artificial methods/arguments.
	* gdb.c++/derivation.exp: Likewise.
	* gdb.c++/inherit.exp: Likewise.
	* gdb.c++/method.exp: Likewise.
	* gdb.c++/virtfunc.exp: Likewise.

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

	* gdb.hp/gdb.threads-hp/usrthfork.exp: Mark as obsolete.
	* gdb.hp/gdb.threads-hp/usrthcore.exp: Ditto.
	* gdb.hp/gdb.threads-hp/usrthbasic.exp: Ditto.
	* gdb.hp/gdb.threads-hp/usrthfork.c: Ditto.
	* gdb.hp/gdb.threads-hp/usrthbasic.c: Ditto.
	* gdb.hp/gdb.threads-hp/usrthcore.c: Ditto.

2002-01-17  Jim Blandy  <jimb@redhat.com>

	* gdb.asm/asm-source.exp (info symbol): Take another shot at
	anchoring the pattern matching the entry point symbol's name.

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

	* gdb.base/maint.exp: Update ``maint internal-error'' to match
	continue/quit query.  Update copyright.

2002-01-14  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/gcore.exp: Remove extra debugging output.

2002-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/demangle.exp: Accept slightly dubious v2 demangler result
	for slightly dubious v2 mangled string.

2002-01-13  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/completion.exp: Expand ${srcdir} to an absolute path.

2002-01-10  Jason Merrill  <jason@redhat.com>

	* gdb.c++/namespace.exp: Accept trailing const for 'this'.

	* gdb.c++/classes.exp: Accept 'A const' or 'const A' in copy
	constructors.
	* gdb.c++/derivation.exp: Likewise.
	* gdb.c++/templates.exp: Likewise.
	* gdb.c++/virtfunc.exp: Likewise.

2002-01-10  Michael Snyder  <msnyder@redhat.com>

	* gdb.c++/namespace.exp: Accept both '\0' and '\000'.

2002-01-08  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/gcore.exp: New test for generate-core-file command.
	* gdb.base/gcore.c: Testcase for above.
	* gdb.threads/gcore-thread.exp: New test for gcore (threaded).

2002-01-08  Jason Merrill  <jason@redhat.com>

	* gdb.c++/userdef.cc: Use <iostream> instead of <iostream.h>.

2002-01-07  Fred Fish  <fnf@redhat.com>

	* gdb.c++/overload.exp: Remove unconditional xfails for:
	print foo_instance1.overloadargs(1)
	print foo_instance1.overloadargs(1, 2)
	print foo_instance1.overloadargs(1, 2, 3)
	print foo_instance1.overloadargs(1, 2, 3, 4)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
	print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
	print foo_instance1.overload1arg()
	print foo_instance1.overload1arg((char)arg2)
	print foo_instance1.overload1arg((signed char)arg3)
	print foo_instance1.overload1arg((unsigned char)arg4)
	print foo_instance1.overload1arg((int)arg7)
	print foo_instance1.overload1arg((unsigned int)arg8)
	print foo_instance1.overload1arg((float)arg11)
	print foo_instance1.overload1arg((double)arg12)

2002-01-07  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/huge.exp: New test.  Print a very large target data object.
	(skip_huge_test): New test variable.  Define if you want to skip this
	test.  The test reads an 8 megabyte data object from the target, so it
	might be very time consuming on remote targets with a slow connection.
	* gdb.base/huge.c: New file.  Test case for above.

2002-01-07  Fred Fish  <fnf@redhat.com>

	* gdb.c++/derivation.exp: Remove gcc xfails for g_instance.afoo,
	g_instance.bfoo, and g_instance.cfoo.

Mon Jan  7 12:22:18 2002  Jeffrey A Law  (law@redhat.com)

 	* gdb.base/break.c (multi_line_if_conditional): New function.
 	(multi_ilne_while_conditional): Likewise.
 	* gdb.base/break.exp: Verify that a breakpoint on a multi-line
 	IF or WHILE condition puts the breakpoint at the start of
 	the condition.

	* gdb.base/selftest.exp (backtrace through signal handler): Remove
	hppa*-*-hpux* expected failure.
	* gdb.base/structs.exp (do_function_calls): Similarly.

	* gdb.c++/annota2.exp (watch triggered on a.x): Handle hardware
	watchpoints.

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

	Fix PR gdb/66.
	* gdb.base/structs.exp: Replace skip for a29k with skip for
	gdb,cannot_call_functions.
	* gdb.base/call-ar-st.exp: Remove references to a29k in comments.
	* gdb.base/callfuncs.exp: Ditto.
	* gdb.base/call-rt-st.exp: Ditto.
	* gdb.base/call-strs.exp: Ditto.
	* gdb.base/callfwmall.exp: Ditto.
	* gdb.base/scope.exp: Obsolete xfail a29k.
	* gdb.c++/misc.exp: Ditto.
	* gdb.c++/cplusfuncs.exp: Ditto.
	* gdb.base/ptype.exp: Ditto.
	* gdb.base/printcmds.exp: Ditto.
	* gdb.base/opaque.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/funcargs.exp: Ditto.
	* gdb.base/default.exp: Ditto.

2002-01-04  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/info-proc.exp: New file, test for "info proc" cmd.
	* gdb.base/maint.exp: Add tests for maint info sections options.

Fri Dec 21 09:42:11 2001  Jeffrey A Law  (law@redhat.com)

	* gdb.base/default.exp: Remove bogus hppa*-hp-hpux* xfails.

2001-12-20  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/arm.inc: New file.
	* gdb.asm/asm-source.exp: Add arm targets.
	* gdb.asm/configure.in: Ditto.
	* gdb.asm/configure: Recreated from configure.in.

Thu Dec 20 09:54:36 2001  Jeffrey A Law  (law@redhat.com)

	* gdb.hp/gdb.defects/bs15503.exp: Only run this test if compiling
	with HP's compiler.
	* gdb.hp/gdb.objdbg/objdbg01.exp: Likewise.
	* gdb.hp/gdb.objdbg/objdbg02.exp: Likewise.
	* gdb.hp/gdb.objdbg/objdbg03.exp: Likewise.
	* gdb.hp/gdb.objdbg/objdbg04.exp: Likewise.

	* gdb.hp/gdb.defects/solib-d.exp: Update to handle building with
	either HP's compilers or GCC.

	* gdb.hp/gdb.base-hp/hwwatchbus.exp: Allow inferior to get either
	a SIGBUS or SIGSEGV.

	* gdb.hp/gdb.base-hp/so-thresh.exp: Remove useless send_user command.

	* gdb.hp/gdb.defects/bs14602.exp: Revamp slightly so that test
	can be compiled with either HP's compiler or GCC.

	* gdb.hp/gdb.threads-hp/usrthbasic.exp: Disable completely.
	* gdb.hp/gdb.threads-hp/usrthcore.exp: Disable completely.
	* gdb.hp/gdb.threads-hp/usrthfork.exp: Disable completely.

	* gdb.hp/gdb.base-hp/so-thresh.exp: Update text in expect strings
	to match current gdb output.  Update due to using auto-solib-limit
	for limiting instead of overloading auto-solib-add.
	* gdb.hp/gdb.base-hp/so-thresh.mk: Always use "cc" to build the
	test program.

	* gdb.c++/templates.exp: Use "hppa64-*-*", not "hppa2.0w-*-*"
	* gdb.hp/gdb.base-hp/dollar.exp: Likewise
	* gdb.hp/gdb.base-hp/pxdb.exp: Likewise.
	* gdb.hp/gdb.base-hp/reg-pa64.exp: Likewise.
	* gdb.hp/gdb.base-hp/reg.exp: Likewise.
	* gdb.hp/gdb.compat/xdb3.exp: Likewise.
	* gdb.hp/gdb.defects/bs15503.exp: Likewise.
	* gdb.hp/gdb.objdbg/objdbg01.exp: Likewise
	* gdb.hp/gdb.objdbg/objdbg02.exp: Likewise
	* gdb.hp/gdb.objdbg/objdbg03.exp: Likewise
	* gdb.hp/gdb.threads-hp/usrthbasic.exp: Likewise.
	* gdb.hp/gdb.threads-hp/usrthcore.exp: Likewise.
	* gdb.hp/gdb.threads-hp/usrthfork.exp: Likewise.

	* gdb.base/annota1.exp: Expect failure for hpux11 when posting
	a SIGTRAP to the inferior.

2001-12-19  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Drop setting link-flags for xstormy16.
	Substitute call to target_link by call to gdb_compile.

Wed Dec 19 14:10:57 2001  Jeffrey A Law  (law@redhat.com)

        * gdb.base/break.exp: Fix HP specific search string when testing
        backtracing in a called function.

        * gdb.base/constvars.exp: Only set lang to C++ if we're
        compiling the test with HP's compilers.
        * gdb.base/volatile.exp: Similarly.

2001-12-19  Jim Blandy  <jimb@redhat.com>

	* gdb.base/printcmds.exp: Expect the null character to be printed
	as '\0', and the '\013' to be printed as '\v'.
	* gdb.base/callfuncs.exp ("backtrace at nested call level 4"): Same.
	* gdb.base/setvar.exp: Same.

2001-12-17  Jim Blandy  <jimb@redhat.com>

	* gdb.base/completion.exp: Rather than completing very long
	filenames, which can make the readline library produce output we
	don't recognize, cd to the directory first, and then complete
	using nice, short relative paths.

	* gdb.base/completion.exp: On some systems, there is, in fact, a
	variable named `b' in scope, since GDB treats all static
        variables as being in scope.  So use `no_var_named_this'
        instead of `b'.

	* gdb.base/corefile.exp: Recognize the message saying that GDB
 	can't find the core file's registers as a failure.

2001-12-13  Jackie Smith Cashion  <jsmith@redhat.com>

        * gdb.base/commands.exp (user_defined_command_test): Make "show user"
        test expect string more specific.

2001-12-13  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-source.exp: Add support for xstormy16.
	* gdb.asm/configure.in: Ditto.
	* gdb.asm/configure: Rebuild.
	* gdb.asm/xstormy16.inc: New file.

2001-12-10  Fred Fish  <fnf@redhat.com>

	* gdb.base/maint.exp: Update to match changes in type dumping code.

2001-12-10  Jim Blandy  <jimb@redhat.com>

	* gdb.asm/asm-source.exp (info symbol): Anchor the pattern
 	matching the entry point symbol's name at the beginning of the
 	line.

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/classes.exp, gdb.c++/derivation.exp,
	gdb.c++/inherit.exp, gdb.c++/method.exp,
	gdb.c++/namespace.exp, gdb.c++/templates.exp,
	gdb.c++/userdef.exp, gdb.c++/virtfunc.exp: Updates for v3 demangler
	and class layout support.

2001-12-07  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.c++/classes.exp: Add test for static member function.
	* gdb.c++/misc.cc: Add class with static member function.

2001-12-07  Jim Blandy  <jimb@redhat.com>

	If GDB says it can't find the struct the function returned, report
	those tests as `unsupported'.
	* gdb.base/call-rt-st.exp (print_struct_call): New function.
	Rewrite subsequent tests to use it.

	If GDB says it can't find the struct the function returned, report
	those tests as `unsupported'.
	* gdb.base/structs.exp (call_struct_func): New function.
	(do_function_calls): Use call_struct_func to call the functions
	returning structs.

	* gdb.base/callfuncs.exp: The stabs generated by GCC don't tell us
	whether functions are prototyped or not, so we can't possibly pass
	arguments to t_float_values2 properly.

	* gdb.base/break.exp: (test_next_with_recursion): Don't change the
	value of `timeout' for targets other than the mips*tx39-*.

2001-12-06  Michael Snyder  <msnyder@redhat.com>

	* gdb.asm/asm-source.exp: Add tests for info target, info symbol,
	and detect whether the start symbol has a leading underscore.

2001-12-04  Jim Blandy  <jimb@redhat.com>

	* gdb.base/completion.exp: Clarify indentation.

2001-12-03  Jim Blandy  <jimb@redhat.com>

	* gdb.asm/s390.inc (gdbasm_datavar): Use `.long' to create `int'
	variables on the S/390, not `.word'.

2001-11-30  Jim Blandy  <jimb@redhat.com>

	Add assembly-source tests for s390-ibm-linux.
	* gdb.asm/s390.inc: New file.
	* gdb.asm/configure.in, gdb.asm/asm-source.exp: Add clauses for
	the S/390 architecture.
        * gdb.asm/configure: Regenerated.

2001-11-30  Michael Snyder  <msnyder@redhat.com>

	* gdb.asm/asm-source.exp: Add tests for list, search, finish, return,
	next, info source, info sources, info line, global and static
	variables, and static functions.
	* gdb.asm/common.inc: New macro gdbasm_datavar (default definition).
	* gdb.asm/i386.inc: Override default definition of gdbasm_datavar.
	* gdb.asm/asmsrc1.s: Add a static function and some variables.
	* gdb.asm/asmsrc2.s: Make foo2 call foo3 twice (to test 'next').
	* gdb.asm/d10v.inc (gdbasm_enter): Set up frame pointer.
	(gdbasm_leave): Restore frame pointer.
	(gdbasm_startup): Copy stack set-up from crt0.S.

2001-11-26  Fernando Nasser  <fnasser@redhat.com>

	From 2001-11-12 Jackie Smith Cashion  <jsmith@redhat.com>:
	* gdb.base/callfuncs.c (t_structs_a): Do not return a pointer
	to a local (non-static) variable. Copy tstruct.a to a static buffer
	and return a pointer to that buffer.
	* gdb.base/callfwmall.c (t_structs_a): Ditto.

2001-11-24  Mark Kettenis  <kettenis@gnu.org>

	* gdb.asm/configure.in: Fix recognition of ix86 target.
	* gdb.asm/configure: Regenerate.

2001-11-21  Michael Snyder  <msnyder@redhat.com>

	* gdb.asm/sparc.inc: New file.
	* gdb.asm/asm-source.exp: Recognize sparc target.
	* gdb.asm/configure.in: Recognize sparc target.
	* gdb.asm/configure: Regenerate.

2001-11-21  Michael Snyder  <msnyder@redhat.com>

	* gdb.asm/m32r.inc: New file.
	* gdb.asm/asm-source.exp: Recognize m32r target.
	* gdb.asm/configure.in: Recognize m32r target.
	* gdb.asm/configure: Regenerate.

2001-11-20  Michael Snyder  <msnyder@redhat.com>

	* gdb.asm/i386.inc: New file.
	* gdb.asm/asm-source.exp: Recognize ix86 target.
	* gdb.asm/configure.in: Recognize ix86 target.
	* gdb.asm/configure: Regenerate.

	* gdb.c++/namespace.exp: Fix quotes in output messages.

2001-11-14  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/code-expr.exp: New file.  Tests use of the "@code"
	qualifier in a type cast expression, to designate an address
	in the instruction space (Harvard architecture).

2001-11-13  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/cvexpr.c, gdb.base/cvexpr.exp: New files.
	Tests for expressions using 'const' and 'volatile'.

2001-11-13  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.asm/asm-sources.exp: Allow defining linker flags.

2001-11-12  Daniel Jacobowitz  <drow@mvista.com>

	* lib/mi-support.exp (mi_run_to_helper): Move comments
	outside of gdb_expect.

2001-11-11  Daniel Jacobowitz  <drow@mvista.com>

	* lib/mi-support.exp: (mi_run_to_helper, mi_run_to,
	mi_step_to, mi_next_to, mi_continue_to, mi_finish_to,
	mi0_step_to, mi0_next_to, mi0_continue_to, mi0_finish_to,
	mi0_run_to): New functions.
	* gdb.mi/mi-simplerun.exp: Use them.
	* gdb.mi/mi0-simplerun.exp: Likewise.
	* gdb.mi/mi-var-cmd.exp: Likewise.
	* gdb.mi/mi0-var-cmd.exp: Likewise.

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

	* gdb.asm/asmsrc1.s: Add ``gdbasm_'' prefix to all macros.
	* gdb.asm/asmsrc2.s, gdb.asm/d10v.inc: Update.

2001-11-09  Andrew Cagney  <ac131313@redhat.com>

	* gdb.base/restore.exp: Include $expected value in restored test
	message.

2001-11-09  Andrew Cagney  <ac131313@redhat.com>

	* gdb.asm/asm-source.exp: Supress file, instead of skip, when not
	implemented.

2001-11-08  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/callfuncs.exp: Add tests for nested call dummies.
	Add pass/fail message for stop at breakpoint in call dummy function.

2001-11-07  Michael Snyder  <msnyder@redhat.com>

	* gdb.c++/templates.exp (test_template_breakpoints):
	If we get an overload menu, but it does not match what
	we expect, we still need to issue the "cancel" command.
	* gdb.c++/templates.exp: Replace "void \\*" with "void ?\\*",
	making the whitespace optional.  Argument for "new" may be
	"unsigned" as well as "unsigned int/long".
	* gdb.c++/templates.exp: Replace "const &" with "const ?&",
	making the whitespace optional.  Also replace "(void) with
	"((void|)), making the keyword "void" optional.
	* gdb.c++/virtfunc.exp: Replace "const &" with "const ?&",
	making the whitespace optional.  Also replace "(void) with
	"((void|)), making the keyword "void" optional.
	* gdb.base/callfuncs.c (t_float_values): This function must
	_not_ be prototyped, and the following function (t_float_values2)
	must be prototyped (if the compiler supports it), so that GDB
	can be tested against both cases.  Usually one case involves
	promotion of float to double, while the other does not.
	* gdb.base/callfwmall.c: Ditto.
	* gdb.asm/asm-source.exp (bt ALL in foo2): Accept a backtrace that
	includes a stack frame for "start".

2001-11-05  Jim Blandy  <jimb@redhat.com>

	* gdb.stabs/weird.exp: Delete "p v_comb" test.  It assumes that
	pointers are 32 bits long, and that offsets of relocs are always
	stored in the data (REL-style), and not in the reloc entry itself
	(RELA-style).
	* gdb.stabs/weird.def (v_comb, v_comb_shared): Remove symbols and
	stabs.

2001-11-01  Michael Snyder  <msnyder@redhat.com>

	* gdb.c++/cplusfuncs.exp: Fix conflicts between operator names
	and regular expression operators by using quoting.

2001-10-31  Michael Snyder  <msnyder@redhat.com>

	* gdb.c++/overload.exp: Select overloadfnarg(void) or overloadfnarg(),
	depending on what the symbol table contains.
	* gdb.c++/derivation.exp: Accept both "foo(void)" and "foo()" in
	the output of the ptype command.  Similarly, accept both "const &"
	and "const&".

2001-10-31  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/miscexprs.c (main): Add usage of preprocessor
	symbol `STORAGE' to allow to choose the storage class of
	the local datastructures.
	* gdb.base/miscexprs.exp: Handle setting a `-DSTORAGE=...'
	compiler directive.

2001-10-30  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/jump.exp: Allow it to run for all targets.

2001-10-29  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/call-ar-st.c (print_double_array): Match for loop
	with new double_array size.
	(main): Change storage class of all local variables to static.
	Reduce size of double_array to 9.
	* gdb.base/call-ar-st.exp:  Increase timeout value.
	Change expected output for double array to match new size in
	call-ar-st.c.

2001-10-29  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.exp: Create identical output when passing
	`step to end of run' case.  Add regular expression branch satisfying
	Stormy16 target.

2001-10-28  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/interrupt.exp: Treat SIGILL similar to SIGSEGV such
	that we catch the expected failure under Linux/x86.

2001-10-29  Orjan Friberg  <orjanf@axis.com>

	* gdb.base/setvar.exp: Escape curly braces.
	* gdb.stabs/weird.exp: Ditto.

2001-10-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.mi/mi-hack-cli.exp: Remove excess newlines from test strings.
	* gdm.mi/mi0-hack-cli.exp: Likewise.

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

	* gdb.stabs/weird.exp: Unify ``variable VAR printed properly''
	messages.

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

	* lib/mi-support.exp (mi_gdb_start): Don't require MI_OUT when
	checking MI enabled.

2001-10-09  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/maint.exp: Treat $EXEEXT as optional in output.

2001-10-04  Frank Ch. Eigler  <fche@redhat.com>

	* lib/insight-support.exp (gdbtk_start): Don't exit dejagnu
	if gdb child process crashes, just signal an error.

2001-10-02  Jim Blandy  <jimb@redhat.com>

	* lib/gdb.exp (test_xfail_format): Simplify.

	* lib/gdb.exp (setup_xfail_format): Don't forget to put a `$' in
	front of the variable name `format'.  Simplify `if'.

2001-10-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.threads/pthreads.exp: Wait for output and delay
	before sending ^C.

2001-10-01  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.mi/mi-var-display.exp (continue to incr_a):  Recognize
	some incorrect output instead of timing out.
	* gdb.mi/mi-var-display.exp (continue to incr_a):  Likewise.

2001-09-28  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/volatile.exp (local_compiler_xfail_check): Change qux2
	check to allow additional `int'.

2001-09-27  Daniel Jacobowitz  <drow@mvista.com>

	* gdb.base/completion.exp: Remove incorrect 'p "a' test.
	Add tests for 'p "break' (pass) and 'p "break.' (xfail).

2001-09-27  Michael Snyder  <msnyder@redhat.com>

	* lib/gdb.exp (test_debug_format): New proc.
	(setup_xfail_format): Use new proc test_debug_format.
	* gdb.base/constvars.exp (local_compiler_xfail_check): New
	proc; use new service proc test_debug_format.
	Replace all other "gcc_compiled" tests with this test.
	* gdb.base/volatile.exp (local_compiler_xfail_check): New
	proc; use new service proc test_debug_format.
	Replace all other "gcc_compiled" tests with this test.

2001-09-27  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/cvexpr.exp: New file.
	* gdb.base/cvexpr.c: New file
	Test for expressions using const and volatile keywords.

2001-09-26  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/constvars.exp: Check for different orders of keywords
	and additional "int" strings in output.

2001-09-22  Andrew Cagney  <ac131313@redhat.com>

	* gdb.base/maint.exp: Add "maintenance set/show" to list of valid
	responses from "help maint".

2001-09-19  Frank Ch. Eigler  <fche@redhat.com>

	* lib/insight-support.exp (_gdbtk_xvfb_init): Set DISPLAY
	to localhost:NNN instead of :NNN, in case Xvfb is listening
	only on TCP.

2001-09-19  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/recurse.exp: When checking leaving the watchpoint
	scope, recognize when gdb is in function's epilogue and pass.

2001-09-18  Keith Seitz  <keiths@redhat.com>

	* lib/insight-support.exp (_gdbtk_export_target_info): Add
	support for running tests against sid targets.
	(gdbtk_done): Ditto.

2001-09-18  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/ending-run.c (main): Set stdout buffersize
	to the same reasonable value for any target.
	* gdb.base/ending-run.exp: Add a regular expression
	to make testsuite happy on Sanyo Stormy16 target.

2001-09-17  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/display.c (do_loops): Add float variable `f'.
	Increment f in loop.
	* gdb.base/display.exp: Increment timeout by 60 seconds.
	Change float display test to use variable `f'.

2001-09-17  Jim Blandy  <jimb@redhat.com>

	* gdb.base/restore.exp: Use temporary breakpoints, to avoid
	overflowing the limited breakpoint tables on some ROM monitors
	(like the ROM68K).

2001-09-15  Frank Ch. Eigler  <fche@redhat.com>

	* lib/insight-support.exp (_gdbtk_xvfb_init): Start Xvfb with
	the "-ac" (disable access control) flag.

2001-08-30  Jeff Holcomb  <jeffh@redhat.com>

	* gdb.base/remote.c: Use a small buffer for targets with 16-bit
	ints.

2001-08-30  Keith Seitz  <keiths@redhat.com>

	* lib/gdb.exp: Move all insight-related functionality into
	separate file.
	* lib/insight-support.exp: New file.

2001-08-29  Frank Ch. Eigler  <fche@redhat.com>

	* config/sid.exp (sid_start): Never set sid verbosity; disable
	expect_background {} that consumed its stdout; tolerate </dev/null.
	Attempt to set endianness override in "sid" protocol mode.  Cleanup.

2001-08-18  Andrew Cagney  <ac131313@redhat.com>

	* lib/mi-support.exp (mi_gdb_start): If a remote target, use the
	CLI jump command to start it.
	(mi_run_to_main): Fail immediatly when unexpected output.

2001-08-18  Andrew Cagney  <ac131313@redhat.com>

	* lib/mi-support.exp (mi_gdb_start): Move call to sid_start to
	beginning of function.  Fix PR gdb/191.

2001-08-16  Frank Ch. Eigler  <fche@redhat.com>

	* config/sid.exp (sid_start): Don't warn if we cannot figure out
	what to force sid endianness to.

2001-08-15  Keith Seitz  <keiths@redhat.com>

	* lib/gdb.exp (gdbtk_start): Don't set environment
	variables for TCL_LIBRARY and friends. Insight will
	now figure these out for itself.

2001-08-02  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/completion.exp: Remove the symbol "a64l" from
	the expect string; this is target-specific, and not related
	to what is being tested.

2001-08-02  Dave Brolley  <brolley@redhat.com>

	* config/sid.exp: Rename gdb-socket to cpu-gdb-socket.

2001-07-25  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/consecutive.exp: New file.  Test stepping over
	breakpoints on consecutive instructions.
	* gdb.base/consecutive.c: New file.

	* gdb.base/call-rt-st.exp: Use double-backslash to quote
	curly braces in regular expressions.

2001-07-25  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/ending-run.exp: Accept "Program exited normally" as
	legitimate output from stepping out of main.

2001-07-22  Keith Seitz  <keiths@redhat.com>

	* lib/gdb.exp (_gdbtk_xvfb_init): If GDB_DISPLAY is
	the empty string, do not run the tests.

2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.base/long_long.exp: Detect size of pointer.  Take into
	account 2-byte pointers when testing for p/a results.

2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.base/remote.c (RANDOM_DATA_SIZE): New define, defaults to 48K
	and defined to 1K for m68hc11.
	(random_data): Reduce table to 1K for embedded platforms (68hc11).
	* gdb.base/remote.exp (get_sizeof): New function from sizeof.exp.
	(sizeof_random_data): New variable to tell the size of the data table;
	don't test past this size; always run to main.

2001-07-16  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* gdb.base/return2.exp: return of long long and double fails for
	68HC11; don't execute these tests on that platform.
	* gdb.base/return.exp: Return of a double fails for 68hc11.

2001-07-16  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* call-ar-st.exp: Use gdb_skip_float_test to avoid executing
	tests that print a float.
	* call-rt-st.exp: Likewise.

2001-07-12  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/so-impl-ld.exp: Remove stray space that prevented
	running this test on Linux.

2001-06-24  Michael Chastain  <chastain@redhat.com>

	* gdb.base/arithmet.exp: Remove some tests to make all test names
	unique.

2001-07-03  Michael Snyder  <msnyder@redhat.com>

	* gdb.c++/classes.exp: Accept both "foo(void)" and "foo()" in
	the output of the ptype command.

2001-07-02  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/completion.exp: Don't assume that break.c is the only
	source file that may contain functions named "marker".
	* gdb.base/corefile.exp: Quote the curly braces in regexp.

2001-06-28  Andrew Cagney  <ac131313@redhat.com>

	* gdb.disasm/Makefile.in (clean mostlyclean): Add h8300s to list
	of files to delete.

	From 2000-06-15 Kazu Hirata <kazu@hxi.com>:
	* gdb.disasm/h8300s.exp: New file.
	gdb.disasm/h8300s.s: Likewise.

2001-06-27  Andrew Cagney  <ac131313@redhat.com>

	* lib/mi-support.exp (mi_delete_breakpoints): Accept mi1 format
	empty breakpoint tables.

2001-06-25  Andrew Cagney  <ac131313@redhat.com>

	* lib/mi-support.exp: Update args=... part of stop-reason
	patterns. Accept either a list or a tuple.

2001-06-23  Andrew Cagney  <ac131313@redhat.com>

	* lib/mi-support.exp: Remove local emacs variable defining
	change-log-default-name.

2001-06-22  Michael Chastain  <chastain@redhat.com>

	* gdb.base/arithmet.exp: Use gdb_test instead of send_gdb/gdb_expect.
	This is operationally compatible with the previous version.

2001-06-13  Jim Blandy  <jimb@redhat.com>

	* lib/gdb.exp (gdb_test): Doc fix.

2001-06-10  Michael Chastain  <chastain@redhat.com>

	* gdb.base/exprs.exp: Remove a duplicate test.

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* gdb.base/return2.exp (main): Use values to test float and double
	returns that are not NaN's, to avoid being confused by IEEE
	comparison rules.

2001-06-04  Michael Snyder  <msnyder@redhat.com>

	* gdb.threads/pthreads.exp (check_control_c): Return 0 for success,
	non-zero if control_c fails.  Terminate the test on failure,
	rather than wait for 12 more tests to time out.

2001-06-06  Jim Blandy  <jimb@redhat.com>

	* gdb.base/exprs.exp ("sizeof (long long) > sizeof (long) (true)"):
	Don't forget to match the GDB prompt.

	* gdb.trace/gdb_c_test.c, actions.c: Fix misspellings.

2001-06-04  Jim Blandy  <jimb@redhat.com>

	* gdb.base/help.exp: Update pattern to exclude `print-load-map'
	command.

2001-05-31  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/annota1.exp (info break): Match four or more spaces
	after "Address".

2001-05-31  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/cplusfuncs.cc (dm_type_char_star): Remove superfluous cast.
	(dm_type_int_star): Likewise.
	(dm_type_long_star): Likewise.
	(dm_type_void_star): Likewise.

2001-05-29  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/completion.exp (INPUTRC): Set this environment variable
	to a known value in order to get consistent results regardless
	of the setting of INPUTRC or the presence or contents of .inputrc.

2001-05-24  Michael Snyder  <msnyder@redhat.com>

	* gdb.threads/linux-dp.exp: Remove assumptions about thread ordering.
	Don't require that the main thread and the manager thread are the
	first in the list.

	* gdb.threads/pthreads.exp (test_startup): Relax test for thread
	debugging.  If test fails, issue an "unsupported" not a "fail".

2001-05-24  Jim Blandy  <jimb@redhat.com>

	Don't assume that short is shorter than int.
	* gdb.base/exprs.exp ("print unsigned short == (~0)"): Don't
	assume that shorts are smaller than ints.  On a 16-bit machine,
	this isn't true.
	("print unsigned char == (~0)"): Add test that verifies that ~0,
	an int, is not equal to ~0 stored in an unsigned char.  This tests
	the same thing that the previous test meant to, but works on
	16-bit machines, too.
	("print unsigned char != (~0)"): Same test, complemented.

2001-05-24  Michael Snyder  <msnyder@redhat.com>

	* gdb.threads/pthreads.exp (all_threads_running): Add an explicit
	test for (full_coverage == 0).  This makes the test run faster,
	and prevents dejagnu getting out of step.

2001-05-23  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/finish.exp (finish_void): Revise pattern for
	stopping on the call statement to not permit stopping at
	the start of the instructions comprising the call sequence.

2001-05-19  Michael Chastain  <chastain@redhat.com>

	* gdb.base/callfuncs.exp: Make all test names unique.
	* gdb.base/commands.exp: Make all test names unique.
	* gdb.base/condbreak.exp: Make all test names unique.
	* gdb.base/dbx.exp: Make all test names unique.
	* gdb.base/default.exp: Make all test names unique.
	* gdb.base/define.exp: Make all test names unique.  Conform some FAIL
	and TIMEOUT messages to their corresponding PASS message.
	* gdb.base/ending-run.exp: Make all test names unique.
	* gdb.base/long_long.exp: Remove duplicate test.

2001-05-21  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/finish.exp (finish_void): Allow "finish" command to
	stop on the call statement as well as the statement after the
	call.

2001-05-21  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/long_long.exp: Allow for targets with 4-byte short.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

        * gdb.base/completion.exp: Revamp test. Make it execute on all
        platforms.

2001-05-10  Elena Zannoni  <ezannoni@redhat.com>

        * config/gdbserver.exp (gdb_load): Handle the case
        in which the arguments to gdbserver are given in the
        baseboard configuration file.
        Also handle the case in which the server needs to do a
        load.

2001-05-07  Keith Seitz <keiths@cygnus.com>

        * lib/gdb.exp (gdbtk_initialize_display): New proc which will
        set up the display for testing.
        (gdbtk_start): Convert all paths to paths that tcl will like.
        Export target information to environment.
        (_gdbtk_xvfb_init): New proc to start Xvfb if available and
        necessary.
        (_gdbtk_xvfb_exit): New proc to kill Xvfb if necessary.
        (to_tcl_path): New proc to convert a given pathname into
        a path acceptible as an argument to a tcl command.
        (_gdbtk_export_target_info): New proc to export target info
        into the environment for gdbtk testing.
        (gdbtk_done): New proc to signal end-of-test.

2001-05-06  Jim Blandy  <jimb@redhat.com>

	* restore.c: Make the code of caller0 correspond to its comment.

2001-05-03  Michael Snyder  <msnyder@redhat.com>

	* config/sid.exp (gdb_target_sid): Check for error messages.
	On error or timeout, don't make expect exit (which will terminate
	all subsequent tests); instead just make gdb exit.
	(gdb_load): Check for error messages.  On error or timeout,
	return a negative value.

2001-04-24  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/templates.exp: If we see the prompt for the overload
	list, but we haven't recognized any of the longer patterns,
	arrange for this test to fail, not hang.

	* gdb.c++/classes.exp (ptype class A): Tolerate whitespace
	variations.

2001-04-22  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/local.exp: Use the 'runto' library function.
	* gdb.c++/namespace.exp: Likewise.
	* gdb.c++/overload.exp: Likewise.

2001-03-26  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/Makefile.in (EXECUTABLES): Add step-line.
	* gdb.base/step-line.exp: New file.  Test step/next in presence of
	#line directives.
	* gdb.base/step-line.c: New file.  Test program for the above.
	* gdb.base/step-line.inp: New file.  We pretend that this file has
	been transformed by some other tool into step-line.c.

2001-03-21  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/userdef.exp: Check that GDB tolerates whitespace in
	unmangled operator names.

2001-03-20  Jim Blandy  <jimb@redhat.com>

	* gdb.threads/linux-dp.exp: Recognize an additional message
	generated by GDB when it doesn't understand how to debug threads
	on the target system.

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

	* gdb.mi/mi-console.exp: Document ``Hello'' as a known bug.

2001-03-12  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/derivation.exp: Use the 'runto' library function.

2001-03-12  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/annota2.exp: Fix regular expression for "post-query".

2001-02-24  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/ref-types.exp: Change handwritten code to library
	function 'runto'.

2001-03-16  Orjan Friberg  <orjanf@axis.com>

	* gdb.base/signals.exp: Set count to 0 explicitly.

2001-03-15  Mark Salter  <msalter@redhat.com>

	* config/monitor.exp (gdb_target_cmd): Add explicit error return.
	(gdb_target_monitor): Add check of gdb_target_cmd return value.
	(gdb_load): Add support for additional target_info: gdb_download_size
	and gdb_load_timeout.

Thu Mar  8 16:06:00 2001  David Taylor  <taylor@redhat.com>

	* gdb.base/annota1.exp: Move test of isnative to earlier in the
 	file -- to prevent failing when the compile fails but we have no
 	intention of running the tests anyway.

	* gdb.base/long_long.exp: Test target_info for no_long_long, skip
	tests if set.

	* gdb.base/maint.exp: Support 2 byte integers as well as 4 byte
 	integers.

	* gdb.c++/ctti.exp: Skip tests if skip_cplus_tests returns true.
	* gdb.c++/namespace.exp: Ditto.

2001-03-07  Orjan Friberg  <orjanf@axis.com>

	* gdb.base/pointers.c: Don't assume doubles are >= 8 bytes.
	* gdb.base/pointers.exp: Relax pattern match of decimals.

2001-03-06  Kevin Buettner  <kevinb@redhat.com>

	* Makefile.in, config/abug.exp, config/cfdbug.exp,
	config/cpu32bug.exp, config/dve.exp, config/est.exp,
	config/gdbserver.exp, config/hmsirom.exp, config/hppro.exp,
	config/i960.exp, config/m32r.exp, config/mn10300-eval.exp,
	config/monitor.exp, config/proelf.exp, config/rom68k.exp,
	config/sh.exp, config/sid.exp, config/slite.exp,
	config/sparclet.exp, config/udi.exp, config/unknown.exp,
	config/vr4300.exp, config/vr5000.exp, config/vx.exp,
	config/vxworks.exp, config/vxworks29k.exp,
	gdb.asm/asm-source.exp, gdb.base/a2-run.exp,
	gdb.base/all-bin.exp, gdb.base/annota1.exp,
	gdb.base/arithmet.exp, gdb.base/assign.exp,
	gdb.base/async.exp, gdb.base/attach.exp,
	gdb.base/bitfields.exp, gdb.base/bitops.exp,
	gdb.base/break.exp, gdb.base/call-ar-st.exp,
	gdb.base/call-rt-st.exp, gdb.base/call-strs.exp,
	gdb.base/callfuncs.exp, gdb.base/callfwmall.exp,
	gdb.base/commands.exp, gdb.base/completion.exp,
	gdb.base/cond-expr.exp, gdb.base/condbreak.exp,
	gdb.base/constvars.exp, gdb.base/corefile.exp,
	gdb.base/dbx.exp, gdb.base/default.exp, gdb.base/define.exp,
	gdb.base/display.exp, gdb.base/ena-dis-br.exp,
	gdb.base/ending-run.exp, gdb.base/environ.exp,
	gdb.base/eval-skip.exp, gdb.base/exprs.exp,
	gdb.base/finish.exp, gdb.base/foll-exec.exp,
	gdb.base/foll-fork.exp, gdb.base/foll-vfork.exp,
	gdb.base/funcargs.exp, gdb.base/help.exp,
	gdb.base/interrupt.exp, gdb.base/jump.exp, gdb.base/list.exp,
	gdb.base/logical.exp, gdb.base/long_long.exp,
	gdb.base/maint.exp, gdb.base/mips_pro.exp,
	gdb.base/miscexprs.exp, gdb.base/nodebug.exp,
	gdb.base/opaque.exp, gdb.base/overlays.exp, gdb.base/page.exp,
	gdb.base/pointers.exp, gdb.base/printcmds.exp,
	gdb.base/ptype.exp, gdb.base/radix.exp, gdb.base/recurse.exp,
	gdb.base/regs.exp, gdb.base/relational.exp,
	gdb.base/remote.exp, gdb.base/reread.exp,
	gdb.base/restore.exp, gdb.base/return2.exp,
	gdb.base/scope.exp, gdb.base/sect-cmd.exp,
	gdb.base/selftest.exp, gdb.base/setshow.exp,
	gdb.base/setvar.exp, gdb.base/shlib-call.exp,
	gdb.base/sigall.exp, gdb.base/signals.exp,
	gdb.base/sizeof.exp, gdb.base/so-impl-ld.exp,
	gdb.base/so-indr-cl.exp, gdb.base/solib.exp,
	gdb.base/step-test.exp, gdb.base/structs.c,
	gdb.base/structs.exp, gdb.base/structs2.exp,
	gdb.base/term.exp, gdb.base/twice.exp, gdb.base/varargs.exp,
	gdb.base/volatile.exp, gdb.base/watchpoint.exp,
	gdb.base/whatis-exp.exp, gdb.base/whatis.exp,
	gdb.c++/ambiguous.exp, gdb.c++/annota2.exp,
	gdb.c++/anon-union.exp, gdb.c++/classes.exp, gdb.c++/ctti.exp,
	gdb.c++/derivation.exp, gdb.c++/inherit.exp,
	gdb.c++/local.exp, gdb.c++/member-ptr.exp, gdb.c++/method.exp,
	gdb.c++/misc.exp, gdb.c++/namespace.exp, gdb.c++/overload.exp,
	gdb.c++/ref-types.exp, gdb.c++/templates.exp,
	gdb.c++/userdef.exp, gdb.c++/virtfunc.exp,
	gdb.disasm/am33.exp, gdb.disasm/hppa.exp,
	gdb.disasm/mn10200.exp, gdb.disasm/mn10300.exp,
	gdb.fortran/types.exp, gdb.java/jmisc.exp,
	gdb.java/jv-exp.exp, gdb.java/jv-print.exp,
	gdb.stabs/weird.exp, gdb.threads/linux-dp.exp,
	gdb.trace/actions.exp, gdb.trace/backtrace.exp,
	gdb.trace/circ.exp, gdb.trace/collection.exp,
	gdb.trace/deltrace.exp, gdb.trace/infotrace.exp,
	gdb.trace/limits.exp, gdb.trace/packetlen.exp,
	gdb.trace/passc-dyn.exp, gdb.trace/passcount.exp,
	gdb.trace/report.exp, gdb.trace/save-trace.exp,
	gdb.trace/tfind.exp, gdb.trace/tracecmd.exp,
	gdb.trace/while-dyn.exp, gdb.trace/while-stepping.exp,
	lib/gdb.exp, lib/mi-support.exp: Update/correct copyright
	notices.

2001-02-27  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/varargs.c (find_max_double): Fix printf format string:
	first arg is int not float.

2001-02-22  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/reread.exp: Unsupported for non-native targets;
	doesn't work for remote debugging.

2001-02-19  Fernando Nasser  <fnasser@redhat.com>

	From  Drew Moseley  <dmoseley@redhat.com>
        * gdb.base/ending-run.exp: Properly handle the BSP state when
        stepping past the end of main.

2001-02-19  John Moore  <jmoore@redhat.com>

	* gdb.base/commands.exp (infrun_breakpoint_command_test):
	Converted HPUX fix for non-expected items following multiple
	step commands into general solution for all platforms.

2001-02-18  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/classes.exp (do_tests): Change runto statements
	from "runto 'foo(void)'" to "runto 'foo'".  This makes the
	statements demangler agnostic.
	* gdb.c++/virtfunc.exp (do_tests): Likewise.
	(gdb_virtfunc_restart): Likewise.

2001-02-14  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/inherit.exp (do_tests): Change runto statements
	from "runto 'foo(void)'" to "runto 'foo'".  This makes the
	statements demangler agnostic.

Sun Feb  4 17:32:21 2001  Andrew Cagney  <cagney@redhat.com>

	* gdb.threads/pthreads.exp: Unify pass/fail messages for
 	``continue to bkpt at common_routine in thread 2'' and ``stopped
 	before calling common_routine 15 times'' tests.

2001-02-11  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/cplusfuncs.cc (dm_type_char_star): New function.
	Helps the test script figure out which demangler is in use.
	(dm_type_foo_ref): Ditto.
	(dm_type_int_star): Ditto.
	(dm_type_long_star): Ditto.
	(dm_type_unsigned_int): Ditto.
	(dm_type_void): Ditto.
	(dm_type_void_star): Ditto.
	* gdb.base/cplusfuncs.exp (probe_demangler): New function.
	Probe the gdb demangler and set variables to accommodate
	formatting differences.
	(info_func_regexp): New function.  Same as info_func, but
	matches against a regexp.
	(info_func): Match against a literal string.
	(print_addr_2): New function.  Match against a literal string,
	which can be different from the input to gdb.
	(print_addr): Simply call print_addr_2 with the same argument twice.
	(test_lookup_operator_functions): Use demangler formatting variables.
	Blow away the xfails and workarounds for gnats gdb bug gdb/18.  Sort
	the tests in the same order as the C++ class declaration.
	(test_paddr_operator_functions): Ditto.
	(test_paddr_overloaded_functions): Ditto.
	(test_paddr_hairy_functions): Use demangler formatting variables.
	Add reference to gdb/19 for related tests.
	(do_tests): Call probe_demangler.

2001-01-30  Kevin Buettner  <kevinb@redhat.com>

	* gdb.c++/templates.cc (printf): Remove unused function definition.

2001-01-26  Felix Lee  <flee@redhat.com>

	* sid.exp (sid_exit): Pass host, not target, to remote_close.

2001-01-25  matthew green  <mrg@redhat.com>

	* config/sid.exp (sid_start): Call `remote_push_conn' after firing
	up sid.
	(sid_exit): Call `remote_pop_conn' after GDB is gone.

2001-01-25  matthew green  <mrg@redhat.com>

	* config/sid.exp (sid_start): Use `remote_spawn' instead of `spawn.'
	Deprecate $sid_spawn_id.
	(sid_exit): Remove code necessary only for `spawn.'

2001-01-25  matthew green  <mrg@redhat.com>

	* config/sid.exp (sid_start): Handle sim,protocol of `sid.'

2001-01-28  Michael Chastain  <chastain@redhat.com>

	* gdb.c++/ovldbreak.exp (take_gdb_out_of_choice_menu): New proc
	to call when tests fail.  It takes gdb out of the overloaded
	function choice menu back to the main prompt, so that the test
	program stays synchronized.
	(set_bp_overloaded): New proc to collect all the common
	code for setting a breakpoint on an overloaded name.  Calls
	take_gdb_out_of_choice_menu when needed.
	(menu_overload1arg): New variable to collect the repeated
	instances of the expected menu for an overloaded name.  Change
	the regular expression to handle changes in g++ type encoding:
	"void" can be either "void" or "", and "unsigned int" can be
	either "unsigned int" or "unsigned".
	(continue_to_bp_overloaded): Change regular expressions to handle
	changes in g++ type encoding.
	(no proc): Call take_gdb_out_of_choice_menu when needed.
	Remove redundant calls to "info break".  Accept either "canceled"
	or "cancelled".  Change regular expressions in "info break"
	calls to handle changes in g++ type encoding.  Give all tests
	unique strings.

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

	* config/sid.exp: New file.

Fri Jan 12 18:29:01 2001  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/callfuncs.exp: Add space after ``Value returned is''.

2000-12-21  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/finish.exp: Accept '1' instead of \001 from char_func.
	Add a RE to accept a non-ascii char if one is ever presented.

2000-12-20  Fernando Nasser  <fnasser@redhat.com>

	* lib/mi-support.exp (mi_gdb_start): Test for MI_OUT, not UI_OUT.

2000-12-18  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/setvar.exp: Use double '\\' to quote curly braces
	in regexp.  One '\' does not suffice on Linux.

2000-12-09  Michael Chastain  <chastain@redhat.com>

	* gdb.base/break.exp (test_clear_command): Use a marker function
	rather than 'main' for the test function.  Also move this
	test to an execution point where the marker function names are
	guaranteed to be bound to functions.  (Executing tests after a
	'finish' from main runs into name conflicts with local names
	in __libc_start_main).

2000-12-07  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/finish.exp: New test for gdb's "finish" command.
	* gdb.base/return2.exp: New test for gdb's "return" command.
	* gdb.base/return2.c: New source file for above.

2000-12-05  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/constvars.exp: Add a "pass" message if "up" succeeds.
	* gdb.base/miscexprs.exp: Ditto.
	* gdb.base/pointers.exp:  Ditto.
	* gdb.c++/derivation.exp: Ditto.
	* gdb.c++/local.exp:      Ditto.
	* gdb.c++/namespace.exp:  Ditto.
	* gdb.c++/overload.exp:   Ditto.
	* gdb.c++/ref-types.exp:  Ditto.

2000-12-05  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/constvars.exp: Test result of "up" command.
	* gdb.base/miscexprs.exp: Ditto.
	* gdb.base/pointers.exp:  Ditto.
	* gdb.base/scope.exp:     Ditto.
	* gdb.c++/derivation.exp: Ditto.
	* gdb.c++/local.exp:      Ditto.
	* gdb.c++/namespace.exp:  Ditto.
	* gdb.c++/overload.exp:   Ditto.
	* gdb.c++/ref-types.exp:  Ditto.

2000-11-22  Michael Chastain  <chastain@redhat.com>

	* mips_pro.exp: Accept either "middle -> top -> main" or
	"middle -> main" in the backtrace, because gcc can optimize
	tail calls to jumps.  Remove setup_xfail for the hppa case.
	Add a comment with the original warning messages from PR 3016,
	which was filed in 1993, to preserve them for posterity.

2000-11-17  Nick Duffek  <nsd@redhat.com>

	* lib/gdb.exp (gdb_test): Override timeout with board info.

2000-11-17  Nick Duffek  <nsd@redhat.com>

	* gdb.base/display.exp: Don't kill running stub.  Add "again" to
	the second kill and detach messages.

2000-11-17  Nick Duffek  <nsd@redhat.com>

	* configure.in: Add AC_EXEEXT.
	* configure: Regenerate.
	* Makefile.in (just-check): Export EXEEXT.
	* lib/gdb.exp ($EXEEXT): Import from environment.
	* gdb.base/maint.exp: Expect $EXEEXT in executable name.  Don't
	expect "maint dump-me" on Cygwin.
	* gdb.base/reread.exp ($binfile, $binfile1, $binfile2): Append
	$EXEEXT.

2000-11-17  Nick Duffek  <nsd@redhat.com>

	* gdb.base/break.exp: Test backtrace and finish from called
	function on all platforms, not just HP-UX.

2000-11-03  Michael Snyder  <msnyder@cygnus.com>

	* config/monitor.exp (gdb_target_cmd): Abstracts some of the
	code from gdb_target_monitor, so it can be used independantly
	for gdbserver.  Also comment out an unnecessary PUTS.

2000-11-03  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/a2-run.exp: Use gdb_skip_stdio_test.
	* gdb.base/corefile.exp: Expect the message "Program is being
	debugged already" when we send the "corefile" command, since
	the preceeding gdb_load may have connected gdb to a remote target.
	* gdb.base/display.exp: Disable hardware watchpoints if new
	board info variable "no_hardware_watchpoints" is true.
	Replace single-letter commands with more readable ones.
	* gdb.base/recurse.exp (recurse_tests): Disable hardware watchpoints
	if new board info variable "no_hardware_watchpoints" is true.
	* gdb.base/restore.exp (restore_tests): Call gdb_skip_stdio_tests
	to see if stdio (printf) testing is possible.
	* gdb.base/watchpoint.exp: Disable hardware watchpoints if new
	board info variable "no_hardware_watchpoints" is true.  Use new
	proc "gdb_skip_stdio_tests" to see if printf tests are possible.

2000-11-13  Fernando Nasser  <fnasser@redhat.com>

	From Orjan Friberg  <orjanf@axis.com>:
	* gdb.base/printcmds.exp: Escape curly braces followed by a number
	in array print pattern match.

2000-11-09  Fernando Nasser  <fnasser@redhat.com>

	* gdb.c++/templates.exp (test_template_breakpoints): Change Britsh
	spelling "cancelled" to U.S. spelling "canceled" to match changes
	made to gdb.
	* gdb.c++/ovldbreak.exp: Ditto.

2000-11-06  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* gdb.base/callfuncs.c (main):  Moved to end of file, call
	t_double_values to initialize the FPU before inferior calls are made.
	* gdb.base/callfuncs.exp:  Test for register preservation after calling
	inferior functions.  Add tests for continuining, finishing and
	returning from a stop in a call dummy.

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

	* gdb.base/commands.exp: Break up long lines, and re-indent.

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

	* config/gdbserver.exp:  Rewritten from the ground up, to make it
	compatible with the current dejagnu tree, and to make it work with
	the new "gdbserver" in libremote.

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

	* gdb.base/sizeof.exp (check_sizeof): Skip if no printf support.
	* gdb.base/varargs.exp: Skip entire test if no printf support.
	* gdb.base/ending-run.exp (Step to return): Skip if no printf supt.
	* gdb.base/shlib-call.exp: Skip several tests if no printf support.

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

	* lib/gdb.exp (gdb_skip_float_test): New proc.  Skip test if
	no floating point support.
	(gdb_skip_stdio_test): New proc.  Skip test if no stdio support.
	* gdb.base/call-ar-st.exp: Use above procs to skip tests.
	* gdb.base/call-rt-st.exp: Ditto.
	* gdb.base/call-strs.exp: Ditto.

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

	* gdb.base/sizeof.c: include <stdio.h>.

	* gdb.c++/classes.exp: Use gdb_test instead of send_gdb to
        'finish', otherwise uncaptured gdb_prompt would potentially
        throw remaining test points out of sync.

2000-07-26  Scott Bambrough <scottb@netwinder.org>

	* gdb.base/recurse.exp: Run tests for all targets.
	* gdb.base/so-impl-ld.exp: Added wildcard to handle the
	gnu-oldld case on ARM.
	* gdb.base/watchpoint.exp (test_stepping): Clear xfail
	for ARM targets.

Mon Jul 24 07:46:02 CDT 2000  Clinton Popetz  <cpopetz@cygnus.com>

	* gdb.java/configure.in (AC_INIT): Use jmisc.exp.
	* gdb.java/configure: Rebuild.

Sun Jul 23 21:42:34 2000  Anthony Green  <green@redhat.com>

	* gdb.java/jv-exp.exp: New file.

Sun Jul 23 21:02:42 2000  Anthony Green  <green@redhat.com>

	* configure: Rebuilt.
	* configure.in (configdirs): Add gdb.java.
	* gdb.java/jmisc.java: New file.
	* gdb.java/jmisc.exp: New file.
	* gdb.java/Makefile.in: New file.
	* gdb.java/configure: Rebuilt.
	* gdb.java/configure.in: New file.
	* lib/java.exp: New file.

Wed Jul 12 18:14:29 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/exprs.exp: Test casts to a pointer including over and
 	underflow.

Thu Jul 13 11:52:53 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/sizeof.exp, gdb.base/sizeof.c: New files.  Compare GDB
 	and the compilers sizes.

2000-07-09  Nick Duffek  <nsd@redhat.com>

	* gdb.c++/misc.cc (class ClassParam, class_param): Define.
	(use_methods): New function.
	(main): Call use_methods().
	* gdb.c++/classes.exp (test_method_param_class): New procedure.
	(do_tests): Call test_method_param_class.

2000-07-09  Nick Duffek  <nsd@redhat.com>

	* gdb.c++/classes.exp (test_nonexistant_members): Fix name
	spelling.
	(test_enums): New procedure.  Move enum tests from end of script
	to here.  Set breakpoint on function name instead of line number.
	* gdb.c++/misc.cc (ClassWithEnum): Move past Foo definitions.
	(enums2): New marker function.
	(enums1): New function.
	(main): Call enums1().  Move enum tests to enums1().

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

	* gdb.asm/asm-source.exp: Use raw AS/LD instead of CC to
 	compile/link program.  Update line numbers.
	* gdb.asm/d10v.inc: Define ``startup''.
	* gdb.asm/asmsrc1.s: Add definition of _start.

Fri Jun 23 17:45:52 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/call-ar-st.exp: More rewrites of multi-line patterns.

2000-06-18  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/maint.exp: Add 'maint print architecture' item to output
 	of 'help maint print' command.

Fri Jun 16 18:22:05 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/call-ar-st.exp: Rewrite all multi-line patterns so that
 	they use gdb_expect_list.

Wed Jun  7 13:02:40 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/commands.exp: Use ``set remote
 	memory-read-packet-size'' instead of ``set endian big'' to test
 	long commands.

2000-06-03  Daniel Berlin  <dan@cgsoftware.com>

	* gdb.c++/templates.exp (do_tests): Make all of these work under
	g++, and stop skipping them.

	* gdb.c++/namespace.exp: Move from gdb.hp/gdb.aCC to here, make it
	work under g++.

	* gdb.c++/misc.cc: Fix ambiguous initialization with correct
	initialization.

2000-06-02  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/annota1.exp (run until main breakpoint): Loosen up
	the regular expression: accept an (almost) arbitrary sequence of
	"frames-invalid" and "breakpoints-invalid" messages both before
	and after the "starting" message.

2000-06-02  Michael Snyder  <msnyder@cygnus.com>

	* gdb.c++/local.exp: This test has never been known to work with g++.

2000-05-18  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/annota1.exp (annotate-signal-handler-caller):
	Relax the regular expression a little, make it pass on Solaris 8.

2000-05-12  Kevin Buettner  <kevinb@redhat.com>

	* gdb.base/step-test.exp: On IA-64 targets, when stepping out of
	a call, do not require that gdb stop on the line after the call.
	Instead, it is permissible for gdb to stop on the line of the
	call itself.

2000-05-12  Michael Snyder  <msnyder@.cygnus.com>

	* gdb.base/break.exp (bp on small function, optimized file):
	Add a second pass pattern.  The behavior differs here between stabs
	and dwarf for one-line functions.  Stabs preserves two line symbols
	(one before the prologue and one after) with the same line number,
	but dwarf regards these as duplicates and discards one of them.
	Therefore the address after the prologue (where the breakpoint is)
	has no exactly matching line symbol, and GDB reports the breakpoint
	as if it were in the middle of a line rather than at the beginning.

2000-05-08  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/interrupt.exp: Make "pass" message say "send"
	rather than "send_gdb" (for consistancy).

Mon May  1 15:37:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	From 2000-04-28 Andreas Jaeger  <aj@suse.de>:
	* gdb.c++/templates.cc: Properly check for GCC version number.
	* lib/compiler.cc: Likewise

2000-04-28  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/break.exp: When compiled with -O2 optimization,
	gdb may not stop at the first line of main, due to code motion.

2000-04-26  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/call-ar-st.exp: Bail out if target is sparclet.
	This test depends on parsing the printf output from the target.
	Since the sparclet stub doesn't do stdio, this will never work.
	* gdb.base/call-rt-st.exp: ditto.
	* gdb.base/call-strs: ditto.

2000-04-24  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/miscexprs.exp: make sizeof long array test portable.

	* gdb.base/ending-run.exp: After connecting to a remote target,
	but before running, the target will appear to be in a random
	location.  Specify both a file and a line for breakpoints.
	Also, the function that calls main may be called 'init'
	rather than 'start'.

2000-04-17  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/help.exp: Update output for add-symbol-file command.

2000-04-10  Fernando Nasser  <fnasser@cygnus.com>

	From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
	* gdb.base/structs2.c: Support platforms defaulting to a unsigned char.

2000-04-07  J.T. Conklin  <jtc@redback.com>

	* gdb.base/call-ar-st.exp: Relax patterns matching tab characters.

	* gdb.base/funcargs.exp: Relax patterns matching pointers to char.

Thu Mar 30 13:26:19 2000  Philippe De Muyter  <phdm@macqel.be>

	* gdb.base/call-ar-st.c (init_small_structs, main): Use floating-point
 	values that can be represented exactly.
	* gdb.base/call-ar-st.exp (print print_small_structs): Fixed to match
	above change, and to not check against the directory part of the source
	file name.
	(step into print_long_arg_list): Likewise.
	(print print_small_structs from print_long_arg_list): Likewise.
	(print print_long_arg_list): Likewise.

2000-03-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/printcmds.c: Terminate char array ctable2 with 0.

Mon Mar 27 14:46:37 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* ChangeLog, gdb.base/commands.exp: Revert whitespace changes.

2000-03-25  Daniel Berlin  <dan@cgsoftware.com>

	* gdb.base/commands.exp (deprecated_command_test): Add test for
	deprecate with no arguments.

2000-03-24  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* gdb.base/break.exp: Add new test for setting breakpoints on
	optimized code so we can test breakpoints work even when function
	prologues may be optimized away

2000-03-23  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	From David Whedon <dwhedon@gordian.com>
        * gdb.base/commands.exp : Added command deprecator tests.

2000-03-22  Daniel Berlin   <dan@cgsoftware.com>

       * gdb.base/help.exp: Added test for new apropos command.

2000-03-21  Kevin Buettner <kevinb@redhat.com>

	* gdb.base/pointers.c (usevar): New function.
	(main): Make sure that global variables v_int_pointer2, rptr,
	and y are all referenced someplace in the program by calling
	usevar() on them.  [Some linkers delete symbols which are
	never referenced.  The space remains, but there's no way to
	get a (symbolic) handle on the variable from the debugger.]

2000-03-14  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/printcmds.c: Add typedeffed arrays.

	* gdb.base/printcmds.exp (test_print_typedef_arrays): New
 	procedure to test arrays that are typedef'd.

2000-03-13  James Ingham  <jingham@leda.cygnus.com>

	* lib/gdb.exp: Fix the gdbtk_start routine to correctly find all
	the library directories.

Mon Feb 21 13:05:36 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (configdirs): Add sub directory gdb.mi.
	* configure: Re-generate.

	* gdb.mi: New directory.

2000-02-25  Scott Bambrough <scottb@netwinder.org>

	* gdb.base/long_long.exp: Correct test suite failure when printing
 	a long long value as a double on ARM platforms.

2000-02-16  Jim Blandy  <jimb@redhat.com>

	* gdb.base/break.exp ("breakpoint line number"): Make sure the
	default source file is set properly before running this test.

2000-02-14  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* lib/gdb.exp: Tell the testsuite that now gdbtk is in the
 	gdbtk/library directory, not in gdbtcl2.

2000-02-04  Jim Blandy  <jimb@redhat.com>

	* gdb.c++/templates.exp: ("ptype T5<int>"): Remove extraneous
	backslash from regexp pattern.

	* gdb.c++/ovldbreak.exp (continue_to_bp_overloaded): New
	procedure.  Use it to run all the "continue to bp overloaded"
	tests.  Note that this changes the names of the tests slightly.
	If the breakpoint hit message includes a hex PC value, because
	GCC's Dwarf 2 line info doesn't help us distinguish the prologue
	from the real source code, still consider that a pass.

	* gdb.base/condbreak.exp ("run until breakpoint at marker2"):
	XFAIL here if the breakpoint message contains a hex address.  Note
	similar change on 1999-11-02.

	* gdb.base/step-test.exp: Comment Fernando's change of 2000-02-02.

	* gdb.base/ptype.exp: Establish a default source file before
	calling get_debug_format.

2000-02-03  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/watchpoint.exp: Remove duplication of test messages.

2000-02-02  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/step-test.exp: Fix the steps to enter a callee by means
	of successive stepi commands -- while in the prologue we should see
	the function entry bracket.

2000-02-02  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/ending-run.exp: Add ARM in thumb mode case, where we
	reach __change_mode() when stepping through the end of main().

2000-01-17  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/default.exp: Fix expected pattern.
	* gdb.base/help.exp: Same.

2000-01-10  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/so-indr-cl.exp: Don't execute the test if not on HPUX.
  	Don't use xfail's because that affects only the following test.

	* gdb.base/so-impl-ld.exp: Don't execute the tests if not on hpux,
 	solaris or linux.

	* gdb.base/selftest.exp: Update to reflect changes to main.c.

2000-01-07  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/display.exp: Some yacc parsers like to say
	"A syntax error" rather than "A parse error".  Accept both.

2000-01-06  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/default.exp: Remove OS dependent string from "target
	remote" test.
	* gdb.base/help.exp: Same for "help target remote" test.

2000-01-04  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	From Jim Kingdon <kingdon@redhat.com>:

	* gdb.c++/annota2.exp: Fix "delete bps" test to wait for the
 	prompt (cleanup rather than necessity, but still might keep output
 	from spilling to next test).

2000-01-02  Fred Fish  <fnf@cygnus.com>

	* gdb.base/ptype.c (FALSE, TRUE): #undef these to avoid clash on
	AIX, which defines them in <sys/types.h>.

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

	* gdb.base/default.exp: Match arm* etc instead of arm in "info
 	float" test.

1999-12-13 Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/watchpoint.exp: Add missing "(timeout)" to test message.

	* gdb.base/break.exp: Add missing anchor to reg exp on "finish from
	outermost frame disallowed".

1999-12-09  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* gdb.base/setvar.exp: New tests for setting the value of a struct
	with a constant list.

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

	* gdb.base/setvar.exp: Remove pair os tests that expected gdb to
	require the user to type a cast before setting the value of a struct.

1999-12-06  Jim Blandy  <jimb@cygnus.com>

	* gdb.base/default.exp: Expect the new 'info float' command on
	all i386 platforms.

	* gdb.threads/linux-dp.exp: Expand our ability to recognize
	LinuxThreads libraries that don't support debugging.

Sat Dec  4 15:21:18 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/remote.c: Fill the buffer with truely random data.
  	Change the buffer type to ``unsigned char'' to simplify size
 	arithmetic.

	* gdb.base/remote.exp: Reduce download numbers by one.  Typical
 	stub only handles 400-1 byte packets.  Verify that the download
 	worked.

1999-11-30  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* lib/gdb.exp (gdb_expect_list): FAIL only once on multiple pattern
	tests, using UNRESOLVED for the untested cases.  Also, does not wait
	for a timeout if the prompt was received before a recognizable pattern.

1999-11-29  Fernando Nasser  <fnasser@totem.to.cygnus.com>

	* lib/gdb.exp (gdb_expect_list): Fix spelling.

1999-11-29  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/watchpoint.exp: Add tests cases for the hit count of
 	watchpoints.

1999-11-24  Jason Merrill  <jason@casey.cygnus.com>

	* gdb.base/condbreak.exp: Add missing '$gdb_prompt $'.

	* gdb.c++/local.exp: Be more flexible in recognizing local class
	name mangling.  Don't allow horribly truncated method names.
	* gdb.c++/derivation.exp: Expect protected inheritance.
	* gdb.c++/inherit.exp: Be more flexible in recognizing vbase pointers.
	* gdb.c++/virtfunc.exp: Likewise.
	* gdb.c++/classes.exp: Likewise.  Don't require the enclosing scope
	when printing a nested enum.

1999-11-22  Jim Blandy  <jimb@cygnus.com>

	* gdb.base/step-test.exp: Properly await GDB's response to setting
	a breakpoint on the call to large_struct_by_value.

	* gdb.base/ending-run.exp ("step to end of run 1"): Don't fail
	just because we have debug info for the `start' function.

1999-11-19  Jim Blandy  <jimb@zenia.red-bean.com>

	* gdb.threads/linux-dp.exp ("create philosopher"): Recognize the
	"Unknown signal" messages, which indicate (on LinuxThreads) that
	GDB doesn't know how to debug threads on this system.  This is
	better than hanging while philosopher 0 dumps chatter into gdb.log.

1999-11-18  Tom Tromey  <tromey@cygnus.com>

	* gdb.trace/deltrace.exp: Updated test to reflect new error text.

1999-11-18  Fred Fish  <fnf@cygnus.com>

	* gdb.base/coremaker2.c: Add sample program for generating
	cores that is more self contained than coremaker.c.  Eventually
	I'll add more code to this and tie it into the testsuite.

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

	* gdb.base/dollar.exp: Remove, now in gdb.hp.

1999-11-10  Jimmy Guo  <guo@cup.hp.com>

	* gdb.exp (get_compiler_info): pick up compiler.c and compiler.cc
 	from $srcdir/lib/.
	* lib/compiler.c, lib/compiler.cc: New files, moved from gdb.base/
 	and gdb.c++/.

	* gdb.c++/derivation.exp: remove redundant get compiler info code.

	* gdb.base/commands.exp: add '$gdb_prompt $' anchor to
	'continue with watch' test point.

1999-11-08  Jim Blandy  <jimb@zenia.red-bean.com>

	Merged from p2linux-990323-branch:

	* lib/gdb.exp (gdb_continue_to_breakpoint): New function.

Mon Nov  8 23:07:09 1999  Andrew Cagney  <cagney@amy.cygnus.com>

	* gdb.base/remote.exp: Test ``set remote memory-write-packet-sized
 	{limit,fixed}''.  Test ``set download-write-size''.

Sun Nov  7 17:37:01 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/funcargs.exp: Rewrite stack traceback checks using
 	gdb_expect_list.

Fri Nov  5 18:40:52 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/gdb.exp (gdb_expect_list): Return a success/fail indication.

1999-11-03  Mark Salter  <msalter@cygnus.com>

	* gdb.base/break.exp: Fix "stub continue" pattern.

1999-11-03  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.base/shlib-call.exp ("next to shr1"): Fix test name.

1999-11-02  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.base/display.exp ("finish"): Add timeout clause.

	* gdb.base/condbreak.exp ("run until breakpoint at marker1"): Add
	plain prompt clause, so this doesn't have to time out in order to
	fail.

	* gdb.base/condbreak.exp, gdb.base/ena-dis-br.exp: XFAIL if the
 	breakpoint hit messages include an address.

	* gdb.base/display.exp: Don't forget to escape parens in regular
	expressions.  Unix regexp notatation sucks.

1999-11-02  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/annota1.exp: Test for annotate-signalled: change output
 	order for 'signalled' message.

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

	From Jimmy Guo  <guo@cup.hp.com>:
	* gdb.base/annota1.exp: Add tests for annotate ignore count change.
	* gdb.base/annota1.c: Add code for tests to work with.

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

	* gdb.base/remote.exp: New test for remote downloading settings.
	* gdb.base/remote.c: New file with large .data.

1999-10-18  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.threads/linux-dp.c, gdb.threads/linux-dp.exp: New test suite
	for LinuxThreads support, merged from the Code Fusion branch.

Mon Oct 11 13:57:21 1999  Andrew Cagney  <cagney@amy.cygnus.com>

	* lib/gdb.exp (gdb_run_cmd): Break complicated gdb_expect
 	containing exp_continue into a while within an expect.  Don't
 	attempt a start more than three times.  Check return value from
 	gdb_load.

Wed Oct  6 12:05:58 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/watchpoint.exp: Match fail ``finish from marker1'' with
 	a pass case.

1999-10-01  Kevin Buettner <kevinb@cygnus.com>

	* gdb.base/break.c (main): Added a statement that we can step
	off of.
	* gdb.base/break.exp: Added tests for setting a breakpoint
	at an offset and stepping onto a breakpoint.

1999-10-01  Fred Fish  <fnf@cygnus.com>

	* gdb.base/help.exp (help add-symbol-file): Update to match current
	gdb output.

1999-09-18  Jim Blandy  <jimb@cris.red-bean.com>

	* gdb.base/break.exp: Code locations are in hex, don't forget!
	(For HP-UX.)

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

	* condbreak.exp: Use break.c as test program.
	* condbreak.c: Remove, redundant with break.c.

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

	* config/monitor.exp (gdb_target_monitor): Disable X- and
 	Z-packets if the target needs it.

1999-09-13  James Ingham  <jingham@leda.cygnus.com>

	* gdb.c++/overload.exp: Added tests for listing overloaded
	functions with function pointers in the arg, explicitly calling
	out the version you want.

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

	* long_long.exp: Add variations of test cases that work for
	targets with 16-bit ints and 32-bit doubles.

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

	* break.c (main): Compare a possibly-uninitialized argc with an
	unlikely value that fits in 16 bits.

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

	* gdb.base/restore.c, gdb.base/restore.exp: Use 0x7eeb instead of
	0xfeeb, don't want negative numbers if ints are 16 bits.

	* lib/gdb.exp (skip_cplus_tests): New proc.
	* gdb.c++/ambiguous.exp, gdb.c++/annota2.exp,
 	gdb.c++/anon-union.exp, gdb.c++/classes.exp,
 	gdb.c++/cplusfuncs.exp, gdb.c++/ctti.exp, gdb.c++/demangle.exp,
 	gdb.c++/derivation.exp, gdb.c++/inherit.exp, gdb.c++/local.exp,
 	gdb.c++/member-ptr.exp, gdb.c++/method.exp, gdb.c++/misc.exp,
 	gdb.c++/overload.exp, gdb.c++/ovldbreak.exp,
 	gdb.c++/ref-types.exp, gdb.c++/templates.exp, gdb.c++/userdef.exp,
 	gdb.c++/virtfunc.exp: Use it to skip over C++ tests.

	* gdb.c++/cplusfuncs.exp: Use get_compiler_info consistently.

Fri Sep  3 15:37:12 1999  Kevin Buettner  <kevinb@cygnus.com>

	* gdb.base/corefile.exp (up): Allow a parameter to appear
	in the frame that we're going up to.

	From Jim Blandy <jimb@cygnus.com>:

	* gdb.base/default.exp (info float): Expect some output now.

	* gdb.base/callfuncs.exp (do_function_calls): We no longer expect
	returning floating-point values to fail on the x86.
	* gdb.base/callfwmall.exp (do_function_calls): Same.

	* gdb.base/list.exp (test_listsize): Correct expectations for
	listing line 1 with listsize 2.  Also, listing a single line
	works now, as does listing three lines.  [Kevin's note: There
	were a number of other cases fixed too where the expectations
	differed...]

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

	* gdb.base/selftest.exp: Add case for when version prints as
	constant string instead of char pointer.

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

	* gdb.base/ending-run.exp: Add Solaris case for what happens when
 	stepping out of main.

	* gdb.c++/derivation.exp: XFAIL inf fn calls for all configs, if
	G++ used.

	* gdb.c++/local.exp: Expect ptype NestedInnerLocal to succeed
 	always, expect ptype InnerLocal::NestedInnerLocal to fail always.

	* gdb.c++/ovldbreak.exp: Update match string in test that
	includes a warning of multiple breakpoints.

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

	* gdb.base/display.exp: Improve precision of step-after-finish
	added yesterday.

	* gdb.base/signals.exp: Add extra wildcard to "handle all print"
 	test.

	* gdb.c++/classes.exp: XFAIL HP-compiler-only tests for all
	configs when using G++, not just hppa*.

1999-08-24  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/async.c: New file.
	* gdb.base/async.exp: New file.

Tue Aug 24 03:24:53 1999  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/break.exp: Tweak PA specific tests to properly handle
	PA64.

Mon Aug 23 10:25:20 1999  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/display.exp: "finish" can leave us mid-line on many
	targets, deal with it.  Add a small constant to main, instead of
	1000 since main+1000 may not be a valid address in the target.

	* gdb.base/dollar.exp: Do not run for PA processors in wide mode
	on hpux11.

	* gdb.base/attach.exp: Handle another hpux11 error message variant
	when attaching to a process that does not exist.

1999-08-19  J.T. Conklin  <jtc@redback.com>

	* gdb.base/call-ar-exp.exp: Fix pattern matching whitespace
 	characters in 'continue to 1241' test.

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

	* gdb.base/call-ar-st.exp: Add a shorter match case for the
	stop in print_long_arg_list, define and use a whitespace
	variable in print_small_structs test, add an XFAIL for Solaris.
	* gdb.base/dbx.exp: XFAIL func commands until somebody is
	interested enough to fix.

1999-08-13  Keith Seitz  <keiths@cygnus.com>

	* gdb.base/dbx.exp (dbx_gdb_file_cmd): Rename to gdb_file_cmd.
	(dbx_gdb_load): Remove. Use gdb_load instead, since that
	proc knows about targets other than the natives.
	(test_assign): Use "gdb_run_cmd" to "run" the target.
	Check that we've actually hit the breakpoint at main.
	When we attempt to assign a value to a local variable, check
	that the variable is in the current scope, i.e., don't use
	a test with an empty result.

Tue Aug 10 15:25:16 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/maint.exp: Add test of ``maintenance internal-error''
 	command.

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

	From Jimmy Guo <guo@cup.hp.com> and others at HP:
	gdb.hp: Move tests into subdirectories gdb.aCC, gdb.base-hp,
	gdb.compat, gdb.threads-hp.
	gdb.hp/configure, gdb.hp/configure.in: New files.
	gdb.hp/Makefile.in: Recurse into new subdirs.
	gdb.hp/gdb.defects: New directory, tests for HP bug reports.
	gdb.hp/gdb.objdbg: New directory, tests for debugging info
	in object files.
	gdb.hp/tools: New directory, aux tools for HP-specific tests.

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

	* gdb.base/display.exp: Help expect by putting a newline in the
 	funky printf, remove a bogus p/a test.

1999-08-05  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/display.exp: Make sure that when we say 'run', we are
 	connected to the target. This is necessary when running not
 	natively.

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

	* gdb.base/step-test.exp: Removed some extraneous messages.

	* gdb.base/long_long.exp: Don't run memory examination tests
	on little-endian targets (they will need a different set of
	results to match).

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

	* gdb.c++/virtfunc.exp: Expect to fail the virtual call tests
	until somebody decides to fix GDB.

	* gdb.base/long_long.c: Stop compiler complaint by specifying long
 	constant as "ULL".
	* gdb.base/long_long.exp: Loosen x/c test, add partial result
	matches for a couple x/2 commands.

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

	* gdb.c++/ref-types.cc, gdb.c++/ref-types.exp: Appease doschk
	by merging in ref-types2 tests.
	* gdb.c++/ref-types2.cc, gdb.c++/ref-types2.exp: Remove.

	From Jimmy Guo <guo@cup.hp.com> and others at HP:
	* gdb.c++/Makefile.in: Add standard actions.
	(EXECUTABLES): Rename from PROGS, update list.
	* gdb.c++/ambiguous.cc, gdb.c++/ambiguous.exp: Move to here
	from gdb.hp.
	* gdb.c++/anon-union.cc: Don't use anonymous struct, make
	foo and bar locals.
	* gdb.c++/anon-union.exp: Fix tests to match.
	* gdb.c++/classes.exp: Run if HP compiler used, add extra
	expect matches to handle output variations.
	* gdb.c++/cplusfuncs.cc: Make operator -> return foo *.
	* gdb.c++/cplusfuncs.exp: Update to match, allow word "class" in
 	output, add HP alternatives for new and delete prints.
	* gdb.c++/ctti.exp, gdb.c++/cttiadd.cc, gdb.c++/cttiadd1.cc,
 	gdb.c++/cttiadd2.cc, gdb.c++/cttiadd3.cc: Move here from gdb.hp.
	* gdb.c++/demangle.exp: Use $style when reporting failure.
	* gdb.c++/derivation.exp: Add some xfails if GCC-compiled.
	* gdb.c++/inherit.exp: Run if HP compiler used, add some
	match alternatives.
	* gdb.c++/local.exp: Add match alternatives or xfails for HP
 	compilers.
	* gdb.c++/member-ptr.exp: Add xfails for hppa*-*-*.
	* gdb.c++/method.exp: Add match alternatives.
	* gdb.c++/misc.cc: Add bool types.
	* gdb.c++/misc.exp: Add tests for bool types.
	* gdb.c++/overload.exp: Add xfails.
	* gdb.c++/templates.cc: Remove bogus arglist init, init fvpchar.
	* gdb.c++/templates.exp: Run if HP compiler used, add some xfails,
	add some more template parameter tests (only for HP currently).
	* gdb.c++/userdef.exp: Add xfails for hppa*-*-*.
	* gdb.c++/virtfunc.cc: Add return type and value for main.
	* gdb.c++/virtfunc.exp: Run if HP compiler used, add some
	match alternatives.

1999-07-30  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/display.exp: Fix output of 'p/a &&j' test.

1999-07-29  Jim Blandy  <jimb@savonarola.red-bean.com>

	* gdb.base/signals.exp: Don't expect getting a backtrace from
	within a signal handler to fail on Linux.

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

	From Jimmy Guo <guo@cup.hp.com> and others at HP:
	* lib/gdb.exp: Remove some gratuitious semicolons.
	(delete_breakpoints): Increase timeout.
	(gdb_expect): Add -notransfer option.
	(gdb_test): Use -notransfer option.
	(get_compiler_info): Add f77 case.
	(get_compiler): New proc, split out from gdb_preprocess, add f77
 	case.
	(gdb_preprocess): Call get_compiler.

	* gdb.base/Makefile.in (EXECUTABLES): Update the list.
	* gdb.base/attach.exp, gdb.base/display.exp,
 	gdb.base/ending-run.exp, gdb.base/gdbvars.exp,
 	gdb.base/long_long.exp, gdb.base/printcmds.exp,
 	gdb.base/structs.exp, gdb.base/structs2.exp: Remove or fill in
 	third arg to gdb_test.
	* gdb.base/call-ar-st.exp: Add HP-UX xfail for >10-arg functions.
	* gdb.base/callfuncs.exp, gdb.base/callfwmall.exp: Remove some
 	HP-UX xfails, add others.
	* gdb.base/completion.exp: Reflect name change of self-test.
	* gdb.base/condbreak.exp, gdb.base/corefile.exp,
 	gdb.base/foll-exec.exp, gdb.base/interrupt.exp,
 	gdb.base/ptype.exp, gdb.base/scope.exp, gdb.base/setvar.exp: Note
 	HP failure number.
	* gdb.base/foll-vfork.exp: Loosen matches slightly, remove
	useless HP-UX 10.30 references.
	* gdb.base/maint.exp: Loosen matches.
	* gdb.base/pointers.c (main): Declare more_code.
	* gdb.base/pointers.exp: Match on output of a `next'.
	* gdb.base/structs.c: Add prototypes.
	* gdb.base/watchpoint.exp: Remove HP-UX 10.30 reference.
	* gdb.base/whatis.exp: Fail for both HP-UX 10.20 and 11.

1999-07-29  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/list.exp: Add tests for repeating 'list <linenum>'
 	command.

1999-07-27  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.c++/annota2.exp: Fix delete breakpoint query testcase.
	Fix run to main failures. Watchpoint can be hardware watchpoint.

	* gdb.base/annota1.exp: Clean up some more, in case printf has
	debug info.  Deal with lack of signal hanlder info in stack.

        From Jim Kingdon  <kingdon@redhat.com>:
	* gdb.base/annota1.exp: If printf has debug info, deal with it.

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

	* gdb.base/foll-exec.exp, gdb.base/foll-fork.exp,
 	gdb.base/foll-vfork.exp: Don't run for crosses.

Tue Jul 13 23:37:18 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/configure.in: Check for gdbvars.exp instead of
 	a1-selftest.exp.
	* gdb.base/configure: Re-generate.

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

	* gdb.base/selftest.exp: Rename from a1-selftest.exp, no point
	in trying to run first and name is too long.

	* gdb.base/pointers.c, gdb.base/pointers.exp: Add contents of
	pointers2.c and pointers2.exp, respectively.
	* gdb.base/pointers2.c, gdb.base/pointers2.exp: Remove, makes
	doschk happier.

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

	* gdb.base/callfwmall.c, gdb.base/callfwmall.exp: Renamed from
	callfuncs2.c and callfuncs2.exp.

	* gdb.base/list.exp: Remove mistaken xfails.
	* gdb.base/list0.h: Add optional prototypes.

Wed Jul  7 00:27:35 1999  Andrew Cagney  <cagney@amy.cygnus.com>

        * gdb.base/setvar.exp: Increase the time-out on tests indirectly
 	calling malloc.
        * nodebug.exp, printcmds.exp, ptype.exp, setvar.exp: Ditto.
        * ptype.exp: Move test for get_debug_format to before its first
 	use.

1999-07-06  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/Makefile.in (EXECUTABLES): Remove annota2 executable.
	* gdb.base/annota2.cc, annota2.exp: Move from here.
	* gdb.c++/annota2.cc, annota2.exp: To here.
	* gdb.c++/Makefile.in (PROGS): Add annota2 executable.

Tue Jun 29 11:56:06 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/gdb.exp (gdb_expect_list): Output one message per pattern in
 	a consistent format.

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

	From Jimmy Guo <guo@cup.hp.com> and others at HP:
	* lib/gdb.exp (get_compiler_info): Add detection for assorted
	HP compilers, also set the globals $true and $false.

	* gdb.base/annota1.c, bitfields.c, break.c, call-ar-st.c,
 	call-rt-st.c, call-strs.c, callfuncs.c, callfuncs2.c, condbreak.c,
 	coremaker.c, ending-run.c, exprs.c, funcargs.c, interrupt.c,
 	jump.c, langs0.c, langs1.c, langs2.c, list0.c, list1.c,
 	long_long.c, mips_pro.c, nodebug.c, opaque0.c, opaque1.c,
 	printcmds.c, ptype.c, recurse.c, restore.c, return.c, run.c,
 	scope0.c, scope1.c, setshow.c, setvar.c, shmain.c, shr1.c, shr2.c,
 	sigall.c, signals.c, so-impl-ld.c, so-indr-cl.c, solib.c,
 	solib1.c, solib2.c, step-test.c, twice.c, varargs.c, watchpoint.c,
 	whatis.c} Add C++ compatible function definitions and return
 	types, add includes for library functions.
	* gdb.base/ptype.c (my_false, my_true): Use instead of false/true.
	* gdb.base/step-test.c (myglob): Rename from glob.
	* gdb.base/attach.c, attach2.c, average.c, execd-prog.c,
 	foll-exec.c, foll-fork.c, foll-vfork.c, sum.c, vforked-prog.c: New
 	files, move here from gdb.hp.
	* gdb.base/annota1.exp, break.exp, call-ar-st.exp, call-rt-st.exp,
 	commands.exp, condbreak.exp, define.exp, ena-dis-br.exp,
 	ending-run.exp, jump.exp. list.exp, long_long.exp, so-impl-ld.exp:
 	Adjust line numbers in regexps.

	* gdb.base/all-bin.exp, eval-skip.exp, exprs.exp, logical.exp,
	miscexprs.exp, pointers.exp, relational.exp: Use $true and $false
	instead of 0/1.

	* gdb.base/attach.exp, dbx.exp, foll-exec.exp, foll-fork.exp,
	foll-vfork.exp: New files, move here from gdb.hp.
	* gdb.base/page.exp: New file, test of pagination command.

	* gdb.base/watchpoint.c (recurser): New function, for watchpoint
	recursion test.
	* gdb.base/watchpoint.exp: Add more test cases for watchpoints.

	* gdb.base/so-impl-ld.exp, gdb.base/so-indr-cl.exp,
 	gdb.base/solib.exp: Fix compiler invocation process.

	* gdb.base/callfuncs.exp, gdb.base/callfuncs2.exp: Don't xfail for
 	HP-UX 11, turn off overload resolution explicitly.
	* gdb.base/commands.exp: Set argument list explicitly, add
 	watchpoint test.
	* gdb.base/completion.exp: Enable if HP-UX, tweak tests to make
	them work.
	* gdb.base/constvars.exp, gdb.base/volatile.exp: Escape the
	expressions properly.
	* gdb.base/corefile.exp: Loosen the match slightly.
	* gdb.base/default.exp: Allow "Error accessing memory" message
	also.
	* gdb.base/display.exp: Skip over x/0 j if PA64.
	* gdb.base/funcargs.exp: Add xfails for HP-UX.
	* gdb.base/interrupt.exp: Ditto.
	* gdb.base/langs.exp: Add symbolic matches governed by compiler
	in use.
	* gdb.base/list.exp: Add xfails for HP-UX.
	* gdb.base/long_long.exp: Refine some of the numeric matches.
	* gdb.base/mips_pro.exp: Xfail on HP-UX.
	* gdb.base/miscexprs.exp: Add PA2.0 case for array size test.
	* gdb.base/nodebug.exp: Succeed on more varieties of output.
	* gdb.base/opaque.exp: Remove some HP-UX xfails.
	* gdb.base/ptype.exp: Succeed on more varieties of output.
	* gdb.base/scope.exp: Add xfails for HP-UX.
	* gdb.base/sect-cmd.exp: Add more cases.
	* gdb.base/setvar.exp: Add xfails for HP-UX.
	* gdb.base/shlib-call.exp: Loosen some matches slightly.
	* gdb.base/signals.exp: Match on void symbolically.
	* gdb.base/step-test.exp: Add case for PA64.
	* gdb.base/term.exp: Add exit and restart.
	* gdb.base/twice.exp: Clean up after self.
	* gdb.base/varargs.exp: Disable overload resolution explicitly.
	* gdb.base/whatis.exp: Allow more ways to pass tests.

	* gdb.base/smoke.exp, gdb.base/smoke.c, gdb.base/smoke.cc: Remove,
 	no longer useful.

Fri Jun 25 19:27:28 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/gdb.exp (proc gdb_expect_list): New procedure.  Matches a
 	list of patterns.
	* gdb.base/call-ar-st.exp: Use gdb_expect_list in "print
 	print_double_array(double_array)", "continuing to breakpoint
 	1018", "print print_double_array(array_d)" and "continuing to
 	1034" tests.

1999-06-24  Jason Molenda  (jsm@bugshack.cygnus.com)

        * Makefile.in: Add empty html and install-html targets.

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

	* config/mt-*: Remove, these haven't been used since 1996.

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

	* gdb.base/call-strs.c, gdb.base/ending-run.c,
 	gdb.base/step-test.c: Include stdlib.h and string.h as needed.
	* gdb.c++/member-ptr.exp: Skip over these tests if using G++.

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

	* gdb.c++/overload.exp: XFAIL everything if using G++, add a
	simpler match case for the ptype of the big class.

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

	* gdb.exp: Fix test for gdb_prompt existence.

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

	* gdb.exp (gdb_test): Add fail after calls to perror.

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

	* gdb.exp (gdb_test): Accept variations of Undefined command messages.

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

	* gdb.exp (gdb_test): Fix anchors on gdb_expect statement.

Fri Jun 11 12:56:50 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/call-strs.c (link_malloc): New function.  Ensure that
 	malloc() is linked in.

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

	* gdb.base/ending-run.exp: Make sure we fail and do not timeout at
	step at end.

	* gdb.base/annota1.exp: Increase match_max to prevent timeout.

1999-06-08  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.java/jv-print.exp: New file.  (Our first Java test!)

Fri Jun  4 10:47:46 1999  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/a1-selftest.exp: Remove bogus hppa xfail.
	* gdb.base/mips_pro.exp: Likewise.

1999-06-02  Keith Seitz  <keiths@cygnus.com>

	* gdb.c++/templates.cc: Change all "new" operators to throw
	an exception.
	* gdb.c++/cplusfuncs.cc: Likewise.

	* gdb.base/Makefile.in (EXECUTABLES): Add smoke1, annota1, and annota2.

Wed Jun  2 17:37:05 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/condbreak.exp: Use rerun_to_main to start the program.
        * gdb.base/ending-run.exp: When stepping out of main, accept a
        step into an arbitrary assembler file.

1999-05-20  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/annota1.exp: Allow any number of "frames-invalid" and
	"breakpoint-invalid" to be printed.
	* gdb.base/annota2.exp: Revise line number for main breakpoint. Allow any
	number of "frames-invalid" and "breakpoint-invalid" to be printed.
	* gdb.base/annota2.cc: Initialize a.x to 0.

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

	* gdb.base/call-ar-st.exp: Skip "print print_double_array (double_array)"
	when "skip_float_tests" set.
	Ditto for "print print_double_array(array_d)", "print print_small_structs",
	"print print_ten_doubles", and "step into print_long_arg_list".
	Don't assume we can step into "print_long_arg_list": we could step into memcpy.
	* gdb.base/call-rt-st.exp: Don't run float-related tests when "skip_float_tests"
	is set: "print print_one_double(*d1)" and "print print_two_floats(*f3)".
	* gdb.base/funcargs.exp: Don't run "float_and_integral_args" when
	"skip_float_tests" is set.
	* gdb.base/varargs.exp: Skip "print find_max_double(5,1.0,17.0,2.0,3.0,4.0)"
	when "skip_float_tests" set.

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

	* gdb.base/annota2.cc: Include stdio.h.

Wed May  5 17:44:31 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/crossload.exp: Remove, this has been disabled ever
	since BFD stopped including all targets, and cross-GDB gets
	plenty of testing anyway.
	* gdb.base/i486-elf.u, gdb.base/m68k-aout.u, gdb.base/m68k-elf.u,
 	gdb.base/sparc-aout.u, gdb.base/i860-elf.u, gdb.base/m68k-aout2.u,
 	gdb.base/mips-ecoff.u, gdb.base/sparc-elf.u: Remove.
	* gdb.base/README: Remove, was doc for this.
	* gdb.base/Makefile.in (CROSS_EXECUTABLES): Remove, no longer
 	needed.

1999-05-04  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/call-ar-st.exp: Fix one regular expression in test
	output.

	* gdb.base/annota1.exp: New file. Annotation level 2 tests.
	* gdb.base/annota2.exp: New file. More annotation tests.
	* gdb.base/annota1.c: New file. Source file for annota1.exp.
	* gdb.base/annota2.cc: New file. Source file for annota2.exp.

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

	* config/cfdbug.exp: New file.

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

	* gdb.c++/demangle.exp (test_gnu_style_demangling): Add tests for
	Marcus Daniel's and Dale Hawkins's demangler crashes.

	* gdb.c++/demangle.exp (test_gnu_style_demangling,
 	test_lucid_style_demangling, test_arm_style_demangling,
 	test_hp_style_demangling): Try Tom Tromey's core-dumping
 	identifier under each demangling style.

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

	* gdb.c++/demangle.exp: Include the current demangling style
	in all test names.
	(current_demangling_style): New global variable.
	(set_demangling_style, test_demangling_core, test_demangling,
	test_demangling_exact): New functions.
	(test_gnu_style_demangling, test_lucid_style_demangling,
	test_arm_style_demangling, test_hp_style_demangling): Use those,
	instead of calling gdb_test and gdb_test_exact directly.
	(catch_demangling_errors): New function, which reports errors
	signalled by the demangling test functions in an orderly way.
	(do_tests): Use catch_demangling_errors.

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

	* gdb.base/signals.exp (test_handle_all_print): Use () for
 	grouping in expressions, not {}.

	* gdb.base/smoke.exp: Test value of x, not y.  The latter isn't
 	initialized yet.

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

	* gdb.c++/derivation.exp: Pass ptype tests if synthesized methods
	are listed.

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

	* gdb.stabs/weird.exp: Test for CC being defined before
	looking at its value.

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

	* gdb.base/call-ar-st.exp: Remove stray '#'.
	* gdb.base/miscexprs.exp: Allow "short" and "long" as well as
	"short int" and "long int".
	* gdb.c++/overload.cc: Cast the string added in the previous
 	change, to mollify finicky HP compiler.
	* gdb.hp/reg-test.exp (testfile): Fix file name.
	* gdb.stabs/weird.exp: Don't try to run if HP compiler in use.

	* gdb.c++/misc.cc (main): Initialize obj_with_enum.
	* gdb.c++/classes.exp: Fix test of obj_with_enum values, allow
	alternate form of enum ptype.

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

	* lib/gdb.exp (skip_hp_tests): Remove gcc_used argument.
	* gdb.hp/*.exp: Change all to run compiler probe only after
 	passing skip_hp_tests, so as not to waste time on guaranteed
 	failure.

	* gdb.c++/overload.cc: Pass string instead of char addr, always
	init ccpfoo.
	* gdb.c++/templates.cc: Fix syntax error.

Tue Mar 23 14:56:36 1999  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.base/commands.exp: Add test for correct position of '>'
	when issuing the 'commands' command after a 'while' or 'if'
	command.

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

	* gdb.c++/ovldbreak.exp: Use gdb_continue_to_end

	* gdb.c++/method.exp: It was testing an uninitialized int on the
	stack and assuming it was positive.

	* gdb.base/watchpoint.exp: Use gdb_continue_to_end.

	* gdb.base/step-test.exp: Catch a case where finish is broken and
	keep it from killing the rest of the tests.
	Use gdb_continue_to_end.

	* gdb.base/sigall.exp: use gdb_continue_to_end.

	* gdb.base/ena-dis-br.exp: use gdb_continue_to_end.

	* gdb.base/display.exp: use runto_main, not run.

	* gdb.base/default.exp: Check for the current error message in the
	r abbreviation test.
	Add strongarm to the targets that know info float.

	* gdb.base/condbreak.exp: Use the gdb_run command rather than just
	run which doesn't work with monitors.

	* gdb.base/call-ar-st.exp: fixed bogus regexp in continuing to 1034 test.

	* gdb.base/break.exp: use the gdb_continue_to_end proc.

	* lib/gdb.exp: I had added gdb_continue_to_end used to run to the end of a
	program.  Traps the case (in Cygmon) when the program never really
	exits.  Same as Mark's continue_to_exit, but I had put it in a lot
	more places, so I used my name.  Sorry Mark...

	* config/monitor.exp (gdb_target_monitor): added another
	target_info parameter: remotebinarydownload.  This will set the
	remotebinarydownload flag if this is causing some boards trouble.

1999-03-18  Mark Salter  <msalter@cygnus.com>

	* lib/gdb.exp (continue_to_exit): New function.

	* gdb.base/ena-dis-br.exp: Clean up for remote targets.
	* gdb.base/ending-run.exp: Ditto.
	* gdb.base/step-test.exp: Ditto.

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

	* gdb.base/miscexprs.c: Clean up file, clear cbig.c[0] explicitly
	(suggested by Art Haas <ahaas@neosoft.com>).

1999-03-16  Jim Blandy  <jimb@zwingli.cygnus.com>

 	* gdb.base/signals.exp: Filter out *-*-linux* before matching *-*-gnu*.

Fri Mar 12 18:06:21 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.c++/ref-types.exp, ref-types2.exp: Allow alternate
 	descriptions of types (short unsigned int vs unsigned short, etc).

1999-03-12  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.base/call-strs.exp: Don't assume that `step' will step over
	a call to strlen; sometimes we do have sources.

1999-03-08  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.base/call-ar-st.c (main): Terminate char_array with a null
 	character, so GDB won't print garbage after its end.

	* gdb.base/call-ar-st.exp: Don't step into sum_array_print; set a
	breakpoint there instead.  Sometimes GCC emits memcpy to handle
	the large structures being passed by value, so we step into that
	instead of sum_array_print, which obscures what we're really testing.
	* gdb.base/step-test.exp: However, we do want a test that notices
 	the bizarre steps into memcpy, so do that here.  Add check for
 	stepping into function calls that pass large structures by value.
  	("Is that a noun clause, or are you just happy to see me?")
	Remove all references to specific line numbers.
	* gdb.base/step-test.c (struct rhomboidal, large_struct_by_value):
	New type and function.
	(main): Call large_struct_by_value, passing it a large struct by value.
	* lib/gdb.exp (gdb_get_line_number): New function.

	* gdb.base/step-test.exp: Rewrite `stepi' and `nexti' tests to be
	more portable.

1999-03-08  Jim Blandy  <jimb@zwingli.cygnus.com>

	* lib/gdb.exp: Doc fixes.

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

	* gdb.base/a2-run.exp: Add expected fails for strongarm-coff.

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

	* gdb.base/display.exp: Don't exercise the "detach" and "kill"
 	commands.  They're not germane to this test, and they don't work
 	that way on remote targets.

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

	* Changelog entries merged over from gdb development branch.

       Tue Jan  5 12:33:47 1999  Keith Seitz  <keiths@cygnus.com>

	       * lib/gdb.exp (gdbtk_analyze_results): Generic function
	       for outputting results of test run.

	1998-12-07  Martin M. Hunt  <hunt@cygnus.com>

	       * lib/gdb.exp (gdbtk_start): Fix path for itcl library.

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

	* lib/gdb.exp (debug_format): initialize

1999-02-25  Jason Molenda  (jsm@bugshack.cygnus.com)

	* gdb.base/call-ar-st.c: Include string.h, not strings.h.
	* gdb.base/call-rt-st.c: Ditto.

1999-02-13  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.threads/pthreads.exp (horiz): New variable.
	(test_startup): Fix regexps that capture thread numbers.

1999-02-10  Jason Molenda  (jsm@bugshack.cygnus.com)

	* gdb.base/smoke.exp: Disambiguate two test case names (both
	called ``print'').

Fri Feb  5 12:42:56 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/volatile.exp: Use gdb_test, add xfails for GCC
 	compilation.

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

	* gdb.base/miscexprs.exp: Change patterns to match GDB's
	actual output formatting.
	* gdb.base/smoke.exp: GDB removes leading 0's.
	* gdb.base/volatile.exp: Don't check type of remuneration;
	that variable is no longer defined in constvars.c.
	* gdb.base/step-test.c (main): Exit with explicit exit code.
	* gdb.base/step-test.exp: Remove two nexti checks--they are
	not portable.

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

	* gdb.base/help.exp ("help delete display"): Fix test to match
	gdb's output.

	* gdb.base/long_long.c (known_types): Initialize values to zero.
	* gdb.base/long_long.exp: Step one more line
	so 'dec' is initialized in "get to known place".  GDB removes
        leading zeros.  Explicitly ask for hex formatting.  Use
        unique test case names.

Tue Feb  2 10:16:08 1999  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* lib/gdb.exp (gdb_preprocess): Remove 'puts' statement.

	* gdb.c++/method.exp: Add missing close brace.

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

	* gdb.base/maint.exp: Use 'set height 0' to disable page
	prompting, not 'set height 400'.

	Fix a bunch of timeouts.
	* gdb.base/maint.exp ("maint print objfiles"): Break this up into
	four separate tests, so expect doesn't take forever to match a ton
	of text against a regexp with lots of .* forms.
	("maint print psymbols", "maint print symbols"): Make some of
	these greps more selective, so that expect doesn't try to wade
	through huge piles of output and time out.

	* gdb.base/maint.exp ("maint print msymbols"): Fix pattern.

	* gdb.base/maint.exp ("maint info breakpoints"): Split into two
 	tests: one which doesn't expect shlib events to be reported, and
 	another which does, but is XFAIL for all platforms other than
 	HP/UX.

	* gdb.base/break.exp: Teach the test suite that the `catch
	fork', `catch vfork', and `catch exec' commands produce error
	messages on platforms that don't provide these features.

Mon Jan 25 18:35:56 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.hp/gen-so-thresh.c, so-thresh.sh, so-thresh.exp,
 	so-thresh.linkopts, so-thresh.mk: Move to gdb.hp from gdb.base
 	(shortening names from solib_threshold.exp etc), won't run on
 	anything but HP-UX for the foreseeable future.
	* gdb.hp/Makefile.in, gdb.base/Makefile.in (clean): Adjust to
 	reflect move.

Thu Jan 21 15:46:49 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/Makefile.in, gdb.c++/Makefile.in,
 	gdb.trace/Makefile.in (clean): Remove all test executables.

Tue Jan 19 17:20:09 1999  David Taylor  <taylor@texas.cygnus.com>

	* gdb.base/shlib-call.exp: add test cases to verify that gdb
	successfully re-sets breakpoints in shared libraries.
	* gdb.base/shmain.c (main): return 0, don't fall off the end.

Fri Jan 15 14:04:57 1999  Elena Zannoni  <ezannoni@kwikemart.cygnus.com>

	* gdb.hp/xdb3.exp: do not execute unless on hppa-hpux platform
	and compiled w/o GCC.

	* gdb.hp/watch-cmd.exp: ditto.

	* gdb.hp/watch-hp.exp: ditto.

	* gdb.hp/xdb1.exp: ditto.

	* gdb.hp/xdb2.exp: ditto.

	* gdb.hp/dbx.exp: ditto.

Thu Jan 14 18:36:48 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* constvars.c: Remove C++-isms.
	* constvars.exp: Use gdb_test everywhere, add xfails if compiled
 	with GCC.

Mon Jan 11 10:08:03 1999  David Taylor  <taylor@texas.cygnus.com>

	The following changes are part of the HP merge.

	* gdb.base/break.exp: new tests to verify that catchpoints for
	fork, vfork, and exec don't trigger inappropriately.

	* gdb.base/opaque.exp: compile one file at a time, then link.

	* gdb.base/signals.exp: be more restrictive about which hppa
	systems receive a setup_xfail.  new tests.

	* gdb.base/solib_threshold.build: new file.
	* gdb.base/solib_threshold.exp: new file.
	* gdb.base/solib_threshold.link_opts: new file.
	* gdb.base/solib_threshold.mk: new file.
	* gdb.base/gen_solib_threshold.c: new file.

	* gdb.c++/classes.exp: if on HPUX and not using gcc, skip the
	tests.  New tests for enums inside classes.

	* gdb.c++/compiler.cc: indicate support of template debugging.

	* gdb.c++/demangle.exp: run hp style demangling tests.

	* gdb.c++/inherit.exp: if on HPUX and not using gcc, skip the
	tests.

	* gdb.c++/misc.cc: changes to support new tests.

	* gdb.c++/templates.cc: changes to support HP's compiler; changes
	to support new tests.

	* gdb.c++/virtfunc.exp: if we are on HPUX and we are not using
	gcc, then skip these tests.

Sun Jan 10 23:44:11 1999  David Taylor  <taylor@texas.cygnus.com>

	The following files are part of the HP merge; some had longer
	names at HP, but have been renamed to be no more than 14
	characters in length.

	* gdb.hp/ambiguous.cc: new file.
	* gdb.hp/ambiguous.exp: new file.
	* gdb.hp/attach.exp: new file.
	* gdb.hp/attach2.exp: new file.
	* gdb.hp/classes-hp.exp: new file.
	* gdb.hp/ctti.exp: new file.
	* gdb.hp/ctti-add.cc: new file.
	* gdb.hp/ctti-add1.cc: new file.
	* gdb.hp/ctti-add2.cc: new file.
	* gdb.hp/ctti-add3.cc: new file.
	* gdb.hp/dbx.exp: new file.
	* gdb.hp/exception.cc: new file.
	* gdb.hp/exception.exp: new file.
	* gdb.hp/foll-exec.c: new file.
	* gdb.hp/foll-exec.exp: new file.
	* gdb.hp/foll-fork.c: new file.
	* gdb.hp/foll-fork.exp: new file.
	* gdb.hp/foll-vfork.c: new file.
	* gdb.hp/foll-vfork.exp: new file.
	* gdb.hp/inherit-hp.exp: new file.
	* gdb.hp/more-steps.exp: new file.
	* gdb.hp/namespace.cc: new file.
	* gdb.hp/namespace.exp: new file.
	* gdb.hp/optimize.exp: new file.
	* gdb.hp/pxdb.c: new file.
	* gdb.hp/pxdb.exp: new file.
	* gdb.hp/quicksort.exp: new file.
	* gdb.hp/reg-test.exp: new file.
	* gdb.hp/reg-test.s: new file.
	* gdb.hp/sized-enum.c: new file.
	* gdb.hp/sized-enum.exp: new file.
	* gdb.hp/start-stop.exp: new file.
	* gdb.hp/templ-hp.cc: new file.
	* gdb.hp/templ-hp.exp: new file.
	* gdb.hp/thr-lib.c: new file.
	* gdb.hp/thr-lib.exp: new file.
	* gdb.hp/thr-lib.h: new file.
	* gdb.hp/thr-liblib.c: new file.
	* gdb.hp/virtfun-hp.c: new file.
	* gdb.hp/virtfun-hp.exp: new file.
	* gdb.hp/watch-cmd.exp: new file.
	* gdb.hp/watch-hp.exp: new file.
	* gdb.hp/xdb1.exp: new file.
	* gdb.hp/xdb2.exp: new file.
	* gdb.hp/xdb3.exp: new file.

Wed Jan  6 18:41:15 1999  David Taylor  <taylor@texas.cygnus.com>

	The following files are part of the HP merge; some had longer
	names at HP, but have been renamed to be no more than 14
	characters in length.

	* gdb.base/ss.h: new file.
	* gdb.base/call-ar-st.c: new file.
	* gdb.base/call-ar-st.exp: new file.
	* gdb.base/call-rt-st.c: new file.
	* gdb.base/call-rt-st-exp: new file.
	* gdb.base/call-strs.exp: new file.
	* gdb.base/ena-dis-br.exp: new file.
	* gdb.base/environ.exp: new file.
	* gdb.base/long_long.exp: new file.
	* gdb.base/sect-cmd.exp: new file.
	* gdb.base/shlib-cl2.exp: new file.
	* gdb.base/smoke.exp: new file.
	* gdb.base/so-impl-ld.c: new file.
	* gdb.base/so-impl-ld.exp: new file.
	* gdb.base/so-indr-cl.c: new file.
	* gdb.base/so-indr-cl.exp: new file.
	* gdb.base/varargs.exp: new file.
	* gdb.base/volatile.exp: new file.
	* gdb.base/whatis-exp.exp: new file.
	* gdb.base/display.exp: new file.
	* gdb.c++/derivation.exp: new file.
	* gdb.c++/local.exp: new file.
	* gdb.c++/member-ptr.exp: new file.
	* gdb.c++/overload.exp: new file.
	* gdb.c++/ovldbreak.exp: new file.
	* gdb.c++/ref-types.exp: new file.
	* gdb.c++/ref-types2.exp: new file.
	* gdb.c++/userdef.exp: new file.

Wed Jan  6 13:50:57 1999  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/default.exp: Reflect wording change in remote.c.

Tue Jan  5 19:14:51 1999  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/help.exp: Update to reflect current text.

Tue Jan  5 13:05:32 1999  David Taylor  <taylor@texas.cygnus.com>

	* gdb.c++/anon-union.cc: make foo and bar global, otherwise
	they're stack variables and contain garbage.
	* gdb.c++/anon-union.exp: new file.

	The following changes were made by David Taylor
 	<taylor@cygnus.com>, Elena Zannoni <ezannoni@cygnus.com>, and
 	Edith Epstein <eepstein@cygnus.com> as part of a project to merge
 	in changes by HP.

	* gdb.base/bitops.exp: new file.
	* gdb.base/default.exp: change expected messages for catch and
	info catch tests to reflect HP merge changes.
	* gdb.base/enable-disable-break.exp
	* gdb.base/ending-run.c: new file.
	* gdb.base/long_long.c: new file.
	* gdb.base/maint.exp: new file.
	* gdb.base/pointers2.exp: new file.
	* gdb.base/shlib-call2.exp: new file.
	* gdb.base/solib.exp: new file.
	* gdb.base/step-test.c: new file.
	* gdb.c++/anon-union.cc: new file.
	* gdb.c++/local.cc: new file.
	* gdb.c++/member-pointer.cc: new file.
	* gdb.c++/method.cc: new file.
	* gdb.c++/ref-types.cc: new file.
	* gdb.c++/ref-types2.cc: new file.
	* gdb.c++/userdef.cc: new file.

	* gdb.base/scope.exp: compile one file at a time, then link.
	* gdb.base/langs.exp: ditto.
	* gdb.base/list.exp: ditto.

Mon Jan  4 10:06:43 1999  David Taylor  <taylor@texas.cygnus.com>

	The following changes were made by David Taylor
 	<taylor@cygnus.com>, Elena Zannoni <ezannoni@cygnus.com>, and
 	Edith Epstein <eepstein@cygnus.com> as part of a project to merge
 	in changes by HP.

	* gdb.c++/inherit.exp: if on hppa*-*-hpux* and not using gcc,
	skip tests.  When compiling pass c++ flag to gdb_compile.
	* gdb.c++/

	* lib/gdb.exp (get_compiler_info): new, optional argument -- args;
	test for on hppa*-*-hpux*; use args to see if c++ was specified.
	(skip_hp_tests): new function.
	(gdb_preprocess): new function.

	* configure.in (hpdir): decide whether to configure gdb.hp.
	* configure: regenerated.

	* gdb.base/Makefile.in (MISCELLANEOUS): new macros -- extra things
	to delete on clean.
	(EXECUTABLES): update to reflect new additions.
	* gdb.base/commands.exp: update message expected.
	* gdb.base/default.exp: add copyright notice.
	* gdb.base/funcargs.exp (timeout): if hpux, increase timeout.
	* gdb.base/help.exp: update messages to reflect current text.
	* gdb.base/recurse.exp: add hpppa*-*-bsd* to 'list' of enabled
	targets for recurse tests.
	* gdb.base/watchpoint.exp: if on hpux and not gcc compiled, then
	skip this file.

	* gdb.c++/Makefile.in (PROGS): update to reflect new executables.
	* gdb.c++/cplusfuncs.exp: tell gdb_compile that it's a c++
	compilation.
	* gdb.c++/misc.exp: ditto.
	* gdb.c++/templates.exp: if we're on hpux and it's not gcc, don't
	run the tests.  tell gdb_compile that it's a c++ compilation.

	* gdb.threads/pthreads.exp: fix typo in message.

	* gdb.base/all-bin.exp: new file.
	* gdb.base/arithmet.exp: new file.
	* gdb.base/assign.exp: new file.
	* gdb.base/completion.exp: new file.
	* gdb.base/cond-expr.exp: new file.
	* gdb.base/condbreak.exp: new file.
	* gdb.base/define.exp: new file.
	* gdb.base/dollar.exp: new file.
	* gdb.base/environment.exp: new file.
	* gdb.base/eval-skip.exp: new file.
	* gdb.base/jump.exp: new file.
	* gdb.base/logical.exp: new file.
	* gdb.base/pointers.exp: new file.
	* gdb.base/relational.exp: new file.
	* gdb.base/section_command.exp: new file.
	* gdb.base/whatis-expr.exp: new file.

	* gdb.base/all-types.c: new file.
	* gdb.base/call-array-struct.c: new file.
	* gdb.base/call-return-struct.c: new file.
	* gdb.base/call-strings.c: new file.
	* gdb.base/callfuncs2.c: new file.
	* gdb.base/condbreak.c: new file.
	* gdb.base/constvars.c: new file.
	* gdb.base/display.c: new file.
	* gdb.base/int-type.c: new file.
	* gdb.base/jump.c: new file.
	* gdb.base/miscexprs.c: new file.
	* gdb.base/pointers.c: new file.
	* gdb.base/pointers2.c: new file.
	* gdb.base/shmain.c: new file.
	* gdb.base/shr1.c: new file.
	* gdb.base/shr2.c: new file.
	* gdb.base/solib.c: new file.
	* gdb.base/solib1.c: new file.
	* gdb.base/solib2.c: new file.
	* gdb.base/varargs.c: new file.
	* gdb.c++/derivation.cc: new file.
	* gdb.c++/overload.cc: new file.
	* gdb.c++/ovldbreak.cc: new file.
	* gdb.hp/attach.c: new file.
	* gdb.hp/attach2.c: new file.
	* gdb.hp/average.c: new file.
	* gdb.hp/compiler.c: new file.
	* gdb.hp/compiler.cc: new file.
	* gdb.hp/execd-program.c: new file.
	* gdb.hp/follow-exec.c: new file.
	* gdb.hp/follow-fork.c: new file.
	* gdb.hp/follow-vfork-and-exec.c: new file.
	* gdb.hp/misc-hp.cc: new file.
	* gdb.hp/more-steps.c: new file.
	* gdb.hp/optimize.c: new file.
	* gdb.hp/quicksort.c: new file.
	* gdb.hp/run-hp.c: new file.
	* gdb.hp/start-stop.c: new file.
	* gdb.hp/sum.c: new file.
	* gdb.hp/templates-hp.cc: new file.
	* gdb.hp/thread-local-in-lib.c: new file.
	* gdb.hp/thread-local-in-lib.h: new file.
	* gdb.hp/thread-local-in-lib.lib.c: new file.
	* gdb.hp/vforked-program.c: new file.
	* gdb.hp/virtfunc-hp.cc: new file.
	* gdb.hp/watchpoint-hp.c: new file.
	* gdb.hp/xdb.c: new file.
	* gdb.hp/xdb0.c: new file.
	* gdb.hp/xdb0.h: new file.
	* gdb.hp/xdb1.c: new file.

Mon Dec 21 14:08:38 1998  David Taylor  <taylor@texas.cygnus.com>

	The following change was made by Edith Epstein
 	<eepstein@cygnus.com> as part of a project to merge in changes
 	originally made by HP; HP did not create ChangeLog entries.

	* gdb.c++/demangle.exp: changed the expected output for some
	ARM-style mangling -- removed second reference to datatype.
 	For example, maint demangle __dt__11T1__pt__2_cFv
                     T1<char>::~T1<char>(void)
	becomes,
	             maint demangle __dt__11T1__pt__2_cFv
                     T1<char>::~T1(void)

 	(test_hp_style_demangling): new hp specific demangling test cases.

Mon Dec 14 15:07:03 1998  Jeffrey A Law  (law@cygnus.com)

	* gdb.trace/actions.exp: Ignore compiler warnings compiling actions.c
	* gdb.trace/backtrace.exp: Likewise.
	* gdb.trace/circ.exp: Likewise.
	* gdb.trace/collection.exp: Likewise.
	* gdb.trace/deltrace.exp: Likewise.
	* gdb.trace/infotrace.exp: Likewise.
	* gdb.trace/limits.exp: Likewise.
	* gdb.trace/packetlen.exp: Likewise.
	* gdb.trace/passc-dyn.exp: Likewise.
	* gdb.trace/passcount.exp: Likewise.
	* gdb.trace/report.exp: Likewise.
	* gdb.trace/save-trace.exp: Likewise.
	* gdb.trace/tfind.exp: Likewise.
	* gdb.trace/tracecmd.exp: Likewise.
	* gdb.trace/while-dyn.exp: Likewise.
	* gdb.trace/while-stepping.exp: Likewise.

1998-12-07  Jim Blandy  <jimb@zwingli.cygnus.com>

	* gdb.base/restore.exp, gdb.base/restore.c: New tests.

Wed Dec  2 20:03:53 1998  Stan Shebs  <shebs@andros.cygnus.com>

	From Brendan Kehoe:
	* gdb.c++/cplusfuncs.cc, misc.cc, virtfunc.cc: Add now-required
	int return types.

Sat Oct 24 18:04:22 1998  Felix Lee  <flee@cygnus.com>

	* config/slite.exp (gdb_load): use gdb_file_cmd, so we can do
 	remote dos host testing right.

Mon Oct 19 01:31:59 1998  Felix Lee  <flee@cygnus.com>

	* gdb.base/corefile.exp: remove some xfails.

Thu Oct 15 10:04:38 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/reread.exp: Sleep 1 - ensures that the two executables
 	have different timestamps.

Thu Oct  1 20:56:14 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* lib/gdb.exp, gdb.base/default.exp, config/monitor.exp,
 	gdb.base/default.exp: Replace "exec" with "executable".

Tue Sep 29 15:06:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/default.exp: Change else if to elseif from previous
 	delta.

Mon Sep 28 13:21:43 1998  Nick Clifton  <nickc@cygnus.com>

	* gdb.base/default.exp: Add brace missing from previous delta.

Mon Sep 21 14:39:27 1998  Nick Clifton  <nickc@cygnus.com>

	* gdb.base/default.exp: Support test for info float for all
	varieties of arm toolchain.

Fri Sep 18 14:07:44 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.trace/*.exp: remove "remote_download" command.

Wed Sep 16 11:38:21 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.trace/*.exp: remove -gdwarf from compile.

Wed Sep 16 01:23:11 1998  Felix Lee  <flee@cygnus.com>

	* gdb.trace/configure.in(AC_INIT): typo
	* gdb.trace/configure: regenerated

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

	* config/m68k-emc.exp: New file.
	* lib/<emc-support.exp trace-support.exp}: New files.
	* configure.in: add new test directory gdb.trace.
	* gdb.trace/{configure configure.in Makefile.in}: New files.
	* gdb.trace/{actions.c actions.exp gdb_c_test.c}: New files.
	* gdb.trace/{circ.c circ.exp limits.c limits.exp}: New files.
	* gdb.trace/{collection.c collection.exp tfind.exp }: New files.
	* gdb.trace/{backtrace.exp deltrace.exp infotrace.exp}: New files.
	* gdb.trace/{packetlen.exp passc-dyn.exp passcount.exp}: New files.
	* gdb.trace/{report.exp save-trace.exp tracecmd.exp}: New files.
	* gdb.trace/{while-dyn.exp while-stepping.exp}: New files.

Fri Sep 11 13:58:02 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.c++/classes.exp: Change all regular expressions to match
	arbitrary combinations of newline/carriage-return, so that they
	will work equally well on Unix and Windows.
	* gdb.c++/inherit.exp: ditto.
	* gdb.c++/virtfunc.exp: ditto.

1998-08-11 Dawn Perchik  <dawn@cygnus.com>

	* gdb.base/setshow.exp: Fix error introduced by call to runto_main.

Fri Jul 24 15:51:34 1998  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/am33.s: Add tests for autoincrement instructions.
	* gdb.disasm/am33.exp: Run time.  Update tests which use r8-r15
	to use a0-a3/d0-d3 as needed.

Thu Jul 16 18:20:46 1998  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/am33.s: Add 4 operand mul and mulu tests.
	* gdb.disasm/am33.exp: Corresponding changes.

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

	* gdb.base/callfuncs.exp: add cmp10 test.
	* gdb.base/callfuncs.c (cmp10): new function.

Thurs Jul 9 11:08:31 1998  Dawn Perchik  <dawn@cygnus.com>

	* gdb.base/commands.exp: Break up infrun_breakpoint_command_test
	into two parts to get around a synchronization problem in expect.

Fri Jun 26 14:27:13 1998  Keith Seitz  <keiths@cygnus.com>

	* lib/gdb.exp (gdbtk_start): Add startup for gdbtk.

	* configure.in: Add options for gdbtk testsuite.

	* configure: Regenerate.

	* gdb.gdbtk: New directory to hold gdbtk tests.

Fri Jun 26 14:52:47 1998  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* gdb.fortran/types.exp:  Escape brackets in expect patterns
	for test_float_literal_types_accepted tests.
	* gdb.base/scope.exp:  Remove extraneous newline in filelocal_bss
	before run test.

Fri Jun 26 11:12:17 1998  Jeffrey A Law  (law@cygnus.com)

	* am33.exp: Just compile, do not link the testcase.
	* am33.s: Add ".am33" pseudoop to force am33 mode.

1998-06-25  Felix Lee  <flee@cygnus.com>

	* gdb.base/setshow.exp: make sure $pc is sane.

	* gdb.stabs/weird.exp: split expect patterns properly.

Wed Jun 24 13:03:15 1998  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/am33.s: New disassembler testfile for the am33.
	* gdb.disasm/am33.exp: Run it.

Tue Jun 23 11:45:01 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/funcargs.exp: simplify expect strings to ease pattern
	match processing (and eliminate spurious timeouts when running).

Fri Jun 12 17:28:22 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/signals.exp (test_handle_all_print): put back Mach
	exception test, but conditionalize it on target [mach | gnu].

Wed Jun 10 10:40:03 1998  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/overlays.exp: fixup compile line for linker script.

Thu Jun  4 21:54:15 1998  Felix Lee  <flee@zog.cygnus.com>

	* gdb.fortran/types.exp: don't guess at float size.

Thu May 21 02:28:37 1998  Felix Lee  <flee@zog.cygnus.com>

	* gdb.base/exprs.exp: delete test that depends on int size.

Sun May 17 17:10:22 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/sim.exp: Removed checks for target triplets.
	(gdb_target_sim): Use gdb,target_sim_options.

Sat May 16 23:43:35 1998  Mark Alexander  <marka@cygnus.com>

	* gdb.base/reread.exp: New file.
	* gdb.base/reread1.c: New file.
	* gdb.base/reread2.c: New file.

Sat May 16 23:22:09 1998  Mark Alexander  <marka@cygnus.com>

	* config/sim.exp: Use 'target sim -sparclite' when running
	SPARClite programs.

Sat May 16 18:48:08 1998  Doug Evans  <devans@canuck.cygnus.com>

	* gdb.base/structs2.exp: New file.
	* gdb.base/structs2.c: New file.

Wed May 13 13:36:14 1998  Doug Evans  <devans@canuck.cygnus.com>

	* gdb.asm/common.inc: New file.
	* gdb.asm/d10v.inc: New file.
	* asm-source.exp: Pass -I's to gas to find .inc files.
	Update line numbers in expected output.
	* asmsrc1.s: Rewrite.
	* asmsrc2.s: Rewrite.
	* configure.in: Create arch.inc symlink.
	* configure: Regenerate.
	* Makefile.in (distclean): Delete arch.inc.

Wed May  6 10:30:54 1998  John Metzler  <jmetzler@cygnus.com>

	*  callfuncs.c (t_enum_value1) : Cleanup return value warnings
 	(t_enum_value2): ditto
 	(t_enum_value3): ditto
 	(main): ditto
Fri May  1 09:33:37 1998  Peter Schauer  <pes@regent.e-technik.tu-muenchen.de>

	* gdb.base/break.exp:  Remove xfail for `deleting all breakpoints
	when none' unexpected prompt case, fixed by breakpoint.c:delete_command
	change.
	Use gdb_test instead of send_gdb/gdb_expect sequences.

Thu Apr 23 12:56:19 1998  Jason Molenda  (crash@bugshack.cygnus.com)

	* gdb.c++/virtfunc.cc: Declare extern "C" printf to return int,
	not void.

Thu Apr 16 10:52:34 1998  John Metzler  <jmetzler@cygnus.com>

	* gdb.base/branches.c: Code with lots of loops and
 	subroutines. Used to test gdbs ability to single step through PC
 	changes, especially to test mips-tdep.c:mips_next_pc

Mon Apr 13 22:32:51 1998 Frank Ch. Eigler <fche@cygnus.com>

	* gdb.c++/virtfunc.cc: Make extern "C" printf declaration pass
	more rigorous EGCS C++ error checking.

Fri Apr 10 22:38:12 1998 Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

        * gdb.base/help.exp:  Clean up `help set args' and `help show args'
        tests.
        * gdb.base/interrupt.exp:  Add "i*86-*-solaris2*" xfail for calling
        function when asleep.
        * gdb.base/signals.exp:  Add "i*86-*-solaris2*" xfails. Add comment
        for i*86 Linux and SVR4 signal handling problems.
        Remove linux xfail for `next to handler in signals_tests_1', fixed
        by recent infrun.c change.
        Limit backtrace to 10 frames to avoid timeout problems with infinite
        stack backtraces.
        Adjust expect pattern in `handle all print' test to match Apr 28 1997
        target.[ch] change.

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

	* lib/gdb.exp(gdb_test): Send multiline commands one at a time; wait
	for a newline from gdb before continuing.
	(default_gdb_exit): Just look for y or n.
	(gdb_test): Detect abnormal exit from GDB running on DOS; if
	it does, fail the rests of the tests in the file.

Tue Mar 24 22:44:52 1998  Bob Manson  <manson@charmed.cygnus.com>

	* config/cygmon.exp: New file.

Mon Mar 16 21:39:11 1998  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/list.exp: Fix problem with "list default lines around
 	main" test on remote targets.

	* gdb.base/scope.exp: Fix problem with filelocal_bss before
	run test on remote targets.

Thu Mar 12 16:23:00 1998  Doug Evans  <devans@canuck.cygnus.com>

	* gdb.asm: New directory.
	* configure.in: Configure it.
	* configure: Regenerate.
	* gdb.asm/{Makefile.in,configure.in,configure}: New files.
	* gdb.asm/{asm-source.exp,asmsrc1.s,asmsrc2.s}: New files.

Mon Feb 23 08:22:44 1998  Mark Alexander  <marka@cygnus.com>

	* config/mn10300-eval.exp: New file to support MN10300 eval board.

Wed Feb 18 16:43:46 1998  Michael Snyder  (msnyder@cygnus.com)

        * gdb.base/overlays (several files): Merge the two overlay
        managers into one.  Change variables (foox, barx, bazx, grbxx)
        back into ints but force them to load in their proper sections.

Thu Feb 12 13:49:30 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/d10vovly.c (D10VTranslate): Map IMAP0 to low 128k of
 	on-chip insn memory and IMAP1 to upper 128k.
	(D10VCopy): Handle memory regions crossing 16k boundaries.
	(D10VCopy): Transfer data in 32 bit chunks.

Tue Feb 10 17:23:22 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/overlays.c (main): Exit normally when result is
 	correct.

	* gdb.base/d10v.ld: Update LMAs to reflect current d10v address
 	map.  Include space for printf in .text segment.

	* gdb.base/d10vovly.c (D10VTranslate): New function, handle
 	updated d10v memory VMA/LMA map.
	(D10VCopy): Call D10VTranslate.

Fri Feb  6 14:13:12 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/m32rovly.c: Force variable _novlys into .data section.

	* gdb.base/bar.c (barx, bar): Change variable to small array so
 	that it won't be put into the .sdata - small data -
 	section. Update reference.
	* gdb.base/baz.c (bazx, baz): Ditto.
	* gdb.base/foo.c (foox, foo): Ditto.
	* gdb.base/grbx.c (grbxx, grbx): Ditto.

	* gdb.base/overlays.exp: Expect variables barx, bazx, foox, grbxx
 	to be arrays.

Thu Jan 29 14:48:19 1998  Michael Snyder  (msnyder@cygnus.com)

        * gdb.base/overlays.exp: fix up and get working again.
        Add tests for backtraces from an overlay function.

Fri Jan 23 07:52:45 1998  Fred Fish  <fnf@cygnus.com>

	* gdb.base/watchpoint.exp: Set "d10v*-*-*" clear_xfail for
	"calling function with watchpoint enabled".

Thu Jan 22 14:23:29 1998  Fred Fish  <fnf@cygnus.com>

	* gdb.base/break.exp (test_next_with_recursion): Remove
 	gdb_suppress_tests for d10v-*-*.
	* lib/gdb.exp (gdb_suppress_tests): Disable this function
	pending review of whether it is useful or not.

Tue Jan 20 13:02:09 1998  Mark Alexander  <marka@cygnus.com>

	* gdb.base/funcargs.exp: Increase timeout for slow TX39 boards.

Mon Jan 19 08:53:04 1998  Mark Alexander  <marka@cygnus.com>

	* gdb.base/break.exp: Increase timeout for slow TX39 boards.
	* config/dve.exp: New file to support Densan boards.

Mon Dec 15 22:38:05 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/interrupt.exp: Document problem of simulators, signals,
 	reads and BSD.

Wed Nov 26 22:29:18 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/monitor.exp: Be a bit less picky about the "Remote debugging"
	response.

	* gdb.c++/misc.exp: Call runto_main instead of doint it manually.

Tue Nov 25 12:46:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/mips_pro.exp: Add "mips64*-*-elf" xfail for backtrace
 	test.

	* gdb.base/funcargs.exp: Query GDB for target_sizeof_int,
 	target_sizeof_long and target_bigendian_p.
	(structs_by_value, structs_by_reference): Check values according
 	to targets word size and endianess.

Mon Nov 24 16:37:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gdb.base/langs.exp: For "continue to exit" ignore any trailing
 	output.

Fri Oct 17 13:24:43 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/default.exp, gdb.base/help.exp, gdb.base/setshow.exp:
 	Update test of set args help to match source change.

Fri Sep 26 17:36:20 1997  Jason Molenda  (crash@pern.cygnus.com)

	* gdb.base/default.exp: Expect help system output to be in
	alphabetical order.
	* gdb.base/help.exp: Ditto.

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

	* gdb.base/signals.exp: Change "i*86-pc-linux-gnu" to
	"i*86-pc-linux-gnu*".
	* gdb.base/interrupt.exp: Ditto.
	* gdb.base/corefile.exp: Ditto.

	* lib/gdb.exp(gdb_compile): If is_vxworks target feature is set,
 	define vxworks when building the testcase.

	* gdb.base/ptype.exp: Fix testnames to be unique.
	* gdb.base/radix.exp: Ditto.
	* gdb.base/term.exp: Ditto.
	* gdb.base/whatis.exp: Ditto.
	* gdb.c++/classes.exp: Ditto.

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

	* gdb.base/callfuncs.exp: Fix indentation.

	* lib/gdb.exp(gdb_expect): Set remote_suppress_flag if
	suppress_flag has been set.
	(gdb_step_for_stub): Check for gdb,use_breakpoint_for_stub
	target feature.

Mon Sep 15 15:43:17 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.stabs/weird.exp: Don't start gdb 'til after we've compiled
	the testcase.

	* gdb.c++/cplusfuncs.cc(main): Add extern "C" declaration for
 	set_debug_traps() and breakpoint().
	* gdb.c++/misc.cc (main): Ditto.
	* gdb.c++/templates.cc (main): Ditto.
	* gdb.c++/virtfunc.cc (main): Ditto.

Fri Sep 12 16:56:38 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_step_for_stub): New function.
	(gdb_run_cmd): Look for gdb,do_reload_on_run target feature--if it
	exists, reload the executable and do a "continue" instead of
	doing a jump.
	(runto_main): Use gdb_step_for_stub.

	* gdb.base/break.exp: Use gdb_step_for_stub. Also, rename certain
 	tests to have unique names.
	* gdb.base/callfuncs.exp: Ditto.
	* gdb.base/commands.exp: Ditto.
	* gdb.base/default.exp: Ditto.
	* gdb.base/help.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/opaque.exp: Ditto.
	* gdb.base/printcmds.exp: Ditto. Use a loop to emit multiple
	similar tests.

	* gdb.base/setshow.c: Add set_debug_traps/breakpoint calls.
	* gdb.c++/cplusfuncs.cc: Ditto.
	* gdb.c++/virtfunc.cc: Ditto.

	* config/monitor.exp: Keep track of the last file we saw, rather
	than trying to get the info from gdb.

	* gdb.fortran/types.exp: Move comment to previous line.

Tue Sep  2 19:55:34 1997  Bob Manson  <manson@charmed.cygnus.com>

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

Mon Jul 28 12:14:47 1997  Stan Shebs  <shebs@andros.cygnus.com>

	From Bob Manson:
	* config/monitor.exp (gdb_target_monitor): Look for "Connected to"
 	string from GDB when it connects.

	* lib/gdb.exp: Look for $TOOL_EXECUTABLE.

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

	* lib/gdb.exp(get_debug_format): Don't cause the testsuite to fail
 	if we can't get a debug format from GDB (we may be testing an
 	older GDB). Use a 10 second timeout when checking for the format.

	* gdb.stabs/weird.exp: Fix quoting.

	* config/sparclet.exp: Renamed sparclet-loader.c to stub-loader.c.

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

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

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

	* gdb.base/overlays.exp: Preliminary fixes; temporarily disabled
 	until it has been modified to work with the new testsuite.

	* gdb.*/*.exp: Instead of causing 1 unresolved test when the
 	testcase won't compile, cause all of the testcases in the file to
 	fail instead.

	* lib/gdb.exp(gdb_suppress_entire_file): New procedure.
	(gdb_clear_suppressed): New procedure.
	(gdb_stop_suppressing_tests): Only clear suppress_flag if
	it contains a positive value.

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

	* lib/gdb.exp(default_gdb_start): Use gdb_opts host feature.

	* gdb.c++/virtfunc.exp: Remove setting of libs variable.

Fri Jun 27 07:44:25 1997  Fred Fish  <fnf@cygnus.com>

	* lib/gdb.exp (setup_xfail_format): New function.
	(get_debug_format): New function to get debug format.
	(debug_format): New global variable to hold last value set
	by get_debug_format.
	* gdb.base/list.exp: Call get_debug_format and expect some
 	tests to fail for DWARF 1 and COFF formats.
	* gdb.c++/ptype.exp: Ditto.
	* gdb.c++/classes.exp: Ditto.
	* gdb.c++/cplusfuncs.exp: Ditto.
	* gdb.c++/inherit.exp: Ditto.
	* gdb.c++/templates.exp: Ditto.
	* gdb.c++/virtfunc.exp: Ditto.

Wed Jun 25 09:08:51 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(default_gdb_exit): Don't give an error if the remote
	host doesn't have a currently-open connection.

	* config/sparclet.exp: Cleanups and fixes to make it generic for
 	any gdb stub target. Handle cases where gdb doesn't respond when
 	interrupted in a sane fashion.

	* config/m32r-stub.exp: Load sparclet.exp instead of trying to do the
 	same thing in a totally different way.

	* config/monitor.exp: Pass in timeouts to gdb_expect instead of
 	setting "timeout".
	(gdb_start): We set the global gdb_prompt variable in
 	default_gdb_init now.

Sun Jun 22 09:11:02 1997  Fred Fish  <fnf@cygnus.com>

	* gdb.base/printcmds.exp: Fix "check for floating addition"
	regexp to accept results within approx +/- .01 of exact value.
	* lib/gdb.exp (gdb_test): Remove unused expect_out global decl.

Wed Jun 18 11:11:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_init): Pass our arguments to default_gdb_init
 	properly.
	(gdb_expect): Add optional timeout parameter, and add timeout
	value to various calls.
	(gdb_suppress_tests): Only give one warning message per group.

Tue Jun 17 13:10:10 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_expect): Declare errorInfo and errorCode as
 	global variables. Handle getting a value for $timeout more
 	gracefully.

Sat Jun 14 09:23:26 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp: Close connection to remote host if gdb doesn't
 	initialize.
	(default_gdb_init): New procedure; allow gdb_init to be overridden
 	by a target configuration file.
	(gdb_expect): Pass the timeout to remote_expect.

	* config/monitor.exp(gdb_load): Fix typo in regexp.

Thu Jun 12 20:57:12 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/funcargs.exp: Remove spurious suppress tests call.

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

	* config/monitor.exp(gdb_target_monitor): Call gdb_file_cmd
 	here. Call gdb_target_exec before rebooting the target, to make
 	sure the connection to the target is closed.
	(gdb_load): Pass the name of the executable to gdb_target_monitor.
	Don't call gdb_file_cmd here; let gdb_target_monitor do it.
	Also detect "Timeout reading from remote" error.

	* config/gdbserver.exp: Pass the executable being loaded to
 	gdb_target_monitor. Don't call gdb_file_cmd here; let
 	gdb_target_monitor do it.

	* gdb.disasm/hppa.exp: Don't use exec_output.

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

	* gdb.base/list.exp: If we're debugging a non-native target,
	try to set the pc register to point to the start of the
	program before doing the first list command.

	* gdb.c++/virtfunc.exp(gdb_virtfunc_restart): Make sure we run
 	test_calls after restarting.

	* lib/gdb.exp(gdb_run_cmd): Send jump command again after
 	reloading.

	* gdb.base/watchpoint.exp: Fix typo.

	* gdb.base/setshow.exp: Check for use_gdb_stub.

	* gdb.base/break.exp: Fix continue until exit test for the gdb
 	stub case.
	* gdb.base/langs.exp: Ditto.

	* config/monitor.exp(gdb_load): Handle gdb_sect_offset and
 	gdb_load_offset. If we weren't given a file to load, figure out
 	what the current file is and use it.

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

Thu May 22 18:51:32 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_expect): Look for gdb,timeout target
	feature.

	* config/proelf.exp: New entry.

Wed May 21 21:23:16 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp: Remove spurious .* patterns at the beginning
	of regexps.

	* gdb.base/watchpoint.exp: Don't run the test_stepping
	tests if gdb can't call functions on the target.

	* gdb.base/setshow.exp: Don't run the set prompt tests if
	the board has gdb_prompt set.

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

	* gdb.base/a2-run.exp: Change "gdb,noargs" to just "noargs".
	* gdb.base/commands.exp: Likewise.
	* gdb.base/setshow.exp: Likewise.

Mon May 19 15:37:50 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/monitor.exp(gdb_start): Look for gdb_prompt target
	feature.

	* config/i960.exp: New file.

Thu May  1 18:01:50 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/funcargs.exp: Check for gdb,short_int target
	feature instead of looking for explicit target triplets.

Mon Apr 28 17:27:40 1997  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/printcmds.exp: add a couple more tests a la
	"p 123DEADBEEF", to check parse_number.
	* top.c: change "to enable to enable" to "to enable" in a couple
	of help strings.

Thu Apr 24 14:38:18 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/callfuncs.exp: Mark some tests as expected to fail
	on the mn10300.

Mon Apr 21 15:05:42 1997  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a2-run.exp: Add arm-*-coff setup_xfails for cases
	where the test executable is run with explicit args.
	* gdb.base/default.exp: Handle arm-*-coff case for "info float".

Mon Apr 21 13:38:58 1997  Fred Fish  <fnf@cygnus.com>

	* gdb.base/run.c: Use FAKEARGV to build test executable that
	does not require a command line arg, since most simulators
	don't currently support passing such an arg into the simulated
	program.
	* gdb.base/commands.exp: Change tests to insert the proper
	value as the arg to the first recursive factorial call.  Change
	compilation line to define FAKEARGV at compile time.

Wed Apr  9 11:12:36 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/recurse.exp: Enable these tests for the mn10300.
	* gdb.base/watchpoint.exp: Don't expect a failure for an "calling
	function with watchpoint enabled" test.

Tue Apr  8 19:33:20 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/watchpoint.exp(test_watchpoint_triggered_in_syscall):
 	Don't call gdb_test when the command doesn't return to a gdb prompt.

	* lib/gdb.exp(gdb_stop_suppressing_tests): Don't print gratuitous
 	"Tests restarted" messages.

Tue Apr  8 16:38:46 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/mn10300.exp: Fix buglets in "other" tests.

Thu Apr  3 15:21:26 1997  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/help.exp: update help msg for INFO ADDR; add help test
	for INFO SYMBOL; add help tests for OVERLAY commands.
	* gdb.base/default.exp: add tests for INFO SYMBOL command;
	add tests for OVERLAY commands
	* gdb.base/overlays.c overlays.exp foo.c bar.c baz.c grbx.c ovlymgr.h
	d10v.ld m32r.ld d10vovly.c m32rovly.c: add test case for overlays.
	* gdb.base/sigall.c: add usestubs code frag
	* gdb.base/watchpoint.exp: turn on complex watchpoint test for M32R.

Thu Apr  3 09:38:53 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_suppress_tests): Add explanation for subsequent
	failures.
	(gdb_stop_suppressing_tests): Note that tests have restarted.

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

	* config/h8300.exp: New file.

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

	* gdb.base/setshow.exp: Check for the existence of a
	feature, not its value.

Sat Mar 29 11:19:46 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.c++/virtfunc.exp: Restart gdb in a sane fashion.

	* gdb.base/scope.exp: It's now init0(), not init().

	* gdb.base/scope0.c: For now, change init() to be init0().

	* config/monitor.exp: Use gdb_serial in preference to serial
	or netport.

	* lib/gdb.exp: Set GDB to [transform gdb] if we're using a remote host
 	and it's not already set.

Fri Mar 28 19:54:18 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/setshow.exp: Only test the run command if the target
 	isn't using a stub and if it supports argument passing.

Sat Mar 22 19:50:25 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/udi.exp(gdb_start): Make sure UDICONF is set
	properly before starting gdb.

Mon Mar 24 14:40:33 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/mn10300.s: New test file for mn10300 disassembler.
	* gdb.disasm/mn10300.exp: Run mn10300 disassembler tests.
	* gdb.disasm/Makefile.in: Remove "mn10300" when cleaning.

Tue Mar 11 11:42:58 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vx.exp: Use remote_ld, not vxworks_ld. Don't use
 	specialized code to reboot the board, use remote_reboot instead.

	* config/vxworks29k.exp: Use vx.exp, not vx-gdb.exp.

	* lib/gdb.exp: Add GDB_TESTCASE_OPTIONS.

	* config/monitor.exp: Make sure we disconnect from the target.
	Also, try a reboot/reload cycle instead of failing if the
	load fails.

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

	* gdb.base/default.exp: Don't set match_max.
	* gdb.base/help.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/signals.exp: Ditto.

	* config/monitor.exp(gdb_load): If gdb,use_standard_load is
	set, use remote_ld to download the testcase instead of
	the GDB loader.

Wed Mar  5 00:00:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vr5000.exp: New file.

	* config/monitor.exp(gdb_target_monitor): Add pattern for
	"Ending remote" to detect errors in connecting.

	* gdb.base/setshow.exp: Add .* within auto language test.

	* lib/gdb.exp(gdb_run_cmd): Add check for gdb_init_command
	target feature.

	* config/monitor.exp(gdb_load): Check for a failure when loading,
 	and reboot the board if necessary.

	* gdb.base/setvar.exp(test_set): Handle multiple prints within
	a set of tests. Remove print.* from the patterns being checked.

Mon Mar  3 11:57:43 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/a1-selftest.exp: Use send_gdb consistently. Don't
	refer to gdb_spawn_id.

	* config/m32r-stub.exp: Remove references to gdb_spawn_id, no
	longer used.
	* config/sparclet.exp: Ditto.
	* config/sparclet-old.exp: Ditto.
	* config/slite.exp: Ditto.
	* config/sim.exp: Ditto.
	* gdb.base/funcargs.exp: Ditto.

	* lib/gdb.exp:Remove references to gdb_spawn_id.
	(gdb_expect): Move to remote.exp.

Fri Feb 28 20:47:39 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/monitor.exp: Detect the "Couldn't establish connection"
	message from GDB.

Tue Feb 25 14:08:55 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/bitfields.exp: Use runto instead of explicit
	gdb_run_cmd/gdb_expect sequences.

	* gdb.base/break.exp(text_next_with_recursion): Add match for
	gdb_expect call.

	* config/monitor.exp(gdb_target_monitor): Calling exit loses big.
	We also need to handle the "A program is being debugged already"
	prompt from gdb. Use gdb_test to set the baud rate.

	* lib/gdb.exp(gdb_init): Increase the default expect buffer size
	to 20000. Really. I mean it.

Mon Feb 24 13:23:26 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_test): Generate a FAIL message when send_gdb
 	fails. If suppress_flag is set, skip perror message about not
 	being able to send to GDB.
	(send_gdb): If suppress_flag is set, don't try to send commands to
 	GDB.
	(gdb_expect): If suppress_flag is set, always fail immediately.
	(gdb_suppress_tests, gdb_stop_suppressing_tests): New functions.
	(gdb_init): Call gdb_stop_suppressing_tests.
	(default_gdb_exit): Ditto.
	(default_gdb_start): Ditto.

	* gdb.base/bitfields.exp: Call gdb_suppress_tests and
 	gdb_stop_suppressing_tests as appropriate.
	* gdb.base/break.exp: Ditto.
 	* gdb.base/callfuncs.exp: Ditto.
	* gdb.base/commands.exp: Ditto.
	* gdb.base/exprs.exp: Ditto.
 	* gdb.base/funcargs.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/recurse.exp: Ditto.
 	* gdb.base/scope.exp:  Ditto.
	* gdb.base/structs.exp: Ditto.
	* gdb.c++/inherit.exp: Ditto.

Sun Feb 23 19:56:02 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vr4300.exp: New file.

	* gdb.*/*.exp: Call gdb_expect instead of expect.

	* lib/gdb.exp(gdb_expect): New function.

Thu Feb 20 13:57:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_init): New function.

	* gdb.base/setvar.exp(test_set): Don't bother printing a PASS/FAIL
 	for each individual variable set.

	* gdb.base/exprs.exp(test_expr): Make sure each test gets a unique
	name.

	* gdb.base/help.exp: Fix the syntax of a few gdb_test calls.

	* gdb.base/scope.exp: Use gdb_test.

	* gdb.base/ptype.exp: Don't call "gdb_exit; gdb_start" if we're
	aborting; the testsuite driver will do that for us (see
	gdb_finish). Also, use gdb_test in a few more places.

Thu Feb 20 13:32:24 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/help.exp: Fix syntax of "help info all-registers" test.

Thu Feb 20 10:34:21 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/mn10200.s: Add "nop" after "main" so that "main"
	and "add_tests" are not at the same address.

Fri Feb 14 18:47:23 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/ptype.exp: Use gdb_test.

Thu Feb 13 16:09:36 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/mn10200.s (misc_tests): Fix targets for "jsr" insns.
	* gdb.disasm/mn10200.exp (misc_tests): Remove bogus line accidentally
	left in.  No longer expect them to fail.

	* gdb.stabs/*.mt; Deleted, no longer used.
	* gdb.stabs/configure.in: Remove references to target makefile
	frags.
	* gdb.stabs/configure: Rebuilt.

	* gdb.disasm/*.mt: Deleted, no longer used.
	* gdb.disasm/configure.in: Remove references to target makefile
	frags.  Use "sh3.s" as the unique filename for this directory.
	* gdb.disasm/configure: Rebuilt.

	* gdb.disasm/mn10200.s: New test file for mn10200 disassembler.
	* gdb.disasm/mn10200.exp: Run mn10200 disassembler tests.
	* gdb.disasm/Makefile.in: Remove "mn10200" when cleaning.

Tue Feb 11 16:57:58 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/udi.exp: Use mondfe,name instead of remote_host.

Tue Feb 11 11:22:36 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/watchpoint.exp: Don't expect a failure when calling
	a function with a watchpoint enabled on the mn10200.

	* gdb.stabs/weird.exp: Don't quit if "weird.s" doesn't exist
	before trying to create it!

Mon Feb 10 16:40:47 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/vx.exp: Use hostname instead of netport.

	* config/vxworks.exp: New file.

	* gdb.base/a2-run.exp: Change vxworks cases to use gdb_spawn_id.

	* config/monitor.exp(gdb_target_monitor): Look for a prompt from
 	gdb before assuming everything worked. Send a ^C if a timeout
	occurs.

	* lib/gdb.exp(gdb_test): Check the result of send_gdb. Use
	$gdb_spawn_id directly.
	(gdb_run_cmd): Try _start as well as start. Use the target feature
	gdb,start_symbol as the symbol to start from when jumping.

Mon Feb 10 11:26:59 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/exprs.exp: Delete bogus/incorrect (and probably
	redundant) test.

	* gdb.base/recurse.exp: Relax final value test for 'b' so that
	it doesn't lose for 16bit integer systems.

Fri Feb  7 09:31:21 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.fortran/types.exp: If the target doesn't support "double"
	data types, then expect "real" types to only be 4 bytes.

	* gdb.c++/virtfunc.exp: Expect failure for virtual function
	call tests if the target doesn't support inferior function calls.

	* gdb.base/printcmds.exp: Allow minor deviation in FP values
	in printf tests.

Thu Feb  6 12:46:14 1997  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/help.exp: Disable "help set", "help show", and
	"help support".  Simplify regexp for "help stack".

	* gdb.base/default.exp: Set match_max to 5000 and the timeout
	to 60 seconds.  Temporarily set match_max to 15000 around the
	"info copying" test.

	* gdb.base/nodebug.exp: Don't try to do an inferior function
	call if the target doesn't support them.
	* gdb.base/printcmds.exp: Likewise.
	* gdb.base/setvar.exp: Likewise.
	* gdb.base/structs.exp: Likewise.
	* gdb.c++/templates.exp: Likewise.
	* gdb.base/ptype.exp: Likewise.  Remove UDI specific stuff.

	* gdb.base/recurse.exp: Enable for the mn10200.

	* configure.in: Do configure gdb.stabs directory for *-*-elf
	targets.
	* configure: Rebuilt.

	* gdb.base/break.exp: Check for gdb,noresults before testing
	exit status and/or results from the target.
	* gdb.base/watchpoint.exp, gdb.base/langs.exp: Likewise.
	* lib/gdb.exp: Remove old (now bogus) initialization of
	noinferior, noargs, noresults and nosignals.

Tue Feb  4 21:52:17 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/sh.exp: New file.

	* config/slite.exp: Try to connect multiple times to the board
	before rebooting. Only send a "monitor run" if need_monitor_run
	is set.

	* gdb.base/break.exp: Don't do the "stub continue" test if
	the target has gdb_stub set.

	* gdb.base/callfuncs.exp: Increase the timeout.

	* gdb.base/interrupt.exp: Don't even try to compile the testcase
	if the target has gdb,noinferiorio set.

	* gdb.base/list.exp: Increase match_max to 10000 characters.

	* gdb.base/sigall.exp: Check for gdb,nosignals on the target.

	* gdb.base/watchpoint.exp: Check for gdb,noinferiorio on the
	target.

	* lib/gdb.exp(gdb_run_cmd): Fix for targets that use stubs.

Mon Feb  3 12:09:37 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/a1-selftest.exp: Make sure we call gdb_exit before
 	trying to delete the copy of gdb. Catch the file delete so we
 	don't die if the delete fails; also, the file should be copied to
 	the host, not to the build.

Sun Feb  2 00:55:14 1997  Bob Manson  <manson@charmed.cygnus.com>

	* lib/gdb.exp(gdb_test): Surround the result pattern with
 	parenthesis in case it contains multiple regexps separated
	with |.

	* gdb.base/watchpoint.exp: Use gdb_test.
	* gdb.base/default.exp: Ditto.

Sat Feb  1 23:51:01 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.*/*.exp: Replace $prompt with $gdb_prompt.

	* gdb.base/scope.exp: Use gdb_test.
	* gdb.c++/classes.exp: Ditto.
	* gdb.c++/inherit.exp: Ditto.

Fri Jan 31 13:09:12 1997  Bob Manson  <manson@charmed.cygnus.com>

	* gdb.base/crossload.exp: Don't use execute_anywhere, use
	remote_exec instead.
	* gdb.base/corefile.exp: Don't be ridiculous.
	* gdb.base/*.c: Add missing stub invocations.

Thu Jan 30 16:49:25 1997  Bob Manson  <manson@charmed.cygnus.com>

	* config/slite.exp: Miscellaneous fixes.

	* lib/gdb.exp: Fix runto.

	* gdb.base/signals.exp: Check for a gdb,nosignals feature of
	the target.

	* gdb.base/watchpoint.exp: Fix regexp.

	* lib/gdb.exp(default_gdb_exit): Add a catch to the
	close and wait commands, as the descriptor may now be
	invalid. Always call "remote_close host".

Tue Jan 28 14:42:31 1997  Bob Manson  <manson@charmed.cygnus.com>

	   Major rewrite for testsuite revision.

	* lib/gdb.exp: Remove references to global CC, CXX, B_OPTIONS,
	TARGET_INCLUDES, LDFLAGS and target_alias. Use gdb_spawn_id
	instead of relying on spawn_id to always contain a valid
	spawn id.
	(get_compiler_info): New procedure to build the ${binfile}.ci
	file, instead of replicating this in N different places.
	(gdb_compile): New procedure.

	gdb.*/*.exp: Use gdb_compile and get_compiler_info (with
 	appropriate arguments) instead of compile. Use gdb_test in a lot
 	more places.  Use send_gdb instead of send. Always run gdb_start
	at the start of a testcase, as this is no longer done magically.

	config/*-gdb.exp: Rename without the -gdb suffix.

	config/mips.exp: Use remote_close instead of exit_remote_shell.
	config/monitor.exp: Use target_info instead of looking at
	baud, timeout, etc.
	config/sim.exp: Use gdb_spawn_id instead of relying on spawn_id.

Sat Dec 14 00:43:57 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.c++/templates.exp (test_ptype_of_templates),
	gdb.c++/inherit.exp (test_ptype_si, test_print_anon_union):
	Update expect patterns for destructors and assignment operators
	to match corresponding c-typeprint.c changes.
	* gdb.c++/templates.exp (test_template_breakpoints):  Revert change
	to destructor breakpoint test, GDB should be able to set the
	destructor breakpoint without specifying arguments.

Tue Dec  3 20:17:52 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.threads/pthreads.exp: Change result for failure to compile due
	to lack of pthreads runtime support from an error to simply an
	unsupported test, per dejagnu standards.

Sun Dec  1 00:18:59 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* lib/gdb.exp (gdb_test):  Simplify expect pattern for the case
	where GDB exits to reduce pattern match time.
	(skip_chill_tests):  Skip chill tests for mips*-sgi-irix6*.

	* gdb.base/nodebug.exp:  Add mips*-sgi-irix6* xfails.

Tue Nov 26 18:29:23 1996  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/callfuncs.exp: Turn on function call tests for h8300.
	* gdb.base/default.exp:   ditto.
	* gdb.base/nodebug.exp:   ditto.
	* gdb.base/printcmds.exp: ditto.
	* gdb.base/ptype.exp:     ditto.
	* gdb.base/setvar.exp:    ditto.
	* gdb.base/structs.exp:   ditto.
	* gdb.base/setshow.c:     Guard against uninitialized values of argc.

Tue Nov 26 17:23:28 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure, */configure: Rebuild with autoconf 2.12.

Sat Nov 23 13:32:15 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a1-selftest.exp: Change x86 linux setup_xfails to
	use new i*86-pc-linux*-gnu quads.
	* gdb.base/corefile.exp: Ditto.
	* gdb.base/signals.exp: Ditto.
	* gdb.base/sigall.exp: Ditto.
	* gdb.base/interrupt.exp: Ditto.

	* gdb.base/signals.exp (signal_tests_1): Remove setup_xfail
	"i*86-*-linux" for "signal SIGUSR1".  Now works, at least with
	RedHat 4.0.

	* gdb.threads/pthreads.c (_MIT_POSIX_THREADS): Define if target is
 	linux.  This allows the test case to at least compile on latest
 	linux, but still not run due to missing the threads runtime library.

Fri Nov 22 10:13:29 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/a1-selftest.exp (do_steps_and_nexts):  Reinitialize source
	directory to search gdb directory. Accept and step over conditional
	stack alignment code. Consume $prompt in failure cases.
	Reset timeout to $oldtimeout instead of some arbitrary value.
	* gdb.base/nodebug.exp:  Limit backtrace to 10 frames to avoid
	timeout problems with infinite stack backtraces.
	* gdb.base/ptype.exp (ptype struct link, union tu_link):
	Accept function parameters for linkfunc member.

Thu Nov 21 09:17:19 1996  Fred Fish  <fnf@cygnus.com>

	* lib/gdb.exp (CFLAGS): Remove, unreferenced.
	(CXXFLAGS): Remove, unreferenced.
	(B_OPTIONS): Add for -B options and add code to initialize with
 	previous -B options and also add -B option to pick up cross compiled
 	runtime.
	(TARGET_INCLUDES): Add for -I options and add code to initialize when
	doing cross compiles.
	(target_alias): Declare global.
	(xgcc): Set variable to full path of gcc in build tree.  Use findfile
	to verify that gcc exists in build tree, and if so set CC to that
	gcc and to use B_OPTIONS and TARGET_INCLUDES.

Tue Nov 12 16:20:13 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/inherit.exp (test_print_anon_union): Reenable
	ptype test for anonymous union.  Fixup testcase to match
	current gcc debug output.

Mon Nov 11 14:12:06 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/funcargs.c: Use cast rather than "UL" suffix to
	force argument to an unsigned long type.

Mon Nov 11 10:27:55 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/inherit.exp (test_ptype_si): Fix tagless struct ptype
 	tests and anonymous union print/ptype tests.
	* gdb.base/list.exp (test_forward-search): Increase timeout by
	5 minutes for the "search extremely long line" case.
	* lib/gdb.exp (gdb_test): Document that the third arg to gdb_test is
	completely optional and that the pass/fail messages use the command as
	the message if that third arg is a null string.
	(gdb_test_exact):  Arrange that a null string pattern means match a
	null string output rather than any output, which might include random
 	errors.
	* gdb.base/mips_pro.exp: Add "mips*-sgi-irix4*" xfail for
	backtrace test.
	* gdb.c++/demangle.exp: Add a "*-*-*" xfail for test that was
	always failing and failure is now exposed by gdb.exp changes.

Sat Nov  9 11:13:24 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/inherit.exp (test_ptype_vi): Log some passes that
	weren't being noted.

Sat Nov  9 01:05:10 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/corefile.exp:  Consume $prompt in mmap fail cases.
	* gdb.stabs/weird.exp:  Remove v_comb xfails.

Tue Nov  5 10:44:23 1996  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/[bitfields.exp crossload.exp funcargs.exp interrupt.exp
	            list.exp scope.exp watchpoint.exp]
	  Make all timeout error msgs explicitly say "(timeout)".

Mon Nov  4 12:03:06 1996  Michael Snyder  <msnyder@cygnus.com>

	* config/monitor.exp: Increase download timeout to 1000 seconds.

Mon Nov  4 12:02:26 1996  Michael Snyder  <msnyder@cygnus.com>

	* config/m32r.exp: Increase timeout to 120 seconds.

Sun Nov  3 14:37:05 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/classes.exp: Modify to handle current gcc C++ member ordering
	and accept older ordering as obsolescent gcc or gdb.
	* gdb.c++/templates.exp: Ditto.
	* gdb.c++/virtfunc.exp: Ditto.

Fri Nov  1 11:56:09 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/coremaker.c: Add code to mmap some data so we
	can check that it ends up in the core file.
	* gdb.base/corefile.exp: Add test to read mmapped data
	from core file.

Wed Oct 30 18:19:16 1996  Michael Snyder  <msnyder@cygnus.com>

	* config/m32r.exp: New file.

Mon Oct 21 14:40:50 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* testsuite/gdb.base/nodebug.exp:  Whack out -g options by hand so
	that cflags can contains -gstabs, and work correctly for other tests.

Mon Oct 21 14:00:37 1996  Michael Snyder  <msnyder@cygnus.com>

	* gdb.base/setshow.exp: New file, tests show and set.
	* gdb.base/setshow.c:   New file, tests show and set.
	* gdb.base/help.exp: Add test for help set|show annotate.
	* gdb.base/default.exp: Add test for set|show annotate.

Wed Oct 16 19:03:54 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* testsuite/gdb.base/break.exp:  Make backtrace from factorial
	errors unique.
	* testsuite/gdb.base/nodebug.exp:  Whack out all -g options
	explicitly.

Tue Oct 15 16:45:02 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* config/sim-gdb.exp (gdb_target_sim):  Remove setting of height
	and width commands.  This is done elsewhere.
	* (gdb_start):  Don't call gdb_start_sim here.  That's already
	done in gdb_load.  This fixes lots of failures in default.exp.

Sun Oct 13 10:40:23 1996  Fred Fish  <fnf@cygnus.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>:
	* gdb.base/mips_pro.exp: Fix misplaced gdb_exit/gdb_start/gdb_load.
	* lib/gdb.exp (gdb_test): Treat failures due to program exiting
	in the same we we treat other failures (since it may be an expected
 	condition), rather than as an error.
	* gdb.base/signals.exp (test_handle_all_print): Revert back to
	old test format.

Fri Oct 11 17:05:22 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (clean mostlyclean): Also remove chill *.grt files.
	(distclean maintainer-clean realclean): No need to remove files
 	twice.  Nuke the duplicates.
	* gdb.base/Makefile.in (EXECUTABLES): Add "structs".
	* gdb.threads/Makefile.in (distclean maintainer-clean realclean):
	Remove config.h along with other config files.

Mon Sep 30 20:16:22 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/interrupt.exp: Add i*86-*-linux* setup_xfail for
	"p func1 ()" and note that rests of tests are skipped.
	* gdb.base/corefile.exp: Add i*86-*-linux* and m68*-*-hpux*
 	setup_xfails for "print func2::coremaker_local".
	Add i*86-*-linux* setup_xfail for "backtrace in corefile.exp".
	* gdb.base/mips_pro.exp: Restart gdb in this test so it isn't
	affected by the previous run test.
	* gdb.chill/misc.exp: Add m68*-*-hpux* setup_xfails for
	"print array () ubyte (foo)" and "print/x array () byte (\$i)"
	* gdb.chill/pr-8742.exp: Add m68*-*-hpux* setup_xfails for
	"pass int powerset tuple" and "pass modeless int powerset tuple".
	* gdb.chill/tests2.exp: Add m68*-*-hpux* setup xfails for
	"real write 4" and "real write 8".
	* gdb.shill/tuples.exp: Add i*86-*-linux* and m68*-*-hpux*
 	setup_xfails for "print vs1 after tuple assign 2",
	"print \$i after tuple assign 2", and
	"print vs2 after tuple assign 2".
	* lib/gdb.exp (gdb_test): When a gdb aborts, print a more
	meaningful error message and return -1 so the caller can
	suppress further tests and avoid a cascade of errors.

Fri Sep 27 10:34:51 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a1-selftest.exp: Tweak tests to account for new
	format for printing version.
	* gdb.base/default.exp: Ditto.
	* gdb.base/interrupt.exp: Fix problem with cascade of
	errors if child process dies while calling a function.

Fri Sep 13 21:43:48 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (VPATH): Add
	* Makefile.in (Makefile, config.status): Fix rules so things get
	remade when necessary.

Fri Sep 13 18:16:10 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (just-check): Add path to sibling expect dir
	to environment variable specified by RPATH_ENVVAR.

Fri Sep 13 12:05:34 1996  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (RPATH_ENVVAR): New var, set to @RPATH_ENVVAR@.
	(just-check): Add shared library paths for libstdc++, tk,
	tcl, bfd, and opcodes to the environment variable specified
	in RPATH_ENVVAR.
	* configure.in: Add support to recognize --enable-shared flag
	and generate correct value for RPATH_ENVVAR.
	* configure: Regenerated with autoconf.

Mon Sep  2 06:36:02 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/break.exp: Expand "Delete all breakpoints" xfail to
 	include all osf versions.
	* gdb.threads/pthreads.exp: Expand "run to main" xfail to include
	all osf versions.  Add -D_MIT_POSIX_THREADS to compilation command
	when target is linux.  When failing to build pthreads test
	executable, give more meaningful message.
	* gdb.threads/pthreads.c: Hpux also uses old definition of second
	arg for pthread_create.

Mon Aug 19 09:58:59 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.threads/pthreads.c (PTHREAD_CREATE_ARG2,
 	PTHREAD_CREATE_NULL_ARG2): Accomodate old pthreads implementations.
	* gdb.threads/pthreads.exp: Try linking with both -lpthread (Solaris)
 	and -lpthreads (everybody else).
	(test_startup): Fail gracefully if threads are not supported.
	* gdb.base/nodebug.exp: Add setup_xfail hppa*-*-hpux* for
	"p/c array_index("abcdef",2)" when not gcc compiled.
	* gdb.base/corefile.exp: Add setup_xfail hppa*-*-hpux* for
	"print func2::coremaker_local" when not gcc compiled.
	* gdb.base/opaque.exp: Remove setup_xfail hppa*-*-hpux* for
	"ptype on opaque struct tagname (statically)",
	"ptype on opaque struct tagname (dynamically) 1", and
	"ptype on opaque struct tagname (dynamically) 2"
	for not compiled with gcc.
	* gdb.base/mips_pro.exp: Only do setup_xfail hppa*-*-* for
	backtrace when compiled with gcc.
	* lib/gdb.exp (runto_main): Return result of "runto main" rather
	than always return success.

Sat Aug 17 13:28:00 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/virtfunc.exp: Remove setup_xfail for "mips-*-irix5*".

Tue Aug 13 10:26:10 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/structs.exp: Undo last change.

Mon Aug 12 15:29:08 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a1-selftest.exp (do_steps_and_nexts): New routine to
	encapsulate all the steps/nexts done during self test, starting
	at main, and makes them less sensitive to optimization issues.
	Add "hppa*-*-hpux*" to setup_xfail for "backtrace through
	signal handler" test.
	* gdb.threads/pthreads.exp: Only run this for native configs.
	* gdb.base/structs.exp (do_function_calls): Add hppa*-*-hpux9*"
	setup_xfails for "p fun5()", "p fun6()", "p fun7()", and "p fun8"
	tests.
	gdb.c++/virtfunc.exp (do_tests): Add "mips-*-irix5*" setup_xfail
	for "runto test_calls(void)" test.

Sun Aug 11 13:11:24 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/term.exp: Set 7-bit strings, address off, width to 0,
	and don't expect address info in breakpoint confirmations.

Wed Aug  7 20:47:43 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/list.exp (test_forward_search): Increase timeout
	temporarily by 60 seconds for searching extremely long line,
 	and then reset to old value when done.  Increase expect input
	buffer to 10000.

Wed Aug  7 15:34:22 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/list.exp (test_forward_search): Fix to handle very
	long source line without overflowing expect's input buffer.

Wed Aug  7 12:03:25 1996  Tom Tromey  <tromey@creche.cygnus.com>

	* config/slite-gdb.exp (gdb_start): Use "full_buffer", not
	"buffer_full".

	* config/nind-gdb.exp (gdb_start): Use "full_buffer", not
	"buffer_full".

	* config/mips-gdb.exp (gdb_start): Use "full_buffer", not
	"buffer_full".

	* lib/gdb.exp (gdb_test): Correct pattern is "full_buffer", not
	"buffer_full".

Wed Aug  7 11:05:47 1996  Fred Fish  <fnf@cygnus.com>

	* configure.in (configdirs): Add gdb.threads.
	* configure: Regenerated with autoconf.
	* gdb.threads/{config.in, pthreads.c, pthreads.exp}: New.
	* gdb.threads/{Makefile.in, configure.in}: Complete rewrites.
	* gdb.threads/configure: New, generated with autoconf.

Tue Aug  6 10:23:04 1996  Tom Tromey  <tromey@rtl.cygnus.com>

	* lib/gdb.exp (gdb_test_exact): Turn \n in pattern into \r\n.

Mon Aug  5 18:11:53 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/signals.exp (test_handle_all_print): Test separately for
	each signal's status in the output of "handle all print".
	* lib/gdb.exp (gdb_test): Document that the pattern must NOT include
	the \r\n sequence that immediately precedes the gdb prompt.
	* gdb.base/a1-selftest.exp: Save original timeout and restore
	after test.

Sun Aug  4 10:20:50 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/hppa.s: Export fmemLRbug_tests_4 as a ST_CODE
	symbol.

Fri Aug  2 17:37:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/vx-gdb.exp (gdb_start): Fix syntax of `$shell_id < 0'.

Thu Jun 27 20:41:40 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/signals.exp (test_handle_all_print): Temporarily increase
	timeout by 60 seconds.

Thu Jun 27 18:13:57 1996  Fred Fish  <fnf@cygnus.com>

	* config/unix-gdb.exp: Increase default timeout from 30 to 60 sec.
	* config/netware.exp (gdb_run_cmd): Restore old timeout before doing
	error return.

Thu Jun 27 10:54:58 1996  Fred Fish  <fnf@cygnus.com>

	* lib/gdb.exp (default_gdb_start): When reporting a timeout during
	gdb initialization, also report how long dejagnu waited.  Restore
	old timeout before doing error return.  Temporarily increase timeout
 	by 3 minutes to allow for slow startups over heavy NFS use.

Tue Jun 25 19:59:17 1996  Fred Fish  <fnf@cygnus.com>

	* lib/gdb.exp: Report timeout value for verbosity level 2.
	* config/gdbserver.exp: Ditto.
	* config/hppro.exp: Ditto.
	* config/mips-gdb.exp: Ditto.
	* config/monitor.exp: Ditto.
	* config/netware.exp: Ditto.
	* config/sim-gdb.exp: Ditto.
	* config/slite-gdb.exp: Ditto.
	* config/udi-gdb.exp: Ditto.
	* config/unix-gdb.exp: Ditto.
	* config/vx-gdb.exp: Ditto.
	* gdb.base/a1-selftest.exp: Ditto.
	* gdb.base/a2-run.exp: Ditto.
	* gdb.base/break.exp: Ditto.
	* gdb.base/corefile.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/recurse.exp: Ditto.
	* gdb.base/scope.exp: Ditto.
	* gdb.base/signals.exp: Ditto.

Tue Jun 25 23:16:58 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* gdb.threads/Makefile.in (docdir): Removed.

Tue Jun 25 17:02:39 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* gdb.{base,c++,chill,disasm,stabs}/Makefile.in (VPATH): set to
	@srcdir@.
	* gdb.{base,c++,chill,disasm,stabs}/configure.in (AC_PREREQ):
	autoconf 2.5 or higher.
	* gdb.{base,c++,chill,disasm,stabs}/configure: Rebuilt.

Thu Jun 13 11:16:10 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.

Wed Jun  5 16:43:27 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.c++/virtfunc.exp: Search $objdir/../../libstdc++ for libstdc++.

Thu May 30 11:35:11 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/callfuncs.exp: Finish last change -- make sure the
	prototype information ends up in the compiler info file.

Thu May 23 12:48:41 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp: Remove the compiler info file prior to
	attempting to regenerate it.  Eliminate use of a temporary file
	and just generate the info file directly.  Source it immediately,
	for consistency of use.
	* gdb.base/corefile.exp: Ditto
	* gdb.base/exprs.exp: Ditto.
	* gdb.base/funcargs.exp: Ditto.
	* gdb.base/langs.exp: Ditto.
	* gdb.base/list.exp: Ditto.
	* gdb.base/mips_pro.exp: Ditto.
	* gdb.base/nodebug.exp: Ditto.
	* gdb.base/opaque.exp: Ditto.
	* gdb.base/ptype.exp: Ditto.
	* gdb.base/scope.exp: Ditto.
	* gdb.base/setvar.exp: Ditto.
	* gdb.base/signals.exp: Ditto.
	* gdb.base/whatis.exp: Ditto.
	* gdb.c++/templates.exp: Ditto.
	* gdb.c++/virtfunc.exp: Ditto.
	* gdb.c++/virtfunc.exp: Use contents of gcc_compiled to decide
 	whether or not to add -lstdc++ to the compile command line args.

Sat May 18 02:43:58 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/recurse.exp:  Remove setup_xfail for "sparc*-*-sunos4*",
	it got fixed by the recent lookup_minimal_symbol_by_pc change.
	Increase timeout, a lot of single stepping might be needed if the
	target has no hardware watchpoints.

Wed May 15 08:47:42 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/break.exp: Ignore compiler warnings when compiling
	break.c.
	* gdb.base/callfuncs.exp: Don't run these tests on the h8300.
	* gdb.base/default.exp: Add h8300 xfails.  Handle messages
	from remote-sim.
	* gdb.base/exprs.exp: Add h8300 xfails.
	* gdb.base/funcargs.exp: Likewise.
	* gdb.base/nodebug.exp: Likewise.
	* gdb.base/printcmds.exp: Likewise.
	* gdb.base/ptype.exp: Likewise.
	* gdb.base/setvar.exp: Handle sizeof (int) != 4 for h8300.  Add
	h8300 xfails.
	* gdb.base/return.exp: Handle float/double precision problems
	on the h8300.
	* gdb.base/funcargs.c: Explicitly make last constant argument to
	call_after_alloca_subr an unsigned long type.
	* gdb.base/return.c: Include stdio.h.

Tue May  7 22:01:12 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* config/abug.exp: New file for the older Motorola Bug monitor
	that runs on the mvme13x series VME boards.
	* config/monitor.exp: Use the new config array for target settings
	if they exist.

Fri May  3 16:02:55 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* sim-gdb.exp: Make the SH simulator allocate less space when
	it is targeted.

Thu May  2 12:31:56 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/mips_pro.exp: Expect failure for hppa*-*-* in backtrace
	test.

Wed Mar 20 08:48:03 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/list.exp (test_list_function): Remove setup_xfail for
	"rs6000-*-*" for "list function in include file" when gcc compiled.
	* gdb.base/printcmds.exp: Remove setup_xfail for "rs6000-*-aix*"
	for "p ctable1[120]".
	* gdb.base/scope.exp: Remove setup_xfail for "rs6000-*-*" for
	"print 'scope0.c'::filelocal_bss before run" when gcc compiled.
	Remove setup_xfail for "rs6000-*-*" for
	"print 'scope0.c'::filelocal before run".
	* gdb.base/{langs.exp, lists.exp, opaque.exp, scope.exp},
	gdb.stabs/weird.exp: Remove use of compiler options "-c -o ..."
	since some compilers don't allow both options to be given
	on the same command line.  Create object file and move it.

Tue Mar 19 23:49:31 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/corefile.exp: Always regenerate the core file, since
	we always regenerate the coremaker program.  Detect special case
	where registers cannot be read from core file.

Tue Mar 19 16:52:49 1996  Fred Fish  <fnf@cygnus.com>

	From Peter Schauer <Peter.Schauer@Regent.E-Technik.TU-Muenchen.DE>
	* gdb.base/funcargs.c: Patch for SPARCworks alloca compatibility
	* gdb.c++/templates.exp: Only match on basename of file since
	some formats like xcoff don't encode directory information.
	* gdb.stabs/weird.exp: Use the right sed script for powerpc
	and rs6000 AIX xcoff targets.
	* configure.in: Add stabsdirs to configdirs for powerpc-*-aix*.
	* configure: Regenerate.
	* gdb.base/Makefile.in (clean): Remove generated file twice-tmp.c
	here, rather than in distclean.

Sun Mar 17 13:35:31 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/mips_pro.exp: Create mips_pro.ci to get gcc_compiled
	defined, and use it to compile the test case with -O2.  The
	native compilation still uses no optimization.
	* gdb.base/mips_pro.c: Remove inline assembly code since
	it is compiled PIC by default, which results in assembler
	warnings that make the testsuite think the compilation
	was unsuccessful.

Sat Mar 16 15:02:24 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/misc.exp: Add note to message for
	"print s.a for foo struct" that this is a known gcc 2.7.2
	and earlier bug.

Fri Mar 15 17:49:57 1996  Fred Fish  (fnf@cygnus.com)

	* gdb.base/break.exp: Fix pattern for matching "Delete all
	breakpoints (y or n) ".  Add "mips-dec-ultrix*" to
	setup_xfail for deleting all breakpoints test.  Fix various
	timeout messages to include "(timeout)".
	* gdb.base/callfuncs.exp: Add "i*86-*-sysv4*" to setup_xfail
	for "p t_float_values2(3.14159,float_val2)".
	* gdb.base/funcargs.exp: Remove "mips-sgi-irix4*" setup_xfail
	for "continue to call2g" when gcc compiled.
	* gdb.base/langs.exp: Remove "i*86-*-sysv4*" setup_xfail for
	"up to foo in langs.exp", "show language at foo in langs.exp",
	"show language at cppsub_ in langs.exp", "up to fsub in langs.exp",
	and "show language at fsub in langs.exp".
	* gdb.base/list.exp: Remove "*-*-sysv4*" setup_xfail for
	"list line 1 in include file", "list message for lines past EOF",
	"list function in include file", "list list0.h:foo", and
	"list filename:function; nonexistant function".
	* gdb.base/ptype.exp: Change "i*86-*-sysv4*" setup_xfail for
	"whatis unnamed typedef'd enum (compiler bug in IBM's xlc)"
	and "ptype t_char_array" to be for native cc only.

Fri Mar 15 16:17:22 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/corefile.exp: Remove "alpha-dec-osf2*" native compiled
	setup_xfail for "print coremaker_bss", "print coremaker_ro",
 	"print func2::coremaker_local", and "backtrace in corefile.exp".

Wed Mar 13 14:54:11 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/signals.exp: Remove "alpha-*-osf2*" setup_xfail for
	"bt in signals.exp".  This problem only appears when running
	the testsuite, and then only intermittently.

Tue Mar 12 15:00:16 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/return.exp (return_tests): Differentiate between
	two tests of continuing.

Tue Mar  5 14:33:33 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* */Makefile.in (maintainer-clean): Remove config.log.
	* gdb.base/Makefile.in (EXECUTABLES): Replace twice with twice-tmp.
	* gdb.c++/Makefile.in (PROGS): Add inherit.
	(clean): Remove *.ci.

Tue Feb 20 16:36:10 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/misc.cc: Add test code from Mike Stump.
	* gdb.c++/misc.exp: Add test to print s.a, for Mike Stump.

Sun Feb 18 11:39:12 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/signals.exp: Change setup_xfail for "alpha-*-osf2"
	to "alpha-*-osf2*" and add comment.
	* gdb.base/a1-selftest.exp (test_with_self): Remove "alpha-dec-osf2*"
 	setup_xfail for "step over execarg initialization" and
 	"step over corearg initialization".
	* gdb.base/callfuncs.exp (do_function_calls): Restore setup_xfail
	for "hppa*-*-*", "sparc-*-*", "mips*-*-*", and "alpha-dec-osf2*".
	* gdb.base/corefile.exp: Add "alpha-dec-osf2*" setup_xfail when not
 	gcc compiled for "print coremaker_bss", "print coremaker_ro",
	"print func2::coremaker_local", and "backtrace in corefile.exp".
	* gdb.base/signals.exp: Build and source signals.ci.
	Change "alpha-dec-osf2*" setup_xfail for "bt in signals.exp"
	to be for gcc only.
	* lib/gdb.exp: Move verbose statements outside conditionals.

Sat Feb 17 02:22:14 1996  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/sigall.exp:  Remove setup_xfail for irix4.  Fixed by
	Feb 3 procfs.c change.

Fri Feb 16 13:25:31 1996  Fred Fish  <fnf@cygnus.com>

	* config/unix-gdb.exp: Remove extraneous newlines from end of file.

Thu Feb 15 08:12:55 1996  Fred Fish  <fnf@cygnus.com>

	* config/unix-gdb.exp: Default timeout in UNIX case to 30 seconds, up
	from dejagnu's apparent default of 10 seconds, which gives random
	results when running the tests over NFS on moderately loaded systems.
	* lib/gdb.exp (gdb_run_cmd): Add "(timeout)" in timeout case.

Mon Feb 12 16:50:28 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp: Remove setup_xfail for PR 5318.  Now fixed.
	* gdb.base/a2-run.exp: Replace $binfile with $testfile in test
 	result reports.

Fri Feb  9 15:56:51 1996  Fred Fish  <fnf@cygnus.com>

	* configure.in (CY_AC_PATH_TCLH): Remove.
	* configure: Regenerate.

Fri Feb  9 08:21:31 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/Makefile.in (clean): Add missing '{'.

Fri Feb  2 10:19:40 1996  Jeffrey A Law  (law@cygnus.com)

	* lib/gdb.exp: Provide a default value for noinferior.

	* lib/gdb.exp: Fix typos (LDLAGS -> LDFLAGS).
	Load libgloss.exp.

Thu Feb  1 20:20:14 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/hppa.exp: Compile directly into an executable, use
	the executable, not the .o to run the tests from.

Wed Jan 31 14:21:09 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/break.exp: Don't test for program exit or exit status
	if $noresults if nonzero.
	* gdb.base/langs.exp: Likewise.
	* gdb.base/watchpoint.exp: Likewise.

	* gdb.base/default.exp: Remove extraneous call to load gdb.exp.
	* gdb.chill/pr-8405.exp: Move skip_chill_tests check to just before
	trying to compile the testcase.

Wed Jan 24 23:42:39 1996  Doug Evans  <dje@charmed.cygnus.com>

	* gdb.base/interrupt.exp (p func1): xfail sparc64-*-solaris2.
	* gdb.base/signals.exp (continue to handler): Likewise.

Tue Jan 23 16:28:22 1996  Per Bothner  <bothner@kalessin.cygnus.com>

	* gdb.c++/classes.exp:  Now = returns false/true, not 1/0.

	* gdb.fortran/exprs.exp:  .LT. and .GT. now return .TRUE. or .FALSE..

Tue Jan 23 15:41:57 1996  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/corefile.exp: Recognize "not found" as failure
	when trying to determine if a core file was generated.
	If no core file was generate the first time, try again without
	the ulimit -c to work around braindamaged shells.

Mon Jan 15 09:33:00 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.stabs/configure.in (alpha-*-*,mips-*-*): Replace
	[] tests with "test" and enclose string in quotes.
	* gdb.stabs/configure: Rebuild

Thu Jan 11 09:43:14 1996  Tom Tromey  <tromey@creche.cygnus.com>

	Changes in sync with expect:
	* aclocal.m4 (CY_AC_PATH_TCLH): Handle Tcl 7.5 and greater.
	(CY_AC_PATH_TCLLIB): Handle Tcl 7.5 and greater.
	(CY_AC_PATH_TKH): Handle Tk 4.1 and greater.
	(CY_AC_PATH_TKLIB): Handle Tk 4.1 and greater.  Properly quote
	argument to AC_REQUIRE.
	* configure: Regenerated.

Thu Jan  4 08:17:22 1996  Fred Fish  <fnf@cygnus.com>

	* gdb.base/corefile.exp: When generating a core, discard any
	error messages about ulimit not found and the "core dumped"
	message from the shell that runs the coredumper.

Wed Jan  3 01:30:41 1996  Jeffrey A Law  (law@cygnus.com)

	* lib/gdb.exp (skip_chill_tests): Skip them on the PA too.

	* gdb.stabs/weird.exp: Use ${target_triplet} to determine
	which sed script to run.  Expect failure for v_comb test
	on PA targets too.

Sat Dec 30 16:09:04 1995  Fred Fish  <fnf@rtl.cygnus.com>

	* gdb.base/corefile.exp: Remove "i*86-*-linux" xfail for
 	"print func2::coremaker_local" and for "backtrace in corefile.exp"

Sat Dec 30 12:59:12 1995  Fred Fish  <fnf@cygnus.com>

	* lib/gdb.exp: Fix typo and rewrite skip_chill_tests.
	* gdb.stabs/weird.exp: Setup "sparc-sun-sunos4*" and
 	"sparc-sun-solaris*" xfails for "p v_comb".
	* lib/gdb.exp (default_gdb_start): Fix typo.
	* gdb.base/corefile.exp: Allow "Core was generated by ..."
	messages to not include the full program name that caused
	the core dump since some systems (such as solaris) apparently
	truncate this path to about 80 characters.
	When generating a core file first try increasing the core file
	size limit to unlimited since some systems may default it to
	zero, and it is harmless to try it.  Move the test for failing
	to generate a core file to where it will actually get executed.
	* gdb.c++/templates.exp (test_ptype_of_templates): Accept
	new gdb result from g++ debug info improvements and make old
	pattern obsolescent.  Also account for size_t differences
	(may be int or long).
	* gdb.base/a1-selftest.exp (test_with_self): Check for case where
	initialization before function call is placed in the delay slot
	and thus appears to be skipped over by commands such as "next".

Fri Dec 29 16:09:20 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/a1-selftest.exp (test_with_self): Run without windows.

Wed Dec  6 10:45:42 1995  Jeffrey A. Law  <law@sethra.cygnus.com>

	* gdb.base/*.exp: Make ${srcfile} only be the basename of the
	input source file; fix code to compile test to deal with this
	convention.
	* gdb.c++/*.exp: Likewise.

Mon Nov 27 11:40:16 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/signals.exp: Setup "alpha-*-osf2*" xfail for
	"bt in signals.exp".

Sat Nov 25 20:52:15 1995  Fred Fish  <fnf@phydeaux.cygnus.com>

	* gdb.base/a1-selftest.exp: Add alpha-dec-osf2 setup_xfail for
	"step over execarg initialization" and
 	"step over corearg initialization".

Sat Nov 25 18:20:14 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/ptype.c (main): Declare malloc as a "char *" for systems
	with sizeof(pointer) > sizeof(int).  Avoid "void *" or include files.

Sat Nov 25 11:03:42 1995  Fred Fish  <fnf@cygnus.com>

	From Rob Savoye  (rob@poseidon.cygnus.com)
	* Makefile.in, configure.in, gdb.base/{Makefile.in, configure.in},
	gdb.c++/{Makefile.in, configure.in}, gdb.chill/{Makefile.in,
 	configure.in}, gdb.disasm/{Makefile.in, configure.in},
 	gdb.stabs/{Makefile.in, configure.in}, gdb.threads/{Makefile.in,
 	configure.in}: Major reworking for autoconfig.
	* aclocal.m4, configure, gdb.base/configure, gdb.c++/configure,
	gdb.disasm/configure, gdb.stabs/configure, gdb.stabs/default.mt :
 	New files.
	* config/unix-gdb.exp:  Make GDB global.
	* gdb.base/{a1-selftest.exp, a2-run.exp,bitfields.exp, break.exp,
 	callfuncs.exp, commands.exp, corefile.exp, crossload.exp, exprs.exp,
 	funcargs.exp, interrupt.exp, langs.exp, list.exp, mips_pro.exp,
 	nodebug.exp, opaque.exp, printcmds.exp, ptype.exp, recurse.exp,
 	regs.exp, return.exp, scope.exp, setvar.exp, sigall.exp, signals.exp,
 	term.exp, twice.exp, watchpoint.exp, whatis.exp},
	gdb.c++/{classes.exp, callfuncs.exp, inherit.exp, misc.exp,
 	templates.exp, virtfunc.exp}, gdb.chill/{callch.exp, chillvars.exp,
 	misc.exp, pr-4975.exp, pr-5016.exp, pr-5020.exp, pr-5022.exp,
 	pr-5646.exp, pr-5984.exp, pr-6292.exp, pr-6632.exp, pr-8134.exp,
 	pr-8136.exp, result.exp, string.exp, tuples.exp},
	gdb.disasm/{hppa.exp, sh3.exp}, gdb.stabs/weird.exp: Change continues
 	to returns as necessary, arrange for test to compile own testcase
 	executable.
	* lib/gdb.exp: Changes for testsuite to compile own test cases.

Tue Nov 21 16:15:45 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.c++/classes.exp (test_pointers_to_class_members): Add
 	clear_xfail at end of test which might not call either pass or fail.
	* gdb.base/a1-selftest.exp: Add i*86-*-linuxaout xfail for
	"backtrace through signal handler".

Sat Nov 18 04:09:31 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/sigall.exp:  Work around OSF/1-3.x kernel bug when
	continuing from a job control stop signal.
	* gdb.stabs/alpha.mt:  Use $(CFLAGS) when building weird.o.

Wed Nov 15 00:28:03 1995  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/callfuncs.exp: Remove bogus hppa xfails.
	* gdb.base/corefile.exp: Likewise.
	* gdb.base/funcargs.exp: Likewise.

Tue Nov 14 15:18:10 1995  Stu Grossman  (grossman@cygnus.com)

	* config/hmsirom.exp:  Setup for talking to hmsi ROM monitor.
	* config/monitor.exp:  Add support for setting baud rate.

Sat Nov  4 15:35:52 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a1-selftest.exp: Remove i*86-*-sysv4* and
	i*86-*-linux* xfails for "backtrace through signal handler".
	* gdb.base/corefile.exp: Add i*86-*-sysv4* xfail for
	"print func2::coremaker_local".
	* gdb.base/break.exp: Add i*86-*-sysv4*, sparc-sun-sunos4,
 	alpha-dec-osf2* xfail for
	"delete all breakpoints when none".

Wed Nov  1 15:57:16 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/break.exp: Change test that deletes all breakpoints
	when no user breakpoints are installed.  A post 4.15 change
	causes gdb to no longer prompt in this case.

Tue Oct 31 15:13:43 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/return.exp (return_tests):  Change xfail for test
	"correct value returned double test" to stop xfailing at
	Solaris 2.5.  Apparently the bug has been fixed.

Sun Oct 29 12:18:16 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.stabs/ecoff.sed: Remove comment lines except for first one.
	IRIX 4.0 /bin/sed chokes on them, though they work fine elsewhere.

Tue Oct 24 11:12:12 1995  Jeffrey A Law  (law@cygnus.com)

	* gdb.disasm/hppa.exp: Test lci and syncdma instructions.
	* gdb.disasm/hppa.s: Corresponding changes.

Wed Oct 18 11:27:47 1995  Jeffrey A Law  (law@cygnus.com)

	* gdb.base/configure.in (hppa*-*-hpux*): No longer needs target
	makefile fragment.
	* config/mt-hpux: Deleted.

Tue Oct 17 23:02:12 1995  Jeffrey A Law  (law@cygnus.com)

	* Many files: When warning about suppressed tests due to a
	nonexistant test binary, avoid incrementing the warning count.

Tue Oct 10 11:00:41 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (TARGET_FLAGS_TO_PASS):  Remove BISON.

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

	* gdb.base/return.exp:  Change xfail from "sparc-*-solaris2.*" to
	"sparc-*-solaris2*".

Sat Sep 23 01:22:23 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/coremaker.c:  Produce a full core dump for AIX targets.
	Add global and local variables and initialize them.
	* gdb.base/corefile.exp:  Test correct mapping of corefile sections
	by printing variables. Remove rs6000 and powerpc xfails, BFD now
	extracts the file name and terminating signal from the core file.
	* TODO:  Remove note about tests for correct mapping of corefile.
	* gdb.base/ptype.c (main):  Use boolean2 to inhibit AIX 4.1 xlc
	from optimizing it away.
	* gdb.stabs/weird.exp:  Remove rs6000 xfail, xcoffread.c now
	handles common blocks.

Thu Sep 21 01:28:10 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/sh3.s (fmac): Update for new assembler syntax
	* gdb.disasm/sh3.exp (fmac): Corresponding changes.

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

	* Makefile.in (maintainer-clean): New target, synonym for
	realclean.
	* gdb.base/Makefile.in (maintainer-clean): Likewise.
	* gdb.c++/Makefile.in (maintainer-clean): Likewise.
	* gdb.chill/Makefile.in (maintainer-clean): Likewise.
	* gdb.disasm/Makefile.in (maintainer-clean): Likewise.
	* gdb.stabs/Makefile.in (maintainer-clean): Likewise.
	* gdb.threads/Makefile.in (maintainer-clean): Likewise.

Sun Sep 10 13:14:01 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/scope.exp (text_at_main):  Add "hppa*-*-hpux*"
	xfails when not gcc compiled for "print foo::funclocal".
	(test_at_foo):  Add "hppa*-*-hpux*" xfails when not gcc compiled for:
	"print foo::funclocal at foo",
	"print 'scope1.c'::foo::funclocal at foo",
	"print foo::funclocal_bss at foo",
	"print 'scope1.c'::foo::funclocal_bss at foo",
	"print foo::funclocal_ro at foo",
	"print 'scope1.c'::foo::funclocal_ro at foo",
	"print bar::funclocal at foo" and
	"print 'scope1.c'::bar::funclocal at foo".
	(test_at_bar):  Add "hppa*-*-hpux*" xfails when not
	gcc compiled for "print foo::funclocal at bar".
	Expand all messages to ensure that they identify that
	the test is at bar().
	* gdb.base/opaque.exp: Add "hppa*-*-hpux*" xfails when not
	gcc compiled for:
	"ptype on opaque struct pointer (statically)",
	"ptype on opaque struct tagname (statically)",
	"ptype on opaque struct pointer (dynamically) 1",
	"ptype on opaque struct tagname (dynamically) 1",
	"ptype on opaque struct pointer (dynamically) 2" and
	"ptype on opaque struct tagname (dynamically) 2
	* gdb.base/nodebug.exp: Add "hppa*-*-hpux*" xfails when not
	gcc compiled for:
	"p datalocal"
	"whatis datalocal",
	"ptype datalocal",
	"p bsslocal",
	"whatis bsslocal", and
	"ptype bsslocal".
	* gdb.base/langs.exp: Add "hppa*-*-hpux*" xfails for
	"backtrace in langs.exp" and "up to langs0__2do in langs.exp"
	when not gcc compiled.
	* gdb.base/funcargs.exp (float_and_integral_args):  Add
	"hppa*-*-hpux*" xfail for "run to call2a" when not gcc
	compiled.
	(discard_and_shuffle):  Add "hppa*-*-hpux*" xfail for
	"backtrace from call6a" when not gcc compiled.
	(shuffle_round_robin): Add "hppa*-*-hpux*" xfail for
	"backtrace from call7a" when not gcc compiled.
	* gdb.base/callfuncs.exp (do_function_calls):
	Add "hppa*-*-hpux*" xfail when not gcc compiled for
	"p t_char_array_values(char_array_val2,char_array_val1)",
	"p t_char_array_values(char_array_val1,char_array_val2)",
	"p t_char_array_values("carray 1","carray 2")",
	"p t_char_array_values("carray 1",char_array_val2)",
	"p t_char_array_values(char_array_val1,"carray 2")",
	"p sum_args(1,{2})",
	"p sum_args(2,{2,3})",
	"p sum_args(3,{2,3,4})",
	"p sum_args(4,{2,3,4,5})"
	* gdb.base/corefile.exp: Add "hppa*-*-hpux*" xfail for
	"backtrace in corefile.exp" when not gcc compiled.

Sat Sep  9 01:35:39 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/signals.exp:  Rewrite `handle all print' test as
	a procedure. Accept blanks or TABs as whitespace, increase
	timeout and expect input buffer size for the large output
	from the command. Remove "i*86-*-bsdi2.0" xfail.

Sat Sep  2 06:41:26 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/setvar.exp:  Add new testcases for truncation when
	assigning invalid values to bitfields.

Sat Sep  2 00:17:31 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp (do_function_calls):  Remove
	mips-sgi-irix* xfail for
	"call inferior func with struct - returns char *"
	and fix test so that an optional (unsigned char *) cast is
 	accepted in the result.

Fri Sep  1 13:42:01 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/funcargs.exp (float_and_integral_args):  Remove
	sparc-sun-solaris2* xfail for "print f1 after run to call2a".
	* gdb.c++/Makefile.in (SUFFIXES): Add .SUFFIXES and ".cc" suffix.
	* gdb.base/signals.exp: Remove duplicate "handle all print" test
	that accidentally got checked in.

Sun Aug 27 23:35:35 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp (do_function_calls):  Add alpha-dec-osf2*
	clear_xfail for "p t_float_values2(3.14159,float_val2)" for gcc
	compiled test.
	* gdb.base/opaque.exp (setup_xfail_on_opaque_pointer):
	Add mips-sgi-irix5* xfail for not gcc compiled.
	* gdb.base/Makefile.in (nodebug.o):  Also create nodebug.ci.
	* gdb.base/nodebug.exp: Add mips-sgi-irix5 xfail when not gcc compiled for
	"p top", "whatis top", "p middle", and "whatis middle".
	* gdb.base/whatis.exp: Add mips-sgi-irix* xfail for
	"whatis signed char" for not gcc compiled.
	* gdb.base/setvar.exp: Add mips-sgi-irix4* xfail (works on irix5) for
	"set variable signed char=-1 (-1)" and
	"set variable signed char=0xFF (0xFF)" for not gcc compiled.
	* gdb.base/funcargs.exp (float_and_integral_args):
	Add mips-sgi-irix5* xfail for "run to call2a" for not gcc compiled.
	Add mips-sgi-irix* xfail when not gcc compiled for
	"continue to call2b".
	Add mips-sgi-irix4* xfail (works with irix5) when gcc compiled for
	"continue to call2g".
	(discard_and_shuffle): Add mips-sgi-irix5* xfail whn not gcc compiled for
	"backtrace from call6a"
	(shuffle_round_robin): Add mips-sgi-irix* xfail when not gcc compiled for
	"backtrace from call7k".
	Add mips-sgi-irix5* xfail when not gcc compiled for
	"backtrace from call7a".
	(localvars_after_alloca):  Fix gdb_test cmds for
	"print * after runto ...".
	Remove rs6000-*-* xfails for
	"print i after runto localvars_after_alloca" and
	"print l after runto localvars_after_alloca"
	for all compilers.
	* gdb.base/exprs.exp: Add mips-sgi-irix4* xfails (works with irix5),
 	when not compiled with gcc, for:
	"print signed char == (minus)",
	"print signed char != (minus)",
	"print signed char < (minus)",
	"print signed char > (minus)".
	* gdb.base/callfuncs.exp (do_function_calls):
	Add mips-sgi-irix* xfail, when compiled with native compiler, for
	"call inferior func with struct - returns char *".
	* gdb.base/return.exp (return_tests): Change xfail for
	"correct value returned double test" to include Solaris 2.4.
	* gdb.base/funcargs.exp (float_and_integral_args):
	Add sparc-sun-solaris2* xfail for "print f1 after run to call2a".

Sat Aug 26 00:26:11 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/setvar.c, gdb.base/setvar.exp:  Add new tests for
	enumeration bitfields if compiling with GNU C.
	* lib/gdb.exp:  Consume `(y or n) ' in `Reinitialize source path
	to empty' prompt.

Tue Aug 22 00:30:37 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/scope.exp: xfail 'scope0.c'::filelocal_bss before run
	test for PRO targets.

	* gdb.base/funcargs.exp: Avoid ever setting more than 8
	breakpoints in the inferior at any given time by making
	two groups of breakpoints for call2*, call6* and call7*
	tests.

Sun Aug 20 06:58:25 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/funcargs.exp:  Fix typos introduced by Aug 15 change.
	* gdb.base/callfuncs.c (main):  Use struct_val1 to inhibit xlc
	from optimizing it away.
	* gdb.base/callfuncs.exp:  Remove rs6000-*-* xfails for
	"call inferior func with struct".

Wed Aug 16 11:57:15 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in: Only configure gdb.chill for particular targets.

Tue Aug 15 09:42:44 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/Makefile.in:  Add action to .c.o transformation
	rule that generates a .ci file for each .o file and remove
	explicit .c.o rules except for callfuncs.o.
	* gdb.c++/Makefile.in:  Add .cc.o transformation rule that
	generates a .ci file for each .o file and remove explicit
	.cc.o rules.
	(clean): Remove *.tmp *.ci files.
	(EXECUTABLES): Remove templ-info.exp.
	* gdb.base/compiler.c: New file.
	* gdb.c++/compiler.cc: New file
	* gdb.base/scope.exp: Source gdb.base/scope.ci.
	Change rs6000-*-* xfail for
	"print 'scope0.c'::filelocal_ro" and
	"print 'scope1.c'::filelocal" and
	"print 'scope1.c'::filelocal_bss" and
	"print 'scope1.c'::filelocal_ro" and
	"print 'scope1.c'::foo::funclocal" and
	"print 'scope1.c'::foo::funclocal_ro" and
	"print 'scope1.c'::bar::funclocal" and
	"print 'scope0.c'::filelocal_ro" and
	"print 'scope1.c'::filelocal at foo" and
	"print 'scope1.c'::filelocal_bss at foo" and
	"print 'scope1.c'::filelocal_ro at foo" and
	"print 'scope1.c'::foo::funclocal at foo" and
	"print 'scope1.c'::foo::funclocal_bss at foo" and
	"print 'scope1.c'::foo::funclocal_ro at foo" and
	"print 'scope1.c'::bar::funclocal at foo" and
	"print 'scope0.c'::filelocal_ro" and
	"print 'scope1.c'::filelocal" and
	"print 'scope1.c'::filelocal_bss" and
	"print 'scope1.c'::filelocal_ro" and
	"print 'scope1.c'::foo::funclocal" and
	"print 'scope1.c'::foo::funclocal_bss" and
	"print 'scope1.c'::foo::funclocal_ro" and
	"print 'scope1.c'::bar::funclocal" and
	"print 'scope1.c'::bar::funclocal_bss"
	to only be xfail'd when not compiled with gcc.
	Add rs6000-*-* xfail for
	"print 'scope0.c'::filelocal_bss before run"
	when compiled with gcc.
	(test_at_main): Add rs6000-*-* xfail for
	"print filelocal_ro in test_at_main"
	when compiled with gcc.
	* gdb.base/ptype.exp: Source gdb.base/ptype.ci.
 	Add rs6000-*-aix* xfail for
	"whatis unnamed typedef'd enum (compiler bug in IBM's xlc)" and
	"ptype t_char_array",  not compiled with gcc.
	* gdb.base/list.exp (test_list_function):  Add rs6000-*-*
	xfail for "list foo (in include file)" when gcc	compiled.
	* gdb.base/funcargs.exp: Source gdb.base/funcargs.ci
 	(integral_args): Add rs6000-*-* xfail for
	"run to call0a" if not compiled with gcc.
	(unsigned_integral_args): Add rs6000-*-* xfail for
	"run to call1a" if not compiled with gcc.
	(float_and_integral_args):  Add rs6000-*-* xfail for
	"run to call2a" if not compiled with gcc and for
	"continue to call2b" for any compiler.
	Add rs6000-*-* xfail to
	"print f1 after run to call2a" for gcc compiled.
	(discard_and_shuffle): Add rs6000-*-* xfail for
	"run to call6a".
	(shuffle_round_robin): Add rs6000-*-* xfail for
	"backtrace from call7a" if not compiled with gcc.
	Add rs6000-*-* xfail for
	"backtrace from call7b" if compiled with gcc.
	(call_after_alloca): Add rs6000-*-* xfail for
	"print c in call_after_alloca" and
	"print s in call_after_alloca" and
	"backtrace from call_after_alloca_subr"
	if not compiled with gcc.
	(localvars_in_indirect_call): Add rs6000-*-* xfail for
	"print c in localvars_in_indirect_call" and
	"print c in localvars_in_indirect_call" and
	"backtrace in indirectly called function" and
	"stepping into indirectly called function"
	if not compiled with gcc.
	(localvars_after_alloca): Add rs6000-*-* xfail for
	"print c after runto localvars_after_alloca" and
	"print s after runto localvars_after_alloca" and
	"print i after runto localvars_after_alloca" and
	"print l after runto localvars_after_alloca"
	for all compilers.
	* gdb.base/whatis.exp: Source gdb.base/whatis.ci rather
	than whatis-info.exp.
	* gdb.base/opaque.exp: Source gdb.base/opaque0.ci rather
	than opaque-info.exp.
	Setup rs6000-*-* xfail for
	"ptype on opaque struct pointer (statically)" and
	"ptype on opaque struct pointer (dynamically)" when
	not compiled with gcc.
	* gdb.base/callfuncs.exp: Source gdb.base/callfuncs.ci
	rather than callf-info.exp.
	(do_function_calls):  Add clear_xfail for rs6000-*-* for
	"p t_float_values2(3.14159,float_val2)".  Seems to work
	fine there, both with xlc and gcc.  Need to find out what
	it is doing right and fix other platforms.
	* gdb.base/callfuncs.exp: Add rs6000-*-* xfail for
	"call inferior func with struct - returns int",
	"call inferior func with struct - returns long",
	"call inferior func with struct - returns float",
	"call inferior func with struct - returns double",
	"call inferior func with struct - returns char *",
	but only if not gcc compiled (presumes xlc compiled).
	Change rs6000-*-* xfails for
	"call inferior func with struct - returns char" and
	" call inferior func with struct -  returns short" to only
	xfail if not using gcc.
	(clean mostlyclean):  Remove *.ci and *.tmp files.
	* gdb.c++/templates.exp: Source gdb.c++/templates.ci rather
	than templ-info.exp.
	* gdb.base/langs.exp:  Source gdb.base/langs.ci.
	Add rs6000-*-* xfail for "up to foo in langs.exp"
	"up to cppsub_ in langs.exp" and "up to fsub in langs.exp"
 	when not gcc compiled.

Sat Aug 12 15:05:36 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* gdb.base/callfuncs.exp: Add xfails for the powerpc.
	* gdb.base/corefile.exp: Likewise.
	* gdb.base/list.exp: Likewise.
	* gdb.base/scope.exp: Likewise.
	* gdb.base/siganls.exp: Likewise.

	* gdb.base/nodebug.exp: Add xfails for the powerpc.  Handle aix4
	compiler output.
	* gdb.base/whatis.exp: Likewise.

Fri Aug 11 13:36:20 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/sh3.exp (all_fp_misc_tests): No longer expect a
	failure (opcode table has been fixed to match reality).

Mon Aug 14 09:01:59 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp: Add rs6000-*-* xfails for
	"call inferior func with struct - returns char",
	"call inferior func with struct - returns short"

	* gdb.base/scope.exp: Remove rs6000-*-* xfails for
	"print 'scope0.c'::filelocal at main",
	"print 'scope0.c'::filelocal_bss in test_at_main",
	"print 'scope0.c'::filelocal at foo",
	"print 'scope0.c'::filelocal_bss in test_at_foo",
	"print 'scope0.c'::filelocal at bar",
	"print 'scope0.c'::filelocal_bss in test_at_bar"

	* gdb.base/list.exp: Remove rs6000-*-* xfail for "list function
	in source file 1".  This bug seems to have been fixed with both
	gcc and native cc (was native assembler bug?).

Wed Aug  9 08:04:12 1995  Fred Fish  (fnf@cygnus.com)

	* gdb.base/a1-selftest.exp: Change "i*86-*-sysv4" xfail for
	"backtrace through signal handler" to "i*86-*-sysv4*".
	* gdb.base/signals.exp: Add xfail for "'next' behaved as
	continue" case.  Add "known SVR4 bug" to fail message.
	Add "i*86-*-bsdi2.0" xfail for "handle all print".
	Add "i*86-*-bsdi2.0" xfail for "backtrace in signals_tests_1".
	* gdb.base/ptype.exp: Add "i*86-*-sysv4*" xfail for
	"whatis unnamed typedef'd enum..." and "ptype t_char_array".
	* gdb.base/langs.exp: Add "i*86-*-sysv4*" xfail for
	"up to foo in langs.exp", "show language at foo in
	langs.exp", "up to cppsub_ in langs.exp", "show
	language at cppsub_ in langs.exp", "up to fsub in
	langs.exp", and "show language at fsub in langs.exp".
	* gdb.base/corefile.exp: Add "i*86-*-sysv4*" to xfail for
	"bactrace in corefile.exp".
	* gdb.base/callfuncs.exp: Change xfail to "i*86-*-*" for
	"call inferior function with struct - returns float" and
	"call inferior function with struct - returns double".

Mon Aug  7 02:43:28 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/sh3.s: Source for sh3 disassembler tests.
	* gdb.disasm/sh3.exp: Run the sh3 disassembler tests.
	* gdb.disasm/configure.in (sh-*-*): Use sh3.mt makefile fragment.
	* gdb.disasm/sh3.mt: Makefile fragment for sh3 ests.

Mon Aug  7 08:09:37 1995  Fred Fish  <fnf@cygnus.com>

	* Makefile.in (CHILL_FOR_TARGET): Use previously defined
	(or overriden) "CHILL" macro rather then bare "gcc".
	Also look for ../../gcc/xgcc since that is what we will
	actually need, not "Makefile".  Remove following assignment
	of CHILL to CHILL_FOR_TARGET because that results in
	recursive definition.

Sun Aug  6 16:52:29 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/corefile.exp:  Change xfail for backtrace in
	corefile.exp from linuxaout to all linux.
	* gdb.base/sigall.exp (test_one_sig):  Specifically deal with
	cases where we miss the breakpoint at the signal handler
	for some reason.  Setup xfail for linuxoldld/linuxaout and
	getting SIGIO.  Setup xfail for linuxoldld/linuxaout for
	hitting SIGURG breakpoint.
	* gdb.base/signals.exp:  Setup xfail for "next" acting like
	continue to add linuxoldld.  Setup xfail for all linux for
	"next to handler in signals_tests_1", "backtrace in
	signals_tests_1", "continue to func1", "pass SIGUSR1",
	and continue to handler".

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

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

Sun Jul 30 17:50:35 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/a2-run.exp: Change messages to be more explicit about
	the status of args, and quote binfile in results.

Sun Jul 30 10:24:20 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/callfuncs.exp: Add tests for passing structs to
	inferior functions and return various types.
	* gdb.base/callfuncs.c: Add functions to receive a struct
	and return a member of the struct, in various types.

Sat Jul 29 14:22:33 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/Makefile.in (clean):  Remove callf-info.exp.

Fri Jul 28 13:36:11 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* config/vxworks29k.exp: New file, sources vxworks.exp.

Fri Jul 28 00:28:36 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config/gdbremote.exp: New file.  Testing framework using
	gdbserver.

Thu Jul 27 12:17:14 1995  Fred Fish  (fnf@cygnus.com)

	* gdb.base/interrupt.exp: Setup "i*86-*-linux" xfail for
	"call function when asleep" and "send end of file".
	* gdb.base/corefile.exp: Add "i*86-*-linuxaout" to xfail list
	for "backtrace in corefile.exp".
	* gdb.base/a1-selftest.exp: Add "i*86-*-linux*" to xfail list
	for "backtrace through signal handler".
	* gdb.base/corefile.exp: Make sure we actually generate a core file
	before trying the core tests.  Some systems allow the user to suppress
	generation of core files and default to that (linux for example).
	* gdb.base/signals.exp: Change xfail for "next" acting like "continue"
	from "i*86-*-linux" to "i*86-*-linuxaout".  Works with ELF beta.

Tue Jul 25 17:30:10 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* gdb.threads: New directory with some crude multi-threaded
	gdb tests (step.exp and step2.exp).
	* config/mt-lynx (STEP_EXECUTABLE): Define.
	(THREADFLAGS): Define.

Tue Jul 25 01:03:52 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/sigall.exp: Avoid losing in SIGPRIO test on lynx.

	* gdb.base/signals.exp: Disable whole file for lynx until
	further notice.

	* gdb.base/signals.exp: xfail test where "next" acts like
	"continue" for lynx.

	* gdb.base/interrupt.exp: xfail test for calling function while
	inferior is asleep for lynx.

	* gdb.base/watchpoint.exp: Handle more cases of gdb echoing more
	than one cr-lf	after each command.

Sun Jul 23 23:33:18 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* configure.in:  Reinstate setting of stabsdirs variable, fix
	typo in setting up configdirs for native builds.

	* gdb.base/return.exp:  Fix typo in return double test.
	* gdb.base/return.c (tmp2, tmp3):  Made global to inhibit the
	compiler from optimizing them away.

Fri Jul 21 11:39:34 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/gdbvars.exp: Expect zero or more additional cr-lf
	sequences to be echo'd by gdb when using gdb_test.
	* gdb.chill/chexp.exp: Likewise.
	* gdb.fortran/exprs.exp: Likewise

Thu Jul 20 13:28:36 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* gdb.base/a1-selftest.exp: Reset the timeout value to 30 seconds
	after the inferior gdb has started.

	* gdb.base/a2-run.exp: Handle gdb echoing more than one cr-lf
	after each command.
	* gdb.base/funcargs.exp: Likewise.
	* gdb.base/gdbvars.exp: Likewise.
	* gdb.base/interrupt.exp: Likewise.
	* gdb.base/list.exp: Likewise.
	* gdb.base/watchpoint.exp: Likewise.
	* gdb.c++/demangle.exp: Likewise.
	* gdb.c++/inherit.exp: Likewise.
	* gdb.chill/chexp.exp: Likewise.
	* gdb.fortran/exprs.exp: Likewise.

	* gdb.base/watchpoint.exp: Disable watchpoint triggered in syscall
	test if we can't handle IO to/from the inferior.

	* gdb.c++/misc.exp: Always check for a program already being
	started after sending a "run" command to gdb.

	* gdb.base/twice.exp: Start with a fresh gdb.

	* gdb.chill/chexp.exp: Remove skip_chill_tests check; these tests
	only depend on gdb's expression code, not the chill runtime.

	* gdb.base/return.c: Put return values into variables so we
	can have gdb print them rather than depending on the program
	to print them.
	* gdb.base/return.exp: Corresponding changes.

	* lib/gdb.exp: Provide default value for noinferiorio.
	* gdb.base/interrupt.exp: Skip tests if we can't handle IO to/from
	the inferior.

	* gdb.base/break.exp: Always check for a program already being
	started after sending a "run" command to gdb.
	(text_next_with_recursion): Don't check the output from the
	program's printf statement.  Instead just make sure the program
	exited.

	* gdb.base/commands.exp: Protect tests which need arguments with
	$noargs conditionals.

Wed Jul 19 22:42:43 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/printcmds.exp:  Adjust expect patterns for addresses
	of structure member arrays to match gdb/valops.c:value_addr change.

Mon Jul 17 10:12:27 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/a1-selftest.exp: Fix unmatched quotes in many timeout
	cases.

Wed Jul 12 10:20:08 1995  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Remove gdb.chill from default list
	of subdirs and then add it back in only if doing a native build.
	The current chill compiler does not yet work in any cross build.
	* Revert all signal changes from Jul 6.
	* gdb.base/{sigall.c signals.c}:  Define away signal() and alarm()
	for sh-hms targets, allowing these tests to link, with no other
	changes.  Testing is suppressed by setting "nosignals" in site.exp.

Thu Jul  6 20:58:30 1995  Fred Fish  (fnf@cygnus.com)

	* configure.in (signaldirs): Define and add to configdirs for all
	targets except some specific ones that are known to not support signals.
	Also clean up formatting.
	* gdb.base/Makefile.in (EXECUTABLES):  Remove sigall and signals.
	(signals, sigall):  Remove rules to build.
	* gdb.base/{sigall.c, sigall.exp, signals.c, signals.exp}:
	Moved to new gdb.signals directory.
	* gdb.signals: New test directory.
	* gdb.signals/{Makefile.in, configure.in, sigall.c, sigall.exp,
	signals.c signals.exp}:  New or moved files.

Sun Jun 25 12:55:18 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/interrupt.exp: Don't choke if $nointerrupts doesn't exist.

Wed Jun 21 16:35:55 1995  Fred Fish  <fnf@cygnus.com>

	* gdb.base/return.exp:  Xfail `return double' test failure
	on at least Solaris 2.3 and handle future/past versions on
	a case by case basis as appropriate.  Also update message
	to include i*86 failures.

Wed May 24 07:10:10 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in: Change variable CFLAGS to TESTSUITE_CFLAGS.

	* lib/gdb.exp: Fix comment which erroneously identified
	gdb_file_cmd as gdb_load (the 19 May change was in fact to
	gdb_file_cmd not gdb_load).
	* config/unix-gdb.exp (gdb_load): Add "upvar timeout timeout".

	* gdb.base/setvar.exp: Make test names consistent between pass and
	fail cases.  Use gdb_test more.

Fri May 19 07:22:58 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp (gdb_load): Add "upvar timeout timeout".

Mon May 15 23:50:51 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/help.exp:  Fix expected help string for `show commands'.

Thu May 11 07:55:11 1995  Jim Kingdon  <kingdon@deneb.cygnus.com>

	* gdb.stabs/xcoff.sed: Change N_LSYM to C_DECL not C_LSYM.

	* gdb.stabs/weird.exp: Remove xfail for xcoff bitching about lack
	of a text section.

Thu May 11 15:02:24 1995  Stu Grossman  (grossman@andros.cygnus.com)

	* config/monitor.exp (gdb_target_monitor):  Fix loop interator so
	that loop eventually terminates.  Fix Connection refused logic so
	that testsuite will expire nicely.

Wed May 10 17:57:35 1995  Stu Grossman  (grossman@andros.cygnus.com)

	* config/cpu32bug.exp, config/est.exp, config/hppro.exp,
	config/rom68k.exp:  New tcl glue for the appropriate monitors.
	These all just end up calling monitor.exp.
	* config/monitor.exp (gdb_target_monitor):  Handle `Connection
	refused' by retrying.  Cleanup some timeout issues.
	* (gdb_load):  Reduce timeout.  Cleanup some timeout issues.
	* lib/gdb.exp (gdb_test gdb_test_exact):  Upvar timeout so that
	callers don't have to set/restore global timeout variable.

	* The following set of changes centralizes management of the global
	timeout	variable.  This way, it can be set in one target dependent
	place instead of dozens of places scattered throughout the test suite.
	If you need to lengthen a timeout, then you should either set timeout
	in one of the config/{target}.exp files, or multiply it by a factor.
	Setting it to an absolute value is always going to lose for some
	targets.
	* gdb.base/a1-selftest.exp (test_with_self):  Only use local timeout.
	* gdb.base/callfuncs.exp (do_function_calls):  Don't set timeout.
	* gdb.base/funcargs.exp:  Don't set timeout.
	* gdb.base/list.exp (test_forward_search):  Only use local timeout.
	* gdb.base/printcmds.exp (test_print_string_constants
	test_print_array_constants):  Don't set timeout.
	* gdb.base/ptype.exp:  Don't set timeout.
	* gdb.base/recurse.exp:  Don't set timeout.
	* gdb.base/return.exp:  Don't set timeout.
	* gdb.base/watchpoint.exp:  Don't set timeout.
	* gdb.c++/classes.exp (do_tests):  Don't set timeout.
	* gdb.c++/virtfunc.exp (test_virtual_calls):  Don't set timeout.

Wed May 10 16:03:23 1995  Torbjorn Granlund  <tege@adder.cygnus.com>

	* Makefile.in: Make clean targets work also when SUBDIRS is empty.

Mon May  1 07:32:48 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp: Disable chill tests for irix5.

Wed Apr 26 07:36:03 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/scope.exp: Make test names unique.  Use gdb_test.  Make
	each test pass or fail.

Sun Apr 23 21:32:32 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/opaque.exp: Remove xfails for aix; print a warning if
	xlc not gcc.

Fri Apr 21 15:44:02 1995  Stu Grossman  (grossman@rtl.cygnus.com)

	* cpu32bug.exp est.exp rom68k.exp:  Delete.  Unify into monitor.exp.

Wed Apr 19 17:41:21 1995  Stu Grossman  (grossman@cygnus.com)

	* config/est.exp:  Fix copyright and comments.  Remove dead code.
	Use targetname, serialport and baud variables instead of fixed
	constants.
	* config/rom68k.exp:  Fix copyright and comments.  Remove dead code.
	* config/cpu32bug.exp:  New file to support cpu32bug monitors.

Wed Apr 19 13:47:16 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/watchpoint.exp: Don't run
	test_watchpoint_triggered_in_syscall for sunos.

Mon Apr 17 12:48:52 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/{break.c,run.c}: Don't include vxWorks.h or stdioLib.h;
	they don't seem to exist.  Do include stdio.h.

Fri Apr 14 09:40:22 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/a1-selftest.exp: Add alpha xfail.

Mon Apr 10 13:07:50 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/watchpoint.c (main): Prompt before calling read().
	* gdb.base/watchpoint.exp (test_watchpoint_triggered_in_syscall):
	Revise accordingly.  Remove cruft about sending "123" several
	times, until it gets noticed.  Clean up the "print buf[0]" stuff
	so that it passes or fails, and waits for prompts in the usual way.

Sun Apr  9 09:02:36 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/recurse.exp: Fix comment.

	* TODO: Remove item about printing variables in nodebug.exp.  Add
	item about enabling tests which are only run on some targets.

	* gdb.base/watchpoint.exp: Various cleanups (make each test pass or
	fail, make test names unique, use new gdb_test convention
	regarding pattern, use gdb_test more, etc.).

	* gdb.base/bitfields.exp: Various cleanups (make each test pass or
	fail, make test names unique, etc.).

Sat Apr  8 02:47:45 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/nodebug.c:  Change return type of top and middle to
	short.
	* gdb.base/nodebug.exp:  Remove xfails for ecoff systems, they
	are fixed by the recent mdebugread.c changes. Allow `short ()'
	as type for top and middle.

Thu Apr  6 08:54:18 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/break.exp: Remove commented out if $usestubs {}.  As
	nearly as I can tell, the whole thing was an accident in Stu's
	change of 24 Mar 1995 (logged in ../ChangeLog), in which he meant
	to replace a send/expect pair with gdb_test, but ended up only
	adding the gdb_test.  My change of 24 Mar 1995 and Kung's change
	of 30 Mar 1995 took care of it, but left this vestigial comment
	which I am now nuking.

Mon Apr  3 09:00:27 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/break.exp: Look for different line number for
	breakpoint at main depending on usestubs.

Sun Apr  2 08:15:45 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/list.exp:  Adjust some alternate expect patterns to
	match recent list0.c change. Add alternate expect pattern for
	output from `list default lines around main' for optimizing
	compilers.

Sat Apr  1 07:23:22 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp: If nosignals is not set, set it to 0.

Fri Mar 31 16:13:48 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* config/slite-gdb.exp: Responds to load symbol table prompt.
	* gdb.base/break.exp: Adjust line number, fix rerun.
	* gdb.base/langs0.c: Add #ifdef usestubs.

Thu Mar 30 15:36:55 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* gdb.base/list.exp: Adjust line contents after adding new lines in
	list0.c. Also fix a syntax error.

	* lib/gdb.exp (gdb_run_cmd): Special handling for targets use stubs.
	* gdb.base/break.exp: ditto.
	* gdb.base/list.exp: ditto.
	* gdb.base/bitfields.c: Add #ifdef usestubs in main().
	* gdb.base/run.c: ditto.
	* gdb.base/list0.c: ditto.
	* gdb.base/funcargs.c: ditto.

Wed Mar 29 17:09:29 1995  Stu Grossman  (grossman@cygnus.com)

	* testsuite/config/rom68k.exp (gdb_target_rom68k):  Use
	$targetname, $serialport and $baud instead of hardwired variables.
	* testsuite/gdb.base/{sigall.exp signals.exp}:  Skip these if the
	target doesn't support signals.

Wed Mar 29 12:29:34 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* lib/gdb.exp (runto_main): Fix regular expression bug, add return 1.

Tue Mar 28 08:46:45 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/recurse.exp: Make test names unique.  Change \\(+ to \\(.
	Don't rely on the value of an auto variable before it has been
	initialized.  Use gdb_test more.

Mon Mar 27 08:00:34 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp (default_gdb_version): A version number must start
	with a digit, but other than that contains all characters up to
	the first whitespace character.

Sun Mar 26 13:19:32 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/commands.exp (breakpoint_command_test): New tests.

Sat Mar 25 15:38:06 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.c++/*.exp: Warn if executable does not exist.  The original
	reason for skipping the warning was that configure.in sometimes
	intentionally skipped building the executables but the tcl code
	had no way of knowing.  That (a) was always bogus with respect to
	error handling, (b) is no longer true (right now there is no way
	to skip C++ tests).

	* gdb.c++/demangle.exp: Remove unused binfile and srcfile variables.

Sat Mar 25 01:16:10 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/list.exp:  Add expect patterns for output from
	SunPRO compiled executables.
	* gdb.base/whatis.exp:  Allow leading `signed' for all v_signed_*
	types.

Fri Mar 24 06:11:05 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/break.exp (test_next_with_recursion): Accept any line
	number (we are already testing that the correct source line text
	gets printed).

	* gdb.base/break.exp: Make one test if $usestubs.  I'm not sure
	that is what is intended, but something needed to be done to get
	sunos4 native working again.

	* gdb.c++/misc.cc (main): Fix typo (#iffef -> #ifdef).

	* gdb.base/a1-selftest.exp (test_with_self): Remove comment which
	apparently went with a (very) old xfail.

Fri Mar 24 13:41:09 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* gdb.base/callfuncs.exp: call runto_main instead of runto main.
	runto_main is a proc in gdb.exp that will do 'step' for target use
	stubs.
	* gdb.base/exprs.exp: ditto.
	* gdb.base/interrupt.exp: ditto.
	* gdb.base/opaque.exp: ditto.
	* gdb.base/printcmds.exp: ditto.
	* gdb.base/ptype.exp: ditto.
	* gdb.base/scope.exp: ditto.
	* gdb.base/setvar.exp: ditto.
	* gdb.base/signals.exp: ditto.
	* gdb.base/twice.exp: ditto.
	* gdb.c++/classes.exp: ditto.
	* gdb.c++/inherit.exp: ditto.
	* gdb.c++/templates.exp: ditto.
	* gdb.base/break.exp: no run and hit main for stubs. Change line
	numbers for breakpoints and info breakpoint.
	* gdb.base/break.c: Add #ifdef usestubs for set_debug_traps() and
	breakpoint().
	* gdb.base/callfuncs.c: ditto.
	* gdb.base/exprs: ditto.
	* gdb.base/interrupt.c: ditto.
	* gdb.base/opaque0.c: ditto.
	* gdb.base/printcmds.c: ditto.
	* gdb.base/ptype.c: ditto.
	* gdb.base/scope0.c: ditto.
	* gdb.base/setvar.c: ditto.
	* gdb.base/signals.c: ditto.
	* gdb.base/twice.c: ditto.
	* gdb.c++/misc.cc: ditto.
	* gdb.c++/templates.cc: ditto.

Fri Mar 24 06:11:05 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config/vx-gdb.exp, lib/gdb.exp: Regexp cleanups (\[(\] -> \\(, etc.).

	* gdb.base/a1-selftest.exp: Don't check for # followed by a digit
	somewhere between `read' and `main.c'.  I'm pretty sure the
	pattern ".*#\[0-9\].*" was slowing down pattern matching a lot,
	and it isn't particularly useful.

	* gdb.base/scope.exp: Make test names unique.  \[(\] -> \\(.

Thu Mar 23 14:58:35 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/commands.exp (infrun_breakpoint_command_test): New test.

Wed Mar 22 18:36:05 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* config/mt-slite: add LIBS and -nostdlib.
	* config/slite-gdb.exp: add this new file to support sparclite target.

Tue Mar 21 21:41:04 1995  Doug Evans  <dje@canuck.cygnus.com>

	* config/vx-gdb.exp (gdb_load): Update test of vxworks_ld return code.

	* gdb.base/a2-run.exp: Change argument to istarget from
	"*-*-vxworks" to "*-*-vxworks*".
	* gdb.base/{break.exp,default.exp,scope.exp}: Likewise.

Tue Mar 21 17:08:47 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* lib/gdb.exp: add proc runto_main, for targets that use stubs, this
	will not runto main but do a 'step' to step out of breakpoint().
	* config/mt-slite: add -Dusestubs.

Tue Mar 21 12:14:12 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/printcmds.exp (test_artificial_arrays): Send ^V@
	instead of just @.

	* gdb.base/signals.exp: Add test for "handle all print".
	* TODO: Remove "handle all print".  Also remove item about
	checking copyright date (I don't like the idea of a spurious FAIL
	based on when we run the tests).

	* gdb.base/recurse.exp: Enable test for SunOS4.  xfail one test
	for SunOS4 (reason for failure not investigated).  Remove
	redundant test for $binfile.

	* gdb.base/nodebug.c (array_index): Call malloc.

	* gdb.base/{corefile.exp,default.exp}: Make names of "up" tests unique.

Mon Mar 20 10:08:17 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/recurse.exp: Update gdb_test invocation to use new
	conventions and slightly simplify the matching regexp.

Fri Mar 17 05:43:28 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/break.exp: Update gdb_test invocation to use new
	convention.

	* lib/gdb.exp: If noargs is not set, set it to 0.

	* gdb.base/nodebug.exp: Comment out redundant test.  Make name of
	tests unique.

	* lib/gdb.exp: Skip CHILL for AIX and Solaris.

Thu Mar 16 16:27:07 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/nodebug.exp: It is OK if GDB thinks top and middle have
	one argument of type "<non-float parameter>".

Wed Mar 15 15:54:56 1995  Stu Grossman  (grossman@cygnus.com)

	* config/rom68k.exp:  New file to support Motorola IDP board.
	* gdb.base/a2-run.exp:  Skip this file if noargs is set.
	* gdb.base/break.c:  Change things around so that this program
	doesn't depend upon args.  This is necessary to make remote
	targets work (in general, they can't take args).
	* gdb.base/break.exp:  Don't try to send args to program.  Don't
	expect output.  Also, replace lots of code with gdb_test.

Wed Mar 15 04:11:14 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/printcmds.exp (test_character_literals_accepted): Test
	printing of '\'' (which is what the comment says we are testing,
	even though we were not), not '''.
	(test_integer_literals_rejected): Test that printing ''' is an error.

	* gdb.fortran/exprs.exp, gdb.fortran/types.exp,
	gdb.chill/chexp.exp, gdb.base/printcmds.exp,
	gdb.c++/cplusfuncs.exp, gdb.chill/callch.exp, gdb.chill/misc.exp,
	gdb.chill/pr-6292.exp, gdb.chill/string.exp, gdb.chill/tuples.exp:
	Use gdb_test not test_print_accept.
	* lib/gdb.exp: Remove test_print_accept.

	* gdb.base/signals.exp (signal_tests_1): Make pass message
	consistent with fail message.

	* gdb.base/whatis.exp: Remove xfails for printing char vs.
	unsigned char; the bug (PR 1821) is fixed.

	* gdb.base/scope.exp: Remove xfails for PRs 1843 and 1868.

	* gdb.base/scope.exp (test_at_localscopes): Call pass for
	successful tests--makes xfailing them work right.

Tue Mar 14 07:39:19 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp (gdb_test): Between $pattern and $prompt, expect
	only \r\n, not .*.  The test can pass .* as the last thing in
	$pattern if that is what it wants.  In addition to providing this
	flexibility, this change should speed up pattern matching in cases
	where the pattern already ended with .* (there were a number of
	them).  This change also helps catch bad patterns--in the old
	scheme the typo "char \*" instead of "char \\*" would pass.  Now
	it is caught.
	* Many .exp files: Update callers.

	* gdb.base/funcargs.exp: Replace \[(\]+ with \\(.  The latter is
	clearer and does not spuriously match multiple ('s.  Likewise for
	) and *.

	* gdb.base/nodebug.exp: Test ability to call a function and pass
	it a string (even with no debugging info).

	* gdb.base/printcmds.exp (test_integer_literals_rejected): Change
	"p '\'", which is the same as "p ''" once tcl gets done with
	quoting, to "p '\\'", which I suspect is what is intended (one
	backslash gets sent to GDB).

	* gdb.base/printcmds.exp (test_artificial_arrays): New tests.

Fri Mar 10 13:31:46 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/a1-selftest.exp: Remove xfail for solaris.  The bug (PR
	1817) was fixed literally years ago.

Fri Mar 10 02:49:40 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/funcargs.exp (call_after_alloca):  Remove `next'
	test, it causes stepping out of call_after_alloca_subr with
	optimizing compilers.
	(localvars_in_indirect_call):  Consume GDB prompt if `finish'
	fails.

	* gdb.c++/templates.exp:  Source templ-info.exp only if
	the templates executable exists.

	* gdb.c++/misc.cc (class Contains_static_instance,
	class Contains_nested_static_instance),
	gdb.c++/classes.exp (test_static_members):  Test printing of
	a class that contains a static instance of the class.

Thu Mar  9 11:43:55 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/langs2.c (cppsub_): Don't prototype.
	* gdb.base/langs2.cxx (cppsub_): Fix prototype (cosmetic value
	only, I believe).

Wed Mar  8 10:29:33 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp (skip_chill_tests): New procedure.

	* gdb.base/signals.exp (signal_tests_1): xfail for irix.

Mon Mar  6 10:44:06 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.exp: Delete redundant ".*" at the beginning of
	each expect pattern.  Cuts runtime from 12 to about 4 seconds.

Thu Mar  2 05:31:34 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/langs.exp: Don't insist that foo__Fi be demangled.

	* gdb.disasm/hppa.exp (all_fpu_comparison_tests): Only
	disassemble 8, not 16, instructions for part 4.

	* config/vx-gdb.exp (gdb_start): Use \030, not \CX.  tcl doesn't
	support the latter anymore.

	* gdb.base/Makefile.in: Try compiling callfuncs.c, if that fails try
	-DNO_PROTOTYPES.
	* gdb.base/callfuncs.c: Control use of prototypes based on
	NO_PROTOTYPES, not __STDC__.
	* gdb.base/callfuncs.exp (do_function_calls): xfail one of the
	t_float_values2 tests if prototypes in use.

	* gdb.base/callfuncs.c (t_float_values, t_float_values2,
	t_double_values):  When checking differences against DELTA, check
	that difference is within the range (-DELTA,DELTA), not just
	(-infinity,DELTA).

Tue Feb 28 16:28:54 1995  Kung Hsu  <kung@mexican.cygnus.com>

	* config/mips-gdb.exp (gdb_load): In every test case, we need to do
	'file' command firts, then 'target', then 'load', this is due to gdb
	target set up.
	* config/mips-gdb.exp: Fix a couple regular exp bugs.

Thu Feb 23 17:44:55 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.s (fmemLRbug_tests): Add tests for the indexing
	FP load/store variants.
	* gdb.disasm/hppa.exp (fmemLRbug_tests): Test new variants.

Wed Feb 22 18:29:08 1995  Jim Kingdon  <kingdon@rtl.cygnus.com>

	* gdb.base/term.exp: Do not give a warning if not native, it is
	not an abnormal condition.

Tue Feb 21 13:08:47 1995  Jim Kingdon  <kingdon@cygnus.com>

	* gdb.base/ptype.exp: Accept char[0] as well as char[] for "ptype
	t_char_array".

Sun Feb 19 13:10:06 1995  Jim Kingdon  <kingdon@rtl.cygnus.com>

	* lib/gdb.exp (default_gdb_version): Pass GDBFLAGS to gdb when we
	are getting the version number.

	* gdb.base/{a1-selftest.exp,corefile.exp}: Do not give a warning
	if not native, it is not an abnormal condition.

Thu Feb 16 15:56:56 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp: Just use "file exists", rather than undocumented
	dejagnu procedure "findfile".

Thu Feb 16 10:30:24 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/mt-vxworks (CFLAGS): Set to -g -Dvxworks.
	  (LDFLAGS): Set to -Xlinker -Ur.

	* Makefile.in, gdb.{base,c++,chill}/Makefile.in (GDB, GDBFLAGS):
	  Removed, these values are set by lib/gdb.exp.

	* lib/gdb.exp: If GDBFLAGS is unset, set it to -nx.

Wed Feb 15 14:23:28 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* config/vx-gdb.exp (spawn_vxgdb): Use default_gdb_start instead
	  of replicating gdb startup code.

	* config/mt-vxworks (LDFLAGS): Set to -r.
	  (CFLAGS_FOR_TARGET): Removed.

	* config/vx-gdb.exp: always set prompt; gdb.exp sets it to
	  (gdb) and gdb for vxworks uses (vxgdb).

	* Makefile.in, gdb.{base,c++,chill}/Makefile.in (GDB): If a gdb
	  executable is not in the tree and host != target, use sed and
	  program_transform_name to determine the gdb name used by the
	  target.

	* configure.in, gdb.{base,c++,chill}/configure.in: changed so
	  *-*-vxworks* matches vxworks and *-*-netware* matches NetWare.

Sun Feb 12 08:11:58 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/{callfuncs.exp,callfuncs.c}: Add tests for passing
	floats, chars, and shorts where there are ANSI-style function
	definitions.

	* gdb.base/langs.exp, gdb.base/langs*: New test.
	* gdb.base/Makefile.in: Build it.
	* TODO: Remove item about checking that C names don't get C++
	demangling applied; this test tests it.

Thu Feb  9 12:43:56 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/weird.exp: Remove "Haven't examined" comment which
	went with the const70 xfail.  The xfail went away a year ago.

	* gdb.base/signals.exp: Rename a bunch of tests to give unique names.

	* gdb.base/corefile.exp: Give backtrace test unique name.  xfail
	for hp300.

	* gdb.base/interrupt.exp: Also xfail hpux (for hp300).

	* gdb.base/a1-selftest.exp: Don't run on hp300.

Sat Feb  4 15:04:32 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (site.exp): Set host_alias and target_alias as well
	as host_triplet and target_triplet.

Wed Feb  1 08:03:48 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/a1-selftest.exp: Invoke stty before starting inferior.

	* gdb.base/nodebug.exp: Add xfails for ultrix and irix5 (same
	places as other ecoff systems).

	* gdb.base/a1-selftest.exp (test_with_self): Don't invoke stty on
	ultrix.

Mon Jan 30 11:44:52 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/nodebug.c (inner): Use variables so AIX linker doesn't
	remove them.
	* gdb.base/nodebug.exp: Accept "function" in addition to "text
	variable and "variable" in addition to "data variable".
	* gdb.base/nodebug.exp: xfail datalocal and bsslocal tests for AIX.

	* gdb.base/list.exp (test_forward_search): Set listsize to 4 not
	2.
	* gdb.base/list1.c (long_line): Add additional statement at start
	of function.
	* gdb.base/list.exp (test_forward_search): Update line number to
	reflect new statement.

Sun Jan 29 13:34:25 1995  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/signals.exp:  Reinitialize searched source directories
	after gdb_start call.

Sat Jan 28 01:34:44 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/Makefile.in (clean): Delete "errs" file.
	* gdb.stabs/Makefile.in: Likewise.

	* gdb.disasm/hppa.exp (all_fpu_comparison_tests): Revert last
	change.  Instead split the tests into smaller pieces.
	* gdb.disasm/hppa.s: Corresponding changes.

Fri Jan 27 09:24:51 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/a1-selftest.exp (test_with_self), gdb.base/interrupt.exp:
	Quote ^C when passing it to stty.  For some shells ^ is a pipe.

	* gdb.base/funcargs.exp: Modify many tests so that every test
	either passes or fails.  Make some test names unique.

Thu Jan 26 19:20:34 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/a1-selftest.exp (test_with_self), gdb.base/interrupt.exp:
	Call stty to set interrupt character.

	* gdb.disasm/hppa.mt (hppa), gdb.stabs/hppa.mt (weird.o): Check
	for HP assembler versus GNU assembler based on actual behavior of
	$(CC), rather than assuming that $(AS) is always the GNU assembler.

	* TODO: Suggest a few more stepping tests.

Wed Jan 25 14:52:41 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/default.exp: xfail no-stack backtraces for h8300,
	restart GDB for h8300 after a continue.
	(return): Add pattern to match a29k-udi behavior.
	* gdb.base/nodebug.exp: Remove obsolete comment.
	* gdb.base/regs.exp: New file, testing of register displays.
	* gdb.base/return.exp: Fix typo in reference to $objdir.
	* gdb.base/whatis.exp: Always start with a fresh GDB.

Wed Jan 25 11:12:07 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.disasm/hppa.exp (all_fpu_comparison_tests): Set timeout
	higher, these tests generate a lot of output.

Tue Jan 24 07:58:44 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp (gdb_test): Remove catch from around the send.  The
	code following the catch silently ignored some errors; without the
	catch they should be thrown like any other tcl error.  Also, the
	catch used "" instead of {} which meant all the callers who wanted
	to include one of the characters "[]$ had to quote it an extra time.
	* gdb.base/{callfuncs.exp,commands.exp,gdbvars.exp,printcmds.exp,
	ptype.exp,signals.exp,watchpoint.exp}, gdb.c++/{cplusfuncs.exp,
	demangle.exp}, gdb.chill/chexp.exp, gdb.fortran/exprs.exp:
	Remove extra quoting.

Mon Jan 23 21:57:54 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/commands.exp: Make test names unique; every test either
	passes or fails.  Update some comments.

	* gdb.disasm/hppa.exp (do_system_control_tests): Update.

Sat Jan 21 15:34:52 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	The following fixes a FAIL caused by the fact that the alpha stabs
	configuration didn't use the ".if alpha" code in weird.def.
	* gdb.stabs/weird.def (v_comb): Use type attribute to specify 32
	bit pointer, so the 32 bit version works even on the alpha.
	* gdb.stabs/{alpha.mt,ecoff.mt,aout.sed,hppa.sed,xcoff.sed,weird.def}:
	Remove the stuff which allowed us to have separate versions for
	alpha and everything else.

	* gdb.c++/cplusfuncs.exp (test_lookup_operator_functions): Fix
	regexp which "info func operator\[\](" is supposed to match.  Fix
	string to send to GDB.  Note that GDB still doesn't work right.  Add a
	new test for "info func .perator\[\](" which GDB does handle correctly.

	* gdb.base/nodebug.exp: xfail most of the new tests for ecoff systems.

Fri Jan 20 12:14:23 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.c++/classes.exp, gdb.c++/cplusfuncs.exp,
	gdb.c++/inherit.exp, gdb.c++/templates.exp, gdb.c++/virtfunc.exp,
	gdb.fortran/exprs.exp, gdb.fortran/types.exp, gdb.chill/chexp.exp,
	gdb.base/printcmds.exp: Remove passcount, failcount, etc., stuff;
	it makes the tests harder to understand and confuses test-o-matic.
	The preferred style is that each test provides a PASS or a FAIL,
	and has a unique message (e.g. "continue #54" not just "continue")
	which is the same for the pass and the fail.
	* gdb.fortran/exprs.exp, gdb.fortran/types.exp,
	gdb.chill/chexp.exp: Move test_print_accept and test_print_reject
	to lib/gdb.exp.
	* gdb.base/printcmds.exp: Use test_print_accept.  Remove
	prt_accept which was basically the same thing.  Likewise for
	test_print_reject and prt_reject.
	* lib/gdb.exp (test_print_reject): Add some more error message
	patterns to match from the former printcmds.exp (prt_reject).
	* gdb.c++/classes.exp, gdb.base/scope.exp: Remove spurious xfails.
	One defect of the passcount stuff is that some of it failed to
	report XPASS where appropriate.
	* gdb.c++/cplusfuncs.exp (print_addr_of): No longer accept extra
	stuff before and after arg in expected pattern.
	(test_paddr_operator_functions): Re-do test without print_addr_of;
	this is the only test which seems to want extra stuff there.

Tue Jan 17 10:47:53 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/nodebug.exp: Update new tests to reflect improved
	wording of gdb output.

	* gdb.base/nodebug.exp: Add tests to check that "print", "whatis"
	and "ptype" work on variables in files compiled without -g.
	Replaces commented out "maint print msymbol" tests.

Mon Jan 16 12:13:28 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/setvar.c (dummy): Call malloc.

	* gdb.stabs/aout.sed: Enclose comments within a sed command to avoid
	losing with the irix4 sed.

	* gdb.base/sigall.exp (test_one_sig): Add xfail for "get signal
	ALRM" on irix4.

Sun Jan 15 21:58:26 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* TODO: Remove items about corefile.exp testing new exec-file and
	backtrace; both are now done.  Add items about printing enums.

Sat Jan 14 11:25:28 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/sigall.exp (test_one_sig): Attempt to recover if
	"get signal $thissig" test fails.

	* gdb.base/setvar.exp: Check for and reject crazy expected type hacks.

Thu Jan 12 01:14:53 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/sigall.c (gen_*): Pass argument to handle_* to avoid
	compiler warning with dec alpha compiler.

	* gdb.base/commands.exp (if_while_breakpoint_command_test): Remove
	extra \n from gdb_test call (this explains why the prompt test
	that I removed yesterday was there).
	(user_defined_command_test): Remove extra \n and prompt test.

	* gdb.base/sigall.c: If SIGABRT == SIGLOST, just act as if SIGLOST
	doesn't exist.  Likewise if SIGIO == SIGPOLL, pretend SIGPOLL
	doesn't exist.
	* gdb.base/sigall.exp: Remove special handling for SIGIO and SIGPOLL.
	Also remove alpha workaround, which turns out to be because
	SIGABRT == SIGLOST.

	* gdb.base/sigall.exp: Add workaround for alpha weirdness.

	* gdb.base/help.exp: Don't test "help show".

Wed Jan 11 14:37:04 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/commands.exp: Call gdb_exit and gdb_start so that
	"set print address" is on.
	* gdb.base/commands.exp (if_while_breakpoint_command_test): Don't
	pass prompt to gdb_test; gdb_test already looks for the prompt.

	* gdb.base/help.exp: Replace most of docstring for "define" with ".*".

	* gdb.base/a1-selftest.exp: Don't test "maint dump-me".  That test
	was a vestige of the manual TESTSTRATEGY, and the purpose of it
	was to make sure that gdb can read a core file.  But (a) the "read
	the corefile" part didn't make it to a1-selftest.exp, we just
	delete the corefile after creating it, and (b) we test reading
	corefiles in corefile.exp anyway.  Also, this test left around a
	xgdb process on Solaris.

	* gdb.base/corefile.exp: Also test backtrace.

Wed Jan 11 00:14:40 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/commands.exp: Test a simple user defined command with
	arguments and if/while statements; verify the full user command is
	printed by "show user".

	* gdb.base/commands.exp: Test if/while commands as part of a
	breakpoint command list; verify they appear in breakpoint
	information.

Wed Jan 11 00:47:58 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/sigall.c (gen_FPE): Generate SIGFPE with kill() rather
	than by dividing by zero.

Tue Jan 10 21:38:05 1995  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/watchpoint.exp: hppa*-*-*bsd* no longer has problems
	performing an inferior call with watchpoints enabled.
	* gdb.base/watchpoint.c (main): Delete second unnecessary read
	call.

Tue Jan 10 18:42:07 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.stabs/weird.exp: Allow spaces followed by backspaces in echo
	of "file" command.

	* gdb.c++/classes.exp (test_ptype_class_objects, ptype class Foo):
	Add additional pattern for when "int operator int(void);" appears
	in a different order.

Mon Jan  9 16:22:46 1995  Jim Kingdon  <kingdon@lioth.cygnus.com>

	* gdb.base/signals.exp: Call gdb_exit and gdb_start.

	* gdb.base/help.exp: Replace most of docstrings for "info signals"
	and "signal" with ".*".

Wed Jan  4 11:35:19 1995  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add note about "handle all nostop".

	* gdb.base/{sigall.c, sigall.exp}: New test.
	* gdb.base/Makefile.in: Add it.

Thu Jan  5 17:34:03 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* lib/gdb.exp, gdb.base/corefile.exp: Supply -nw as argument
	when invoking GDB, suppresses any windowing interface.

Mon Jan  2 17:40:21 1995  Stan Shebs  <shebs@andros.cygnus.com>

	* config/sim-gdb: New file, simulator testing support.

Wed Dec 28 12:21:50 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/interrupt.exp: Test calling func1 twice.

Wed Dec 21 12:51:37 1994  Jim Kingdon  <kingdon@deneb.cygnus.com>

	* gdb.base/list.exp (test_forward_search): Set timeout higher
	when we'll be getting lots of output from gdb.

	* gdb.base/a1-selftest.exp: Move code that was inside expect -re
	"init_malloc" to after the expect statement.  Run it if that
	regexp is taken, but also for two others which happen if source
	cannot be found.

Tue Dec 20 12:35:21 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/printcmds.exp: New test, for printing register before
	program is running.

Mon Dec 19 00:32:55 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/list.exp:  Correct some alternate expect patterns
	to reflect changes in list1.c.

Sat Dec 17 14:20:03 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add item regarding large frames.

	* gdb.base/{funcargs.exp, funcargs.c} (call_after_alloca): New test.

	* TODO: Remove item about enabling return.exp; it
	is enabled.  Suggest a few more "return" tests.

Sat Dec 17 02:33:37 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.c++/misc.cc, gdb.c++/inherit.exp:  Add testcases for
	anonymous unions.

Tue Dec 13 11:26:00 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.chill/Makefile.in: Put all rule before rules for pr-4975.o
	and pr-5646.o, so "make" is the same as "make all", not "make
	pr-4975.o".

Wed Dec  7 19:02:02 1994  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/list.exp: Adjust expectations to reflect changes in
	list1.c.
	(test_forward_search): New test proc.
	* gdb.base/list1.c (long_line): New function, has long source line.

Thu Dec  1 23:14:49 1994  Stan Shebs  <shebs@andros.cygnus.com>

	* gdb.base/a1-selftest.exp: Change initial stepping to know about
	additional line of code that was added.

Wed Nov 30 19:43:14 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.s: Break the large branching tests into smaller
	tests so as not to overflow expect's input buffers.
	* gdb.disasm/hppa.exp: Corresponding changes.

Fri Nov 25 13:37:10 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	Beginnings of template debugging tests.
	* gdb.c++/templ-info.cc:  New file to test for template
	debugging capability of the compiler.
	* gdb.c++/Makefile.in:  Add rule to build templ-info.exp from
	templ-info.cc.
	* gdb.c++/templates.cc:  Add explicit template instantiations
	to enable compiling with -fno-implicit-templates. Add destructor
	and 'value' method to T5 class for template tests.
	* gdb.c++/templates.exp:  Add testcases for printing of template
	types, setting breakpoints on template methods and calling a
	template method.

Sat Nov  5 00:20:17 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.exp (branch_tests): Allow any symbol as the
	branch target since some assemblers (gas-2.5)  may emit a
	relocation for the branch instead of resolving it in the
	assembler.

Sat Oct 29 02:40:40 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/a1-selftest.exp:  Remove RS/6000 xfail for backtrace
	through signal handler.

Fri Oct 21 11:10:16 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* configure.in (*-*-netware): Use config/mt-netware.

	* config/mt-netware: New file.
	* config/mt-i386-netware: Removed, separate configs for different
	  netware architectures are no longer needed now that we have
	  --with-headers.

Sat Oct 15 03:43:00 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/exprs.exp:  Remove xfail for alpha, it is fixed
	by the recent changes to use ANSI C arithmetic conversions.

Sun Oct  9 07:44:06 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/corefile.exp: Add (xfail'd) test for reinit_frame_cache
	bug involving using inferior_pid to figure out whether to select a
	frame.

Wed Sep 28 23:12:02 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.exp: Change arg[0..3] to r[26..23] to
	match the current disassembler output.

Fri Sep 16 11:42:41 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.fortran/exprs.exp: Expect VOID instead of void.
	* gdb.fortran/types.exp: Escape the expected '*'s in Fortran
	types, expect "int" as type of integer values (for now).

Wed Sep  7 23:33:51 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/commands.exp: New tests for if/while commands.

Tue Sep  6 13:16:11 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* lib/gdb.exp (runto):  Replace sub-pattern for hex value
	by .*, since hex values have different syntax in Chill mode.

Tue Sep  6 02:15:51 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.c++/demangle.exp (test_arm_style_demangling):  Remove
	linefeed from expect pattern for repeated types with indices > 9.

Mon Aug 29 14:20:44 1994  Stan Shebs  (shebs@andros.cygnus.com)

	First part of Fortran test suite.
	* gdb.fortran: New directory.
	* gdb.fortran/exprs.exp, gdb.fortran/types.exp: New files.

Sat Aug 27 23:32:43 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/default.exp:  Update expect pattern for load command
	without arguments.

Wed Aug 24 13:15:02 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Change i386 to i[345]86.
	* gdb.base/configure.in: Likewise.
	* gdb.c++/configure.in: Likewise.
	* gdb.chill/configure.in: Likewise.

Tue Aug 23 19:14:06 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* lib/gdb.exp (gdb_run_cmd): Move comment out from between expect
	patterns, since that is not a valid context for comments.

Fri Aug 19 15:07:30 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* gdb.c++/demangle.exp (test_arm_style_demangling): Add tests for
	repeated types and repeated types with indices > 9.

Tue Aug 16 15:57:52 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.base/printcmds.exp: Remove all the a29k XFAILs tagged with
	2417; old bug has been fixed.

Fri Aug 12 19:35:41 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/interrupt.exp: When trying to wake up the inferior,
	send the newline ourselves instead of assuming gdb_test will do
	so when passed an empty input string.

	* gdb.stabs/hppa.mt: Use $(AS), not $(CC) to assemble the
	stabs testcode.

Fri Aug  5 17:01:07 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* lib/gdb.exp (gdb_test): Don't send anything if the first
	  argument is an empty string.  This makes cases where we want to
	  match output that is already in expect's buffers (for example,
	  matching a breakpoint after gdb_run_cmd has been called) work
	  reliably.

Tue Aug  2 10:24:08 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* config/netware.exp: New file.

Thu Jul 28 12:54:07 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* config/mt-slite (LDFLAGS): If using the newlib in the tree, set
	  the -B and -L prefixes so we can find the debugging stub.

	* Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET): Use newlib if it is
	  there and we are using the gcc from the tree.

	* gdb.base/types.c: Removed.

	* gdb.base/configure.in: Look for makefile fragments in ../config.
	  Recognize i386-*-netware.
	* gdb.c++/configure.in: Likewise.

Mon Jul 25 23:48:50 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/corefile.exp:  Change `else if' to `elseif', which is
	the correct TCL syntax.

Mon Jul 25 15:35:56 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* gdb.base/opaque.exp: use runto instead of messing around with
	  breakpoints.  Simplify by using gdb_test.

	* gdb.base/bitfields.exp: restart between tests on netware targets
	  because breakpoints aren't relocated after target death.  Run
	  processes to completion.

	* gdb.base/{opaque,watchpoint}.exp: Use gdb_run_cmd.

Sun Jul 24 09:55:51 1994  Fred Fish  (fnf@cygnus.com)

	* Makefile.in:  Remove extra tabs that confuse some versions
	of "make".  Use the newly built gdb to test with by default,
	rather than the first one in the tester's search path.

Sat Jul 23 15:05:47 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.base/whatis.exp (v_signed_short_array): Fix a typo.

	* gdb.base/help.exp: Update expected add-symbol-file, ignore, and
	condition help.

Tue Jul 19 10:26:32 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* lib/gdb.exp (runto): Rewrite in terms of gdb_run_cmd.

	* lib/gdb.exp (gdb_run_cmd): New function, used to start program
	  running.
	* gdb.base/bitfields.exp: Use gdb_run_cmd to start program.
	* gdb.base/funcargs.exp: Likewise.

	* gdb.base/bitfields.exp: Simplify by using gdb_test.
	* gdb.base/funcargs.exp: Likewise.

	* lib/gdb.exp (gdb_test): if match times out, don't call fail if
	  message is "".

Mon Jul 18 12:18:07 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* gdb.base/{a2-run,callfuncs,funcargs,interrupt,mips_pro,nodebug,
	  return,signals,twice}.exp: Handle non-existant binaries
	  consistantly.

	* gdb.base/corefile.exp: Execute coremaker to generate core dump.
	* gdb.base/Makefile.in: Don't try to generate a core dump, we
	  might testing a cross development system.

Thu Jul 14 18:13:56 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* Makefile.in (RUNTEST_FOR_TARGET): Fix relative pathname, the
	  runtest script is relative to ${srcdir}, not ${rootdir}.

Thu Jul 14 14:56:59 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.base/signals.exp: Allow for optionality of breakpoint
	address.

Thu Jul 14 11:21:27 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.base/{ptype.exp,ptype.c}: Add t_char_array test.

Tue Jul 12 12:22:32 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)

	* gdb.c++/cplusfuncs.cc: Include <stddef.h>, not <sys/types.h>,
	  for size_t definition.
	* gdb.c++/templates.cc: Likewise

	* config/mt-i386-netware: New file.

	* gdb.base/interrupt.c: Do not test if errno == EINTR if it's not
	  defined.

	* gdb.base/Makefile.in: Added support for systems that name core
	  files by appending "core" to the program name.
	* gdb.base/a1-selftest.exp: Likewise.

Mon Jul 11 23:59:18 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/return.exp:  Add comment and message for `return double'
	test failure on Sparc Solaris.

Mon Jul  4 12:10:48 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* lib/gdb.exp (runto): Allow for optionality of breakpoint address.

Wed Jun 29 00:26:17 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.c++/misc.cc:  Instantiate classes to inhibit the compiler
	from optimizing them away.
	* gdb.c++/classes.exp, gdb.c++/inherit.exp:  Update ptype expect
	patterns to include default constructors and assignment operators,
	to match gcc versions beyond 2.5.8. Accept any cplus demangling
	character in the output of the virtual base pointer.

Fri Jun 24 08:15:42 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.c++/cplusfuncs.exp:  Use string_to_regexp and a regular
	expression match in print_addr_of to avoid unintented matches.
	* gdb.c++/virtfunc.exp:  Accept alternate ptype output of g++
	versions up to 2.5.8.

Mon Jun 20 23:54:37 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.base/list.exp:  Tweak alternate pattern for listing of an
	included file to run under newer versions of expect.
	* gdb.c++/demangle.exp:  Add spaces to the expect patterns between
	consecutive >'s in templates to accomodate recent cplus-dem.c change.
	Remove xfail for the virtual table of BDDHookV.

Sat Jun 18 12:51:34 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* lib/gdb.exp (string_to_regexp): Set a default result.
	(default_gdb_start): Fix misleading message.

Wed Jun 15 12:10:10 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config/mt-a29k-udi, config/mt-i960-nindy, config/mt-sparc-aout:
	Remove all CC, etc definitions.
	* config/mt-hpux: New file.
	* config/mt-mips-ecoff (CFLAGS_FOR_TARGET): Remove:
	(CFLAGS, LDFLAGS): Define.
	* config/mt-slite (CFLAGS_FOR_TARGET): Change to LDFLAGS.

	* Makefile.in (site.exp): Don't insert host_os, etc.
	(just-check): Just use RUNTEST with RUNTESTFLAGS only.
	(distclean): Check existence of subdir.
	* gdb.base/configure.in (hppa*-*-hpux*): Recognize.
	* gdb.base/Makefile.in: General cleanup and simplification.
	Use CC, CFLAGS, and LDFLAGS instead of ..._FOR_TARGET versions
	to build executables.	Use default rule to build .o files.
	(EXPECT, RUNTEST, CC): Fix relative pathname.
	(site.exp): Don't insert host_os, etc.
	* gdb.base/signals.c (main): Don't call signal unless SIGALRM
	and/or SIGUSR1 defined.
	* gdb.base/watchpoint.c: Don't include stdio.h a second time.
	* gdb.c++/Makefile.in: General cleanup and simplification.
	Use CC, CFLAGS, and LDFLAGS instead of ..._FOR_TARGET versions
	(CFLAGS): Remove.
	(EXPECT, RUNTEST_FOR_TARGET, CXX): Fix relative pathname.

Fri Jun 10 10:55:09 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gdb.base/recurse.exp: Misc changes to get tests running again
	after Kung's changes to the watchpoint code.
	* gdb.base/watchpoint.exp: Likewise.

Thu Jun  9 15:16:55 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* lib/gdb.exp (string_to_regexp):  Convert {\} also.

Wed Jun  8 12:12:17 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* config/udi-gdb.exp, config/unix-gdb.exp: Call default_gdb_start.
	* lib/gdb.exp (default_gdb_start): Define.
	* gdb.base/bitfields.exp, gdb.base/break.exp, gdb.base/exprs.exp,
	gdb.base/funcargs.exp, gdb.base/opaque.exp,
	gdb.base/printcmds.exp, gdb.base/ptype.exp, gdb.base/recurse.exp,
	gdb.base/scope.exp, gdb.base/setvar.exp, gdb.base/watchpoint.exp,
	gdb.c++/classes.exp, gdb.c++/misc.exp, gdb.c++/virtfunc.exp:
	Don't call gdb_target_udi in between tests.

Tue Jun  7 08:30:15 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.c++/demangle.exp: Use gdb_test_exact, rather than demangle
	(which was basically just a local version of the same thing).  In
	addition to avoiding duplication, gdb_test_exact is faster.
	* lib/gdb.exp (gdb_test_exact): Fix typo.

	* lib/gdb.exp (delete_breakpoints): If there were no breakpoints,
	don't give an error.

	* gdb.base/term.exp: Call delete_breakpoints before starting.

	* gdb.base/Makefile.in (EXECUTABLES): Remove t10.
	(t10): Add comment.

Mon Jun  6 18:26:50 1994  Stan Shebs  (shebs@andros.cygnus.com)

	Reorganization of the GDB Test Suite.

	* gdb.base: New directory, contains all the basic tests.
	* gdb.c++: New directory, tests specific to C++.
	* gdb.chill: New directory, tests specific to Chill.
	* 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.t17, gdb.t20, gdb.t21, gdb.t22, gdb.t23,
	gdb.t24, gdb.t30, gdb.t31: Removed directories, contents moved
	into appropriate new directories (t00-t17 to base, t20-t23 to c++,
	t30-31 to chill).
	* */gdbme.*: Rename to match appropriate expect scripts.
	* gdb.base/bitfields.c, gdb.base/break.c, gdb.base/callfuncs.c,
	gdb.base/coremaker.c, gdb.base/exprs.c, gdb.base/funcargs.c,
	gdb.base/interrupt.c, gdb.base/list0.c, gdb.base/list0.h,
	gdb.base/list1.c, gdb.base/mips_pro.c, gdb.base/nodebug.c,
	gdb.base/opaque-info.c, gdb.base/opaque0.c, gdb.base/opaque1.c,
	gdb.base/printcmds.c, gdb.base/ptype.c, gdb.base/recurse.c,
	gdb.base/return.c, gdb.base/run.c, gdb.base/scope0.c,
	gdb.base/scope1.c, gdb.base/setvar.c, gdb.base/signals.c,
	gdb.base/types.c, gdb.base/twice.c, gdb.base/watchpoint.c,
	gdb.base/whatis-info.c, gdb.base/whatis.c: New names of C files.
	* gdb.c++/cplusfuncs.cc, gdb.c++/templates.cc, gdb.c++/misc.cc,
	gdb.c++/virtfunc.cc: New names of C++ files.
	* gdb.chill/chillvars.ch: New name of Chill file.
	* gdb.base/configure.in, gdb.c++/configure.in,
	gdb.chill/configure.in: Merge in contents of gdb.t*/configure.in.
	* gdb.base/Makefile.in, gdb.c++/Makefile.in,
	gdb.chill/Makefile.in: Merge in contents of gdb.t*/Makefile.in.
	* configure.in (configdirs): Update to reflect directory changes.
	(target_abbrev): No longer define for any configuration.
	* Makefile.in: Cosmetic improvements to header comments.

Fri Jun  3 18:56:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	Various changes to gdb.t31:

	* Makefile.in (gdbme.o):  Compile with -fspecial_UC.
	* gdbme.ch:  Make all key-words and predefineds be upper-case.
	* chillvars.exp:  Expect key-words and predefinds in upper-case.

	* chillvars.exp:  Use gdb_test_exact many places.
	Change expected output for arrays (which now includes index labels).

	* pr-5020.exp, gdme.ch (module PR_5020):
	New test, for PR-5020.

Thu Jun  2 16:02:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* lib/gdb.exp (string_to_regexp, gdb_test_exact):  New procedures.
	* Makefile.in (CHILL_LIB):  Remove bogus redundant definitions.

Sun May 29 22:31:42 1994  Per Bothner  (bothner@kalessin.cygnus.com)

	* Makefile.in:  Fix bit-rot in definitions of CHILL,
	CHILL_FOR_TARGET and Chill_LIB.
	* gdb.t31/gdbme.ch:  Fix syntax of nested array tuples.
	* gdb.t31/Makefile.in:  Add definitions for CHILLFLAGS,
	CHILL, and CHILL_LIB.

Sat May 21 10:05:08 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Revert the previous changes.  Please see Rob's directory
	  /lisa/test/rob/progressive/gdb/testsuite for these fixes.

Thu May 19 12:51:00 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in, configure.in, config/mips-gdb.exp,
          config/mt-a29k-udi, config/mt-i386-aout, config/mt-i960-nindy,
          config/mt-sparc-aout, config/udi-gdb.exp, config/unix-gdb.exp,
          config/unknown.exp, gdb.t00/default.exp, gdb.t00/help.exp,,
	  gdb.t00/teststrategy.exp, gdb.t01/Makefile.in, gdb.t02/Makefile.in,
	  gdb.t02/whatis.exp, gdb.t03/Makefile.in, gdb.t03/gdbme.c,
	  gdb.t04/Makefile.in, gdb.t05/Makefile.in, gdb.t06/Makefile.in,
	  gdb.t06/break.exp, gdb.t06/signals.c, gdb.t06/signals.exp,
	  gdb.t08/Makefile.in, gdb.t08/opaque.exp, gdb.t09/Makefile.in,
	  gdb.t10/Makefile.in, gdb.t11/Makefile.in, gdb.t12/Makefile.in,
	  gdb.t13/Makefile.in, gdb.t15/Makefile.in, gdb.t15/funcargs.exp,
	  gdb.t15/gdbme.c, gdb.t15/return.exp, gdb.t16/Makefile.in,
	  gdb.t17/Makefile.in, gdb.t17/callfuncs.exp, gdb.t17/gdbme.c,
	  gdb.t20/Makefile.in, gdb.t21/Makefile.in, gdb.t21/cplusfuncs.exp,
	  gdb.t22/Makefile.in, gdb.t22/virtfunc.exp, gdb.t23/Makefile.in,
	  gdb.t24/demangle.exp, lib/gdb.exp:  Check in Rob's testing
	  changes from 94Q1.

Wed May 18 17:04:03 1994  Bill Cox  (bill@rtl.cygnus.com),

	* config/mt-lynx, config/mt-m68k, config/mt-mips-ecoff,
	  config/mt-slite, config/mt-unix, config/mt-vxworks: Add
	  Rob's new testing fragments.

Tue May 17 15:04:14 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config/mips-gdb.exp, config/udi-gdb.exp, config/vx-gdb.exp,
          lib/gdb.exp: Replace error proc calls with perror.

Mon May 16 19:00:50 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* gdb.t00/teststrategy.exp: Reorder so that AIX gdb can print the
	version also, match on casted version strings, and match on
	gdb startup case where the line numbers might be messed up.

Fri May 13 18:00:27 1994  Bill Cox  (bill@rtl.cygnus.com)

	* config/mt-i960-vx (LDFLAGS): Add '-r' option for test links.
          (CFLAGS): Delete it from here.

Tue May  3 16:08:09 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* gdb.t22/virtfunc.exp: Fix g++ ptype expected outputs.

Fri Apr 29 14:26:35 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in (RUNTEST): Default to just "runtest".

Tue Apr 26 22:21:40 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t17/callfuncs.exp: More comments about t_func_values tests.
	* gdb.t17/gdbme.c (t_func_values): Add comments about how and why
	the code has been restructured.

Thu Apr 21 12:48:07 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/default.exp (set write): Allow any number of \r and/or
	\n, not just one of each.

	* gdb.t07/gdbme.c (main): Don't take address of an array; SunOS4
	/bin/cc gives a warning if you do.

Thu Apr 21 11:54:04 1994  Kung Hsu  (kung@mexican.cygnus.com)

	* gdb.t24/demangle.exp: change expect pattern of
	__t10ListS_link1ZUiRCUiPT0

Wed Apr 13 15:05:00 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t07/{recurse.exp, recurse.c}: New tests for watchpoints
	on local variables in recursive functions.

	* gdb.t07/Makefile.in: Build the new test.

Tue Apr 12 20:45:25 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t17/gdbme.c (t_func_values): Do not compare function pointers
	directly.  Instead compare the return values from actual calls.

Mon Apr 11 10:31:00 1994  Bill Cox  (bill@rtl.cygnus.com)

	* Makefile.in (check): Set TCL_LIBRARY for runtest.

Mon Apr 11 09:15:30 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* From Peter Schauer with minor modifications.
        * gdb.t15/return.exp (return_tests): Handle targets where "return"
        stops in mid-line in the caller.  Add xfail for returning a float
        value on X86 targets.

Tue Apr  5 15:16:33 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.exp (fcmp_tests): Break up into two halves
	to avoid expect lossage.
	(fmem_LRbug_tests): Likewise.
	* gdb.disasm/hppa.s: Corresponding changes.

	* gdb.disasm/hppa.exp: Rework escape sequences and end-of-line
	conditions to work with latest dejagnu/expect.

	* gdb.t15/funcargs.exp (finish from indirect call): No longer
	expected to fail on the PA.
	(backtrace in call with trampolines): Explicitly require main
	to be frame #1 (no trampolines should show up in backtrace).

	* gdb.t00/default.exp: Use "exp_continue" rather than obsolete
	"continue -expect".
	* gdb.t06/break.exp: Likewise.
	* gdb.t07/watchpoint.exp: Likewise.
	* gdb.t13/bitfields.exp: Likewise.
	* gdb.t15/{funcargs,return}.exp: Likewise.
	* gdb.stabs/weird.exp: Likewise.
	* config/{mips,udi}-gdb.exp: Likewise.

	* hppa.sed: Enclose comments within a sed command to avoid
	losing with the old OSF1 sed.

Wed Mar 30 00:31:49 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t02/whatis.exp, gdb.t08/opaque.exp:  Add XFAILs for
	sequent dynix.
	* gdb.t06/signals.exp:  Add clear_xfail for sequent dynix.
	* gdb.t15/funcargs.exp:  Conditionally step again to really
	finish from marker_call_with_trampolines. Handle the case where
	the first step from within call_with_trampolines already steps
	us back to main.
	* gdb.t15/gdbme.c:  Add comment to closing brace of
	call_with_trampolines for funcargs.exp.

Tue Mar 29 23:55:27 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t07/watchpoint.exp (test_watchpoint_triggered_in_syscall):
	Fix typo(s).

Sun Mar 27 16:53:14 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t07/gdbme.c: More code for watchpoint testing.

	* gdb.t07/watchpoint.exp: Accept both "Watchpoint" and
	"Hardware watchpoint" throughout file.
	(test_watchpoint_triggered_in_syscall): New test.
	(test_complex_watchpoint): New test.

Fri Mar 25 17:05:31 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdbme.c (call_with_trampolines): New function to try and step
	into.  Tests trampoline problems on the PA.

	* funcargs.exp (localvars_in_indirect_call): No longer expect
	stepping into indirect call to fail on PAs.
	(test_stepping_over_trampolines): New test.

Wed Mar 23 07:43:33 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestions for static member function tests, and
	completion tests.

Wed Mar 16 08:28:28 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestions for "p/a" tests.

	* lib/gdb.exp: Set prompt to (gdb) if it isn't already set.
	(default_gdb_exit): Replace all the hair with sending "quit" to
	the process with a simple close.

Tue Mar 15 08:45:50 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestions for shared library tests.

Sun Mar 13 10:45:22 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestions for x/s tests.

Fri Mar 11 08:22:00 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/help.exp: Replace most of docstrings for "tbreak",
	"enable once", and "enable breakpoints once" with ".*".

Thu Mar 10 08:34:27 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestions about structure passing tests.

Mon Mar  7 13:45:54 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t03/gdbme.c:  gcc version 1 puts out the wrong stabs for
	the primary1 test, use work around if __GNUC__ < 2.
	* gdb.t06/signals.c:  Add comments for signals.exp pattern matching.
	* gdb.t06/signals.exp:  Add XFAILs for i386 bsd and vax ultrix.
	Test for bad output rather than waiting for timeout.  Issue
	second continue only if first continue failed.

Wed Mar  2 10:08:01 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.t21/cplusfuncs.exp (test_paddr_operator_functions): Do
	operator[] test with gdb_test because the old code didn't seem to
	be getting the quoting right with the new dejagnu.

Thu Feb 24 19:49:25 1994  Rob Savoye  (rob@poseidon.cygnus.com)

	* lib/gdb.exp: Set GDB to a fresh gdb if there is one, else use
	one from the path.
	* Makefile.in: Use a fresh expect if there is one, use runtest
	from the src tree if there is one.

Thu Feb 24 18:49:37 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.t06/break.exp (test_next_with_recursion): Remove xfail for
	next over recursive call.  Revise the tests from that point on
	(which had been skipped) to match GDB's actual (correct) output.

	* gdb.t07/watchpoint.exp (test_stepping): Remove xfail for bug
	with next over a breakpoint whose condition is false.

	* gdb.t00/help.exp: Comment out "help set print" tests just like
	(and for same reason as) "help set" test.

Mon Feb 14 09:58:23 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.s (fmemLRbug_tests): New tests.
	* gdb.disasm/hppa.exp (fmemLRbug_tests): Run them.

Sun Feb  6 15:36:13 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/break.exp (test_next_with_recursion): Remove no longer
	necessary gdb_target_udi.

	* gdb.t03/ptype.exp: For UDI, skip tests which call malloc.

	* gdb.t02/whatis.exp, gdb.t03/ptype.exp: Remove xfails for PRs
	1838 and 2417; they are fixed.

	* gdb.t02/whatis.exp (v_char_array, v_signed_char_array),
	gdb.t03/ptype.exp (ptype structure, ptype union):
	Remove xfails; the test is looser than when the xfails were added.

	* gdb.t00/{help.exp,default.exp}: Don't test "target remote" on UDI.
	* gdb.t00/help.exp: Don't expect remote to be in "help target" output.

	* gdb.t01/run.exp: Only run shell test if isnative.

	* config/udi-gdb.exp (gdb_load): Use "file", not "load" command,
	since "run" automatically loads if necessary.  Call gdb_target_udi
	after the "file" since "file" kills any execution target.

	* config/udi-gdb.exp (gdb_start): Don't send "set args main" to
	GDB.  GDB doesn't work that way (not anymore at least) on UDI.
	* gdb.t01/run.exp, gdb.t06/break.exp: Don't pass extra first
	argument for UDI.

Fri Feb  4 12:19:32 1994  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.t17/interrupt.c: If we get EINTR, don't print an error message.

	* gdb.t17/callfuncs.exp: Add xfails for rs6000.

Sat Feb  5 09:11:56 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Re-write demangle to just call gdb_test,
	properly quoting regexps.  This makes the second argument to
	demangle a fixed string, which matches the callers, instead of a
	shell-style pattern which is what the previous implementation
	used.  Update some of the callers.

Sat Feb  5 10:19:09 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.s (comib_tests): Add missing instruction.
	(comib_nullified_tests): Fix typo.
	* gdb.disasm/hppa.exp (all comb tests): Fix thinkos in expect
	strings.  No longer expected to fail.

	* gdb.disasm/hppa.s (addib_tests): Fix typo.
	* gdb.disasm/hppa.exp (all addb tests): Fix thinkos in expect
	strings.  No longer expected to fail.

	* gdb.disasm/hppa.exp (fmpy_addsub_tests): Fix typo in expect
	string.  No longer expected to fail.

Fri Feb  4 23:45:11 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.exp (fcmp_tests): Fix thinko in expect string.
	No longer expected to fail.

	* gdb.disasm/hppa.exp (xmpyu_tests): Fix buglet in expect
	string.  No longer expected to fail.

Fri Feb  4 10:35:42 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Remove a bunch more tests which differ
	only in the names (I probably got most of them).  I was even
	generous with some which differed in underscores in names, and
	probably missed a few, and I *still* was able to remove almost a
	third of the file with almost no impact on testsuite coverage.

Thu Feb  3 12:04:49 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/default.exp: Match udi_attach error message as well as
	the one from child_attach.

	* gdb.t00/default.exp: Use "." instead of "?" to match a question mark.

	* gdb.stabs/weird.exp: Remove xfail for const70; just fixed in GDB.

	* gdb.stabs/weird.def (bad_neg0type): Size of this type is 16, not 8.
	* gdb.stabs/weird.exp: Remove xfail for "p bad_neg0"; this fixes it.

	* Move test with enums and partial symbols back to
	gdb.t03/{ptype.exp,gdbme.c} from gdb.stabs/{weird.def,weird.exp}.
	Reverts the change of 26 May 93.  Per today's change to
	stabs.texinfo, the behavior that weird.exp was expecting was
	unreasonable; what is important is that the compiler+gdb get
	things right, which happens with a recent gcc.  Also fix the test
	to deal with native compilers which put out the stab gdb can't
	deal with.

Mon Jan 31 15:40:11 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Remove a bunch of tests which differ only
	in the names.  The main thing these accomplish is to slow things down.
	Many more such duplicates surely remain.

	* gdb.t00/help.exp: Comment out "help support" test just like
	(and for same reason as) "help set" test.

Mon Jan 31 06:43:45 1994  Fred Fish  (fnf@cygnus.com)

	* gdb.t06/break.exp:  Remove setup_xfails for
	sparc-sun-solaris2.*, these tests now pass with latest gcc and gdb.
	* gdb.t20/inherit.exp (test_ptype_si):  Update warning message
	about known bug in gcc to include up through 2.5.8.
	* gdb.t20/inherit.exp (test_ptype_vi):  Accept "_vb." as well as
	well as "_vb$".
	* gdb.t21/cplusfuncs.exp (test_lookup_operator_functions):
	Remove setup_xfails for sparc-sun-solaris2.*, these tests now pass
	with latest gcc and gdb.
	* gdb.t22/virtfunc.exp (test_ptype_of_classes):  Accept "_vb." as
	well as "_vb$".

Sat Jan 29 23:31:26 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* configure.in (hppa*-*-*): Also configure and build stabs-only
	tests.

Thu Jan 27 08:21:16 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.t10/hppa.mt: A makefile fragment for the PA.
	* gdb.t10/configure.in (hppa*-*-*): Use it.

Tue Jan 25 12:58:26 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t09/corefile:  Increase timeout when spawning gdb explicitly.

Wed Jan 19 12:40:25 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t06/signals.exp:  Handle blocked SIGTRAP on sun3 for bash
	versions prior to 1.13.5.

Tue Jan 18 20:10:50 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/default.exp (show prompt): In FAIL case, only match if
	the prompt is at the start of a line.

Mon Jan 17 20:07:51 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.disasm/hppa.s: Add new tests for sfu and copr instructions.
	Enable "diag" instruction.  Delete copr from fpu_misc_tests, it's
	in the copr tests now.
	* gdb.disasm/hppa.exp: Run new sfu and copr tests.  Do not expect
	copr in the fpu_misc tests anymore.  fpu_misc tests are no longer
	expected to fail.

Fri Jan 14 14:24:21 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* gdb.t00/teststrategy.exp, gdb.t07/watchpoint.exp,
	gdb.t31/chillvars.exp, lib/gdb.exp:
	Tweak to run under either version of expect.
	* lib/gdb.exp (default_gdb_exit): Remove "catch" statement.
	* gdb.t00/teststrategy.exp: Use isnative and verbose procedures.
	* gdb.t11/list.exp: Remove extraneous whitespace.

Sat Jan 15 09:57:22 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t16/printcmds.exp (test_print_strings): Accept
	"(unsigned char *) " before the string.

	* TODO: Add notes about printing of fancy types and GDB expressions.

Thu Jan 13 17:16:09 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* Makefile.in: Pass LDFLAGS and LIBS to sub-makes.
	* gdb.t06/configure.in: Don't try to compile signals test program
	if doing mips-idt-ecoff.

Thu Jan 13 08:25:55 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* Most .exp files: Tweak to run under either version of expect.

Tue Jan 11 15:21:13 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t12/scope.exp: Add xfails for rs6000.  Remove 1806 from existing
	xfails; I'm not sure why they are failing, but not because of PR 1806.

Mon Jan 10 22:14:20 1994  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/unix-gdb.exp: Remove gdb_unload cause it's already
	defined in lib/gdb.exp.

Fri Jan  7 12:42:45 1994  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t07/watchpoint.exp:  Clear xfail for calling function with
	watchpoint enabled on mips, CALL_DUMMY_BREAKPOINT_OFFSET got defined.
	* gdb.t20/gdbme.cc, gdb.t21/gdbme.cc:  Conversion operator functions
	have to be typeless.

Tue Jan  4 09:32:22 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: Add suggestion for copyright year test.

Mon Jan  3 11:35:26 1994  Stan Shebs  (shebs@andros.cygnus.com)

	* configure.in (*-*-lynxos*): Add stabs tests.

Wed Dec  1 21:54:05 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.stabs/hppa.sed: Only lables should ever start in column zero,
	so insert a tab before any assembler directive in column zero.

	* gdb.disasm/hppa.exp (all_fpu_memory_tests): Test FP quadword
	stores.
	* gdb.disasm/hppa.s (fpu_memory_indexing_tests): Add FP quadword
	stores.
	(fpu_short_memory_tests): Likewise.

Mon Nov 22 13:23:22 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.stabs/ecoff.mt:  Delete alpha specific if block, fix typo.
	* gdb.stabs/ecoff.sed:  Escape inserted blanks with backslashes, embed
	.stabs directives in comments.

Fri Nov 19 14:09:02 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* TODO: New file, describing tests we could write.
	* gdb.t09/corefile.exp: Move description of tests to write to TODO.

Tue Nov 16 21:07:44 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.exp: Add kludge to force re-sync.

	* gdb.t00/teststrategy.exp: If we accidently send the "maint dump-me"
	to xgdb instead of gdb, get out of gdb.

Tue Nov 16 10:21:57 1993  Rob Savoye  (rob@cygnus.com)

	* lib/gdb.exp: Make GDB and GDBFLAGS global so the scoping work
	for info.

Sat Nov 13 23:17:48 1993  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gdb.stabs/hppa.mt: A makefile fragment for the PA.
	* gdb.stabs/configure.in (hppa*-*-*): Use it.
	* gdb.stabs/hppa.sed: New sed script for the PA.

Sat Nov 13 22:50:29 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs: Re-write weird.def and configuration to use sed
	instead of cpp.  sed is portable and POSIX; cpp is neither.

Fri Nov 12 15:26:36 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.exp: Remove one sun3 XFAIL which has been fixed.

Mon Nov  8 16:55:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t20/gdbme.cc: Add comment about pmi being optimized out.

Thu Nov  4 23:07:59 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/weird.exp, gdb.t22/virtfunc.exp: Accept "_vb." as well as
	"_vb$".
	* gdb.t00/teststrategy.exp: Add xfail for RS/6000.
	* gdb.t03/ptype.exp: Add comments and messages about FAILs with xlc.

Wed Nov  3 13:53:34 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* lib/gdb.exp: Comment out code which depends on non-existent
	`transform' procedure.

Wed Nov  3 11:23:11 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* lib/gdb.exp (default_gdb_exit): Remove `catch "close"'.
	* lib/gdb.exp: Transform tool name.
	* gdb.t*/*.exp: Change error to perror so it works with DejaGnu
	1.1's new error handling system.

Mon Nov  1 10:36:29 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in, gdb.t2*/Makefile.in: Add -O to CXXFLAGS.

Fri Oct 29 17:58:14 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/default.exp: Avoid tests with a lot of .* in them.
	They made pattern matching so slow that timeouts happened on
	heavily loaded systems.  Now any output from "show print" which
	gets us back to the GDB prompt is a PASS.

Mon Oct 25 14:36:50 1993  Stu Grossman  (grossman at cygnus.com)

	* gdb.disasm/hppa.mt:  Use $(srcdir) in hppa.o make rule.

Mon Oct 25 13:35:29 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.exp: Skip whole file with xfail for HPPA.

	* gdb.t24/demangle.exp: Remove "3220" from the one remaining xfail.
	It is not from PR 3220.

Sun Oct 24 18:49:58 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/{help.exp,default.exp}: Loosen up a few more tests which
	just started failing because they depended on the order the
	subcommands are presented, or exact docstring text.  This kind of
	test is a pain and has minimal benefit.

Thu Oct 21 08:26:48 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t09/corefile.exp: At end of test, use "core" command with
	no arguments.

Wed Oct 20 08:56:02 1993  Stu Grossman  (grossman at cygnus.com)

	* gdb.t{01 02 03 04 05 06 07 08 09 10 11 12 13 15 16
	17}/Makefile.in:  Make it possible to run the testsuite with Sun
	make and CC = cross gcc by adding explicit build rules for .o
	files.

Tue Oct 19 14:57:38 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t15/funcargs.exp: Don't put comments on same line as
	setup_xfail (@#$*%& tcl braindamage!).

Mon Oct 18 21:50:08 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.disasm/hppa.exp: Use $objdir/$subdir/$binfile not just $binfile.

Fri Oct 15 15:39:54 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* gdb.t20/classes.exp: 'const xxx &' becomes 'xxx const &'.
	* gdb.t20/inherit.exp: remove three dumplicate entries.

Fri Oct 15 13:45:25 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t06/break.exp: For "next over recursive call", fail on any
	incorrect output, not just on "factorial (value=2)".

Fri Oct 15 11:52:56 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t12/scope.exp:  Remove xfails, filename::var syntax should be
	working now. Add an xfail if accesing a bss variable causes
	a memory error if the target is not yet run.

Thu Oct 14 19:16:56 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Clean up spacing (2 strings), inclusion of
	constructor name (2 string), name of _GLOBAL_ demangling (2 strings),
	name of __st* demangling (2 strings).  Did Kung really get the
	more than 95 others right without testing them?

Thu Oct 14 16:27:08 1993  Kung Hsu  (kung@cirdan.cygnus.com)

	* gdb.t24/demangle.exp: clean up XFAILS, more than 100

Thu Oct 14 11:40:30 1993  Jeffrey Law  (law@cs.uah.edu)

	* configure.in (configdirs): Add gdb.disasm
	* gdb.disasm: New directory for GDB disassembler tests.
	* gdb.disasm/hppa.{exp,s,mt}: Disassembly tests for the HPPA.

Thu Oct 14 11:40:30 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/help.exp: Don't test "help set".

	* gdb.t20/inherit.exp, gdb.t22/virtfunc.exp: Remove all xfails
	from within expect statements.  None of these happen anymore and
	they cause regressions to be silently unnoticed.

	* gdb.t20/inherit.exp, gdb.t22/virtfunc.exp: Add notes (in failure
	messages) about known failures with gcc cygnus-2.4.5-930417.

	* gdb.t02/Makefile.in, gdb.t08/Makefile.in: Make all depend on
	comp-info.exp so it gets built if it doesn't exist.

	* gdb.t13/{Makefile.in,bitfields.exp}: Remove comp-info.exp stuff;
	it is no longer used.
	* gdb.t13/comp-info.c: Removed.

Wed Oct 13 22:54:06 1993  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.t06/signals.exp: Add xfail for sun3.

Thu Oct  7 12:01:03 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t17/interrupt.exp: Add xfail for Irix (currently not really
	relevant because ^C doesn't get sent but failure can be reproduced
	interactively).

Tue Oct  5 10:43:11 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.stabs/alpha.mt:  New configuration file for alpha.
	* gdb.stabs/configure.in:  Use it.
	* gdb.stabs/ecoff.mt, weird-ecoff.sed:  Change sed script to enable
	sharing with alpha.mt, redefine long to word via preprocessor.
	* gdb.stabs/weird.def:  Conditionally adapt storage layout of v_comb
	for alpha.
	* gdb.stabs/weird.exp:  Handle compilation of weird.s by alpha
	native cc.
	* gdb.t00/teststrategy.exp:  Change expect string so that we
	consume the `(xgdb)' from the command echo and from the gdb prompt.
	* gdb.t05/expr.exp:  xfail "print unsigned int == (~0)" on the alpha.
	gdb currently compares all values as long, so this failure probably
	applies to any configuration where LONGEST is bigger than a target int.
	* gdb.t08/comp-info.c:  New file to determine if gdbme is compiled
	with gcc.
	* gdb.t08/Makefile.in, opaque.exp:  Use it. Alpha native cc is unable
	to handle opaque pointers, gcc is.
	* gdb.t21/gdbme.cc, gdb.t23/gdbme.cc:  operator new takes a size_t
	as first argument. Include <sys/types.h> and change all operator
	new definitions to use size_t.
	* gdb.t21/cplusfuncs.exp:  Handle changes in output for operator new
	now that we use size_t.

Wed Sep 29 00:55:49 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

        * gdb.t03/ptype.exp, gdb.t15/printcmds.exp:  When constructing
	a long or float array cast all array members to the same type.
        * gdb.t04/setvar.exp:  Handle the decimal output of an unsigned long
	with 64 bit longs.
        * gdb.t07/watchpoint.exp:  Add finish and until variations encountered
	on alpha.
        * gdb.t08/opaque.exp, gdb.t17/interrupt.exp:  Add xfails for alpha.

Tue Sep 28 17:26:47 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24 (demangle.exp): Constructors of templates have names like
	vector<int>::vector(int) not vector<int>::vector<int>(int).  See
	section 14.6 of the ARM.

	* gdb.t24 (demangle.exp): Remove a whole bunch of tests of the form
	"_vt$MoveCmd"; these differ only in name from "_vt$foo", so they
	accomplish little and slow down the testsuite.

	* gdb.t24 (demangle.exp): Accept "XXX const" as well as "const XXX".
	Accept spaces various places.

Tue Sep 21 17:28:45 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t07/watchpoint.exp: On sparc, clear xfail for calling function
	with watchpoint enabled.

	* Makefile.in: Remove definition of CC and remove the second
	definition of CXX (the "CXX = gcc" one remains).  These definitions
	were causing backquotes to be expanded within backquotes, which
	doesn't work.

Sat Sep 18 09:43:21 1993  Jim Kingdon  (kingdon@poseidon.cygnus.com)

	* gdb.t17/callfuncs.exp: Add "return 0" to end.

Fri Sep 17 04:41:17 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

        * gdb.stabs/ecoff.mt:  Remove STABSCC hack.
        * gdb.stabs/weird.exp:  Handle the case where weird.o is compiled
	by mips cc and contains no stabs entries.

Thu Sep 16 17:22:12 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/vx-gdb.exp: Use fake device to load files rather than
	NFS.
	* lib/gdb.exp: New proc to do "file" command.
	* config/unix-gdb.exp: Use new "file" proc.

Thu Sep 16 13:45:44 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* config/mips-gdb.exp (gdb_load): Increase timeout to 2400.
	Rework board rebooting slightly.
	(gdb_exit): Don't exit from the remote shell; there isn't one.
	* gdb.stabs/weird.exp: If a program is being debugged already,
	kill it.
	* gdb.t04/setvar.exp: Stop and restart gdb.
	* gdb.t05/expr.exp: Likewise.
	* gdb.t07/watchpoint.exp: If target is mips-idt-*, stop and
	restart gdb and reload the program.
	* gdb.t08/opaque.exp: Likewise.
	* gdb.t12/scope.exp: Likewise.
	* gdb.t13/bitfields.exp: Likewise.
	* gdb.t15/funcargs.exp: Likewise.
	* gdb.t20/classes.exp: Likewise.
	* gdb.t03/ptype.exp: Increase timeout.
	* gdb.t16/printcmds.exp (test_print_string_constants,
	test_print_array_constants): Likewise.
	* gdb.t17/callfuncs.exp (do_function_calls): Likewise.
	* gdb.t20/classes.exp (do_tests): Likewise.
	* gdb.t22/virtfunc.exp (test_virtual_calls): Likewise.

Wed Sep 15 14:24:36 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.stabs: Renamed *wierd* to *weird*.

Wed Sep 15 10:36:50 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)

	* gdb.t13/bitfields.exp: Test for bad output rather than waiting
	for timeout.  Add "known gcc 2.4.5 bug" to failure message.

Tue Sep 14 17:16:44 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)

	* gdb.stabs/wierd.exp (print_wierd_var): Test size, not type name.
	(do_tests): Remove xfail for whatis on one_var and two_var.

Wed Sep  8 23:14:23 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* Makefile.in: Made cross building work better by adding
	{RUNTEST,CC}_FOR_TARGET and using TARGET_FLAGS_TO_PASS.

Tue Sep  7 14:11:52 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t15/{return.c,return.exp,Makefile.in}:
	New test, currently commented out.

Tue Aug 31 16:51:29 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* config/udi-gdb.exp: gdb_exit now kills any isstip processes
	still running and removes the leftover named socket so GDb can do
	clean restarts.

Mon Aug 30 17:55:16 1993  Rob Savoye  (rob@darkstar.cygnus.com)

	* gdb.t01/run.exp: Add match for VxWorks, cause I/O comes out the
	console, not GDB.
	* config/mt-*: Added default values for RUNTEST and RUNTESTFLAGS so
	cross testing works better with "make check"
	* config/unix-gdb: Use default procedures for exit and version.
	* config/vx-gdb.exp: Cleaned up and massaged back to working order
	with the newest VxWorks.

Thu Aug 26 17:50:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t20/classes.exp: For "ptype class Base1", continue to accept
	old form.

	* gdb.t22/virtfunc.exp: If it prints `struct' (not `class') with a
	name (e.g. devo gdb with gcc 2.4.5), it is still a pass.

	* gdb.t10/crossload.exp: Skip whole file (for now, until we fix it).

	* config/unix-gdb.exp: Remove this version of gdb_exit
	* lib/gdb.exp: Merge in all the crap from config/unix-gdb.exp.
	Rob says he'll look at it when he gets back to testing boards.

Thu Aug 26 07:20:00 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* gdb.t22/virtfunc.exp:  Accept missing struct/class names as
	an expected fail for certain ptype commands.

	* gdb.t20/classes.exp:  Update expected results of "ptype class
	Base1" to account for the constructor that now appears in the type.

Wed Aug 25 16:48:05 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* configure.in (configdirs):  Restore gdb.t04, which mysteriously
	disappeared from list.
	* config/{udi-gdb.exp, gdb-unix.exp}:  Replace calls to obsolete
	"alldone" proc with call to cleanup and exit.
	* {gdb.t01/run.exp, gdb.t01/term.exp, gdb.t02/whatis.exp,
	gdb.t03/ptype.exp, gdb.t04/setvar.exp, gdb.t05/expr.exp,
	gdb.t06/break.exp, gdb.t07/watchpoint.exp, gdb.t08/opaque.exp,
	gdb.t09/corefile.exp, gdb.t10/crossload.exp, gdb.t11/list.exp,
	gdb.t12/scope.exp, gdb.t13/bitfields.exp}:  Replace calls to
	"alldone" proc with simple returns that suppress remaining
	tests.  The alldone proc went away many months ago.

Tue Aug 24 11:04:06 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t10/nodebug.exp: Comment out "maint print msymbols" tests.

	* gdb.t12/gdbme0.c (localscopes, autovars): Modify to foil gcc -O.

Thu Aug 19 22:08:41 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t15/funcargs.exp:  Allow arguments for main in backtraces
	as vax gdb will display them.

Thu Aug 19 18:18:59 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t20/gdbme.cc: Do some calculation with v.x, to confound
	optimizers.

	* scope.exp: Change "bad value for localval" messages so each one
	is unique.

	* config/unix-gdb.exp (gdb_exit): Move info on this vs.
	lib/gdb.exp (gdb_exit) from ChangeLog to comments.

	* gdb.t06/signals.exp: Skip the whole file with xfail for delta68.

Tue Aug 17 00:05:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/teststrategy.exp: Deal with it if cmdsize = 1 line
	doesn't exist (due to optimization).

Mon Aug 16 21:05:49 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/wierd.exp: Deal with it if echo of "file" command
	contains \r because the filename is long.

	* gdb.t06/signals.exp: Revise comments regarding "'next' behaved as
	'continue'" bug, and change xfail back to i*86-univel-sysv4*.

Mon Aug 16 03:05:17 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t00/help.exp, gdb.t02/whatis.exp, gdb.t07/watchpoint.exp,
	gdb.t08/opaque.exp, gdb.t17/interrupt.exp:  Update for vax running
	Ultrix.
	* gdb.t02/whatis.exp:  Use procedure to setup xfails on long versus
	int tests.
	* gdb.t08/opaque.exp:  Use procedure to setup xfails for opaque tests.

Thu Aug 12 15:24:28 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* Makefile.in (distclean):  Remove *.log *.plog *.sum *.psum site.*.

	* gdb.t17/interrupt.exp:  Fix 'missing Continuing' case so pattern
	to match does not match the passing case but still matches the
	failing case.

Thu Aug 12 16:58:59 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Makefile.in (distclean): Remove *.plog *.sum *.psum site.*.

Wed Aug 11 19:47:27 1993  John Gilmore  (gnu@rtl.cygnus.com)

	* lib/gdb.exp (gdb_exit):  Move the best version of gdb_exit
	to here.  Fix 'Quit anyway.*?' bug (? is a regexp metacharacter).
	* config/{mips-gdb.exp, nind-gdb.exp, udi-gdb.exp, vx-gdb.exp}:
	Remove various versions of gdb_exit.
	* config/vx-gdb.exp:  Remove quit_vxgdb, change a caller to call
	gdb_exit.
	* config/unix-gdb.exp:  gdb_exit remains here, and should override
	the generic version, since it's doing a lot of wierd stuff that
	the other versions aren't.  FIXME, fold it in, or abandon this
	version.

Wed Aug 11 12:09:32 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Add tests for PR 3220.

Tue Aug 10 15:49:35 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t24/demangle.exp: Add lucid test for __vtbl__3foo__vt_cc_main_.

Tue Aug 10 15:45:25 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* gdb.t07/watchpoint.exp:  Clear xfail with "i*86-*-*", not just
	"i386-*-*".  Works for i486 as well.

	* gdb.t06/signals.exp:  Rework code that recognizes known SVR4
	bug, and expand domain of xfail to all SVR4 systems, since the
	actual problem is likely to be in generic SVR4 /proc support.

Tue Aug 10 15:49:35 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config/unix-gdb.exp (gdb_load): Add eof to expect statement.

Tue Aug 10 09:56:56 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* gdb.t17/interrupt.exp:  Set up xfail for *-*-sysv4*, in chain of
	xfails for other systems.  Match a missing 'Continuing.' as an
	explicit fail for i*86-*-sysv4*, so it doesn't hose other tests.

	* gdb.t20 {classes.exp, inherit.exp, misc.exp}, gdb.t21/cplusfuncs.exp,
	gdb.t22/virtfunc.exp, gdb.t23/templates.exp, gdb.t31/chillvars.exp:
	Only issue warning for missing executables if -all option is used.

	* gdb.stabs/wierd.exp:  Only issue warning for missing wierd.o
	file if -all option is used.  It's like an unpredictable XFAIL.

Mon Aug  9 10:13:34 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t15/funcargs.exp: Add comments that hppa xfails are only
	for dynamically linked binaries.

	* gdb.t10/crossload.exp: Add `set gnutarget auto' at end of tests.

Sun Aug  8 14:21:29 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t20/inherit.exp: Change message for "print tagless struct"
	to state that this is a known bug in old versions of g++.

Fri Aug  6 21:40:30 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t17/interrupt.exp:  Add xfail for 386 bsd. Accept echoed newline
	while waiting for `Continuing'.

Fri Aug  6 13:38:08 1993  Fred Fish  (fnf@deneb.cygnus.com)

	* gdb.t10/nodebug.exp:  Expect to find local/global minimal symbols
	in text, data, and bss.
	* gdb.t10/nodebug.c:  Add local and global test variables for
	initialized and uninitialized data.

Thu Aug  5 12:18:40 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config/unix-gdb.exp (gdb_exit): Add "wait".

Thu Aug  5 18:14:06 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t06/signals.exp:  xfail the continue from the handler for all
	targets.

	* gdb.t07/watchpoint.exp:  clear_xfail for i386 when calling a
	function with watchpoints enabled, the i386 call dummy starts with
	a call.

	* gdb.t00/teststrategy.exp, gdb.t09/Makefile.in:  Handle the way
	386 bsd names its corefiles.

Wed Aug  4 08:53:41 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t10/Makefile.in (nodebug.o):  Don't use "-c -o", many
	compilers don't grok it.
	* gdb.t16/gdbme.c (ctable1):  Initialize unsigned char array
	with small octal ints rather than character constants, which
	are signed and might not fit if first promoted to int.

Tue Aug  3 18:28:25 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t09/Makefile.in (clean):  Remove corefile.

Mon Aug  2 12:47:44 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t07/watchpoint.exp: Add missing `$prompt $'.

Mon Aug  2 12:30:14 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
			  and Jim Kingdon (kingdon@cygnus.com)

	* gdb.t06/signals.exp: Change xfail from "*-*-*" to be only for
	NO_SINGLE_STEP machines.  Fix comment about its cause.  Uncomment
	the `continue' test right after it (also xfailed if NO_SINGLE_STEP).

Fri Jul 30 19:46:55 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t17/interrupt.exp: Add xfail for hppa.

Fri Jul 30 12:54:11 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t02/whatis.exp, gdb.t03/ptype.exp, gdb.t08/opaque.exp,
	gdb.t09/corefile.exp:  Cleanup xfails for fixed mips bugs.
	* gdb.t13/bitfields.exp, gdbme.c:  Examine a variable in the inferior
	to determine signed-ness of bitfields and use the result to setup
	the xfail.
	* gdb.t15/gdbme.c:  Add comments to the two indirect call0a lines.
	* gdb.t15/funcargs.exp:  Use them to step until the second indirect
	call line is reached if necessary.

Thu Jul 29 20:33:08 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/wierd.exp: New test, for nameless baseclasses.

Mon Jul 26 00:15:02 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/break.exp: Also test `clear' command.

Wed Jul 21 18:03:38 1993  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* gdb.t00/teststrategy.exp: Remove extra quote.

	* gdb.t07/watchpoint.exp: Change xfail for calling function with
	watchpoint enabled to be for all non-68k machines.

	* gdb.t15/{mips_pro.{c,exp},Makefile.in}: New test.

Mon Jul 19 23:59:26 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.stabs/configure.in: If configured -with-gnu-as for mips-*-*
	targets use aout.mt instead of ecoff.mt as gas understands
	standard aout format.

Mon Jul 19 18:14:06 1993  Jim Kingdon  (kingdon@deneb.cygnus.com)

	* lib/gdb.exp (runto): Don't insist that function we are running to
	was compiled with -g.

	* gdb.t10/{nodebug.{c,exp},Makefile.in}: New test.

	* gdb.t17/interrupt.exp: Before sending ^C, give the inferior time
	to get back into the read system call.
	Accept leading newline in case where we woke it up.

Sun Jul 18 08:40:45 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.stabs/{ecoff.mt,wierd-ecoff.S,wierd-ecoff.sed}:  New files
	to make the stabs test work on ecoff systems using gcc and -with-stabs.
	* gdb.stabs/{Makefile.in,configure.in,aout.mt,xcoff.mt}:  Modify to
	enable ecoff configuration.

Thu Jul 15 11:54:58 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t15/funcargs.exp (localvars_in_indirect_call): New test.

Wed Jul 14 09:36:42 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t16/printcmds.exp: Add another printf test.

Wed Jul 14 15:37:13 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in: If configured -with-stabs on any target, add
	stabsdirs to configdirs.

Wed Jul 14 09:36:42 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t16/printcmds.exp: Change printf "%f\n" to printf "%f is
	fun" so pattern does not match the command itself.

Mon Jul 12 11:22:06 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t15/{gdbme.c,funcargs.exp}: Test for alloca-influenced frames.

Sun Jul 11 12:03:24 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t17/interrupt.exp: Test for more things.

Fri Jul  9 14:11:17 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t07/watchpoint.exp: In until test, deal with the way the DEC
	compiler arranges the code and line numbers.

	* gdb.t17/interrupt.exp: Don't send \n after ^C.

Fri Jul  9 09:47:02 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t00/help.exp:  Increase expect input buffer size.

Thu Jul  8 14:26:50 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.exp: Remove sparc xfail; bug fixed.

	* gdb.t07/watchpoint.exp: Add xfail for hppa.

	* gdb.t17/{gdbme.c,callfuncs.exp}: Add sum10 function, to test pa bug.

	* gdb.t06/signals.exp: At "p func1 ()" test, check for breakpoint
	[0-9]*, not just [0-9].

Wed Jul  7 17:52:28 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t20/{gdbme.cc,classes.exp}: Add xfail for gdb/2972.

	* gdb.t2*: Set CXXFLAGS, not CFLAGS, since that's what we use.

Tue Jul  6 13:54:49 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/help.exp: Replace most of docstring for "continue" with .*.

Mon Jul  5 22:03:45 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.c: Add xfails for sun3.

	* gdb.t07/watchpoint.exp: Comment out xfail for fixed bug 1836.

	* gdb.t07/{gdbme.c,watchpoint.exp}: Add test for 2597.  Also add
	test_stepping tests.

Fri Jul  2 09:08:10 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t{06,17}/Makefile.in (clean): Remove all executables.

	* gdb.t17/{interrupt.{c,exp},Makefile.in}: New test for solaris bug.

	* gdb.t06/twice.exp, Makefile.in: Just use an include of twice.c
	rather than actually putting it through cpp twice.

	* gdb.t06/signals.exp: Add xfails for unixware and rs6000.

Fri Jul  2 10:48:03 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/mips-gdb.exp (gdb_exit): Removed close statement which is
	no longer needed.

Fri Jul  2 09:08:10 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t06/signals.exp: Add test for sparc bug with do_save_insn.

	* gdb.t20/{classes,inherit}.exp: If a class which doesn't use any
	C++ features prints as "struct", make it a pass, not an xfail.

Thu Jul  1 22:03:33 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t22/virtfunc.exp: Remove a bunch of xfails.
	Don't require VA to print as "class" rather than "struct".

Thu Jul  1 18:27:40 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.t06/twice.exp: Don't care about the file name GDB prints.

Wed Jun 30 18:01:00 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t{02,13}/comp-info.c, gdb.t06/twice.exp: Add "return 0" to end.

Tue Jun 29 13:15:42 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t12/scope.exp:  Remove xfail for parameter printing in wrong
	order.

Tue Jun 29 09:22:29 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t16/printcmds.exp: Add printf tests.

	* gdb.t06/{twice.{c,exp},Makefile.in}: New test.

	* gdb.t10/Makefile.in (clean): Remove $(EXECUTABLES) too.

Mon Jun 28 11:25:59 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t20/classes.exp:  Add clear_xfail's before printing summary
	pass counts, to counteract any existing or future setup_xfails.

Mon Jun 28 09:15:17 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/wierd{.def,-aout.S,-xcoff.S}: Use new macros
	{BEGIN,END}_COMMON for common block instead of STAB.
	* gdb.stabs/wierd.exp: Add xfail for rs6000.

	* gdb.stabs/wierd.def: Make value of N_GSYM's 0.
	intp_var should be N_GSYM not N_LSYM.
	wierd-aout.S: Use a label for the value of the N_SO.
	wierd.def: Remove all backslashes.
	wierd-{aout,xcoff}.S: Put a few tests with backslashes here.

Mon Jun 28 07:21:51 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t20/gdbme.cc (main): Move variable initialization for AIX to
	get the expected next to inheritance3.

Sun Jun 27 12:29:53 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t00/teststrategy.exp: Remove expected failure for mips-*-*
	now that gcc-2.4 gets it right.

Fri Jun 25 12:00:46 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.stabs/wierd{.def,.exp,-aout.S,-xcoff.S}: Add common block test.

	* gdb.t{02,13}/{Makefile.in,gdbme.c,comp-info.c}: New way of
	generating comp-info.exp which works for cross-compilation.

Thu Jun 24 16:55:05 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t11/list.exp:  For SVR4 xfails, match "*-*-sysv4*", not
	"*-*-sysv4.*".

Tue Jun 22 21:17:26 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t01/run.exp:  Start with a fresh gdb.
	* gdb.t11/list.exp:  For SVR4 xfails, match on all versions of
	SVR4.x.

Mon Jun 21 15:23:22 1993  Fred Fish  (fnf@cygnus.com)

	* {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.t17, gdb.t20, gdb.t21, gdb.t22, gdb.t23, gdb.t30}/
	Makefile.in (distclean, realclean):  Remove gdbme.c from list of
	things to remove.

Sat Jun 19 07:49:10 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t24/demangle.exp (test_gnu_style_demangling):  Add some new
	test cases from bug reports.

Fri Jun 18 10:38:49 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t06/break.exp:  Add xfails for sparc-sun-solaris2.*.
	* gdb.t12/scope.exp:  Add clear_xfails at appropriate places to
	  avoid spurious xfails.
	* gdb.t20/classes.exp:  Add xfails for longstanding C++ problems.
	* gdb.t21/cplusfuncs.exp:  Add xfails for sparc-sun-solaris2.*.
	* gdb.t22/virtfunc.exp:  Add xfails for longstanding C++ problems.

Wed Jun 16 10:11:57 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/teststrategy.exp:  Rework to provide more useful
	description of each test, fix problem with systems that define
	ALIGN_STACK_ON_STARTUP code, other misc cleanups.
	* gdb.t06/break.exp (test_next_with_recursion):  Fix expected
	results for "next over recursive call" so timeouts aren't taken
	by error.

Mon Jun 14 09:09:04 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.t12/scope.exp: Test printing of variables before run.

	* gdb.t12/{gdbme0.c,scope.exp}: Test for bug where parameters are
	printed in wrong order due to sorting.

Sat Jun 12 15:03:58 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/teststrategy.exp:  Fix expected results for printing
	user entered string constant.  Is array of char, prints with no
	address.

	* gdb.t00/{default.exp, help.exp}:  Account for changes to radix
	commands.
	* gdb.t16/gdbme.c:  Add and use struct containing arrays of char.
	* gdb.t16/printcmds.exp:  Fix all lines that match "unsigned char *".
	* gdb.t16/printcmds.exp (test_print_char_arrays):  Test printing
	of struct of char arrays.
	* gdb.t00/radix.exp:  New tests for radix commands.

Fri Jun 11 13:12:27 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.t16/printcmd.exp: Print a variable before running program
	(with xfail for AIX).

Thu Jun 10 11:04:04 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.t06/{signals.exp,signals.c,Makefile.in}: New test.

	* gdb.t16/printcmd.exp: Don't print variables before running program.

	* gdb.t06/break.exp: Don't require envp argument to main.

	* gdb.t0{2,3,4,5}/gdbme.c [_AIX]: Use signed keyword.

	* gdb.t02/whatis.exp, gdb.t11/list.exp:
	Add xfails for rs6000.

	* gdb.t02/whatis.exp: Change other tests not to re-test something
	we already tested.

	* gdb.t{03,15,16}/gdbme.c: Reference all variables and make sure
	each type used has a variable of that type.

Tue Jun  8 16:45:20 1993  Jim Kingdon  (kingdon@rtl.cygnus.com)

	* gdb.t20/{inherit.exp,gdbme.cc}: Test tagless structure.

Fri Jun  4 11:07:19 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* configure.in: change srctrigger to be a file, not a directory

Fri Jun  4 08:23:57 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in (mips-idt-ecoff*): Added trailing '*'.

	* gdb.t11/list.exp: Fixed a couple of typos.

Tue Jun  1 21:28:06 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00 (teststrategy.exp):  Remove notice about PR 1823.  Bug
	is fixed and PR is closed.
	* gdb.t16 (gdbme.c):  Add simple test string variable.
	* gdb.t16 (printcmds.exp):  Add tests with simple test string
	variable, primarily for boundaries on "set print elements".

Mon May 31 11:36:08 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.stabs/wierd.exp: Remove xfail for printing big integer.
	Make leading 0's optional and don't expect a tab in the middle
	of the number.

	* gdb.t00/teststrategy.exp: Remove xgdb before trying the copy.

	* gdb.stabs/wierd.def: Type attributes must be preceded by number=.
	* gdb.stabs/wierd.exp: Remove xfails for type attributes.  Also
	don't end command passed to gdb_test with newline.

	* gdb.t13/{Makefile.in,gdbme.c,bitfields.exp}: If we #defined the
	signed keyword away, don't expect signed bitfields to be signed.

	* gdb.t13/bitfields.exp (bitfield containment): Accept the fields
	printing with only as many 1's as are in the field as well as printing
	with 32 1's (see comment).

Sat May 29 17:57:01 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/default.exp:  Start with a fresh gdb.
	* configure.in (configdirs):  Remove gdb.t31 until the chill
	compiler works again.  It no longer is able to find chillrt0
	since it isn't in libchill.a anymore.
	* gdb.stabs/wierd.exp:  Rewrite to properly handling a missing
	wierd.o, make more modular.
	* gdb.stabs/wierd.def (bad_neg0type, bad_neg0const):  Remove
	spurious newlines that caused problems.

Wed May 26 09:57:19 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* Move test with enums and partial symbols from gdb.t03/ptype.exp
	to gdb.stabs/wierd.exp since GCC has worked around the bug.
	gdb.stabs/wierd.{exp,def}: Many new tests.

	* gdb.t00/default.exp: update info line for new message.

	* gdb.t02/{whatis.exp,gdbme.c}:
	Test that "char *" doesn't print as "caddr_t".

Tue May 25 13:28:27 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t00/help.exp: Use .* in place of some help messages which
	just changed.
	gdb.t00/default.exp: Update "info frame" test for new message.
	* gdb.stabs/wierd.exp: Check for eof, directly or via gdb_test.
	Remove some xfails

Mon May 24 00:24:47 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* gdb.t03/{gdbme.c,ptype.exp}:
	Add tests for typedef'd struct and union without tags.
	Also check "whatis" on a variable of a typedef'd enum without a tag.

	* gdb.t00/teststrategy.exp: For p "foo", remove sun4 XFAIL (see
	PRMS 1823; the bug still exists but isn't reproduced by this test
	anymore), and remove rs6000 XFAIL (the bug is fixed).

	* gdb.t03/ptype.exp: Comment out a lot of tests which are basically
	duplicated from whatis.exp.  For those that are left, accept
	"long", "long int", or "int" for long variables (whatis.exp already
	has an XFAIL for "int", so no need to fail it here).

	* gdb.t02/whatis.exp, gdb.t10/crossload.exp:
	Deal with GCC's names for types now that GDB uses the compiler's names.

	* gdb.t02/{Makefile.in,gdbme.c,whatis.exp}:  If not GCC, do some
	setup_xfail's for sunos4.  If we #defined the signed keyword away,
	don't expect GDB to know that char it is signed.

	* gdb.t00/teststrategy.exp: Update for symbolic signal names.

Sun May 23 08:44:55 1993  Fred Fish  (fnf@cygnus.com)

	* configure.in (configdirs):  Add gdb.t24 for C++ tests that
	should work on any system, regardless of debugging format.
	* gdb.t21/demangle.exp:  Move to gdb.t24.
	* gdb.t24/demangle.exp:  Move from gdb.t21.
	* gdb.t24/{Makefile.in, configure.in}:  New files.

Thu May 20 19:39:03 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* configure.in: Do gdb.stabs and C++ tests only for stabs.
	* gdb.stabs: New directory.

Tue May 18 21:12:09 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)

	* config/{mips,nind,udi,unix,vx}-gdb.exp: Look for "Quit anyway.*?"
	not just "Quit anyway?".

Tue May 18 17:13:20 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp:  Add a couple of new patterns.  Ensure
	that all setup_xfails are immediately followed by clear_xfails.

Tue May 11 09:10:47 1993  Fred Fish  (fnf@cygnus.com)

	* config/unix-gdb.exp, gdb.t00/echo.exp, gdb.t00/help.exp,
	gdb.t00/teststrategy.exp, gdb.t00/gdbvars.exp, gdb.t01/run.exp,
	gdb.t01/term.exp, gdb.t02/whatis.exp, gdb.t03/ptype.exp,
	gdb.t04/setvar.exp, gdb.t05/expr.exp, gdb.t06/break.exp,
	gdb.t07/watchpoint.exp, gdb.t08/opaque.exp, gdb.t09/corefile.exp,
	gdb.t10/crossload.exp, gdb.t11/list.exp, gdb.t12/scope.exp,
	gdb.t13/bitfields.exp, gdb.t15/funcargs.exp, gdb.t16/printcmds.exp,
	gdb.t17/callfuncs.exp, gdb.t20/misc.exp, gdb.t20/inherit.exp,
	gdb.t20/classes.exp, gdb.t21/demangle.exp, gdb.t21/cplusfuncs.exp,
	gdb.t22/virtfunc.exp, gdb.t23/templates.exp, gdb.t30/chexp.exp,
	gdb.t31/chillvars.exp, lib/gdb.exp:
	Change place to report bugs from bug-dejagnu@prep.ai.mit.edu to
	bug-gdb@prep.ai.mit.edu.

Fri May  7 09:15:35 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t17/callfuncs.exp (do_function_calls):  Call t_double_values
	with 0.0, not integer 0.

Fri Apr 30 13:17:24 1993  Jim Kingdon  (kingdon@cygnus.com)

	* gdb.t06/break.exp: Update for "Kill the program" message change.

Fri Apr 30 09:42:57 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (GDBFLAGS):  Set to -nx.
	* Makefile.in (site.exp):  Use GDBFLAGS.

Wed Apr 28 13:19:07 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	* */Makefile.in (CFLAGS): add CFLAGS = -g to all subdirectory
	  Makefiles.
	  (check): depend on just-check.
	  (just-check): added so that tests can be run without a noop
	  build pass.

Fri Apr 23 18:13:28 1993  K. Richard Pixley  (rich@rtl.cygnus.com)

	Switch to using configure's configdirs.
	* Makefile.in (Makefile): add configure.in dependency.
	  (SUBDIRS): removed redundant assignment.
	* configure.in: switch subdirs assignment to configdirs.
	* gdb.t*/configure.in: new files.

Thu Apr 22 08:27:53 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t07/watchpoint.exp: Removed a29k expected failure which now
	works.

Tue Apr 20 13:38:40 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.{t20,t21,t22,t23}/Makefile.in:  Use $(srcdir) to avoid $<
	in explicit rules.  Apparently this is not supported by some makes.

Mon Apr 19 01:54:53 1993  John Gilmore  (gnu@cygnus.com)

	* gdb.t31/Makefile.in:  Use $(srcdir) when avoiding $<, sigh.

Fri Apr 16 09:33:46 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* config/unix-gdb.exp:  Add back missing return 0 which mysteriously
	disappeared.

Thu Apr 15 02:28:24 1993  John Gilmore  (gnu@cacophony.cygnus.com)

	* gdb.t31/Makefile.in:  Avoid $< in explicit rule.

Wed Apr 14 16:38:47 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t07/watchpoint.exp:  Remove setup_xfail for i486
	watchpoint problem that is now fixed.
	* gdb.t30/chexp.exp:  Remove setup_xfail for printing
	uninitialized convenience variables.
	* gdb.t31/chillvars.exp:  Fix expected patterns for printing
	structures.

Wed Apr 14 12:55:58 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t00/help.exp: Compensate for bug in mips-*-ultrix* OS
	which causes expect to get out of sync with gdb on long output
	from help set.
	* gdb.t09/corefile.exp: Make expected pattern for core file
	failing signal and frame output format less sun specific.

Tue Apr 13 23:18:07 1993  Per Bothner  (bothner@cygnus.com)

	* gdb.t31/chillvars.exp:  Add and remove initial dummy
	breakpoint, so that symbol table is forced in.
	(Needed at least on Sunos4, though it seems not SVR4.)
	* gdb.t31/chillvars.exp:  Update for changed output format.

Sun Apr 11 17:21:45 1993  Rob Savoye  (rob at darkstar.cygnus.com)

        * config/unix-gdb.exp: Gracefully exits if $GDB is a bogus path.

Wed Apr  7 21:28:21 1993  Rob Savoye  (rob@cygnus.com)

	* Makefile.in: Added --srcdir when invoking runtest, removed the
	need for a local config file. (optional now)

Wed Apr  7 14:13:41 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp:  Only count real fails (not xfails) for
	failure count used to force early termination.  Add some more
	expected failures for gnu style demangling.

Thu Apr  1 09:50:30 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* Makefile.in (CXXFLAGS): Remove -O. It caused the debug info for the
	pmi variable from gdb.t20/gdbme to get optimized away.
	* gdb.t00/teststrategy.exp: Added expected failure for mips-*-*.
	Check for written corefile upon timeout _and_ eof.

Tue Mar 30 09:58:16 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* config/unix-gdb.exp:  Add missing return 0.

Tue Mar 30 08:34:25 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)

	* gdb.t16/printcmds.exp:  Remove misplaced xfail that caused an early
	test termination.

Mon Mar 29 17:37:25 1993  Fred Fish  (fnf@cygnus.com)

	* configure.in (subdirs):  Put back gdb.t17 which mysteriously
	disappeared.

Thu Mar 25 21:05:16 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t10/crossload.exp:  Disable the i860-elf test until such
	time as i860 support works.

	* gdb.t15/funcargs.exp:  Fix expected outputs to include
	"backtrace 100\r" rather than just "backtrace\r", to match last
	change.

Thu Mar 25 12:14:28 1993  Ian Lance Taylor  (ian@cygnus.com)

	* config/udi-gdb.exp (gdb_exit): Remove close command.
	(gdb_target_udi): New procedure to set the UDI target.
	(gdb_start): Don't remove *_soc files.  Use gdb_target_udi.
	* gdb.t00/default.exp: Added expected failures for a29k-*-udi.
	Added waits for prompts after several question responses.  Added
	some more responses used by a29k-amd-udi-gdb.
	* gdb.t01/run.exp, gdb.t06/break.exp: Added a29k-*-udi support:
	pass different arguments, restart UDI connection after program
	completion.
	* gdb.t02/whatis.exp, gdb.t03/ptype.exp, gdb.t07/watchpoint.exp,
	gdb.t08/opaque.exp, gdb.t11/list.exp, gdb.t12/scope.exp,
	gdb.t15/funcargs.exp, gdb.t16/printcmds.exp, gdb.t20/misc.exp,
	gdb.t21/cplusfuncs.exp: Added expected failures for a29k-*-*.
	* gdb.t04/setvar.exp, gdb.t05/expr.exp, gdb.t07/watchpoint.exp,
	gdb.t08/opaque.exp, gdb.t12/scope.exp, gdb.t13/bitfields.exp,
	gdb.t15/funcargs.exp, gdb.t16/printcmds.exp,
	gdb.t17/callfuncs.exp, gdb.t20/classes.exp, gdb.t20/inherit.exp,
	gdb.t20/misc.exp, gdb.t22/virtfuncs.exp: Restart UDI connection
	after program completion.
	* gdb.t10/crossload.exp: Does not work for a29k-*-*, since BFD is
	compiled with a SELECT_VECS setting.
	* gdb.t15/funcargs.exp: Use argument to backtrace to prevent
	infinite recursion.

	* gdb.t20/classes.exp, gdb.t20/inherit.exp, gdb.t22/virtfuncs.exp:
	Added checks for COFF results, and made them expected failures for
	all targets.  It would be better to make them expected failures
	for COFF targets only.

Wed Mar 24 14:43:38 1993  david d `zoo' zuhn  (zoo at poseidon.cygnus.com)

	* Makefile.in: add null dvi target, don't bother to recurse
	through test directories for info and install-info; rename
	$(datadir) to be dejagnu instead of deja-gnu

Wed Mar 24 09:48:03 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t31/gdbme.ch:  Re-enable code that previously caused
	compiler to coredump.
	* gdb.t31/chillvars.exp:  Re-enable tests that depend on that
	code.

Tue Mar 23 08:53:42 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t31/gdbme.ch:  Comment out code that causes chill compiler
	coredump.
	* gdb.t31/chillvars.exp:  Comment out tests that depend on that
	code.

Sun Mar 21 17:56:47 1993  Rob Savoye  (rob at darkstar.cygnus.com)

	* gdb.t03/ptype.exp: tests for return code from gdb_test.
	* gdb.t00/teststrategy.exp: Uses which proc rather than spawning
	which in a shell. Deletes xgdb when done.
	* config/unix-gdb.exp: Won't try to spawn $GDB unless it exists.
	Tests the return from the "set height" or "set width" commands.
	Added a few return codes where needed.

Wed Mar 17 11:31:01 1993  Fred Fish  (fnf@cygnus.com)

	* Makefile.in (SUBDIRS):  Add gdb.t17.
	* configure.in (subdirs):  Add gdb.t17.
	* gdb.t17/{Makefile.in, callfuncs.exp, gdbme.c}:  New test
	files to test gdb's calling of functions in the inferior with
	the correct arguments and gdb's ability to retrieve any
	result returned.

Tue Mar 16 15:37:11 1993  Fred Fish  (fnf@cygnus.com)

	* config/unix-gdb.exp (gdb_exit):  Remove close commands that
	may be called after gdb goes away.  Previous versions of expect
	needed these to avoid file descriptor leaks, but they cause
	errors with the current revision of expect.
	* gdb.t00/gdbvars.exp:  Use -re on expected output after
	setting sevenbit-strings.
	* gdb.t04/setvar.exp, gdb.t13/bitfields.exp:  Make commands
	to set sevenbit-strings consistent across tests.
	gdb.t30/chexp.exp, gdb.t31/chillvars.exp:  Make commands to
	set sevenbit-strings consistent across tests.

Fri Mar 12 08:47:20 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t21/demangle.exp (proc demangle):  Adjust quotes in an
	expected output to match current "expect" expectations.

Wed Mar 10 18:01:49 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/default.exp:  Change expected output for default "source"
	command, to match new gdb behavior which requires a filename to
	source.

Tue Mar  9 11:00:56 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t07/watchpoint.exp (test_simple_watchpoint):  Set up
	expected fail for i486-*-* that misses the marker2 function.
	* gdb.t10/crossload.exp (bfddefault):  Allow successful
	recognition of a format to pass even if no symbols are found.
	Explicitly catch failures where the format is not recognized
	or is ambiguous, and add the reason to the fail message.
	* gdb.t10/crossload.exp (bfdexplicit):  Catch failure where
	the cause is and invalid target and add reason to failure message.
	* gdb.t10/crossload.exp:  Fix bfd target names for elf32-m68k,
	elf32-i386, elf32-sparc, and elf32-i860.
	* gdb.t12/scope.exp (test_at_main, test_at_foo, test_at_bar):
	Set up expected failure for 'filename'::variable scope resolution,
	which is now apparently broken on all targets.
	* gdb.t20/classes.exp, gdb.t20/inherit.exp, gdb.t20/misc.exp,
	gdb.t21/cplusfuncs.exp, gdb.t22/virtfunc.exp,
	gdb.t23/templates.exp:   Change failure for missing binfile into
	just a warning.
	gdb.t21/demangle.exp:  Change all cfront references to 'arm'
	references.

Mon Mar  8 19:20:28 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/default.exp:  Add expected output for default "source"
	command, to match new gdb behavior.
	* gdb.t09/corefile.exp:  Use GDBFLAGS when spawning GDB.

Sun Mar  7 15:14:09 1993  Rob Savoye  (rob@cygnus.com)

	* config/*-gdb.exp: returns an error, rather than exiting on
	internal errors.

Tue Mar  2 18:09:32 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t03/gdbme.c:  Add pointer to struct variable.
	* gdb.t03/ptype.exp:  Test equivalence of '.' and '->' for
	referencing struct members.

Thu Feb 25 10:39:06 1993  Ian Lance Taylor  (ian@cygnus.com)

	* configure.in (mips-idt-ecoff): New target.
	* config/mips-gdb.exp: New file for remote board using MIPS remote
	debugging protocol.

	* Redid configuration scheme.  Removed gdb.t*/configure.in.
	Renamed gdb.t*/in-gdbme* to gdb.t*/gdbme*.  Changed to use CC, CXX
	instead of CC_FOR_TARGET, CXX_FOR_TARGET.  Added mostlyclean and
	distclean targets.  Built executables via .o files.  Adjusted
	tests to account for source files in $(srcdir) rather than
	$(objdir).
	* lib/gdb.exp (runto): Don't expect () after the function name,
	because it may have arguments.

Wed Feb 24 08:05:38 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gdb.t00/default.exp, gdb.t01/run.exp, gdb.t02/whatis.exp,
	gdb.t03/ptype.exp, gdb.t06/break.exp, gdb.t12/scope.exp: Added
	expected failures for mips-idt-* and mips-sgi-*.
	* gdb.t00/default.exp (attach): Kill process if requested.
	* gdb.t00/help.exp (help target core, help target): Accept a gdb
	that does not read core files.
	* gdb.t01/run.exp: Removed checks for exit status code.
	* gdb.t03/in-gdbme.c: Make explicit call to malloc to ensure that
	it is linked in.
	* gdb.t03/ptype.exp: Increase timeout when calling malloc.
	* gdb.t04/setvar.exp, gdb.t05/expr.exp: Use runto function where
	appropriate, rather than doing it by hand.
	* gdb.t07/watchpoint.exp: If mips-idt-*, reload file after first
	execution.
	* gdb.t10/crossload.exp: Kill existing program if needed.
	* gdb.t15/funcargs.exp: Use delete_breakpoints function where
	appropriate, rather than doing it by hand.  Always increase
	timeout for this test, not just for VxWorks.

Wed Feb 24 08:03:38 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t31/chillvars.exp (test_structs):  New proc to test printing
	of Chill STRUCT types and STRUCT values.
	* gdb.t31/chillvars.exp (test_strings):  Expect "CHAR" now, rather
	than "char".
	* gdb.t31/in-gdbme.ch (simple_struct, nested_struct, struct1,
	struct2):  New struct definitions and initializations to test
	simple Chill STRUCT types.

Tue Feb 23 11:55:06 1993  Fred Fish  (fnf@cygnus.com)

	* gdb.t00/teststrategy.exp:  Track reversion in gdb to not print
	the null byte at the end of strings.
	* gdb.t00/default.exp:  Make show version insensitive to copyright
	date.
	* gdb.t16/in-gdbme.c (ctable1, ctable2):  Make explicitly unsigned
	to avoid dependencies on target char signedness.
	* gdb.t16/printcmds.exp:  Update expected results for explicitly
	unsigned char.
	* gdb.t16/printcmds.exp:  Remove setup_xfails for i960 that should
	now work.
	* gdb.t21/demangle.exp:  Add many more patterns for template
	demangling, most of them being expected failures.
	* gdb.t21/demangle.exp (proc demangle):  Quote the demangled
	string we are matching for, to match on the whole string.
	* gdb.t21/demangle.exp:  Add many new test strings to demangle,
	and fix a whole bunch that had incorrect expected output but were
	passing anyway because of the bug in "proc demangle".
	* gdb.t31/chillvars.exp:  Remove setup_xfail for printing string
	type.
	* gdb.t31/in-gdbme.ch:  Uncomment string4, now compiles.

Mon Feb 22 07:54:03 1993  Mike Werner  (mtw@poseidon.cygnus.com)

        * gdb/testsuite: made modifications to testcases, etc., to allow
        them 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 10:55:55 1993  Mike Werner  (mtw@poseidon.cygnus.com)

	* gdb/testsuite: Initial creation of gdb/testsuite.
	Migrated dejagnu testcases and support files for testing nm to
	gdb/testsuite from deja-gnu.  These files were moved "as is"
	with no modifications.  This migration is part of a major overhaul
	of dejagnu.  The modifications to these testcases, etc., which
	will allow them to work with the new version of dejagnu will be
	made in a future update.

 For additional changes see gdb.mi/ChangeLog-1999-2003.

;; Local Variables:
;; mode: change-log
;; left-margin: 8
;; fill-column: 74
;; version-control: never
;; End:

    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
    2003, 2004, 2005 Free Software Foundation, Inc.
  Copying and distribution of this file, with or without modification,
  are permitted provided the copyright notice and this notice are preserved.
