forked from Imagelibrary/binutils-gdb
* stabsread.c (read_array_type): Allow negative array bounds,
without interpreting that to mean "adjustable." * ch-valprint.c (chill_val_print): Handle RANGE types. * ch-typeprint.c (chill_type_print_base): Handle BOOL. Handle variant records. Handle RANGE types.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
Fri Dec 10 15:53:56 1993 Per Bothner (bothner@kalessin.cygnus.com)
|
||||
|
||||
* stabsread.c (read_array_type): Allow negative array bounds,
|
||||
without interpreting that to mean "adjustable."
|
||||
* ch-valprint.c (chill_val_print): Handle RANGE types.
|
||||
* ch-typeprint.c (chill_type_print_base): Handle BOOL.
|
||||
Handle variant records. Handle RANGE types.
|
||||
|
||||
Tue Dec 7 15:41:32 1993 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* config/mips/idt.mt: Use tm-idt.h instead of tm-bigmips.h.
|
||||
|
||||
@@ -114,6 +114,10 @@ chill_type_print_base (type, stream, show, level)
|
||||
chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
|
||||
break;
|
||||
|
||||
case TYPE_CODE_BOOL:
|
||||
fprintf_filtered (stream, "BOOL");
|
||||
break;
|
||||
|
||||
case TYPE_CODE_ARRAY:
|
||||
range_type = TYPE_FIELD_TYPE (type, 0);
|
||||
index_type = TYPE_TARGET_TYPE (range_type);
|
||||
@@ -180,11 +184,42 @@ chill_type_print_base (type, stream, show, level)
|
||||
len = TYPE_NFIELDS (type);
|
||||
for (i = TYPE_N_BASECLASSES (type); i < len; i++)
|
||||
{
|
||||
struct type *field_type = TYPE_FIELD_TYPE (type, i);
|
||||
QUIT;
|
||||
print_spaces_filtered (level + 4, stream);
|
||||
chill_print_type (TYPE_FIELD_TYPE (type, i),
|
||||
TYPE_FIELD_NAME (type, i),
|
||||
stream, show - 1, level + 4);
|
||||
if (TYPE_CODE (field_type) == TYPE_CODE_UNION)
|
||||
{ int j; /* variant number */
|
||||
fputs_filtered ("CASE OF\n", stream);
|
||||
for (j = 0; j < TYPE_NFIELDS (field_type); j++)
|
||||
{ int k; /* variant field index */
|
||||
struct type *variant_type
|
||||
= TYPE_FIELD_TYPE (field_type, j);
|
||||
int var_len = TYPE_NFIELDS (variant_type);
|
||||
print_spaces_filtered (level + 4, stream);
|
||||
if (strcmp (TYPE_FIELD_NAME (field_type, j),
|
||||
"else") == 0)
|
||||
fputs_filtered ("ELSE\n", stream);
|
||||
else
|
||||
fputs_filtered (":\n", stream);
|
||||
if (TYPE_CODE (variant_type) != TYPE_CODE_STRUCT)
|
||||
error ("variant record confusion");
|
||||
for (k = 0; k < var_len; k++)
|
||||
{
|
||||
print_spaces_filtered (level + 8, stream);
|
||||
chill_print_type (TYPE_FIELD_TYPE (variant_type, k),
|
||||
TYPE_FIELD_NAME (variant_type, k),
|
||||
stream, show - 1, level + 8);
|
||||
if (k < (var_len - 1))
|
||||
fputs_filtered (",", stream);
|
||||
fputs_filtered ("\n", stream);
|
||||
}
|
||||
}
|
||||
fputs_filtered ("ESAC\n", stream);
|
||||
}
|
||||
else
|
||||
chill_print_type (field_type,
|
||||
TYPE_FIELD_NAME (type, i),
|
||||
stream, show - 1, level + 4);
|
||||
if (i < (len - 1))
|
||||
{
|
||||
fputs_filtered (",", stream);
|
||||
@@ -196,10 +231,28 @@ chill_type_print_base (type, stream, show, level)
|
||||
}
|
||||
break;
|
||||
|
||||
case TYPE_CODE_RANGE:
|
||||
if (TYPE_TARGET_TYPE (type))
|
||||
{
|
||||
chill_type_print_base (TYPE_TARGET_TYPE (type),
|
||||
stream, show, level);
|
||||
fputs_filtered (" (", stream);
|
||||
print_type_scalar (TYPE_TARGET_TYPE (type),
|
||||
TYPE_FIELD_BITPOS (type, 0), stream);
|
||||
fputs_filtered (":", stream);
|
||||
print_type_scalar (TYPE_TARGET_TYPE (type),
|
||||
TYPE_FIELD_BITPOS (type, 1), stream);
|
||||
fputs_filtered (")", stream);
|
||||
}
|
||||
else
|
||||
fprintf_filtered (stream, "RANGE? (%s : %d)",
|
||||
TYPE_FIELD_BITPOS (type, 0),
|
||||
TYPE_FIELD_BITPOS (type, 1));
|
||||
break;
|
||||
|
||||
case TYPE_CODE_VOID:
|
||||
case TYPE_CODE_UNDEF:
|
||||
case TYPE_CODE_ERROR:
|
||||
case TYPE_CODE_RANGE:
|
||||
case TYPE_CODE_ENUM:
|
||||
case TYPE_CODE_UNION:
|
||||
case TYPE_CODE_METHOD:
|
||||
|
||||
@@ -234,14 +234,19 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
|
||||
deref_ref, recurse, pretty);
|
||||
break;
|
||||
|
||||
case TYPE_CODE_RANGE:
|
||||
if (TYPE_TARGET_TYPE (type))
|
||||
chill_val_print (TYPE_TARGET_TYPE (type), valaddr, address, stream,
|
||||
format, deref_ref, recurse, pretty);
|
||||
break;
|
||||
|
||||
case TYPE_CODE_MEMBER:
|
||||
case TYPE_CODE_UNION:
|
||||
case TYPE_CODE_FUNC:
|
||||
case TYPE_CODE_VOID:
|
||||
case TYPE_CODE_ERROR:
|
||||
case TYPE_CODE_RANGE:
|
||||
default:
|
||||
/* Let's derfer printing to the C printer, rather than
|
||||
/* Let's defer printing to the C printer, rather than
|
||||
print an error message. FIXME! */
|
||||
c_val_print (type, valaddr, address, stream, format,
|
||||
deref_ref, recurse, pretty);
|
||||
|
||||
@@ -2794,7 +2794,7 @@ read_array_type (pp, type, objfile)
|
||||
return error_type (pp);
|
||||
++*pp;
|
||||
|
||||
if (!(**pp >= '0' && **pp <= '9'))
|
||||
if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
|
||||
{
|
||||
(*pp)++;
|
||||
adjustable = 1;
|
||||
@@ -2803,7 +2803,7 @@ read_array_type (pp, type, objfile)
|
||||
if (nbits != 0)
|
||||
return error_type (pp);
|
||||
|
||||
if (!(**pp >= '0' && **pp <= '9'))
|
||||
if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
|
||||
{
|
||||
(*pp)++;
|
||||
adjustable = 1;
|
||||
|
||||
Reference in New Issue
Block a user