/* Internal interfaces for the Win32 specific target code for gdbserver.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GDB.
each thread. */
typedef struct win32_thread_info
{
+ /* The Win32 thread identifier. */
DWORD tid;
+
+ /* The handle to the thread. */
HANDLE h;
- int suspend_count;
+
+ /* Thread Information Block address. */
+ CORE_ADDR thread_local_base;
+
+ /* 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
{
+ /* Architecture-specific setup. */
+ void (*arch_setup) (void);
+
/* The number of target registers. */
int num_regs;
void (*thread_added) (win32_thread_info *th);
/* Fetch register from gdbserver regcache data. */
- void (*fetch_inferior_register) (win32_thread_info *th, int r);
+ void (*fetch_inferior_register) (struct regcache *regcache,
+ 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 (*store_inferior_register) (struct regcache *regcache,
+ win32_thread_info *th, int r);
void (*single_step) (win32_thread_info *th);
const unsigned char *breakpoint;
int breakpoint_len;
- /* What string to report to GDB when it asks for the architecture,
- or NULL not to answer. */
- const char *arch_string;
+ /* Breakpoint/Watchpoint related functions. See target.h for comments. */
+ int (*insert_point) (char type, CORE_ADDR addr, int len);
+ int (*remove_point) (char type, CORE_ADDR addr, int len);
+ int (*stopped_by_watchpoint) (void);
+ CORE_ADDR (*stopped_data_address) (void);
};
extern struct win32_target_ops the_low_target;