forked from Imagelibrary/binutils-gdb
Currently, when a type is declared in a subprogram that isn't part of
a package, gdb will give this type a qualified name. E.g., in the
program for gdb.ada/arr_arr.exp:
procedure Foo is
type Array2_First is array (24 .. 26) of Integer;
gdb will name this type 'foo.array2_first'.
However, with some coming changes to GNAT (and with the remainder of
this series applied as well), this will no longer happen. Instead,
such types will be given their local name. IMO this makes more sense
anyway.
This patch updates most of the Ada tests to allow either form in the
spots where it matters. Both are accepted so that the tests continue
to work with older versions of GNAT. (A few tests are handled in
separate patches; this patch only contains the straightforward
changes.)
110 lines
2.9 KiB
Plaintext
110 lines
2.9 KiB
Plaintext
# Copyright 2008-2024 Free Software Foundation, Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
load_lib "ada.exp"
|
|
|
|
require allow_ada_tests
|
|
|
|
standard_ada_testfile foo
|
|
|
|
foreach_gnat_encoding scenario flags {all minimal} {
|
|
lappend flags debug
|
|
|
|
if {[gdb_compile_ada "${srcfile}" "${binfile}-${scenario}" executable $flags] != ""} {
|
|
return -1
|
|
}
|
|
|
|
clean_restart ${testfile}-${scenario}
|
|
|
|
set bp_location [gdb_get_line_number "STOP" ${testdir}/foo.adb]
|
|
if {![runto "foo.adb:$bp_location"]} {
|
|
return
|
|
}
|
|
|
|
# Accept "foo." prefix for older versions of GNAT.
|
|
gdb_test "print string_p" \
|
|
"= \\((foo\\.)?string_access\\) 0x\[0-9a-zA-Z\]+"
|
|
|
|
gdb_test "print string_p(3..4)" "= \"ll\""
|
|
|
|
gdb_test "print null_string" "= \\((foo\\.)?string_access\\) 0x0"
|
|
|
|
gdb_test "print arr_ptr" "= \\(access (foo\\.)?little_array\\) 0x\[0-9a-zA-Z\]+"
|
|
|
|
gdb_test "print arr_ptr(2)" "= 22"
|
|
|
|
gdb_test "print arr_ptr(3..4)" "= \\(3 => 23, 24\\)"
|
|
|
|
gdb_test "ptype arr_ptr" \
|
|
[string_to_regexp "type = access array (1 .. 10) of integer"]
|
|
gdb_test "ptype arr_ptr.all" \
|
|
[string_to_regexp "type = array (1 .. 10) of integer"]
|
|
|
|
gdb_test "ptype string_access" "= access array \\(<>\\) of character"
|
|
|
|
# GNAT >= 12.0 has the needed fix here.
|
|
set xfail_expected 0
|
|
if {$scenario == "minimal" && [gnat_version_compare < 12]} {
|
|
set xfail_expected 1
|
|
}
|
|
|
|
gdb_test_multiple "print pa_ptr.all" "" {
|
|
-re -wrap " = \\(10, 20, 30, 40, 50, 60, 62, 63, -23, 42\\)" {
|
|
pass $gdb_test_name
|
|
}
|
|
-re -wrap " = \[0-9\]+" {
|
|
if { $xfail_expected } {
|
|
xfail $gdb_test_name
|
|
} else {
|
|
fail $gdb_test_name
|
|
}
|
|
}
|
|
}
|
|
|
|
set xfail_cannot_subscript_re \
|
|
"cannot subscript or call something of type `foo__packed_array_ptr'"
|
|
|
|
gdb_test_multiple "print pa_ptr(3)" "" {
|
|
-re -wrap " = 30" {
|
|
pass $gdb_test_name
|
|
|
|
}
|
|
-re -wrap $xfail_cannot_subscript_re {
|
|
if { $xfail_expected } {
|
|
xfail $gdb_test_name
|
|
} else {
|
|
fail $gdb_test_name
|
|
}
|
|
}
|
|
}
|
|
|
|
set xfail_attempt_to_index_re \
|
|
"Attempt to index or call something other than an array or function"
|
|
|
|
gdb_test_multiple "print pa_ptr.all(3)" "" {
|
|
-re -wrap " = 30" {
|
|
pass $gdb_test_name
|
|
|
|
}
|
|
-re -wrap $xfail_attempt_to_index_re {
|
|
if { $xfail_expected } {
|
|
xfail $gdb_test_name
|
|
} else {
|
|
fail $gdb_test_name
|
|
}
|
|
}
|
|
}
|
|
}
|