aboutsummaryrefslogtreecommitdiff
path: root/gdb/i386-windows-nat.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2009-01-11 04:13:57 +0000
committerJoel Brobecker <brobecker@gnat.com>2009-01-11 04:13:57 +0000
commit7e63b4e466c57fbcaaf1caa1ca7be1a8ed129934 (patch)
tree6d31ce1f537c84a533dd8e8c2923f38fed0b1082 /gdb/i386-windows-nat.c
parent71260a99a510321d8b05bccef2340e4e9fb2a009 (diff)
downloadgdb-7e63b4e466c57fbcaaf1caa1ca7be1a8ed129934.zip
gdb-7e63b4e466c57fbcaaf1caa1ca7be1a8ed129934.tar.gz
gdb-7e63b4e466c57fbcaaf1caa1ca7be1a8ed129934.tar.bz2
* win32-nat.h: New file.
* win32-nat.c (mappings): Initialize to NULL. (win32_set_context_register_offsets): New function. * i386-windows-nat.c: New file. (mappings): Moved here from win32-nat.c. (_initialize_i386_windows_nat): New function. * config/i386/mingw.mh (NATDEPFILES): Add i386-windows-nat.o. * config/i386/cygwin.mh (NATDEPFILES): Likewise.
Diffstat (limited to 'gdb/i386-windows-nat.c')
-rw-r--r--gdb/i386-windows-nat.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/gdb/i386-windows-nat.c b/gdb/i386-windows-nat.c
new file mode 100644
index 0000000..a22d6e8
--- /dev/null
+++ b/gdb/i386-windows-nat.c
@@ -0,0 +1,76 @@
+/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "defs.h"
+#include "win32-nat.h"
+
+#include <windows.h>
+
+#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
+static const int mappings[] =
+{
+ context_offset (Eax),
+ context_offset (Ecx),
+ context_offset (Edx),
+ context_offset (Ebx),
+ context_offset (Esp),
+ context_offset (Ebp),
+ context_offset (Esi),
+ context_offset (Edi),
+ context_offset (Eip),
+ context_offset (EFlags),
+ context_offset (SegCs),
+ context_offset (SegSs),
+ context_offset (SegDs),
+ context_offset (SegEs),
+ context_offset (SegFs),
+ context_offset (SegGs),
+ context_offset (FloatSave.RegisterArea[0 * 10]),
+ context_offset (FloatSave.RegisterArea[1 * 10]),
+ context_offset (FloatSave.RegisterArea[2 * 10]),
+ context_offset (FloatSave.RegisterArea[3 * 10]),
+ context_offset (FloatSave.RegisterArea[4 * 10]),
+ context_offset (FloatSave.RegisterArea[5 * 10]),
+ context_offset (FloatSave.RegisterArea[6 * 10]),
+ context_offset (FloatSave.RegisterArea[7 * 10]),
+ context_offset (FloatSave.ControlWord),
+ context_offset (FloatSave.StatusWord),
+ context_offset (FloatSave.TagWord),
+ context_offset (FloatSave.ErrorSelector),
+ context_offset (FloatSave.ErrorOffset),
+ context_offset (FloatSave.DataSelector),
+ context_offset (FloatSave.DataOffset),
+ context_offset (FloatSave.ErrorSelector)
+ /* XMM0-7 */ ,
+ context_offset (ExtendedRegisters[10*16]),
+ context_offset (ExtendedRegisters[11*16]),
+ context_offset (ExtendedRegisters[12*16]),
+ context_offset (ExtendedRegisters[13*16]),
+ context_offset (ExtendedRegisters[14*16]),
+ context_offset (ExtendedRegisters[15*16]),
+ context_offset (ExtendedRegisters[16*16]),
+ context_offset (ExtendedRegisters[17*16]),
+ /* MXCSR */
+ context_offset (ExtendedRegisters[24])
+};
+#undef context_offset
+
+void
+_initialize_i386_windows_nat (void)
+{
+ win32_set_context_register_offsets (mappings);
+}