1 # Copyright
2018-2024 Free Software Foundation
, Inc.
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.
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.
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
/>.
18 require allow_ada_tests gnat_runtime_has_debug_info
20 standard_ada_testfile foo
22 if {[gdb_compile_ada
"${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
26 clean_restart $
{testfile
}
28 # Some global variables used to simplify the maintenance of some of
29 # the regular expressions below.
34 set catchpoint_constraint_error_msg \
35 "Catchpoint $decimal, exception at $hex in foo \\\(\\\).*at .*foo.adb:$decimal$eol$decimal$sp$when Constraint_Error =>"
37 set catchpoint_program_error_msg \
38 "Catchpoint $decimal, exception at $hex in foo \\\(\\\).*at .*foo.adb:$decimal$eol$decimal$sp$when Program_Error =>"
40 set catchpoint_storage_error_msg \
41 "Catchpoint $decimal, exception at $hex in foo \\\(\\\).*at .*foo.adb:$decimal$eol$decimal$sp$when Storage_Error =>"
47 ############################################
48 #
1. Try catching all exceptions handlers. #
49 ############################################
51 gdb_test
"catch handlers" \
52 "Catchpoint $decimal: all Ada exceptions handlers" \
53 "insert catchpoint on all Ada exceptions handlers"
55 #
Continue. The
program should stop at first exception handling.
58 "Continuing\\.$eol$eol$catchpoint_constraint_error_msg" \
59 "continuing to first Constraint_Error exception handlers"
61 # Resume the
program's exception.
63 # The program will first go through a block of code which has an
64 # exception handler, but since no exception is raised, we should
65 # not stop there. Instead, we expect to stop in the handler of
66 # the next exception being raised.
69 "Continuing\\.$eol$eol$catchpoint_storage_error_msg" \
70 "continuing and stopping in Storage_Error exception handlers"
72 gdb_test_no_output "delete 2" \
73 "delete catchpoint on all Ada exceptions handlers"
75 ##################################################
76 # 2. Try catching some named exception handlers. #
77 ##################################################
79 # Insert a catchpoint on Program_Error Ada exception handlers.
81 gdb_test "catch handlers Program_Error" \
82 "Catchpoint $decimal: `Program_Error' Ada exception handlers
" \
83 "insert catchpoint on Program_Error Ada exception handlers"
85 #
Continue, we should not stop at ABORT_SIGNAL but at Program_Error one.
88 "Continuing\\.$eol$eol$catchpoint_program_error_msg" \
89 "continuing without stopping to Program_Error exception handlers"
93 "delete catchpoint on all Program_Error Ada exception handlers"
95 # Insert a catchpoint
on Storage_Error Ada exception handlers.
97 gdb_test
"catch handlers Storage_Error" \
98 "Catchpoint $decimal: `Storage_Error' Ada exception handlers" \
99 "insert catchpoint on Storage_Error Ada exception handlers"
101 #
Continue, we should stop at Storage_Error handlers.
103 gdb_test
"continue" \
104 "Continuing\\.$eol$eol$catchpoint_storage_error_msg" \
105 "continuing without stopping to Storage_Error exception handlers"
109 "delete catchpoint on all Storage_Error Ada exception handlers"
111 ########################################################################
112 #
3. Try catching with condition and without named exception handlers. #
113 ########################################################################
115 # Insert a catchpoint
on all Ada exceptions handlers with condition.
117 gdb_test
"catch handlers if Global_Var = 2" \
118 "Catchpoint $decimal: all Ada exceptions handlers" \
119 "insert catchpoint on all Ada exception handlers with condition"
121 # Check that condition is stored and properly displayed.
123 gdb_test
"info breakpoint" "stop only if Global_Var = 2" \
124 "Check catch handlers with condition"
126 #
Continue, we should not stop at ABORT_SIGNAL but at Program_Error one.
128 gdb_test
"continue" \
129 "Continuing\\.$eol$eol$catchpoint_constraint_error_msg" \
130 "continuing to second Constraint_Error exception handlers"
134 "delete catchpoint on all all Ada exceptions handlers with condition"
136 ################################################################
137 #
4. Try catching with condition and named exception handlers. #
138 ################################################################
140 # Insert a catchpoint
on Program_Error Ada exception handlers with
143 gdb_test
"catch handlers Program_Error if Global_Var = 4" \
144 "Catchpoint $decimal: `Program_Error' Ada exception handlers" \
145 "insert catchpoint on Program_Error Ada exception handlers with condition"
147 #
Continue, we should not stop at first Program_Error handlers but at
150 gdb_test
"continue" \
151 "Continuing\\.$eol$eol$catchpoint_program_error_msg" \
152 "continuing to Program_Error exception handlers"
154 #
Continue, the
program should exit properly.
156 gdb_test
"continue" \
157 "Continuing\\..*$inferior_exited_re.*" \
158 "continuing to program completion"