gdb/fortran: Add builtin 8-byte integer type with (kind=8) support

Add a new builtin type, an 8-byte integer, and allow GDB to parse
'integer (kind=8)', returning the new 8-byte integer.

gdb/ChangeLog:

	* f-exp.y (convert_to_kind_type): Handle integer (kind=8).
	* f-lang.c (build_fortran_types): Setup builtin_integer_s8.
	* f-lang.h (struct builtin_f_type): Add builtin_integer_s8 field.

gdb/testsuite/ChangeLog:

	* gdb.fortran/type-kinds.exp: Test new integer type kind.
This commit is contained in:
Andrew Burgess 2019-01-17 16:31:56 +00:00
parent 3be47f7aa9
commit 067630bdb5
6 changed files with 18 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
* f-exp.y (convert_to_kind_type): Handle integer (kind=8).
* f-lang.c (build_fortran_types): Setup builtin_integer_s8.
* f-lang.h (struct builtin_f_type): Add builtin_integer_s8 field.
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
* f-exp.y (convert_to_kind_type): Handle more type kinds.

View file

@ -865,6 +865,8 @@ convert_to_kind_type (struct type *basetype, int kind)
return parse_f_type (pstate)->builtin_integer_s2;
else if (kind == 4)
return parse_f_type (pstate)->builtin_integer;
else if (kind == 8)
return parse_f_type (pstate)->builtin_integer_s8;
}
error (_("unsupported kind %d for type %s"),

View file

@ -375,6 +375,10 @@ build_fortran_types (struct gdbarch *gdbarch)
= arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch), 0,
"integer*2");
builtin_f_type->builtin_integer_s8
= arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch), 0,
"integer*8");
builtin_f_type->builtin_logical_s2
= arch_boolean_type (gdbarch, gdbarch_short_bit (gdbarch), 1,
"logical*2");

View file

@ -66,6 +66,7 @@ struct builtin_f_type
struct type *builtin_character;
struct type *builtin_integer;
struct type *builtin_integer_s2;
struct type *builtin_integer_s8;
struct type *builtin_logical;
struct type *builtin_logical_s1;
struct type *builtin_logical_s2;

View file

@ -1,3 +1,7 @@
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.fortran/type-kinds.exp: Test new integer type kind.
2019-03-06 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.fortran/type-kinds.exp (test_cast_1_to_type_kind): New

View file

@ -54,6 +54,7 @@ proc test_basic_parsing_of_type_kinds {} {
test_cast_1_to_type_kind "integer" "2" "1" "2"
test_cast_1_to_type_kind "integer" "4" "1" "4"
test_cast_1_to_type_kind "integer" "8" "1" "8"
}
proc test_parsing_invalid_type_kinds {} {