1 # Copyright
2012-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
20 standard_ada_testfile foo
22 foreach_gnat_encoding scenario flags
{all minimal
} {
25 if {[gdb_compile_ada
"${srcfile}" "${binfile}-${scenario}" executable $flags] != ""} {
29 clean_restart $
{testfile
}-$
{scenario
}
31 # GNAT
9 and
10 are known to fail.
32 if {$scenario
== "minimal"
33 && [gnat_version_compare
>= 9]
34 && [gnat_version_compare
<= 10]} {
40 set bp_location
[gdb_get_line_number
"STOP" ${testdir}/foo.adb]
41 runto
"foo.adb:$bp_location"
43 gdb_test
"ptype full" \
44 "type = array \\(black \\.\\. white\\) of boolean <packed: 1-bit elements>"
46 gdb_test
"print full" " = \\(false, true, false, true, false\\)"
48 gdb_test
"print full'first" " = black"
50 gdb_test
"ptype primary" \
51 "type = array \\(red \\.\\. blue\\) of boolean <packed: 1-bit elements>"
53 gdb_test
"print primary" " = \\(red => false, true, false\\)"
55 gdb_test
"print primary'first" " = red"
57 gdb_test
"ptype cold" \
58 "type = array \\(green \\.\\. blue\\) of boolean <packed: 1-bit elements>"
60 gdb_test
"print cold" " = \\(green => false, true\\)"
62 gdb_test
"print cold'first" " = green"
64 # Note the bounds
values are still not correctly displayed. So we
get
65 # the enum equivalent of
"1 .. 0" (empty range) as the array ranges.
66 # Accept that
for now.
67 # GNAT
>= 11.0 has the needed fix here.
69 setup_kfail
"minimal encodings" *-*-*
71 gdb_test
"ptype small" \
72 "array \\(red \\.\\. green\\) of boolean <packed: 1-bit elements>"
75 setup_kfail
"minimal encodings" *-*-*
77 gdb_test
"print small" " = \\(red => false, true\\)"
80 setup_kfail
"minimal encodings" *-*-*
82 gdb_test
"print small'first" " = red"
85 setup_kfail
"minimal encodings" *-*-*
87 gdb_test
"ptype multi" \
88 "array \\(red \\.\\. green, low .. medium\\) of boolean <packed: 1-bit elements>"
91 setup_kfail
"minimal encodings" *-*-*
93 gdb_test
"print multi" \
94 " = \\(red => \\(low => true, false\\), \\(low => true, false\\)\\)"
97 setup_kfail
"minimal encodings" *-*-*
99 gdb_test
"print multi'first" " = red"
101 set base
"\\(true, false, true, false, true, false, true, false, true, false\\)"
103 foreach x
{1 2 3 4 5 6 7} {
112 setup_kfail
"minimal encodings" *-*-*
114 gdb_test
"print multi_multi" " = \\($matrix, $matrix\\)"
116 setup_kfail
"minimal encodings" *-*-*
118 gdb_test
"print multi_multi(1,3)" " = $base"
120 setup_kfail
"minimal encodings" *-*-*
122 gdb_test
"print multi_multi(2)" " = $matrix"
124 gdb_test
"print multi_access.all" \
125 " = \\(\\(8, 13, 21, 34, 55\\), \\(1, 1, 2, 3, 5\\)\\)"
127 gdb_test
"print confused_array(red, green)" " = 2"
128 gdb_test
"print confused_array(green, red)" " = 6"