1 # Copyright 2008-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 "STOP" ${testdir}/foo.adb]
32 if {![runto "foo.adb:$bp_location"]} {
36 gdb_test "print string_p" \
37 "= \\(foo\\.string_access\\) 0x\[0-9a-zA-Z\]+"
39 gdb_test "print string_p(3..4)" "= \"ll\""
41 gdb_test "print null_string" "= \\(foo\\.string_access\\) 0x0"
43 gdb_test "print arr_ptr" "= \\(access foo\\.little_array\\) 0x\[0-9a-zA-Z\]+"
45 gdb_test "print arr_ptr(2)" "= 22"
47 gdb_test "print arr_ptr(3..4)" "= \\(3 => 23, 24\\)"
49 gdb_test "ptype arr_ptr" \
50 [string_to_regexp "type = access array (1 .. 10) of integer"]
51 gdb_test "ptype arr_ptr.all" \
52 [string_to_regexp "type = array (1 .. 10) of integer"]
54 gdb_test "ptype string_access" "= access array \\(<>\\) of character"
56 # GNAT >= 12.0 has the needed fix here.
58 if {$scenario == "minimal" && [gnat_version_compare < 12]} {
62 gdb_test_multiple "print pa_ptr.all" "" {
63 -re -wrap " = \\(10, 20, 30, 40, 50, 60, 62, 63, -23, 42\\)" {
66 -re -wrap " = \[0-9\]+" {
67 if { $xfail_expected } {
75 set xfail_cannot_subscript_re \
76 "cannot subscript or call something of type `foo__packed_array_ptr'"
78 gdb_test_multiple "print pa_ptr(3)" "" {
83 -re -wrap $xfail_cannot_subscript_re {
84 if { $xfail_expected } {
92 set xfail_attempt_to_index_re \
93 "Attempt to index or call something other than an array or function"
95 gdb_test_multiple "print pa_ptr.all(3)" "" {
100 -re -wrap $xfail_attempt_to_index_re {
101 if { $xfail_expected } {