aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/c-exp.y6
-rw-r--r--gdb/cplus-dem.c9
-rw-r--r--gdb/gdbtypes.h1
4 files changed, 21 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e00ae64..bdc69e8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+Wed Mar 25 16:52:35 1992 Per Bothner (bothner@cygnus.com)
+
+ * c-exp.y, gdbtypes.h: Add builtin_type_signed_char.
+ * cplus-dem.c: Support "Sc" meaning "signed char".
+
Wed Mar 25 15:21:44 1992 Stu Grossman (grossman at cygnus.com)
* configure.in: fix iris/iris3.
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index bbf66e0..7183fe7 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -1495,6 +1495,7 @@ struct type *builtin_type_short;
struct type *builtin_type_int;
struct type *builtin_type_long;
struct type *builtin_type_long_long;
+struct type *builtin_type_signed_char;
struct type *builtin_type_unsigned_char;
struct type *builtin_type_unsigned_short;
struct type *builtin_type_unsigned_int;
@@ -1516,6 +1517,7 @@ struct type ** const (c_builtin_types[]) =
&builtin_type_double,
&builtin_type_void,
&builtin_type_long_long,
+ &builtin_type_signed_char,
&builtin_type_unsigned_char,
&builtin_type_unsigned_short,
&builtin_type_unsigned_int,
@@ -1572,6 +1574,10 @@ _initialize_c_exp ()
init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
0,
"char", (struct objfile *) NULL);
+ builtin_type_signed_char =
+ init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
+ TYPE_FLAG_SIGNED,
+ "signed char", (struct objfile *) NULL);
builtin_type_unsigned_char =
init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
TYPE_FLAG_UNSIGNED,
diff --git a/gdb/cplus-dem.c b/gdb/cplus-dem.c
index afe9ee7..4c5a2f6 100644
--- a/gdb/cplus-dem.c
+++ b/gdb/cplus-dem.c
@@ -507,6 +507,7 @@ cplus_demangle (type, arg_mode)
done = is_pointer = 1;
break;
case 'C': /* const */
+ case 'S': /* explicitly signed [char] */
case 'U': /* unsigned */
case 'V': /* volatile */
case 'F': /* function */
@@ -867,6 +868,14 @@ do_type (type, result, arg_mode)
non_empty = 1;
string_append (result, "unsigned");
break;
+ case 'S': /* signed char only */
+ *type += 1;
+ if (non_empty)
+ string_append (result, " ");
+ else
+ non_empty = 1;
+ string_append (result, "signed");
+ break;
case 'V':
*type += 1;
if (print_ansi_qualifiers)
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 8877f83..293b417 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -422,6 +422,7 @@ extern struct type *builtin_type_char;
extern struct type *builtin_type_short;
extern struct type *builtin_type_int;
extern struct type *builtin_type_long;
+extern struct type *builtin_type_signed_char;
extern struct type *builtin_type_unsigned_char;
extern struct type *builtin_type_unsigned_short;
extern struct type *builtin_type_unsigned_int;