clayborg accepted this revision.
clayborg added a comment.
This revision is now accepted and ready to land.

In D73148#1832762 <https://reviews.llvm.org/D73148#1832762>, @vsk wrote:

> In D73148#1832704 <https://reviews.llvm.org/D73148#1832704>, @clayborg wrote:
>
> > Would it be better to just ensure that the buffer for DW_OP_piece is at 
> > least the size of the type instead? To do this right we would really need 
> > to track which bytes in the buffer are actually valid. This patch assumes 
> > we will always get the first N bytes of a value. Is it possible to describe 
> > bytes 4:7 of a 16 bit value where bits 0:3 and 8:15 are not valid? In this 
> > case, with this patch, we would think that bytes 0:3 are valid when they 
> > are just not specified, 4:7 would be valid, and 8:15 would not display 
> > because our value doesn't contain the value.
>
>
> It's not necessary for DW_OP_piece to produce a type-sized result buffer, as 
> the description of an object must start at byte offset 0, and we represent 
> the undefined bits within the Value either with 0 or by leaving them out. 
> E.g. `Evaluate({DW_OP_piece, 1, DW_OP_const1u, 0xff, DW_OP_piece, 1, 
> DW_OP_piece, 1})` produces the 24-bit scalar `0x00ff00`, where the 0's 
> correspond to the undefined low bits and the undefined high bits are left 
> out. It /is/ a bug that we use 0 for undefined bits instead of `u` (or 
> something), but we don't need a type-sized buffer to fix that (a bitset would 
> suffice). Finding a way to improve the representation of undefined bits is 
> something I'm interested in, but it seems like a separate problem, and it's 
> more urgent for me to fix the memory smasher.
>
> I'm also not sure that making DW_OP_piece produce a type-sized result would 
> be a sufficient fix, as there (theoretically) may be clients of 
> `Value::ResizeData()` other than the DW_OP_piece logic. I just count one, 
> though (`ExpressionVariable::GetValueBytes()`), and I'm not sure whether it 
> can resize the buffer to something other than the underlying type size.


Thanks for the clarification. This will work for now.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D73148/new/

https://reviews.llvm.org/D73148



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to