gdb.base/commands.exp: Test loop_break and loop_continue in nested loops

This patch improves the loop_break and loop_continue tests to verify
that they work as expected when multiple loops are nested (they affect
the inner loop).

gdb/testsuite/ChangeLog:

	* gdb.base/commands.exp (loop_break_test, loop_continue_test):
	Test with nested loops.
This commit is contained in:
Simon Marchi
2017-09-04 21:19:17 +02:00
parent 9a24775b97
commit 34d16ea2a1
2 changed files with 46 additions and 22 deletions
gdb/testsuite

@ -1,3 +1,8 @@
2017-09-04 Simon Marchi <simon.marchi@ericsson.com>
* gdb.base/commands.exp (loop_break_test, loop_continue_test):
Test with nested loops.
2017-09-04 Simon Marchi <simon.marchi@ericsson.com> 2017-09-04 Simon Marchi <simon.marchi@ericsson.com>
* gdb.base/commands.exp: Call the new procedures. * gdb.base/commands.exp: Call the new procedures.

@ -1030,41 +1030,60 @@ proc define_if_without_arg_test {} {
proc_with_prefix loop_break_test {} { proc_with_prefix loop_break_test {} {
gdb_test_no_output "set \$a = 0" "initialize \$a" gdb_test_no_output "set \$a = 0" "initialize \$a"
gdb_test_no_output "set \$total = 0" "initialize \$total"
gdb_test \ gdb_test \
[multi_line_input \ [multi_line_input \
"while \$a < 5" \ "while \$a < 5" \
" if \$a == 3" \ " if \$a == 4" \
" loop_break" \ " loop_break" \
" end" \ " end" \
" set \$a = \$a + 1" \ " set \$b = 0" \
"end"] \ " while \$b < 5" \
"" \ " if \$b == 2" \
"run while loop" " loop_break" \
" end" \
" set \$total = \$total + 1" \
" set \$b = \$b + 1" \
" end" \
" set \$a = \$a + 1" \
"end"] \
"" \
"run while loop"
gdb_test "print \$a" " = 3" "validate \$a" gdb_test "print \$a" " = 4" "validate \$a"
gdb_test "print \$b" " = 2" "validate \$b"
gdb_test "print \$total" " = 8" "validate \$total"
} }
# Test the loop_continue command. # Test the loop_continue command.
proc_with_prefix loop_continue_test {} { proc_with_prefix loop_continue_test {} {
gdb_test_no_output "set \$a = 0" "initialize \$a" gdb_test_no_output "set \$a = 0" "initialize \$a"
gdb_test_no_output "set \$b = 0" "initialize \$b" gdb_test_no_output "set \$total = 0" "initialize \$total"
gdb_test \ gdb_test \
[multi_line_input \ [multi_line_input \
"while \$a < 5" \ "while \$a < 5" \
" set \$a = \$a + 1" \ " set \$a = \$a + 1" \
" if \$a % 2 == 0" \ " set \$b = 0" \
" loop_continue" \ " if \$a == 4" \
" end" \ " loop_continue" \
" set \$b = \$b + 1" \ " end" \
"end"] \ " while \$b < 5" \
"" \ " set \$b = \$b + 1" \
"run while loop" " if \$b == 2" \
" loop_continue" \
" end" \
" set \$total = \$total + 1" \
" end" \
"end"] \
"" \
"run while loop"
gdb_test "print \$a" " = 5" "validate \$a" gdb_test "print \$a" " = 5" "validate \$a"
gdb_test "print \$b" " = 3" "validate \$b" gdb_test "print \$b" " = 5" "validate \$b"
gdb_test "print \$total" " = 16" "validate \$total"
} }
# Test an input line split with a continuation character (backslash) # Test an input line split with a continuation character (backslash)