[ob] Fix new value-related failures in i386-sse.exp

Daniel Jacobowitz drow@false.org
Sun Nov 21 19:52:00 GMT 2004


Some time in the last week or so, i386-sse.exp started failing.  The problem
is:

set var $xmm0.v4_float[0] = 0 + 10
Value being assigned to is no longer active.
(gdb) PASS: gdb.arch/i386-sse.exp: set %xmm0

There's a couple more places where we copy VALUE_LVAL, of something which
might be lval_register, without copying VALUE_FRAME_ID.  Patch tested on
i386-pc-linux-gnu; committed as obvious.

-- 
Daniel Jacobowitz

2004-11-21  Daniel Jacobowitz  <dan@debian.org>

	* valarith.c (value_subscript): Copy VALUE_FRAME_ID.
	(value_subscripted_rvalue): Likewise.
	* valops.c (search_struct_field, value_slice): Likewise.

Index: valarith.c
===================================================================
RCS file: /cvs/src/src/gdb/valarith.c,v
retrieving revision 1.29
diff -u -p -r1.29 valarith.c
--- valarith.c	13 Nov 2004 00:53:09 -0000	1.29
+++ valarith.c	21 Nov 2004 19:40:05 -0000
@@ -239,6 +239,7 @@ value_subscript (struct value *array, st
       if (VALUE_LVAL (array) == lval_internalvar)
 	VALUE_LVAL (v) = lval_internalvar_component;
       VALUE_ADDRESS (v) = VALUE_ADDRESS (array);
+      VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array);
       v->offset = offset + value_offset (array);
       return v;
     }
@@ -278,6 +279,7 @@ value_subscripted_rvalue (struct value *
     VALUE_LVAL (v) = VALUE_LVAL (array);
   VALUE_ADDRESS (v) = VALUE_ADDRESS (array);
   VALUE_REGNUM (v) = VALUE_REGNUM (array);
+  VALUE_FRAME_ID (v) = VALUE_FRAME_ID (array);
   v->offset = value_offset (array) + elt_offs;
   return v;
 }
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.138
diff -u -p -r1.138 valops.c
--- valops.c	15 Nov 2004 22:17:59 -0000	1.138
+++ valops.c	21 Nov 2004 19:40:06 -0000
@@ -1307,6 +1307,7 @@ search_struct_field (char *name, struct 
 	    {
 	      VALUE_LVAL (v2) = VALUE_LVAL (arg1);
 	      VALUE_ADDRESS (v2) = VALUE_ADDRESS (arg1);
+	      VALUE_FRAME_ID (v2) = VALUE_FRAME_ID (arg1);
 	      v2->offset = value_offset (arg1) + boffset;
 	      if (VALUE_LAZY (arg1))
 		VALUE_LAZY (v2) = 1;
@@ -2768,6 +2769,7 @@ value_slice (struct value *array, int lo
       else
 	VALUE_LVAL (slice) = VALUE_LVAL (array);
       VALUE_ADDRESS (slice) = VALUE_ADDRESS (array);
+      VALUE_FRAME_ID (slice) = VALUE_FRAME_ID (array);
       slice->offset = value_offset (array) + offset;
     }
   return slice;



More information about the Gdb-patches mailing list