diff options
author | Christopher Faylor <me+cygwin@cgf.cx> | 2001-11-27 05:15:58 +0000 |
---|---|---|
committer | Christopher Faylor <me+cygwin@cgf.cx> | 2001-11-27 05:15:58 +0000 |
commit | 97da3b2016c57fefa9cb2f7d6c6c63aa352b6a04 (patch) | |
tree | 9d07b20d660696184104751f4c3afa618a4e0da7 /gdb/windows-nat.c | |
parent | 467d85198ffb27a97ef21aa85c044a3ace19990a (diff) | |
download | gdb-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/windows-nat.c')
-rw-r--r-- | gdb/windows-nat.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 4b90088..9b9286f 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-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; |