X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdbserver%2Fwin32-low.h;h=fafdbb9b1976e18433928527cf2486712aa3e5d1;hb=9b254dd1ce46c19dde1dde5b8d1e22e862dfacce;hp=68daa629155025284f2f500a90e070f25e817700;hpb=68070c10c721d67b22599511a73da6eb57bb4097;p=deliverable%2Fbinutils-gdb.git
diff --git a/gdb/gdbserver/win32-low.h b/gdb/gdbserver/win32-low.h
index 68daa62915..fafdbb9b19 100644
--- a/gdb/gdbserver/win32-low.h
+++ b/gdb/gdbserver/win32-low.h
@@ -1,11 +1,11 @@
/* Internal interfaces for the Win32 specific target code for gdbserver.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008 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 2 of the License, or
+ 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,
@@ -14,9 +14,7 @@
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, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see . */
#include
@@ -24,33 +22,46 @@
each thread. */
typedef struct win32_thread_info
{
+ /* The Win32 thread identifier. */
DWORD tid;
+
+ /* The handle to the thread. */
HANDLE h;
- int suspend_count;
+
+ /* Non zero if SuspendThread was called on this thread. */
+ int suspended;
+
+#ifdef _WIN32_WCE
+ /* The context as retrieved right after suspending the thread. */
+ CONTEXT base_context;
+#endif
+
+ /* The context of the thread, including any manipulations. */
CONTEXT context;
} win32_thread_info;
struct win32_target_ops
{
- /* An array of offset mappings into a Win32 Context structure.
- This is a one-to-one mapping which is indexed by gdb's register
- numbers. It retrieves an offset into the context structure where
- the 4 byte register is located.
- An offset value of -1 indicates that Win32 does not provide this
- register in it's CONTEXT structure. In this case regptr will return
- a pointer into a dummy register. */
- const int *regmap;
-
- /* The number of elements of regmap. */
+ /* The number of target registers. */
int num_regs;
+ /* Perform initializations on startup. */
void (*initial_stuff) (void);
- void (*store_debug_registers) (win32_thread_info *);
- void (*load_debug_registers) (win32_thread_info *);
+ /* Fetch the context from the inferior. */
+ void (*get_thread_context) (win32_thread_info *th, DEBUG_EVENT *current_event);
+
+ /* Flush the context back to the inferior. */
+ void (*set_thread_context) (win32_thread_info *th, DEBUG_EVENT *current_event);
- /* Fetch register(s) from gdbserver regcache data. */
- void (*fetch_inferior_registers) (win32_thread_info *th, int r);
+ /* Called when a thread was added. */
+ void (*thread_added) (win32_thread_info *th);
+
+ /* Fetch register from gdbserver regcache data. */
+ void (*fetch_inferior_register) (win32_thread_info *th, int r);
+
+ /* Store a new register value into the thread context of TH. */
+ void (*store_inferior_register) (win32_thread_info *th, int r);
void (*single_step) (win32_thread_info *th);
@@ -64,13 +75,6 @@ struct win32_target_ops
extern struct win32_target_ops the_low_target;
-/* in win32-low.c */
-
-/* Return a pointer into a CONTEXT field indexed by gdb register number.
- Return a pointer to an dummy register holding zero if there is no
- corresponding CONTEXT field for the given register number. */
-extern char * regptr (CONTEXT* c, int r);
-
/* Map the Windows error number in ERROR to a locale-dependent error
message string and return a pointer to it. Typically, the values
for ERROR come from GetLastError.