This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] write_pieced_value: Include transfer size in byte-wise check


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f1cc987420d9d2489eb453bd1c87139666cbe7fd

commit f1cc987420d9d2489eb453bd1c87139666cbe7fd
Author: Andreas Arnez <arnez@linux.vnet.ibm.com>
Date:   Tue Jun 13 15:20:27 2017 +0200

    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:
---
 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  <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
 	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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]