mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
* procfs.c (procfs_can_use_hw_breakpoint): New function.
(init_procfs_ops): Define ``to_can_use_hw_breakpoint'' for procfs target vector. * config/mips/nm-irix5.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT): Delete. Add comment regarding this now-deleted target method.
This commit is contained in:
parent
548bcbeca8
commit
1e03ad2088
@ -1,3 +1,11 @@
|
||||
2002-08-13 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* procfs.c (procfs_can_use_hw_breakpoint): New function.
|
||||
(init_procfs_ops): Define ``to_can_use_hw_breakpoint'' for procfs
|
||||
target vector.
|
||||
* config/mips/nm-irix5.h (TARGET_CAN_USE_HARDWARE_WATCHPOINT):
|
||||
Delete. Add comment regarding this now-deleted target method.
|
||||
|
||||
2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
|
||||
|
||||
* m68hc11-tdep.c (M68HC12_NUM_PSEUDO_REGS): New define.
|
||||
|
@ -24,7 +24,9 @@
|
||||
|
||||
#define TARGET_HAS_HARDWARE_WATCHPOINTS
|
||||
|
||||
#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) 1
|
||||
/* TARGET_CAN_USE_HARDWARE_WATCHPOINT is now defined to go through
|
||||
the target vector. For Irix5, procfs_can_use_hw_watchpoint()
|
||||
should be invoked. */
|
||||
|
||||
/* When a hardware watchpoint fires off the PC will be left at the
|
||||
instruction which caused the watchpoint. It will be necessary for
|
||||
|
34
gdb/procfs.c
34
gdb/procfs.c
@ -136,6 +136,8 @@ static int proc_find_memory_regions (int (*) (CORE_ADDR,
|
||||
|
||||
static char * procfs_make_note_section (bfd *, int *);
|
||||
|
||||
static int procfs_can_use_hw_breakpoint (int, int, int);
|
||||
|
||||
struct target_ops procfs_ops; /* the target vector */
|
||||
|
||||
static void
|
||||
@ -183,6 +185,7 @@ init_procfs_ops (void)
|
||||
procfs_ops.to_has_thread_control = tc_schedlock;
|
||||
procfs_ops.to_find_memory_regions = proc_find_memory_regions;
|
||||
procfs_ops.to_make_corefile_notes = procfs_make_note_section;
|
||||
procfs_ops.to_can_use_hw_breakpoint = procfs_can_use_hw_breakpoint;
|
||||
procfs_ops.to_magic = OPS_MAGIC;
|
||||
}
|
||||
|
||||
@ -5138,6 +5141,37 @@ procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rwflag,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return non-zero if we can set a hardware watchpoint of type TYPE. TYPE
|
||||
is one of bp_hardware_watchpoint, bp_read_watchpoint, bp_write_watchpoint,
|
||||
or bp_hardware_watchpoint. CNT is the number of watchpoints used so
|
||||
far.
|
||||
|
||||
Note: procfs_can_use_hw_breakpoint() is not yet used by all
|
||||
procfs.c targets due to the fact that some of them still define
|
||||
TARGET_CAN_USE_HARDWARE_WATCHPOINT. */
|
||||
|
||||
static int
|
||||
procfs_can_use_hw_breakpoint (int type, int cnt, int othertype)
|
||||
{
|
||||
#ifndef TARGET_HAS_HARDWARE_WATCHPOINTS
|
||||
return 0;
|
||||
#else
|
||||
/* Due to the way that proc_set_watchpoint() is implemented, host
|
||||
and target pointers must be of the same size. If they are not,
|
||||
we can't use hardware watchpoints. This limitation is due to the
|
||||
fact that proc_set_watchpoint() calls address_to_host_pointer();
|
||||
a close inspection of address_to_host_pointer will reveal that
|
||||
an internal error will be generated when the host and target
|
||||
pointer sizes are different. */
|
||||
if (sizeof (void *) != TYPE_LENGTH (builtin_type_void_data_ptr))
|
||||
return 0;
|
||||
|
||||
/* Other tests here??? */
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Function: stopped_by_watchpoint
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user