]>
Commit | Line | Data |
---|---|---|
213516ef | 1 | # Copyright 2008-2023 Free Software Foundation, Inc. |
a4d0b9c3 JB |
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 | ||
a4d0b9c3 JB |
16 | load_lib "ada.exp" |
17 | ||
7a82e903 PA |
18 | if { [skip_ada_tests] } { return -1 } |
19 | ||
8223e12c | 20 | standard_ada_testfile foo |
a4d0b9c3 | 21 | |
57567375 TT |
22 | foreach_with_prefix scenario {all minimal} { |
23 | set flags [list debug additional_flags=-fgnat-encodings=$scenario] | |
24 | ||
5ae3df22 | 25 | if {[gdb_compile_ada "${srcfile}" "${binfile}-${scenario}" executable $flags] != ""} { |
57567375 TT |
26 | return -1 |
27 | } | |
a4d0b9c3 | 28 | |
5ae3df22 | 29 | clean_restart ${testfile}-${scenario} |
a4d0b9c3 | 30 | |
57567375 | 31 | set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb] |
ed7fbdd0 | 32 | if {![runto "foo.adb:$bp_location"]} { |
57567375 TT |
33 | return |
34 | } | |
a4d0b9c3 | 35 | |
57567375 TT |
36 | gdb_test "print string_p" \ |
37 | "= \\(foo\\.string_access\\) 0x\[0-9a-zA-Z\]+" | |
a4d0b9c3 | 38 | |
57567375 | 39 | gdb_test "print string_p(3..4)" "= \"ll\"" |
af57139d | 40 | |
57567375 | 41 | gdb_test "print null_string" "= \\(foo\\.string_access\\) 0x0" |
af57139d | 42 | |
57567375 | 43 | gdb_test "print arr_ptr" "= \\(access foo\\.little_array\\) 0x\[0-9a-zA-Z\]+" |
af57139d | 44 | |
57567375 | 45 | gdb_test "print arr_ptr(2)" "= 22" |
af57139d | 46 | |
57567375 | 47 | gdb_test "print arr_ptr(3..4)" "= \\(3 => 23, 24\\)" |
af57139d | 48 | |
57567375 | 49 | gdb_test "ptype string_access" "= access array \\(<>\\) of character" |
828292f2 | 50 | |
47a39c6e | 51 | # GNAT >= 12.0 has the needed fix here. |
cbf26882 | 52 | set xfail_expected 0 |
47a39c6e | 53 | if {$scenario == "minimal" && ![test_compiler_info {gcc-1[2-9]-*}]} { |
cbf26882 | 54 | set xfail_expected 1 |
0057a7ee | 55 | } |
51b86426 | 56 | |
cbf26882 TV |
57 | gdb_test_multiple "print pa_ptr.all" "" { |
58 | -re -wrap " = \\(10, 20, 30, 40, 50, 60, 62, 63, -23, 42\\)" { | |
59 | pass $gdb_test_name | |
60 | } | |
61 | -re -wrap " = \[0-9\]+" { | |
62 | if { $xfail_expected } { | |
63 | xfail $gdb_test_name | |
64 | } else { | |
65 | fail $gdb_test_name | |
66 | } | |
67 | } | |
0057a7ee | 68 | } |
51b86426 | 69 | |
cbf26882 TV |
70 | set xfail_cannot_subscript_re \ |
71 | "cannot subscript or call something of type `foo__packed_array_ptr'" | |
72 | ||
73 | gdb_test_multiple "print pa_ptr(3)" "" { | |
74 | -re -wrap " = 30" { | |
75 | pass $gdb_test_name | |
76 | ||
77 | } | |
78 | -re -wrap $xfail_cannot_subscript_re { | |
79 | if { $xfail_expected } { | |
80 | xfail $gdb_test_name | |
81 | } else { | |
82 | fail $gdb_test_name | |
83 | } | |
84 | } | |
85 | } | |
86 | ||
87 | set xfail_attempt_to_index_re \ | |
88 | "Attempt to index or call something other than an array or function" | |
89 | ||
90 | gdb_test_multiple "print pa_ptr.all(3)" "" { | |
91 | -re -wrap " = 30" { | |
92 | pass $gdb_test_name | |
93 | ||
94 | } | |
95 | -re -wrap $xfail_attempt_to_index_re { | |
96 | if { $xfail_expected } { | |
97 | xfail $gdb_test_name | |
98 | } else { | |
99 | fail $gdb_test_name | |
100 | } | |
101 | } | |
0057a7ee | 102 | } |
57567375 | 103 | } |