Multi-target: NEWS and user manual
[deliverable/binutils-gdb.git] / gdb / target-delegates.c
index 3aea00ea9d92c61ea009b3641cc7d2a64082fe9b..5c2142b63fa115f911c3d9fb54d6ca242384cdbb 100644 (file)
@@ -6,11 +6,9 @@
 
 struct dummy_target : public target_ops
 {
-  dummy_target ();
+  const target_info &info () const override;
 
-  const char *shortname () override;
-  const char *longname () override;
-  const char *doc () override;
+  strata stratum () const override;
 
   void post_attach (int arg0) override;
   void detach (inferior *arg0, int arg1) override;
@@ -24,10 +22,10 @@ struct dummy_target : public target_ops
   void files_info () override;
   int insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
   int remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1, enum remove_bp_reason arg2) override;
-  int stopped_by_sw_breakpoint () override;
-  int supports_stopped_by_sw_breakpoint () override;
-  int stopped_by_hw_breakpoint () override;
-  int supports_stopped_by_hw_breakpoint () override;
+  bool stopped_by_sw_breakpoint () override;
+  bool supports_stopped_by_sw_breakpoint () override;
+  bool stopped_by_hw_breakpoint () override;
+  bool supports_stopped_by_hw_breakpoint () override;
   int can_use_hw_breakpoint (enum bptype arg0, int arg1, int arg2) override;
   int ranged_break_num_registers () override;
   int insert_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
@@ -36,13 +34,12 @@ struct dummy_target : public target_ops
   int insert_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3) override;
   int insert_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2) override;
   int remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2) override;
-  int stopped_by_watchpoint () override;
-  int have_steppable_watchpoint () override;
-  bool have_continuable_watchpoint () override;
-  int stopped_data_address (CORE_ADDR *arg0) override;
-  int watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
+  bool stopped_by_watchpoint () override;
+  bool have_steppable_watchpoint () override;
+  bool stopped_data_address (CORE_ADDR *arg0) override;
+  bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
   int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
-  int can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
+  bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
   int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
   int can_do_single_step () override;
   bool supports_terminal_ours () override;
@@ -62,17 +59,18 @@ struct dummy_target : public target_ops
   int follow_fork (int arg0, int arg1) override;
   int insert_exec_catchpoint (int arg0) override;
   int remove_exec_catchpoint (int arg0) override;
-  void follow_exec (struct inferior *arg0, char *arg1) override;
+  void follow_exec (struct inferior *arg0, const char *arg1) override;
   int set_syscall_catchpoint (int arg0, bool arg1, int arg2, gdb::array_view<const int> arg3) override;
   void mourn_inferior () override;
-  void pass_signals (int arg0, unsigned char * arg1) override;
-  void program_signals (int arg0, unsigned char * arg1) override;
-  int thread_alive (ptid_t arg0) override;
+  void pass_signals (gdb::array_view<const unsigned char> arg0) override;
+  void program_signals (gdb::array_view<const unsigned char> arg0) override;
+  bool thread_alive (ptid_t arg0) override;
   void update_thread_list () override;
-  const char *pid_to_str (ptid_t arg0) override;
+  std::string pid_to_str (ptid_t arg0) override;
   const char *extra_thread_info (thread_info *arg0) override;
   const char *thread_name (thread_info *arg0) override;
   thread_info *thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2) override;
+  gdb::byte_vector thread_info_to_thread_handle (struct thread_info *arg0) override;
   void stop (ptid_t arg0) override;
   void interrupt () override;
   void pass_ctrlc () override;
@@ -82,12 +80,13 @@ struct dummy_target : public target_ops
   struct target_section_table *get_section_table () override;
   thread_control_capabilities get_thread_control_capabilities () override;
   bool attach_no_wait () override;
-  int can_async_p () override;
-  int is_async_p () override;
+  bool can_async_p () override;
+  bool is_async_p () override;
   void async (int arg0) override;
+  int async_wait_fd () override;
   void thread_events (int arg0) override;
-  int supports_non_stop () override;
-  int always_non_stop_p () override;
+  bool supports_non_stop () override;
+  bool always_non_stop_p () override;
   int find_memory_regions (find_memory_region_ftype arg0, void *arg1) override;
   char *make_corefile_notes (bfd *arg0, int *arg1) override;
   gdb_byte *get_bookmark (const char *arg0, int arg1) override;
@@ -102,20 +101,20 @@ struct dummy_target : public target_ops
   ptid_t get_ada_task_ptid (long arg0, long arg1) override;
   int auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
   int search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4) override;
-  int can_execute_reverse () override;
+  bool can_execute_reverse () override;
   enum exec_direction_kind execution_direction () override;
-  int supports_multi_process () override;
-  int supports_enable_disable_tracepoint () override;
-  int supports_disable_randomization () override;
-  int supports_string_tracing () override;
-  int supports_evaluation_of_breakpoint_conditions () override;
-  int can_run_breakpoint_commands () override;
+  bool supports_multi_process () override;
+  bool supports_enable_disable_tracepoint () override;
+  bool supports_disable_randomization () override;
+  bool supports_string_tracing () override;
+  bool supports_evaluation_of_breakpoint_conditions () override;
+  bool can_run_breakpoint_commands () override;
   struct gdbarch *thread_architecture (ptid_t arg0) override;
   struct address_space *thread_address_space (ptid_t arg0) override;
-  int filesystem_is_local () override;
+  bool filesystem_is_local () override;
   void trace_init () override;
   void download_tracepoint (struct bp_location *arg0) override;
-  int can_download_tracepoint () override;
+  bool can_download_tracepoint () override;
   void download_trace_state_variable (const trace_state_variable &arg0) override;
   void enable_tracepoint (struct bp_location *arg0) override;
   void disable_tracepoint (struct bp_location *arg0) override;
@@ -125,7 +124,7 @@ struct dummy_target : public target_ops
   void get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp *arg1) override;
   void trace_stop () override;
   int trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, CORE_ADDR arg3, int *arg4) override;
-  int get_trace_state_variable_value (int arg0, LONGEST *arg1) override;
+  bool get_trace_state_variable_value (int arg0, LONGEST *arg1) override;
   int save_trace_data (const char *arg0) override;
   int upload_tracepoints (struct uploaded_tp **arg0) override;
   int upload_trace_state_variables (struct uploaded_tsv **arg0) override;
@@ -134,16 +133,16 @@ struct dummy_target : public target_ops
   void set_disconnected_tracing (int arg0) override;
   void set_circular_trace_buffer (int arg0) override;
   void set_trace_buffer_size (LONGEST arg0) override;
-  int set_trace_notes (const char *arg0, const char *arg1, const char *arg2) override;
+  bool set_trace_notes (const char *arg0, const char *arg1, const char *arg2) override;
   int core_of_thread (ptid_t arg0) override;
   int verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2) override;
-  int get_tib_address (ptid_t arg0, CORE_ADDR *arg1) override;
+  bool get_tib_address (ptid_t arg0, CORE_ADDR *arg1) override;
   void set_permissions () override;
   bool static_tracepoint_marker_at (CORE_ADDR arg0, static_tracepoint_marker *arg1) override;
   std::vector<static_tracepoint_marker> static_tracepoint_markers_by_strid (const char *arg0) override;
   traceframe_info_up traceframe_info () override;
-  int use_agent (int arg0) override;
-  int can_use_agent () override;
+  bool use_agent (bool arg0) override;
+  bool can_use_agent () override;
   struct btrace_target_info *enable_btrace (ptid_t arg0, const struct btrace_config *arg1) override;
   void disable_btrace (struct btrace_target_info *arg0) override;
   void teardown_btrace (struct btrace_target_info *arg0) override;
@@ -155,8 +154,8 @@ struct dummy_target : public target_ops
   void save_record (const char *arg0) override;
   bool supports_delete_record () override;
   void delete_record () override;
-  int record_is_replaying (ptid_t arg0) override;
-  int record_will_replay (ptid_t arg0, int arg1) override;
+  bool record_is_replaying (ptid_t arg0) override;
+  bool record_will_replay (ptid_t arg0, int arg1) override;
   void record_stop_replaying () override;
   void goto_record_begin () override;
   void goto_record_end () override;
@@ -167,7 +166,7 @@ struct dummy_target : public target_ops
   void call_history (int arg0, record_print_flags arg1) override;
   void call_history_from (ULONGEST arg0, int arg1, record_print_flags arg2) override;
   void call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_flags arg2) override;
-  int augmented_libraries_svr4_read () override;
+  bool augmented_libraries_svr4_read () override;
   const struct frame_unwind *get_unwinder () override;
   const struct frame_unwind *get_tailcall_unwinder () override;
   void prepare_to_generate_core () override;
@@ -176,11 +175,9 @@ struct dummy_target : public target_ops
 
 struct debug_target : public target_ops
 {
-  debug_target ();
+  const target_info &info () const override;
 
-  const char *shortname () override;
-  const char *longname () override;
-  const char *doc () override;
+  strata stratum () const override;
 
   void post_attach (int arg0) override;
   void detach (inferior *arg0, int arg1) override;
@@ -194,10 +191,10 @@ struct debug_target : public target_ops
   void files_info () override;
   int insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
   int remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1, enum remove_bp_reason arg2) override;
-  int stopped_by_sw_breakpoint () override;
-  int supports_stopped_by_sw_breakpoint () override;
-  int stopped_by_hw_breakpoint () override;
-  int supports_stopped_by_hw_breakpoint () override;
+  bool stopped_by_sw_breakpoint () override;
+  bool supports_stopped_by_sw_breakpoint () override;
+  bool stopped_by_hw_breakpoint () override;
+  bool supports_stopped_by_hw_breakpoint () override;
   int can_use_hw_breakpoint (enum bptype arg0, int arg1, int arg2) override;
   int ranged_break_num_registers () override;
   int insert_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1) override;
@@ -206,13 +203,12 @@ struct debug_target : public target_ops
   int insert_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3) override;
   int insert_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2) override;
   int remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2) override;
-  int stopped_by_watchpoint () override;
-  int have_steppable_watchpoint () override;
-  bool have_continuable_watchpoint () override;
-  int stopped_data_address (CORE_ADDR *arg0) override;
-  int watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
+  bool stopped_by_watchpoint () override;
+  bool have_steppable_watchpoint () override;
+  bool stopped_data_address (CORE_ADDR *arg0) override;
+  bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
   int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
-  int can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
+  bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
   int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
   int can_do_single_step () override;
   bool supports_terminal_ours () override;
@@ -232,17 +228,18 @@ struct debug_target : public target_ops
   int follow_fork (int arg0, int arg1) override;
   int insert_exec_catchpoint (int arg0) override;
   int remove_exec_catchpoint (int arg0) override;
-  void follow_exec (struct inferior *arg0, char *arg1) override;
+  void follow_exec (struct inferior *arg0, const char *arg1) override;
   int set_syscall_catchpoint (int arg0, bool arg1, int arg2, gdb::array_view<const int> arg3) override;
   void mourn_inferior () override;
-  void pass_signals (int arg0, unsigned char * arg1) override;
-  void program_signals (int arg0, unsigned char * arg1) override;
-  int thread_alive (ptid_t arg0) override;
+  void pass_signals (gdb::array_view<const unsigned char> arg0) override;
+  void program_signals (gdb::array_view<const unsigned char> arg0) override;
+  bool thread_alive (ptid_t arg0) override;
   void update_thread_list () override;
-  const char *pid_to_str (ptid_t arg0) override;
+  std::string pid_to_str (ptid_t arg0) override;
   const char *extra_thread_info (thread_info *arg0) override;
   const char *thread_name (thread_info *arg0) override;
   thread_info *thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2) override;
+  gdb::byte_vector thread_info_to_thread_handle (struct thread_info *arg0) override;
   void stop (ptid_t arg0) override;
   void interrupt () override;
   void pass_ctrlc () override;
@@ -252,12 +249,13 @@ struct debug_target : public target_ops
   struct target_section_table *get_section_table () override;
   thread_control_capabilities get_thread_control_capabilities () override;
   bool attach_no_wait () override;
-  int can_async_p () override;
-  int is_async_p () override;
+  bool can_async_p () override;
+  bool is_async_p () override;
   void async (int arg0) override;
+  int async_wait_fd () override;
   void thread_events (int arg0) override;
-  int supports_non_stop () override;
-  int always_non_stop_p () override;
+  bool supports_non_stop () override;
+  bool always_non_stop_p () override;
   int find_memory_regions (find_memory_region_ftype arg0, void *arg1) override;
   char *make_corefile_notes (bfd *arg0, int *arg1) override;
   gdb_byte *get_bookmark (const char *arg0, int arg1) override;
@@ -272,20 +270,20 @@ struct debug_target : public target_ops
   ptid_t get_ada_task_ptid (long arg0, long arg1) override;
   int auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
   int search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4) override;
-  int can_execute_reverse () override;
+  bool can_execute_reverse () override;
   enum exec_direction_kind execution_direction () override;
-  int supports_multi_process () override;
-  int supports_enable_disable_tracepoint () override;
-  int supports_disable_randomization () override;
-  int supports_string_tracing () override;
-  int supports_evaluation_of_breakpoint_conditions () override;
-  int can_run_breakpoint_commands () override;
+  bool supports_multi_process () override;
+  bool supports_enable_disable_tracepoint () override;
+  bool supports_disable_randomization () override;
+  bool supports_string_tracing () override;
+  bool supports_evaluation_of_breakpoint_conditions () override;
+  bool can_run_breakpoint_commands () override;
   struct gdbarch *thread_architecture (ptid_t arg0) override;
   struct address_space *thread_address_space (ptid_t arg0) override;
-  int filesystem_is_local () override;
+  bool filesystem_is_local () override;
   void trace_init () override;
   void download_tracepoint (struct bp_location *arg0) override;
-  int can_download_tracepoint () override;
+  bool can_download_tracepoint () override;
   void download_trace_state_variable (const trace_state_variable &arg0) override;
   void enable_tracepoint (struct bp_location *arg0) override;
   void disable_tracepoint (struct bp_location *arg0) override;
@@ -295,7 +293,7 @@ struct debug_target : public target_ops
   void get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp *arg1) override;
   void trace_stop () override;
   int trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, CORE_ADDR arg3, int *arg4) override;
-  int get_trace_state_variable_value (int arg0, LONGEST *arg1) override;
+  bool get_trace_state_variable_value (int arg0, LONGEST *arg1) override;
   int save_trace_data (const char *arg0) override;
   int upload_tracepoints (struct uploaded_tp **arg0) override;
   int upload_trace_state_variables (struct uploaded_tsv **arg0) override;
@@ -304,16 +302,16 @@ struct debug_target : public target_ops
   void set_disconnected_tracing (int arg0) override;
   void set_circular_trace_buffer (int arg0) override;
   void set_trace_buffer_size (LONGEST arg0) override;
-  int set_trace_notes (const char *arg0, const char *arg1, const char *arg2) override;
+  bool set_trace_notes (const char *arg0, const char *arg1, const char *arg2) override;
   int core_of_thread (ptid_t arg0) override;
   int verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2) override;
-  int get_tib_address (ptid_t arg0, CORE_ADDR *arg1) override;
+  bool get_tib_address (ptid_t arg0, CORE_ADDR *arg1) override;
   void set_permissions () override;
   bool static_tracepoint_marker_at (CORE_ADDR arg0, static_tracepoint_marker *arg1) override;
   std::vector<static_tracepoint_marker> static_tracepoint_markers_by_strid (const char *arg0) override;
   traceframe_info_up traceframe_info () override;
-  int use_agent (int arg0) override;
-  int can_use_agent () override;
+  bool use_agent (bool arg0) override;
+  bool can_use_agent () override;
   struct btrace_target_info *enable_btrace (ptid_t arg0, const struct btrace_config *arg1) override;
   void disable_btrace (struct btrace_target_info *arg0) override;
   void teardown_btrace (struct btrace_target_info *arg0) override;
@@ -325,8 +323,8 @@ struct debug_target : public target_ops
   void save_record (const char *arg0) override;
   bool supports_delete_record () override;
   void delete_record () override;
-  int record_is_replaying (ptid_t arg0) override;
-  int record_will_replay (ptid_t arg0, int arg1) override;
+  bool record_is_replaying (ptid_t arg0) override;
+  bool record_will_replay (ptid_t arg0, int arg1) override;
   void record_stop_replaying () override;
   void goto_record_begin () override;
   void goto_record_end () override;
@@ -337,7 +335,7 @@ struct debug_target : public target_ops
   void call_history (int arg0, record_print_flags arg1) override;
   void call_history_from (ULONGEST arg0, int arg1, record_print_flags arg2) override;
   void call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_flags arg2) override;
-  int augmented_libraries_svr4_read () override;
+  bool augmented_libraries_svr4_read () override;
   const struct frame_unwind *get_unwinder () override;
   const struct frame_unwind *get_tailcall_unwinder () override;
   void prepare_to_generate_core () override;
@@ -347,7 +345,7 @@ struct debug_target : public target_ops
 void
 target_ops::post_attach (int arg0)
 {
-  this->beneath->post_attach (arg0);
+  this->beneath ()->post_attach (arg0);
 }
 
 void
@@ -358,9 +356,9 @@ dummy_target::post_attach (int arg0)
 void
 debug_target::post_attach (int arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->post_attach (...)\n", this->beneath->shortname ());
-  this->beneath->post_attach (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->post_attach (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->post_attach (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->post_attach (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->post_attach (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -368,7 +366,7 @@ debug_target::post_attach (int arg0)
 void
 target_ops::detach (inferior *arg0, int arg1)
 {
-  this->beneath->detach (arg0, arg1);
+  this->beneath ()->detach (arg0, arg1);
 }
 
 void
@@ -379,9 +377,9 @@ dummy_target::detach (inferior *arg0, int arg1)
 void
 debug_target::detach (inferior *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->detach (...)\n", this->beneath->shortname ());
-  this->beneath->detach (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->detach (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->detach (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->detach (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->detach (", this->beneath ()->shortname ());
   target_debug_print_inferior_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -391,7 +389,7 @@ debug_target::detach (inferior *arg0, int arg1)
 void
 target_ops::disconnect (const char *arg0, int arg1)
 {
-  this->beneath->disconnect (arg0, arg1);
+  this->beneath ()->disconnect (arg0, arg1);
 }
 
 void
@@ -403,9 +401,9 @@ dummy_target::disconnect (const char *arg0, int arg1)
 void
 debug_target::disconnect (const char *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->disconnect (...)\n", this->beneath->shortname ());
-  this->beneath->disconnect (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->disconnect (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->disconnect (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->disconnect (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->disconnect (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -415,7 +413,7 @@ debug_target::disconnect (const char *arg0, int arg1)
 void
 target_ops::resume (ptid_t arg0, int arg1, enum gdb_signal arg2)
 {
-  this->beneath->resume (arg0, arg1, arg2);
+  this->beneath ()->resume (arg0, arg1, arg2);
 }
 
 void
@@ -427,9 +425,9 @@ dummy_target::resume (ptid_t arg0, int arg1, enum gdb_signal arg2)
 void
 debug_target::resume (ptid_t arg0, int arg1, enum gdb_signal arg2)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->resume (...)\n", this->beneath->shortname ());
-  this->beneath->resume (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->resume (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->resume (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->resume (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->resume (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_step (arg1);
@@ -441,7 +439,7 @@ debug_target::resume (ptid_t arg0, int arg1, enum gdb_signal arg2)
 void
 target_ops::commit_resume ()
 {
-  this->beneath->commit_resume ();
+  this->beneath ()->commit_resume ();
 }
 
 void
@@ -452,16 +450,16 @@ dummy_target::commit_resume ()
 void
 debug_target::commit_resume ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->commit_resume (...)\n", this->beneath->shortname ());
-  this->beneath->commit_resume ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->commit_resume (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->commit_resume (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->commit_resume ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->commit_resume (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 ptid_t
 target_ops::wait (ptid_t arg0, struct target_waitstatus *arg1, int arg2)
 {
-  return this->beneath->wait (arg0, arg1, arg2);
+  return this->beneath ()->wait (arg0, arg1, arg2);
 }
 
 ptid_t
@@ -474,9 +472,9 @@ ptid_t
 debug_target::wait (ptid_t arg0, struct target_waitstatus *arg1, int arg2)
 {
   ptid_t result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->wait (...)\n", this->beneath->shortname ());
-  result = this->beneath->wait (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->wait (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->wait (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->wait (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->wait (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_target_waitstatus_p (arg1);
@@ -491,7 +489,7 @@ debug_target::wait (ptid_t arg0, struct target_waitstatus *arg1, int arg2)
 void
 target_ops::fetch_registers (struct regcache *arg0, int arg1)
 {
-  this->beneath->fetch_registers (arg0, arg1);
+  this->beneath ()->fetch_registers (arg0, arg1);
 }
 
 void
@@ -502,9 +500,9 @@ dummy_target::fetch_registers (struct regcache *arg0, int arg1)
 void
 debug_target::fetch_registers (struct regcache *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->fetch_registers (...)\n", this->beneath->shortname ());
-  this->beneath->fetch_registers (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->fetch_registers (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->fetch_registers (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->fetch_registers (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->fetch_registers (", this->beneath ()->shortname ());
   target_debug_print_struct_regcache_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -514,7 +512,7 @@ debug_target::fetch_registers (struct regcache *arg0, int arg1)
 void
 target_ops::store_registers (struct regcache *arg0, int arg1)
 {
-  this->beneath->store_registers (arg0, arg1);
+  this->beneath ()->store_registers (arg0, arg1);
 }
 
 void
@@ -526,9 +524,9 @@ dummy_target::store_registers (struct regcache *arg0, int arg1)
 void
 debug_target::store_registers (struct regcache *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->store_registers (...)\n", this->beneath->shortname ());
-  this->beneath->store_registers (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->store_registers (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->store_registers (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->store_registers (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->store_registers (", this->beneath ()->shortname ());
   target_debug_print_struct_regcache_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -538,7 +536,7 @@ debug_target::store_registers (struct regcache *arg0, int arg1)
 void
 target_ops::prepare_to_store (struct regcache *arg0)
 {
-  this->beneath->prepare_to_store (arg0);
+  this->beneath ()->prepare_to_store (arg0);
 }
 
 void
@@ -550,9 +548,9 @@ dummy_target::prepare_to_store (struct regcache *arg0)
 void
 debug_target::prepare_to_store (struct regcache *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->prepare_to_store (...)\n", this->beneath->shortname ());
-  this->beneath->prepare_to_store (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->prepare_to_store (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->prepare_to_store (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->prepare_to_store (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->prepare_to_store (", this->beneath ()->shortname ());
   target_debug_print_struct_regcache_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -560,7 +558,7 @@ debug_target::prepare_to_store (struct regcache *arg0)
 void
 target_ops::files_info ()
 {
-  this->beneath->files_info ();
+  this->beneath ()->files_info ();
 }
 
 void
@@ -571,16 +569,16 @@ dummy_target::files_info ()
 void
 debug_target::files_info ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->files_info (...)\n", this->beneath->shortname ());
-  this->beneath->files_info ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->files_info (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->files_info (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->files_info ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->files_info (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 int
 target_ops::insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
-  return this->beneath->insert_breakpoint (arg0, arg1);
+  return this->beneath ()->insert_breakpoint (arg0, arg1);
 }
 
 int
@@ -593,9 +591,9 @@ int
 debug_target::insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_breakpoint (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_breakpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_breakpoint (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_breakpoint (", this->beneath ()->shortname ());
   target_debug_print_struct_gdbarch_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_bp_target_info_p (arg1);
@@ -608,7 +606,7 @@ debug_target::insert_breakpoint (struct gdbarch *arg0, struct bp_target_info *ar
 int
 target_ops::remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1, enum remove_bp_reason arg2)
 {
-  return this->beneath->remove_breakpoint (arg0, arg1, arg2);
+  return this->beneath ()->remove_breakpoint (arg0, arg1, arg2);
 }
 
 int
@@ -621,9 +619,9 @@ int
 debug_target::remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1, enum remove_bp_reason arg2)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_breakpoint (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_breakpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_breakpoint (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_breakpoint (", this->beneath ()->shortname ());
   target_debug_print_struct_gdbarch_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_bp_target_info_p (arg1);
@@ -635,102 +633,102 @@ debug_target::remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *ar
   return result;
 }
 
-int
+bool
 target_ops::stopped_by_sw_breakpoint ()
 {
-  return this->beneath->stopped_by_sw_breakpoint ();
+  return this->beneath ()->stopped_by_sw_breakpoint ();
 }
 
-int
+bool
 dummy_target::stopped_by_sw_breakpoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::stopped_by_sw_breakpoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_sw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->stopped_by_sw_breakpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_sw_breakpoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_sw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->stopped_by_sw_breakpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_sw_breakpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_stopped_by_sw_breakpoint ()
 {
-  return this->beneath->supports_stopped_by_sw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_sw_breakpoint ();
 }
 
-int
+bool
 dummy_target::supports_stopped_by_sw_breakpoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_stopped_by_sw_breakpoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_stopped_by_sw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_stopped_by_sw_breakpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_stopped_by_sw_breakpoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_stopped_by_sw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_stopped_by_sw_breakpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_stopped_by_sw_breakpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::stopped_by_hw_breakpoint ()
 {
-  return this->beneath->stopped_by_hw_breakpoint ();
+  return this->beneath ()->stopped_by_hw_breakpoint ();
 }
 
-int
+bool
 dummy_target::stopped_by_hw_breakpoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::stopped_by_hw_breakpoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_hw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->stopped_by_hw_breakpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_hw_breakpoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_hw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->stopped_by_hw_breakpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_hw_breakpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_stopped_by_hw_breakpoint ()
 {
-  return this->beneath->supports_stopped_by_hw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_hw_breakpoint ();
 }
 
-int
+bool
 dummy_target::supports_stopped_by_hw_breakpoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_stopped_by_hw_breakpoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_stopped_by_hw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_stopped_by_hw_breakpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_stopped_by_hw_breakpoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_stopped_by_hw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_stopped_by_hw_breakpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_stopped_by_hw_breakpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -738,7 +736,7 @@ debug_target::supports_stopped_by_hw_breakpoint ()
 int
 target_ops::can_use_hw_breakpoint (enum bptype arg0, int arg1, int arg2)
 {
-  return this->beneath->can_use_hw_breakpoint (arg0, arg1, arg2);
+  return this->beneath ()->can_use_hw_breakpoint (arg0, arg1, arg2);
 }
 
 int
@@ -751,9 +749,9 @@ int
 debug_target::can_use_hw_breakpoint (enum bptype arg0, int arg1, int arg2)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_use_hw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_use_hw_breakpoint (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_use_hw_breakpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_use_hw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_use_hw_breakpoint (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_use_hw_breakpoint (", this->beneath ()->shortname ());
   target_debug_print_enum_bptype (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -768,7 +766,7 @@ debug_target::can_use_hw_breakpoint (enum bptype arg0, int arg1, int arg2)
 int
 target_ops::ranged_break_num_registers ()
 {
-  return this->beneath->ranged_break_num_registers ();
+  return this->beneath ()->ranged_break_num_registers ();
 }
 
 int
@@ -781,9 +779,9 @@ int
 debug_target::ranged_break_num_registers ()
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->ranged_break_num_registers (...)\n", this->beneath->shortname ());
-  result = this->beneath->ranged_break_num_registers ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->ranged_break_num_registers (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->ranged_break_num_registers (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->ranged_break_num_registers ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->ranged_break_num_registers (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -793,7 +791,7 @@ debug_target::ranged_break_num_registers ()
 int
 target_ops::insert_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
-  return this->beneath->insert_hw_breakpoint (arg0, arg1);
+  return this->beneath ()->insert_hw_breakpoint (arg0, arg1);
 }
 
 int
@@ -806,9 +804,9 @@ int
 debug_target::insert_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_hw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_hw_breakpoint (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_hw_breakpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_hw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_hw_breakpoint (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_hw_breakpoint (", this->beneath ()->shortname ());
   target_debug_print_struct_gdbarch_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_bp_target_info_p (arg1);
@@ -821,7 +819,7 @@ debug_target::insert_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info
 int
 target_ops::remove_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
-  return this->beneath->remove_hw_breakpoint (arg0, arg1);
+  return this->beneath ()->remove_hw_breakpoint (arg0, arg1);
 }
 
 int
@@ -834,9 +832,9 @@ int
 debug_target::remove_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info *arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_hw_breakpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_hw_breakpoint (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_hw_breakpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_hw_breakpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_hw_breakpoint (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_hw_breakpoint (", this->beneath ()->shortname ());
   target_debug_print_struct_gdbarch_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_bp_target_info_p (arg1);
@@ -849,7 +847,7 @@ debug_target::remove_hw_breakpoint (struct gdbarch *arg0, struct bp_target_info
 int
 target_ops::remove_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3)
 {
-  return this->beneath->remove_watchpoint (arg0, arg1, arg2, arg3);
+  return this->beneath ()->remove_watchpoint (arg0, arg1, arg2, arg3);
 }
 
 int
@@ -862,9 +860,9 @@ int
 debug_target::remove_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_watchpoint (arg0, arg1, arg2, arg3);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_watchpoint (arg0, arg1, arg2, arg3);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -881,7 +879,7 @@ debug_target::remove_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_typ
 int
 target_ops::insert_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3)
 {
-  return this->beneath->insert_watchpoint (arg0, arg1, arg2, arg3);
+  return this->beneath ()->insert_watchpoint (arg0, arg1, arg2, arg3);
 }
 
 int
@@ -894,9 +892,9 @@ int
 debug_target::insert_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_type arg2, struct expression *arg3)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_watchpoint (arg0, arg1, arg2, arg3);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_watchpoint (arg0, arg1, arg2, arg3);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -913,7 +911,7 @@ debug_target::insert_watchpoint (CORE_ADDR arg0, int arg1, enum target_hw_bp_typ
 int
 target_ops::insert_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2)
 {
-  return this->beneath->insert_mask_watchpoint (arg0, arg1, arg2);
+  return this->beneath ()->insert_mask_watchpoint (arg0, arg1, arg2);
 }
 
 int
@@ -926,9 +924,9 @@ int
 debug_target::insert_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_mask_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_mask_watchpoint (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_mask_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_mask_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_mask_watchpoint (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_mask_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
@@ -943,7 +941,7 @@ debug_target::insert_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum targe
 int
 target_ops::remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2)
 {
-  return this->beneath->remove_mask_watchpoint (arg0, arg1, arg2);
+  return this->beneath ()->remove_mask_watchpoint (arg0, arg1, arg2);
 }
 
 int
@@ -956,9 +954,9 @@ int
 debug_target::remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum target_hw_bp_type arg2)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_mask_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_mask_watchpoint (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_mask_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_mask_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_mask_watchpoint (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_mask_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
@@ -970,133 +968,108 @@ debug_target::remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum targe
   return result;
 }
 
-int
+bool
 target_ops::stopped_by_watchpoint ()
 {
-  return this->beneath->stopped_by_watchpoint ();
+  return this->beneath ()->stopped_by_watchpoint ();
 }
 
-int
+bool
 dummy_target::stopped_by_watchpoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::stopped_by_watchpoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->stopped_by_watchpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_watchpoint (", this->beneath->shortname ());
-  fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
-  fputs_unfiltered ("\n", gdb_stdlog);
-  return result;
-}
-
-int
-target_ops::have_steppable_watchpoint ()
-{
-  return this->beneath->have_steppable_watchpoint ();
-}
-
-int
-dummy_target::have_steppable_watchpoint ()
-{
-  return 0;
-}
-
-int
-debug_target::have_steppable_watchpoint ()
-{
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->have_steppable_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->have_steppable_watchpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->have_steppable_watchpoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_by_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->stopped_by_watchpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_by_watchpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
 bool
-target_ops::have_continuable_watchpoint ()
+target_ops::have_steppable_watchpoint ()
 {
-  return this->beneath->have_continuable_watchpoint ();
+  return this->beneath ()->have_steppable_watchpoint ();
 }
 
 bool
-dummy_target::have_continuable_watchpoint ()
+dummy_target::have_steppable_watchpoint ()
 {
-  return 0;
+  return false;
 }
 
 bool
-debug_target::have_continuable_watchpoint ()
+debug_target::have_steppable_watchpoint ()
 {
   bool result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->have_continuable_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->have_continuable_watchpoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->have_continuable_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->have_steppable_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->have_steppable_watchpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->have_steppable_watchpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::stopped_data_address (CORE_ADDR *arg0)
 {
-  return this->beneath->stopped_data_address (arg0);
+  return this->beneath ()->stopped_data_address (arg0);
 }
 
-int
+bool
 dummy_target::stopped_data_address (CORE_ADDR *arg0)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::stopped_data_address (CORE_ADDR *arg0)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_data_address (...)\n", this->beneath->shortname ());
-  result = this->beneath->stopped_data_address (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_data_address (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stopped_data_address (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->stopped_data_address (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stopped_data_address (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
 {
-  return this->beneath->watchpoint_addr_within_range (arg0, arg1, arg2);
+  return this->beneath ()->watchpoint_addr_within_range (arg0, arg1, arg2);
 }
 
-int
+bool
 dummy_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
 {
   return default_watchpoint_addr_within_range (this, arg0, arg1, arg2);
 }
 
-int
+bool
 debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->watchpoint_addr_within_range (...)\n", this->beneath->shortname ());
-  result = this->beneath->watchpoint_addr_within_range (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->watchpoint_addr_within_range (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->watchpoint_addr_within_range (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->watchpoint_addr_within_range (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->watchpoint_addr_within_range (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg2);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -1104,7 +1077,7 @@ debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int
 int
 target_ops::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
 {
-  return this->beneath->region_ok_for_hw_watchpoint (arg0, arg1);
+  return this->beneath ()->region_ok_for_hw_watchpoint (arg0, arg1);
 }
 
 int
@@ -1117,9 +1090,9 @@ int
 debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->region_ok_for_hw_watchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->region_ok_for_hw_watchpoint (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->region_ok_for_hw_watchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->region_ok_for_hw_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->region_ok_for_hw_watchpoint (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->region_ok_for_hw_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1129,25 +1102,25 @@ debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
   return result;
 }
 
-int
+bool
 target_ops::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
 {
-  return this->beneath->can_accel_watchpoint_condition (arg0, arg1, arg2, arg3);
+  return this->beneath ()->can_accel_watchpoint_condition (arg0, arg1, arg2, arg3);
 }
 
-int
+bool
 dummy_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_accel_watchpoint_condition (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_accel_watchpoint_condition (arg0, arg1, arg2, arg3);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_accel_watchpoint_condition (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_accel_watchpoint_condition (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_accel_watchpoint_condition (arg0, arg1, arg2, arg3);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_accel_watchpoint_condition (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1156,7 +1129,7 @@ debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_expression_p (arg3);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -1164,7 +1137,7 @@ debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2
 int
 target_ops::masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1)
 {
-  return this->beneath->masked_watch_num_registers (arg0, arg1);
+  return this->beneath ()->masked_watch_num_registers (arg0, arg1);
 }
 
 int
@@ -1177,9 +1150,9 @@ int
 debug_target::masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->masked_watch_num_registers (...)\n", this->beneath->shortname ());
-  result = this->beneath->masked_watch_num_registers (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->masked_watch_num_registers (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->masked_watch_num_registers (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->masked_watch_num_registers (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->masked_watch_num_registers (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
@@ -1192,7 +1165,7 @@ debug_target::masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1)
 int
 target_ops::can_do_single_step ()
 {
-  return this->beneath->can_do_single_step ();
+  return this->beneath ()->can_do_single_step ();
 }
 
 int
@@ -1205,9 +1178,9 @@ int
 debug_target::can_do_single_step ()
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_do_single_step (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_do_single_step ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_do_single_step (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_do_single_step (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_do_single_step ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_do_single_step (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -1217,22 +1190,22 @@ debug_target::can_do_single_step ()
 bool
 target_ops::supports_terminal_ours ()
 {
-  return this->beneath->supports_terminal_ours ();
+  return this->beneath ()->supports_terminal_ours ();
 }
 
 bool
 dummy_target::supports_terminal_ours ()
 {
-  return 0;
+  return false;
 }
 
 bool
 debug_target::supports_terminal_ours ()
 {
   bool result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_terminal_ours (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_terminal_ours ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_terminal_ours (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_terminal_ours (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_terminal_ours ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_terminal_ours (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -1242,7 +1215,7 @@ debug_target::supports_terminal_ours ()
 void
 target_ops::terminal_init ()
 {
-  this->beneath->terminal_init ();
+  this->beneath ()->terminal_init ();
 }
 
 void
@@ -1253,16 +1226,16 @@ dummy_target::terminal_init ()
 void
 debug_target::terminal_init ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_init (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_init ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_init (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_init (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_init ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_init (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::terminal_inferior ()
 {
-  this->beneath->terminal_inferior ();
+  this->beneath ()->terminal_inferior ();
 }
 
 void
@@ -1273,16 +1246,16 @@ dummy_target::terminal_inferior ()
 void
 debug_target::terminal_inferior ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_inferior (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_inferior ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_inferior (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_inferior (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_inferior ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_inferior (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::terminal_save_inferior ()
 {
-  this->beneath->terminal_save_inferior ();
+  this->beneath ()->terminal_save_inferior ();
 }
 
 void
@@ -1293,16 +1266,16 @@ dummy_target::terminal_save_inferior ()
 void
 debug_target::terminal_save_inferior ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_save_inferior (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_save_inferior ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_save_inferior (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_save_inferior (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_save_inferior ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_save_inferior (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::terminal_ours_for_output ()
 {
-  this->beneath->terminal_ours_for_output ();
+  this->beneath ()->terminal_ours_for_output ();
 }
 
 void
@@ -1313,16 +1286,16 @@ dummy_target::terminal_ours_for_output ()
 void
 debug_target::terminal_ours_for_output ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_ours_for_output (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_ours_for_output ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_ours_for_output (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_ours_for_output (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_ours_for_output ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_ours_for_output (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::terminal_ours ()
 {
-  this->beneath->terminal_ours ();
+  this->beneath ()->terminal_ours ();
 }
 
 void
@@ -1333,16 +1306,16 @@ dummy_target::terminal_ours ()
 void
 debug_target::terminal_ours ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_ours (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_ours ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_ours (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_ours (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_ours ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_ours (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::terminal_info (const char *arg0, int arg1)
 {
-  this->beneath->terminal_info (arg0, arg1);
+  this->beneath ()->terminal_info (arg0, arg1);
 }
 
 void
@@ -1354,9 +1327,9 @@ dummy_target::terminal_info (const char *arg0, int arg1)
 void
 debug_target::terminal_info (const char *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_info (...)\n", this->beneath->shortname ());
-  this->beneath->terminal_info (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_info (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->terminal_info (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->terminal_info (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->terminal_info (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1366,7 +1339,7 @@ debug_target::terminal_info (const char *arg0, int arg1)
 void
 target_ops::kill ()
 {
-  this->beneath->kill ();
+  this->beneath ()->kill ();
 }
 
 void
@@ -1378,16 +1351,16 @@ dummy_target::kill ()
 void
 debug_target::kill ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->kill (...)\n", this->beneath->shortname ());
-  this->beneath->kill ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->kill (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->kill (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->kill ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->kill (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::load (const char *arg0, int arg1)
 {
-  this->beneath->load (arg0, arg1);
+  this->beneath ()->load (arg0, arg1);
 }
 
 void
@@ -1399,9 +1372,9 @@ dummy_target::load (const char *arg0, int arg1)
 void
 debug_target::load (const char *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->load (...)\n", this->beneath->shortname ());
-  this->beneath->load (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->load (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->load (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->load (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->load (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1411,7 +1384,7 @@ debug_target::load (const char *arg0, int arg1)
 void
 target_ops::post_startup_inferior (ptid_t arg0)
 {
-  this->beneath->post_startup_inferior (arg0);
+  this->beneath ()->post_startup_inferior (arg0);
 }
 
 void
@@ -1422,9 +1395,9 @@ dummy_target::post_startup_inferior (ptid_t arg0)
 void
 debug_target::post_startup_inferior (ptid_t arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->post_startup_inferior (...)\n", this->beneath->shortname ());
-  this->beneath->post_startup_inferior (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->post_startup_inferior (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->post_startup_inferior (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->post_startup_inferior (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->post_startup_inferior (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -1432,7 +1405,7 @@ debug_target::post_startup_inferior (ptid_t arg0)
 int
 target_ops::insert_fork_catchpoint (int arg0)
 {
-  return this->beneath->insert_fork_catchpoint (arg0);
+  return this->beneath ()->insert_fork_catchpoint (arg0);
 }
 
 int
@@ -1445,9 +1418,9 @@ int
 debug_target::insert_fork_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_fork_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_fork_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_fork_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_fork_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_fork_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_fork_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1458,7 +1431,7 @@ debug_target::insert_fork_catchpoint (int arg0)
 int
 target_ops::remove_fork_catchpoint (int arg0)
 {
-  return this->beneath->remove_fork_catchpoint (arg0);
+  return this->beneath ()->remove_fork_catchpoint (arg0);
 }
 
 int
@@ -1471,9 +1444,9 @@ int
 debug_target::remove_fork_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_fork_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_fork_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_fork_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_fork_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_fork_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_fork_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1484,7 +1457,7 @@ debug_target::remove_fork_catchpoint (int arg0)
 int
 target_ops::insert_vfork_catchpoint (int arg0)
 {
-  return this->beneath->insert_vfork_catchpoint (arg0);
+  return this->beneath ()->insert_vfork_catchpoint (arg0);
 }
 
 int
@@ -1497,9 +1470,9 @@ int
 debug_target::insert_vfork_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_vfork_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_vfork_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_vfork_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_vfork_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_vfork_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_vfork_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1510,7 +1483,7 @@ debug_target::insert_vfork_catchpoint (int arg0)
 int
 target_ops::remove_vfork_catchpoint (int arg0)
 {
-  return this->beneath->remove_vfork_catchpoint (arg0);
+  return this->beneath ()->remove_vfork_catchpoint (arg0);
 }
 
 int
@@ -1523,9 +1496,9 @@ int
 debug_target::remove_vfork_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_vfork_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_vfork_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_vfork_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_vfork_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_vfork_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_vfork_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1536,7 +1509,7 @@ debug_target::remove_vfork_catchpoint (int arg0)
 int
 target_ops::follow_fork (int arg0, int arg1)
 {
-  return this->beneath->follow_fork (arg0, arg1);
+  return this->beneath ()->follow_fork (arg0, arg1);
 }
 
 int
@@ -1549,9 +1522,9 @@ int
 debug_target::follow_fork (int arg0, int arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->follow_fork (...)\n", this->beneath->shortname ());
-  result = this->beneath->follow_fork (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->follow_fork (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->follow_fork (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->follow_fork (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->follow_fork (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1564,7 +1537,7 @@ debug_target::follow_fork (int arg0, int arg1)
 int
 target_ops::insert_exec_catchpoint (int arg0)
 {
-  return this->beneath->insert_exec_catchpoint (arg0);
+  return this->beneath ()->insert_exec_catchpoint (arg0);
 }
 
 int
@@ -1577,9 +1550,9 @@ int
 debug_target::insert_exec_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_exec_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->insert_exec_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_exec_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insert_exec_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->insert_exec_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insert_exec_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1590,7 +1563,7 @@ debug_target::insert_exec_catchpoint (int arg0)
 int
 target_ops::remove_exec_catchpoint (int arg0)
 {
-  return this->beneath->remove_exec_catchpoint (arg0);
+  return this->beneath ()->remove_exec_catchpoint (arg0);
 }
 
 int
@@ -1603,9 +1576,9 @@ int
 debug_target::remove_exec_catchpoint (int arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_exec_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->remove_exec_catchpoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_exec_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->remove_exec_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->remove_exec_catchpoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->remove_exec_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -1614,32 +1587,32 @@ debug_target::remove_exec_catchpoint (int arg0)
 }
 
 void
-target_ops::follow_exec (struct inferior *arg0, char *arg1)
+target_ops::follow_exec (struct inferior *arg0, const char *arg1)
 {
-  this->beneath->follow_exec (arg0, arg1);
+  this->beneath ()->follow_exec (arg0, arg1);
 }
 
 void
-dummy_target::follow_exec (struct inferior *arg0, char *arg1)
+dummy_target::follow_exec (struct inferior *arg0, const char *arg1)
 {
 }
 
 void
-debug_target::follow_exec (struct inferior *arg0, char *arg1)
+debug_target::follow_exec (struct inferior *arg0, const char *arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->follow_exec (...)\n", this->beneath->shortname ());
-  this->beneath->follow_exec (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->follow_exec (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->follow_exec (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->follow_exec (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->follow_exec (", this->beneath ()->shortname ());
   target_debug_print_struct_inferior_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_char_p (arg1);
+  target_debug_print_const_char_p (arg1);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 int
 target_ops::set_syscall_catchpoint (int arg0, bool arg1, int arg2, gdb::array_view<const int> arg3)
 {
-  return this->beneath->set_syscall_catchpoint (arg0, arg1, arg2, arg3);
+  return this->beneath ()->set_syscall_catchpoint (arg0, arg1, arg2, arg3);
 }
 
 int
@@ -1652,9 +1625,9 @@ int
 debug_target::set_syscall_catchpoint (int arg0, bool arg1, int arg2, gdb::array_view<const int> arg3)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_syscall_catchpoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->set_syscall_catchpoint (arg0, arg1, arg2, arg3);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_syscall_catchpoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_syscall_catchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->set_syscall_catchpoint (arg0, arg1, arg2, arg3);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_syscall_catchpoint (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_bool (arg1);
@@ -1671,7 +1644,7 @@ debug_target::set_syscall_catchpoint (int arg0, bool arg1, int arg2, gdb::array_
 void
 target_ops::mourn_inferior ()
 {
-  this->beneath->mourn_inferior ();
+  this->beneath ()->mourn_inferior ();
 }
 
 void
@@ -1683,80 +1656,76 @@ dummy_target::mourn_inferior ()
 void
 debug_target::mourn_inferior ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->mourn_inferior (...)\n", this->beneath->shortname ());
-  this->beneath->mourn_inferior ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->mourn_inferior (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->mourn_inferior (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->mourn_inferior ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->mourn_inferior (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
-target_ops::pass_signals (int arg0, unsigned char * arg1)
+target_ops::pass_signals (gdb::array_view<const unsigned char> arg0)
 {
-  this->beneath->pass_signals (arg0, arg1);
+  this->beneath ()->pass_signals (arg0);
 }
 
 void
-dummy_target::pass_signals (int arg0, unsigned char * arg1)
+dummy_target::pass_signals (gdb::array_view<const unsigned char> arg0)
 {
 }
 
 void
-debug_target::pass_signals (int arg0, unsigned char * arg1)
+debug_target::pass_signals (gdb::array_view<const unsigned char> arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->pass_signals (...)\n", this->beneath->shortname ());
-  this->beneath->pass_signals (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->pass_signals (", this->beneath->shortname ());
-  target_debug_print_int (arg0);
-  fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_signals (arg1);
+  fprintf_unfiltered (gdb_stdlog, "-> %s->pass_signals (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->pass_signals (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->pass_signals (", this->beneath ()->shortname ());
+  target_debug_print_signals (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
-target_ops::program_signals (int arg0, unsigned char * arg1)
+target_ops::program_signals (gdb::array_view<const unsigned char> arg0)
 {
-  this->beneath->program_signals (arg0, arg1);
+  this->beneath ()->program_signals (arg0);
 }
 
 void
-dummy_target::program_signals (int arg0, unsigned char * arg1)
+dummy_target::program_signals (gdb::array_view<const unsigned char> arg0)
 {
 }
 
 void
-debug_target::program_signals (int arg0, unsigned char * arg1)
+debug_target::program_signals (gdb::array_view<const unsigned char> arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->program_signals (...)\n", this->beneath->shortname ());
-  this->beneath->program_signals (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->program_signals (", this->beneath->shortname ());
-  target_debug_print_int (arg0);
-  fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_signals (arg1);
+  fprintf_unfiltered (gdb_stdlog, "-> %s->program_signals (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->program_signals (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->program_signals (", this->beneath ()->shortname ());
+  target_debug_print_signals (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::thread_alive (ptid_t arg0)
 {
-  return this->beneath->thread_alive (arg0);
+  return this->beneath ()->thread_alive (arg0);
 }
 
-int
+bool
 dummy_target::thread_alive (ptid_t arg0)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::thread_alive (ptid_t arg0)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_alive (...)\n", this->beneath->shortname ());
-  result = this->beneath->thread_alive (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_alive (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_alive (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_alive (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_alive (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -1764,7 +1733,7 @@ debug_target::thread_alive (ptid_t arg0)
 void
 target_ops::update_thread_list ()
 {
-  this->beneath->update_thread_list ();
+  this->beneath ()->update_thread_list ();
 }
 
 void
@@ -1775,34 +1744,34 @@ dummy_target::update_thread_list ()
 void
 debug_target::update_thread_list ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->update_thread_list (...)\n", this->beneath->shortname ());
-  this->beneath->update_thread_list ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->update_thread_list (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->update_thread_list (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->update_thread_list ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->update_thread_list (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-const char *
+std::string
 target_ops::pid_to_str (ptid_t arg0)
 {
-  return this->beneath->pid_to_str (arg0);
+  return this->beneath ()->pid_to_str (arg0);
 }
 
-const char *
+std::string
 dummy_target::pid_to_str (ptid_t arg0)
 {
   return default_pid_to_str (this, arg0);
 }
 
-const char *
+std::string
 debug_target::pid_to_str (ptid_t arg0)
 {
-  const char * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->pid_to_str (...)\n", this->beneath->shortname ());
-  result = this->beneath->pid_to_str (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->pid_to_str (", this->beneath->shortname ());
+  std::string result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->pid_to_str (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->pid_to_str (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->pid_to_str (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_const_char_p (result);
+  target_debug_print_std_string (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -1810,7 +1779,7 @@ debug_target::pid_to_str (ptid_t arg0)
 const char *
 target_ops::extra_thread_info (thread_info *arg0)
 {
-  return this->beneath->extra_thread_info (arg0);
+  return this->beneath ()->extra_thread_info (arg0);
 }
 
 const char *
@@ -1823,9 +1792,9 @@ const char *
 debug_target::extra_thread_info (thread_info *arg0)
 {
   const char * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->extra_thread_info (...)\n", this->beneath->shortname ());
-  result = this->beneath->extra_thread_info (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->extra_thread_info (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->extra_thread_info (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->extra_thread_info (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->extra_thread_info (", this->beneath ()->shortname ());
   target_debug_print_thread_info_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_char_p (result);
@@ -1836,7 +1805,7 @@ debug_target::extra_thread_info (thread_info *arg0)
 const char *
 target_ops::thread_name (thread_info *arg0)
 {
-  return this->beneath->thread_name (arg0);
+  return this->beneath ()->thread_name (arg0);
 }
 
 const char *
@@ -1849,9 +1818,9 @@ const char *
 debug_target::thread_name (thread_info *arg0)
 {
   const char * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_name (...)\n", this->beneath->shortname ());
-  result = this->beneath->thread_name (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_name (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_name (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_name (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_name (", this->beneath ()->shortname ());
   target_debug_print_thread_info_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_char_p (result);
@@ -1862,7 +1831,7 @@ debug_target::thread_name (thread_info *arg0)
 thread_info *
 target_ops::thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2)
 {
-  return this->beneath->thread_handle_to_thread_info (arg0, arg1, arg2);
+  return this->beneath ()->thread_handle_to_thread_info (arg0, arg1, arg2);
 }
 
 thread_info *
@@ -1875,9 +1844,9 @@ thread_info *
 debug_target::thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, inferior *arg2)
 {
   thread_info * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_handle_to_thread_info (...)\n", this->beneath->shortname ());
-  result = this->beneath->thread_handle_to_thread_info (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_handle_to_thread_info (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_handle_to_thread_info (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_handle_to_thread_info (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_handle_to_thread_info (", this->beneath ()->shortname ());
   target_debug_print_const_gdb_byte_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -1889,10 +1858,36 @@ debug_target::thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, infe
   return result;
 }
 
+gdb::byte_vector
+target_ops::thread_info_to_thread_handle (struct thread_info *arg0)
+{
+  return this->beneath ()->thread_info_to_thread_handle (arg0);
+}
+
+gdb::byte_vector
+dummy_target::thread_info_to_thread_handle (struct thread_info *arg0)
+{
+  return gdb::byte_vector ();
+}
+
+gdb::byte_vector
+debug_target::thread_info_to_thread_handle (struct thread_info *arg0)
+{
+  gdb::byte_vector result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_info_to_thread_handle (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_info_to_thread_handle (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_info_to_thread_handle (", this->beneath ()->shortname ());
+  target_debug_print_struct_thread_info_p (arg0);
+  fputs_unfiltered (") = ", gdb_stdlog);
+  target_debug_print_gdb_byte_vector (result);
+  fputs_unfiltered ("\n", gdb_stdlog);
+  return result;
+}
+
 void
 target_ops::stop (ptid_t arg0)
 {
-  this->beneath->stop (arg0);
+  this->beneath ()->stop (arg0);
 }
 
 void
@@ -1903,9 +1898,9 @@ dummy_target::stop (ptid_t arg0)
 void
 debug_target::stop (ptid_t arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stop (...)\n", this->beneath->shortname ());
-  this->beneath->stop (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stop (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stop (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->stop (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stop (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -1913,7 +1908,7 @@ debug_target::stop (ptid_t arg0)
 void
 target_ops::interrupt ()
 {
-  this->beneath->interrupt ();
+  this->beneath ()->interrupt ();
 }
 
 void
@@ -1924,16 +1919,16 @@ dummy_target::interrupt ()
 void
 debug_target::interrupt ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->interrupt (...)\n", this->beneath->shortname ());
-  this->beneath->interrupt ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->interrupt (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->interrupt (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->interrupt ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->interrupt (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::pass_ctrlc ()
 {
-  this->beneath->pass_ctrlc ();
+  this->beneath ()->pass_ctrlc ();
 }
 
 void
@@ -1945,16 +1940,16 @@ dummy_target::pass_ctrlc ()
 void
 debug_target::pass_ctrlc ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->pass_ctrlc (...)\n", this->beneath->shortname ());
-  this->beneath->pass_ctrlc ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->pass_ctrlc (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->pass_ctrlc (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->pass_ctrlc ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->pass_ctrlc (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::rcmd (const char *arg0, struct ui_file *arg1)
 {
-  this->beneath->rcmd (arg0, arg1);
+  this->beneath ()->rcmd (arg0, arg1);
 }
 
 void
@@ -1966,9 +1961,9 @@ dummy_target::rcmd (const char *arg0, struct ui_file *arg1)
 void
 debug_target::rcmd (const char *arg0, struct ui_file *arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->rcmd (...)\n", this->beneath->shortname ());
-  this->beneath->rcmd (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->rcmd (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->rcmd (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->rcmd (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->rcmd (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_ui_file_p (arg1);
@@ -1978,7 +1973,7 @@ debug_target::rcmd (const char *arg0, struct ui_file *arg1)
 char *
 target_ops::pid_to_exec_file (int arg0)
 {
-  return this->beneath->pid_to_exec_file (arg0);
+  return this->beneath ()->pid_to_exec_file (arg0);
 }
 
 char *
@@ -1991,9 +1986,9 @@ char *
 debug_target::pid_to_exec_file (int arg0)
 {
   char * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->pid_to_exec_file (...)\n", this->beneath->shortname ());
-  result = this->beneath->pid_to_exec_file (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->pid_to_exec_file (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->pid_to_exec_file (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->pid_to_exec_file (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->pid_to_exec_file (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_char_p (result);
@@ -2004,7 +1999,7 @@ debug_target::pid_to_exec_file (int arg0)
 void
 target_ops::log_command (const char *arg0)
 {
-  this->beneath->log_command (arg0);
+  this->beneath ()->log_command (arg0);
 }
 
 void
@@ -2015,9 +2010,9 @@ dummy_target::log_command (const char *arg0)
 void
 debug_target::log_command (const char *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->log_command (...)\n", this->beneath->shortname ());
-  this->beneath->log_command (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->log_command (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->log_command (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->log_command (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->log_command (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -2025,7 +2020,7 @@ debug_target::log_command (const char *arg0)
 struct target_section_table *
 target_ops::get_section_table ()
 {
-  return this->beneath->get_section_table ();
+  return this->beneath ()->get_section_table ();
 }
 
 struct target_section_table *
@@ -2038,9 +2033,9 @@ struct target_section_table *
 debug_target::get_section_table ()
 {
   struct target_section_table * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_section_table (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_section_table ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_section_table (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_section_table (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_section_table ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_section_table (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_struct_target_section_table_p (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2050,7 +2045,7 @@ debug_target::get_section_table ()
 thread_control_capabilities
 target_ops::get_thread_control_capabilities ()
 {
-  return this->beneath->get_thread_control_capabilities ();
+  return this->beneath ()->get_thread_control_capabilities ();
 }
 
 thread_control_capabilities
@@ -2063,9 +2058,9 @@ thread_control_capabilities
 debug_target::get_thread_control_capabilities ()
 {
   thread_control_capabilities result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_thread_control_capabilities (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_thread_control_capabilities ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_thread_control_capabilities (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_thread_control_capabilities (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_thread_control_capabilities ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_thread_control_capabilities (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_thread_control_capabilities (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2075,7 +2070,7 @@ debug_target::get_thread_control_capabilities ()
 bool
 target_ops::attach_no_wait ()
 {
-  return this->beneath->attach_no_wait ();
+  return this->beneath ()->attach_no_wait ();
 }
 
 bool
@@ -2088,61 +2083,61 @@ bool
 debug_target::attach_no_wait ()
 {
   bool result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->attach_no_wait (...)\n", this->beneath->shortname ());
-  result = this->beneath->attach_no_wait ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->attach_no_wait (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->attach_no_wait (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->attach_no_wait ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->attach_no_wait (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::can_async_p ()
 {
-  return this->beneath->can_async_p ();
+  return this->beneath ()->can_async_p ();
 }
 
-int
+bool
 dummy_target::can_async_p ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_async_p ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_async_p (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_async_p ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_async_p (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_async_p (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_async_p ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_async_p (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::is_async_p ()
 {
-  return this->beneath->is_async_p ();
+  return this->beneath ()->is_async_p ();
 }
 
-int
+bool
 dummy_target::is_async_p ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::is_async_p ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->is_async_p (...)\n", this->beneath->shortname ());
-  result = this->beneath->is_async_p ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->is_async_p (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->is_async_p (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->is_async_p ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->is_async_p (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2150,7 +2145,7 @@ debug_target::is_async_p ()
 void
 target_ops::async (int arg0)
 {
-  this->beneath->async (arg0);
+  this->beneath ()->async (arg0);
 }
 
 void
@@ -2162,17 +2157,42 @@ dummy_target::async (int arg0)
 void
 debug_target::async (int arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->async (...)\n", this->beneath->shortname ());
-  this->beneath->async (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->async (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->async (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->async (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->async (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
+int
+target_ops::async_wait_fd ()
+{
+  return this->beneath ()->async_wait_fd ();
+}
+
+int
+dummy_target::async_wait_fd ()
+{
+  noprocess ();
+}
+
+int
+debug_target::async_wait_fd ()
+{
+  int result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->async_wait_fd (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->async_wait_fd ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->async_wait_fd (", this->beneath ()->shortname ());
+  fputs_unfiltered (") = ", gdb_stdlog);
+  target_debug_print_int (result);
+  fputs_unfiltered ("\n", gdb_stdlog);
+  return result;
+}
+
 void
 target_ops::thread_events (int arg0)
 {
-  this->beneath->thread_events (arg0);
+  this->beneath ()->thread_events (arg0);
 }
 
 void
@@ -2183,59 +2203,59 @@ dummy_target::thread_events (int arg0)
 void
 debug_target::thread_events (int arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_events (...)\n", this->beneath->shortname ());
-  this->beneath->thread_events (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_events (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_events (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->thread_events (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_events (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::supports_non_stop ()
 {
-  return this->beneath->supports_non_stop ();
+  return this->beneath ()->supports_non_stop ();
 }
 
-int
+bool
 dummy_target::supports_non_stop ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_non_stop ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_non_stop (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_non_stop ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_non_stop (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_non_stop (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_non_stop ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_non_stop (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::always_non_stop_p ()
 {
-  return this->beneath->always_non_stop_p ();
+  return this->beneath ()->always_non_stop_p ();
 }
 
-int
+bool
 dummy_target::always_non_stop_p ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::always_non_stop_p ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->always_non_stop_p (...)\n", this->beneath->shortname ());
-  result = this->beneath->always_non_stop_p ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->always_non_stop_p (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->always_non_stop_p (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->always_non_stop_p ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->always_non_stop_p (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2243,7 +2263,7 @@ debug_target::always_non_stop_p ()
 int
 target_ops::find_memory_regions (find_memory_region_ftype arg0, void *arg1)
 {
-  return this->beneath->find_memory_regions (arg0, arg1);
+  return this->beneath ()->find_memory_regions (arg0, arg1);
 }
 
 int
@@ -2256,9 +2276,9 @@ int
 debug_target::find_memory_regions (find_memory_region_ftype arg0, void *arg1)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->find_memory_regions (...)\n", this->beneath->shortname ());
-  result = this->beneath->find_memory_regions (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->find_memory_regions (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->find_memory_regions (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->find_memory_regions (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->find_memory_regions (", this->beneath ()->shortname ());
   target_debug_print_find_memory_region_ftype (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_void_p (arg1);
@@ -2271,7 +2291,7 @@ debug_target::find_memory_regions (find_memory_region_ftype arg0, void *arg1)
 char *
 target_ops::make_corefile_notes (bfd *arg0, int *arg1)
 {
-  return this->beneath->make_corefile_notes (arg0, arg1);
+  return this->beneath ()->make_corefile_notes (arg0, arg1);
 }
 
 char *
@@ -2284,9 +2304,9 @@ char *
 debug_target::make_corefile_notes (bfd *arg0, int *arg1)
 {
   char * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->make_corefile_notes (...)\n", this->beneath->shortname ());
-  result = this->beneath->make_corefile_notes (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->make_corefile_notes (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->make_corefile_notes (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->make_corefile_notes (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->make_corefile_notes (", this->beneath ()->shortname ());
   target_debug_print_bfd_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int_p (arg1);
@@ -2299,7 +2319,7 @@ debug_target::make_corefile_notes (bfd *arg0, int *arg1)
 gdb_byte *
 target_ops::get_bookmark (const char *arg0, int arg1)
 {
-  return this->beneath->get_bookmark (arg0, arg1);
+  return this->beneath ()->get_bookmark (arg0, arg1);
 }
 
 gdb_byte *
@@ -2312,9 +2332,9 @@ gdb_byte *
 debug_target::get_bookmark (const char *arg0, int arg1)
 {
   gdb_byte * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_bookmark (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_bookmark (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_bookmark (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_bookmark (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_bookmark (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_bookmark (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -2327,7 +2347,7 @@ debug_target::get_bookmark (const char *arg0, int arg1)
 void
 target_ops::goto_bookmark (const gdb_byte *arg0, int arg1)
 {
-  this->beneath->goto_bookmark (arg0, arg1);
+  this->beneath ()->goto_bookmark (arg0, arg1);
 }
 
 void
@@ -2339,9 +2359,9 @@ dummy_target::goto_bookmark (const gdb_byte *arg0, int arg1)
 void
 debug_target::goto_bookmark (const gdb_byte *arg0, int arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_bookmark (...)\n", this->beneath->shortname ());
-  this->beneath->goto_bookmark (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_bookmark (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_bookmark (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->goto_bookmark (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_bookmark (", this->beneath ()->shortname ());
   target_debug_print_const_gdb_byte_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -2351,7 +2371,7 @@ debug_target::goto_bookmark (const gdb_byte *arg0, int arg1)
 CORE_ADDR
 target_ops::get_thread_local_address (ptid_t arg0, CORE_ADDR arg1, CORE_ADDR arg2)
 {
-  return this->beneath->get_thread_local_address (arg0, arg1, arg2);
+  return this->beneath ()->get_thread_local_address (arg0, arg1, arg2);
 }
 
 CORE_ADDR
@@ -2364,9 +2384,9 @@ CORE_ADDR
 debug_target::get_thread_local_address (ptid_t arg0, CORE_ADDR arg1, CORE_ADDR arg2)
 {
   CORE_ADDR result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_thread_local_address (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_thread_local_address (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_thread_local_address (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_thread_local_address (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_thread_local_address (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_thread_local_address (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
@@ -2381,7 +2401,7 @@ debug_target::get_thread_local_address (ptid_t arg0, CORE_ADDR arg1, CORE_ADDR a
 enum target_xfer_status
 target_ops::xfer_partial (enum target_object arg0, const char *arg1, gdb_byte *arg2, const gdb_byte *arg3, ULONGEST arg4, ULONGEST arg5, ULONGEST *arg6)
 {
-  return this->beneath->xfer_partial (arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+  return this->beneath ()->xfer_partial (arg0, arg1, arg2, arg3, arg4, arg5, arg6);
 }
 
 enum target_xfer_status
@@ -2394,9 +2414,9 @@ enum target_xfer_status
 debug_target::xfer_partial (enum target_object arg0, const char *arg1, gdb_byte *arg2, const gdb_byte *arg3, ULONGEST arg4, ULONGEST arg5, ULONGEST *arg6)
 {
   enum target_xfer_status result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->xfer_partial (...)\n", this->beneath->shortname ());
-  result = this->beneath->xfer_partial (arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->xfer_partial (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->xfer_partial (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->xfer_partial (arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->xfer_partial (", this->beneath ()->shortname ());
   target_debug_print_enum_target_object (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_const_char_p (arg1);
@@ -2419,7 +2439,7 @@ debug_target::xfer_partial (enum target_object arg0, const char *arg1, gdb_byte
 ULONGEST
 target_ops::get_memory_xfer_limit ()
 {
-  return this->beneath->get_memory_xfer_limit ();
+  return this->beneath ()->get_memory_xfer_limit ();
 }
 
 ULONGEST
@@ -2432,9 +2452,9 @@ ULONGEST
 debug_target::get_memory_xfer_limit ()
 {
   ULONGEST result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_memory_xfer_limit (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_memory_xfer_limit ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_memory_xfer_limit (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_memory_xfer_limit (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_memory_xfer_limit ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_memory_xfer_limit (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_ULONGEST (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2444,7 +2464,7 @@ debug_target::get_memory_xfer_limit ()
 std::vector<mem_region>
 target_ops::memory_map ()
 {
-  return this->beneath->memory_map ();
+  return this->beneath ()->memory_map ();
 }
 
 std::vector<mem_region>
@@ -2457,9 +2477,9 @@ std::vector<mem_region>
 debug_target::memory_map ()
 {
   std::vector<mem_region> result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->memory_map (...)\n", this->beneath->shortname ());
-  result = this->beneath->memory_map ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->memory_map (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->memory_map (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->memory_map ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->memory_map (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_std_vector_mem_region (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2469,7 +2489,7 @@ debug_target::memory_map ()
 void
 target_ops::flash_erase (ULONGEST arg0, LONGEST arg1)
 {
-  this->beneath->flash_erase (arg0, arg1);
+  this->beneath ()->flash_erase (arg0, arg1);
 }
 
 void
@@ -2481,9 +2501,9 @@ dummy_target::flash_erase (ULONGEST arg0, LONGEST arg1)
 void
 debug_target::flash_erase (ULONGEST arg0, LONGEST arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->flash_erase (...)\n", this->beneath->shortname ());
-  this->beneath->flash_erase (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->flash_erase (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->flash_erase (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->flash_erase (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->flash_erase (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_LONGEST (arg1);
@@ -2493,7 +2513,7 @@ debug_target::flash_erase (ULONGEST arg0, LONGEST arg1)
 void
 target_ops::flash_done ()
 {
-  this->beneath->flash_done ();
+  this->beneath ()->flash_done ();
 }
 
 void
@@ -2505,16 +2525,16 @@ dummy_target::flash_done ()
 void
 debug_target::flash_done ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->flash_done (...)\n", this->beneath->shortname ());
-  this->beneath->flash_done ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->flash_done (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->flash_done (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->flash_done ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->flash_done (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 const struct target_desc *
 target_ops::read_description ()
 {
-  return this->beneath->read_description ();
+  return this->beneath ()->read_description ();
 }
 
 const struct target_desc *
@@ -2527,9 +2547,9 @@ const struct target_desc *
 debug_target::read_description ()
 {
   const struct target_desc * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->read_description (...)\n", this->beneath->shortname ());
-  result = this->beneath->read_description ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->read_description (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->read_description (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->read_description ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->read_description (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_struct_target_desc_p (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2539,7 +2559,7 @@ debug_target::read_description ()
 ptid_t
 target_ops::get_ada_task_ptid (long arg0, long arg1)
 {
-  return this->beneath->get_ada_task_ptid (arg0, arg1);
+  return this->beneath ()->get_ada_task_ptid (arg0, arg1);
 }
 
 ptid_t
@@ -2552,9 +2572,9 @@ ptid_t
 debug_target::get_ada_task_ptid (long arg0, long arg1)
 {
   ptid_t result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_ada_task_ptid (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_ada_task_ptid (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_ada_task_ptid (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_ada_task_ptid (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_ada_task_ptid (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_ada_task_ptid (", this->beneath ()->shortname ());
   target_debug_print_long (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_long (arg1);
@@ -2567,7 +2587,7 @@ debug_target::get_ada_task_ptid (long arg0, long arg1)
 int
 target_ops::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
 {
-  return this->beneath->auxv_parse (arg0, arg1, arg2, arg3);
+  return this->beneath ()->auxv_parse (arg0, arg1, arg2, arg3);
 }
 
 int
@@ -2580,9 +2600,9 @@ int
 debug_target::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->auxv_parse (...)\n", this->beneath->shortname ());
-  result = this->beneath->auxv_parse (arg0, arg1, arg2, arg3);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->auxv_parse (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->auxv_parse (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->auxv_parse (arg0, arg1, arg2, arg3);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->auxv_parse (", this->beneath ()->shortname ());
   target_debug_print_gdb_byte_pp (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_gdb_byte_p (arg1);
@@ -2599,7 +2619,7 @@ debug_target::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE
 int
 target_ops::search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4)
 {
-  return this->beneath->search_memory (arg0, arg1, arg2, arg3, arg4);
+  return this->beneath ()->search_memory (arg0, arg1, arg2, arg3, arg4);
 }
 
 int
@@ -2612,9 +2632,9 @@ int
 debug_target::search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->search_memory (...)\n", this->beneath->shortname ());
-  result = this->beneath->search_memory (arg0, arg1, arg2, arg3, arg4);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->search_memory (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->search_memory (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->search_memory (arg0, arg1, arg2, arg3, arg4);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->search_memory (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_ULONGEST (arg1);
@@ -2630,27 +2650,27 @@ debug_target::search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2
   return result;
 }
 
-int
+bool
 target_ops::can_execute_reverse ()
 {
-  return this->beneath->can_execute_reverse ();
+  return this->beneath ()->can_execute_reverse ();
 }
 
-int
+bool
 dummy_target::can_execute_reverse ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_execute_reverse ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_execute_reverse (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_execute_reverse ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_execute_reverse (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_execute_reverse (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_execute_reverse ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_execute_reverse (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2658,7 +2678,7 @@ debug_target::can_execute_reverse ()
 enum exec_direction_kind
 target_ops::execution_direction ()
 {
-  return this->beneath->execution_direction ();
+  return this->beneath ()->execution_direction ();
 }
 
 enum exec_direction_kind
@@ -2671,161 +2691,161 @@ enum exec_direction_kind
 debug_target::execution_direction ()
 {
   enum exec_direction_kind result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->execution_direction (...)\n", this->beneath->shortname ());
-  result = this->beneath->execution_direction ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->execution_direction (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->execution_direction (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->execution_direction ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->execution_direction (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_enum_exec_direction_kind (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_multi_process ()
 {
-  return this->beneath->supports_multi_process ();
+  return this->beneath ()->supports_multi_process ();
 }
 
-int
+bool
 dummy_target::supports_multi_process ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_multi_process ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_multi_process (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_multi_process ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_multi_process (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_multi_process (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_multi_process ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_multi_process (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_enable_disable_tracepoint ()
 {
-  return this->beneath->supports_enable_disable_tracepoint ();
+  return this->beneath ()->supports_enable_disable_tracepoint ();
 }
 
-int
+bool
 dummy_target::supports_enable_disable_tracepoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_enable_disable_tracepoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_enable_disable_tracepoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_enable_disable_tracepoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_enable_disable_tracepoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_enable_disable_tracepoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_enable_disable_tracepoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_enable_disable_tracepoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_disable_randomization ()
 {
-  return this->beneath->supports_disable_randomization ();
+  return this->beneath ()->supports_disable_randomization ();
 }
 
-int
+bool
 dummy_target::supports_disable_randomization ()
 {
   return find_default_supports_disable_randomization (this);
 }
 
-int
+bool
 debug_target::supports_disable_randomization ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_disable_randomization (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_disable_randomization ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_disable_randomization (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_disable_randomization (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_disable_randomization ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_disable_randomization (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_string_tracing ()
 {
-  return this->beneath->supports_string_tracing ();
+  return this->beneath ()->supports_string_tracing ();
 }
 
-int
+bool
 dummy_target::supports_string_tracing ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_string_tracing ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_string_tracing (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_string_tracing ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_string_tracing (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_string_tracing (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_string_tracing ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_string_tracing (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::supports_evaluation_of_breakpoint_conditions ()
 {
-  return this->beneath->supports_evaluation_of_breakpoint_conditions ();
+  return this->beneath ()->supports_evaluation_of_breakpoint_conditions ();
 }
 
-int
+bool
 dummy_target::supports_evaluation_of_breakpoint_conditions ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::supports_evaluation_of_breakpoint_conditions ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_evaluation_of_breakpoint_conditions (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_evaluation_of_breakpoint_conditions ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_evaluation_of_breakpoint_conditions (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_evaluation_of_breakpoint_conditions (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_evaluation_of_breakpoint_conditions ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_evaluation_of_breakpoint_conditions (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::can_run_breakpoint_commands ()
 {
-  return this->beneath->can_run_breakpoint_commands ();
+  return this->beneath ()->can_run_breakpoint_commands ();
 }
 
-int
+bool
 dummy_target::can_run_breakpoint_commands ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_run_breakpoint_commands ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_run_breakpoint_commands (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_run_breakpoint_commands ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_run_breakpoint_commands (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_run_breakpoint_commands (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_run_breakpoint_commands ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_run_breakpoint_commands (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2833,22 +2853,22 @@ debug_target::can_run_breakpoint_commands ()
 struct gdbarch *
 target_ops::thread_architecture (ptid_t arg0)
 {
-  return this->beneath->thread_architecture (arg0);
+  return this->beneath ()->thread_architecture (arg0);
 }
 
 struct gdbarch *
 dummy_target::thread_architecture (ptid_t arg0)
 {
-  return default_thread_architecture (this, arg0);
+  return NULL;
 }
 
 struct gdbarch *
 debug_target::thread_architecture (ptid_t arg0)
 {
   struct gdbarch * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_architecture (...)\n", this->beneath->shortname ());
-  result = this->beneath->thread_architecture (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_architecture (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_architecture (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_architecture (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_architecture (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_struct_gdbarch_p (result);
@@ -2859,22 +2879,22 @@ debug_target::thread_architecture (ptid_t arg0)
 struct address_space *
 target_ops::thread_address_space (ptid_t arg0)
 {
-  return this->beneath->thread_address_space (arg0);
+  return this->beneath ()->thread_address_space (arg0);
 }
 
 struct address_space *
 dummy_target::thread_address_space (ptid_t arg0)
 {
-  return default_thread_address_space (this, arg0);
+  return NULL;
 }
 
 struct address_space *
 debug_target::thread_address_space (ptid_t arg0)
 {
   struct address_space * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_address_space (...)\n", this->beneath->shortname ());
-  result = this->beneath->thread_address_space (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_address_space (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->thread_address_space (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->thread_address_space (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->thread_address_space (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_struct_address_space_p (result);
@@ -2882,27 +2902,27 @@ debug_target::thread_address_space (ptid_t arg0)
   return result;
 }
 
-int
+bool
 target_ops::filesystem_is_local ()
 {
-  return this->beneath->filesystem_is_local ();
+  return this->beneath ()->filesystem_is_local ();
 }
 
-int
+bool
 dummy_target::filesystem_is_local ()
 {
-  return 1;
+  return true;
 }
 
-int
+bool
 debug_target::filesystem_is_local ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->filesystem_is_local (...)\n", this->beneath->shortname ());
-  result = this->beneath->filesystem_is_local ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->filesystem_is_local (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->filesystem_is_local (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->filesystem_is_local ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->filesystem_is_local (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2910,7 +2930,7 @@ debug_target::filesystem_is_local ()
 void
 target_ops::trace_init ()
 {
-  this->beneath->trace_init ();
+  this->beneath ()->trace_init ();
 }
 
 void
@@ -2922,16 +2942,16 @@ dummy_target::trace_init ()
 void
 debug_target::trace_init ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_init (...)\n", this->beneath->shortname ());
-  this->beneath->trace_init ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_init (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_init (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->trace_init ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_init (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::download_tracepoint (struct bp_location *arg0)
 {
-  this->beneath->download_tracepoint (arg0);
+  this->beneath ()->download_tracepoint (arg0);
 }
 
 void
@@ -2943,34 +2963,34 @@ dummy_target::download_tracepoint (struct bp_location *arg0)
 void
 debug_target::download_tracepoint (struct bp_location *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->download_tracepoint (...)\n", this->beneath->shortname ());
-  this->beneath->download_tracepoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->download_tracepoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->download_tracepoint (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->download_tracepoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->download_tracepoint (", this->beneath ()->shortname ());
   target_debug_print_struct_bp_location_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::can_download_tracepoint ()
 {
-  return this->beneath->can_download_tracepoint ();
+  return this->beneath ()->can_download_tracepoint ();
 }
 
-int
+bool
 dummy_target::can_download_tracepoint ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_download_tracepoint ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_download_tracepoint (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_download_tracepoint ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_download_tracepoint (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_download_tracepoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_download_tracepoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_download_tracepoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -2978,7 +2998,7 @@ debug_target::can_download_tracepoint ()
 void
 target_ops::download_trace_state_variable (const trace_state_variable &arg0)
 {
-  this->beneath->download_trace_state_variable (arg0);
+  this->beneath ()->download_trace_state_variable (arg0);
 }
 
 void
@@ -2990,9 +3010,9 @@ dummy_target::download_trace_state_variable (const trace_state_variable &arg0)
 void
 debug_target::download_trace_state_variable (const trace_state_variable &arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->download_trace_state_variable (...)\n", this->beneath->shortname ());
-  this->beneath->download_trace_state_variable (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->download_trace_state_variable (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->download_trace_state_variable (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->download_trace_state_variable (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->download_trace_state_variable (", this->beneath ()->shortname ());
   target_debug_print_const_trace_state_variable_r (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3000,7 +3020,7 @@ debug_target::download_trace_state_variable (const trace_state_variable &arg0)
 void
 target_ops::enable_tracepoint (struct bp_location *arg0)
 {
-  this->beneath->enable_tracepoint (arg0);
+  this->beneath ()->enable_tracepoint (arg0);
 }
 
 void
@@ -3012,9 +3032,9 @@ dummy_target::enable_tracepoint (struct bp_location *arg0)
 void
 debug_target::enable_tracepoint (struct bp_location *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->enable_tracepoint (...)\n", this->beneath->shortname ());
-  this->beneath->enable_tracepoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->enable_tracepoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->enable_tracepoint (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->enable_tracepoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->enable_tracepoint (", this->beneath ()->shortname ());
   target_debug_print_struct_bp_location_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3022,7 +3042,7 @@ debug_target::enable_tracepoint (struct bp_location *arg0)
 void
 target_ops::disable_tracepoint (struct bp_location *arg0)
 {
-  this->beneath->disable_tracepoint (arg0);
+  this->beneath ()->disable_tracepoint (arg0);
 }
 
 void
@@ -3034,9 +3054,9 @@ dummy_target::disable_tracepoint (struct bp_location *arg0)
 void
 debug_target::disable_tracepoint (struct bp_location *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->disable_tracepoint (...)\n", this->beneath->shortname ());
-  this->beneath->disable_tracepoint (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->disable_tracepoint (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->disable_tracepoint (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->disable_tracepoint (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->disable_tracepoint (", this->beneath ()->shortname ());
   target_debug_print_struct_bp_location_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3044,7 +3064,7 @@ debug_target::disable_tracepoint (struct bp_location *arg0)
 void
 target_ops::trace_set_readonly_regions ()
 {
-  this->beneath->trace_set_readonly_regions ();
+  this->beneath ()->trace_set_readonly_regions ();
 }
 
 void
@@ -3056,16 +3076,16 @@ dummy_target::trace_set_readonly_regions ()
 void
 debug_target::trace_set_readonly_regions ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_set_readonly_regions (...)\n", this->beneath->shortname ());
-  this->beneath->trace_set_readonly_regions ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_set_readonly_regions (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_set_readonly_regions (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->trace_set_readonly_regions ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_set_readonly_regions (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::trace_start ()
 {
-  this->beneath->trace_start ();
+  this->beneath ()->trace_start ();
 }
 
 void
@@ -3077,16 +3097,16 @@ dummy_target::trace_start ()
 void
 debug_target::trace_start ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_start (...)\n", this->beneath->shortname ());
-  this->beneath->trace_start ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_start (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_start (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->trace_start ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_start (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 int
 target_ops::get_trace_status (struct trace_status *arg0)
 {
-  return this->beneath->get_trace_status (arg0);
+  return this->beneath ()->get_trace_status (arg0);
 }
 
 int
@@ -3099,9 +3119,9 @@ int
 debug_target::get_trace_status (struct trace_status *arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_trace_status (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_trace_status (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_trace_status (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_trace_status (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_trace_status (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_trace_status (", this->beneath ()->shortname ());
   target_debug_print_struct_trace_status_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -3112,7 +3132,7 @@ debug_target::get_trace_status (struct trace_status *arg0)
 void
 target_ops::get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp *arg1)
 {
-  this->beneath->get_tracepoint_status (arg0, arg1);
+  this->beneath ()->get_tracepoint_status (arg0, arg1);
 }
 
 void
@@ -3124,9 +3144,9 @@ dummy_target::get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp
 void
 debug_target::get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp *arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tracepoint_status (...)\n", this->beneath->shortname ());
-  this->beneath->get_tracepoint_status (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tracepoint_status (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tracepoint_status (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->get_tracepoint_status (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tracepoint_status (", this->beneath ()->shortname ());
   target_debug_print_struct_breakpoint_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_uploaded_tp_p (arg1);
@@ -3136,7 +3156,7 @@ debug_target::get_tracepoint_status (struct breakpoint *arg0, struct uploaded_tp
 void
 target_ops::trace_stop ()
 {
-  this->beneath->trace_stop ();
+  this->beneath ()->trace_stop ();
 }
 
 void
@@ -3148,16 +3168,16 @@ dummy_target::trace_stop ()
 void
 debug_target::trace_stop ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_stop (...)\n", this->beneath->shortname ());
-  this->beneath->trace_stop ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_stop (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_stop (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->trace_stop ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_stop (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 int
 target_ops::trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, CORE_ADDR arg3, int *arg4)
 {
-  return this->beneath->trace_find (arg0, arg1, arg2, arg3, arg4);
+  return this->beneath ()->trace_find (arg0, arg1, arg2, arg3, arg4);
 }
 
 int
@@ -3170,9 +3190,9 @@ int
 debug_target::trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, CORE_ADDR arg3, int *arg4)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_find (...)\n", this->beneath->shortname ());
-  result = this->beneath->trace_find (arg0, arg1, arg2, arg3, arg4);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_find (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->trace_find (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->trace_find (arg0, arg1, arg2, arg3, arg4);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->trace_find (", this->beneath ()->shortname ());
   target_debug_print_enum_trace_find_type (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -3188,30 +3208,30 @@ debug_target::trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, C
   return result;
 }
 
-int
+bool
 target_ops::get_trace_state_variable_value (int arg0, LONGEST *arg1)
 {
-  return this->beneath->get_trace_state_variable_value (arg0, arg1);
+  return this->beneath ()->get_trace_state_variable_value (arg0, arg1);
 }
 
-int
+bool
 dummy_target::get_trace_state_variable_value (int arg0, LONGEST *arg1)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::get_trace_state_variable_value (int arg0, LONGEST *arg1)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_trace_state_variable_value (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_trace_state_variable_value (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_trace_state_variable_value (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_trace_state_variable_value (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_trace_state_variable_value (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_trace_state_variable_value (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_LONGEST_p (arg1);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -3219,7 +3239,7 @@ debug_target::get_trace_state_variable_value (int arg0, LONGEST *arg1)
 int
 target_ops::save_trace_data (const char *arg0)
 {
-  return this->beneath->save_trace_data (arg0);
+  return this->beneath ()->save_trace_data (arg0);
 }
 
 int
@@ -3232,9 +3252,9 @@ int
 debug_target::save_trace_data (const char *arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->save_trace_data (...)\n", this->beneath->shortname ());
-  result = this->beneath->save_trace_data (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->save_trace_data (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->save_trace_data (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->save_trace_data (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->save_trace_data (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -3245,7 +3265,7 @@ debug_target::save_trace_data (const char *arg0)
 int
 target_ops::upload_tracepoints (struct uploaded_tp **arg0)
 {
-  return this->beneath->upload_tracepoints (arg0);
+  return this->beneath ()->upload_tracepoints (arg0);
 }
 
 int
@@ -3258,9 +3278,9 @@ int
 debug_target::upload_tracepoints (struct uploaded_tp **arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->upload_tracepoints (...)\n", this->beneath->shortname ());
-  result = this->beneath->upload_tracepoints (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->upload_tracepoints (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->upload_tracepoints (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->upload_tracepoints (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->upload_tracepoints (", this->beneath ()->shortname ());
   target_debug_print_struct_uploaded_tp_pp (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -3271,7 +3291,7 @@ debug_target::upload_tracepoints (struct uploaded_tp **arg0)
 int
 target_ops::upload_trace_state_variables (struct uploaded_tsv **arg0)
 {
-  return this->beneath->upload_trace_state_variables (arg0);
+  return this->beneath ()->upload_trace_state_variables (arg0);
 }
 
 int
@@ -3284,9 +3304,9 @@ int
 debug_target::upload_trace_state_variables (struct uploaded_tsv **arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->upload_trace_state_variables (...)\n", this->beneath->shortname ());
-  result = this->beneath->upload_trace_state_variables (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->upload_trace_state_variables (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->upload_trace_state_variables (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->upload_trace_state_variables (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->upload_trace_state_variables (", this->beneath ()->shortname ());
   target_debug_print_struct_uploaded_tsv_pp (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -3297,7 +3317,7 @@ debug_target::upload_trace_state_variables (struct uploaded_tsv **arg0)
 LONGEST
 target_ops::get_raw_trace_data (gdb_byte *arg0, ULONGEST arg1, LONGEST arg2)
 {
-  return this->beneath->get_raw_trace_data (arg0, arg1, arg2);
+  return this->beneath ()->get_raw_trace_data (arg0, arg1, arg2);
 }
 
 LONGEST
@@ -3310,9 +3330,9 @@ LONGEST
 debug_target::get_raw_trace_data (gdb_byte *arg0, ULONGEST arg1, LONGEST arg2)
 {
   LONGEST result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_raw_trace_data (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_raw_trace_data (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_raw_trace_data (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_raw_trace_data (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_raw_trace_data (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_raw_trace_data (", this->beneath ()->shortname ());
   target_debug_print_gdb_byte_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_ULONGEST (arg1);
@@ -3327,7 +3347,7 @@ debug_target::get_raw_trace_data (gdb_byte *arg0, ULONGEST arg1, LONGEST arg2)
 int
 target_ops::get_min_fast_tracepoint_insn_len ()
 {
-  return this->beneath->get_min_fast_tracepoint_insn_len ();
+  return this->beneath ()->get_min_fast_tracepoint_insn_len ();
 }
 
 int
@@ -3340,9 +3360,9 @@ int
 debug_target::get_min_fast_tracepoint_insn_len ()
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_min_fast_tracepoint_insn_len (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_min_fast_tracepoint_insn_len ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_min_fast_tracepoint_insn_len (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_min_fast_tracepoint_insn_len (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_min_fast_tracepoint_insn_len ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_min_fast_tracepoint_insn_len (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -3352,7 +3372,7 @@ debug_target::get_min_fast_tracepoint_insn_len ()
 void
 target_ops::set_disconnected_tracing (int arg0)
 {
-  this->beneath->set_disconnected_tracing (arg0);
+  this->beneath ()->set_disconnected_tracing (arg0);
 }
 
 void
@@ -3363,9 +3383,9 @@ dummy_target::set_disconnected_tracing (int arg0)
 void
 debug_target::set_disconnected_tracing (int arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_disconnected_tracing (...)\n", this->beneath->shortname ());
-  this->beneath->set_disconnected_tracing (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_disconnected_tracing (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_disconnected_tracing (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->set_disconnected_tracing (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_disconnected_tracing (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3373,7 +3393,7 @@ debug_target::set_disconnected_tracing (int arg0)
 void
 target_ops::set_circular_trace_buffer (int arg0)
 {
-  this->beneath->set_circular_trace_buffer (arg0);
+  this->beneath ()->set_circular_trace_buffer (arg0);
 }
 
 void
@@ -3384,9 +3404,9 @@ dummy_target::set_circular_trace_buffer (int arg0)
 void
 debug_target::set_circular_trace_buffer (int arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_circular_trace_buffer (...)\n", this->beneath->shortname ());
-  this->beneath->set_circular_trace_buffer (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_circular_trace_buffer (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_circular_trace_buffer (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->set_circular_trace_buffer (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_circular_trace_buffer (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3394,7 +3414,7 @@ debug_target::set_circular_trace_buffer (int arg0)
 void
 target_ops::set_trace_buffer_size (LONGEST arg0)
 {
-  this->beneath->set_trace_buffer_size (arg0);
+  this->beneath ()->set_trace_buffer_size (arg0);
 }
 
 void
@@ -3405,39 +3425,39 @@ dummy_target::set_trace_buffer_size (LONGEST arg0)
 void
 debug_target::set_trace_buffer_size (LONGEST arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_trace_buffer_size (...)\n", this->beneath->shortname ());
-  this->beneath->set_trace_buffer_size (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_trace_buffer_size (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_trace_buffer_size (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->set_trace_buffer_size (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_trace_buffer_size (", this->beneath ()->shortname ());
   target_debug_print_LONGEST (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::set_trace_notes (const char *arg0, const char *arg1, const char *arg2)
 {
-  return this->beneath->set_trace_notes (arg0, arg1, arg2);
+  return this->beneath ()->set_trace_notes (arg0, arg1, arg2);
 }
 
-int
+bool
 dummy_target::set_trace_notes (const char *arg0, const char *arg1, const char *arg2)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::set_trace_notes (const char *arg0, const char *arg1, const char *arg2)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_trace_notes (...)\n", this->beneath->shortname ());
-  result = this->beneath->set_trace_notes (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_trace_notes (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_trace_notes (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->set_trace_notes (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_trace_notes (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_const_char_p (arg1);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_const_char_p (arg2);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -3445,7 +3465,7 @@ debug_target::set_trace_notes (const char *arg0, const char *arg1, const char *a
 int
 target_ops::core_of_thread (ptid_t arg0)
 {
-  return this->beneath->core_of_thread (arg0);
+  return this->beneath ()->core_of_thread (arg0);
 }
 
 int
@@ -3458,9 +3478,9 @@ int
 debug_target::core_of_thread (ptid_t arg0)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->core_of_thread (...)\n", this->beneath->shortname ());
-  result = this->beneath->core_of_thread (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->core_of_thread (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->core_of_thread (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->core_of_thread (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->core_of_thread (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
@@ -3471,7 +3491,7 @@ debug_target::core_of_thread (ptid_t arg0)
 int
 target_ops::verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2)
 {
-  return this->beneath->verify_memory (arg0, arg1, arg2);
+  return this->beneath ()->verify_memory (arg0, arg1, arg2);
 }
 
 int
@@ -3484,9 +3504,9 @@ int
 debug_target::verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2)
 {
   int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->verify_memory (...)\n", this->beneath->shortname ());
-  result = this->beneath->verify_memory (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->verify_memory (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->verify_memory (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->verify_memory (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->verify_memory (", this->beneath ()->shortname ());
   target_debug_print_const_gdb_byte_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR (arg1);
@@ -3498,30 +3518,30 @@ debug_target::verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2
   return result;
 }
 
-int
+bool
 target_ops::get_tib_address (ptid_t arg0, CORE_ADDR *arg1)
 {
-  return this->beneath->get_tib_address (arg0, arg1);
+  return this->beneath ()->get_tib_address (arg0, arg1);
 }
 
-int
+bool
 dummy_target::get_tib_address (ptid_t arg0, CORE_ADDR *arg1)
 {
   tcomplain ();
 }
 
-int
+bool
 debug_target::get_tib_address (ptid_t arg0, CORE_ADDR *arg1)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tib_address (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_tib_address (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tib_address (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tib_address (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_tib_address (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tib_address (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR_p (arg1);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -3529,7 +3549,7 @@ debug_target::get_tib_address (ptid_t arg0, CORE_ADDR *arg1)
 void
 target_ops::set_permissions ()
 {
-  this->beneath->set_permissions ();
+  this->beneath ()->set_permissions ();
 }
 
 void
@@ -3540,16 +3560,16 @@ dummy_target::set_permissions ()
 void
 debug_target::set_permissions ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->set_permissions (...)\n", this->beneath->shortname ());
-  this->beneath->set_permissions ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->set_permissions (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->set_permissions (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->set_permissions ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->set_permissions (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 bool
 target_ops::static_tracepoint_marker_at (CORE_ADDR arg0, static_tracepoint_marker *arg1)
 {
-  return this->beneath->static_tracepoint_marker_at (arg0, arg1);
+  return this->beneath ()->static_tracepoint_marker_at (arg0, arg1);
 }
 
 bool
@@ -3562,9 +3582,9 @@ bool
 debug_target::static_tracepoint_marker_at (CORE_ADDR arg0, static_tracepoint_marker *arg1)
 {
   bool result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->static_tracepoint_marker_at (...)\n", this->beneath->shortname ());
-  result = this->beneath->static_tracepoint_marker_at (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->static_tracepoint_marker_at (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->static_tracepoint_marker_at (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->static_tracepoint_marker_at (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->static_tracepoint_marker_at (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_static_tracepoint_marker_p (arg1);
@@ -3577,7 +3597,7 @@ debug_target::static_tracepoint_marker_at (CORE_ADDR arg0, static_tracepoint_mar
 std::vector<static_tracepoint_marker>
 target_ops::static_tracepoint_markers_by_strid (const char *arg0)
 {
-  return this->beneath->static_tracepoint_markers_by_strid (arg0);
+  return this->beneath ()->static_tracepoint_markers_by_strid (arg0);
 }
 
 std::vector<static_tracepoint_marker>
@@ -3590,9 +3610,9 @@ std::vector<static_tracepoint_marker>
 debug_target::static_tracepoint_markers_by_strid (const char *arg0)
 {
   std::vector<static_tracepoint_marker> result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->static_tracepoint_markers_by_strid (...)\n", this->beneath->shortname ());
-  result = this->beneath->static_tracepoint_markers_by_strid (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->static_tracepoint_markers_by_strid (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->static_tracepoint_markers_by_strid (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->static_tracepoint_markers_by_strid (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->static_tracepoint_markers_by_strid (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_std_vector_static_tracepoint_marker (result);
@@ -3603,7 +3623,7 @@ debug_target::static_tracepoint_markers_by_strid (const char *arg0)
 traceframe_info_up
 target_ops::traceframe_info ()
 {
-  return this->beneath->traceframe_info ();
+  return this->beneath ()->traceframe_info ();
 }
 
 traceframe_info_up
@@ -3616,62 +3636,62 @@ traceframe_info_up
 debug_target::traceframe_info ()
 {
   traceframe_info_up result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->traceframe_info (...)\n", this->beneath->shortname ());
-  result = this->beneath->traceframe_info ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->traceframe_info (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->traceframe_info (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->traceframe_info ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->traceframe_info (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_traceframe_info_up (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
-target_ops::use_agent (int arg0)
+bool
+target_ops::use_agent (bool arg0)
 {
-  return this->beneath->use_agent (arg0);
+  return this->beneath ()->use_agent (arg0);
 }
 
-int
-dummy_target::use_agent (int arg0)
+bool
+dummy_target::use_agent (bool arg0)
 {
   tcomplain ();
 }
 
-int
-debug_target::use_agent (int arg0)
+bool
+debug_target::use_agent (bool arg0)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->use_agent (...)\n", this->beneath->shortname ());
-  result = this->beneath->use_agent (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->use_agent (", this->beneath->shortname ());
-  target_debug_print_int (arg0);
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->use_agent (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->use_agent (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->use_agent (", this->beneath ()->shortname ());
+  target_debug_print_bool (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::can_use_agent ()
 {
-  return this->beneath->can_use_agent ();
+  return this->beneath ()->can_use_agent ();
 }
 
-int
+bool
 dummy_target::can_use_agent ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::can_use_agent ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->can_use_agent (...)\n", this->beneath->shortname ());
-  result = this->beneath->can_use_agent ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->can_use_agent (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->can_use_agent (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->can_use_agent ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->can_use_agent (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -3679,7 +3699,7 @@ debug_target::can_use_agent ()
 struct btrace_target_info *
 target_ops::enable_btrace (ptid_t arg0, const struct btrace_config *arg1)
 {
-  return this->beneath->enable_btrace (arg0, arg1);
+  return this->beneath ()->enable_btrace (arg0, arg1);
 }
 
 struct btrace_target_info *
@@ -3692,9 +3712,9 @@ struct btrace_target_info *
 debug_target::enable_btrace (ptid_t arg0, const struct btrace_config *arg1)
 {
   struct btrace_target_info * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->enable_btrace (...)\n", this->beneath->shortname ());
-  result = this->beneath->enable_btrace (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->enable_btrace (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->enable_btrace (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->enable_btrace (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->enable_btrace (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_const_struct_btrace_config_p (arg1);
@@ -3707,7 +3727,7 @@ debug_target::enable_btrace (ptid_t arg0, const struct btrace_config *arg1)
 void
 target_ops::disable_btrace (struct btrace_target_info *arg0)
 {
-  this->beneath->disable_btrace (arg0);
+  this->beneath ()->disable_btrace (arg0);
 }
 
 void
@@ -3719,9 +3739,9 @@ dummy_target::disable_btrace (struct btrace_target_info *arg0)
 void
 debug_target::disable_btrace (struct btrace_target_info *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->disable_btrace (...)\n", this->beneath->shortname ());
-  this->beneath->disable_btrace (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->disable_btrace (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->disable_btrace (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->disable_btrace (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->disable_btrace (", this->beneath ()->shortname ());
   target_debug_print_struct_btrace_target_info_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3729,7 +3749,7 @@ debug_target::disable_btrace (struct btrace_target_info *arg0)
 void
 target_ops::teardown_btrace (struct btrace_target_info *arg0)
 {
-  this->beneath->teardown_btrace (arg0);
+  this->beneath ()->teardown_btrace (arg0);
 }
 
 void
@@ -3741,9 +3761,9 @@ dummy_target::teardown_btrace (struct btrace_target_info *arg0)
 void
 debug_target::teardown_btrace (struct btrace_target_info *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->teardown_btrace (...)\n", this->beneath->shortname ());
-  this->beneath->teardown_btrace (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->teardown_btrace (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->teardown_btrace (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->teardown_btrace (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->teardown_btrace (", this->beneath ()->shortname ());
   target_debug_print_struct_btrace_target_info_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3751,7 +3771,7 @@ debug_target::teardown_btrace (struct btrace_target_info *arg0)
 enum btrace_error
 target_ops::read_btrace (struct btrace_data *arg0, struct btrace_target_info *arg1, enum btrace_read_type arg2)
 {
-  return this->beneath->read_btrace (arg0, arg1, arg2);
+  return this->beneath ()->read_btrace (arg0, arg1, arg2);
 }
 
 enum btrace_error
@@ -3764,9 +3784,9 @@ enum btrace_error
 debug_target::read_btrace (struct btrace_data *arg0, struct btrace_target_info *arg1, enum btrace_read_type arg2)
 {
   enum btrace_error result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->read_btrace (...)\n", this->beneath->shortname ());
-  result = this->beneath->read_btrace (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->read_btrace (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->read_btrace (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->read_btrace (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->read_btrace (", this->beneath ()->shortname ());
   target_debug_print_struct_btrace_data_p (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_struct_btrace_target_info_p (arg1);
@@ -3781,7 +3801,7 @@ debug_target::read_btrace (struct btrace_data *arg0, struct btrace_target_info *
 const struct btrace_config *
 target_ops::btrace_conf (const struct btrace_target_info *arg0)
 {
-  return this->beneath->btrace_conf (arg0);
+  return this->beneath ()->btrace_conf (arg0);
 }
 
 const struct btrace_config *
@@ -3794,9 +3814,9 @@ const struct btrace_config *
 debug_target::btrace_conf (const struct btrace_target_info *arg0)
 {
   const struct btrace_config * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->btrace_conf (...)\n", this->beneath->shortname ());
-  result = this->beneath->btrace_conf (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->btrace_conf (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->btrace_conf (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->btrace_conf (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->btrace_conf (", this->beneath ()->shortname ());
   target_debug_print_const_struct_btrace_target_info_p (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_struct_btrace_config_p (result);
@@ -3807,7 +3827,7 @@ debug_target::btrace_conf (const struct btrace_target_info *arg0)
 enum record_method
 target_ops::record_method (ptid_t arg0)
 {
-  return this->beneath->record_method (arg0);
+  return this->beneath ()->record_method (arg0);
 }
 
 enum record_method
@@ -3820,9 +3840,9 @@ enum record_method
 debug_target::record_method (ptid_t arg0)
 {
   enum record_method result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->record_method (...)\n", this->beneath->shortname ());
-  result = this->beneath->record_method (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->record_method (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->record_method (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->record_method (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->record_method (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_enum_record_method (result);
@@ -3833,7 +3853,7 @@ debug_target::record_method (ptid_t arg0)
 void
 target_ops::stop_recording ()
 {
-  this->beneath->stop_recording ();
+  this->beneath ()->stop_recording ();
 }
 
 void
@@ -3844,16 +3864,16 @@ dummy_target::stop_recording ()
 void
 debug_target::stop_recording ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->stop_recording (...)\n", this->beneath->shortname ());
-  this->beneath->stop_recording ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->stop_recording (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->stop_recording (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->stop_recording ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->stop_recording (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::info_record ()
 {
-  this->beneath->info_record ();
+  this->beneath ()->info_record ();
 }
 
 void
@@ -3864,16 +3884,16 @@ dummy_target::info_record ()
 void
 debug_target::info_record ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->info_record (...)\n", this->beneath->shortname ());
-  this->beneath->info_record ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->info_record (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->info_record (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->info_record ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->info_record (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::save_record (const char *arg0)
 {
-  this->beneath->save_record (arg0);
+  this->beneath ()->save_record (arg0);
 }
 
 void
@@ -3885,9 +3905,9 @@ dummy_target::save_record (const char *arg0)
 void
 debug_target::save_record (const char *arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->save_record (...)\n", this->beneath->shortname ());
-  this->beneath->save_record (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->save_record (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->save_record (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->save_record (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->save_record (", this->beneath ()->shortname ());
   target_debug_print_const_char_p (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -3895,7 +3915,7 @@ debug_target::save_record (const char *arg0)
 bool
 target_ops::supports_delete_record ()
 {
-  return this->beneath->supports_delete_record ();
+  return this->beneath ()->supports_delete_record ();
 }
 
 bool
@@ -3908,9 +3928,9 @@ bool
 debug_target::supports_delete_record ()
 {
   bool result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_delete_record (...)\n", this->beneath->shortname ());
-  result = this->beneath->supports_delete_record ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_delete_record (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->supports_delete_record (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->supports_delete_record ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->supports_delete_record (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -3920,7 +3940,7 @@ debug_target::supports_delete_record ()
 void
 target_ops::delete_record ()
 {
-  this->beneath->delete_record ();
+  this->beneath ()->delete_record ();
 }
 
 void
@@ -3932,62 +3952,62 @@ dummy_target::delete_record ()
 void
 debug_target::delete_record ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->delete_record (...)\n", this->beneath->shortname ());
-  this->beneath->delete_record ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->delete_record (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->delete_record (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->delete_record ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->delete_record (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::record_is_replaying (ptid_t arg0)
 {
-  return this->beneath->record_is_replaying (arg0);
+  return this->beneath ()->record_is_replaying (arg0);
 }
 
-int
+bool
 dummy_target::record_is_replaying (ptid_t arg0)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::record_is_replaying (ptid_t arg0)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->record_is_replaying (...)\n", this->beneath->shortname ());
-  result = this->beneath->record_is_replaying (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->record_is_replaying (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->record_is_replaying (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->record_is_replaying (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->record_is_replaying (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
 
-int
+bool
 target_ops::record_will_replay (ptid_t arg0, int arg1)
 {
-  return this->beneath->record_will_replay (arg0, arg1);
+  return this->beneath ()->record_will_replay (arg0, arg1);
 }
 
-int
+bool
 dummy_target::record_will_replay (ptid_t arg0, int arg1)
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::record_will_replay (ptid_t arg0, int arg1)
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->record_will_replay (...)\n", this->beneath->shortname ());
-  result = this->beneath->record_will_replay (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->record_will_replay (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->record_will_replay (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->record_will_replay (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->record_will_replay (", this->beneath ()->shortname ());
   target_debug_print_ptid_t (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -3995,7 +4015,7 @@ debug_target::record_will_replay (ptid_t arg0, int arg1)
 void
 target_ops::record_stop_replaying ()
 {
-  this->beneath->record_stop_replaying ();
+  this->beneath ()->record_stop_replaying ();
 }
 
 void
@@ -4006,16 +4026,16 @@ dummy_target::record_stop_replaying ()
 void
 debug_target::record_stop_replaying ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->record_stop_replaying (...)\n", this->beneath->shortname ());
-  this->beneath->record_stop_replaying ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->record_stop_replaying (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->record_stop_replaying (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->record_stop_replaying ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->record_stop_replaying (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::goto_record_begin ()
 {
-  this->beneath->goto_record_begin ();
+  this->beneath ()->goto_record_begin ();
 }
 
 void
@@ -4027,16 +4047,16 @@ dummy_target::goto_record_begin ()
 void
 debug_target::goto_record_begin ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record_begin (...)\n", this->beneath->shortname ());
-  this->beneath->goto_record_begin ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record_begin (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record_begin (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->goto_record_begin ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record_begin (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::goto_record_end ()
 {
-  this->beneath->goto_record_end ();
+  this->beneath ()->goto_record_end ();
 }
 
 void
@@ -4048,16 +4068,16 @@ dummy_target::goto_record_end ()
 void
 debug_target::goto_record_end ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record_end (...)\n", this->beneath->shortname ());
-  this->beneath->goto_record_end ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record_end (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record_end (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->goto_record_end ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record_end (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::goto_record (ULONGEST arg0)
 {
-  this->beneath->goto_record (arg0);
+  this->beneath ()->goto_record (arg0);
 }
 
 void
@@ -4069,9 +4089,9 @@ dummy_target::goto_record (ULONGEST arg0)
 void
 debug_target::goto_record (ULONGEST arg0)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record (...)\n", this->beneath->shortname ());
-  this->beneath->goto_record (arg0);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->goto_record (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->goto_record (arg0);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->goto_record (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (")\n", gdb_stdlog);
 }
@@ -4079,7 +4099,7 @@ debug_target::goto_record (ULONGEST arg0)
 void
 target_ops::insn_history (int arg0, gdb_disassembly_flags arg1)
 {
-  this->beneath->insn_history (arg0, arg1);
+  this->beneath ()->insn_history (arg0, arg1);
 }
 
 void
@@ -4091,9 +4111,9 @@ dummy_target::insn_history (int arg0, gdb_disassembly_flags arg1)
 void
 debug_target::insn_history (int arg0, gdb_disassembly_flags arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history (...)\n", this->beneath->shortname ());
-  this->beneath->insn_history (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->insn_history (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_gdb_disassembly_flags (arg1);
@@ -4103,7 +4123,7 @@ debug_target::insn_history (int arg0, gdb_disassembly_flags arg1)
 void
 target_ops::insn_history_from (ULONGEST arg0, int arg1, gdb_disassembly_flags arg2)
 {
-  this->beneath->insn_history_from (arg0, arg1, arg2);
+  this->beneath ()->insn_history_from (arg0, arg1, arg2);
 }
 
 void
@@ -4115,9 +4135,9 @@ dummy_target::insn_history_from (ULONGEST arg0, int arg1, gdb_disassembly_flags
 void
 debug_target::insn_history_from (ULONGEST arg0, int arg1, gdb_disassembly_flags arg2)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history_from (...)\n", this->beneath->shortname ());
-  this->beneath->insn_history_from (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history_from (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history_from (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->insn_history_from (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history_from (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -4129,7 +4149,7 @@ debug_target::insn_history_from (ULONGEST arg0, int arg1, gdb_disassembly_flags
 void
 target_ops::insn_history_range (ULONGEST arg0, ULONGEST arg1, gdb_disassembly_flags arg2)
 {
-  this->beneath->insn_history_range (arg0, arg1, arg2);
+  this->beneath ()->insn_history_range (arg0, arg1, arg2);
 }
 
 void
@@ -4141,9 +4161,9 @@ dummy_target::insn_history_range (ULONGEST arg0, ULONGEST arg1, gdb_disassembly_
 void
 debug_target::insn_history_range (ULONGEST arg0, ULONGEST arg1, gdb_disassembly_flags arg2)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history_range (...)\n", this->beneath->shortname ());
-  this->beneath->insn_history_range (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history_range (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->insn_history_range (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->insn_history_range (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->insn_history_range (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_ULONGEST (arg1);
@@ -4155,7 +4175,7 @@ debug_target::insn_history_range (ULONGEST arg0, ULONGEST arg1, gdb_disassembly_
 void
 target_ops::call_history (int arg0, record_print_flags arg1)
 {
-  this->beneath->call_history (arg0, arg1);
+  this->beneath ()->call_history (arg0, arg1);
 }
 
 void
@@ -4167,9 +4187,9 @@ dummy_target::call_history (int arg0, record_print_flags arg1)
 void
 debug_target::call_history (int arg0, record_print_flags arg1)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history (...)\n", this->beneath->shortname ());
-  this->beneath->call_history (arg0, arg1);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->call_history (arg0, arg1);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history (", this->beneath ()->shortname ());
   target_debug_print_int (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_record_print_flags (arg1);
@@ -4179,7 +4199,7 @@ debug_target::call_history (int arg0, record_print_flags arg1)
 void
 target_ops::call_history_from (ULONGEST arg0, int arg1, record_print_flags arg2)
 {
-  this->beneath->call_history_from (arg0, arg1, arg2);
+  this->beneath ()->call_history_from (arg0, arg1, arg2);
 }
 
 void
@@ -4191,9 +4211,9 @@ dummy_target::call_history_from (ULONGEST arg0, int arg1, record_print_flags arg
 void
 debug_target::call_history_from (ULONGEST arg0, int arg1, record_print_flags arg2)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history_from (...)\n", this->beneath->shortname ());
-  this->beneath->call_history_from (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history_from (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history_from (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->call_history_from (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history_from (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_int (arg1);
@@ -4205,7 +4225,7 @@ debug_target::call_history_from (ULONGEST arg0, int arg1, record_print_flags arg
 void
 target_ops::call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_flags arg2)
 {
-  this->beneath->call_history_range (arg0, arg1, arg2);
+  this->beneath ()->call_history_range (arg0, arg1, arg2);
 }
 
 void
@@ -4217,9 +4237,9 @@ dummy_target::call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_fla
 void
 debug_target::call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_flags arg2)
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history_range (...)\n", this->beneath->shortname ());
-  this->beneath->call_history_range (arg0, arg1, arg2);
-  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history_range (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->call_history_range (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->call_history_range (arg0, arg1, arg2);
+  fprintf_unfiltered (gdb_stdlog, "<- %s->call_history_range (", this->beneath ()->shortname ());
   target_debug_print_ULONGEST (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
   target_debug_print_ULONGEST (arg1);
@@ -4228,27 +4248,27 @@ debug_target::call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_fla
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
-int
+bool
 target_ops::augmented_libraries_svr4_read ()
 {
-  return this->beneath->augmented_libraries_svr4_read ();
+  return this->beneath ()->augmented_libraries_svr4_read ();
 }
 
-int
+bool
 dummy_target::augmented_libraries_svr4_read ()
 {
-  return 0;
+  return false;
 }
 
-int
+bool
 debug_target::augmented_libraries_svr4_read ()
 {
-  int result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->augmented_libraries_svr4_read (...)\n", this->beneath->shortname ());
-  result = this->beneath->augmented_libraries_svr4_read ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->augmented_libraries_svr4_read (", this->beneath->shortname ());
+  bool result;
+  fprintf_unfiltered (gdb_stdlog, "-> %s->augmented_libraries_svr4_read (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->augmented_libraries_svr4_read ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->augmented_libraries_svr4_read (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
-  target_debug_print_int (result);
+  target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
   return result;
 }
@@ -4256,7 +4276,7 @@ debug_target::augmented_libraries_svr4_read ()
 const struct frame_unwind *
 target_ops::get_unwinder ()
 {
-  return this->beneath->get_unwinder ();
+  return this->beneath ()->get_unwinder ();
 }
 
 const struct frame_unwind *
@@ -4269,9 +4289,9 @@ const struct frame_unwind *
 debug_target::get_unwinder ()
 {
   const struct frame_unwind * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_unwinder (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_unwinder ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_unwinder (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_unwinder (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_unwinder ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_unwinder (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_struct_frame_unwind_p (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -4281,7 +4301,7 @@ debug_target::get_unwinder ()
 const struct frame_unwind *
 target_ops::get_tailcall_unwinder ()
 {
-  return this->beneath->get_tailcall_unwinder ();
+  return this->beneath ()->get_tailcall_unwinder ();
 }
 
 const struct frame_unwind *
@@ -4294,9 +4314,9 @@ const struct frame_unwind *
 debug_target::get_tailcall_unwinder ()
 {
   const struct frame_unwind * result;
-  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tailcall_unwinder (...)\n", this->beneath->shortname ());
-  result = this->beneath->get_tailcall_unwinder ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tailcall_unwinder (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->get_tailcall_unwinder (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->get_tailcall_unwinder ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->get_tailcall_unwinder (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_const_struct_frame_unwind_p (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -4306,7 +4326,7 @@ debug_target::get_tailcall_unwinder ()
 void
 target_ops::prepare_to_generate_core ()
 {
-  this->beneath->prepare_to_generate_core ();
+  this->beneath ()->prepare_to_generate_core ();
 }
 
 void
@@ -4317,16 +4337,16 @@ dummy_target::prepare_to_generate_core ()
 void
 debug_target::prepare_to_generate_core ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->prepare_to_generate_core (...)\n", this->beneath->shortname ());
-  this->beneath->prepare_to_generate_core ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->prepare_to_generate_core (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->prepare_to_generate_core (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->prepare_to_generate_core ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->prepare_to_generate_core (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
 void
 target_ops::done_generating_core ()
 {
-  this->beneath->done_generating_core ();
+  this->beneath ()->done_generating_core ();
 }
 
 void
@@ -4337,9 +4357,9 @@ dummy_target::done_generating_core ()
 void
 debug_target::done_generating_core ()
 {
-  fprintf_unfiltered (gdb_stdlog, "-> %s->done_generating_core (...)\n", this->beneath->shortname ());
-  this->beneath->done_generating_core ();
-  fprintf_unfiltered (gdb_stdlog, "<- %s->done_generating_core (", this->beneath->shortname ());
+  fprintf_unfiltered (gdb_stdlog, "-> %s->done_generating_core (...)\n", this->beneath ()->shortname ());
+  this->beneath ()->done_generating_core ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->done_generating_core (", this->beneath ()->shortname ());
   fputs_unfiltered (")\n", gdb_stdlog);
 }
 
This page took 0.106087 seconds and 4 git commands to generate.