* gdbtypes.c (check_typedef): New comment on type length.
	* value.c (allocate_value_lazy): Remove the unused atype variable.  New
	comment on type length.
	(value_primitive_field): Keep the original TYPE value, new comment.

gdb/testsuite/
	* gdb.mi/var-cmd.c (do_bitfield_tests): Change "V.sharable" type to
	"uint_for_mi_testing".
This commit is contained in:
Jan Kratochvil 2010-01-03 18:55:32 +00:00
parent 5aade3dba4
commit c54eabfaa8
5 changed files with 38 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2010-01-03 Jan Kratochvil <jan.kratochvil@redhat.com>
Joel Brobecker <brobecker@adacore.com>
* gdbtypes.c (check_typedef): New comment on type length.
* value.c (allocate_value_lazy): Remove the unused atype variable. New
comment on type length.
(value_primitive_field): Keep the original TYPE value, new comment.
2010-01-01 Jan Kratochvil <jan.kratochvil@redhat.com>
* cli/cli-script.c (process_next_line): Rename p1 as p_end and p2 as

View File

@ -1342,12 +1342,17 @@ stub_noname_complaint (void)
symbols which contain a full definition for the type.
This used to be coded as a macro, but I don't think it is called
often enough to merit such treatment. */
often enough to merit such treatment.
/* Find the real type of TYPE. This function returns the real type,
Find the real type of TYPE. This function returns the real type,
after removing all layers of typedefs and completing opaque or stub
types. Completion changes the TYPE argument, but stripping of
typedefs does not. */
typedefs does not.
If TYPE is a TYPE_CODE_TYPEDEF, its length is (also) set to the length of
the target type instead of zero. However, in the case of TYPE_CODE_TYPEDEF
check_typedef can still return different type than the original TYPE
pointer. */
struct type *
check_typedef (struct type *type)

View File

@ -1,3 +1,8 @@
2010-01-03 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.mi/var-cmd.c (do_bitfield_tests): Change "V.sharable" type to
"uint_for_mi_testing".
2010-01-01 Joel Brobecker <brobecker@adacore.com>
Test indented comment in file being sourced.

View File

@ -494,7 +494,7 @@ void do_bitfield_tests ()
mi_create_varobj V d "create varobj for Data"
mi_list_varobj_children "V" {
{"V.alloc" "alloc" "0" "int"}
{"V.sharable" "sharable" "0" "unsigned int"}
{"V.sharable" "sharable" "0" "uint_for_mi_testing"}
} "list children of Data"
mi_check_varobj_value V.sharable 3 "access bitfield"
:*/

View File

@ -254,7 +254,14 @@ struct value *
allocate_value_lazy (struct type *type)
{
struct value *val;
struct type *atype = check_typedef (type);
/* Call check_typedef on our type to make sure that, if TYPE
is a TYPE_CODE_TYPEDEF, its length is set to the length
of the target type instead of zero. However, we do not
replace the typedef type by the target type, because we want
to keep the typedef in order to be able to set the VAL's type
description correctly. */
check_typedef (type);
val = (struct value *) xzalloc (sizeof (struct value));
val->contents = NULL;
@ -1873,7 +1880,14 @@ value_primitive_field (struct value *arg1, int offset,
CHECK_TYPEDEF (arg_type);
type = TYPE_FIELD_TYPE (arg_type, fieldno);
type = check_typedef (type);
/* Call check_typedef on our type to make sure that, if TYPE
is a TYPE_CODE_TYPEDEF, its length is set to the length
of the target type instead of zero. However, we do not
replace the typedef type by the target type, because we want
to keep the typedef in order to be able to print the type
description correctly. */
check_typedef (type);
/* Handle packed fields */