* value.c (value_primitive_field): Fetch lazy register values.
authorDaniel Jacobowitz <drow@false.org>
Wed, 11 Jun 2008 19:59:09 +0000 (19:59 +0000)
committerDaniel Jacobowitz <drow@false.org>
Wed, 11 Jun 2008 19:59:09 +0000 (19:59 +0000)
gdb/ChangeLog
gdb/value.c

index cf2eefe31e7cefa7cba88d97f1f47f9f16401890..80160aa44ef518d580b398b11534160dd839bee2 100644 (file)
@@ -1,3 +1,7 @@
+2008-06-11  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * value.c (value_primitive_field): Fetch lazy register values.
+
 2008-06-11  Pedro Alves  <pedro@codesourcery.com>
 
        * NEWS: Mention support removal of undocumented S AA p PID stop
index 71ddf5c0399a77bd8618be72a4117e74a2d4c8d8..b38bae064a3c1527ef31313d32fe3ae03391a697 100644 (file)
@@ -1354,7 +1354,12 @@ value_primitive_field (struct value *arg1, int offset,
          bases, etc.  */
       v = allocate_value (value_enclosing_type (arg1));
       v->type = type;
-      if (VALUE_LVAL (arg1) == lval_memory && value_lazy (arg1))
+
+      /* Lazy register values with offsets are not supported.  */
+      if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
+       value_fetch_lazy (arg1);
+
+      if (value_lazy (arg1))
        set_value_lazy (v, 1);
       else
        memcpy (value_contents_all_raw (v), value_contents_all_raw (arg1),
@@ -1368,7 +1373,12 @@ value_primitive_field (struct value *arg1, int offset,
       /* Plain old data member */
       offset += TYPE_FIELD_BITPOS (arg_type, fieldno) / 8;
       v = allocate_value (type);
-      if (VALUE_LVAL (arg1) == lval_memory && value_lazy (arg1))
+
+      /* Lazy register values with offsets are not supported.  */
+      if (VALUE_LVAL (arg1) == lval_register && value_lazy (arg1))
+       value_fetch_lazy (arg1);
+
+      if (value_lazy (arg1))
        set_value_lazy (v, 1);
       else
        memcpy (value_contents_raw (v),