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