Replace TYPE_ARRAY_{UPPER,LOWER}_BOUND_TYPE by a bit if {un,}defined.
	* c-typeprint.c (c_type_print_varspec_suffix), m2-typeprint.c
	(m2_array), p-typeprint.c (pascal_type_print_varspec_prefix),
	valops.c (value_cast), varobj.c (c_number_of_children): Replace
	TYPE_ARRAY_UPPER_BOUND_TYPE compared to BOUND_CANNOT_BE_DETERMINED by
	TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	* parse.c (follow_types): Use TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	* f-valprint.c (f77_get_dynamic_upperbound): Replace with ...
	(f77_get_upperbound): ... this function handling now only
	TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
	(f77_get_dynamic_lowerbound): Replace with ...
	(f77_get_lowerbound): ... this function handling now only
	TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED.
	(f77_get_dynamic_length_of_aggregate, f77_create_arrayprint_offset_tbl):
	Update their callers.
	* eval.c (evaluate_subexp_standard): Update their callers.
	* f-lang.h (f77_get_dynamic_upperbound, f77_get_upperbound)
	(f77_get_dynamic_lowerbound, f77_get_lowerbound): Update their
	prototypes.
	(BOUND_FETCH_OK, BOUND_FETCH_ERROR): Remove.
	* f-typeprint.c (f_type_print_varspec_suffix, f_type_print_base): Remove
	the lower_bound_was_default variable.  Update the
	f77_get_dynamic_upperbound, f77_get_upperbound and
	TYPE_ARRAY_UPPER_BOUND_TYPE calls.
	* gdbtypes.c (print_bound_type): Remove the function.
	(recursive_dump_type): Remove its calls printing UPPER_BOUND_TYPE and
	LOWER_BOUND_TYPE.
	* gdbtypes.h (enum array_bound_type): Remove.
	(struct main_type): Remove the fields upper_bound_type and
	lower_bound_type.  Comment the new overload of the field artificial.
	(TYPE_ARRAY_UPPER_BOUND_TYPE): Replace by ...
	(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): ... this macro.
	(TYPE_ARRAY_LOWER_BOUND_TYPE): Replace by ...
	(TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): ... this macro.

gdb/testsuite/
	* gdb.base/maint.exp (maint print type): Remove printing
	UPPER_BOUND_TYPE and LOWER_BOUND_TYPE.
This commit is contained in:
Jan Kratochvil
2008-10-02 22:06:08 +00:00
parent 92f03fcbe1
commit d78df37042
15 changed files with 85 additions and 245 deletions

View File

@@ -1,3 +1,40 @@
2008-10-02 Jan Kratochvil <jan.kratochvil@redhat.com>
Replace TYPE_ARRAY_{UPPER,LOWER}_BOUND_TYPE by a bit if {un,}defined.
* c-typeprint.c (c_type_print_varspec_suffix), m2-typeprint.c
(m2_array), p-typeprint.c (pascal_type_print_varspec_prefix),
valops.c (value_cast), varobj.c (c_number_of_children): Replace
TYPE_ARRAY_UPPER_BOUND_TYPE compared to BOUND_CANNOT_BE_DETERMINED by
TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
* parse.c (follow_types): Use TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
* f-valprint.c (f77_get_dynamic_upperbound): Replace with ...
(f77_get_upperbound): ... this function handling now only
TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED.
(f77_get_dynamic_lowerbound): Replace with ...
(f77_get_lowerbound): ... this function handling now only
TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED.
(f77_get_dynamic_length_of_aggregate, f77_create_arrayprint_offset_tbl):
Update their callers.
* eval.c (evaluate_subexp_standard): Update their callers.
* f-lang.h (f77_get_dynamic_upperbound, f77_get_upperbound)
(f77_get_dynamic_lowerbound, f77_get_lowerbound): Update their
prototypes.
(BOUND_FETCH_OK, BOUND_FETCH_ERROR): Remove.
* f-typeprint.c (f_type_print_varspec_suffix, f_type_print_base): Remove
the lower_bound_was_default variable. Update the
f77_get_dynamic_upperbound, f77_get_upperbound and
TYPE_ARRAY_UPPER_BOUND_TYPE calls.
* gdbtypes.c (print_bound_type): Remove the function.
(recursive_dump_type): Remove its calls printing UPPER_BOUND_TYPE and
LOWER_BOUND_TYPE.
* gdbtypes.h (enum array_bound_type): Remove.
(struct main_type): Remove the fields upper_bound_type and
lower_bound_type. Comment the new overload of the field artificial.
(TYPE_ARRAY_UPPER_BOUND_TYPE): Replace by ...
(TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED): ... this macro.
(TYPE_ARRAY_LOWER_BOUND_TYPE): Replace by ...
(TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED): ... this macro.
2008-10-02 Tom Tromey <tromey@redhat.com> 2008-10-02 Tom Tromey <tromey@redhat.com>
* Makefile.in (HFILES_NO_SRCDIR): Remove gdb-events.h, gstdint.h. * Makefile.in (HFILES_NO_SRCDIR): Remove gdb-events.h, gstdint.h.

View File

@@ -560,7 +560,7 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
fprintf_filtered (stream, "["); fprintf_filtered (stream, "[");
if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
&& TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
fprintf_filtered (stream, "%d", fprintf_filtered (stream, "%d",
(TYPE_LENGTH (type) (TYPE_LENGTH (type)
/ TYPE_LENGTH (TYPE_TARGET_TYPE (type)))); / TYPE_LENGTH (TYPE_TARGET_TYPE (type))));

View File

@@ -1994,13 +1994,8 @@ evaluate_subexp_standard (struct type *expect_type,
/* Internal type of array is arranged right to left */ /* Internal type of array is arranged right to left */
for (i = 0; i < nargs; i++) for (i = 0; i < nargs; i++)
{ {
retcode = f77_get_dynamic_upperbound (tmp_type, &upper); upper = f77_get_upperbound (tmp_type);
if (retcode == BOUND_FETCH_ERROR) lower = f77_get_lowerbound (tmp_type);
error (_("Cannot obtain dynamic upper bound"));
retcode = f77_get_dynamic_lowerbound (tmp_type, &lower);
if (retcode == BOUND_FETCH_ERROR)
error (_("Cannot obtain dynamic lower bound"));
array_size_array[nargs - i - 1] = upper - lower + 1; array_size_array[nargs - i - 1] = upper - lower + 1;

View File

@@ -83,9 +83,6 @@ extern SAVED_F77_COMMON_PTR find_common_for_function (char *, char *);
#define BLANK_COMMON_NAME_MF77 "__BLNK__" /* MF77 assigned */ #define BLANK_COMMON_NAME_MF77 "__BLNK__" /* MF77 assigned */
#define BLANK_COMMON_NAME_LOCAL "__BLANK" /* Local GDB */ #define BLANK_COMMON_NAME_LOCAL "__BLANK" /* Local GDB */
#define BOUND_FETCH_OK 1
#define BOUND_FETCH_ERROR -999
/* When reasonable array bounds cannot be fetched, such as when /* When reasonable array bounds cannot be fetched, such as when
you ask to 'mt print symbols' and there is no stack frame and you ask to 'mt print symbols' and there is no stack frame and
therefore no way of knowing the bounds of stack-based arrays, therefore no way of knowing the bounds of stack-based arrays,
@@ -97,9 +94,9 @@ extern SAVED_F77_COMMON_PTR find_common_for_function (char *, char *);
extern char *real_main_name; /* Name of main function */ extern char *real_main_name; /* Name of main function */
extern int real_main_c_value; /* C_value field of main function */ extern int real_main_c_value; /* C_value field of main function */
extern int f77_get_dynamic_upperbound (struct type *, int *); extern int f77_get_upperbound (struct type *);
extern int f77_get_dynamic_lowerbound (struct type *, int *); extern int f77_get_lowerbound (struct type *);
extern void f77_get_dynamic_array_length (struct type *); extern void f77_get_dynamic_array_length (struct type *);

View File

@@ -153,7 +153,6 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
int show, int passed_a_ptr, int demangled_args) int show, int passed_a_ptr, int demangled_args)
{ {
int upper_bound, lower_bound; int upper_bound, lower_bound;
int lower_bound_was_default = 0;
static int arrayprint_recurse_level = 0; static int arrayprint_recurse_level = 0;
int retcode; int retcode;
@@ -176,34 +175,18 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY) if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0);
retcode = f77_get_dynamic_lowerbound (type, &lower_bound); lower_bound = f77_get_lowerbound (type);
if (lower_bound != 1) /* Not the default. */
lower_bound_was_default = 0; fprintf_filtered (stream, "%d:", lower_bound);
if (retcode == BOUND_FETCH_ERROR)
fprintf_filtered (stream, "???");
else if (lower_bound == 1) /* The default */
lower_bound_was_default = 1;
else
fprintf_filtered (stream, "%d", lower_bound);
if (lower_bound_was_default)
lower_bound_was_default = 0;
else
fprintf_filtered (stream, ":");
/* Make sure that, if we have an assumed size array, we /* Make sure that, if we have an assumed size array, we
print out a warning and print the upperbound as '*' */ print out a warning and print the upperbound as '*' */
if (TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED) if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
fprintf_filtered (stream, "*"); fprintf_filtered (stream, "*");
else else
{ {
retcode = f77_get_dynamic_upperbound (type, &upper_bound); upper_bound = f77_get_upperbound (type);
if (retcode == BOUND_FETCH_ERROR)
fprintf_filtered (stream, "???");
else
fprintf_filtered (stream, "%d", upper_bound); fprintf_filtered (stream, "%d", upper_bound);
} }
@@ -354,15 +337,11 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show,
case TYPE_CODE_STRING: case TYPE_CODE_STRING:
/* Strings may have dynamic upperbounds (lengths) like arrays. */ /* Strings may have dynamic upperbounds (lengths) like arrays. */
if (TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED) if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
fprintfi_filtered (level, stream, "character*(*)"); fprintfi_filtered (level, stream, "character*(*)");
else else
{ {
retcode = f77_get_dynamic_upperbound (type, &upper_bound); upper_bound = f77_get_upperbound (type);
if (retcode == BOUND_FETCH_ERROR)
fprintf_filtered (stream, "character*???");
else
fprintf_filtered (stream, "character*%d", upper_bound); fprintf_filtered (stream, "character*%d", upper_bound);
} }
break; break;

View File

@@ -61,132 +61,28 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
#define F77_DIM_OFFSET(n) (f77_array_offset_tbl[n][0]) #define F77_DIM_OFFSET(n) (f77_array_offset_tbl[n][0])
int int
f77_get_dynamic_lowerbound (struct type *type, int *lower_bound) f77_get_lowerbound (struct type *type)
{ {
struct frame_info *frame; if (TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type))
CORE_ADDR current_frame_addr;
CORE_ADDR ptr_to_lower_bound;
switch (TYPE_ARRAY_LOWER_BOUND_TYPE (type))
{
case BOUND_BY_VALUE_ON_STACK:
frame = deprecated_safe_get_selected_frame ();
current_frame_addr = get_frame_base (frame);
if (current_frame_addr > 0)
{
*lower_bound =
read_memory_integer (current_frame_addr +
TYPE_ARRAY_LOWER_BOUND_VALUE (type),
4);
}
else
{
*lower_bound = DEFAULT_LOWER_BOUND;
return BOUND_FETCH_ERROR;
}
break;
case BOUND_SIMPLE:
*lower_bound = TYPE_ARRAY_LOWER_BOUND_VALUE (type);
break;
case BOUND_CANNOT_BE_DETERMINED:
error (_("Lower bound may not be '*' in F77")); error (_("Lower bound may not be '*' in F77"));
break;
case BOUND_BY_REF_ON_STACK: return TYPE_ARRAY_LOWER_BOUND_VALUE (type);
frame = deprecated_safe_get_selected_frame ();
current_frame_addr = get_frame_base (frame);
if (current_frame_addr > 0)
{
struct gdbarch *arch = get_frame_arch (frame);
ptr_to_lower_bound =
read_memory_typed_address (current_frame_addr +
TYPE_ARRAY_LOWER_BOUND_VALUE (type),
builtin_type (arch)->builtin_data_ptr);
*lower_bound = read_memory_integer (ptr_to_lower_bound, 4);
}
else
{
*lower_bound = DEFAULT_LOWER_BOUND;
return BOUND_FETCH_ERROR;
}
break;
case BOUND_BY_REF_IN_REG:
case BOUND_BY_VALUE_IN_REG:
default:
error (_("??? unhandled dynamic array bound type ???"));
break;
}
return BOUND_FETCH_OK;
} }
int int
f77_get_dynamic_upperbound (struct type *type, int *upper_bound) f77_get_upperbound (struct type *type)
{ {
struct frame_info *frame; if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
CORE_ADDR current_frame_addr = 0; {
CORE_ADDR ptr_to_upper_bound; /* We have an assumed size array on our hands. Assume that
upper_bound == lower_bound so that we show at least 1 element.
If the user wants to see more elements, let him manually ask for 'em
and we'll subscript the array and show him. */
switch (TYPE_ARRAY_UPPER_BOUND_TYPE (type)) return f77_get_lowerbound (type);
{
case BOUND_BY_VALUE_ON_STACK:
frame = deprecated_safe_get_selected_frame ();
current_frame_addr = get_frame_base (frame);
if (current_frame_addr > 0)
{
*upper_bound =
read_memory_integer (current_frame_addr +
TYPE_ARRAY_UPPER_BOUND_VALUE (type),
4);
} }
else
{
*upper_bound = DEFAULT_UPPER_BOUND;
return BOUND_FETCH_ERROR;
}
break;
case BOUND_SIMPLE: return TYPE_ARRAY_UPPER_BOUND_VALUE (type);
*upper_bound = TYPE_ARRAY_UPPER_BOUND_VALUE (type);
break;
case BOUND_CANNOT_BE_DETERMINED:
/* we have an assumed size array on our hands. Assume that
upper_bound == lower_bound so that we show at least
1 element.If the user wants to see more elements, let
him manually ask for 'em and we'll subscript the
array and show him */
f77_get_dynamic_lowerbound (type, upper_bound);
break;
case BOUND_BY_REF_ON_STACK:
frame = deprecated_safe_get_selected_frame ();
current_frame_addr = get_frame_base (frame);
if (current_frame_addr > 0)
{
struct gdbarch *arch = get_frame_arch (frame);
ptr_to_upper_bound =
read_memory_typed_address (current_frame_addr +
TYPE_ARRAY_UPPER_BOUND_VALUE (type),
builtin_type (arch)->builtin_data_ptr);
*upper_bound = read_memory_integer (ptr_to_upper_bound, 4);
}
else
{
*upper_bound = DEFAULT_UPPER_BOUND;
return BOUND_FETCH_ERROR;
}
break;
case BOUND_BY_REF_IN_REG:
case BOUND_BY_VALUE_IN_REG:
default:
error (_("??? unhandled dynamic array bound type ???"));
break;
}
return BOUND_FETCH_OK;
} }
/* Obtain F77 adjustable array dimensions */ /* Obtain F77 adjustable array dimensions */
@@ -212,13 +108,8 @@ f77_get_dynamic_length_of_aggregate (struct type *type)
f77_get_dynamic_length_of_aggregate (TYPE_TARGET_TYPE (type)); f77_get_dynamic_length_of_aggregate (TYPE_TARGET_TYPE (type));
/* Recursion ends here, start setting up lengths. */ /* Recursion ends here, start setting up lengths. */
retcode = f77_get_dynamic_lowerbound (type, &lower_bound); lower_bound = f77_get_lowerbound (type);
if (retcode == BOUND_FETCH_ERROR) upper_bound = f77_get_upperbound (type);
error (_("Cannot obtain valid array lower bound"));
retcode = f77_get_dynamic_upperbound (type, &upper_bound);
if (retcode == BOUND_FETCH_ERROR)
error (_("Cannot obtain valid array upper bound"));
/* Patch in a valid length value. */ /* Patch in a valid length value. */
@@ -241,16 +132,8 @@ f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream)
while ((TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)) while ((TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY))
{ {
if (TYPE_ARRAY_UPPER_BOUND_TYPE (tmp_type) == BOUND_CANNOT_BE_DETERMINED) upper = f77_get_upperbound (tmp_type);
fprintf_filtered (stream, "<assumed size array> "); lower = f77_get_lowerbound (tmp_type);
retcode = f77_get_dynamic_upperbound (tmp_type, &upper);
if (retcode == BOUND_FETCH_ERROR)
error (_("Cannot obtain dynamic upper bound"));
retcode = f77_get_dynamic_lowerbound (tmp_type, &lower);
if (retcode == BOUND_FETCH_ERROR)
error (_("Cannot obtain dynamic lower bound"));
F77_DIM_SIZE (ndimen) = upper - lower + 1; F77_DIM_SIZE (ndimen) = upper - lower + 1;

View File

@@ -2556,35 +2556,6 @@ print_cplus_stuff (struct type *type, int spaces)
} }
} }
static void
print_bound_type (int bt)
{
switch (bt)
{
case BOUND_CANNOT_BE_DETERMINED:
printf_filtered ("(BOUND_CANNOT_BE_DETERMINED)");
break;
case BOUND_BY_REF_ON_STACK:
printf_filtered ("(BOUND_BY_REF_ON_STACK)");
break;
case BOUND_BY_VALUE_ON_STACK:
printf_filtered ("(BOUND_BY_VALUE_ON_STACK)");
break;
case BOUND_BY_REF_IN_REG:
printf_filtered ("(BOUND_BY_REF_IN_REG)");
break;
case BOUND_BY_VALUE_IN_REG:
printf_filtered ("(BOUND_BY_VALUE_IN_REG)");
break;
case BOUND_SIMPLE:
printf_filtered ("(BOUND_SIMPLE)");
break;
default:
printf_filtered (_("(unknown bound type)"));
break;
}
}
static struct obstack dont_print_type_obstack; static struct obstack dont_print_type_obstack;
void void
@@ -2719,14 +2690,6 @@ recursive_dump_type (struct type *type, int spaces)
} }
puts_filtered ("\n"); puts_filtered ("\n");
printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type)); printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
printfi_filtered (spaces, "upper_bound_type 0x%x ",
TYPE_ARRAY_UPPER_BOUND_TYPE (type));
print_bound_type (TYPE_ARRAY_UPPER_BOUND_TYPE (type));
puts_filtered ("\n");
printfi_filtered (spaces, "lower_bound_type 0x%x ",
TYPE_ARRAY_LOWER_BOUND_TYPE (type));
print_bound_type (TYPE_ARRAY_LOWER_BOUND_TYPE (type));
puts_filtered ("\n");
printfi_filtered (spaces, "objfile "); printfi_filtered (spaces, "objfile ");
gdb_print_host_address (TYPE_OBJFILE (type), gdb_stdout); gdb_print_host_address (TYPE_OBJFILE (type), gdb_stdout);
printf_filtered ("\n"); printf_filtered ("\n");

View File

@@ -316,18 +316,6 @@ enum type_instance_flag_value
#define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \ #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
& TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL) & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
/* Array bound type. */
enum array_bound_type
{
BOUND_SIMPLE = 0,
BOUND_BY_VALUE_IN_REG,
BOUND_BY_REF_IN_REG,
BOUND_BY_VALUE_ON_STACK,
BOUND_BY_REF_ON_STACK,
BOUND_CANNOT_BE_DETERMINED
};
/* This structure is space-critical. /* This structure is space-critical.
Its layout has been tweaked to reduce the space used. */ Its layout has been tweaked to reduce the space used. */
@@ -337,12 +325,6 @@ struct main_type
ENUM_BITFIELD(type_code) code : 8; ENUM_BITFIELD(type_code) code : 8;
/* Array bounds. These fields appear at this location because
they pack nicely here. */
ENUM_BITFIELD(array_bound_type) upper_bound_type : 4;
ENUM_BITFIELD(array_bound_type) lower_bound_type : 4;
/* Flags about this type. These fields appear at this location /* Flags about this type. These fields appear at this location
because they packs nicely here. See the TYPE_* macros for because they packs nicely here. See the TYPE_* macros for
documentation about these fields. */ documentation about these fields. */
@@ -460,7 +442,8 @@ struct main_type
/* For a function or member type, this is 1 if the argument is marked /* For a function or member type, this is 1 if the argument is marked
artificial. Artificial arguments should not be shown to the artificial. Artificial arguments should not be shown to the
user. */ user. For TYPE_CODE_RANGE it is set if the specific bound is not
defined. */
unsigned int artificial : 1; unsigned int artificial : 1;
/* This flag is zero for non-static fields, 1 for fields whose location /* This flag is zero for non-static fields, 1 for fields whose location
@@ -817,10 +800,10 @@ extern void allocate_cplus_struct_type (struct type *);
/* Moto-specific stuff for FORTRAN arrays */ /* Moto-specific stuff for FORTRAN arrays */
#define TYPE_ARRAY_UPPER_BOUND_TYPE(thistype) \ #define TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED(arraytype) \
TYPE_MAIN_TYPE(thistype)->upper_bound_type (TYPE_FIELD_ARTIFICIAL((TYPE_FIELD_TYPE((arraytype),0)),1))
#define TYPE_ARRAY_LOWER_BOUND_TYPE(thistype) \ #define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
TYPE_MAIN_TYPE(thistype)->lower_bound_type (TYPE_FIELD_ARTIFICIAL((TYPE_FIELD_TYPE((arraytype),0)),0))
#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \ #define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
(TYPE_FIELD_BITPOS((TYPE_FIELD_TYPE((arraytype),0)),1)) (TYPE_FIELD_BITPOS((TYPE_FIELD_TYPE((arraytype),0)),1))

View File

@@ -222,7 +222,7 @@ static void m2_array (struct type *type, struct ui_file *stream,
{ {
fprintf_filtered (stream, "ARRAY ["); fprintf_filtered (stream, "ARRAY [");
if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
&& TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
{ {
if (TYPE_INDEX_TYPE (type) != 0) if (TYPE_INDEX_TYPE (type) != 0)
{ {

View File

@@ -266,7 +266,7 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
fprintf_filtered (stream, "("); fprintf_filtered (stream, "(");
fprintf_filtered (stream, "array "); fprintf_filtered (stream, "array ");
if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0
&& TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
fprintf_filtered (stream, "[%d..%d] ", fprintf_filtered (stream, "[%d..%d] ",
TYPE_ARRAY_LOWER_BOUND_VALUE (type), TYPE_ARRAY_LOWER_BOUND_VALUE (type),
TYPE_ARRAY_UPPER_BOUND_VALUE (type) TYPE_ARRAY_UPPER_BOUND_VALUE (type)

View File

@@ -1268,8 +1268,7 @@ follow_types (struct type *follow_type)
create_array_type ((struct type *) NULL, create_array_type ((struct type *) NULL,
follow_type, range_type); follow_type, range_type);
if (array_size < 0) if (array_size < 0)
TYPE_ARRAY_UPPER_BOUND_TYPE (follow_type) TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (follow_type) = 1;
= BOUND_CANNOT_BE_DETERMINED;
break; break;
case tp_function: case tp_function:
/* FIXME-type-allocation: need a way to free this type when we are /* FIXME-type-allocation: need a way to free this type when we are

View File

@@ -1,3 +1,8 @@
2008-10-02 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/maint.exp (maint print type): Remove printing
UPPER_BOUND_TYPE and LOWER_BOUND_TYPE.
2008-09-30 Tom Tromey <tromey@redhat.com> 2008-09-30 Tom Tromey <tromey@redhat.com>
* gdb.base/macscp.exp: Add completion tests. * gdb.base/macscp.exp: Add completion tests.

View File

@@ -401,7 +401,7 @@ gdb_expect {
send_gdb "maint print type argc\n" send_gdb "maint print type argc\n"
gdb_expect { gdb_expect {
-re "type node $hex\r\nname .int. \\($hex\\)\r\ntagname .<NULL>. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nupper_bound_type $hex \\(BOUND_SIMPLE\\)\r\nlower_bound_type $hex \\(BOUND_SIMPLE\\)\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ntype_chain $hex\r\ninstance_flags $hex\r\nflags\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\ntype_specific $hex\r\n$gdb_prompt $"\ -re "type node $hex\r\nname .int. \\($hex\\)\r\ntagname .<NULL>. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ntype_chain $hex\r\ninstance_flags $hex\r\nflags\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\ntype_specific $hex\r\n$gdb_prompt $"\
{ pass "maint print type" } { pass "maint print type" }
-re ".*$gdb_prompt $" { fail "maint print type" } -re ".*$gdb_prompt $" { fail "maint print type" }
timeout { fail "(timeout) maint print type" } timeout { fail "(timeout) maint print type" }

View File

@@ -361,8 +361,7 @@ value_cast (struct type *type, struct value *arg2)
{ {
struct type *element_type = TYPE_TARGET_TYPE (type); struct type *element_type = TYPE_TARGET_TYPE (type);
unsigned element_length = TYPE_LENGTH (check_typedef (element_type)); unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
if (element_length > 0 if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
&& TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
{ {
struct type *range_type = TYPE_INDEX_TYPE (type); struct type *range_type = TYPE_INDEX_TYPE (type);
int val_length = TYPE_LENGTH (type2); int val_length = TYPE_LENGTH (type2);

View File

@@ -1951,7 +1951,7 @@ c_number_of_children (struct varobj *var)
{ {
case TYPE_CODE_ARRAY: case TYPE_CODE_ARRAY:
if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0 if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (target) > 0
&& TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
children = TYPE_LENGTH (type) / TYPE_LENGTH (target); children = TYPE_LENGTH (type) / TYPE_LENGTH (target);
else else
/* If we don't know how many elements there are, don't display /* If we don't know how many elements there are, don't display