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>
|
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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
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 *,
|
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",
|
||||||
|
|
|
@ -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) (¤t_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.
|
||||||
|
|
Loading…
Reference in a new issue