]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.fortran/array-indices.exp
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.fortran / array-indices.exp
CommitLineData
213516ef 1# Copyright 2022-2023 Free Software Foundation, Inc.
5d4c63a6
MR
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 the printing of element indices in Fortran arrays.
17
18if {[skip_fortran_tests]} { return -1 }
19
20load_lib fortran.exp
21
22# Build up the expected output for each array.
23set n0 {(-2)}
24set n1 {(-1)}
25set n2 {(0)}
26set n3 {(1)}
27set n4 {(2)}
28set n5 {(3)}
29set a9p9o "($n0 = 9, $n1 = 9, $n2 = 9, $n3 = 9, $n4 = 9, $n5 = 9)"
30set a1p "($n0 = 1, $n1 = 1, $n2 = 1, $n3 = 1, $n4 = 1)"
31set a1p9 "($n0 = 1, $n1 = 1, $n2 = 1, $n3 = 1, $n4 = 1, $n5 = 9)"
32set a2po "($n0 = 2, $n1 = 2, $n2 = 2, $n3 = 2, $n4 = 2)"
33set a2p "($n0 = ${a2po} $n1 = ${a2po} $n2 = ${a2po} $n3 = ${a2po}\
34 $n4 = ${a2po})"
35set a2p9o "($n0 = 2, $n1 = 2, $n2 = 2, $n3 = 2, $n4 = 2, $n5 = 9)"
36set a2p9 "($n0 = ${a2p9o} $n1 = ${a2p9o} $n2 = ${a2p9o} $n3 = ${a2p9o}\
37 $n4 = ${a2p9o} $n5 = ${a9p9o})"
38set a3po "($n0 = 3, $n1 = 3, $n2 = 3, $n3 = 3, $n4 = 3)"
39set a3p "($n0 = ${a3po} $n1 = ${a3po} $n2 = ${a3po} $n3 = ${a3po}\
40 $n4 = ${a3po})"
41set a3p "($n0 = ${a3p} $n1 = ${a3p} $n2 = ${a3p} $n3 = ${a3p} $n4 = ${a3p})"
42set a3p9o "($n0 = 3, $n1 = 3, $n2 = 3, $n3 = 3, $n4 = 3, $n5 = 9)"
43set a3p9 "($n0 = ${a3p9o} $n1 = ${a3p9o} $n2 = ${a3p9o} $n3 = ${a3p9o}\
44 $n4 = ${a3p9o} $n5 = ${a9p9o})"
45set a9p9 "($n0 = ${a9p9o} $n1 = ${a9p9o} $n2 = ${a9p9o} $n3 = ${a9p9o}\
46 $n4 = ${a9p9o} $n5 = ${a9p9o})"
47set a3p9 "($n0 = ${a3p9} $n1 = ${a3p9} $n2 = ${a3p9} $n3 = ${a3p9}\
48 $n4 = ${a3p9} $n5 = ${a9p9})"
49
50# Convert the output into a regexp.
51set r1p [string_to_regexp $a1p]
52set r1p9 [string_to_regexp $a1p9]
53set r2po [string_to_regexp $a2po]
54set r2p9o [string_to_regexp $a2p9o]
55set r2p [string_to_regexp $a2p]
56set r2p9 [string_to_regexp $a2p9]
57set r3po [string_to_regexp $a3po]
58set r3p9o [string_to_regexp $a3p9o]
59set r3p [string_to_regexp $a3p]
60set r3p9 [string_to_regexp $a3p9]
61
62set rep5 "<repeats 5 times>"
63set rep6 "<repeats 6 times>"
64
65proc array_repeat { variant } {
66 global testfile srcfile
67 upvar n0 n0 n1 n1 n2 n2 n5 n5
68 upvar r1p r1p r1p9 r1p9 r2po r2po r2p9o r2p9o r2p r2p r2p9 r2p9
69 upvar r3po r3po r3p9o r3p9o r3p r3p r3p9 r3p9
70 upvar a2po a2po a2p9o a2p9o a3po a3po a3p9o a3p9o
71 upvar rep5 rep5 rep6 rep6
72
73 standard_testfile "${variant}.f90"
74
75 if {[prepare_for_testing ${testfile}.exp ${variant} ${srcfile} \
76 {debug f90}]} {
77 return -1
78 }
79
80 with_test_prefix "${variant}" {
81 gdb_test_no_output "set print array-indexes on"
82 }
83
84 if {![fortran_runto_main]} {
85 perror "Could not run to main."
cdd42066 86 return
5d4c63a6
MR
87 }
88
89 gdb_breakpoint [gdb_get_line_number "Break here"]
90 gdb_continue_to_breakpoint "${variant}"
91
92 with_test_prefix "${variant}: repeats=unlimited, elements=unlimited" {
93 # Check the arrays print as expected.
94 gdb_test_no_output "set print repeats unlimited"
95 gdb_test_no_output "set print elements unlimited"
96
97 gdb_test "print array_1d" "${r1p}"
98 gdb_test "print array_1d9" "${r1p9}"
99 gdb_test "print array_2d" "${r2p}"
100 gdb_test "print array_2d9" "${r2p9}"
101 gdb_test "print array_3d" "${r3p}"
102 gdb_test "print array_3d9" "${r3p9}"
103 }
104
105 with_test_prefix "${variant}: repeats=4, elements=unlimited" {
106 # Now set the repeat limit.
107 gdb_test_no_output "set print repeats 4"
108 gdb_test_no_output "set print elements unlimited"
109
110 gdb_test "print array_1d" \
111 [string_to_regexp "($n0 = 1, ${rep5})"]
112 gdb_test "print array_1d9" \
113 [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"]
114 gdb_test "print array_2d" \
115 [string_to_regexp "($n0 = ($n0 = 2, ${rep5}) ${rep5})"]
116 gdb_test "print array_2d9" \
117 [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9) ${rep5}\
118 $n5 = ($n0 = 9, ${rep6}))"]
119 gdb_test "print array_3d" \
120 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}) ${rep5})\
121 ${rep5})"]
122 gdb_test "print array_3d9" \
123 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\
124 ${rep5} $n5 = ($n0 = 9, ${rep6}))\
125 ${rep5}\
126 $n5 = ($n0 = ($n0 = 9, ${rep6}) ${rep6}))"]
127 }
128
129 with_test_prefix "${variant}: repeats=unlimited, elements=12" {
130 # Now set the element limit.
131 gdb_test_no_output "set print repeats unlimited"
132 gdb_test_no_output "set print elements 12"
133
134 gdb_test "print array_1d" "${r1p}"
135 gdb_test "print array_1d9" "${r1p9}"
136 gdb_test "print array_2d" \
137 [string_to_regexp "($n0 = ${a2po} $n1 = ${a2po}\
138 $n2 = ($n0 = 2, $n1 = 2, ...) ...)"]
139 gdb_test "print array_2d9" \
140 [string_to_regexp "($n0 = ${a2p9o} $n1 = ${a2p9o} ...)"]
141 gdb_test "print array_3d" \
142 [string_to_regexp "($n0 = ($n0 = ${a3po} $n1 = ${a3po}\
143 $n2 = ($n0 = 3, $n1 = 3, ...)\
144 ...) ...)"]
145 gdb_test "print array_3d9" \
146 [string_to_regexp "($n0 = ($n0 = ${a3p9o} $n1 = ${a3p9o} ...)\
147 ...)"]
148 }
149
150 with_test_prefix "${variant}: repeats=4, elements=12" {
151 # Now set both limits.
152 gdb_test_no_output "set print repeats 4"
153 gdb_test_no_output "set print elements 12"
154
155 gdb_test "print array_1d" \
156 [string_to_regexp "($n0 = 1, ${rep5})"]
157 gdb_test "print array_1d9" \
158 [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"]
159 gdb_test "print array_2d" \
160 [string_to_regexp "($n0 = ($n0 = 2, ${rep5})\
161 $n1 = ($n0 = 2, ${rep5})\
162 $n2 = ($n0 = 2, $n1 = 2, ...) ...)"]
163 gdb_test "print array_2d9" \
164 [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9)\
165 $n1 = ($n0 = 2, ${rep5}, $n5 = 9) ...)"]
166 gdb_test "print array_3d" \
167 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5})\
168 $n1 = ($n0 = 3, ${rep5})\
169 $n2 = ($n0 = 3, $n1 = 3, ...) ...) ...)"]
170 gdb_test "print array_3d9" \
171 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\
172 $n1 = ($n0 = 3, ${rep5}, $n5 = 9)\
173 ...) ...)"]
174 }
175
176 with_test_prefix "${variant}: repeats=4, elements=30" {
177 # Now set both limits.
178 gdb_test_no_output "set print repeats 4"
179 gdb_test_no_output "set print elements 30"
180
181 gdb_test "print array_1d" \
182 [string_to_regexp "($n0 = 1, ${rep5})"]
183 gdb_test "print array_1d9" \
184 [string_to_regexp "($n0 = 1, ${rep5}, $n5 = 9)"]
185 gdb_test "print array_2d" \
186 [string_to_regexp "($n0 = ($n0 = 2, ${rep5}) ${rep5})"]
187 gdb_test "print array_2d9" \
188 [string_to_regexp "($n0 = ($n0 = 2, ${rep5}, $n5 = 9) ${rep5}\
189 ...)"]
190 gdb_test "print array_3d" \
191 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}) ${rep5})\
192 $n1 = ($n0 = ($n0 = 3, ${rep5}) ...) ...)"]
193 gdb_test "print array_3d9" \
194 [string_to_regexp "($n0 = ($n0 = ($n0 = 3, ${rep5}, $n5 = 9)\
195 ${rep5} ...) ...)"]
196 }
197}
198
199array_repeat "array-repeat"
200array_repeat "array-slices-repeat"