This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Add x86_debug_reg_state to gdbserver
- From: Gary Benson <gary at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 24 Mar 2015 14:06:35 -0000
- Subject: [binutils-gdb] Add x86_debug_reg_state to gdbserver
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=70a0bb6b590bcfe304fe082d421feb52e0a0d4dc
commit 70a0bb6b590bcfe304fe082d421feb52e0a0d4dc
Author: Gary Benson <gbenson@redhat.com>
Date: Tue Mar 24 14:05:43 2015 +0000
Add x86_debug_reg_state to gdbserver
This commit introduces a new function, x86_debug_reg_state, that
shared x86 code can use to access the local mirror of a process's
debug registers. This function already existed in GDB and was
in use by GDB's x86_linux_prepare_to_resume. An equivalent was
written for gdbserver and gdbserver's x86_linux_prepare_to_resume
was modified to use it.
gdb/ChangeLog:
* x86-nat.h (x86_debug_reg_state): Move declaration to...
* nat/x86-dregs.h (x86_debug_reg_state): New declaration.
gdb/gdbserver/ChangeLog:
* linux-x86-low.c (x86_debug_reg_state): New function.
(x86_linux_prepare_to_resume): Use the above.
Diff:
---
gdb/ChangeLog | 5 +++++
gdb/gdbserver/ChangeLog | 5 +++++
gdb/gdbserver/linux-x86-low.c | 16 ++++++++++++----
gdb/nat/x86-dregs.h | 5 +++++
gdb/x86-nat.h | 5 -----
5 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3ff9280..0be8425 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2015-03-24 Gary Benson <gbenson@redhat.com>
+ * x86-nat.h (x86_debug_reg_state): Move declaration to...
+ * nat/x86-dregs.h (x86_debug_reg_state): New declaration.
+
+2015-03-24 Gary Benson <gbenson@redhat.com>
+
* nat/linux-nat.h (current_lwp_ptid): New declaration.
* linux-nat.c (current_lwp_ptid): New function.
* x86-linux-nat.c: Include nat/linux-nat.h.
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 3e51d94..49477df 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
2015-03-24 Gary Benson <gbenson@redhat.com>
+ * linux-x86-low.c (x86_debug_reg_state): New function.
+ (x86_linux_prepare_to_resume): Use the above.
+
+2015-03-24 Gary Benson <gbenson@redhat.com>
+
* linux-low.c (current_lwp_ptid): New function.
* linux-x86-low.c: Include nat/linux-nat.h.
(x86_dr_low_get_addr): Use current_lwp_ptid.
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 66dfc5d..fe4fd25 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -776,6 +776,16 @@ x86_linux_new_thread (void)
return info;
}
+/* See nat/x86-dregs.h. */
+
+struct x86_debug_reg_state *
+x86_debug_reg_state (pid_t pid)
+{
+ struct process_info *proc = find_process_pid (pid);
+
+ return &proc->priv->arch_private->debug_reg_state;
+}
+
/* Called when resuming a thread.
If the debug regs have changed, update the thread's copies. */
@@ -787,11 +797,9 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp)
if (lwp->arch_private->debug_registers_changed)
{
- int i;
- int pid = ptid_get_pid (ptid);
- struct process_info *proc = find_process_pid (pid);
struct x86_debug_reg_state *state
- = &proc->priv->arch_private->debug_reg_state;
+ = x86_debug_reg_state (ptid_get_pid (ptid));
+ int i;
x86_linux_dr_set (ptid, DR_CONTROL, 0);
diff --git a/gdb/nat/x86-dregs.h b/gdb/nat/x86-dregs.h
index a2b9926..61a97c8 100644
--- a/gdb/nat/x86-dregs.h
+++ b/gdb/nat/x86-dregs.h
@@ -92,6 +92,11 @@ struct x86_debug_reg_state
#define ALL_DEBUG_ADDRESS_REGISTERS(i) \
for (i = DR_FIRSTADDR; i <= DR_LASTADDR; i++)
+/* Return a pointer to the local mirror of the debug registers of
+ process PID. This function must be provided by the client
+ if required. */
+extern struct x86_debug_reg_state *x86_debug_reg_state (pid_t pid);
+
/* Insert a watchpoint to watch a memory region which starts at
address ADDR and whose length is LEN bytes. Watch memory accesses
of the type TYPE. Return 0 on success, -1 on failure. */
diff --git a/gdb/x86-nat.h b/gdb/x86-nat.h
index c8ebd74..dcfef36 100644
--- a/gdb/x86-nat.h
+++ b/gdb/x86-nat.h
@@ -44,11 +44,6 @@ extern void x86_set_debug_register_length (int len);
extern void x86_cleanup_dregs (void);
-/* Return a pointer to the local mirror of the debug registers of
- process PID. */
-
-extern struct x86_debug_reg_state *x86_debug_reg_state (pid_t pid);
-
/* Called whenever GDB is no longer debugging process PID. It deletes
data structures that keep track of debug register state. */