1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
# Copyright 2019-2023 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/>.
# This file tests 'info types' for some Fortran types.
load_lib "fortran.exp"
load_lib "sym-info-cmds.exp"
if { [skip_fortran_tests] } { return }
standard_testfile info-types.f90 info-types-2.f90
if { [prepare_for_testing "failed to prepare" $testfile \
[list $srcfile2 $srcfile] {debug f90}] } {
return -1
}
if { ![fortran_runto_main] } {
perror "Could not run to main."
return
}
set integer4 [fortran_int4]
set integer8 [fortran_int8]
set logical4 [fortran_logical4]
set character1 [fortran_character1]
set real4 [fortran_real4]
GDBInfoSymbols::run_command "info types"
GDBInfoSymbols::check_header "All defined types:"
GDBInfoSymbols::check_optional_entry "${srcfile}" "" "${character1}"
GDBInfoSymbols::check_entry "${srcfile}" "" "${integer4}"
GDBInfoSymbols::check_entry "${srcfile}" "" "${logical4}"
GDBInfoSymbols::check_entry "${srcfile}" "$decimal" "Type m1t1;"
GDBInfoSymbols::check_entry "${srcfile}" "" "${real4}"
# The emission of the 'Type s1' at global scope is actually not expected. The
# type is defined inside the Fortran program and thus scoped to it as well.
# However, gfortran (13) emits its DIE as a child of the whole cu, while flang
# and ifx emit the DIE as a child of the main program info_types_test. As
# 'info types' only checks for types stored in the GLOBAL_BLOCK, or
# STATIC_BLOCK we should not expect this type as an output here. Still, we
# leave the test here for now (for gfortarn only) as it also covers a line info
# bug (see gcc/105454). The bug for the type scoping can be found at
# gcc/105785. Should gfortran fix this in some future version this test will
# start to fail and should be removed.
if { [test_compiler_info {gfortran-*} f90] } {
setup_xfail *-*-* gcc/105454
GDBInfoSymbols::check_entry "${srcfile}" "41" "Type s1;"
}
return 0
gdb_test "info types" \
[multi_line \
"All defined types:" \
"" \
"File .*:" \
"\[\t \]+${character1}" \
"\[\t \]+${integer4}" \
"(\[\t \]+${integer8}" \
")?\[\t \]+${logical4}" \
"(35:\[\t \]+Type __vtype_mod1_M1t1;" \
")?$decimal:\[\t \]+Type m1t1;" \
"\[\t \]+${real4}" \
"41:\[\t \]+Type s1;(" \
".*)?"]
|