Commit | Line | Data |
---|---|---|
b811d2c2 | 1 | # Copyright 2019-2020 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 | ||
18 | load_lib fortran.exp | |
19 | load_lib mi-support.exp | |
20 | set MIFLAGS "-i=mi" | |
21 | ||
22 | standard_testfile "mi-fortran-modules.f90" "mi-fortran-modules-2.f90" | |
23 | ||
24 | if {[prepare_for_testing "failed to prepare" ${testfile} \ | |
8d70a9f0 | 25 | [list $srcfile2 $srcfile] {debug f90}]} { |
db5960b4 AB |
26 | return -1 |
27 | } | |
28 | ||
29 | gdb_exit | |
30 | if {[mi_gdb_start]} { | |
31 | continue | |
32 | } | |
33 | ||
34 | mi_run_to_main | |
35 | ||
b43315e2 AB |
36 | |
37 | # Patterns to skip optional system modules that appear with later versions of GFortran. | |
38 | set system_modules_pattern \ | |
39 | "\{filename=\"\[^\"\]+/ieee/\[^/\]+\.F90\",fullname=\"\[^\"\]+\",symbols=\\\[(\[^\]\]+)\\\]\}," | |
40 | set system_module_symbols_pattern \ | |
41 | "\{module=\"\[^\"\]*ieee\[^\"\]*\",files=\\\[\{filename=\"\[^\"\]+\",fullname=\"\[^\"\]+\",symbols=\\\[\[^\]\]+\\\]\}\\\]\}," | |
42 | ||
db5960b4 | 43 | mi_gdb_test "101-symbol-info-modules" \ |
b43315e2 | 44 | "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 |
45 | "-symbol-info-modules" |
46 | ||
47 | mi_gdb_test "102-symbol-info-modules --name mod\[123\]" \ | |
48 | "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\"\}\\\]\}\\\]\}" \ | |
49 | "-symbol-info-modules --name mod\[123\]" | |
50 | ||
51 | mi_gdb_test "103-symbol-info-modules --name moduse" \ | |
52 | "103\\^done,symbols=\{debug=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"41\",name=\"moduse\"\}\\\]\}\\\]\}" \ | |
53 | "-symbol-info-modules --name moduse" | |
54 | ||
ab44624c TV |
55 | set test "-symbol-info-module-functions" |
56 | set cmd "104-symbol-info-module-functions" | |
57 | set mod1_re \ | |
58 | "\{module=\"mod1\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"21\",name=\"mod1::check_all\",type=\"void \\(void\\)\",description=\"void mod1::check_all\\(void\\);\"\}\\\]\}\\\]\}" | |
59 | set mod2_re \ | |
60 | "\{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\\);\"\}\\\]\}\\\]\}" | |
61 | set mod3_re \ | |
62 | "\{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\\);\"\}\\\]\}\\\]\}" | |
63 | set modmany_re \ | |
64 | "\{module=\"modmany\",files=\\\[\{filename=\"\[^\"\]+$srcfile\",fullname=\"\[^\"\]+$srcfile\",symbols=\\\[\{line=\"35\",name=\"modmany::check_some\",type=\"void \\(void\\)\",description=\"void modmany::check_some\\(void\\);\"\}\\\]\}\\\]\}" | |
65 | set moduse_re \ | |
66 | "\{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\\);\"\}\\\]\}\\\]\}" | |
67 | set state 0 | |
68 | gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ { | |
69 | -re "104\\^done,symbols=\\\[" { | |
70 | if { $state == 0 } { set state 1 } | |
71 | exp_continue | |
72 | } | |
73 | -re "$mod1_re" { | |
74 | if { $state == 1 } { incr state } | |
75 | exp_continue | |
76 | } | |
77 | -re "$mod2_re" { | |
78 | if { $state == 2 } { incr state } | |
79 | exp_continue | |
80 | } | |
81 | -re "$mod3_re" { | |
82 | if { $state == 3 } { incr state } | |
83 | exp_continue | |
84 | } | |
85 | -re "$modmany_re" { | |
86 | if { $state == 4 } { incr state } | |
87 | exp_continue | |
88 | } | |
89 | -re "$moduse_re" { | |
90 | if { $state == 5 } { incr state } | |
91 | exp_continue | |
92 | } | |
93 | -re ${system_module_symbols_pattern} { | |
94 | exp_continue | |
95 | } | |
96 | -re "\\\]\r\n$mi_gdb_prompt$" { | |
97 | if { $state == 6 } { | |
98 | pass $gdb_test_name | |
99 | } else { | |
100 | fail $gdb_test_name | |
101 | } | |
102 | } | |
103 | } | |
293b38d6 AB |
104 | |
105 | mi_gdb_test "105-symbol-info-module-functions --name _all" \ | |
106 | "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\\);\"\}\\\]\}\\\]\}\\\]" \ | |
107 | "-symbol-info-module-functions --name _all" | |
108 | ||
109 | mi_gdb_test "106-symbol-info-module-functions --module mod\[123\]" \ | |
110 | "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\\);\"\}\\\]\}\\\]\}\\\]" \ | |
111 | "-symbol-info-module-functions --module mod\[123\]" | |
112 | ||
113 | set int4 [fortran_int4] | |
114 | ||
ab44624c TV |
115 | set mod1_re \ |
116 | "\{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;\"\}\\\]\}\\\]\}" | |
117 | set mod2_re \ | |
118 | "\{module=\"mod2\",files=\\\[\{filename=\"\[^\"\]+$srcfile2\",fullname=\"\[^\"\]+$srcfile2\",symbols=\\\[\{line=\"28\",name=\"mod2::var_i\",type=\"$int4\",description=\"$int4 mod2::var_i;\"\}\\\]\}\\\]\}" | |
119 | set mod3_re \ | |
120 | "\{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;\"\}\\\]\}\\\]\}" | |
121 | set modmany_re \ | |
122 | "\{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;\"\}\\\]\}\\\]\}" | |
123 | set moduse_re \ | |
124 | ",\{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;\"\}\\\]\}\\\]\}" | |
125 | ||
126 | set cmd "107-symbol-info-module-variables" | |
127 | set test "-symbol-info-module-variables" | |
128 | set state 0 | |
129 | gdb_test_multiple $cmd $test -prompt $mi_gdb_prompt$ { | |
130 | -re "107\\^done,symbols=\\\[" { | |
131 | if { $state == 0 } { set state 1 } | |
132 | exp_continue | |
133 | } | |
134 | -re "$mod1_re" { | |
135 | if { $state == 1 } { incr state } | |
136 | exp_continue | |
137 | } | |
138 | -re "$mod2_re" { | |
139 | if { $state == 2 } { incr state } | |
140 | exp_continue | |
141 | } | |
142 | -re "$mod3_re" { | |
143 | if { $state == 3 } { incr state } | |
144 | exp_continue | |
145 | } | |
146 | -re "$modmany_re" { | |
147 | if { $state == 4 } { incr state } | |
148 | exp_continue | |
149 | } | |
150 | -re "$moduse_re" { | |
151 | if { $state == 5 } { incr state } | |
152 | exp_continue | |
153 | } | |
154 | -re ${system_module_symbols_pattern} { | |
155 | exp_continue | |
156 | } | |
157 | -re "\\\]\r\n$mi_gdb_prompt$" { | |
158 | if { $state == 6 } { | |
159 | pass $gdb_test_name | |
160 | } else { | |
161 | fail $gdb_test_name | |
162 | } | |
163 | } | |
164 | } |