[RFA/testsuite]: Stop dbx.exp insanity
Fernando Nasser
fnasser@redhat.com
Sat Mar 30 15:42:00 GMT 2002
Daniel Jacobowitz wrote:
>
> There were two issues with dbx.exp which could cause hard-to-identify
> testsuite failures:
>
> - It reimplemented gdb_file_cmd and left it changed. This means that the
> behavior of tests varied based on whether they ran before or after
> dbx.exp.
> - The reimplemented gdb_file_cmd was buggy in and of itself.
>
> The attached patch has been verified to fix both things. I restore the old
> gdb_file_cmd after dbx.exp is done; and for kicks I ran the testsuite
> without the line that restores it and verified that the other bugs were
> gone. The problem was forgetting to call exec-file in some cases.
>
> Fernando, is this OK to commit?
>
Cool! Yes, thank you.
Fernando
> Two examples in particular. This is the one inexplicable failure caused by
> my stabs line-numbering patch:
>
> Running ../../../src/gdb/testsuite/gdb.base/dbx.exp ...
> Running ../../../src/gdb/testsuite/gdb.base/reread.exp ...
> FAIL: gdb.base/reread.exp: second pass: breakpoint foo in first file
>
> # of unexpected failures 1
>
> vs.
>
> Running ../../../src/gdb/testsuite/gdb.base/reread.exp ...
>
> (no failures)
>
> Here's one in dump.exp:
>
> Running ../../../src/gdb/testsuite/gdb.base/dbx.exp ...
> Running ../../../src/gdb/testsuite/gdb.base/dump.exp ...
> FAIL: gdb.base/dump.exp: reload array as value, srec
> FAIL: gdb.base/dump.exp: reload struct as value, srec
> FAIL: gdb.base/dump.exp: reload array as memory, srec
> FAIL: gdb.base/dump.exp: reload struct as memory, srec
> FAIL: gdb.base/dump.exp: reload array as value, intel hex
> FAIL: gdb.base/dump.exp: reload struct as value, intel hex
> FAIL: gdb.base/dump.exp: reload array as memory, intel hex
> FAIL: gdb.base/dump.exp: reload struct as memory, intel hex
> FAIL: gdb.base/dump.exp: reload array as value, tekhex
> FAIL: gdb.base/dump.exp: reload struct as value, tekhex
> FAIL: gdb.base/dump.exp: reload array as memory, tekhex
> FAIL: gdb.base/dump.exp: reload struct as memory, tekhex
>
> vs.
>
> Running ../../../src/gdb/testsuite/gdb.base/dump.exp ...
>
> (no failures)
>
> --
> Daniel Jacobowitz Carnegie Mellon University
> MontaVista Software Debian GNU/Linux Developer
>
> 2002-03-30 Daniel Jacobowitz <drow@mvista.com>
>
> * gdb.base/dbx.exp: Restore old definition of gdb_file_cmd
> when finished. Make gdb_file_cmd send "exec-file" when
> appropriate.
>
> Index: dbx.exp
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/gdb.base/dbx.exp,v
> retrieving revision 1.3
> diff -u -r1.3 dbx.exp
> --- dbx.exp 2001/05/23 19:04:13 1.3
> +++ dbx.exp 2002/03/30 19:27:00
> @@ -168,6 +168,11 @@
> # file into gdb for a dbx session. So why not just override gdb_file_cmd with the
> # right sequence of events, allowing gdb_load to do its normal thing? This way
> # remotes and simulators will work, too.
> +#
> +# [drow 2002-03-30]: We can restore the old gdb_file_cmd afterwards, though.
> +set old_gdb_file_cmd_args [info args gdb_file_cmd]
> +set old_gdb_file_cmd_body [info body gdb_file_cmd]
> +
> proc gdb_file_cmd {arg} {
> global verbose
> global loadpath
> @@ -206,6 +211,11 @@
> verbose "\t\tLoaded $arg into the $GDB"
> send_gdb "exec-file $arg\n"
> gdb_expect {
> + -re "A program is being debugged already.*Kill it.*y or n. $" {
> + send_gdb "y\n"
> + verbose "\t\tKilling previous program being debugged"
> + exp_continue
> + }
> -re ".*$gdb_prompt $" {
> verbose "\t\tLoaded $arg with new symbol table into $GDB"
> return 0
> @@ -221,23 +231,9 @@
> perror "$arg wasn't compiled with \"-g\""
> return -1
> }
> - -re "A program is being debugged already.*Kill it.*y or n. $" {
> - send_gdb "y\n"
> - verbose "\t\tKilling previous program being debugged"
> - exp_continue
> - }
> -re "Load new symbol table from \".*\".*y or n. $" {
> send_gdb "y\n"
> - gdb_expect {
> - -re "Reading symbols from.*done.*$gdb_prompt $" {
> - verbose "\t\tLoaded $arg with new symbol table into $GDB"
> - return 0
> - }
> - timeout {
> - perror "(timeout) Couldn't load $arg, other program already loaded."
> - return -1
> - }
> - }
> + exp_continue
> }
> -re ".*No such file or directory.*$gdb_prompt $" {
> perror "($arg) No such file or directory\n"
> @@ -339,4 +335,6 @@
> gdb_exit
>
> set GDBFLAGS $saved_gdbflags
> +eval proc gdb_file_cmd {$old_gdb_file_cmd_args} {$old_gdb_file_cmd_body}
> +
> return 0
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9
More information about the Gdb-patches
mailing list