aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.fortran
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2019-01-21 15:10:55 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2019-03-06 18:11:31 +0000
commitefbecbc143f19cb308ae220fb386505f41ff4bc3 (patch)
treecebdb407c56dac4baba4aa7c55815d752baa6b72 /gdb/testsuite/gdb.fortran
parent0841c79a3dc1cfa382164a6bb2c1ee41af3ab0a9 (diff)
downloadfsf-binutils-gdb-efbecbc143f19cb308ae220fb386505f41ff4bc3.zip
fsf-binutils-gdb-efbecbc143f19cb308ae220fb386505f41ff4bc3.tar.gz
fsf-binutils-gdb-efbecbc143f19cb308ae220fb386505f41ff4bc3.tar.bz2
gdb/fortran: Handle older TYPE*SIZE typenames
This patch adds support for the older TYPE*SIZE typenames that are still around in older code. For implementation this currently reuses the kind mechanism, as under gFortran the kind number is equivalent to the size, however, this is not necessarily true for all compilers. If the rules for other compilers are better understood then this code might need to be improved slightly to allow for a distinction between size and kind, however, adding this extra complexity now seems pointless. gdb/ChangeLog: * f-exp.y (direct_abs_decl): Handle TYPE*SIZE type names. gdb/testsuite/ChangeLog: * gdb.fortran/type-kinds.exp: Extend to cover TYPE*SIZE cases.
Diffstat (limited to 'gdb/testsuite/gdb.fortran')
-rw-r--r--gdb/testsuite/gdb.fortran/type-kinds.exp23
1 files changed, 23 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.fortran/type-kinds.exp b/gdb/testsuite/gdb.fortran/type-kinds.exp
index b5d4e7b..1ae15b9 100644
--- a/gdb/testsuite/gdb.fortran/type-kinds.exp
+++ b/gdb/testsuite/gdb.fortran/type-kinds.exp
@@ -65,11 +65,34 @@ proc test_parsing_invalid_type_kinds {} {
}
}
+# Perform some basic checks that GDB can parse the older style
+# TYPE*SIZE type names.
+proc test_old_star_type_sizes {} {
+ gdb_test "p ((character*1) 1)" " = 1 '\\\\001'"
+
+ gdb_test "p ((complex*4) 1)" " = \\(1,0\\)"
+ gdb_test "p ((complex*8) 1)" " = \\(1,0\\)"
+ gdb_test "p ((complex*16) 1)" " = \\(1,0\\)"
+
+ gdb_test "p ((real*4) 1)" " = 1"
+ gdb_test "p ((real*8) 1)" " = 1"
+ gdb_test "p ((real*16) 1)" " = 1"
+
+ gdb_test "p ((logical*1) 1)" " = \\.TRUE\\."
+ gdb_test "p ((logical*4) 1)" " = \\.TRUE\\."
+ gdb_test "p ((logical*8) 1)" " = \\.TRUE\\."
+
+ gdb_test "p ((integer*2) 1)" " = 1"
+ gdb_test "p ((integer*4) 1)" " = 1"
+ gdb_test "p ((integer*8) 1)" " = 1"
+}
+
clean_restart
if [set_lang_fortran] then {
test_basic_parsing_of_type_kinds
test_parsing_invalid_type_kinds
+ test_old_star_type_sizes
} else {
warning "$test_name tests suppressed." 0
}