X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdbserver%2Fwin32-low.h;h=f3b44776ae1c56db62352f70307286dcefe67b2e;hb=160f8a8f32f5566077e4a4b13943bc7c70bc5da2;hp=917f72756229d9648bc4434abc7a255f7d646a78;hpb=4834dad062658ef49ef86c9c48eb004c48a242a5;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h index 917f727562..f3b44776ae 100644 --- a/gdbserver/win32-low.h +++ b/gdbserver/win32-low.h @@ -27,6 +27,14 @@ struct target_desc; /* 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 { @@ -34,7 +42,7 @@ 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); @@ -63,6 +71,15 @@ struct win32_target_ops 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. */ + void (*set_pc) (struct regcache *regcache, CORE_ADDR newpc); + /* Breakpoint/Watchpoint related functions. See target.h for comments. */ int (*supports_z_point_type) (char z_type); int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr, @@ -142,6 +159,14 @@ public: int get_tib_address (ptid_t ptid, CORE_ADDR *addr) override; const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override; + + 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. */ @@ -158,8 +183,4 @@ extern void win32_require_context (windows_nat::windows_thread_info *th); of GetLastError. */ extern char * strwinerror (DWORD error); -/* in wincecompat.c */ - -extern void to_back_slashes (char *); - #endif /* GDBSERVER_WIN32_LOW_H */