From 4a270568d93263e4970099456b4efb58466134a6 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Fri, 18 Jan 2019 11:24:24 +0000 Subject: [PATCH] gdb/fortran: Use TYPE_CODE_CHAR for character types Switch to using TYPE_CODE_CHAR for character types. This appears to have little impact on the test results as gFortran uses the DW_TAG_string_type to represent all character variables (as far as I can see). The only place this has an impact is when the user casts a variable to a character type, in which case GDB does now use the CHAR type, and prints the variable as both a value and a character, for example, before: (gdb) p ((character) 97) $1 = 97 and after: (gdb) p ((character) 97) $1 = 97 'a' gdb/ChangeLog: * f-lang.c (build_fortran_types): Use TYPE_CODE_CHAR for character types. gdb/testsuite/ChangeLog: * gdb.fortran/type-kinds.exp: Update expected results. --- gdb/ChangeLog | 5 +++++ gdb/f-lang.c | 2 +- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.fortran/type-kinds.exp | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b0d0edb22c..e1fdda06aa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-03-06 Andrew Burgess + + * f-lang.c (build_fortran_types): Use TYPE_CODE_CHAR for character + types. + 2019-03-06 Andrew Burgess * f-exp.y (convert_to_kind_type): Handle integer (kind=8). diff --git a/gdb/f-lang.c b/gdb/f-lang.c index f27eb0d45d..c329d602e2 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -366,7 +366,7 @@ build_fortran_types (struct gdbarch *gdbarch) = arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT, "VOID"); builtin_f_type->builtin_character - = arch_integer_type (gdbarch, TARGET_CHAR_BIT, 0, "character"); + = arch_type (gdbarch, TYPE_CODE_CHAR, TARGET_CHAR_BIT, "character"); builtin_f_type->builtin_logical_s1 = arch_boolean_type (gdbarch, TARGET_CHAR_BIT, 1, "logical*1"); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b5599e473e..87c491fb1c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-03-06 Andrew Burgess + + * gdb.fortran/type-kinds.exp: Update expected results. + 2019-03-06 Andrew Burgess * gdb.fortran/type-kinds.exp: Test new integer type kind. diff --git a/gdb/testsuite/gdb.fortran/type-kinds.exp b/gdb/testsuite/gdb.fortran/type-kinds.exp index 198ac58baf..b5d4e7b581 100644 --- a/gdb/testsuite/gdb.fortran/type-kinds.exp +++ b/gdb/testsuite/gdb.fortran/type-kinds.exp @@ -38,7 +38,7 @@ proc test_cast_1_to_type_kind {base_type type_kind cast_result size_result} { # Test parsing of `(kind=N)` type modifiers. proc test_basic_parsing_of_type_kinds {} { - test_cast_1_to_type_kind "character" "1" "1" "1" + test_cast_1_to_type_kind "character" "1" "1 '\\\\001'" "1" test_cast_1_to_type_kind "complex" "4" "\\(1,0\\)" "8" test_cast_1_to_type_kind "complex" "8" "\\(1,0\\)" "16"