[aarch64] Backport two breakpoint/watchpoint fixes.

This commit is contained in:
Jan Kratochvil 2013-12-25 20:52:37 +01:00
parent 6ca3c187db
commit 0f5a62e3a0
2 changed files with 130 additions and 1 deletions

View File

@ -75,3 +75,129 @@ index 8e66425..bcfcce2 100644
set_solib_svr4_fetch_link_map_offsets (gdbarch,
svr4_lp64_fetch_link_map_offsets);
pre-req for:
[PATCH, AArch64] Fix bug in hardware watchpoint/breakpoint handling
commit c623a6ef72a8d7dbbb646345f75646710cb9bb68
Author: Will Newton <willnewton@sourceware.org>
Date: Mon Sep 16 14:22:19 2013 +0000
gdbserver, aarch64: Zero out regs in aarch64_linux_set_debug_regs.
Apply the same fix that was applied to aarch64-linux-nat.c.
2013-09-16 Will Newton <will.newton@linaro.org>
* linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
out regs.
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 73191f4..1082e78 100644
### a/gdb/gdbserver/ChangeLog
### b/gdb/gdbserver/ChangeLog
## -1,3 +1,8 @@
+2013-09-16 Will Newton <will.newton@linaro.org>
+
+ * linux-aarch64-low.c (aarch64_linux_set_debug_regs): Zero
+ out regs.
+
2013-09-06 Pedro Alves <palves@redhat.com>
* Makefile.in (gdb_proc_service_h, regdef_h, regcache_h)
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index e37f602..93246b3 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -600,6 +600,7 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
const CORE_ADDR *addr;
const unsigned int *ctrl;
+ memset (&regs, 0, sizeof (regs));
iov.iov_base = &regs;
iov.iov_len = sizeof (regs);
count = watchpoint ? aarch64_num_wp_regs : aarch64_num_bp_regs;
[PATCH, AArch64] Fix bug in hardware watchpoint/breakpoint handling
https://sourceware.org/ml/gdb-patches/2013-12/msg00707.html
commit f45c82da381e0ce5ce51b7fb24d0d28611d266b8
Author: Yufeng Zhang <yufeng.zhang@arm.com>
Date: Wed Dec 18 16:47:33 2013 +0000
gdb/
* 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.
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7d9308f..513c593 100644
### a/gdb/ChangeLog
### b/gdb/ChangeLog
## -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.
diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
index 256725b..7d76833 100644
--- a/gdb/aarch64-linux-nat.c
+++ b/gdb/aarch64-linux-nat.c
@@ -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++)
{
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index c73840f..2847796 100644
### a/gdb/gdbserver/ChangeLog
### b/gdb/gdbserver/ChangeLog
## -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.
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index 93246b3..c2d271a 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -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++)
{

View File

@ -38,7 +38,7 @@ Version: 7.6.50.%{snap}
# The release always contains a leading reserved number, start it at 1.
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
Release: 17%{?dist}
Release: 18%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers
@ -1346,6 +1346,9 @@ fi
%endif # 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
%changelog
* Wed Dec 25 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.50.20130731-18.fc20
- [aarch64] Backport two breakpoint/watchpoint fixes.
* Mon Nov 18 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.6.50.20130731-17.fc20
- [rhel7] [--with testsuite] Remove gcc-java&co. BuildRequires.