Updated copyright notices for most files.
[deliverable/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
AC
15
16# Please email any bugs, comments, and/or additions to this file to:
17# bug-gdb@prep.ai.mit.edu
18
19# Test MI output with synthetic frames on the stack (call dummies,
20# signal handlers).
21
22if [target_info exists gdb,nosignals] {
23 verbose "Skipping mi-syn-frame.exp because of nosignals."
24 continue
25}
26
27load_lib mi-support.exp
28set MIFLAGS "-i=mi2"
29
30set testfile "mi-syn-frame"
31set srcfile ${testfile}.c
32set binfile ${objdir}/${subdir}/${testfile}
33if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
b60f0898
JB
34 untested mi2-syn-frame.exp
35 return -1
2fcf52f0
AC
36}
37
38set my_mi_gdb_prompt "\\(gdb\\)\[ \]*\[\r\n\]*"
39
40mi_gdb_exit
41mi_gdb_start
2fcf52f0
AC
42mi_run_to_main
43
f1ea48cb
BR
44mi_gdb_test "400-break-insert foo" \
45 "400\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \
46 "insert breakpoint foo"
2fcf52f0
AC
47
48
49#
50# Call foo() by hand, where we'll hit a breakpoint.
51#
52
53mi_gdb_test "401-data-evaluate-expression foo()" "\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(foo\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+401\\^error,msg=\"The program being debugged stopped while in a function called from GDB.*\"" "call inferior's function with a breakpoint set in it"
54
589e074d 55mi_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
56
57#
58# Continue back to main()
59#
60
61send_gdb "403-exec-continue\n"
62gdb_expect {
d084b331 63 -re "403\\^running\[\r\n\]+${my_mi_gdb_prompt}403\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
2fcf52f0
AC
64 pass "403-exec-continue"
65 }
66 timeout {
67 fail "403-exec-continue"
68 }
69}
70
f1ea48cb
BR
71mi_gdb_test "404-stack-list-frames 0 0" \
72 "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
73 "list stack frames"
2fcf52f0
AC
74
75
76#
77# Call have_a_very_merry_interrupt() which will eventually raise a signal
78# that's caught by handler() which calls subroutine().
79
f1ea48cb
BR
80mi_gdb_test "405-break-insert subroutine" \
81 "405\\^done,bkpt=\{number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",line=\"$decimal\",times=\"0\"\}" \
82 "insert breakpoint subroutine"
2fcf52f0 83
f1ea48cb 84mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \
d084b331 85 "\\&\"The program being debugged stopped while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"When the function \\(have_a_very_merry_interrupt\\) is done executing, GDB will silently\\\\n\"\[\r\n\]+\\&\"stop \\(instead of continuing to evaluate the expression containing\\\\n\"\[\r\n\]+\\&\"the function call\\).\\\\n\"\[\r\n\]+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 86 "evaluate expression have_a_very_merry_interrupt"
2fcf52f0
AC
87
88# We should have both a signal handler and a call dummy frame
89# in this next output.
90
f1ea48cb
BR
91mi_gdb_test "407-stack-list-frames" \
92 "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\"\}.*\\\]" \
93 "list stack frames"
2fcf52f0
AC
94
95
96send_gdb "408-exec-continue\n"
97gdb_expect {
98 -re "408\\^running\[\r\n\]+${my_mi_gdb_prompt}408\\\*stopped\[\r\n\]+${my_mi_gdb_prompt}$" {
99 pass "408-exec-continue"
100 }
101 timeout {
102 fail "408-exec-continue"
103 }
104}
105
f1ea48cb
BR
106mi_gdb_test "409-stack-list-frames 0 0" \
107 "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
108 "list stack frames"
2fcf52f0
AC
109
110#
111# Call bar() by hand, which should get an exception while running.
112#
113
d084b331 114mi_gdb_test "410-data-evaluate-expression bar()" "\\&\"The program being debugged was signaled while in a function called from GDB.\\\\n\"\[\r\n\]+\\&\"GDB remains in the frame where the signal was received.\\\\n\"\[\r\n\]+\\&\"To change this behavior use \\\\\"set unwindonsignal on\\\\\"\\\\n\"\[\r\n\]+\\&\"Evaluation of the expression containing the function \\(bar\\) will be abandoned.\\\\n\"\[\r\n\]+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 115
589e074d 116mi_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
117
118mi_gdb_exit
119
120return 0
This page took 0.400269 seconds and 4 git commands to generate.