This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 5/7 v2] Comment and whitespace changes
- From: Gary Benson <gbenson at redhat dot com>
- To: gdb-patches at sourceware dot org
- Cc: Mark Kettenis <mark dot kettenis at xs4all dot nl>, Pedro Alves <palves at redhat dot com>
- Date: Fri, 27 Jun 2014 15:12:29 +0100
- Subject: [PATCH 5/7 v2] Comment and whitespace changes
- Authentication-results: sourceware.org; auth=none
- References: <1403878351-22974-1-git-send-email-gbenson at redhat dot com>
This commit merges the comments and whitespace in the common
parts of i386-linux-nat.c and amd64-linux-nat.c.
This patch is unchanged from the original version in this series.
gdb/
2014-06-27 Gary Benson <gbenson@redhat.com>
* amd64-linux-nat.c: Comment and whitespace changes.
* i386-linux-nat.c: Comment and whitespace changes.
---
gdb/ChangeLog | 5 +++++
gdb/amd64-linux-nat.c | 3 +++
gdb/i386-linux-nat.c | 15 ++++++++++++---
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c
index 2a291df..f29f8c7 100644
--- a/gdb/amd64-linux-nat.c
+++ b/gdb/amd64-linux-nat.c
@@ -277,8 +277,11 @@ amd64_linux_store_inferior_registers (struct target_ops *ops,
}
}
+
/* Support for debug registers. */
+/* Get debug register REGNUM value from only the one LWP of PTID. */
+
static unsigned long
x86_linux_dr_get (ptid_t ptid, int regnum)
{
diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
index 5ef69ff..51b3338 100644
--- a/gdb/i386-linux-nat.c
+++ b/gdb/i386-linux-nat.c
@@ -732,7 +732,7 @@ update_debug_registers_callback (struct lwp_info *lwp, void *arg)
return 0;
}
-/* Set DR_CONTROL to ADDR in all LWPs of the current inferior. */
+/* Set DR_CONTROL to CONTROL in all LWPs of the current inferior. */
static void
x86_linux_dr_set_control (unsigned long control)
@@ -775,9 +775,16 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp)
= i386_debug_reg_state (ptid_get_pid (lwp->ptid));
int i;
- /* See amd64_linux_prepare_to_resume for Linux kernel note on
- i386_linux_dr_set calls ordering. */
+ /* On Linux kernel before 2.6.33 commit
+ 72f674d203cd230426437cdcf7dd6f681dad8b0d
+ if you enable a breakpoint by the DR_CONTROL bits you need to have
+ already written the corresponding DR_FIRSTADDR...DR_LASTADDR registers.
+ Ensure DR_CONTROL gets written as the very last register here. */
+
+ /* Clear DR_CONTROL first. In some cases, setting DR0-3 to a
+ value that doesn't match what is enabled in DR_CONTROL
+ results in EINVAL. */
x86_linux_dr_set (lwp->ptid, DR_CONTROL, 0);
for (i = DR_FIRSTADDR; i <= DR_LASTADDR; i++)
@@ -792,6 +799,8 @@ x86_linux_prepare_to_resume (struct lwp_info *lwp)
clear_status = 1;
}
+ /* If DR_CONTROL is supposed to be zero, we've already set it
+ above. */
if (state->dr_control_mirror != 0)
x86_linux_dr_set (lwp->ptid, DR_CONTROL, state->dr_control_mirror);
--
1.7.1