Add target_ops argument to to_region_ok_for_hw_watchpoint

2014-02-19  Tom Tromey  <tromey@redhat.com>

	* target.h (struct target_ops) <to_region_ok_for_hw_watchpoint>:
	Add argument.
	(target_region_ok_for_hw_watchpoint): Add argument.
	* target.c (debug_to_region_ok_for_hw_watchpoint): Add argument.
	(default_region_ok_for_hw_watchpoint): Add argument.
	* spu-multiarch.c (spu_region_ok_for_hw_watchpoint): Add argument.
	* s390-linux-nat.c (s390_region_ok_for_hw_watchpoint): Add 'self'
	argument.
	* remote.c (remote_region_ok_for_hw_watchpoint): Add 'self'
	argument.
	* procfs.c (procfs_region_ok_for_hw_watchpoint): Add 'self'
	argument.
	* ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint): Add
	'self' argument.
	* mips-linux-nat.c (mips_linux_region_ok_for_hw_watchpoint): Add
	'self' argument.
	* inf-ttrace.c (inf_ttrace_region_ok_for_hw_watchpoint): Add
	'self' argument.
	* i386-nat.c (i386_region_ok_for_watchpoint): Add 'self' argument.
	* arm-linux-nat.c (arm_linux_region_ok_for_hw_watchpoint): Add
	'self' argument.
	* aarch64-linux-nat.c (aarch64_linux_region_ok_for_hw_watchpoint):
	Add 'self' argument.
This commit is contained in:
Tom Tromey 2013-12-17 21:29:45 -07:00
parent 7bb99c5383
commit 31568a15a2
13 changed files with 62 additions and 18 deletions

View file

@ -1,3 +1,29 @@
2014-02-19 Tom Tromey <tromey@redhat.com>
* target.h (struct target_ops) <to_region_ok_for_hw_watchpoint>:
Add argument.
(target_region_ok_for_hw_watchpoint): Add argument.
* target.c (debug_to_region_ok_for_hw_watchpoint): Add argument.
(default_region_ok_for_hw_watchpoint): Add argument.
* spu-multiarch.c (spu_region_ok_for_hw_watchpoint): Add argument.
* s390-linux-nat.c (s390_region_ok_for_hw_watchpoint): Add 'self'
argument.
* remote.c (remote_region_ok_for_hw_watchpoint): Add 'self'
argument.
* procfs.c (procfs_region_ok_for_hw_watchpoint): Add 'self'
argument.
* ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint): Add
'self' argument.
* mips-linux-nat.c (mips_linux_region_ok_for_hw_watchpoint): Add
'self' argument.
* inf-ttrace.c (inf_ttrace_region_ok_for_hw_watchpoint): Add
'self' argument.
* i386-nat.c (i386_region_ok_for_watchpoint): Add 'self' argument.
* arm-linux-nat.c (arm_linux_region_ok_for_hw_watchpoint): Add
'self' argument.
* aarch64-linux-nat.c (aarch64_linux_region_ok_for_hw_watchpoint):
Add 'self' argument.
2014-02-19 Tom Tromey <tromey@redhat.com> 2014-02-19 Tom Tromey <tromey@redhat.com>
* target.h (struct target_ops) <to_insert_watchpoint>: Add * target.h (struct target_ops) <to_insert_watchpoint>: Add

View file

@ -1403,7 +1403,8 @@ aarch64_linux_remove_watchpoint (struct target_ops *self,
/* Implement the "to_region_ok_for_hw_watchpoint" target_ops method. */ /* Implement the "to_region_ok_for_hw_watchpoint" target_ops method. */
static int static int
aarch64_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) aarch64_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
CORE_ADDR aligned_addr; CORE_ADDR aligned_addr;

View file

@ -1076,7 +1076,8 @@ arm_linux_remove_hw_breakpoint (struct target_ops *self,
/* Are we able to use a hardware watchpoint for the LEN bytes starting at /* Are we able to use a hardware watchpoint for the LEN bytes starting at
ADDR? */ ADDR? */
static int static int
arm_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) arm_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap (); const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap ();
CORE_ADDR max_wp_length, aligned_addr; CORE_ADDR max_wp_length, aligned_addr;

View file

@ -664,7 +664,8 @@ i386_remove_watchpoint (struct target_ops *self,
address ADDR and whose length is LEN bytes. */ address ADDR and whose length is LEN bytes. */
static int static int
i386_region_ok_for_watchpoint (CORE_ADDR addr, int len) i386_region_ok_for_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
struct i386_debug_reg_state *state struct i386_debug_reg_state *state
= i386_debug_reg_state (ptid_get_pid (inferior_ptid)); = i386_debug_reg_state (ptid_get_pid (inferior_ptid));

View file

@ -368,7 +368,8 @@ inf_ttrace_can_use_hw_breakpoint (struct target_ops *self,
} }
static int static int
inf_ttrace_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) inf_ttrace_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
return 1; return 1;
} }

View file

@ -589,7 +589,8 @@ mips_linux_stopped_data_address (struct target_ops *t, CORE_ADDR *paddr)
the specified region can be covered by the watch registers. */ the specified region can be covered by the watch registers. */
static int static int
mips_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) mips_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
struct pt_watch_regs dummy_regs; struct pt_watch_regs dummy_regs;
int i; int i;

View file

@ -1497,7 +1497,8 @@ ppc_linux_can_use_hw_breakpoint (struct target_ops *self,
} }
static int static int
ppc_linux_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) ppc_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
/* Handle sub-8-byte quantities. */ /* Handle sub-8-byte quantities. */
if (len <= 0) if (len <= 0)

View file

@ -4930,7 +4930,8 @@ procfs_remove_watchpoint (struct target_ops *self,
} }
static int static int
procfs_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) procfs_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
/* The man page for proc(4) on Solaris 2.6 and up says that the /* The man page for proc(4) on Solaris 2.6 and up says that the
system can support "thousands" of hardware watchpoints, but gives system can support "thousands" of hardware watchpoints, but gives

View file

@ -8259,7 +8259,8 @@ int remote_hw_watchpoint_length_limit = -1;
int remote_hw_breakpoint_limit = -1; int remote_hw_breakpoint_limit = -1;
static int static int
remote_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) remote_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
if (remote_hw_watchpoint_length_limit == 0) if (remote_hw_watchpoint_length_limit == 0)
return 0; return 0;

View file

@ -566,7 +566,8 @@ s390_can_use_hw_breakpoint (struct target_ops *self,
} }
static int static int
s390_region_ok_for_hw_watchpoint (CORE_ADDR addr, int cnt) s390_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int cnt)
{ {
return 1; return 1;
} }

View file

@ -118,7 +118,8 @@ spu_thread_architecture (struct target_ops *ops, ptid_t ptid)
/* Override the to_region_ok_for_hw_watchpoint routine. */ /* Override the to_region_ok_for_hw_watchpoint routine. */
static int static int
spu_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) spu_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
struct target_ops *ops_beneath = find_target_beneath (&spu_ops); struct target_ops *ops_beneath = find_target_beneath (&spu_ops);
while (ops_beneath && !ops_beneath->to_region_ok_for_hw_watchpoint) while (ops_beneath && !ops_beneath->to_region_ok_for_hw_watchpoint)
@ -129,7 +130,8 @@ spu_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
return 0; return 0;
if (ops_beneath) if (ops_beneath)
return ops_beneath->to_region_ok_for_hw_watchpoint (addr, len); return ops_beneath->to_region_ok_for_hw_watchpoint (ops_beneath,
addr, len);
return 0; return 0;
} }

View file

@ -52,7 +52,8 @@ static void default_terminal_info (const char *, int);
static int default_watchpoint_addr_within_range (struct target_ops *, static int default_watchpoint_addr_within_range (struct target_ops *,
CORE_ADDR, CORE_ADDR, int); CORE_ADDR, CORE_ADDR, int);
static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int); static int default_region_ok_for_hw_watchpoint (struct target_ops *,
CORE_ADDR, int);
static void tcomplain (void) ATTRIBUTE_NORETURN; static void tcomplain (void) ATTRIBUTE_NORETURN;
@ -124,7 +125,8 @@ static int debug_to_stopped_data_address (struct target_ops *, CORE_ADDR *);
static int debug_to_watchpoint_addr_within_range (struct target_ops *, static int debug_to_watchpoint_addr_within_range (struct target_ops *,
CORE_ADDR, CORE_ADDR, int); CORE_ADDR, CORE_ADDR, int);
static int debug_to_region_ok_for_hw_watchpoint (CORE_ADDR, int); static int debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR, int);
static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, int, int, static int debug_to_can_accel_watchpoint_condition (CORE_ADDR, int, int,
struct expression *); struct expression *);
@ -3641,7 +3643,8 @@ target_fileio_read_stralloc (const char *filename)
static int static int
default_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) default_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT); return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
} }
@ -4647,11 +4650,13 @@ debug_to_can_use_hw_breakpoint (struct target_ops *self,
} }
static int static int
debug_to_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) debug_to_region_ok_for_hw_watchpoint (struct target_ops *self,
CORE_ADDR addr, int len)
{ {
CORE_ADDR retval; CORE_ADDR retval;
retval = debug_target.to_region_ok_for_hw_watchpoint (addr, len); retval = debug_target.to_region_ok_for_hw_watchpoint (&debug_target,
addr, len);
fprintf_unfiltered (gdb_stdlog, fprintf_unfiltered (gdb_stdlog,
"target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n", "target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",

View file

@ -479,7 +479,8 @@ struct target_ops
/* Documentation of this routine is provided with the corresponding /* Documentation of this routine is provided with the corresponding
target_* macro. */ target_* macro. */
int (*to_region_ok_for_hw_watchpoint) (CORE_ADDR, int); int (*to_region_ok_for_hw_watchpoint) (struct target_ops *,
CORE_ADDR, int);
int (*to_can_accel_watchpoint_condition) (CORE_ADDR, int, int, int (*to_can_accel_watchpoint_condition) (CORE_ADDR, int, int,
struct expression *); struct expression *);
@ -1606,7 +1607,8 @@ extern char *target_thread_name (struct thread_info *);
memory region, or zero if not supported. */ memory region, or zero if not supported. */
#define target_region_ok_for_hw_watchpoint(addr, len) \ #define target_region_ok_for_hw_watchpoint(addr, len) \
(*current_target.to_region_ok_for_hw_watchpoint) (addr, len) (*current_target.to_region_ok_for_hw_watchpoint) (&current_target, \
addr, len)
/* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes. /* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes.