call.
* gdb.mi/mi-simplerun.exp (test_controlled_execution): Allow finish
to return to the call.
* gdb.mi/mi2-simplerun.exp (test_controlled_execution): Likewise.
* gdb.mi/mi-return.exp (test_return_simple): Likewise.
* gdb.mi/mi2-return.exp (test_return_simple): Likewise.
* gdb.mi/mi-until.exp (test_until): Likewise.
* gdb.mi/mi2-until.exp (test_until): Likewise.
+2007-10-02 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gdb.cp/classes.exp (do_tests): Always step to the line after the
+ call.
+ * gdb.mi/mi-simplerun.exp (test_controlled_execution): Allow finish
+ to return to the call.
+ * gdb.mi/mi2-simplerun.exp (test_controlled_execution): Likewise.
+ * gdb.mi/mi-return.exp (test_return_simple): Likewise.
+ * gdb.mi/mi2-return.exp (test_return_simple): Likewise.
+ * gdb.mi/mi-until.exp (test_until): Likewise.
+ * gdb.mi/mi2-until.exp (test_until): Likewise.
+
2007-10-01 Daniel Jacobowitz <dan@codesourcery.com>
* gdb.mi/var-cmd.c (do_locals_tests): Define lcharacter as a
gdb_breakpoint enums2
gdb_test "continue" ".*Breakpoint .* enums2.*" "continue to enums2(\\(\\)|)"
- gdb_test "finish" "" ""
+ # Leave enums2. Make sure we reach the next line, in case there
+ # are any more instructions to finish the function call.
+ gdb_test_multiple "finish" "" {
+ -re "enums2 \\(\\);.*$gdb_prompt $" {
+ gdb_test "next" "" ""
+ }
+ -re "$gdb_prompt $" { }
+ }
test_enums
gdb_test "finish" "" ""
global hex fullname_syntax srcfile
set line_callee3_head [gdb_get_line_number "callee3 ("]
+ set line_callee3_call [expr $line_callee3_head + 2]
set line_callee3_close_brace [expr $line_callee3_head + 3]
send_gdb "111-exec-return\n"
gdb_expect {
- -re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
+ -re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"($line_callee3_call|$line_callee3_close_brace)\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
-re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
timeout { fail "return from callee4 now (timeout)"
}
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
+ set line_callee3_call [expr $line_callee3_head + 2]
set line_callee3_close_brace [expr $line_callee3_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
# FIXME: A string argument is not printed right; should be fixed and
# we should look for the right thing here.
# NOTE: The ``.'' is part of ``gdb-result-var="$1"''
- mi_finish_to "callee3" ".*" "basics.c" $line_callee3_close_brace ".1" "0" "exec-finish"
+ mi_finish_to "callee3" ".*" "basics.c" \
+ "($line_callee3_call|$line_callee3_close_brace)" ".1" "0" "exec-finish"
}
proc test_controlling_breakpoints {} {
send_gdb "444-exec-until until.c:25\n"
gdb_expect {
- -re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
+ -re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"(23|24)\"\}\r\n$mi_gdb_prompt$" {
pass "until after current function"
}
timeout {
global hex fullname_syntax srcfile
set line_callee3_head [gdb_get_line_number "callee3 ("]
+ set line_callee3_call [expr $line_callee3_head + 2]
set line_callee3_close_brace [expr $line_callee3_head + 3]
send_gdb "111-exec-return\n"
gdb_expect {
- -re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$line_callee3_close_brace\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
+ -re "111\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee3\",args=\\\[.*\\\],file=\".*basics.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"($line_callee3_call|$line_callee3_close_brace)\"\}\r\n$mi_gdb_prompt$" {pass "return from callee4 now"}
-re ".*\r\n$mi_gdb_prompt$" { fail "return from callee4 now" }
timeout { fail "return from callee4 now (timeout)"
}
set line_callee4_head [gdb_get_line_number "callee4 ("]
set line_callee4_body [expr $line_callee4_head + 2]
set line_callee3_head [gdb_get_line_number "callee3 ("]
+ set line_callee3_call [expr $line_callee3_head + 2]
set line_callee3_close_brace [expr $line_callee3_head + 3]
set line_callee1_head [gdb_get_line_number "callee1 ("]
set line_callee1_body [expr $line_callee1_head + 2]
# FIXME: A string argument is not printed right; should be fixed and
# we should look for the right thing here.
# NOTE: The ``.'' is part of ``gdb-result-var="$1"''
- mi_finish_to "callee3" ".*" "basics.c" $line_callee3_close_brace ".1" "0" "exec-finish"
+ mi_finish_to "callee3" ".*" "basics.c" \
+ "($line_callee3_call|$line_callee3_close_brace)" ".1" "0" "exec-finish"
}
proc test_controlling_breakpoints {} {
send_gdb "444-exec-until until.c:25\n"
gdb_expect {
- -re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"24\"\}\r\n$mi_gdb_prompt$" {
+ -re "444\\^running\r\n${mi_gdb_prompt}444\\*stopped,reason=\"location-reached\",thread-id=\"\[01\]\",frame=\{addr=\"$hex\",func=\"main\",args=\\\[\\\],file=\".*until.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"(23|24)\"\}\r\n$mi_gdb_prompt$" {
pass "until after current function"
}
timeout {