[v2,18/19] write_pieced_value: Notify memory_changed observers

Message ID 1494352015-10465-19-git-send-email-arnez@linux.vnet.ibm.com
State New, archived
Headers

Commit Message

Andreas Arnez May 9, 2017, 5:46 p.m. UTC
  So far write_pieced_value uses write_memory when writing memory pieces to
the target.  However, this is a case where GDB potentially overwrites a
watchpoint value.  In such a case write_memory_with_notification should be
used instead, so that memory_changed observers get notified.

gdb/ChangeLog:

	* dwarf2loc.c (write_pieced_value): When writing the data for a
	memory piece, use write_memory_with_notification instead of
	write_memory.
---
 gdb/dwarf2loc.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
  

Comments

Yao Qi May 16, 2017, 9:12 p.m. UTC | #1
On 17-05-09 19:46:14, Andreas Arnez wrote:
> So far write_pieced_value uses write_memory when writing memory pieces to
> the target.  However, this is a case where GDB potentially overwrites a
> watchpoint value.  In such a case write_memory_with_notification should be
> used instead, so that memory_changed observers get notified.
> 
> gdb/ChangeLog:
> 
> 	* dwarf2loc.c (write_pieced_value): When writing the data for a
> 	memory piece, use write_memory_with_notification instead of
> 	write_memory.

LGTM.
  

Patch

diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index ed5b29c..94175ef 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -2025,9 +2025,9 @@  write_pieced_value (struct value *to, struct value *from)
 		&& offset % 8 == 0)
 	      {
 		/* Everything is byte-aligned; no buffer needed.  */
-		write_memory (start_addr,
-			      contents + offset / 8,
-			      this_size_bits / 8);
+		write_memory_with_notification (start_addr,
+						contents + offset / 8,
+						this_size_bits / 8);
 		break;
 	      }
 
@@ -2054,7 +2054,8 @@  write_pieced_value (struct value *to, struct value *from)
 	    copy_bitwise (buffer.data (), bits_to_skip % 8,
 			  contents, offset,
 			  this_size_bits, bits_big_endian);
-	    write_memory (start_addr, buffer.data (), this_size);
+	    write_memory_with_notification (start_addr, buffer.data (),
+					    this_size);
 	  }
 	  break;
 	default: