gdb/
authorYufeng Zhang <yufeng.zhang@arm.com>
Wed, 18 Dec 2013 16:47:33 +0000 (16:47 +0000)
committerYufeng Zhang <yufeng.zhang@arm.com>
Wed, 18 Dec 2013 16:47:33 +0000 (16:47 +0000)
* aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Set
iov.iov_len with the real length in use.

gdb/gdbserver/

* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
iov.iov_len with the real length in use.

gdb/ChangeLog
gdb/aarch64-linux-nat.c
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-aarch64-low.c

index 7d9308f515caf49fd79e5696ce6c59465bbae34d..513c593c6d0bc98452149e498215a6da654e10c9 100644 (file)
@@ -1,3 +1,8 @@
+2013-12-18  Yufeng Zhang  <yufeng.zhang@arm.com>
+
+       * aarch64-linux-nat.c (aarch64_linux_set_debug_regs): Set
+       iov.iov_len with the real length in use.
+
 2013-12-18  Yao Qi  <yao@codesourcery.com>
 
        * target.h (target_xfer_partial_ftype): New typedef.
index 256725b517864a7f723455c2b4e0513285368944..7d76833509c63b9214cd64f20f517a7615534e79 100644 (file)
@@ -314,10 +314,13 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
 
   memset (&regs, 0, sizeof (regs));
   iov.iov_base = &regs;
-  iov.iov_len = sizeof (regs);
   count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
   addr = watchpoint ? state->dr_addr_wp : state->dr_addr_bp;
   ctrl = watchpoint ? state->dr_ctrl_wp : state->dr_ctrl_bp;
+  if (count == 0)
+    return;
+  iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1])
+                + sizeof (regs.dbg_regs [count - 1]));
 
   for (i = 0; i < count; i++)
     {
index c73840feae83afe3aae116ca7e96cf329f0ad220..284779630647a974c1b2893383e778ffa23828fa 100644 (file)
@@ -1,3 +1,8 @@
+2013-12-18  Yufeng Zhang  <yufeng.zhang@arm.com>
+
+       * linux-aarch64-low.c (aarch64_linux_set_debug_regs): Set
+       iov.iov_len with the real length in use.
+
 2013-12-13  Joel Brobecker  <brobecker@adacore.com>
 
        * Makefile.in (safe-ctype.o, lbasename.o): New rules.
index 93246b35df0da76c967dc2fcabd5a722fcbe2a41..c2d271a9d2d8e62e2cb0e0814e8e96c8cdc92759 100644 (file)
@@ -602,10 +602,13 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
 
   memset (&regs, 0, sizeof (regs));
   iov.iov_base = &regs;
-  iov.iov_len = sizeof (regs);
   count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
   addr = watchpoint ? state->dr_addr_wp : state->dr_addr_bp;
   ctrl = watchpoint ? state->dr_ctrl_wp : state->dr_ctrl_bp;
+  if (count == 0)
+    return;
+  iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1])
+                + sizeof (regs.dbg_regs [count - 1]));
 
   for (i = 0; i < count; i++)
     {