From: Andreas Arnez Date: Tue, 13 Jun 2017 13:20:27 +0000 (+0200) Subject: write_pieced_value: Include transfer size in byte-wise check X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f1cc987420d9d2489eb453bd1c87139666cbe7fd;p=binutils-gdb.git 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0845c61be94..ee4c9d8b217 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-06-13 Andreas Arnez + + * dwarf2loc.c (write_pieced_value): Include transfer size in + byte-wise check. + 2017-06-13 Andreas Arnez * dwarf2loc.c (write_pieced_value): Fix copy/paste error in the diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 1122c8a2493..2849dadb772 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -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;