write_pieced_value: Fix buffer offset for memory pieces
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.
This commit is contained in:
parent
f1cc987420
commit
07c9ca3bd8
2 changed files with 7 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||
|
||||
* dwarf2loc.c (write_pieced_value): Include transfer size in
|
||||
|
|
|
@ -2058,7 +2058,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);
|
||||
|
|
Loading…
Add table
Reference in a new issue