[v2,09/19] write_pieced_value: Fix buffer offset for memory pieces
Commit Message
In write_pieced_value, when transferring the data to target memory via a
buffer, the bit offset within the target value is not reduced to its
sub-byte fraction before using it as a bit offset into the buffer. This
is fixed.
gdb/ChangeLog:
* dwarf2loc.c (write_pieced_value): In DWARF_VALUE_MEMORY,
truncate full bytes from dest_offset_bits before using it as an
offset into the buffer.
---
gdb/dwarf2loc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
Andreas Arnez <arnez@linux.vnet.ibm.com> writes:
> gdb/ChangeLog:
>
> * dwarf2loc.c (write_pieced_value): In DWARF_VALUE_MEMORY,
> truncate full bytes from dest_offset_bits before using it as an
> offset into the buffer.
LGTM.
@@ -2056,7 +2056,7 @@ write_pieced_value (struct value *to, struct value *from)
read_memory (p->v.mem.addr + dest_offset, buffer.data (), 1);
read_memory (p->v.mem.addr + dest_offset + this_size - 1,
&buffer[this_size - 1], 1);
- copy_bitwise (buffer.data (), dest_offset_bits,
+ copy_bitwise (buffer.data (), dest_offset_bits % 8,
contents, source_offset_bits,
this_size_bits,
bits_big_endian);