This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] fortran: Testsuite, fix different type naming across compilers.
- From: Bernhard Heckel <bernhard dot heckel at intel dot com>
- To: keiths at redhat dot com
- Cc: gdb-patches at sourceware dot org, Bernhard Heckel <bernhard dot heckel at intel dot com>
- Date: Thu, 14 Apr 2016 08:37:24 +0200
- Subject: [PATCH] fortran: Testsuite, fix different type naming across compilers.
- Authentication-results: sourceware.org; auth=none
Gfortran and ifort have different names for data types. Encapsulate
type names in a library to increase number of supported compilers.
gfortran -4.1 : int4
gfortran>=4.3 : integer(kind=4)
ifort : INTEGER(4)
2016-03-22 Bernhard Heckel <bernhard.heckel@intel.com>
gdb/testsuite/Changelog:
* gdb.fortran/common-block.exp: Use type naming defined in lib fortran.
* gdb.fortran/derived-type.exp: Use type naming defined in lib fortran.
* gdb.fortran/multi-dim.exp: Use type naming defined in lib fortran.
* gdb.fortran/vla-datatypes.exp: Use type naming defined in lib fortran.
* gdb.fortran/vla-ptype-sub.exp: Use type naming defined in lib fortran.
* gdb.fortran/vla-ptype.exp: Use type naming defined in lib fortran.
* gdb.fortran/whatis_type.exp: Use type naming defined in lib fortran.
* lib/fortran.exp: Add type definition for gfortran and ifort compiler.
---
gdb/testsuite/gdb.fortran/common-block.exp | 5 +----
gdb/testsuite/gdb.fortran/derived-type.exp | 13 ++++--------
gdb/testsuite/gdb.fortran/multi-dim.exp | 8 ++-----
gdb/testsuite/gdb.fortran/vla-datatypes.exp | 9 ++++----
gdb/testsuite/gdb.fortran/vla-ptype-sub.exp | 33 +++++++++++++++--------------
gdb/testsuite/gdb.fortran/vla-ptype.exp | 21 +++++++++---------
gdb/testsuite/gdb.fortran/whatis_type.exp | 5 +++--
gdb/testsuite/lib/fortran.exp | 28 ++++++++++++++++++++++++
8 files changed, 71 insertions(+), 51 deletions(-)
diff --git a/gdb/testsuite/gdb.fortran/common-block.exp b/gdb/testsuite/gdb.fortran/common-block.exp
index abdc50a..57960c2 100644
--- a/gdb/testsuite/gdb.fortran/common-block.exp
+++ b/gdb/testsuite/gdb.fortran/common-block.exp
@@ -21,6 +21,7 @@ if {[skip_fortran_tests]} {
}
standard_testfile .f90
+load_lib "fortran.exp"
if {[prepare_for_testing ${testfile}.exp ${testfile} \
$srcfile {debug f90 quiet}]} {
@@ -42,10 +43,6 @@ gdb_continue_to_breakpoint "stop-here-out"
#set suffix "_"
set suffix ""
-set int4 {(integer\(kind=4\)|INTEGER\(4\))}
-set real4 {(real\(kind=4\)|REAL\(4\))}
-set real8 {(real\(kind=8\)|REAL\(8\))}
-
gdb_test "whatis foo$suffix" "No symbol \"foo$suffix\" in current context."
gdb_test "ptype foo$suffix" "No symbol \"foo$suffix\" in current context."
gdb_test "p foo$suffix" "No symbol \"foo$suffix\" in current context."
diff --git a/gdb/testsuite/gdb.fortran/derived-type.exp b/gdb/testsuite/gdb.fortran/derived-type.exp
index f7f10b5..48a69cc 100644
--- a/gdb/testsuite/gdb.fortran/derived-type.exp
+++ b/gdb/testsuite/gdb.fortran/derived-type.exp
@@ -21,6 +21,7 @@
if { [skip_fortran_tests] } { return -1 }
standard_testfile .f90
+load_lib "fortran.exp"
if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} {
return -1
@@ -31,20 +32,14 @@ if ![runto MAIN__] then {
continue
}
-# Depending on the compiler version being used, the name of the 4-byte integer
-# and real types can be printed differently. For instance, gfortran-4.1 uses
-# "int4" whereas gfortran-4.3 uses "int(kind=4)".
-set int4 "(int4|integer\\(kind=4\\))"
-set real4 "(real4|real\\(kind=4\\))"
-
-gdb_test "ptype p" "type = Type bar\r\n *${int4} :: c\r\n *${real4} :: d\r\n *End Type bar"
+gdb_test "ptype p" "type = Type bar\r\n *$int :: c\r\n *$real :: d\r\n *End Type bar"
set test "type-printing for derived type"
gdb_test_multiple "ptype q" $test {
- -re "type = Type foo\r\n *${real4} :: a\r\n *Type bar\r\n *${int4} :: c\r\n *${real4} :: d\r\n *End Type bar :: x\r\n *character\\*7 :: b\r\n *End Type foo\r\n$gdb_prompt $" {
+ -re "type = Type foo\r\n *$real :: a\r\n *Type bar\r\n *$int :: c\r\n *$real :: d\r\n *End Type bar :: x\r\n *character\\*7 :: b\r\n *End Type foo\r\n$gdb_prompt $" {
pass $test
}
- -re "type = Type foo\r\n *${real4} :: a\r\n *Type bar\r\n *${int4} :: c\r\n *${real4} :: d\r\n *End Type bar :: x\r\n *character :: b\\(7\\)\r\n *End Type foo\r\n$gdb_prompt $" {
+ -re "type = Type foo\r\n *$real :: a\r\n *Type bar\r\n *$int :: c\r\n *$real :: d\r\n *End Type bar :: x\r\n *character :: b\\(7\\)\r\n *End Type foo\r\n$gdb_prompt $" {
# Compiler should produce string, not an array of characters.
setup_xfail "*-*-*"
fail $test
diff --git a/gdb/testsuite/gdb.fortran/multi-dim.exp b/gdb/testsuite/gdb.fortran/multi-dim.exp
index abe37b8..1d6e22e 100644
--- a/gdb/testsuite/gdb.fortran/multi-dim.exp
+++ b/gdb/testsuite/gdb.fortran/multi-dim.exp
@@ -19,6 +19,7 @@
if { [skip_fortran_tests] } { return -1 }
standard_testfile .f90
+load_lib "fortran.exp"
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} {debug f90}] } {
return -1
@@ -29,11 +30,6 @@ if ![runto MAIN__] {
continue
}
-# Depending on the compiler version being used, the name of the 4-byte integer
-# and real types can be printed differently. For instance, gfortran-4.1 uses
-# "int4" whereas gfortran-4.3 uses "int(kind=4)".
-set int4 "(int4|integer\\(kind=4\\))"
-
gdb_breakpoint [gdb_get_line_number "break-static"]
gdb_continue_to_breakpoint "break-static" ".*break-static.*"
@@ -69,7 +65,7 @@ gdb_test "print varbound(4)" \
"print valid variable bound array element"
gdb_test "ptype unbound" \
- "type = $int4 \\(\\*\\)" \
+ "type = $int \\(\\*\\)" \
"print type of unbound array"
gdb_test "print unbound(4)" \
diff --git a/gdb/testsuite/gdb.fortran/vla-datatypes.exp b/gdb/testsuite/gdb.fortran/vla-datatypes.exp
index ed74fa9..dbeec6b 100644
--- a/gdb/testsuite/gdb.fortran/vla-datatypes.exp
+++ b/gdb/testsuite/gdb.fortran/vla-datatypes.exp
@@ -14,6 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
standard_testfile ".f90"
+load_lib "fortran.exp"
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
{debug f90 quiet}] } {
@@ -48,13 +49,13 @@ gdb_test "print l" " = \\.TRUE\\." "charactervla allocated"
gdb_breakpoint [gdb_get_line_number "vlas-initialized"]
gdb_continue_to_breakpoint "vlas-initialized"
-gdb_test "ptype intvla" "type = integer\\\(kind=4\\\) \\\(11,22,33\\\)" \
+gdb_test "ptype intvla" "type = $int \\\(11,22,33\\\)" \
"ptype intvla"
-gdb_test "ptype realvla" "type = real\\\(kind=4\\\) \\\(11,22,33\\\)" \
+gdb_test "ptype realvla" "type = $real \\\(11,22,33\\\)" \
"ptype realvla"
-gdb_test "ptype complexvla" "type = complex\\\(kind=4\\\) \\\(11,22,33\\\)" \
+gdb_test "ptype complexvla" "type = $complex \\\(11,22,33\\\)" \
"ptype complexvla"
-gdb_test "ptype logicalvla" "type = logical\\\(kind=4\\\) \\\(11,22,33\\\)" \
+gdb_test "ptype logicalvla" "type = $logical \\\(11,22,33\\\)" \
"ptype logicalvla"
gdb_test "ptype charactervla" "type = character\\\*1 \\\(11,22,33\\\)" \
"ptype charactervla"
diff --git a/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp b/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
index 7c98eed..761c70c 100644
--- a/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
+++ b/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp
@@ -14,6 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
standard_testfile "vla-sub.f90"
+load_lib "fortran.exp"
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
{debug f90 quiet}] } {
@@ -28,24 +29,24 @@ if ![runto_main] {
# Pass fixed array to function and handle them as vla in function.
gdb_breakpoint [gdb_get_line_number "not-filled"]
gdb_continue_to_breakpoint "not-filled (1st)"
-gdb_test "ptype array1" "type = integer\\\(kind=4\\\) \\\(42,42\\\)" \
+gdb_test "ptype array1" "type = $int \\\(42,42\\\)" \
"ptype array1 (passed fixed)"
-gdb_test "ptype array2" "type = real\\\(kind=4\\\) \\\(42,42,42\\\)" \
+gdb_test "ptype array2" "type = $real \\\(42,42,42\\\)" \
"ptype array2 (passed fixed)"
-gdb_test "ptype array1(40, 10)" "type = integer\\\(kind=4\\\)" \
+gdb_test "ptype array1(40, 10)" "type = $int" \
"ptype array1(40, 10) (passed fixed)"
-gdb_test "ptype array2(13, 11, 5)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype array2(13, 11, 5)" "type = $real" \
"ptype array2(13, 11, 5) (passed fixed)"
# Pass sub arrays to function and handle them as vla in function.
gdb_continue_to_breakpoint "not-filled (2nd)"
-gdb_test "ptype array1" "type = integer\\\(kind=4\\\) \\\(6,6\\\)" \
+gdb_test "ptype array1" "type = $int \\\(6,6\\\)" \
"ptype array1 (passed sub-array)"
-gdb_test "ptype array2" "type = real\\\(kind=4\\\) \\\(6,6,6\\\)" \
+gdb_test "ptype array2" "type = $real \\\(6,6,6\\\)" \
"ptype array2 (passed sub-array)"
-gdb_test "ptype array1(3, 3)" "type = integer\\\(kind=4\\\)" \
+gdb_test "ptype array1(3, 3)" "type = $int" \
"ptype array1(3, 3) (passed sub-array)"
-gdb_test "ptype array2(4, 4, 4)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype array2(4, 4, 4)" "type = $real" \
"ptype array2(4, 4, 4) (passed sub-array)"
# Check ptype outside of bounds. This should not crash GDB.
@@ -56,13 +57,13 @@ gdb_test "ptype array2(100, 100, 100)" "no such vector element" \
# Pass vla to function.
gdb_continue_to_breakpoint "not-filled (3rd)"
-gdb_test "ptype array1" "type = integer\\\(kind=4\\\) \\\(20,20\\\)" \
+gdb_test "ptype array1" "type = $int \\\(20,20\\\)" \
"ptype array1 (passed vla)"
-gdb_test "ptype array2" "type = real\\\(kind=4\\\) \\\(10,10,10\\\)" \
+gdb_test "ptype array2" "type = $real \\\(10,10,10\\\)" \
"ptype array2 (passed vla)"
-gdb_test "ptype array1(3, 3)" "type = integer\\\(kind=4\\\)" \
+gdb_test "ptype array1(3, 3)" "type = $int" \
"ptype array1(3, 3) (passed vla)"
-gdb_test "ptype array2(4, 4, 4)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype array2(4, 4, 4)" "type = $real" \
"ptype array2(4, 4, 4) (passed vla)"
# Check ptype outside of bounds. This should not crash GDB.
@@ -76,12 +77,12 @@ gdb_test "ptype array2(100, 100, 100)" "no such vector element" \
gdb_breakpoint [gdb_get_line_number "end-of-bar"]
gdb_continue_to_breakpoint "end-of-bar"
gdb_test "ptype array1" \
- "type = (PTR TO -> \\( )?integer(\\(kind=4\\)|\\*4) \\(\\*\\)\\)?" \
+ "type = (PTR TO -> \\( )?$int \\(\\*\\)\\)?" \
"ptype array1 (arbitrary length)"
gdb_test "ptype array2" \
- "type = (PTR TO -> \\( )?integer(\\(kind=4\\)|\\*4) \\(4:9,10:\\*\\)\\)?" \
+ "type = (PTR TO -> \\( )?$int \\(4:9,10:\\*\\)\\)?" \
"ptype array2 (arbitrary length)"
-gdb_test "ptype array1(100)" "type = integer\\\(kind=4\\\)" \
+gdb_test "ptype array1(100)" "type = $int" \
"ptype array1(100) (arbitrary length)"
-gdb_test "ptype array2(4,100)" "type = integer\\\(kind=4\\\)" \
+gdb_test "ptype array2(4,100)" "type = $int" \
"ptype array2(4,100) (arbitrary length)"
diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp b/gdb/testsuite/gdb.fortran/vla-ptype.exp
index 51da229..cee0a4c 100644
--- a/gdb/testsuite/gdb.fortran/vla-ptype.exp
+++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp
@@ -14,6 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
standard_testfile "vla.f90"
+load_lib "fortran.exp"
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \
{debug f90 quiet}] } {
@@ -39,40 +40,40 @@ gdb_test "ptype vla2(5, 45, 20)" \
gdb_breakpoint [gdb_get_line_number "vla1-allocated"]
gdb_continue_to_breakpoint "vla1-allocated"
-gdb_test "ptype vla1" "type = real\\\(kind=4\\\) \\\(10,10,10\\\)" \
+gdb_test "ptype vla1" "type = $real \\\(10,10,10\\\)" \
"ptype vla1 allocated"
gdb_breakpoint [gdb_get_line_number "vla2-allocated"]
gdb_continue_to_breakpoint "vla2-allocated"
-gdb_test "ptype vla2" "type = real\\\(kind=4\\\) \\\(7,42:50,13:35\\\)" \
+gdb_test "ptype vla2" "type = $real \\\(7,42:50,13:35\\\)" \
"ptype vla2 allocated"
gdb_breakpoint [gdb_get_line_number "vla1-filled"]
gdb_continue_to_breakpoint "vla1-filled"
-gdb_test "ptype vla1" "type = real\\\(kind=4\\\) \\\(10,10,10\\\)" \
+gdb_test "ptype vla1" "type = $real \\\(10,10,10\\\)" \
"ptype vla1 filled"
-gdb_test "ptype vla1(3, 6, 9)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype vla1(3, 6, 9)" "type = $real" \
"ptype vla1(3, 6, 9)"
gdb_breakpoint [gdb_get_line_number "vla2-filled"]
gdb_continue_to_breakpoint "vla2-filled"
-gdb_test "ptype vla2" "type = real\\\(kind=4\\\) \\\(7,42:50,13:35\\\)" \
+gdb_test "ptype vla2" "type = $real \\\(7,42:50,13:35\\\)" \
"ptype vla2 filled"
-gdb_test "ptype vla2(5, 45, 20)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype vla2(5, 45, 20)" "type = $real" \
"ptype vla1(5, 45, 20) filled"
gdb_breakpoint [gdb_get_line_number "pvla-associated"]
gdb_continue_to_breakpoint "pvla-associated"
-gdb_test "ptype pvla" "type = real\\\(kind=4\\\) \\\(10,10,10\\\)" \
+gdb_test "ptype pvla" "type = $real \\\(10,10,10\\\)" \
"ptype pvla associated"
-gdb_test "ptype pvla(3, 6, 9)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype pvla(3, 6, 9)" "type = $real" \
"ptype pvla(3, 6, 9)"
gdb_breakpoint [gdb_get_line_number "pvla-re-associated"]
gdb_continue_to_breakpoint "pvla-re-associated"
-gdb_test "ptype pvla" "type = real\\\(kind=4\\\) \\\(7,42:50,13:35\\\)" \
+gdb_test "ptype pvla" "type = $real \\\(7,42:50,13:35\\\)" \
"ptype pvla re-associated"
-gdb_test "ptype vla2(5, 45, 20)" "type = real\\\(kind=4\\\)" \
+gdb_test "ptype vla2(5, 45, 20)" "type = $real" \
"ptype vla1(5, 45, 20) re-associated"
gdb_breakpoint [gdb_get_line_number "pvla-deassociated"]
diff --git a/gdb/testsuite/gdb.fortran/whatis_type.exp b/gdb/testsuite/gdb.fortran/whatis_type.exp
index b0e37e6..5f913c1 100644
--- a/gdb/testsuite/gdb.fortran/whatis_type.exp
+++ b/gdb/testsuite/gdb.fortran/whatis_type.exp
@@ -16,6 +16,7 @@
if { [skip_fortran_tests] } { continue }
standard_testfile type.f90
+load_lib "fortran.exp"
if { [prepare_for_testing ${testfile}.exp ${testfile} \
${srcfile} {debug f90}] } {
@@ -30,8 +31,8 @@ if ![runto MAIN__] {
gdb_breakpoint [gdb_get_line_number "bp1"]
gdb_continue_to_breakpoint "bp1"
-set t1_i "integer\\\(kind=4\\\) :: t1_i"
-set t1_r "real\\\(kind=4\\\) :: t1_r"
+set t1_i "$int :: t1_i"
+set t1_r "$real :: t1_r"
gdb_test "whatis t1" \
"type = Type t1\r\n${t1_i}\r\n${t1_r}\r\nEnd Type t1" \
diff --git a/gdb/testsuite/lib/fortran.exp b/gdb/testsuite/lib/fortran.exp
index 04011b9..39f6b7c 100644
--- a/gdb/testsuite/lib/fortran.exp
+++ b/gdb/testsuite/lib/fortran.exp
@@ -28,3 +28,31 @@ proc set_lang_fortran {} {
}
return 1
}
+
+if ![info exists int4] then {
+ set int4 "(int4|integer\\(kind=4\\)|INTEGER\\(4\\))"
+}
+if ![info exists real4] then {
+ set real4 "(real4|real\\(kind=4\\)|REAL\\(4\\))"
+}
+if ![info exists real8] then {
+ set real8 "(real8|real\\(kind=8\\)|REAL\\(8\\))"
+}
+if ![info exists complex4] then {
+ set complex4 "(complex4|complex\\(kind=4\\)|COMPLEX\\(4\\))"
+}
+if ![info exists logical4] then {
+ set logical4 "(logical4|logical\\(kind=4\\)|LOGICAL\\(4\\))"
+}
+if ![info exists int] then {
+ set int $int4
+}
+if ![info exists real] then {
+ set real $real4
+}
+if ![info exists complex] then {
+ set complex $complex4
+}
+if ![info exists logical] then {
+ set logical $logical4
+}
\ No newline at end of file
--
2.7.1.339.g0233b80