| # 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 <http://www.gnu.org/licenses/>. |
| |
| # 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 |
| } |
| |
| # Avoid shared lib symbols. |
| gdb_test_no_output "set auto-solib-add off" |
| |
| if { ![fortran_runto_main] } { |
| perror "Could not run to main." |
| continue |
| } |
| |
| # Avoid libc symbols. |
| gdb_test "nosharedlibrary" |
| |
| 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}" ".*" |
| |