Automatic Copyright Year update after running gdb/copyright.py
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.mi / mi-fortran-modules.exp
CommitLineData
88b9d363 1# Copyright 2019-2022 Free Software Foundation, Inc.
db5960b4
AB
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16# Test -symbol-info-modules, listing Fortran modules.
17
0bf21fbd
GB
18if { [skip_fortran_tests] } { return -1 }
19
db5960b4
AB
20load_lib fortran.exp
21load_lib mi-support.exp
22set MIFLAGS "-i=mi"
23
24standard_testfile "mi-fortran-modules.f90" "mi-fortran-modules-2.f90"
25
26if {[prepare_for_testing "failed to prepare" ${testfile} \
8d70a9f0 27 [list $srcfile2 $srcfile] {debug f90}]} {
db5960b4
AB
28 return -1
29}
30
b75d55d4 31mi_clean_restart $binfile
db5960b4 32
b75d55d4 33mi_runto_main
db5960b4 34
b43315e2
AB
35
36# Patterns to skip optional system modules that appear with later versions of GFortran.
37set system_modules_pattern \
38 "\{filename=\"\[^\"\]+/ieee/\[^/\]+\.F90\",fullname=\"\[^\"\]+\",symbols=\\\[(\[^\]\]+)\\\]\},"
39set system_module_symbols_pattern \
40 "\{module=\"\[^\"\]*ieee\[^\"\]*\",files=\\\[\{filename=\"\[^\"\]+\",fullname=\"\[^\"\]+\",symbols=\\\[\[^\]\]+\\\]\}\\\]\},"
41
db5960b4 42mi_gdb_test "101-symbol-info-modules" \
b43315e2 43 "101\\^done,symbols=\{debug=\\\[($system_modules_pattern)*\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"16\",name=\"mod1\"\},\{line=\"27\",name=\"mod2\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"16\",name=\"mod3\"\},\{line=\"32\",name=\"modmany\"\},\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \
db5960b4
AB
44 "-symbol-info-modules"
45
46mi_gdb_test "102-symbol-info-modules --name mod\[123\]" \
47 "102\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"16\",name=\"mod1\"\},\{line=\"27\",name=\"mod2\"\}\\\]\},\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"16\",name=\"mod3\"\}\\\]\}\\\]\}" \
48 "-symbol-info-modules --name mod\[123\]"
49
50mi_gdb_test "103-symbol-info-modules --name moduse" \
51 "103\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \
52 "-symbol-info-modules --name moduse"
53
ab44624c
TV
54set test "-symbol-info-module-functions"
55set cmd "104-symbol-info-module-functions"
56set mod1_re \
57 "\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\}"
58set mod2_re \
59 "\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"30\",name=\"mod2::check_var_i\",type=\"void \\(void\\)\",description=\"void mod2::check_var_i\\(void\\);\"\}\\\]\}\\\]\}"
60set mod3_re \
61 "\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\},\{line=\"27\",name=\"mod3::check_mod2\",type=\"void \\(void\\)\",description=\"void mod3::check_mod2\\(void\\);\"\}\\\]\}\\\]\}"
62set modmany_re \
63 "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"35\",name=\"modmany::check_some\",type=\"void \\(void\\)\",description=\"void modmany::check_some\\(void\\);\"\}\\\]\}\\\]\}"
64set moduse_re \
65 "\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"44\",name=\"moduse::check_all\",type=\"void \\(void\\)\",description=\"void moduse::check_all\\(void\\);\"\},\{line=\"49\",name=\"moduse::check_var_x\",type=\"void \\(void\\)\",description=\"void moduse::check_var_x\\(void\\);\"\}\\\]\}\\\]\}"
66set state 0
67gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ {
68 -re "104\\^done,symbols=\\\[" {
69 if { $state == 0 } { set state 1 }
70 exp_continue
71 }
72 -re "$mod1_re" {
73 if { $state == 1 } { incr state }
74 exp_continue
75 }
76 -re "$mod2_re" {
77 if { $state == 2 } { incr state }
78 exp_continue
79 }
80 -re "$mod3_re" {
81 if { $state == 3 } { incr state }
82 exp_continue
83 }
84 -re "$modmany_re" {
85 if { $state == 4 } { incr state }
86 exp_continue
87 }
88 -re "$moduse_re" {
89 if { $state == 5 } { incr state }
90 exp_continue
91 }
92 -re ${system_module_symbols_pattern} {
93 exp_continue
94 }
95 -re "\\\]\r\n$mi_gdb_prompt$" {
96 if { $state == 6 } {
97 pass $gdb_test_name
98 } else {
99 fail $gdb_test_name
100 }
101 }
102}
293b38d6
AB
103
104mi_gdb_test "105-symbol-info-module-functions --name _all" \
105 "105\\^done,symbols=\\\[\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"44\",name=\"moduse::check_all\",type=\"void \\(void\\)\",description=\"void moduse::check_all\\(void\\);\"\}\\\]\}\\\]\}\\\]" \
106 "-symbol-info-module-functions --name _all"
107
108mi_gdb_test "106-symbol-info-module-functions --module mod\[123\]" \
109 "106\\^done,symbols=\\\[\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"30\",name=\"mod2::check_var_i\",type=\"void \\(void\\)\",description=\"void mod2::check_var_i\\(void\\);\"\}\\\]\}\\\]\},\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"21\",name=\"mod3::check_all\",type=\"void \\(void\\)\",description=\"void mod3::check_all\\(void\\);\"\},\{line=\"27\",name=\"mod3::check_mod2\",type=\"void \\(void\\)\",description=\"void mod3::check_mod2\\(void\\);\"\}\\\]\}\\\]\}\\\]" \
110 "-symbol-info-module-functions --module mod\[123\]"
111
112set int4 [fortran_int4]
113
ab44624c
TV
114set mod1_re \
115 "\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"18\",name=\"mod1::var_const\",type=\"$int4\",description=\"$int4 mod1::var_const;\"\},\{line=\"17\",name=\"mod1::var_i\",type=\"$int4\",description=\"$int4 mod1::var_i;\"\}\\\]\}\\\]\}"
116set mod2_re \
117 "\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"28\",name=\"mod2::var_i\",type=\"$int4\",description=\"$int4 mod2::var_i;\"\}\\\]\}\\\]\}"
118set mod3_re \
119 "\{module=\"mod3\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"18\",name=\"mod3::mod1\",type=\"$int4\",description=\"$int4 mod3::mod1;\"\},\{line=\"17\",name=\"mod3::mod2\",type=\"$int4\",description=\"$int4 mod3::mod2;\"\},\{line=\"19\",name=\"mod3::var_i\",type=\"$int4\",description=\"$int4 mod3::var_i;\"\}\\\]\}\\\]\}"
120set modmany_re \
121 "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"33\",name=\"modmany::var_a\",type=\"$int4\",description=\"$int4 modmany::var_a;\"\},\{line=\"33\",name=\"modmany::var_b\",type=\"$int4\",description=\"$int4 modmany::var_b;\"\},\{line=\"33\",name=\"modmany::var_c\",type=\"$int4\",description=\"$int4 modmany::var_c;\"\},\{line=\"33\",name=\"modmany::var_i\",type=\"$int4\",description=\"$int4 modmany::var_i;\"\}\\\]\}\\\]\}"
122set moduse_re \
123 ",\{module=\"moduse\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"42\",name=\"moduse::var_x\",type=\"$int4\",description=\"$int4 moduse::var_x;\"\},\{line=\"42\",name=\"moduse::var_y\",type=\"$int4\",description=\"$int4 moduse::var_y;\"\}\\\]\}\\\]\}"
124
125set cmd "107-symbol-info-module-variables"
126set test "-symbol-info-module-variables"
127set state 0
128gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ {
129 -re "107\\^done,symbols=\\\[" {
130 if { $state == 0 } { set state 1 }
131 exp_continue
132 }
133 -re "$mod1_re" {
134 if { $state == 1 } { incr state }
135 exp_continue
136 }
137 -re "$mod2_re" {
138 if { $state == 2 } { incr state }
139 exp_continue
140 }
141 -re "$mod3_re" {
142 if { $state == 3 } { incr state }
143 exp_continue
144 }
145 -re "$modmany_re" {
146 if { $state == 4 } { incr state }
147 exp_continue
148 }
149 -re "$moduse_re" {
150 if { $state == 5 } { incr state }
151 exp_continue
152 }
153 -re ${system_module_symbols_pattern} {
154 exp_continue
155 }
156 -re "\\\]\r\n$mi_gdb_prompt$" {
157 if { $state == 6 } {
158 pass $gdb_test_name
159 } else {
160 fail $gdb_test_name
161 }
162 }
163}
This page took 0.269583 seconds and 4 git commands to generate.