vsk added a comment. 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. 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