Index: dwarf2read.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2read.c,v retrieving revision 1.194 diff -u -p -r1.194 dwarf2read.c --- dwarf2read.c 21 Apr 2006 20:26:07 -0000 1.194 +++ dwarf2read.c 5 May 2006 17:31:53 -0000 @@ -4728,10 +4728,15 @@ read_base_type (struct die_info *die, st code = TYPE_CODE_FLT; break; case DW_ATE_signed: + break; case DW_ATE_signed_char: + code = TYPE_CODE_CHAR; break; case DW_ATE_unsigned: + type_flags |= TYPE_FLAG_UNSIGNED; + break; case DW_ATE_unsigned_char: + code = TYPE_CODE_CHAR; type_flags |= TYPE_FLAG_UNSIGNED; break; default: Index: ada-lang.c =================================================================== RCS file: /cvs/src/src/gdb/ada-lang.c,v retrieving revision 1.84 diff -u -p -r1.84 ada-lang.c --- ada-lang.c 12 Jan 2006 08:36:29 -0000 1.84 +++ ada-lang.c 5 May 2006 17:30:55 -0000 @@ -7145,10 +7145,15 @@ int ada_is_character_type (struct type *type) { const char *name = ada_type_name (type); + + /* If the type code says it's a character, then assume it really is, + and don't check any further. */ + if (TYPE_CODE (type) == TYPE_CODE_CHAR) + return 1; + return name != NULL - && (TYPE_CODE (type) == TYPE_CODE_CHAR - || TYPE_CODE (type) == TYPE_CODE_INT + && (TYPE_CODE (type) == TYPE_CODE_INT || TYPE_CODE (type) == TYPE_CODE_RANGE) && (strcmp (name, "character") == 0 || strcmp (name, "wide_character") == 0 Index: c-valprint.c =================================================================== RCS file: /cvs/src/src/gdb/c-valprint.c,v retrieving revision 1.39 diff -u -p -r1.39 c-valprint.c --- c-valprint.c 18 Jan 2006 21:24:19 -0000 1.39 +++ c-valprint.c 5 May 2006 17:31:16 -0000 @@ -96,9 +96,8 @@ c_val_print (struct type *type, const gd } /* For an array of chars, print with string syntax. */ if (eltlen == 1 && - ((TYPE_CODE (elttype) == TYPE_CODE_INT) - || ((current_language->la_language == language_m2) - && (TYPE_CODE (elttype) == TYPE_CODE_CHAR))) + (TYPE_CODE (elttype) == TYPE_CODE_INT + || TYPE_CODE (elttype) == TYPE_CODE_CHAR) && (format == 0 || format == 's')) { /* If requested, look for the first null char and only print @@ -192,7 +191,8 @@ c_val_print (struct type *type, const gd /* FIXME: need to handle wchar_t here... */ if (TYPE_LENGTH (elttype) == 1 - && TYPE_CODE (elttype) == TYPE_CODE_INT + && (TYPE_CODE (elttype) == TYPE_CODE_INT + || TYPE_CODE (elttype) == TYPE_CODE_CHAR) && (format == 0 || format == 's') && addr != 0) {