]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.mi/mi-syn-frame.exp
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.mi / mi-syn-frame.exp
CommitLineData
213516ef 1# Copyright 2002-2023 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."
cdd42066 21 return
9b1c792e
SC
22}
23
075559bc
AC
24load_lib mi-support.exp
25set MIFLAGS "-i=mi"
6d52907e 26set any "\[^\"\]+"
075559bc 27
298a9cf0
TT
28standard_testfile
29
9357e021 30if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
5b362f04 31 untested "failed to compile"
b60f0898 32 return -1
075559bc
AC
33}
34
b75d55d4
PA
35mi_clean_restart $binfile
36
37mi_runto_main
075559bc 38
4b48d439
KS
39mi_create_breakpoint "foo" \
40 "insert breakpoint foo" \
41 -number 2 -func foo -file ".*mi-syn-frame.c"
075559bc
AC
42
43#
44# Call foo() by hand, where we'll hit a breakpoint.
45#
46
b89667eb
DE
47mi_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.\"" \
48 "call inferior's function with a breakpoint set in it"
a13e061a 49
075559bc 50
6d52907e 51mi_gdb_test "402-stack-list-frames" "402\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"foo\",file=\".*mi-syn-frame.c\",line=\"$decimal\",arch=\"$any\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"<function called from gdb>\"\},frame=\{level=\"2\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",line=\"$decimal\",arch=\"$any\"\}.*\\\]" "backtrace from inferior function stopped at bp, showing gdb dummy frame"
075559bc
AC
52
53#
54# Continue back to main()
55#
e1ac3328 56mi_send_resuming_command "exec-continue" "testing exec continue"
075559bc 57
b6846ba5
AB
58mi_expect_stop "really-no-reason" "" "" "" "" "" \
59 "finished exec continue after calling foo"
40e55bef 60
f1ea48cb 61mi_gdb_test "404-stack-list-frames 0 0" \
6d52907e 62 "404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"\}.*\\\]" \
b6846ba5 63 "list stack frames, back in main after calling foo"
075559bc
AC
64
65
66#
67# Call have_a_very_merry_interrupt() which will eventually raise a signal
68# that's caught by handler() which calls subroutine().
69
4b48d439
KS
70mi_create_breakpoint "subroutine" \
71 "insert breakpoint subroutine" \
72 -number 3 -func subroutine -file ".*mi-syn-frame.c"
075559bc 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.\"" \
d084b331 76 "data evaluate expression"
075559bc
AC
77
78# We should have both a signal handler and a call dummy frame
79# in this next output.
80
f1ea48cb 81mi_gdb_test "407-stack-list-frames" \
6d52907e 82 "407\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"subroutine\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"handler\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"\},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\",arch=\"$any\"\},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\",arch=\"$any\"\}.*\\\]" \
b6846ba5 83 "list stack frames, with signal handler and dummy frame"
075559bc
AC
84
85
e1ac3328 86mi_send_resuming_command "exec-continue" "testing exec continue"
40e55bef 87
b6846ba5
AB
88mi_expect_stop "really-no-reason" "" "" "" "" "" \
89 "finished exec continue after calling have_a_very_merry_interrupt"
075559bc 90
f1ea48cb 91mi_gdb_test "409-stack-list-frames 0 0" \
6d52907e 92 "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"\}.*\\\]" \
b6846ba5 93 "list stack frames, back in main after calling have_a_very_merry_interrupt"
075559bc
AC
94
95#
96# Call bar() by hand, which should get an exception while running.
97#
98
ecd3fd0f 99mi_gdb_test "410-data-evaluate-expression bar()" \
b89667eb 100 ".*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 101 "call inferior function which raises exception"
075559bc 102
6d52907e 103mi_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\",arch=\"$any\"},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\",arch=\"$any\"}.*\\\]" "backtrace from inferior function at exception"
075559bc
AC
104
105mi_gdb_exit
106
107return 0