aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.mi
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.mi')
-rw-r--r--gdb/testsuite/gdb.mi/mi-until.exp23
-rw-r--r--gdb/testsuite/gdb.mi/until.c10
2 files changed, 20 insertions, 13 deletions
diff --git a/gdb/testsuite/gdb.mi/mi-until.exp b/gdb/testsuite/gdb.mi/mi-until.exp
index 3fabcd2..2d0bc4e 100644
--- a/gdb/testsuite/gdb.mi/mi-until.exp
+++ b/gdb/testsuite/gdb.mi/mi-until.exp
@@ -42,12 +42,13 @@ mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}
proc test_running_to_foo {} {
- mi_create_breakpoint "10" \
+ set line [gdb_get_line_number "in-loop"]
+ mi_create_breakpoint $line \
"break-insert operation" \
- -number 1 -func foo -file ".*until.c" -line 10
+ -number 1 -func foo -file ".*until.c" -line $line
mi_run_cmd
- mi_expect_stop "breakpoint-hit" "foo" "" ".*until.c" 10 \
+ mi_expect_stop "breakpoint-hit" "foo" "" ".*until.c" $line \
{ "" "disp=\"keep\"" } "run to main"
mi_gdb_test "100-break-delete 1" "100\\^done" "break-delete 1"
@@ -56,17 +57,23 @@ proc test_running_to_foo {} {
proc test_until {} {
setup_kfail gdb/2104 "*-*-*"
- mi_execute_to "exec-until" "end-stepping-range" "foo" "" ".*until.c" "12" "" \
+ set line [gdb_get_line_number "after-loop"]
+ mi_execute_to "exec-until" "end-stepping-range" "foo" "" ".*until.c" $line "" \
"until after while loop"
- mi_execute_to "exec-until 15" "location-reached" "foo" "" ".*until.c" "15" ""\
+ set line [gdb_get_line_number "until-here"]
+ mi_execute_to "exec-until $line" "location-reached" "foo" "" ".*until.c" $line ""\
"until line number"
- mi_execute_to "exec-until until.c:17" "location-reached" "foo" "" ".*until.c" "17" ""\
+ set line [gdb_get_line_number "until-there"]
+ mi_execute_to "exec-until until.c:$line" "location-reached" "foo" "" ".*until.c" $line ""\
"until line number:file"
- # This is supposed to NOT stop at line 25. It stops right after foo is over.
- mi_execute_to "exec-until until.c:25" "location-reached" "main" "" ".*until.c" "(23|24)" ""\
+ # This is supposed to NOT stop at the return statement, but right
+ # after foo is over.
+ set line [gdb_get_line_number "at-return"]
+ mi_execute_to "exec-until until.c:$line" "location-reached" "main" ""\
+ ".*until.c" "([expr $line-2]|[expr $line-1])" ""\
"until after current function"
}
diff --git a/gdb/testsuite/gdb.mi/until.c b/gdb/testsuite/gdb.mi/until.c
index 21bdeda..83beea0 100644
--- a/gdb/testsuite/gdb.mi/until.c
+++ b/gdb/testsuite/gdb.mi/until.c
@@ -8,14 +8,14 @@ foo (void)
i = 0;
while (i < 2)
- i++;
+ i++; /* in-loop */
- x = i;
+ x = i; /* after-loop */
y = 2 * x;
z = x + y;
- y = x + z;
+ y = x + z; /* until-here */
x = 9;
- y = 10;
+ y = 10; /* until-there */
}
int
@@ -24,5 +24,5 @@ main ()
int a = 1;
foo ();
a += 2;
- return 0;
+ return 0; /* at-return */
}