1 # Copyright
2015-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 set bp_location
[gdb_get_line_number
"BREAK" ${testdir}/foo.adb]
32 runto
"foo.adb:$bp_location"
34 # Pck.A is an array that embeds elements with
variable size so compilers will
35 # emit DWARF attributes such as DW_AT_byte_stride to tell GDB how to
fetch
36 # individual elements. Array stride is also a way to
describe packed arrays
:
37 # make sure we
do not
consider Pck.A as a packed array.
38 gdb_test
"ptype pck.a" "array \\(1 \\.\\. 2\\) of pck\\.r_type"
40 # Make sure this also works with a type from a fully evaluated value. During
41 # evaluation
, dynamic types can be
"resolved" so GDB internals could "forget"
42 # that elements have
variable size. Fortunately
, type resolution of array
43 # elements happens only when processing individual elements
(i.e. the resolved
44 # array type is still associated to the dynamic element type
), so the following
45 # is supposed to work.
46 gdb_test
"print pck.a" \
47 "= \\(\\(l => 0, s => \"\"\\), \\(l => 2, s => \"ab\"\\)\\)"
49 "array \\(1 \\.\\. 2\\) of pck\\.r_type"