2006-08-18  Fred Fish  <fnf@specifix.com>

	* lib/gdb.exp (skip_altivec_tests): Fix apparent typo,
	'$' in front of skip_vmx_tests_saved when setting that.

2006-08-10  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/trace-commands.exp: New file.

2006-08-10  Joel Brobecker  <brobecker@adacore.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/step-bt.exp: Make hexadecimal address optional in
	expected output of the backtrace commands.

2006-08-09  Joel Brobecker  <brobecker@adacore.com>

	* gdb.arch/altivec-abi.exp: Replace gdb_suppress_entire_file with
	untested followed by return combination.
	* gdb.arch/altivec-regs.exp: Likewise.
	* gdb.arch/e500-abi.exp: Likewise.
	* gdb.arch/e500-regs.exp: Likewise.
	* gdb.arch/gdb1291.exp: Likewise.
	* gdb.arch/gdb1431.exp: Likewise.
	* gdb.arch/gdb1558.exp: Likewise.
	* gdb.arch/i386-prologue.exp: Likewise.
	* gdb.arch/i386-unwind.exp: Likewise.
	* gdb.asm/asm-source.exp: Likewise.
	* gdb.base/a2-run.exp: Likewise.
	* gdb.base/advance.exp: Likewise.
	* gdb.base/all-bin.exp: Likewise.
	* gdb.base/annota1.exp: Likewise.
	* gdb.base/annota3.exp: Likewise.
	* gdb.base/args.exp: Likewise.
	* gdb.base/arithmet.exp: Likewise.
	* gdb.base/assign.exp: Likewise.
	* gdb.base/async.exp: Likewise.
	* gdb.base/attach.exp: Likewise.
	* gdb.base/bang.exp: Likewise.
	* gdb.base/bigcore.exp: Likewise.
	* gdb.base/bitfields.exp: Likewise.
	* gdb.base/bitfields2.exp: Likewise.
	* gdb.base/break.exp: Likewise.
	* gdb.base/call-sc.exp: Likewise.
	* gdb.base/call-strs.exp: Likewise.
	* gdb.base/callfuncs.exp: Likewise.
	* gdb.base/checkpoint.exp: Likewise.
	* gdb.base/chng-syms.exp: Likewise.
	* gdb.base/code-expr.exp: Likewise.
	* gdb.base/commands.exp: Likewise.
	* gdb.base/completion.exp: Likewise.
	* gdb.base/cond-expr.exp: Likewise.
	* gdb.base/condbreak.exp: Likewise.
	* gdb.base/consecutive.exp: Likewise.
	* gdb.base/constvars.exp: Likewise.
	* gdb.base/corefile.exp: Likewise.
	* gdb.base/cvexpr.exp: Likewise.
	* gdb.base/dbx.exp: Likewise.
	* gdb.base/define.exp: Likewise.
	* gdb.base/detach.exp: Likewise.
	* gdb.base/display.exp: Likewise.
	* gdb.base/dump.exp: Likewise.
	* gdb.base/ena-dis-br.exp: Likewise.
	* gdb.base/ending-run.exp: Likewise.
	* gdb.base/environ.exp: Likewise.
	* gdb.base/eval-skip.exp: Likewise.
	* gdb.base/exprs.exp: Likewise.
	* gdb.base/fileio.exp: Likewise.
	* gdb.base/finish.exp: Likewise.
	* gdb.base/float.exp: Likewise.
	* gdb.base/foll-exec.exp: Likewise.
	* gdb.base/foll-fork.exp: Likewise.
	* gdb.base/foll-vfork.exp: Likewise.
	* gdb.base/freebpcmd.exp: Likewise.
	* gdb.base/funcargs.exp: Likewise.
	* gdb.base/gcore.exp: Likewise.
	* gdb.base/gdb1090.exp: Likewise.
	* gdb.base/gdb1250.exp: Likewise.
	* gdb.base/huge.exp: Likewise.
	* gdb.base/info-proc.exp: Likewise.
	* gdb.base/interrupt.exp: Likewise.
	* gdb.base/jump.exp: Likewise.
	* gdb.base/langs.exp: Likewise.
	* gdb.base/lineinc.exp: Likewise.
	* gdb.base/list.exp: Likewise.
	* gdb.base/logical.exp: Likewise.
	* gdb.base/long_long.exp: Likewise.
	* gdb.base/macscp.exp: Likewise.
	* gdb.base/maint.exp: Likewise.
	* gdb.base/mips_pro.exp: Likewise.
	* gdb.base/miscexprs.exp: Likewise.
	* gdb.base/multi-forks.exp: Likewise.
	* gdb.base/opaque.exp: Likewise.
	* gdb.base/overlays.exp: Likewise.
	* gdb.base/pc-fp.exp: Likewise.
	* gdb.base/pointers.exp: Likewise.
	* gdb.base/printcmds.exp: Likewise.
	* gdb.base/psymtab.exp: Likewise.
	* gdb.base/ptype.exp: Likewise.
	* gdb.base/recurse.exp: Likewise.
	* gdb.base/relational.exp: Likewise.
	* gdb.base/relocate.exp: Likewise.
	* gdb.base/remote.exp: Likewise.
	* gdb.base/reread.exp: Likewise.
	* gdb.base/restore.exp: Likewise.
	* gdb.base/return.exp: Likewise.
	* gdb.base/return2.exp: Likewise.
	* gdb.base/scope.exp: Likewise.
	* gdb.base/sect-cmd.exp: Likewise.
	* gdb.base/sep.exp: Likewise.
	* gdb.base/sepdebug.exp: Likewise.
	* gdb.base/setshow.exp: Likewise.
	* gdb.base/setvar.exp: Likewise.
	* gdb.base/sigall.exp: Likewise.
	* gdb.base/sigbpt.exp: Likewise.
	* gdb.base/signals.exp: Likewise.
	* gdb.base/signull.exp: Likewise.
	* gdb.base/sizeof.exp: Likewise.
	* gdb.base/solib.exp: Likewise.
	* gdb.base/step-line.exp: Likewise.
	* gdb.base/step-test.exp: Likewise.
	* gdb.base/structs.exp: Likewise.
	* gdb.base/structs2.exp: Likewise.
	* gdb.base/term.exp: Likewise.
	* gdb.base/twice.exp: Likewise.
	* gdb.base/until.exp: Likewise.
	* gdb.base/varargs.exp: Likewise.
	* gdb.base/volatile.exp: Likewise.
	* gdb.base/watchpoint.exp: Likewise.
	* gdb.base/whatis-exp.exp: Likewise.
	* gdb.base/whatis.exp: Likewise.
	* gdb.cp/ambiguous.exp: Likewise.
	* gdb.cp/annota2.exp: Likewise.
	* gdb.cp/annota3.exp: Likewise.
	* gdb.cp/bool.exp: Likewise.
	* gdb.cp/breakpoint.exp: Likewise.
	* gdb.cp/casts.exp: Likewise.
	* gdb.cp/class2.exp: Likewise.
	* gdb.cp/classes.exp: Likewise.
	* gdb.cp/cplusfuncs.exp: Likewise.
	* gdb.cp/ctti.exp: Likewise.
	* gdb.cp/derivation.exp: Likewise.
	* gdb.cp/exception.exp: Likewise.
	* gdb.cp/gdb1355.exp: Likewise.
	* gdb.cp/hang.exp: Likewise.
	* gdb.cp/inherit.exp: Likewise.
	* gdb.cp/local.exp: Likewise.
	* gdb.cp/m-data.exp: Likewise.
	* gdb.cp/m-static.exp: Likewise.
	* gdb.cp/member-ptr.exp: Likewise.
	* gdb.cp/method.exp: Likewise.
	* gdb.cp/misc.exp: Likewise.
	* gdb.cp/namespace.exp: Likewise.
	* gdb.cp/overload.exp: Likewise.
	* gdb.cp/ovldbreak.exp: Likewise.
	* gdb.cp/pr-1023.exp: Likewise.
	* gdb.cp/pr-1210.exp: Likewise.
	* gdb.cp/pr-574.exp: Likewise.
	* gdb.cp/printmethod.exp: Likewise.
	* gdb.cp/psmang.exp: Likewise.
	* gdb.cp/ref-params.exp: Likewise.
	* gdb.cp/ref-types.exp: Likewise.
	* gdb.cp/rtti.exp: Likewise.
	* gdb.cp/templates.exp: Likewise.
	* gdb.cp/try_catch.exp: Likewise.
	* gdb.cp/userdef.exp: Likewise.
	* gdb.cp/virtfunc.exp: Likewise.
	* gdb.disasm/am33.exp: Likewise.
	* gdb.disasm/h8300s.exp: Likewise.
	* gdb.disasm/mn10300.exp: Likewise.
	* gdb.disasm/sh3.exp: Likewise.
	* gdb.disasm/t01_mov.exp: Likewise.
	* gdb.disasm/t02_mova.exp: Likewise.
	* gdb.disasm/t03_add.exp: Likewise.
	* gdb.disasm/t04_sub.exp: Likewise.
	* gdb.disasm/t05_cmp.exp: Likewise.
	* gdb.disasm/t06_ari2.exp: Likewise.
	* gdb.disasm/t07_ari3.exp: Likewise.
	* gdb.disasm/t08_or.exp: Likewise.
	* gdb.disasm/t09_xor.exp: Likewise.
	* gdb.disasm/t10_and.exp: Likewise.
	* gdb.disasm/t11_logs.exp: Likewise.
	* gdb.disasm/t12_bit.exp: Likewise.
	* gdb.disasm/t13_otr.exp: Likewise.
	* gdb.hp/gdb.aCC/optimize.exp: Likewise.
	* gdb.hp/gdb.aCC/watch-cmd.exp: Likewise.
	* gdb.hp/gdb.base-hp/callfwmall.exp: Likewise.
	* gdb.hp/gdb.base-hp/dollar.exp: Likewise.
	* gdb.hp/gdb.base-hp/hwwatchbus.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.base-hp/sized-enum.exp: Likewise.
	* gdb.hp/gdb.compat/xdb1.exp: Likewise.
	* gdb.hp/gdb.compat/xdb3.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.objdbg/objdbg04.exp: Likewise.
	* gdb.mi/gdb701.exp: Likewise.
	* gdb.mi/gdb792.exp: Likewise.
	* gdb.mi/mi-basics.exp: Likewise.
	* gdb.mi/mi-break.exp: Likewise.
	* gdb.mi/mi-cli.exp: Likewise.
	* gdb.mi/mi-console.exp: Likewise.
	* gdb.mi/mi-disassemble.exp: Likewise.
	* gdb.mi/mi-eval.exp: Likewise.
	* gdb.mi/mi-file.exp: Likewise.
	* gdb.mi/mi-read-memory.exp: Likewise.
	* gdb.mi/mi-regs.exp: Likewise.
	* gdb.mi/mi-return.exp: Likewise.
	* gdb.mi/mi-simplerun.exp: Likewise.
	* gdb.mi/mi-stack.exp: Likewise.
	* gdb.mi/mi-stepi.exp: Likewise.
	* gdb.mi/mi-syn-frame.exp: Likewise.
	* gdb.mi/mi-until.exp: Likewise.
	* gdb.mi/mi-var-block.exp: Likewise.
	* gdb.mi/mi-var-child.exp: Likewise.
	* gdb.mi/mi-var-cmd.exp: Likewise.
	* gdb.mi/mi-var-display.exp: Likewise.
	* gdb.mi/mi-watch.exp: Likewise.
	* gdb.mi/mi2-basics.exp: Likewise.
	* gdb.mi/mi2-break.exp: Likewise.
	* gdb.mi/mi2-cli.exp: Likewise.
	* gdb.mi/mi2-console.exp: Likewise.
	* gdb.mi/mi2-disassemble.exp: Likewise.
	* gdb.mi/mi2-eval.exp: Likewise.
	* gdb.mi/mi2-file.exp: Likewise.
	* gdb.mi/mi2-read-memory.exp: Likewise.
	* gdb.mi/mi2-regs.exp: Likewise.
	* gdb.mi/mi2-return.exp: Likewise.
	* gdb.mi/mi2-simplerun.exp: Likewise.
	* gdb.mi/mi2-stack.exp: Likewise.
	* gdb.mi/mi2-stepi.exp: Likewise.
	* gdb.mi/mi2-syn-frame.exp: Likewise.
	* gdb.mi/mi2-until.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.
	* gdb.mi/mi2-watch.exp: Likewise.
	* gdb.stabs/exclfwd.exp: Likewise.
	* gdb.stabs/weird.exp: Likewise.
	* gdb.threads/gcore-thread.exp: Likewise.
	* gdb.trace/actions.exp: Likewise.
	* 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.

2006-08-08  Joel Brobecker  <brobecker@adacore.com>

	* gdb.base/step-bt.c: New file.
	* gdb.base/step-bt.exp: New testcase.

2006-08-08  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/monitor.exp (gdb_load): Remove support for obsolete
	download-write-size.
	* gdb.base/remote.exp: Likewise.  Update all callers of
	gdb_timed_load.

2006-08-02  Daniel Jacobowitz  <dan@codesourcery.com>

	* cursal.exp: Pass binfile to gdb_load.

2006-08-01  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb.base/cursal.exp: Add "" to gdb_load call.

2006-07-29  Mark Kettenis  <kettenis@gnu.org>

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

2006-07-25  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.cp/userdef.cc, gdb.cp/userdef.exp: New tests for unary
	operator*.

2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/completion.exp: Update for change in "file" behavior.
	* gdb.stabs/weird.exp: Likewise.
	* lib/mi-support.exp (mi_gdb_file_cmd): Likewise.
	* lib/gdb.exp (gdb_file_cmd): Likewise.  Kill the program explicitly.

2006-07-24  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb.base/auxv.exp: Skip on non-linux, non-solaris targets.
	* gdb.base/cursal.exp: Use gdb_file_cmd first, then separate gdb_load.

2006-07-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/default.exp: Update source command error message.
	* gdb.base/help.exp: Update 'help source' message.

2006-07-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.cp/bs15503.exp: Update comment for no longer crashing
	test.

2006-07-19  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/ifelse.exp: Remove troublesome 'got here' messages.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.arch/i386-size.c, gdb.arch/i386-size.exp: New files.

2006-07-18  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.threads/print-threads.exp: Use gdb_breakpoint.

2006-07-17  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/long_long.exp (gdb_test_long_long): Exclude
	*-*-openbsd* from targets for wich we expect ARM FPA floating
	point format.

2006-07-17  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.cp/annota3.exp: Expect frame-begin annotation.

2006-07-17  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/annota3.exp: Expect frame-begin annotation.

2006-07-14  Joel Brobecker  <brobecker@adacore.com>

	* gdb.base/help.exp: Adjust "help unset" test to accept
	any list of unset commands.

2006-07-13  Paul N. Hilfinger  <Hilfinger@adacore.com>
	    Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.cp/ref-params.exp: New test.
	* gdb.cp/ref-params.cc: New source file.
	* gdb.cp/Makefile.in (EXECUTABLES): Add ref-params.

2006-07-08  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/alpha-step.exp (test_stepi): Do not include trailing
	spaces/tabs in regular expressions since they might not be there.

2006-07-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/ifelse.exp: New file.

2006-07-04  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb.base/huge.c: Allow CRASH_GDB to be set from command
	line.
	* gdb.base/huge.exp: Loop over compilation to find a size that
	is acceptable.
	* gdb.base/remote.exp: Correct expected strings.
	* gdb.dwarf2/mac-fileno.S: Avoid # comments.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/store.exp: Don't use gdb_suppress_entire_file.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/gdb1555.exp: Use gdb_compile_shlib.  Skip if not
	native.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.stabs/exclfwd.exp: Skip the test if configure did not
	enable stabs testing.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/auxv.exp: Intercept undefined command messages before
	gdb_test_multiple does.

2006-06-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* Makefile.in (host_alias): Remove.
	(target_alias): Use @target_noncanonical@.
	(site.exp): Don't set host_alias.
	* aclocal.m4: Remove contents.  Include acx.m4.
	* configure: Regenerated.
	* configure.ac: Use ACX_NONCANONICAL_TARGET.

2006-06-13  Nathan Sidwell  <nathan@codesourcery.com>

	* lib/gdb.exp (gdb_load_cmd): New.

	* gdb.base/fileio.c: Add system(NULL) test.
	* gdb.base/fileio.exp: Check it.

	* gdb.base/break.c: Add 10a breakpoint at }
	* gdb.base/break.exp: Add test for breakpoint at }
	* gdb.cp/anon-union.cc: Add code at end of function.
	* gdb.cp/anon-union.exp: Adjust end of function breakpoint.
	* gdb.mi/var-cmd.c: Add code at end of function.
	* gdb.mi/mi-var-display.exp: Adjust end of next.
	* gdb.mi/mi2-var-display.exp: Likewise.
	* gdb.base/fileio.c: Add stop function and insert calls at
	stopping places.
	* gdb.base/fileio.exp: Breakpoint stop function and remove
	explicit line number references.

2006-05-19  Joel Brobecker  <brobecker@adacore.com>

        * gdb.base/del.exp (test_delete_alias): New function.
        Now check that both "del" and "d" work as aliases for "delete".

2006-05-18  Fred Fish  <fnf@specifix.com>

	* gdb.base/a2-run.exp: Allow part of test to run when args aren't
	required.  Check for spurious output after program exits normally.

2006-05-17  Fred Fish  <fnf@specifix.com>

	* gdb.base/relocate.exp: Use gdb_file_cmd rather than
	gdb_load, so it works in the simulator.

2006-05-11  Fred Fish  <fnf@specifix.com>

	* gdb.base/bang.exp: Ignore unexpected output between the
	"program exited normally" and the gdb prompt, as many other
	tests do.

2006-05-07  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/help.exp: Make "delete checkpoint" part option for
	"help d" and "help delete" tests.

2006-05-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>

	* gdb.mi/mi-basics.exp: Add missing serial number to 
	expected output in some mi_gdb_test statements.
	* gdb.mi/mi2-basics.exp: Likewise.

2006-05-05  Joel Brobecker  <brobecker@adacore.com>

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

2006-05-05  David S. Miller  <davem@sunset.davemloft.net>

	* gdb.base/break.exp: Do not assume a breakpoint on
	main will actually be in $srcfile when optimizing.
	* gdb.base/savedregs.exp: Do not require that the dummy
	frame location match up to a symbol and source file location.
	* gdb.mi/mi-regs.exp (111-data-list-register-values x): "No registers"
	will get printed without a mi_cmd_data_list_register_values prefix.
	(*-data-list-register-*): Correct regular expressions to expect the new
	pseudo d? floating point registers.
	* gdb.mi/mi2-regs.exp: Likewise.
	
2006-05-05  Christophe Lyon  <christophe.lyon@st.com>

	* gdb.cp/m-static.h (class gnu_obj_4): Add dummy member.
	* gdb.cp/m-static.cc (main): Write to test4.dummy, so that test4
	is allocated by the compiler.
	* gdb.mi/var-cmd.c: (do_special_tests): Write to u, anonu, s,
	anons, e, anone to force their allocation by the compiler.

2006-05-05  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/help.exp: Update expected text for help d and
	help delete.

2006-05-02  Mark Kettenis  <kettenis@gnu.org>

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

2006-04-30  Mark Kettenis  <kettenis@gnu.org>

	* gdb.base/sigbpt.exp (stepi_out): FAIL when inserting a
	single-step breakpoint fails; make this a KFAIL on
	sparc*-*-openbsd*.
	* gdb.base/siginfo.exp: Likewise.
	* gdb.base/sigstep.exp (advance, advancei): Likewise.

2006-04-26  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/multi-forks.exp: Modify patterns for "run to exit",
	which may have to consume output from other forks.
	Add tests to make sure that "delete fork" succeeded.

2006-04-20  Michael Snyder  <msnyder@redhat.com>

	* 2006-03-22  Jim Blandy  <jimb@redhat.com>
	Add support for the Renesas M32C and M16C.

	* gdb.asm/asm-source.exp: Add m32c target.
	* gdb.asm/m32c.inc: Support for m32c target.

2006-04-07  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/commands.exp (recursive_source_test): New test.

2006-04-04  David S. Miller  <davem@sunset.davemloft.net>

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

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/commands.exp (stray_arg0_test): New test.

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

	* gdb.mi/mi-until.exp: kfail broken until command.
	* gdb.mi/mi2-until.exp: Ditto.

2006-03-27  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.mi/mi-var-child-f.exp, gdb.mi/array.f: New files.

2006-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* gdb.base/prelink.exp: Anchor tested-for regular expression
	on gdb prompt.

2006-03-07  Paul Brook  <paul@codesourcery.com>

	* gdb.base/assign.exp: Correct fail message.

2006-03-07  Paul Brook  <paul@codesourcery.com>

	* lib/compiler.c: Extract armcc version number.
	* lib/compiler.cc: Ditto.

2006-03-07  Paul Brook  <paul@codesourcery.com>

	* gdb.arch/altivec-abi.exp: Use nowarnings instead of
	additional_flags=-w.
	* gdb.arch/altivec-regs.exp: Ditto.
	* gdb.arch/e500-abi.exp: Ditto.
	* gdb.arch/e500-regs.exp: Ditto.
	* gdb.base/all-bin.exp: Ditto.
	* gdb.base/annota1.exp: Ditto.
	* gdb.base/annota3.exp: Ditto.
	* gdb.base/args.exp: Ditto.
	* gdb.base/arithmet.exp: Ditto.
	* gdb.base/assign.exp: Ditto.
	* gdb.base/async.exp: Ditto.
	* gdb.base/bang.exp: Ditto.
	* gdb.base/break.exp: Ditto.
	* gdb.base/call-rt-st.exp: Ditto.
	* gdb.base/completion.exp: Ditto.
	* gdb.base/cond-expr.exp: Ditto.
	* gdb.base/condbreak.exp: Ditto.
	* gdb.base/consecutive.exp: Ditto.
	* gdb.base/define.exp: Ditto.
	* gdb.base/display.exp: Ditto.
	* gdb.base/ena-dis-br.exp: Ditto.
	* gdb.base/environ.exp: Ditto.
	* gdb.base/eval-skip.exp: Ditto.
	* gdb.base/info-proc.exp: Ditto.
	* gdb.base/jump.exp: Ditto.
	* gdb.base/logical.exp: Ditto.
	* gdb.base/long_long.exp: Ditto.
	* gdb.base/maint.exp: Ditto.
	* gdb.base/miscexprs.exp: Ditto.
	* gdb.base/pc-fp.exp: Ditto.
	* gdb.base/pointers.exp: Ditto.
	* gdb.base/relational.exp: Ditto.
	* gdb.base/reread.exp: Ditto.
	* gdb.base/sect-cmd.exp: Ditto.
	* gdb.base/sep.exp: Ditto.
	* gdb.base/sepdebug.exp: Ditto.
	* gdb.base/until.exp: Ditto.
	* gdb.base/whatis-exp.exp: Ditto.
	* gdb.cp/annota2.exp: Ditto.
	* gdb.cp/annota3.exp: Ditto.
	* gdb.trace/actions.exp: Ditto.
	* gdb.trace/backtrace.exp: Ditto.
	* gdb.trace/circ.exp: Ditto.
	* gdb.trace/collection.exp: Ditto.
	* gdb.trace/deltrace.exp: Ditto.
	* gdb.trace/infotrace.exp: Ditto.
	* gdb.trace/limits.exp: Ditto.
	* gdb.trace/packetlen.exp: Ditto.
	* gdb.trace/passc-dyn.exp: Ditto.
	* gdb.trace/passcount.exp: Ditto.
	* gdb.trace/report.exp: Ditto.
	* gdb.trace/save-trace.exp: Ditto.
	* gdb.trace/tfind.exp: Ditto.
	* gdb.trace/tracecmd.exp: Ditto.
	* gdb.trace/while-dyn.exp: Ditto.
	* gdb.trace/while-stepping.exp: Ditto.
	* lib/gdb.exp: Ditto.
	(gdb_compile): Handle nowarning option.

2006-03-07  Alexandre Oliva  <aoliva@redhat.com>

	* gdb.base/prelink.c, gdb.base/prelink-lib.c: Update FSF address.
	* gdb.base/prelink.exp: Likewise.  Add -q to prelink runs.
	Rename executable to prelinkt.  Don't re-prelink if we didn't
	get a core file.  Test prelink -u exit status to tell whether
	prelinking failed.  Use gdb_test_multiple.

2006-03-01  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.cp/inherit.exp (test_print_mi_member_types): New function.
	(do_tests): Call it.

2006-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* gdb.base/prelink.exp: New test.
	* gdb.base/prelink.c, gdb.base/prelink-lib.c: New sources.

2006-02-24  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.fortran/derived-type.f90: New file.
	* gdb.fortran/derived-type.exp: New testcase.

2006-02-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/default.exp: Allow ';' as a directory separator.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/help.exp (help add-symbol-file): Update.

2006-02-21  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/help.exp (help load): Update expected results.

2006-02-19  Fred Fish  <fnf@specifix.com>

	* gdb.base/pc-fp.exp (get_valueofx): Don't print environment
	specifix hex value as part of results.
	* gdb.base/shreloc.exp (get_msym_addrs): Ditto.
	
2006-02-16  Fred Fish  <fnf@specifix.com>

	* gdb.base/whatis.c: Define variables using typedefs char_addr,
	ushort_addr, and slong_addr, so the typedefs are not optimized
	away.
	* gdb.base/whatis.exp: Add tests using type name for struct type,
	union type, enum type, and typedef.
	
2006-02-13  Mark Kettenis  <kettenis@gnu.org>

	* gdb.arch/i386-prologue.exp: Add testcase for PR breakpoints/2080.

2006-02-13  Jim Blandy  <jimb@redhat.com>

	* gdb.base/scope.exp (test_at_main): Remove logic to handle the
	case where it takes two "next" commands to skip past the init
	call.

2006-02-12  Fred Fish  <fnf@specifix.com>

	* gdb.base/scope.exp (test_at_main): Use gdb_test_multiple
	to handle cases where it takes two "next" commands to skip
	past the init call.

2006-02-07  Joel Brobecker  <brobecker@adacore.com>

	* gdb.ada/array_return.exp: Mark the last test as expected to fail
	on hppa32 targets.

2006-02-06  Vladimir Prus  <ghost@cs.msu.su>

	* gdb.mi/mi-break.exp, gdb.mi/mi2-break.exp: Test for the fullname
	field.

2006-01-29  Mark Kettenis  <kettenis@gnu.org>

	* gdb.cp/bool.cc, gdb.cp/bool.exp: New files.

2006-01-22  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.arch/powerpc-prologue.c, gdb.arch/powerpc-prologue.exp: New
	files.

2006-01-20  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.cp/maint.exp: Set complaints to a positive value.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/multi-forks.c: Add copyright notice.  Include <stdlib.h>.
	* gdb.base/multi-forks.exp: Use a loop.  Allow "fork" as a stopped
	function name.

2006-01-15  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.base/checkpoint.c: Update copyright notice.  Include
	<stdlib.h>.

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

	* gdb.asm/asm-source.exp: Independently provide default values for
	asm-flags and debug-flags.  Use 'string equal' to do the
	comparison, not the implicit expr's '==' operator.  Remove
	now-unneeded assignments to asm-flags.  In h8300 case, place
	"-gdwarf-2", not "-gdwarf2", in debug-flags, not asm-flags.

2006-01-04  Michael Snyder  <msnyder@redhat.com>

	* gdb.base/checkpoint.c: New file.
	* gdb.base/checkpoint.exp: New file.
	* gdb.base/multi-fork.c: New file.
	* gdb.base/multi-fork.exp: New file.
	* gdb.base/pi.txt: New file (data for checkpoint.c test).

2006-01-04  Fred Fish  <fnf@specifix.com>

	* gdb.base/ptype.c (foo): Add typedef.
	(intfoo): Add function.
	* gdb.base/ptype1.c: New file.
	* gdb.base/ptype.exp: Handle compilation and linking with two
	source files.  Test that proper type for "foo" is found based
	on source context rather than first match found in symtabs.

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

	* gdb.asm/asm-source.exp (hppa-*-openbsd*): New.
	* gdb.asm/openbsd.inc: Indent commands.

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

	* gdb.base/freebpcmd.exp: Increase timeout.

	* gdb.gdb/selftest.exp (test_with_self): Update copyright check.

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

	* gdb.base/default.exp: Update check for "show version".

2005-12-09  Randolph Chung  <tausq@debian.org>

	* gdb.asm/asm-source.exp (hppa64-*-hpux*): New.
	* gdb.asm/pa64.inc: New file.

2005-12-09  Randolph Chung  <tausq@debian.org>

	* gdb.asm/common.inc: Indent commands.
	* gdb.asm/asmsrc1.s: Likewise.
	* gdb.asm/asmsrc2.s: Likewise.

2005-12-09  Randolph Chung  <tausq@debian.org>

	* gdb.arch/pa-nullify.exp: Handle hppa64-*-* targets.
	(get_addr_of_sym): Remove duplicate print.
	(gen_core): xfail hppa*-*-hpux*, update expected output.
	* gdb.arch/pa-nullify.s: Reformat to also work on HPUX.
	* gdb.arch/pa64-nullify.s: New file.

2005-12-09  Randolph Chung  <tausq@debian.org>

	* gdb.base/dump.exp: Mark hppa64-*-* as 64-bit target.

2005-12-07  Christophe Lyon  <christophe.lyon@st.com>

	* gdb.cp/printmethod.cc (main): Call virt and nonvirt, to force
	code generation for these functions.
	* gdb.cp/printmethod.exp: Expect "&A::nonvirt()" instead of an
	error message.

2005-12-02  Andrew Stubbs  <andrew.stubbs@st.com>

	* gdb.base/help.exp (help b, help br, help bre, help brea)
	(help break): Update the expected message.

2005-11-11  Stephane Carrez  <stcarrez@nerim.fr>

	* gdb.asm/m68hc11.inc: Setup the data section.
	* gdb.asm/asm-source.exp (m6811-*-*): Don't use the target board linker
	script for this test.
	(m6812-*-*): Likewise.

2005-11-09  Randolph Chung <tausq@debian.org>

	* gdb.base/structs2.exp: Update xfail to only trigger for gcc-3.x.

2005-11-09  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.base/break.exp: Fix a comment typo.

2005-11-03  Jim Blandy  <jimb@redhat.com>

        Checked in by Elena Zannoni  <ezannoni@redhat.com>
 
 	* gdb.dwarf2/mac-fileno.exp, gdb.dwarf2/mac-fileno.S: New tests.

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

	* gdb.arch/gdb1558.c: Include stdio.h.

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

	* gdb.asm/asm-source.exp: Use -e instead of --entry.

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

	* gdb.base/bfp-test.exp: Properly anchor gdb_multiple_test usage.

2005-10-17  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.arch/altivec-regs.exp: Adjust "info reg vrsave" and "info reg
        vscr" tests to better match output.

2005-10-12  Jim Blandy  <jimb@redhat.com>

	* gdb.base/structs.exp (any): New function.
	(test_struct_returns): Don't make any assumptions at all about
	what value the function returns when GDB can't set the return
	value.

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

	* gdb.ada/arrayidx/p.adb: New file.
	* gdb.ada/arrayidx.exp: New testcase

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

	* gdb.ada/array_return/pck.ads: New file.
	* gdb.ada/array_return/pck.adb: New file.
	* gdb.ada/array_return/p.adb: New file.
	* gdb.ada/array_return.exp: New testcase.

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

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

2005-09-29  Nick Roberts  <nickrob@snap.net.nz>

	* gdb.base/annota3.exp, gdb.cp/annota3.exp: The annotations
	frames-invalid and breakpoints-invalid are no longer generated
	with level 3 so don't expect them in the output.

2005-09-27  Bob Rossi  <bob@brasko.net>

	* gdb.mi/mi-disassemble.exp, gdb.mi/mi2-disassemble.exp: Remove .* 
	from test.  Escape the | in mi_gdb_test call.
	* gdb.mi/mi-basics.exp, gdb.mi/mi-cli.exp, gdb.mi/mi-disassemble.exp,
	gdb.mi/mi-pthreads.exp, gdb.mi/mi-stack.exp, gdb.mi/mi2-basics.exp,
	gdb.mi/mi2-cli.exp, gdb.mi/mi2-disassemble.exp,
	gdb.mi/mi2-pthreads.exp, gdb.mi/mi2-stack.exp: Add extra details to
	expected regex's in mi_gdb_test calls.
	* lib/mi-support.exp: Remove arbitrary .* from tests.
	(mi_gdb_test): Add string_regex variable. Add anchor to main -re.
	Fully anchor GDB/MI expected results in mi_gdb_test.
	* lib/gdb.exp (string_to_regexp): Escape the ] character.
	* gdb.base/sizeof.exp: Remove escape character. Correct test.

2005-09-26  Paul Brook  <paul@codesourcery.com>

	* long_long.exp: Exclude eabi targets from arm FPA float format test.

2005-09-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* bfp-test.c: New file.
	* bfp-test.exp: New testcase.

2005-09-20  Wu Zhou  <woodzltc@cn.ibm.com>

	* gdb.fortran/subarray.exp: New testcase to test the evaluation
	of subarray and substring variable.
	* gdb.fortran/subarray.f: New source file for the test of subarray
	and substring variable evaluation.
	* gdb.fortran/exprs.exp: Add four tests for substring evaluation
	of string constant.

2005-09-19  Daniel Jacobowitz  <dan@codesourcery.com>

	* gdb.arch/altivec-regs.exp, gdb.arch/altivec-abi.exp: Update
	copyright dates.

2005-09-19  Paul Gilliam  <pgilliam@us.ibm.com>

	* gdb.arch/altivec-regs.exp (info powerpc altivec): Replace the 'info
	powerpc altivec' test with an almost identical 'info vector' test.

2005-09-13  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.arch/altivec-regs.exp: Adjust "info reg vrsave" and "info reg
        vscr" tests to match output.

2005-09-13  Paul Gilliam  <pgilliam@us.ibm.com>

        * gdb.arch/altivec-regs.exp: Adjust "print $vx<i>" tests to match
        output.

2005-09-11  Bob Rossi  <bob@brasko.net>

 	* lib/mi-support.exp (mi_gdb_test): Change -re to not be anchored.
 	* gdb.mi/mi-syn-frame.exp: Call mi_gdb_test twice instead of once for 
 	commands that return an MI output command and an asyncronous MI output
 	command.
	* gdb.mi/mi-console.exp: Ditto.

2005-09-11  Bob Rossi  <bob@brasko.net>

	* gdb.mi/mi-var-child.c: Include <string.h>.

2005-09-10  Daniel Jacobowitz  <dan@codesourcery.com>

	* killed.exp: Correct gdb_expect syntax.

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.
