]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - 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
1 # Copyright 2002-2024 Free Software Foundation, Inc.
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
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
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.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16 # Test MI output with synthetic frames on the stack (call dummies,
17 # signal handlers).
18
19 require {!target_info exists gdb,nosignals}
20
21 load_lib mi-support.exp
22 set MIFLAGS "-i=mi"
23 set any "\[^\"\]+"
24
25 standard_testfile
26
27 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
28 untested "failed to compile"
29 return -1
30 }
31
32 mi_clean_restart $binfile
33
34 mi_runto_main
35
36 mi_create_breakpoint "foo" \
37 "insert breakpoint foo" \
38 -number 2 -func foo -file ".*mi-syn-frame.c"
39
40 #
41 # Call foo() by hand, where we'll hit a breakpoint.
42 #
43
44 mi_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.\"" \
45 "call inferior's function with a breakpoint set in it"
46
47
48 mi_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"
49
50 #
51 # Continue back to main()
52 #
53 mi_send_resuming_command "exec-continue" "testing exec continue"
54
55 mi_expect_stop "really-no-reason" "" "" "" "" "" \
56 "finished exec continue after calling foo"
57
58 mi_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\",arch=\"$any\"\}.*\\\]" \
60 "list stack frames, back in main after calling foo"
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
67 mi_create_breakpoint "subroutine" \
68 "insert breakpoint subroutine" \
69 -number 3 -func subroutine -file ".*mi-syn-frame.c"
70
71 mi_gdb_test "406-data-evaluate-expression have_a_very_merry_interrupt()" \
72 ".*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.\"" \
73 "data evaluate expression"
74
75 # We should have both a signal handler and a call dummy frame
76 # in this next output.
77
78 mi_gdb_test "407-stack-list-frames" \
79 "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\",(addr_flags=\"PAC\",)?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\"\}.*\\\]" \
80 "list stack frames, with signal handler and dummy frame"
81
82
83 mi_send_resuming_command "exec-continue" "testing exec continue"
84
85 mi_expect_stop "really-no-reason" "" "" "" "" "" \
86 "finished exec continue after calling have_a_very_merry_interrupt"
87
88 mi_gdb_test "409-stack-list-frames 0 0" \
89 "409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\",arch=\"$any\"\}.*\\\]" \
90 "list stack frames, back in main after calling have_a_very_merry_interrupt"
91
92 #
93 # Call bar() by hand, which should get an exception while running.
94 #
95
96 mi_gdb_test "410-data-evaluate-expression bar()" \
97 ".*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.\"" \
98 "call inferior function which raises exception"
99
100 mi_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"
101
102 mi_gdb_exit