This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC 1/5] Lazy register values


Hi Dan,

> This patch allows a register value to be lazy.  Lazy register values
> are created by value_of_register_lazy and fetched by value_fetch_lazy,
> like lazy memory values.  I went through every check of value_lazy and
> updated the ones which assumed this implied memory; the others guard
> calls to value_fetch_lazy, which is still correct.

I like this approach!  However, I'm wondering about some of the
value_lazy changes; for example in code like:

  v = allocate_value (elt_type);
  if (value_lazy (array))
    set_value_lazy (v, 1);
  else
    memcpy (value_contents_writeable (v),
            value_contents (array) + elt_offs, elt_size);

  if (VALUE_LVAL (array) == lval_internalvar)
    VALUE_LVAL (v) = lval_internalvar_component;
  else
    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);
  set_value_offset (v, value_offset (array) + elt_offs);


(in value_subscripted_rvalue), it doesn't seem right to simply
change the if to 
  if (VALUE_LVAL (array) == lval_memory && value_lazy (array))

If that function were ever called with a lazy register value,
the "else" part would copy from value_contents of that lazy
value, which is actually undefined.

In fact, it would appear that not changing the if at all might
be the correct solution anyway: the new value would then be 
marked as lazy register value with offset.

Of course, that would then require that value_fetch_lazy
allows and handles offsets for lazy register values.


I've read through the rest of the patches in this series,
and they look fine to me.  I'd be happy to convert any of
the platforms I have access to (s390, ppc, spu, ia64).

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]