Eliminate procfs.c:procfs_use_watchpoints
Commit Message
Now that procfs.c is only ever used by Solaris, and, both x86 and
SPARC Solaris support watchpoints (*), we don't need the separate
procfs_use_watchpoints function. Getting rid of it simplifies
C++ification of target_ops.
(*) and I assume that any other Solaris port would use the same kernel
debug API interfaces for watchpoints. Otherwise, we can worry about
it if it ever happens.
gdb/ChangeLog:
yyyy-mm-dd Pedro Alves <palves@redhat.com>
* procfs.c (procfs_stopped_by_watchpoint)
(procfs_insert_watchpoint, procfs_remove_watchpoint)
(procfs_region_ok_for_hw_watchpoint, procfs_stopped_data_address):
Forward declare.
(procfs_use_watchpoints): Delete, move contents...
(procfs_target): ... here.
* procfs.h (procfs_use_watchpoints): Delete declaration.
* i386-sol2-nat.c (_initialize_amd64_sol2_nat): Don't call
procfs_use_watchpoints.
* sparc-sol2-nat.c (_initialize_sparc_sol2_nat): Don't call
procfs_use_watchpoints.
---
gdb/i386-sol2-nat.c | 2 --
gdb/procfs.c | 34 +++++++++++++++++++++++-----------
gdb/procfs.h | 6 ------
gdb/sparc-sol2-nat.c | 1 -
4 files changed, 23 insertions(+), 20 deletions(-)
Comments
On 04/12/2018 05:57 PM, Pedro Alves wrote:
> Now that procfs.c is only ever used by Solaris, and, both x86 and
> SPARC Solaris support watchpoints (*), we don't need the separate
> procfs_use_watchpoints function. Getting rid of it simplifies
> C++ification of target_ops.
>
> (*) and I assume that any other Solaris port would use the same kernel
> debug API interfaces for watchpoints. Otherwise, we can worry about
> it if it ever happens.
>
> gdb/ChangeLog:
> yyyy-mm-dd Pedro Alves <palves@redhat.com>
>
> * procfs.c (procfs_stopped_by_watchpoint)
> (procfs_insert_watchpoint, procfs_remove_watchpoint)
> (procfs_region_ok_for_hw_watchpoint, procfs_stopped_data_address):
> Forward declare.
> (procfs_use_watchpoints): Delete, move contents...
> (procfs_target): ... here.
> * procfs.h (procfs_use_watchpoints): Delete declaration.
> * i386-sol2-nat.c (_initialize_amd64_sol2_nat): Don't call
> procfs_use_watchpoints.
> * sparc-sol2-nat.c (_initialize_sparc_sol2_nat): Don't call
> procfs_use_watchpoints.
I pushed this in.
Thanks,
Pedro Alves
@@ -138,8 +138,6 @@ _initialize_amd64_sol2_nat (void)
/* Fill in the generic procfs methods. */
t = procfs_target ();
- procfs_use_watchpoints (t);
-
#if defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)
amd64_native_gregset32_reg_offset = amd64_sol2_gregset32_reg_offset;
amd64_native_gregset32_num_regs =
@@ -126,6 +126,22 @@ static int procfs_can_use_hw_breakpoint (struct target_ops *self,
static void procfs_info_proc (struct target_ops *, const char *,
enum info_proc_what);
+static int procfs_stopped_by_watchpoint (struct target_ops *);
+
+static int procfs_insert_watchpoint (struct target_ops *,
+ CORE_ADDR, int,
+ enum target_hw_bp_type,
+ struct expression *);
+
+static int procfs_remove_watchpoint (struct target_ops *,
+ CORE_ADDR, int,
+ enum target_hw_bp_type,
+ struct expression *);
+
+static int procfs_region_ok_for_hw_watchpoint (struct target_ops *,
+ CORE_ADDR, int);
+static int procfs_stopped_data_address (struct target_ops *, CORE_ADDR *);
+
#if defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)
/* When GDB is built as 64-bit application on Solaris, the auxv data
is presented in 64-bit format. We need to provide a custom parser
@@ -186,6 +202,13 @@ procfs_target (void)
t->to_auxv_parse = procfs_auxv_parse;
#endif
+ t->to_stopped_by_watchpoint = procfs_stopped_by_watchpoint;
+ t->to_insert_watchpoint = procfs_insert_watchpoint;
+ t->to_remove_watchpoint = procfs_remove_watchpoint;
+ t->to_region_ok_for_hw_watchpoint = procfs_region_ok_for_hw_watchpoint;
+ t->to_can_use_hw_breakpoint = procfs_can_use_hw_breakpoint;
+ t->to_stopped_data_address = procfs_stopped_data_address;
+
t->to_magic = OPS_MAGIC;
return t;
@@ -3385,17 +3408,6 @@ procfs_region_ok_for_hw_watchpoint (struct target_ops *self,
return 1;
}
-void
-procfs_use_watchpoints (struct target_ops *t)
-{
- t->to_stopped_by_watchpoint = procfs_stopped_by_watchpoint;
- t->to_insert_watchpoint = procfs_insert_watchpoint;
- t->to_remove_watchpoint = procfs_remove_watchpoint;
- t->to_region_ok_for_hw_watchpoint = procfs_region_ok_for_hw_watchpoint;
- t->to_can_use_hw_breakpoint = procfs_can_use_hw_breakpoint;
- t->to_stopped_data_address = procfs_stopped_data_address;
-}
-
/* Memory Mappings Functions: */
/* Call a callback function once for each mapping, passing it the
@@ -24,12 +24,6 @@ struct target_ops;
extern struct target_ops *procfs_target (void);
-/* Call this in the native _initialize routine that creates and
- customizes the prototype target returned by procfs_target, if the
- native debug interface supports procfs watchpoints. */
-
-extern void procfs_use_watchpoints (struct target_ops *t);
-
/* Return a ptid for which we guarantee we will be able to find a
'live' procinfo. */
@@ -104,6 +104,5 @@ _initialize_sparc_sol2_nat (void)
struct target_ops *t;
t = procfs_target ();
- procfs_use_watchpoints (t);
add_target (t);
}