From f1cc987420d9d2489eb453bd1c87139666cbe7fd Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Tue, 13 Jun 2017 15:20:27 +0200 Subject: [PATCH] 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. --- gdb/ChangeLog | 5 +++++ gdb/dwarf2loc.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0845c61..ee4c9d8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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 calculation of this_size. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 1122c8a..2849dad 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; -- 2.7.4