aboutsummaryrefslogtreecommitdiff
path: root/gdb/win32-nat.c
diff options
context:
space:
mode:
authorChristopher Faylor <me+cygwin@cgf.cx>2001-11-27 05:15:58 +0000
committerChristopher Faylor <me+cygwin@cgf.cx>2001-11-27 05:15:58 +0000
commit97da3b2016c57fefa9cb2f7d6c6c63aa352b6a04 (patch)
tree9d07b20d660696184104751f4c3afa618a4e0da7 /gdb/win32-nat.c
parent467d85198ffb27a97ef21aa85c044a3ace19990a (diff)
downloadgdb-97da3b2016c57fefa9cb2f7d6c6c63aa352b6a04.zip
gdb-97da3b2016c57fefa9cb2f7d6c6c63aa352b6a04.tar.gz
gdb-97da3b2016c57fefa9cb2f7d6c6c63aa352b6a04.tar.bz2
* config/i386/tm-cygwin.h: Define HAVE_SSE_REGS if
HAVE_CONTEXT_EXTENDED_REGISTERS is defined. * win32-nat.c: Define CONTEXT_DEBUGGER_DR that will also include extended registers if HAVE_SSE_REGS is defined. (mappings array): Add offset of extended registers. (thread_rec): Use new CONTEXT_DEBUGGER_DR macro.
Diffstat (limited to 'gdb/win32-nat.c')
-rw-r--r--gdb/win32-nat.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c
index 4b90088..9b9286f 100644
--- a/gdb/win32-nat.c
+++ b/gdb/win32-nat.c
@@ -25,6 +25,7 @@
/* We assume we're being built with and will be used for cygwin. */
#include "defs.h"
+#include "tm.h" /* required for SSE registers */
#include "frame.h" /* required by inferior.h */
#include "inferior.h"
#include "target.h"
@@ -66,6 +67,13 @@ enum
#include <sys/procfs.h>
#include <psapi.h>
+#ifdef HAVE_SSE_REGS
+#define CONTEXT_DEBUGGER_DR CONTEXT_DEBUGGER | CONTEXT_EXTENDED_REGISTERS
+#else
+#define CONTEXT_DEBUGGER_DR CONTEXT_DEBUGGER
+#endif
+
+
/* The string sent by cygwin when it processes a signal.
FIXME: This should be in a cygwin include file. */
#define CYGWIN_SIGNAL_STRING "cygwin: signal"
@@ -169,6 +177,19 @@ static const int mappings[] =
context_offset (FloatSave.DataSelector),
context_offset (FloatSave.DataOffset),
context_offset (FloatSave.ErrorSelector)
+#ifdef HAVE_SSE_REGS
+ /* XMM0-7 */ ,
+ context_offset (ExtendedRegisters[0*16]),
+ context_offset (ExtendedRegisters[1*16]),
+ context_offset (ExtendedRegisters[2*16]),
+ context_offset (ExtendedRegisters[3*16]),
+ context_offset (ExtendedRegisters[4*16]),
+ context_offset (ExtendedRegisters[5*16]),
+ context_offset (ExtendedRegisters[6*16]),
+ context_offset (ExtendedRegisters[7*16]),
+ /* MXCSR untested */
+ context_offset (ExtendedRegisters[8*16])
+#endif
};
#undef context_offset
@@ -210,7 +231,7 @@ thread_rec (DWORD id, int get_context)
else if (get_context < 0)
th->suspend_count = -1;
- th->context.ContextFlags = CONTEXT_DEBUGGER;
+ th->context.ContextFlags = CONTEXT_DEBUGGER_DR;
GetThreadContext (th->h, &th->context);
}
return th;