[PATCHv2,2/4] gdb/fortran: Add test for module variables in 'info variables' output

Message ID 0b0b47e935820b2f37785548b26be58c2db56807.1570101531.git.andrew.burgess@embecosm.com
State New, archived
Headers

Commit Message

Andrew Burgess Oct. 3, 2019, 11:29 a.m. UTC
  Recent work from Tom Tromey to better handle variables with associated
copy relocations has fixed a Fortran issue where module variables
wouldn't show up in the output of 'info variables'.

This commit adds a test for this functionality to ensure it doesn't
get broken in the future.

gdb/testsuite/ChangeLog:

	* gdb.fortran/module.exp: Extend with 'info variables' test.
---
 gdb/testsuite/ChangeLog              |  4 ++++
 gdb/testsuite/gdb.fortran/module.exp | 24 ++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
  

Patch

diff --git a/gdb/testsuite/gdb.fortran/module.exp b/gdb/testsuite/gdb.fortran/module.exp
index 4d71e7efac5..276f7dc3c24 100644
--- a/gdb/testsuite/gdb.fortran/module.exp
+++ b/gdb/testsuite/gdb.fortran/module.exp
@@ -13,6 +13,8 @@ 
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+load_lib "fortran.exp"
+
 standard_testfile .f90
 
 if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } {
@@ -32,6 +34,28 @@  if ![runto MAIN__] then {
     continue
 }
 
+set int_type [fortran_int4]
+
+# Test 'info variables' can find module variables.
+gdb_test "info variables -n" \
+    [multi_line \
+	 "All defined variables:" \
+	 "" \
+	 "File .*$srcfile:" \
+	 "18:\[ \t\]+${int_type} mod1::var_const;" \
+	 "17:\[ \t\]+${int_type} mod1::var_i;" \
+	 "23:\[ \t\]+${int_type} mod2::var_i;" \
+	 "28:\[ \t\]+${int_type} mod3::mod1;" \
+	 "27:\[ \t\]+${int_type} mod3::mod2;" \
+	 "29:\[ \t\]+${int_type} mod3::var_i;" \
+	 "33:\[ \t\]+${int_type} modmany::var_a;" \
+	 "33:\[ \t\]+${int_type} modmany::var_b;" \
+	 "33:\[ \t\]+${int_type} modmany::var_c;" \
+	 "33:\[ \t\]+${int_type} modmany::var_i;" \
+	 "37:\[ \t\]+${int_type} moduse::var_x;" \
+	 "37:\[ \t\]+${int_type} moduse::var_y;" ]
+
+
 # Do not use simple single-letter names as GDB would pick up for expectedly
 # nonexisting symbols some static variables from system libraries debuginfos.