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:
parent
7bb99c5383
commit
31568a15a2
13 changed files with 62 additions and 18 deletions
|
@ -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>
|
||||
|
||||
* target.h (struct target_ops) <to_insert_watchpoint>: Add
|
||||
|
|
|
@ -1403,7 +1403,8 @@ aarch64_linux_remove_watchpoint (struct target_ops *self,
|
|||
/* Implement the "to_region_ok_for_hw_watchpoint" target_ops method. */
|
||||
|
||||
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;
|
||||
|
||||
|
|
|
@ -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
|
||||
ADDR? */
|
||||
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 ();
|
||||
CORE_ADDR max_wp_length, aligned_addr;
|
||||
|
|
|
@ -664,7 +664,8 @@ i386_remove_watchpoint (struct target_ops *self,
|
|||
address ADDR and whose length is LEN bytes. */
|
||||
|
||||
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
|
||||
= i386_debug_reg_state (ptid_get_pid (inferior_ptid));
|
||||
|
|
|
@ -368,7 +368,8 @@ inf_ttrace_can_use_hw_breakpoint (struct target_ops *self,
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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. */
|
||||
|
||||
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;
|
||||
int i;
|
||||
|
|
|
@ -1497,7 +1497,8 @@ ppc_linux_can_use_hw_breakpoint (struct target_ops *self,
|
|||
}
|
||||
|
||||
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. */
|
||||
if (len <= 0)
|
||||
|
|
|
@ -4930,7 +4930,8 @@ procfs_remove_watchpoint (struct target_ops *self,
|
|||
}
|
||||
|
||||
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
|
||||
system can support "thousands" of hardware watchpoints, but gives
|
||||
|
|
|
@ -8259,7 +8259,8 @@ int remote_hw_watchpoint_length_limit = -1;
|
|||
int remote_hw_breakpoint_limit = -1;
|
||||
|
||||
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)
|
||||
return 0;
|
||||
|
|
|
@ -566,7 +566,8 @@ s390_can_use_hw_breakpoint (struct target_ops *self,
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -118,7 +118,8 @@ spu_thread_architecture (struct target_ops *ops, ptid_t ptid)
|
|||
|
||||
/* Override the to_region_ok_for_hw_watchpoint routine. */
|
||||
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);
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
15
gdb/target.c
15
gdb/target.c
|
@ -52,7 +52,8 @@ static void default_terminal_info (const char *, int);
|
|||
static int default_watchpoint_addr_within_range (struct target_ops *,
|
||||
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;
|
||||
|
||||
|
@ -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 *,
|
||||
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,
|
||||
struct expression *);
|
||||
|
@ -3641,7 +3643,8 @@ target_fileio_read_stralloc (const char *filename)
|
|||
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -4647,11 +4650,13 @@ debug_to_can_use_hw_breakpoint (struct target_ops *self,
|
|||
}
|
||||
|
||||
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;
|
||||
|
||||
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,
|
||||
"target_region_ok_for_hw_watchpoint (%s, %ld) = %s\n",
|
||||
|
|
|
@ -479,7 +479,8 @@ struct target_ops
|
|||
|
||||
/* Documentation of this routine is provided with the corresponding
|
||||
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,
|
||||
struct expression *);
|
||||
|
@ -1606,7 +1607,8 @@ extern char *target_thread_name (struct thread_info *);
|
|||
memory region, or zero if not supported. */
|
||||
|
||||
#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) (¤t_target, \
|
||||
addr, len)
|
||||
|
||||
|
||||
/* Set/clear a hardware watchpoint starting at ADDR, for LEN bytes.
|
||||
|
|
Loading…
Reference in a new issue