]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.mi/mi-syn-frame.exp
Update years in copyright notice for the GDB files.
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.mi / mi-syn-frame.exp
CommitLineData
8acc9f48 1# Copyright 2002-2013 Free Software Foundation, Inc.
075559bc
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
075559bc 6# (at your option) any later version.
e22f8b7c 7#
075559bc
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#
075559bc 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/>.
075559bc 15
075559bc
AC
16# Test MI output with synthetic frames on the stack (call dummies,
17# signal handlers).
18
9b1c792e
SC
19if [target_info exists gdb,nosignals] {
20 verbose "Skipping mi-syn-frame.exp because of nosignals."
21 continue
22}
23
075559bc
AC
24load_lib mi-support.exp
25set MIFLAGS "-i=mi"
26
298a9cf0
TT
27standard_testfile
28
9357e021 29if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
b60f0898
JB
30 untested mi-syn-frame.exp
31 return -1
075559bc
AC
32}
33
075559bc 34mi_gdb_exit
d084b331 35mi_gdb_start
075559bc
AC
36mi_run_to_main
37
d24317b4
VP
38mi_create_breakpoint "foo" 2 keep foo ".*mi-syn-frame.c" $decimal $hex \
39 "insert breakpoint foo"
075559bc
AC
40
41#
42# Call foo() by hand, where we'll hit a breakpoint.
43#
44
b89667eb
DE
45mi_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.\"" \
46 "call inferior's function with a breakpoint set in it"
a13e061a 47
075559bc 48
589e074d 49mi_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"
075559bc
AC
50
51#
52# Continue back to main()
53#
e1ac3328 54mi_send_resuming_command "exec-continue" "testing exec continue"
075559bc 55
f7f9a841 56mi_expect_stop "really-no-reason" "" "" "" "" "" "finished exec continue"
40e55bef 57
f1ea48cb
BR
58mi_gdb_test "404-stack-list-frames 0 0" \
59 "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
60 "list stack frames"
075559bc
AC
61
62
63#
64# Call have_a_very_merry_interrupt() which will eventually raise a signal
65# that's caught by handler() which calls subroutine().
66
d24317b4
VP
67mi_create_breakpoint "subroutine" 3 keep subroutine ".*mi-syn-frame.c" $decimal $hex \
68 "insert breakpoint subroutine"
075559bc 69
f1ea48cb 70mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \
b89667eb 71 ".*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.\"" \
d084b331 72 "data evaluate expression"
075559bc
AC
73
74# We should have both a signal handler and a call dummy frame
75# in this next output.
76
f1ea48cb
BR
77mi_gdb_test "407-stack-list-frames" \
78 "407\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",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\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"$decimal\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
79 "list stack frames"
075559bc
AC
80
81
e1ac3328 82mi_send_resuming_command "exec-continue" "testing exec continue"
40e55bef 83
f7f9a841 84mi_expect_stop "really-no-reason" "" "" "" "" "" "finished exec continue"
075559bc 85
f1ea48cb
BR
86mi_gdb_test "409-stack-list-frames 0 0" \
87 "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
88 "list stack frames"
075559bc
AC
89
90#
91# Call bar() by hand, which should get an exception while running.
92#
93
ecd3fd0f 94mi_gdb_test "410-data-evaluate-expression bar()" \
b89667eb 95 ".*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.\"" \
d084b331 96 "call inferior function which raises exception"
075559bc 97
589e074d 98mi_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"
075559bc
AC
99
100mi_gdb_exit
101
102return 0