
With -fgnat-encodings=minimal, Gnat will emit DW_TAG_array_type that has a name -- and this is the only time the name is emitted for the type. (For comparison, in C a typedef would be emitted in this situation.) This patch changes gdb to recognize the name of an array type. This is limited to Ada, to avoid any potential problems if some rogue DWARF happens to name an array type in some other language, and to avoid loading unnecessary partial DIEs. gdb/ChangeLog 2020-11-04 Tom Tromey <tromey@adacore.com> * dwarf2/read.c (add_partial_symbol, process_die): Handle DW_TAG_array_type. (is_type_tag_for_partial): Add "lang" parameter. (load_partial_dies, new_symbol): Handle DW_TAG_array_type. gdb/testsuite/ChangeLog 2020-11-04 Tom Tromey <tromey@adacore.com> * gdb.ada/tick_length_array_enum_idx.exp: Add ptype test. * gdb.ada/tick_length_array_enum_idx/foo_n207_004.adb (PT_Full): New variable. * gdb.ada/tick_length_array_enum_idx/pck.adb (Full_PT): New type.
44 lines
1.6 KiB
Text
44 lines
1.6 KiB
Text
# Copyright 2014-2020 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"
|
|
|
|
if { [skip_ada_tests] } { return -1 }
|
|
|
|
standard_ada_testfile foo_n207_004
|
|
|
|
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
|
|
return -1
|
|
}
|
|
|
|
clean_restart ${testfile}
|
|
|
|
set bp_location [gdb_get_line_number "STOP" ${testdir}/foo_n207_004.adb]
|
|
runto "foo_n207_004.adb:$bp_location"
|
|
|
|
gdb_test "print full'length" "= 5"
|
|
gdb_test "print prim'length" "= 3"
|
|
gdb_test "print cold'length" "= 3"
|
|
gdb_test "print vars'length" "= 2"
|
|
|
|
gdb_test "ptype full'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype prim'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype cold'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype vars'length" "type = <$decimal-byte integer>"
|
|
|
|
gdb_test "ptype full_table'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype primary_table'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype variable_table'length" "type = <$decimal-byte integer>"
|
|
gdb_test "ptype full_pt'length" "type = <$decimal-byte integer>"
|