]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 3 Jan 2010 22:11:55 +0000 (22:11 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 3 Jan 2010 22:11:55 +0000 (22:11 +0000)
* 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".

gdb/ChangeLog
gdb/gdbtypes.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/var-cmd.c
gdb/value.c

index 55755e32b4a820c070abf3ae902e0bbea3b2a18c..f6da918644fff787d6bf54e0f01ef7df82b6d9eb 100644 (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.
+
 2009-12-22  Joel Brobecker  <brobecker@adacore.com>
 
        * version.in: Set version to 7.0.1.20091222-cvs.
index 2f77dca5beff852d8ae9d795ac11cddf3445b183..3d223a50e377ba9604fff943b3bd2923b4f3940d 100644 (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)
index 3dd23742acf6e3bc4f1ebbc368617fb57b16e7bd..4fcb5beceacd44b4d95ea2e9fd2872b7e027cec7 100644 (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".
+
 2009-12-21  Vladimir Prus  <vladimir@codesourcery.com>
 
        PR gdb/10884
index bbadc24ba7a08fbc80aa129fba3f45f196bbcff5..7220030d8799d7d60dbdbc816276472a31b73736 100644 (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"
     :*/
index e240c7add07977b5a3e6b983f02ccf6aec632433..7b814b6eeed5e2cfc729902c35bf1b6a10fd94d5 100644 (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 */