summaryrefslogtreecommitdiff
path: root/gdb/i386-nat.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2004-10-08 17:30:48 +0000
committerJeff Johnston <jjohnstn@redhat.com>2004-10-08 17:30:48 +0000
commit586267e73d05674b6ee702244d02177b97890ca5 (patch)
tree966e242b368d99d8af3d748625704fa810b9e9e3 /gdb/i386-nat.c
parent7b3220bec3329ffaaea038fa0de4ebf4718b33d9 (diff)
downloadgdb-586267e73d05674b6ee702244d02177b97890ca5.tar.gz
2004-10-08 Jeff Johnston <jjohnstn@redhat.com>
* target.h (to_stopped_data_address): Change prototype to take a CORE_ADDR pointer and return an int. * target.c (update_current_target): Change to_stopped_data_address to match new prototype. (debug_to_stopped_data_address): Change appropriately. * breakpoint.c (bpstat_stop_status): Change call to target_stopped_data_address to use new prototype. * frv-tdep.c (frv_have_stopped_data_address): New function. (frv_stopped_data_address): Change to new prototype and functionality. * ia64-linux-nat.c (ia64_stopped_data_address): Change to new prototype and functionality. (ia64_stopped_by_watchpoint): New function. * i386-nat.c (i386_stopped_data_address): Change to new prototype and functionality. (i386_stopped_by_watchpoint): New function. * remote.c (remote_stopped_data_address): Change to new prototype and functionality. * remote-m32r-sdi.c (m32r_stopped_data_address): Ditto. * config/frv/tm-frv.h (frv_stopped_data_address): Change prototype. (STOPPED_BY_WATCHPOINT): Change to use frv_have_stopped_data_address. * config/i386/nm-i386.h (STOPPED_BY_WATCHPOINT): Change to use new i386_stopped_by_watchpoint function. (i386_stopped_by_watchpoint): New prototype. (i386_stoppped_data_address): Change to new prototype. * config/ia64/nm-linux.h (STOPPED_BY_WATCHPOINT): Change to use new ia64_stopped_by_watchpoint function. (ia64_stopped_by_watchpoint): New prototype. (ia64_stopped_data_address): Ditto.
Diffstat (limited to 'gdb/i386-nat.c')
-rw-r--r--gdb/i386-nat.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/gdb/i386-nat.c b/gdb/i386-nat.c
index 95b46096b51..6b5f49b2a38 100644
--- a/gdb/i386-nat.c
+++ b/gdb/i386-nat.c
@@ -564,14 +564,16 @@ i386_region_ok_for_watchpoint (CORE_ADDR addr, int len)
return nregs <= DR_NADDR ? 1 : 0;
}
-/* If the inferior has some watchpoint that triggered, return the
- address associated with that watchpoint. Otherwise, return zero. */
+/* If the inferior has some watchpoint that triggered, set the
+ address associated with that watchpoint and return non-zero.
+ Otherwise, return zero. */
-CORE_ADDR
-i386_stopped_data_address (void)
+int
+i386_stopped_data_address (CORE_ADDR *addr_p)
{
CORE_ADDR addr = 0;
int i;
+ int rc = 0;
dr_status_mirror = I386_DR_LOW_GET_STATUS ();
@@ -586,6 +588,7 @@ i386_stopped_data_address (void)
&& I386_DR_GET_RW_LEN (i) != 0)
{
addr = dr_mirror[i];
+ rc = 1;
if (maint_show_dr)
i386_show_dr ("watchpoint_hit", addr, -1, hw_write);
}
@@ -593,7 +596,16 @@ i386_stopped_data_address (void)
if (maint_show_dr && addr == 0)
i386_show_dr ("stopped_data_addr", 0, 0, hw_write);
- return addr;
+ if (rc)
+ *addr_p = addr;
+ return rc;
+}
+
+int
+i386_stopped_by_watchpoint (void)
+{
+ CORE_ADDR addr = 0;
+ return i386_stopped_data_address (&addr);
}
/* Return non-zero if the inferior has some break/watchpoint that