From f3d11a9a96465432c01678445fc2fe84f2ef94f7 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 30 Nov 2018 14:53:40 +0000 Subject: [PATCH] Convert default_child_has_foo functions to process_stratum_target methods This patch converts the default_child_has_foo functions to process_stratum_target methods. This simplifies "regular" non-inf_child process_stratum targets, since they no longer have to override the target_ops::has_foo methods to call the default_child_foo functions. A couple targets need to override the new defaults (corelow and tracefiles), but it still seems like a good tradeoff, since those are expected to be little different (target doesn't run). gdb/ChangeLog: 2018-11-30 Pedro Alves * corelow.c (core_target) : New overrides. * inf-child.c (inf_child_target::has_all_memory) (inf_child_target::has_memory, inf_child_target::has_stack) (inf_child_target::has_registers) (inf_child_target::has_execution): Delete. * inf-child.h (inf_child_target) : Delete. * process-stratum-target.c (process_stratum_target::has_all_memory) (process_stratum_target::has_memory) (process_stratum_target::has_stack) (process_stratum_target::has_registers) (process_stratum_target::has_execution): New. * process-stratum-target.h (process_stratum_target) : New method overrides. * ravenscar-thread.c (ravenscar_thread_target) : Delete. * remote-sim.c (gdbsim_target) : Delete. * remote.c (remote_target) : Delete. * target.c (default_child_has_all_memory) (default_child_has_memory, default_child_has_stack) (default_child_has_registers, default_child_has_execution): Delete. * target.h (default_child_has_all_memory) (default_child_has_memory, default_child_has_stack) (default_child_has_registers, default_child_has_execution): Delete. * tracefile.h (tracefile_target) : New override. --- gdb/ChangeLog | 35 ++++++++++++++++++++++++++++ gdb/corelow.c | 3 +++ gdb/inf-child.c | 30 ------------------------ gdb/inf-child.h | 6 ----- gdb/process-stratum-target.c | 36 +++++++++++++++++++++++++++++ gdb/process-stratum-target.h | 8 +++++++ gdb/ravenscar-thread.c | 7 ------ gdb/remote-sim.c | 9 -------- gdb/remote.c | 6 ----- gdb/target.c | 54 -------------------------------------------- gdb/target.h | 9 -------- gdb/tracefile.h | 1 + 12 files changed, 83 insertions(+), 121 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index faed74b..8fdf04a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,40 @@ 2018-11-30 Pedro Alves + * corelow.c (core_target) : New + overrides. + * inf-child.c (inf_child_target::has_all_memory) + (inf_child_target::has_memory, inf_child_target::has_stack) + (inf_child_target::has_registers) + (inf_child_target::has_execution): Delete. + * inf-child.h (inf_child_target) : Delete. + * process-stratum-target.c + (process_stratum_target::has_all_memory) + (process_stratum_target::has_memory) + (process_stratum_target::has_stack) + (process_stratum_target::has_registers) + (process_stratum_target::has_execution): New. + * process-stratum-target.h (process_stratum_target) + : New method overrides. + * ravenscar-thread.c (ravenscar_thread_target) : Delete. + * remote-sim.c (gdbsim_target) : Delete. + * remote.c (remote_target) : Delete. + * target.c (default_child_has_all_memory) + (default_child_has_memory, default_child_has_stack) + (default_child_has_registers, default_child_has_execution): + Delete. + * target.h (default_child_has_all_memory) + (default_child_has_memory, default_child_has_stack) + (default_child_has_registers, default_child_has_execution): + Delete. + * tracefile.h (tracefile_target) : New override. + +2018-11-30 Pedro Alves + * Makefile.in (COMMON_SFILES): Add process-stratum-target.c. * bsd-kvm.c: Include "process-stratum-target.h". (bsd_kvm_target): Now inherits from process_stratum_target. diff --git a/gdb/corelow.c b/gdb/corelow.c index deabf84..7cc177c9 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -90,9 +90,12 @@ public: const char *thread_name (struct thread_info *) override; + bool has_all_memory () override { return false; } bool has_memory () override; bool has_stack () override; bool has_registers () override; + bool has_execution (ptid_t) override { return false; } + bool info_proc (const char *, enum info_proc_what) override; /* A few helpers. */ diff --git a/gdb/inf-child.c b/gdb/inf-child.c index 8cdfa05..fc70445 100644 --- a/gdb/inf-child.c +++ b/gdb/inf-child.c @@ -243,36 +243,6 @@ inf_child_target::pid_to_exec_file (int pid) return NULL; } -bool -inf_child_target::has_all_memory () -{ - return default_child_has_all_memory (); -} - -bool -inf_child_target::has_memory () -{ - return default_child_has_memory (); -} - -bool -inf_child_target::has_stack () -{ - return default_child_has_stack (); -} - -bool -inf_child_target::has_registers () -{ - return default_child_has_registers (); -} - -bool -inf_child_target::has_execution (ptid_t ptid) -{ - return default_child_has_execution (ptid); -} - /* Implementation of to_fileio_open. */ int diff --git a/gdb/inf-child.h b/gdb/inf-child.h index d301d39..a0bb40b 100644 --- a/gdb/inf-child.h +++ b/gdb/inf-child.h @@ -72,12 +72,6 @@ public: char *pid_to_exec_file (int pid) override; - bool has_all_memory () override; - bool has_memory () override; - bool has_stack () override; - bool has_registers () override; - bool has_execution (ptid_t) override; - int fileio_open (struct inferior *inf, const char *filename, int flags, int mode, int warn_if_slow, int *target_errno) override; diff --git a/gdb/process-stratum-target.c b/gdb/process-stratum-target.c index 9ce8d3d..ca9d13a 100644 --- a/gdb/process-stratum-target.c +++ b/gdb/process-stratum-target.c @@ -47,3 +47,39 @@ process_stratum_target::thread_architecture (ptid_t ptid) gdb_assert (inf != NULL); return inf->gdbarch; } + +bool +process_stratum_target::has_all_memory () +{ + /* If no inferior selected, then we can't read memory here. */ + return inferior_ptid != null_ptid; +} + +bool +process_stratum_target::has_memory () +{ + /* If no inferior selected, then we can't read memory here. */ + return inferior_ptid != null_ptid; +} + +bool +process_stratum_target::has_stack () +{ + /* If no inferior selected, there's no stack. */ + return inferior_ptid != null_ptid; +} + +bool +process_stratum_target::has_registers () +{ + /* Can't read registers from no inferior. */ + return inferior_ptid != null_ptid; +} + +bool +process_stratum_target::has_execution (ptid_t the_ptid) +{ + /* If there's no thread selected, then we can't make it run through + hoops. */ + return the_ptid != null_ptid; +} diff --git a/gdb/process-stratum-target.h b/gdb/process-stratum-target.h index 0a799f7..74640aa 100644 --- a/gdb/process-stratum-target.h +++ b/gdb/process-stratum-target.h @@ -46,6 +46,14 @@ public: /* This default implementation always returns target_gdbarch (). */ struct gdbarch *thread_architecture (ptid_t ptid) override; + + /* Default implementations for process_stratum targets. Return true + if there's a selected inferior, false otherwise. */ + bool has_all_memory () override; + bool has_memory () override; + bool has_stack () override; + bool has_registers () override; + bool has_execution (ptid_t the_ptid) override; }; #endif /* !defined (PROCESS_STRATUM_TARGET_H) */ diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c index e60fad8..0f2889c 100644 --- a/gdb/ravenscar-thread.c +++ b/gdb/ravenscar-thread.c @@ -116,13 +116,6 @@ struct ravenscar_thread_target final : public target_ops ptid_t get_ada_task_ptid (long lwp, long thread) override; void mourn_inferior () override; - - bool has_all_memory () override { return default_child_has_all_memory (); } - bool has_memory () override { return default_child_has_memory (); } - bool has_stack () override { return default_child_has_stack (); } - bool has_registers () override { return default_child_has_registers (); } - bool has_execution (ptid_t ptid) override - { return default_child_has_execution (ptid); } }; /* This module's target-specific operations. */ diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index 1ceecaa..b3fb95a 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -128,15 +128,6 @@ struct gdbsim_target final bool has_all_memory () override; bool has_memory () override; - - bool has_stack () override - { return default_child_has_stack (); } - - bool has_registers () override - { return default_child_has_registers (); } - - bool has_execution (ptid_t ptid) override - { return default_child_has_execution (ptid); } }; static struct gdbsim_target gdbsim_ops; diff --git a/gdb/remote.c b/gdb/remote.c index ae35bec..4324452 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -525,12 +525,6 @@ public: CORE_ADDR load_module_addr, CORE_ADDR offset) override; - bool has_all_memory () override { return default_child_has_all_memory (); } - bool has_memory () override { return default_child_has_memory (); } - bool has_stack () override { return default_child_has_stack (); } - bool has_registers () override { return default_child_has_registers (); } - bool has_execution (ptid_t ptid) override { return default_child_has_execution (ptid); } - bool can_execute_reverse () override; std::vector memory_map () override; diff --git a/gdb/target.c b/gdb/target.c index 8905ce3..ecfdde9 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -186,60 +186,6 @@ target_command (const char *arg, int from_tty) gdb_stdout); } -/* Default target_has_* methods for process_stratum targets. */ - -int -default_child_has_all_memory () -{ - /* If no inferior selected, then we can't read memory here. */ - if (inferior_ptid == null_ptid) - return 0; - - return 1; -} - -int -default_child_has_memory () -{ - /* If no inferior selected, then we can't read memory here. */ - if (inferior_ptid == null_ptid) - return 0; - - return 1; -} - -int -default_child_has_stack () -{ - /* If no inferior selected, there's no stack. */ - if (inferior_ptid == null_ptid) - return 0; - - return 1; -} - -int -default_child_has_registers () -{ - /* Can't read registers from no inferior. */ - if (inferior_ptid == null_ptid) - return 0; - - return 1; -} - -int -default_child_has_execution (ptid_t the_ptid) -{ - /* If there's no thread selected, then we can't make it run through - hoops. */ - if (the_ptid == null_ptid) - return 0; - - return 1; -} - - int target_has_all_memory_1 (void) { diff --git a/gdb/target.h b/gdb/target.h index 36f8d5e..b0469bb 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1790,15 +1790,6 @@ extern int target_has_execution_current (void); #define target_has_execution target_has_execution_current () -/* Default implementations for process_stratum targets. Return true - if there's a selected inferior, false otherwise. */ - -extern int default_child_has_all_memory (); -extern int default_child_has_memory (); -extern int default_child_has_stack (); -extern int default_child_has_registers (); -extern int default_child_has_execution (ptid_t the_ptid); - /* Can the target support the debugger control of thread execution? Can it lock the thread scheduler? */ diff --git a/gdb/tracefile.h b/gdb/tracefile.h index 3ae3e7d..8f9dc0e 100644 --- a/gdb/tracefile.h +++ b/gdb/tracefile.h @@ -127,6 +127,7 @@ public: bool has_memory () override; bool has_stack () override; bool has_registers () override; + bool has_execution (ptid_t) override { return false; } bool thread_alive (ptid_t ptid) override; }; -- 2.7.4