/* The inferior's target description. This is a global because the
Windows ports support neither bi-arch nor multi-process. */
extern const struct target_desc *win32_tdesc;
+#ifdef __x86_64__
+extern const struct target_desc *wow64_win32_tdesc;
+
+extern bool wow64_process;
+
+typedef BOOL (WINAPI *winapi_Wow64GetThreadContext) (HANDLE, PWOW64_CONTEXT);
+extern winapi_Wow64GetThreadContext win32_Wow64GetThreadContext;
+#endif
struct win32_target_ops
{
void (*arch_setup) (void);
/* The number of target registers. */
- int num_regs;
+ int (*num_regs) (void);
/* Perform initializations on startup. */
void (*initial_stuff) (void);
const unsigned char *breakpoint;
int breakpoint_len;
+ /* Amount by which to decrement the PC after a breakpoint is
+ hit. */
+ int decr_pc_after_break;
+
/* Get the PC register from REGCACHE. */
CORE_ADDR (*get_pc) (struct regcache *regcache);
/* Set the PC register in REGCACHE. */
CORE_ADDR read_pc (regcache *regcache) override;
void write_pc (regcache *regcache, CORE_ADDR pc) override;
+
+ bool stopped_by_sw_breakpoint () override;
+
+ bool supports_stopped_by_sw_breakpoint () override;
};
/* Retrieve the context for this thread, if not already retrieved. */
of GetLastError. */
extern char * strwinerror (DWORD error);
-/* in wincecompat.c */
-
-extern void to_back_slashes (char *);
-
#endif /* GDBSERVER_WIN32_LOW_H */