aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/ch-typeprint.c6
-rw-r--r--gdb/ch-valprint.c33
3 files changed, 41 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b06c33c..745e2ea 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+Tue Jan 3 16:52:03 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * ch-typeprint.c (chill_type_print_base): Get names of PTR and
+ BOOL from TYPE_NAME.
+ * ch-valprint.c (chill_print_type_scalar): New function, to handle
+ TYPE_CODE_RANGE better than print_type_scalar does.
+ (chill_val_print_array_elements): Use above new function.
+
Mon Jan 2 15:02:51 1995 Stan Shebs <shebs@andros.cygnus.com>
* remote-udi.c (udi_load): Tell symbol_file_add that the
diff --git a/gdb/ch-typeprint.c b/gdb/ch-typeprint.c
index 41a7d6f..88d994d 100644
--- a/gdb/ch-typeprint.c
+++ b/gdb/ch-typeprint.c
@@ -106,7 +106,8 @@ chill_type_print_base (type, stream, show, level)
case TYPE_CODE_PTR:
if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
{
- fprintf_filtered (stream, "PTR");
+ fprintf_filtered (stream,
+ TYPE_NAME (type) ? TYPE_NAME (type) : "PTR");
break;
}
fprintf_filtered (stream, "REF ");
@@ -118,7 +119,8 @@ chill_type_print_base (type, stream, show, level)
anyone ever fixes the compiler to give us the real names
in the presence of the chill equivalent of typedef (assuming
there is one). */
- fprintf_filtered (stream, "BOOL");
+ fprintf_filtered (stream,
+ TYPE_NAME (type) ? TYPE_NAME (type) : "BOOL");
break;
case TYPE_CODE_ARRAY:
diff --git a/gdb/ch-valprint.c b/gdb/ch-valprint.c
index 11d1a22..91fe459 100644
--- a/gdb/ch-valprint.c
+++ b/gdb/ch-valprint.c
@@ -36,6 +36,30 @@ chill_print_value_fields PARAMS ((struct type *, char *, GDB_FILE *, int, int,
enum val_prettyprint, struct type **));
+/* Print integral scalar data VAL, of type TYPE, onto stdio stream STREAM.
+ Used to print data from type structures in a specified type. For example,
+ array bounds may be characters or booleans in some languages, and this
+ allows the ranges to be printed in their "natural" form rather than as
+ decimal integer values. */
+
+void
+chill_print_type_scalar (type, val, stream)
+ struct type *type;
+ LONGEST val;
+ GDB_FILE *stream;
+{
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_RANGE:
+ if (TYPE_TARGET_TYPE (type))
+ {
+ chill_print_type_scalar (TYPE_TARGET_TYPE (type), val, stream);
+ return;
+ }
+ }
+ print_type_scalar (type, val, stream);
+}
+
/* Print the elements of an array.
Similar to val_print_array_elements, but prints
element indexes (in Chill syntax). */
@@ -99,11 +123,12 @@ chill_val_print_array_elements (type, valaddr, address, stream,
}
fputs_filtered ("(", stream);
- print_type_scalar (index_type, low_bound + i, stream);
+ chill_print_type_scalar (index_type, low_bound + i, stream);
if (reps > 1)
{
fputs_filtered (":", stream);
- print_type_scalar (index_type, low_bound + i + reps - 1, stream);
+ chill_print_type_scalar (index_type, low_bound + i + reps - 1,
+ stream);
fputs_filtered ("): ", stream);
val_print (elttype, valaddr + i * eltlen, 0, stream, format,
deref_ref, recurse + 1, pretty);
@@ -323,7 +348,7 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
{
if (need_comma)
fputs_filtered (", ", stream);
- print_type_scalar (range, i, stream);
+ chill_print_type_scalar (range, i, stream);
need_comma = 1;
/* Look for a continuous range of true elements. */
@@ -334,7 +359,7 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
while (i+1 <= high_bound
&& value_bit_index (type, valaddr, ++i))
j = i;
- print_type_scalar (range, j, stream);
+ chill_print_type_scalar (range, j, stream);
}
}
}