write_pieced_value: Include transfer size in byte-wise check

In write_pieced_value, when checking whether the data can be transferred
byte-wise, the current logic verifies the source- and destination offsets
to be byte-aligned, but not the transfer size.  This is fixed.

gdb/ChangeLog:

	* dwarf2loc.c (write_pieced_value): Include transfer size in
	byte-wise check.
This commit is contained in:
Andreas Arnez 2017-06-13 15:20:27 +02:00
parent cdaac320fd
commit f1cc987420
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
* dwarf2loc.c (write_pieced_value): Include transfer size in
byte-wise check.
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
* dwarf2loc.c (write_pieced_value): Fix copy/paste error in the

View File

@ -1986,7 +1986,10 @@ write_pieced_value (struct value *to, struct value *from)
this_size = (this_size_bits + dest_offset_bits % 8 + 7) / 8;
source_offset = source_offset_bits / 8;
dest_offset = dest_offset_bits / 8;
if (dest_offset_bits % 8 == 0 && source_offset_bits % 8 == 0)
/* Check whether the data can be transferred byte-wise. */
if (dest_offset_bits % 8 == 0 && source_offset_bits % 8 == 0
&& this_size_bits % 8 == 0)
{
source_buffer = contents + source_offset;
need_bitwise = 0;