* win32-low.c (debug_registers_changed,

debug_registers_used, CONTEXT_EXTENDED_REGISTERS,
	CONTEXT_FLOATING_POINT, CONTEXT_DEBUG_REGISTERS,
	CONTEXT_DEBUGGER, CONTEXT_DEBUGGER_DR): Delete.
	(thread_rec): Get context using the low target.
	(child_add_thread): Call thread_added on the low target,
	which does the same thing.
	(regptr): Delete.
	(do_initial_child_stuff): Remove debug registers references.
	Set context using the low target.  Resume threads after
	setting the contexts.
	(child_continue): Remove dead variable.  Remove debug
	registers references.
	(child_fetch_inferior_registers): Go through the low target.
	(do_child_store_inferior_registers): Remove.
	(child_store_inferior_registers): Go through the low target.
	(win32_resume): Remove debug registers references.
	Set context using the low target.
	(handle_exception): Change return type to void.  Don't record
	context here.  Set status to TARGET_WAITKIND_SPURIOUS on a
	first chance exception.
	(get_child_debug_event): Change return type to void.  Remove
	goto loop.  Always return after waiting for debug event.
	(win32_wait): Convert to switch statement.  Handle spurious
	events.

	* win32-i386-low.c (debug_registers_changed,
	debug_registers_used): New.
	(initial_stuff): Rename to ...
	(i386_initial_stuff): ... this.  Clear debug registers
	state variables.
	(store_debug_registers): Delete.
	(i386_get_thread_context): New.
	(load_debug_registers): Delete.
	(i386_set_thread_context): New.
	(i386_thread_added): New.
	(single_step): Rename to ...
	(i386_single_step): ... this.
	(do_fetch_inferior_registers): Rename to ...
	(i386_fetch_inferior_register): ... this.
	(i386_store_inferior_register): New.
	(the_low_target): Adapt to new interface.

	* win32-arm-low.c (CONTEXT_FLOATING_POINT): Define.
	(arm_get_thread_context): New.
	(arm_set_thread_context): New.
	(regptr): New.
	(do_fetch_inferior_registers): Rename to ...
	(arm_fetch_inferior_register): ... this.
	(arm_store_inferior_register): New.
	(arm_wince_breakpoint): Reimplement as unsigned long.
	(arm_wince_breakpoint_len): Define.
	(the_low_target): Adapt to new interface.

	* win32-low.h (target_ops): Remove regmap, store_debug_registers and
	load_debug_registers.  Add get_thread_context, set_thread_context,
	thread_added and store_inferior_register.  Rename
	fetch_inferior_registers to fetch_inferior_register.
	(regptr): Remove declaration.
This commit is contained in:
Pedro Alves
2007-05-10 21:48:56 +00:00
parent 7714d83ad4
commit 34b3492108
5 changed files with 277 additions and 232 deletions

View File

@@ -32,25 +32,26 @@ typedef struct 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);
/* Fetch register(s) from gdbserver regcache data. */
void (*fetch_inferior_registers) (win32_thread_info *th, int r);
/* Flush the context back to the inferior. */
void (*set_thread_context) (win32_thread_info *th, DEBUG_EVENT *current_event);
/* 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 +65,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.