From: Fred Fish <fnf@intrinsity.com>
To: gdb-patches@sources.redhat.com
Cc: fnf@intrinsity.com (Fred Fish)
Subject: Re: [RFA] Fix inferior restart problem in gdb.base/commands.exp
Date: Sat, 07 Sep 2002 09:07:00 -0000 [thread overview]
Message-ID: <200209071606.g87G6kE08811@beeville.vert.intrinsity.com> (raw)
In-Reply-To: <200209071404.g87E4kb19664@beeville.vert.intrinsity.com> from "Fred Fish" at Sep 07, 2002 09:04:45 AM
Here is an updated patch that checks that the right breakpoint is
getting hit, and only that breakpoint. It also has some format tweaks
for consistency.
-Fred
2002-09-07 Fred Fish <fnf@intrinsity.com>
* gdb.base/run.c (all_done): Add function and call it at end of main.
* gdb.base/commands.exp (bp_deleted_in_command_test): Set breakpoint
at all_done so we don't exit, which makes restarting more difficult.
Call factorial with 2 instead of 1 to check breakpoint cleared.
Adjust expected success results to match stopping at all_done.
(temporary_breakpoint_commands): Ditto.
(watchpoint_command_test): Adjust hardcoded line number to match.
Index: gdb.base/commands.exp
===================================================================
RCS file: /mips/newtools/fsf/gdb/gdb/testsuite/gdb.base/commands.exp,v
retrieving revision 1.1.1.2
diff -c -p -r1.1.1.2 commands.exp
*** gdb.base/commands.exp 2002/08/31 02:49:15 1.1.1.2
--- gdb.base/commands.exp 2002/09/07 15:12:05
*************** proc watchpoint_command_test {} {
*** 331,337 ****
}
send_gdb "continue\n"
gdb_expect {
! -re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*run.c:57.*$gdb_prompt $" {
pass "continue with watch"
}
-re "$gdb_prompt $" {fail "continue with watch"}
--- 331,337 ----
}
send_gdb "continue\n"
gdb_expect {
! -re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*run.c:60.*$gdb_prompt $" {
pass "continue with watch"
}
-re "$gdb_prompt $" {fail "continue with watch"}
*************** proc deprecated_command_test {} {
*** 443,451 ****
proc bp_deleted_in_command_test {} {
global gdb_prompt
! gdb_test "set args 1" "" "set args in bp_deleted_in_command_test"
delete_breakpoints
# Create a breakpoint, and associate a command-list to it, with
# one command that deletes this breakpoint.
gdb_test "break factorial" \
--- 443,459 ----
proc bp_deleted_in_command_test {} {
global gdb_prompt
! gdb_test "set args 2" "" "set args in bp_deleted_in_command_test"
delete_breakpoints
+ # Set a breakpoint that will prevent us from running to completion and exiting.
+ # If we allow the inferior to exit, gdb_run_cmd may not be sufficient to get us
+ # going again in a future test without a full restart, when using a gdb stub.
+
+ gdb_test "break all_done" \
+ "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
+ "breakpoint at all_done"
+
# Create a breakpoint, and associate a command-list to it, with
# one command that deletes this breakpoint.
gdb_test "break factorial" \
*************** proc bp_deleted_in_command_test {} {
*** 470,487 ****
gdb_expect {
-re ">" {pass "add clear command"}
-re "$gdb_prompt $" {fail "add clear command"}
! timeout {fail "(timeout) add clear command"} }
send_gdb "printf \"factorial command-list executed\\n\"\n"
gdb_expect {
-re ">" {pass "add printf command"}
-re "$gdb_prompt $" {fail "add printf command"}
timeout {fail "(timeout) add printf command"}
}
send_gdb "cont\n"
gdb_expect {
-re ">" {pass "add cont command"}
-re "$gdb_prompt $" {fail "add cont command"}
! timeout {fail "(timeout) add cont command"} }
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $" {pass "end commands"}
--- 478,503 ----
gdb_expect {
-re ">" {pass "add clear command"}
-re "$gdb_prompt $" {fail "add clear command"}
! timeout {fail "(timeout) add clear command"}
! }
send_gdb "printf \"factorial command-list executed\\n\"\n"
gdb_expect {
-re ">" {pass "add printf command"}
-re "$gdb_prompt $" {fail "add printf command"}
timeout {fail "(timeout) add printf command"}
}
+ send_gdb "print value\n"
+ gdb_expect {
+ -re ">" {pass "add print value command"}
+ -re "$gdb_prompt $" {fail "add print value command"}
+ timeout {fail "(timeout) add print value command"}
+ }
send_gdb "cont\n"
gdb_expect {
-re ">" {pass "add cont command"}
-re "$gdb_prompt $" {fail "add cont command"}
! timeout {fail "(timeout) add cont command"}
! }
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $" {pass "end commands"}
*************** proc bp_deleted_in_command_test {} {
*** 489,496 ****
}
gdb_run_cmd
gdb_expect {
! -re ".*factorial command-list executed.*1.*Program exited normally.*$gdb_prompt $" {
pass "run factorial until breakpoint"
}
-re ".*$gdb_prompt $" {
--- 505,515 ----
}
gdb_run_cmd
+ # Note that we specifically don't check that the inferior printed any output
+ # since it is immaterial to the test results and we don't want to have to check
+ # whether or not "noinferiorio" is set.
gdb_expect {
! -re ".*factorial command-list executed.*\\$\[0-9\]* = 2\[ \r\n\]+.*Breakpoint \[0-9\]+, all_done.*$gdb_prompt $" {
pass "run factorial until breakpoint"
}
-re ".*$gdb_prompt $" {
*************** proc bp_deleted_in_command_test {} {
*** 504,512 ****
proc temporary_breakpoint_commands {} {
global gdb_prompt
! gdb_test "set args 1" "" "set args in temporary_breakpoint_commands"
delete_breakpoints
# Create a temporary breakpoint, and associate a commands list to it.
# This test will verify that this commands list is executed when the
# breakpoint is hit.
--- 523,539 ----
proc temporary_breakpoint_commands {} {
global gdb_prompt
! gdb_test "set args 2" "" "set args in temporary_breakpoint_commands"
delete_breakpoints
+ # Set a breakpoint that will prevent us from running to completion and exiting.
+ # If we allow the inferior to exit, gdb_run_cmd may not be sufficient to get us
+ # going again in a future test without a full restart, when using a gdb stub.
+
+ gdb_test "break all_done" \
+ "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
+ "breakpoint at all_done"
+
# Create a temporary breakpoint, and associate a commands list to it.
# This test will verify that this commands list is executed when the
# breakpoint is hit.
*************** proc temporary_breakpoint_commands {} {
*** 527,555 ****
-re ">" {pass "add silent tbreak command"}
-re "$gdb_prompt $" {fail "add silent tbreak command"}
timeout {fail "(timeout) add silent tbreak command"}
! }
send_gdb "printf \"factorial tbreak commands executed\\n\"\n"
gdb_expect {
-re ">" {pass "add printf tbreak command"}
-re "$gdb_prompt $" {fail "add printf tbreak command"}
timeout {fail "(timeout) add printf tbreak command"}
! }
send_gdb "cont\n"
gdb_expect {
-re ">" {pass "add cont tbreak command"}
-re "$gdb_prompt $" {fail "add cont tbreak command"}
! timeout {fail "(timeout) add cont tbreak command"} }
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $" {pass "end tbreak commands"}
timeout {fail "(timeout) end tbreak commands"}
! }
gdb_run_cmd
gdb_expect {
! -re ".*factorial tbreak commands executed.*1.*Program exited normally.*" {
pass "run factorial until temporary breakpoint"
}
timeout { fail "(timeout) run factorial until temporary breakpoint" }
}
}
--- 554,596 ----
-re ">" {pass "add silent tbreak command"}
-re "$gdb_prompt $" {fail "add silent tbreak command"}
timeout {fail "(timeout) add silent tbreak command"}
! }
send_gdb "printf \"factorial tbreak commands executed\\n\"\n"
gdb_expect {
-re ">" {pass "add printf tbreak command"}
-re "$gdb_prompt $" {fail "add printf tbreak command"}
timeout {fail "(timeout) add printf tbreak command"}
! }
! send_gdb "print value\n"
! gdb_expect {
! -re ">" {pass "add print value tbreak command"}
! -re "$gdb_prompt $" {fail "add print value tbreak command"}
! timeout {fail "(timeout) add print value tbreak command"}
! }
send_gdb "cont\n"
gdb_expect {
-re ">" {pass "add cont tbreak command"}
-re "$gdb_prompt $" {fail "add cont tbreak command"}
! timeout {fail "(timeout) add cont tbreak command"}
! }
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $" {pass "end tbreak commands"}
timeout {fail "(timeout) end tbreak commands"}
! }
gdb_run_cmd
+ # Note that we specifically don't check that the inferior printed any output
+ # since it is immaterial to the test results and we don't want to have to check
+ # whether or not "noinferiorio" is set.
gdb_expect {
! -re ".*factorial tbreak commands executed.*\\$\[0-9\]* = 2\[ \r\n\]+.*Breakpoint \[0-9\]+, all_done.*$gdb_prompt $" {
pass "run factorial until temporary breakpoint"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "run factorial until temporary breakpoint"
}
+ default { fail "(timeout) run factorial until temporary breakpoint" }
timeout { fail "(timeout) run factorial until temporary breakpoint" }
}
}
Index: gdb.base/run.c
===================================================================
RCS file: /mips/newtools/fsf/gdb/gdb/testsuite/gdb.base/run.c,v
retrieving revision 1.1.1.1
diff -c -p -r1.1.1.1 run.c
*** gdb.base/run.c 2002/07/03 16:56:33 1.1.1.1
--- gdb.base/run.c 2002/09/07 15:12:05
*************** char *arg;
*** 37,42 ****
--- 37,45 ----
# include <stdlib.h>
#endif /* ! vxworks */
+ /* Someplace we can set a breakpoint to avoid running to completion when needed */
+ void all_done () {};
+
#ifdef PROTOTYPES
int factorial (int);
*************** char *argv[], **envp;
*** 54,60 ****
breakpoint();
#endif
#ifdef FAKEARGV
! printf ("%d\n", factorial (1));
#else
if (argc != 2) {
printf ("usage: factorial <number>\n");
--- 57,63 ----
breakpoint();
#endif
#ifdef FAKEARGV
! printf ("%d\n", factorial (2));
#else
if (argc != 2) {
printf ("usage: factorial <number>\n");
*************** char *argv[], **envp;
*** 63,68 ****
--- 66,72 ----
printf ("%d\n", factorial (atoi (argv[1])));
}
#endif
+ all_done ();
return 0;
}
next prev parent reply other threads:[~2002-09-07 16:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-07 7:05 Fred Fish
2002-09-07 7:11 ` Fred Fish
2002-09-07 9:07 ` Fred Fish [this message]
2002-09-07 10:11 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200209071606.g87G6kE08811@beeville.vert.intrinsity.com \
--to=fnf@intrinsity.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox