# Copyright 2019-2021 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 . # This file tests 'info modules', 'info module functions', and 'info # module variables'. load_lib "fortran.exp" load_lib "sym-info-cmds.exp" if { [skip_fortran_tests] } { continue } 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." continue } set logical4 [fortran_logical4] set integer4 [fortran_int4] set real4 [fortran_real4] # Test 'info modules' command. GDBInfoSymbols::run_command "info modules" GDBInfoSymbols::check_header "All defined modules:" GDBInfoSymbols::check_entry "${srcfile2}" "18" "mod2" GDBInfoSymbols::check_entry "${srcfile}" "16" "mod1" GDBInfoSymbols::check_no_entry "${srcfile}" GDBInfoSymbols::check_no_entry "${srcfile2}" GDBInfoSymbols::run_command "info modules 1" GDBInfoSymbols::check_header \ "All modules matching regular expression \"1\":" GDBInfoSymbols::check_entry "${srcfile}" "16" "mod1" GDBInfoSymbols::check_no_entry "${srcfile}" GDBInfoSymbols::check_no_entry "${srcfile2}" GDBInfoSymbols::run_command "info modules 2" GDBInfoSymbols::check_header \ "All modules matching regular expression \"2\":" GDBInfoSymbols::check_entry "${srcfile2}" "18" "mod2" GDBInfoSymbols::check_no_entry "${srcfile}" GDBInfoSymbols::check_no_entry "${srcfile2}" GDBInfoSymbols::run_command "info modules mod" GDBInfoSymbols::check_header \ "All modules matching regular expression \"mod\":" GDBInfoSymbols::check_entry "${srcfile2}" "18" "mod2" GDBInfoSymbols::check_entry "${srcfile}" "16" "mod1" GDBInfoSymbols::check_no_entry "${srcfile}" GDBInfoSymbols::check_no_entry "${srcfile2}" # Test 'info module functions'. GDBInfoModuleSymbols::run_command "info module functions" GDBInfoModuleSymbols::check_header "All functions in all modules:" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "22" \ "void mod2::sub_m2_a\\(${integer4}, ${logical4}\\);" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "30" \ "${logical4} mod2::sub_m2_b\\(${real4}\\);" GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "35" \ "void mod1::__copy_mod1_M1t1\\(Type m1t1, Type m1t1\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "25" \ "void mod1::sub_m1_a\\(${integer4}\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "31" \ "${integer4} mod1::sub_m1_b\\(void\\);" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module functions -m mod1" GDBInfoModuleSymbols::check_header \ "All functions in all modules matching regular expression \"mod1\":" GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "35" \ "void mod1::__copy_mod1_M1t1\\(Type m1t1, Type m1t1\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "25" \ "void mod1::sub_m1_a\\(${integer4}\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "31" \ "${integer4} mod1::sub_m1_b\\(void\\);" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module functions -t integer" GDBInfoModuleSymbols::check_header \ "All functions with type matching regular expression \"integer\" in all modules:" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "22" \ "void mod2::sub_m2_a\\(${integer4}, ${logical4}\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "25" \ "void mod1::sub_m1_a\\(${integer4}\\);" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "31" \ "${integer4} mod1::sub_m1_b\\(void\\);" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" # Test 'info module variables'. GDBInfoModuleSymbols::run_command "info module variables" GDBInfoModuleSymbols::check_header "All variables in all modules:" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "19" \ "${integer4} mod2::mod2_var_1;" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "20" \ "${real4} mod2::mod2_var_2;" GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "(35)?" \ "Type m1t1 mod1::__def_init_mod1_M1t1;" GDBInfoModuleSymbols::check_optional_entry "${srcfile}" "mod1" "(35)?" \ "Type __vtype_mod1_M1t1 mod1::__vtab_mod1_M1t1;" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "21" \ "${real4} mod1::mod1_var_1;" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "22" \ "${integer4} mod1::mod1_var_2;" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module variables -t real" GDBInfoModuleSymbols::check_header \ "All variables with type matching regular expression \"real\" in all modules:" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "20" \ "${real4} mod2::mod2_var_2;" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "21" \ "${real4} mod1::mod1_var_1;" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module variables -m mod2" GDBInfoModuleSymbols::check_header \ "All variables in all modules matching regular expression \"mod2\":" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "19" \ "${integer4} mod2::mod2_var_1;" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "20" \ "${real4} mod2::mod2_var_2;" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module variables -m mod2 -t real" GDBInfoModuleSymbols::check_header \ "All variables with type matching regular expression \"real\" in all modules matching regular expression \"mod2\":" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "20" \ "${real4} mod2::mod2_var_2;" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*" GDBInfoModuleSymbols::run_command "info module variables _1" GDBInfoModuleSymbols::check_header \ "All variables matching regular expression \"_1\" in all modules:" GDBInfoModuleSymbols::check_entry "${srcfile2}" "mod2" "19" \ "${integer4} mod2::mod2_var_1;" GDBInfoModuleSymbols::check_entry "${srcfile}" "mod1" "21" \ "${real4} mod1::mod1_var_1;" GDBInfoModuleSymbols::check_no_entry "${srcfile}" ".*" GDBInfoModuleSymbols::check_no_entry "${srcfile2}" ".*"