This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Retrieve segment registers on Windows amd64
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Jon TURNEY <jon dot turney at dronecode dot org dot uk>
- Cc: gdb-patches at sourceware dot org
- Date: Fri, 27 Feb 2015 09:49:45 +0100
- Subject: Re: [PATCH] Retrieve segment registers on Windows amd64
- Authentication-results: sourceware.org; auth=none
- References: <1424435625-3708-1-git-send-email-jon dot turney at dronecode dot org dot uk> <20150226092333 dot GB31815 at adacore dot com> <54EF26B8 dot 8030602 at dronecode dot org dot uk>
> Thanks for taking a look.
>
> Patch with ChangeLog amended as you suggest attached.
Excellent. Checked in with a small adjustment, as I noticed
that one of the lines ended up being too long, and I missed
that during the first review (I was more worried about the
portability across Windows versions)...
Attached is what I just pushed.
> Hopefully, I will have a few more patches, so yes please.
I'll send it to you privately.
--
Joel
>From f0666312fd86272e0234d5f7c92d8f65d5c6505e Mon Sep 17 00:00:00 2001
From: Jon TURNEY <jon.turney@dronecode.org.uk>
Date: Wed, 18 Feb 2015 23:13:47 +0000
Subject: [PATCH] Retrieve segment registers on Windows amd64
For amd64, CONTEXT_FULL does not contain CONTEXT_SEGMENTS, which seems
to be needed to retrieve all the segment registers. Add it explicitly,
with a little de-cruftification.
The value of the segment registers isn't terribly useful on amd64, but
at least this makes the output of 'info registers' correct.
Before:
(gdb) i r cs ss ds es fs gs
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
After:
(gdb) i r cs ss ds es fs gs
cs 0x33 51
ss 0x2b 43
ds 0x2b 43
es 0x2b 43
fs 0x53 83
gs 0x2b 43
gdb/ChangeLog
2015-02-27 Jon TURNEY <jon.turney@dronecode.org.uk>
* windows-nat.c (CONTEXT_DEBUGGER): Remove.
(CONTEXT_DEBUGGER_DR): Add CONTEXT_SEGMENTS. Incorporate flags
from CONTEXT_DEBUGGER.
---
gdb/ChangeLog | 6 ++++++
gdb/windows-nat.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fac8b37..ff0e72d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2015-02-27 Jon TURNEY <jon.turney@dronecode.org.uk>
+
+ * windows-nat.c (CONTEXT_DEBUGGER): Remove.
+ (CONTEXT_DEBUGGER_DR): Add CONTEXT_SEGMENTS. Incorporate flags
+ from CONTEXT_DEBUGGER.
+
2015-02-26 Doug Evans <dje@google.com>
* gdbtypes.c (internal_type_vptr_fieldno): Add missing call to
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 9c2dca1..107bdf2 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -130,7 +130,6 @@ static CONTEXT saved_context; /* Containes the saved context from a
enum
{
FLAG_TRACE_BIT = 0x100,
- CONTEXT_DEBUGGER = (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
};
#endif
@@ -140,8 +139,9 @@ enum
#define CONTEXT_EXTENDED_REGISTERS 0
#endif
-#define CONTEXT_DEBUGGER_DR CONTEXT_DEBUGGER | CONTEXT_DEBUG_REGISTERS \
- | CONTEXT_EXTENDED_REGISTERS
+#define CONTEXT_DEBUGGER_DR CONTEXT_FULL | CONTEXT_FLOATING_POINT \
+ | CONTEXT_SEGMENTS | CONTEXT_DEBUG_REGISTERS \
+ | CONTEXT_EXTENDED_REGISTERS
static uintptr_t dr[8];
static int debug_registers_changed;
--
1.9.1