Patchwork [committed,gdb/testsuite] Fix gdb.fortran/info-types.exp regexp

login
register
mail settings
Submitter Tom de Vries
Date Aug. 29, 2019, 12:47 p.m.
Message ID <b3efbfab-12bd-2d48-c434-be19ef90bf6d@suse.de>
Download mbox | patch
Permalink /patch/34321/
State New
Headers show

Comments

Tom de Vries - Aug. 29, 2019, 12:47 p.m.
[ was: Re: [PATCH 5/7] gdb/fortran: Don't include module symbols when
searching for types ]

On 28-08-19 14:37, Andrew Burgess wrote:
> * Andrew Burgess <andrew.burgess@embecosm.com> [2019-07-27 17:22:33 +0100]:
> 
>> Currently the 'info types' command will return symbols that correspond
>> to Fortran modules.  This because the symbols are created with domain
>> MODULE_DOMAIN, but address_class LOC_TYPEDEF, which is the same
>> address_class as type symbols.
>>
>> This commit explicitly prevents MODULE_DOMAIN symbols from appearing
>> when we search for symbols in the TYPES_DOMAIN, this prevents the
>> module symbols from appearing in the output of 'info types'.
>>
>> gdb/ChangeLog:
>>
>> 	* symtab.c (search_symbols): Don't include MODULE_DOMAIN symbols
>> 	when searching for types.
>>
>> gdb/testsuite/ChangeLog:
>>
>> 	* gdb.fortran/info-types.exp: Add module.
>> 	* gdb.fortran/info-types.f90: Update expected results.
> 
> I've now pushed this patch as it only depended on the previous patch
> in this series.

I've committed this fix for the test-case.

Thanks,
- Tom

Patch

[gdb/testsuite] Fix gdb.fortran/info-types.exp regexp

The gdb.fortran/info-types.exp test-case passes with gcc 7 (though not on
openSUSE, due to the extra debug info) and fails with gcc 4.8 and gcc 8.

Fix the gdb_test regexp to fix all those cases.

gdb/testsuite/ChangeLog:

2019-08-29  Tom de Vries  <tdevries@suse.de>

	* gdb.fortran/info-types.exp: Fix gdb_test regexp to allow more
	diverse debug info.
	* lib/fortran.exp (fortran_int8): New proc, based on fortran_int4.

---
 gdb/testsuite/gdb.fortran/info-types.exp | 11 +++++++----
 gdb/testsuite/lib/fortran.exp            | 12 ++++++++++++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/gdb/testsuite/gdb.fortran/info-types.exp b/gdb/testsuite/gdb.fortran/info-types.exp
index 81e67395e8..30646287ee 100644
--- a/gdb/testsuite/gdb.fortran/info-types.exp
+++ b/gdb/testsuite/gdb.fortran/info-types.exp
@@ -31,6 +31,7 @@  if { ![runto MAIN__] } {
 }
 
 set integer4 [fortran_int4]
+set integer8 [fortran_int8]
 set logical4 [fortran_logical4]
 set character1 [fortran_character1]
 
@@ -41,7 +42,9 @@  gdb_test "info types" \
 	 "File .*:" \
 	 "\[\t \]+${character1}" \
 	 "\[\t \]+${integer4}" \
-	 "\[\t \]+${logical4}" \
-	 "20:\[\t \]+Type __vtype_mod1_M1t1;" \
-	 "17:\[\t \]+Type m1t1;" \
-	 "22:\[\t \]+Type s1;" ]
+	 "(\[\t \]+${integer8}" \
+	 ")?\[\t \]+${logical4}" \
+	 "(20:\[\t \]+Type __vtype_mod1_M1t1;" \
+	 ")?$decimal:\[\t \]+Type m1t1;" \
+	 "22:\[\t \]+Type s1;(" \
+	 ".*)?"]
diff --git a/gdb/testsuite/lib/fortran.exp b/gdb/testsuite/lib/fortran.exp
index 81811dbc3c..d523608807 100644
--- a/gdb/testsuite/lib/fortran.exp
+++ b/gdb/testsuite/lib/fortran.exp
@@ -41,6 +41,18 @@  proc fortran_int4 {} {
     }
 }
 
+proc fortran_int8 {} {
+    if {[test_compiler_info {gcc-4-[012]-*}]} {
+	return "int8"
+    } elseif {[test_compiler_info {gcc-*}]} {
+	return "integer\\(kind=8\\)"
+    } elseif {[test_compiler_info {icc-*}]} {
+	return "INTEGER\\(8\\)"
+    } else {
+	return "unknown"
+    }
+}
+
 proc fortran_real4 {} {
     if {[test_compiler_info {gcc-4-[012]-*}]} {
 	return "real4"