move remote_stopped_by_watchpoint_p and remote_watch_data_address into remote_state

This moves the globals remote_stopped_by_watchpoint_p and
remote_watch_data_address into remote_state.

	* remote.c (struct remote_state) <remote_stopped_by_watchpoint_p,
	remote_watch_data_address>: New fields.
	(remote_stopped_by_watchpoint_p, remote_watch_data_address): Remove.
	(process_stop_reply, remote_wait_as)
	(remote_check_watch_resources, remote_stopped_data_address): Update.
This commit is contained in:
Tom Tromey 2013-08-14 18:17:13 +00:00
parent 88b496c367
commit ee154beebf
2 changed files with 25 additions and 16 deletions

View File

@ -1,3 +1,11 @@
2013-08-14 Tom Tromey <tromey@redhat.com>
* remote.c (struct remote_state) <remote_stopped_by_watchpoint_p,
remote_watch_data_address>: New fields.
(remote_stopped_by_watchpoint_p, remote_watch_data_address): Remove.
(process_stop_reply, remote_wait_as)
(remote_check_watch_resources, remote_stopped_data_address): Update.
2013-08-14 Tom Tromey <tromey@redhat.com>
* remote.c (struct remote_state) <async_client_callback,

View File

@ -405,6 +405,13 @@ struct remote_state
void (*async_client_callback) (enum inferior_event_type event_type,
void *context);
void *async_client_context;
/* This is set to the data address of the access causing the target
to stop for a watchpoint. */
CORE_ADDR remote_watch_data_address;
/* This is non-zero if target stopped for a watchpoint. */
int remote_stopped_by_watchpoint_p;
};
/* Private data that we'll store in (struct thread_info)->private. */
@ -789,17 +796,6 @@ packet_reg_from_pnum (struct remote_arch_state *rsa, LONGEST pnum)
return NULL;
}
/* FIXME: graces/2002-08-08: These variables should eventually be
bound to an instance of the target object (as in gdbarch-tdep()),
when such a thing exists. */
/* This is set to the data address of the access causing the target
to stop for a watchpoint. */
static CORE_ADDR remote_watch_data_address;
/* This is non-zero if target stopped for a watchpoint. */
static int remote_stopped_by_watchpoint_p;
static struct target_ops remote_ops;
static struct target_ops extended_remote_ops;
@ -5843,6 +5839,8 @@ process_stop_reply (struct stop_reply *stop_reply,
if (status->kind != TARGET_WAITKIND_EXITED
&& status->kind != TARGET_WAITKIND_SIGNALLED)
{
struct remote_state *rs = get_remote_state ();
/* Expedited registers. */
if (stop_reply->regcache)
{
@ -5858,8 +5856,8 @@ process_stop_reply (struct stop_reply *stop_reply,
VEC_free (cached_reg_t, stop_reply->regcache);
}
remote_stopped_by_watchpoint_p = stop_reply->stopped_by_watchpoint_p;
remote_watch_data_address = stop_reply->watch_data_address;
rs->remote_stopped_by_watchpoint_p = stop_reply->stopped_by_watchpoint_p;
rs->remote_watch_data_address = stop_reply->watch_data_address;
remote_notice_new_inferior (ptid, 0);
demand_private_info (ptid)->core = stop_reply->core;
@ -5985,7 +5983,7 @@ remote_wait_as (ptid_t ptid, struct target_waitstatus *status, int options)
buf = rs->buf;
remote_stopped_by_watchpoint_p = 0;
rs->remote_stopped_by_watchpoint_p = 0;
/* We got something. */
rs->waiting_for_stop_reply = 0;
@ -8426,17 +8424,20 @@ remote_check_watch_resources (int type, int cnt, int ot)
static int
remote_stopped_by_watchpoint (void)
{
return remote_stopped_by_watchpoint_p;
struct remote_state *rs = get_remote_state ();
return rs->remote_stopped_by_watchpoint_p;
}
static int
remote_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p)
{
struct remote_state *rs = get_remote_state ();
int rc = 0;
if (remote_stopped_by_watchpoint ())
{
*addr_p = remote_watch_data_address;
*addr_p = rs->remote_watch_data_address;
rc = 1;
}