]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.mi/mi2-syn-frame.exp
Fix for PR gdb/1543.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.mi / mi2-syn-frame.exp
CommitLineData
9b254dd1 1# Copyright 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
2fcf52f0
AC
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
e22f8b7c 5# the Free Software Foundation; either version 3 of the License, or
2fcf52f0 6# (at your option) any later version.
e22f8b7c 7#
2fcf52f0
AC
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
e22f8b7c 12#
2fcf52f0 13# You should have received a copy of the GNU General Public License
e22f8b7c 14# along with this program. If not, see <http://www.gnu.org/licenses/>.
2fcf52f0 15
2fcf52f0
AC
16# Test MI output with synthetic frames on the stack (call dummies,
17# signal handlers).
18
19if [target_info exists gdb,nosignals] {
20 verbose "Skipping mi-syn-frame.exp because of nosignals."
21 continue
22}
23
24load_lib mi-support.exp
25set MIFLAGS "-i=mi2"
26
27set testfile "mi-syn-frame"
28set srcfile ${testfile}.c
29set binfile ${objdir}/${subdir}/${testfile}
30if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
b60f0898
JB
31 untested mi2-syn-frame.exp
32 return -1
2fcf52f0
AC
33}
34
35set my_mi_gdb_prompt "\\(gdb\\)\[ \]*\[\r\n\]*"
36
37mi_gdb_exit
38mi_gdb_start
2fcf52f0
AC
39mi_run_to_main
40
d24317b4
VP
41mi_create_breakpoint "foo" 2 keep foo ".*mi-syn-frame.c" $decimal $hex \
42 "insert breakpoint foo"
2fcf52f0
AC
43
44#
45# Call foo() by hand, where we'll hit a breakpoint.
46#
47
e1ac3328 48mi_gdb_test "401-data-evaluate-expression foo()" ".*401\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(foo\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\"" "call inferior's function with a breakpoint set in it"
2fcf52f0 49
589e074d 50mi_gdb_test "402-stack-list-frames" "402\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]" "backtrace from inferior function stopped at bp, showing gdb dummy frame"
2fcf52f0
AC
51
52#
53# Continue back to main()
54#
55
e1ac3328 56mi_send_resuming_command "exec-continue" "testing exec continue"
f7f9a841
VP
57
58mi_expect_stop "really-no-reason" "" "" "" "" "" "finished exec continue"
2fcf52f0 59
f1ea48cb
BR
60mi_gdb_test "404-stack-list-frames 0 0" \
61 "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
62 "list stack frames"
2fcf52f0
AC
63
64
65#
66# Call have_a_very_merry_interrupt() which will eventually raise a signal
67# that's caught by handler() which calls subroutine().
68
d24317b4
VP
69mi_create_breakpoint "subroutine" 3 keep subroutine ".*mi-syn-frame.c" $decimal $hex \
70 "insert breakpoint subroutine"
2fcf52f0 71
f1ea48cb 72mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \
e1ac3328 73 ".*406\\^error,msg=\"The program being debugged stopped while in a function called from GDB.\\\\nWhen the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\nstop \\(instead of continuing to evaluate the expression containing\\\\nthe function call\\).\"" \
f1ea48cb 74 "evaluate expression have_a_very_merry_interrupt"
2fcf52f0
AC
75
76# We should have both a signal handler and a call dummy frame
77# in this next output.
78
f1ea48cb
BR
79mi_gdb_test "407-stack-list-frames" \
80 "407\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"<signal handler called>\"\},.*frame=\{level=\"$decimal\",addr=\"$hex\",func=\"have_a_very_merry_interrupt\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\"\}.*\\\]" \
81 "list stack frames"
2fcf52f0 82
e1ac3328 83mi_send_resuming_command "exec-continue" "testing exec continue"
2fcf52f0 84
f7f9a841 85mi_expect_stop "really-no-reason" "" "" "" "" "" "finished exec continue"
2fcf52f0 86
f1ea48cb
BR
87mi_gdb_test "409-stack-list-frames 0 0" \
88 "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
89 "list stack frames"
2fcf52f0
AC
90
91#
92# Call bar() by hand, which should get an exception while running.
93#
94
e1ac3328 95mi_gdb_test "410-data-evaluate-expression bar()" ".*410\\^error,msg=\"The program being debugged was signaled while in a function called from GDB.\\\\nGDB remains in the frame where the signal was received.\\\\nTo change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\nEvaluation of the expression containing the function \\(bar\\) will be abandoned.\"" "call inferior function which raises exception"
2fcf52f0 96
589e074d 97mi_gdb_test "411-stack-list-frames" "411\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"bar\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"}.*\\\]" "backtrace from inferior function at exception"
2fcf52f0
AC
98
99mi_gdb_exit
100
101return 0