[committed][gdb/testsuite] Fix gdb.fortran/ptype-on-functions.exp with gcc-4.8

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[committed][gdb/testsuite] Fix gdb.fortran/ptype-on-functions.exp with gcc-4.8

Tom de Vries
Hi,

When running test-case gdb.fortran/ptype-on-functions.exp with gfortran 4.8.5,
we run into:
...
(gdb) ptype some_module::get_number^M
type = integer(kind=4) (Type __class_some_module_Number)^M
(gdb) FAIL: gdb.fortran/ptype-on-functions.exp: ptype some_module::get_number
ptype some_module::set_number^M
type = void (Type __class_some_module_Number, integer(kind=4))^M
(gdb) FAIL: gdb.fortran/ptype-on-functions.exp: ptype some_module::set_number
...

The test-case pattern expects a "_t" suffix on "__class_some_module_Number".

The difference is caused by a gcc commit 073afca6884 'class.c
(gfc_build_class_symbol): Append "_t" to target class names to make the
generated type names unique' which has been present since gcc 4.9.0.

Fix the pattern by optionally matching the _t suffix.

Tested on x86_64-linux, with gfortran 4.8.5 and 7.5.0.

Committed to trunk.

Thanks,
- Tom

[gdb/testsuite] Fix gdb.fortran/ptype-on-functions.exp with gcc-4.8

gdb/testsuite/ChangeLog:

2020-07-30  Tom de Vries  <[hidden email]>

        * gdb.fortran/ptype-on-functions.exp: Make "_t" suffix on
        "__class_some_module_Number_t" optional.

---
 gdb/testsuite/gdb.fortran/ptype-on-functions.exp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
index 9d447530c2..93e984af24 100644
--- a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
+++ b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
@@ -30,10 +30,10 @@ if ![fortran_runto_main] then {
 }
 
 gdb_test "ptype some_module::get_number" \
-    "type = integer\\(kind=4\\) \\(Type __class_some_module_Number_t\\)"
+    "type = integer\\(kind=4\\) \\(Type __class_some_module_Number(_t)?\\)"
 
 gdb_test "ptype some_module::set_number" \
-    "type = void \\(Type __class_some_module_Number_t, integer\\(kind=4\\)\\)"
+    "type = void \\(Type __class_some_module_Number(_t)?, integer\\(kind=4\\)\\)"
 
 gdb_test "ptype is_bigger" \
     "type = logical\\(kind=4\\) \\(integer\\(kind=4\\), integer\\(kind=4\\)\\)"