summaryrefslogtreecommitdiff
path: root/gdb/p-typeprint.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/p-typeprint.c')
-rw-r--r--gdb/p-typeprint.c64
1 files changed, 33 insertions, 31 deletions
diff --git a/gdb/p-typeprint.c b/gdb/p-typeprint.c
index 0facebfa9d1..73a0f2d1c79 100644
--- a/gdb/p-typeprint.c
+++ b/gdb/p-typeprint.c
@@ -75,6 +75,7 @@ pascal_print_type (struct type *type, char *varstring, struct ui_file *stream,
fputs_filtered (" : ", stream);
}
+
if (!(code == TYPE_CODE_FUNC ||
code == TYPE_CODE_METHOD))
{
@@ -117,7 +118,7 @@ pascal_print_type (struct type *type, char *varstring, struct ui_file *stream,
static void
pascal_type_print_derivation_info (struct ui_file *stream, struct type *type)
{
- char *name;
+ const char *name;
int i;
for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
@@ -193,7 +194,7 @@ void
pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
int show, int passed_a_ptr)
{
- char *name;
+ const char *name;
if (type == 0)
return;
@@ -206,7 +207,7 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
{
case TYPE_CODE_PTR:
fprintf_filtered (stream, "^");
- pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+ pascal_type_print_varspec_prefix (POINTER_TARGET_TYPE (type), stream, 0, 1);
break; /* pointer should be handled normally in pascal */
case TYPE_CODE_MEMBER:
@@ -251,7 +252,7 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
if (passed_a_ptr)
fprintf_filtered (stream, "(");
- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+ if (TYPE_CODE (FUNCTION_RETURN_VALUE (type)) != TYPE_CODE_VOID)
{
fprintf_filtered (stream, "function ");
}
@@ -263,16 +264,17 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
break;
case TYPE_CODE_ARRAY:
+#if TYPEFIX
if (passed_a_ptr)
fprintf_filtered (stream, "(");
fprintf_filtered (stream, "array ");
- if (TYPE_LENGTH (type) >= 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
- && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED)
+ if (TYPE_LENGTH (type) >= 0 && TYPE_LENGTH (ARRAY_ELEMENT_TYPE (type)) > 0)
fprintf_filtered (stream, "[%d..%d] ",
TYPE_ARRAY_LOWER_BOUND_VALUE (type),
TYPE_ARRAY_UPPER_BOUND_VALUE (type)
);
fprintf_filtered (stream, "of ");
+#endif
break;
case TYPE_CODE_UNDEF:
@@ -312,7 +314,7 @@ pascal_type_print_args (struct type *type, struct ui_file *stream)
args = TYPE_ARG_TYPES (type);
if (args != NULL)
{
- if ((args[1] != NULL && args[1]->code != TYPE_CODE_VOID) ||
+ if ((args[1] != NULL && TYPE_CODE(args[1]) != TYPE_CODE_VOID) ||
(args[2] != NULL))
{
fprintf_filtered (stream, "(");
@@ -324,7 +326,7 @@ pascal_type_print_args (struct type *type, struct ui_file *stream)
else
{
for (i = 1;
- args[i] != NULL && args[i]->code != TYPE_CODE_VOID;
+ args[i] != NULL && TYPE_CODE(args[i]) != TYPE_CODE_VOID;
i++)
{
pascal_print_type (args[i], "", stream, -1, 0);
@@ -332,14 +334,14 @@ pascal_type_print_args (struct type *type, struct ui_file *stream)
{
fprintf_filtered (stream, "...");
}
- else if (args[i + 1]->code != TYPE_CODE_VOID)
+ else if (TYPE_CODE(args[i + 1]) != TYPE_CODE_VOID)
{
fprintf_filtered (stream, ",");
wrap_here (" ");
}
}
}
- if ((args[1] != NULL && args[1]->code != TYPE_CODE_VOID) ||
+ if ((args[1] != NULL && TYPE_CODE(args[1]) != TYPE_CODE_VOID) ||
(args[2] != NULL))
{
fprintf_filtered (stream, ")");
@@ -425,7 +427,7 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
case TYPE_CODE_PTR:
case TYPE_CODE_REF:
- pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0);
+ pascal_type_print_varspec_suffix (POINTER_TARGET_TYPE (type), stream, 0, 1, 0);
break;
case TYPE_CODE_FUNC:
@@ -433,12 +435,12 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
fprintf_filtered (stream, ")");
if (!demangled_args)
pascal_print_func_args (type, stream);
- if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+ if (TYPE_CODE (FUNCTION_RETURN_VALUE (type)) != TYPE_CODE_VOID)
{
fprintf_filtered (stream, " : ");
- pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0);
- pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, 0);
- pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
+ pascal_type_print_varspec_prefix (FUNCTION_RETURN_VALUE (type), stream, 0, 0);
+ pascal_type_print_base (FUNCTION_RETURN_VALUE (type), stream, show, 0);
+ pascal_type_print_varspec_suffix (FUNCTION_RETURN_VALUE (type), stream, 0,
passed_a_ptr, 0);
}
break;
@@ -507,7 +509,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
}
/* void pointer */
- if ((TYPE_CODE (type) == TYPE_CODE_PTR) && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID))
+ if ((TYPE_CODE (type) == TYPE_CODE_PTR) && (TYPE_CODE (POINTER_TARGET_TYPE (type)) == TYPE_CODE_VOID))
{
fprintf_filtered (stream,
TYPE_NAME (type) ? TYPE_NAME (type) : "pointer");
@@ -527,10 +529,12 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
switch (TYPE_CODE (type))
{
- case TYPE_CODE_TYPEDEF:
+ case TYPE_CODE_REF:
case TYPE_CODE_PTR:
+ pascal_type_print_base (POINTER_TARGET_TYPE (type), stream, show, level);
+ break;
+ case TYPE_CODE_TYPEDEF:
case TYPE_CODE_MEMBER:
- case TYPE_CODE_REF:
/* case TYPE_CODE_FUNC:
case TYPE_CODE_METHOD: */
pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
@@ -540,7 +544,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
/* pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0);
pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); */
- pascal_print_type (TYPE_TARGET_TYPE (type), NULL, stream, 0, 0);
+ pascal_print_type (ARRAY_ELEMENT_TYPE (type), NULL, stream, 0, 0);
break;
case TYPE_CODE_FUNC:
@@ -678,7 +682,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
- char *name = type_name_no_tag (type);
+ const char *name = type_name_no_tag (type);
/* this is GNU C++ specific
how can we know constructor/destructor?
It might work for GNU pascal */
@@ -787,7 +791,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
{
fprintf_filtered (stream, "(");
- len = TYPE_NFIELDS (type);
+ len = ENUM_NUM_VALUES (type);
lastval = 0;
for (i = 0; i < len; i++)
{
@@ -795,11 +799,11 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
if (i)
fprintf_filtered (stream, ", ");
wrap_here (" ");
- fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
- if (lastval != TYPE_FIELD_BITPOS (type, i))
+ fputs_filtered (ENUM_VALUE_NAME (type, i), stream);
+ if (lastval != ENUM_VALUE_VALUE (type, i))
{
- fprintf_filtered (stream, " := %d", TYPE_FIELD_BITPOS (type, i));
- lastval = TYPE_FIELD_BITPOS (type, i);
+ fprintf_filtered (stream, " := %d", ENUM_VALUE_VALUE (type, i));
+ lastval = ENUM_VALUE_VALUE (type, i);
}
lastval++;
}
@@ -822,21 +826,19 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
/* this probably does not work for enums */
case TYPE_CODE_RANGE:
{
- struct type *target = TYPE_TARGET_TYPE (type);
+ struct type *target = RANGE_INDEX_TYPE (type);
if (target == NULL)
target = builtin_type_long;
- print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
+ print_type_scalar (target, RANGE_LOWER_BOUND (type), stream);
fputs_filtered ("..", stream);
- print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
+ print_type_scalar (target, RANGE_UPPER_BOUND (type), stream);
}
break;
-
case TYPE_CODE_SET:
fputs_filtered ("set of ", stream);
- pascal_print_type (TYPE_INDEX_TYPE (type), "", stream,
+ pascal_print_type ((struct type *)SET_RANGE_TYPE (type), "", stream,
show - 1, level);
break;
-
default:
/* Handle types not explicitly handled by the other cases,
such as fundamental types. For these, just print whatever