aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-07-05 16:26:42 +0200
committerTom de Vries <tdevries@suse.de>2021-07-05 16:26:42 +0200
commit2e333e797ed2663b58a44ada972d489564f8bfea (patch)
tree0260230116552f82630d8375bc3909310505c962 /gdb/testsuite/gdb.fortran/ptype-on-functions.exp
parent99624310dd82542c389c89c2e55d8cae36bb74e1 (diff)
downloadfsf-binutils-gdb-2e333e797ed2663b58a44ada972d489564f8bfea.zip
fsf-binutils-gdb-2e333e797ed2663b58a44ada972d489564f8bfea.tar.gz
fsf-binutils-gdb-2e333e797ed2663b58a44ada972d489564f8bfea.tar.bz2
[gdb/testsuite] Fix fail in gdb.fortran/ptype-on-functions.exp with gcc-7
Since commit 05b85772061 "gdb/fortran: Add type info of formal parameter for clang" I see: ... (gdb) ptype say_string^M type = void (character*(*), integer(kind=4))^M (gdb) FAIL: gdb.fortran/ptype-on-functions.exp: ptype say_string ... The part of the commit causing the fail is: ... gdb_test "ptype say_string" \ - "type = void \\(character\\*\\(\\*\\), integer\\(kind=\\d+\\)\\)" + "type = void \\(character\[^,\]+, $integer8\\)" ... which fails to take into account that for gcc-7 and before, the type for string length of a string argument is int, not size_t. Fix this by allowing both $integer8 and $integer4. Tested on x86_64-linux, with gcc-7 and gcc-10. gdb/testsuite/ChangeLog: 2021-07-05 Tom de Vries <tdevries@suse.de> * gdb.fortran/ptype-on-functions.exp: Allow both $integer8 and $integer4 for size of string length.
Diffstat (limited to 'gdb/testsuite/gdb.fortran/ptype-on-functions.exp')
-rw-r--r--gdb/testsuite/gdb.fortran/ptype-on-functions.exp9
1 files changed, 8 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
index 7519795..7d11967 100644
--- a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
+++ b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp
@@ -33,6 +33,13 @@ set integer4 [fortran_int4]
set logical4 [fortran_logical4]
set integer8 [fortran_int8]
+# A fortran string parameter is passed as a char *, and an additional
+# argument str_ for the string length. The type used for the string length
+# argument is size_t, but for gcc 7 and earlier, the actual type is int
+# instead ( see
+# https://gcc.gnu.org/onlinedocs/gfortran/Argument-passing-conventions.html ).
+set stringlen ($integer8|$integer4)
+
if {[test_compiler_info {clang-*}]} {
set some_module_class_type "Type number"
set some_module_aux_info ", $integer8 \\(10\\)"
@@ -62,7 +69,7 @@ gdb_test "ptype fun_ptr" \
"type = PTR TO -> \\( $integer4 \\(\\) \\(${fun_ptr_arg}\\) \\)"
gdb_test "ptype say_string" \
- "type = void \\(character\[^,\]+, $integer8\\)"
+ "type = void \\(character\[^,\]+, $stringlen\\)"
set say_array_artificial_first_arg ""
if {[test_compiler_info {clang-*}]} {