diff --git a/gdb/corelow.c b/gdb/corelow.c
index c6175279da..379b20e753 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -950,9 +950,9 @@ core_target::xfer_partial (enum target_object object, const char *annex,
       return TARGET_XFER_E_IO;
 
     default:
-      return this->beneath->xfer_partial (object, annex, readbuf,
-					  writebuf, offset, len,
-					  xfered_len);
+      return this->beneath ()->xfer_partial (object, annex, readbuf,
+					     writebuf, offset, len,
+					     xfered_len);
     }
 }
 
@@ -987,7 +987,7 @@ core_target::read_description ()
 	return result;
     }
 
-  return this->beneath->read_description ();
+  return this->beneath ()->read_description ();
 }
 
 const char *
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 8feab6f0ca..920e15edf4 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -1369,7 +1369,7 @@ thread_db_target::update_thread_list ()
     }
 
   /* Give the beneath target a chance to do extra processing.  */
-  this->beneath->update_thread_list ();
+  this->beneath ()->update_thread_list ();
 }
 
 const char *
diff --git a/gdb/make-target-delegates b/gdb/make-target-delegates
index b8cf63cd0b..28b49a4e8f 100755
--- a/gdb/make-target-delegates
+++ b/gdb/make-target-delegates
@@ -225,7 +225,7 @@ sub write_delegator($$@) {
     if ($return_type ne 'void') {
 	print "return ";
     }
-    print "this->beneath->" . $name . " (";
+    print "this->beneath ()->" . $name . " (";
     print join (', ', @names);
     print ");\n";
     print "}\n\n";
@@ -309,19 +309,19 @@ sub write_debugmethod($$$@) {
 	print "  $return_type result;\n";
     }
 
-    print "  fprintf_unfiltered (gdb_stdlog, \"-> %s->$name (...)\\n\", this->beneath->shortname ());\n";
+    print "  fprintf_unfiltered (gdb_stdlog, \"-> %s->$name (...)\\n\", this->beneath ()->shortname ());\n";
 
     # Delegate to the beneath target.
     print "  ";
     if ($return_type ne 'void') {
 	print "result = ";
     }
-    print "this->beneath->" . $name . " (";
+    print "this->beneath ()->" . $name . " (";
     print join (', ', @names);
     print ");\n";
 
     # Now print the arguments.
-    print "  fprintf_unfiltered (gdb_stdlog, \"<- %s->$name (\", this->beneath->shortname ());\n";
+    print "  fprintf_unfiltered (gdb_stdlog, \"<- %s->$name (\", this->beneath ()->shortname ());\n";
     for my $i (0 .. $#argtypes) {
 	if ($i > 0) {
 	    print "  fputs_unfiltered (\", \", gdb_stdlog);\n"
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 4249b1da1f..218f750f67 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -423,7 +423,7 @@ void
 record_btrace_target::disconnect (const char *args,
 				  int from_tty)
 {
-  struct target_ops *beneath = this->beneath;
+  struct target_ops *beneath = this->beneath ();
 
   /* Do not stop recording, just clean up GDB side.  */
   unpush_target (this);
@@ -462,7 +462,7 @@ record_btrace_target::async (int enable)
   else
     clear_async_event_handler (record_btrace_async_inferior_event_handler);
 
-  this->beneath->async (enable);
+  this->beneath ()->async (enable);
 }
 
 /* Adjusts the size and returns a human readable size suffix.  */
@@ -1463,8 +1463,8 @@ record_btrace_target::xfer_partial (enum target_object object,
     }
 
   /* Forward the request.  */
-  return this->beneath->xfer_partial (object, annex, readbuf, writebuf,
-				      offset, len, xfered_len);
+  return this->beneath ()->xfer_partial (object, annex, readbuf, writebuf,
+					 offset, len, xfered_len);
 }
 
 /* The insert_breakpoint method of target record-btrace.  */
@@ -1484,7 +1484,7 @@ record_btrace_target::insert_breakpoint (struct gdbarch *gdbarch,
   ret = 0;
   TRY
     {
-      ret = this->beneath->insert_breakpoint (gdbarch, bp_tgt);
+      ret = this->beneath ()->insert_breakpoint (gdbarch, bp_tgt);
     }
   CATCH (except, RETURN_MASK_ALL)
     {
@@ -1515,7 +1515,7 @@ record_btrace_target::remove_breakpoint (struct gdbarch *gdbarch,
   ret = 0;
   TRY
     {
-      ret = this->beneath->remove_breakpoint (gdbarch, bp_tgt, reason);
+      ret = this->beneath ()->remove_breakpoint (gdbarch, bp_tgt, reason);
     }
   CATCH (except, RETURN_MASK_ALL)
     {
@@ -1561,7 +1561,7 @@ record_btrace_target::fetch_registers (struct regcache *regcache, int regno)
       regcache_raw_supply (regcache, regno, &insn->pc);
     }
   else
-    this->beneath->fetch_registers (regcache, regno);
+    this->beneath ()->fetch_registers (regcache, regno);
 }
 
 /* The store_registers method of target record-btrace.  */
@@ -1577,7 +1577,7 @@ record_btrace_target::store_registers (struct regcache *regcache, int regno)
 
   gdb_assert (may_write_registers != 0);
 
-  this->beneath->store_registers (regcache, regno);
+  this->beneath ()->store_registers (regcache, regno);
 }
 
 /* The prepare_to_store method of target record-btrace.  */
@@ -1589,7 +1589,7 @@ record_btrace_target::prepare_to_store (struct regcache *regcache)
       && record_is_replaying (regcache_get_ptid (regcache)))
     return;
 
-  this->beneath->prepare_to_store (regcache);
+  this->beneath ()->prepare_to_store (regcache);
 }
 
 /* The branch trace frame cache.  */
@@ -2161,7 +2161,7 @@ record_btrace_target::resume (ptid_t ptid, int step, enum gdb_signal signal)
   if ((::execution_direction != EXEC_REVERSE)
       && !record_is_replaying (minus_one_ptid))
     {
-      this->beneath->resume (ptid, step, signal);
+      this->beneath ()->resume (ptid, step, signal);
       return;
     }
 
@@ -2216,7 +2216,7 @@ record_btrace_target::commit_resume ()
 {
   if ((::execution_direction != EXEC_REVERSE)
       && !record_is_replaying (minus_one_ptid))
-    beneath->commit_resume ();
+    beneath ()->commit_resume ();
 }
 
 /* Cancel resuming TP.  */
@@ -2561,7 +2561,7 @@ record_btrace_target::wait (ptid_t ptid, struct target_waitstatus *status,
   if ((::execution_direction != EXEC_REVERSE)
       && !record_is_replaying (minus_one_ptid))
     {
-      return this->beneath->wait (ptid, status, options);
+      return this->beneath ()->wait (ptid, status, options);
     }
 
   /* Keep a work list of moving threads.  */
@@ -2690,7 +2690,7 @@ record_btrace_target::stop (ptid_t ptid)
   if ((::execution_direction != EXEC_REVERSE)
       && !record_is_replaying (minus_one_ptid))
     {
-      this->beneath->stop (ptid);
+      this->beneath ()->stop (ptid);
     }
   else
     {
@@ -2725,7 +2725,7 @@ record_btrace_target::stopped_by_sw_breakpoint ()
       return tp->btrace.stop_reason == TARGET_STOPPED_BY_SW_BREAKPOINT;
     }
 
-  return this->beneath->stopped_by_sw_breakpoint ();
+  return this->beneath ()->stopped_by_sw_breakpoint ();
 }
 
 /* The supports_stopped_by_sw_breakpoint method of target
@@ -2737,7 +2737,7 @@ record_btrace_target::supports_stopped_by_sw_breakpoint ()
   if (record_is_replaying (minus_one_ptid))
     return true;
 
-  return this->beneath->supports_stopped_by_sw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_sw_breakpoint ();
 }
 
 /* The stopped_by_sw_breakpoint method of target record-btrace.  */
@@ -2752,7 +2752,7 @@ record_btrace_target::stopped_by_hw_breakpoint ()
       return tp->btrace.stop_reason == TARGET_STOPPED_BY_HW_BREAKPOINT;
     }
 
-  return this->beneath->stopped_by_hw_breakpoint ();
+  return this->beneath ()->stopped_by_hw_breakpoint ();
 }
 
 /* The supports_stopped_by_hw_breakpoint method of target
@@ -2764,7 +2764,7 @@ record_btrace_target::supports_stopped_by_hw_breakpoint ()
   if (record_is_replaying (minus_one_ptid))
     return true;
 
-  return this->beneath->supports_stopped_by_hw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_hw_breakpoint ();
 }
 
 /* The update_thread_list method of target record-btrace.  */
@@ -2777,7 +2777,7 @@ record_btrace_target::update_thread_list ()
     return;
 
   /* Forward the request.  */
-  this->beneath->update_thread_list ();
+  this->beneath ()->update_thread_list ();
 }
 
 /* The thread_alive method of target record-btrace.  */
@@ -2790,7 +2790,7 @@ record_btrace_target::thread_alive (ptid_t ptid)
     return find_thread_ptid (ptid) != NULL;
 
   /* Forward the request.  */
-  return this->beneath->thread_alive (ptid);
+  return this->beneath ()->thread_alive (ptid);
 }
 
 /* Set the replay branch trace instruction iterator.  If IT is NULL, replay
diff --git a/gdb/record-full.c b/gdb/record-full.c
index 79f5c0fa0a..243b9920ba 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -1040,7 +1040,7 @@ record_full_base_target::async (int enable)
   else
     clear_async_event_handler (record_full_async_inferior_event_token);
 
-  beneath->async (enable);
+  beneath ()->async (enable);
 }
 
 static int record_full_resume_step = 0;
@@ -1105,7 +1105,7 @@ record_full_target::resume (ptid_t ptid, int step, enum gdb_signal signal)
       /* Make sure the target beneath reports all signals.  */
       target_pass_signals (0, NULL);
 
-      this->beneath->resume (ptid, step, signal);
+      this->beneath ()->resume (ptid, step, signal);
     }
 
   /* We are about to start executing the inferior (or simulate it),
@@ -1120,7 +1120,7 @@ void
 record_full_target::commit_resume ()
 {
   if (!RECORD_FULL_IS_REPLAY)
-    beneath->commit_resume ();
+    beneath ()->commit_resume ();
 }
 
 static int record_full_get_sig = 0;
@@ -1202,7 +1202,7 @@ record_full_wait_1 (struct target_ops *ops,
       if (record_full_resume_step)
 	{
 	  /* This is a single step.  */
-	  return ops->beneath->wait (ptid, status, options);
+	  return ops->beneath ()->wait (ptid, status, options);
 	}
       else
 	{
@@ -1215,7 +1215,7 @@ record_full_wait_1 (struct target_ops *ops,
 	    {
 	      struct thread_info *tp;
 
-	      ret = ops->beneath->wait (ptid, status, options);
+	      ret = ops->beneath ()->wait (ptid, status, options);
 	      if (status->kind == TARGET_WAITKIND_IGNORE)
 		{
 		  if (record_debug)
@@ -1291,8 +1291,8 @@ record_full_wait_1 (struct target_ops *ops,
 					    "Process record: record_full_wait "
 					    "issuing one more step in the "
 					    "target beneath\n");
-		      ops->beneath->resume (ptid, step, GDB_SIGNAL_0);
-		      ops->beneath->commit_resume ();
+		      ops->beneath ()->resume (ptid, step, GDB_SIGNAL_0);
+		      ops->beneath ()->commit_resume ();
 		      continue;
 		    }
 		}
@@ -1479,7 +1479,7 @@ record_full_base_target::stopped_by_watchpoint ()
   if (RECORD_FULL_IS_REPLAY)
     return record_full_stop_reason == TARGET_STOPPED_BY_WATCHPOINT;
   else
-    return beneath->stopped_by_watchpoint ();
+    return beneath ()->stopped_by_watchpoint ();
 }
 
 bool
@@ -1488,7 +1488,7 @@ record_full_base_target::stopped_data_address (CORE_ADDR *addr_p)
   if (RECORD_FULL_IS_REPLAY)
     return false;
   else
-    return this->beneath->stopped_data_address (addr_p);
+    return this->beneath ()->stopped_data_address (addr_p);
 }
 
 /* The stopped_by_sw_breakpoint method of target record-full.  */
@@ -1623,7 +1623,7 @@ record_full_target::store_registers (struct regcache *regcache, int regno)
 
       record_full_registers_change (regcache, regno);
     }
-  this->beneath->store_registers (regcache, regno);
+  this->beneath ()->store_registers (regcache, regno);
 }
 
 /* "xfer_partial" method.  Behavior is conditional on
@@ -1688,8 +1688,8 @@ record_full_target::xfer_partial (enum target_object object,
 	record_full_insn_num++;
     }
 
-  return this->beneath->xfer_partial (object, annex, readbuf, writebuf, offset,
-				      len, xfered_len);
+  return this->beneath ()->xfer_partial (object, annex, readbuf, writebuf,
+					 offset, len, xfered_len);
 }
 
 /* This structure represents a breakpoint inserted while the record
@@ -1770,7 +1770,7 @@ record_full_target::insert_breakpoint (struct gdbarch *gdbarch,
       scoped_restore restore_operation_disable
 	= record_full_gdb_operation_disable_set ();
 
-      int ret = this->beneath->insert_breakpoint (gdbarch, bp_tgt);
+      int ret = this->beneath ()->insert_breakpoint (gdbarch, bp_tgt);
       if (ret != 0)
 	return ret;
 
@@ -1824,8 +1824,8 @@ record_full_target::remove_breakpoint (struct gdbarch *gdbarch,
 	      scoped_restore restore_operation_disable
 		= record_full_gdb_operation_disable_set ();
 
-	      int ret = this->beneath->remove_breakpoint (gdbarch, bp_tgt,
-							  reason);
+	      int ret = this->beneath ()->remove_breakpoint (gdbarch, bp_tgt,
+							     reason);
 	      if (ret != 0)
 		return ret;
 	    }
@@ -2204,10 +2204,10 @@ record_full_core_target::xfer_partial (enum target_object object,
 		  else
 		    {
 		      if (!entry)
-			return this->beneath->xfer_partial (object, annex,
-							    readbuf, writebuf,
-							    offset, len,
-							    xfered_len);
+			return this->beneath ()->xfer_partial (object, annex,
+							       readbuf, writebuf,
+							       offset, len,
+							       xfered_len);
 
 		      memcpy (readbuf, entry->buf + sec_offset,
 			      (size_t) len);
@@ -2224,9 +2224,9 @@ record_full_core_target::xfer_partial (enum target_object object,
 	error (_("You can't do that without a process to debug."));
     }
 
-  return this->beneath->xfer_partial (object, annex,
-				      readbuf, writebuf, offset, len,
-				      xfered_len);
+  return this->beneath ()->xfer_partial (object, annex,
+					 readbuf, writebuf, offset, len,
+					 xfered_len);
 }
 
 /* "insert_breakpoint" method for prec over corefile.  */
diff --git a/gdb/remote.c b/gdb/remote.c
index bc0c8e1292..86f0966612 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -11795,7 +11795,7 @@ remote_target::read_description ()
   /* Do not try this during initial connection, when we do not know
      whether there is a running but stopped thread.  */
   if (!target_has_execution || ptid_equal (inferior_ptid, null_ptid))
-    return beneath->read_description ();
+    return beneath ()->read_description ();
 
   if (!VEC_empty (remote_g_packet_guess_s, data->guesses))
     {
@@ -11814,7 +11814,7 @@ remote_target::read_description ()
 	 an architecture, but it's too tricky to do safely.  */
     }
 
-  return beneath->read_description ();
+  return beneath ()->read_description ();
 }
 
 /* Remote file transfer support.  This is host-initiated I/O, not
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
index da74347122..319a9bb46b 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
@@ -343,7 +343,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
@@ -354,9 +354,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);
 }
@@ -364,7 +364,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
@@ -375,9 +375,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);
@@ -387,7 +387,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
@@ -399,9 +399,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);
@@ -411,7 +411,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
@@ -423,9 +423,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);
@@ -437,7 +437,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
@@ -448,16 +448,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
@@ -470,9 +470,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);
@@ -487,7 +487,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
@@ -498,9 +498,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);
@@ -510,7 +510,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
@@ -522,9 +522,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);
@@ -534,7 +534,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
@@ -546,9 +546,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);
 }
@@ -556,7 +556,7 @@ debug_target::prepare_to_store (struct regcache *arg0)
 void
 target_ops::files_info ()
 {
-  this->beneath->files_info ();
+  this->beneath ()->files_info ();
 }
 
 void
@@ -567,16 +567,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
@@ -589,9 +589,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);
@@ -604,7 +604,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
@@ -617,9 +617,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);
@@ -634,7 +634,7 @@ debug_target::remove_breakpoint (struct gdbarch *arg0, struct bp_target_info *ar
 bool
 target_ops::stopped_by_sw_breakpoint ()
 {
-  return this->beneath->stopped_by_sw_breakpoint ();
+  return this->beneath ()->stopped_by_sw_breakpoint ();
 }
 
 bool
@@ -647,9 +647,9 @@ bool
 debug_target::stopped_by_sw_breakpoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -659,7 +659,7 @@ debug_target::stopped_by_sw_breakpoint ()
 bool
 target_ops::supports_stopped_by_sw_breakpoint ()
 {
-  return this->beneath->supports_stopped_by_sw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_sw_breakpoint ();
 }
 
 bool
@@ -672,9 +672,9 @@ bool
 debug_target::supports_stopped_by_sw_breakpoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -684,7 +684,7 @@ debug_target::supports_stopped_by_sw_breakpoint ()
 bool
 target_ops::stopped_by_hw_breakpoint ()
 {
-  return this->beneath->stopped_by_hw_breakpoint ();
+  return this->beneath ()->stopped_by_hw_breakpoint ();
 }
 
 bool
@@ -697,9 +697,9 @@ bool
 debug_target::stopped_by_hw_breakpoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -709,7 +709,7 @@ debug_target::stopped_by_hw_breakpoint ()
 bool
 target_ops::supports_stopped_by_hw_breakpoint ()
 {
-  return this->beneath->supports_stopped_by_hw_breakpoint ();
+  return this->beneath ()->supports_stopped_by_hw_breakpoint ();
 }
 
 bool
@@ -722,9 +722,9 @@ bool
 debug_target::supports_stopped_by_hw_breakpoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -734,7 +734,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
@@ -747,9 +747,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);
@@ -764,7 +764,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
@@ -777,9 +777,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);
@@ -789,7 +789,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
@@ -802,9 +802,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);
@@ -817,7 +817,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
@@ -830,9 +830,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);
@@ -845,7 +845,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
@@ -858,9 +858,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);
@@ -877,7 +877,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
@@ -890,9 +890,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);
@@ -909,7 +909,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
@@ -922,9 +922,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);
@@ -939,7 +939,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
@@ -952,9 +952,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);
@@ -969,7 +969,7 @@ debug_target::remove_mask_watchpoint (CORE_ADDR arg0, CORE_ADDR arg1, enum targe
 bool
 target_ops::stopped_by_watchpoint ()
 {
-  return this->beneath->stopped_by_watchpoint ();
+  return this->beneath ()->stopped_by_watchpoint ();
 }
 
 bool
@@ -982,9 +982,9 @@ bool
 debug_target::stopped_by_watchpoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -994,7 +994,7 @@ debug_target::stopped_by_watchpoint ()
 int
 target_ops::have_steppable_watchpoint ()
 {
-  return this->beneath->have_steppable_watchpoint ();
+  return this->beneath ()->have_steppable_watchpoint ();
 }
 
 int
@@ -1007,9 +1007,9 @@ 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 ());
+  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_int (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -1019,7 +1019,7 @@ debug_target::have_steppable_watchpoint ()
 bool
 target_ops::have_continuable_watchpoint ()
 {
-  return this->beneath->have_continuable_watchpoint ();
+  return this->beneath ()->have_continuable_watchpoint ();
 }
 
 bool
@@ -1032,9 +1032,9 @@ bool
 debug_target::have_continuable_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_continuable_watchpoint (...)\n", this->beneath ()->shortname ());
+  result = this->beneath ()->have_continuable_watchpoint ();
+  fprintf_unfiltered (gdb_stdlog, "<- %s->have_continuable_watchpoint (", this->beneath ()->shortname ());
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -1044,7 +1044,7 @@ debug_target::have_continuable_watchpoint ()
 bool
 target_ops::stopped_data_address (CORE_ADDR *arg0)
 {
-  return this->beneath->stopped_data_address (arg0);
+  return this->beneath ()->stopped_data_address (arg0);
 }
 
 bool
@@ -1057,9 +1057,9 @@ bool
 debug_target::stopped_data_address (CORE_ADDR *arg0)
 {
   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 ());
+  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_bool (result);
@@ -1070,7 +1070,7 @@ debug_target::stopped_data_address (CORE_ADDR *arg0)
 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);
 }
 
 bool
@@ -1083,9 +1083,9 @@ bool
 debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
 {
   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 ());
+  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);
@@ -1100,7 +1100,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
@@ -1113,9 +1113,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);
@@ -1128,7 +1128,7 @@ debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
 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);
 }
 
 bool
@@ -1141,9 +1141,9 @@ bool
 debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
 {
   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 ());
+  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);
@@ -1160,7 +1160,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
@@ -1173,9 +1173,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);
@@ -1188,7 +1188,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
@@ -1201,9 +1201,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);
@@ -1213,7 +1213,7 @@ 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
@@ -1226,9 +1226,9 @@ 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);
@@ -1238,7 +1238,7 @@ debug_target::supports_terminal_ours ()
 void
 target_ops::terminal_init ()
 {
-  this->beneath->terminal_init ();
+  this->beneath ()->terminal_init ();
 }
 
 void
@@ -1249,16 +1249,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
@@ -1269,16 +1269,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
@@ -1289,16 +1289,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
@@ -1309,16 +1309,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
@@ -1329,16 +1329,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
@@ -1350,9 +1350,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);
@@ -1362,7 +1362,7 @@ debug_target::terminal_info (const char *arg0, int arg1)
 void
 target_ops::kill ()
 {
-  this->beneath->kill ();
+  this->beneath ()->kill ();
 }
 
 void
@@ -1374,16 +1374,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
@@ -1395,9 +1395,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);
@@ -1407,7 +1407,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
@@ -1418,9 +1418,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);
 }
@@ -1428,7 +1428,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
@@ -1441,9 +1441,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);
@@ -1454,7 +1454,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
@@ -1467,9 +1467,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);
@@ -1480,7 +1480,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
@@ -1493,9 +1493,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);
@@ -1506,7 +1506,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
@@ -1519,9 +1519,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);
@@ -1532,7 +1532,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
@@ -1545,9 +1545,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);
@@ -1560,7 +1560,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
@@ -1573,9 +1573,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);
@@ -1586,7 +1586,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
@@ -1599,9 +1599,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);
@@ -1612,7 +1612,7 @@ debug_target::remove_exec_catchpoint (int arg0)
 void
 target_ops::follow_exec (struct inferior *arg0, char *arg1)
 {
-  this->beneath->follow_exec (arg0, arg1);
+  this->beneath ()->follow_exec (arg0, arg1);
 }
 
 void
@@ -1623,9 +1623,9 @@ dummy_target::follow_exec (struct inferior *arg0, char *arg1)
 void
 debug_target::follow_exec (struct inferior *arg0, 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);
@@ -1635,7 +1635,7 @@ debug_target::follow_exec (struct inferior *arg0, char *arg1)
 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
@@ -1648,9 +1648,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);
@@ -1667,7 +1667,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
@@ -1679,16 +1679,16 @@ 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)
 {
-  this->beneath->pass_signals (arg0, arg1);
+  this->beneath ()->pass_signals (arg0, arg1);
 }
 
 void
@@ -1699,9 +1699,9 @@ dummy_target::pass_signals (int arg0, unsigned char * arg1)
 void
 debug_target::pass_signals (int arg0, unsigned char * arg1)
 {
-  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 ());
+  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);
@@ -1711,7 +1711,7 @@ debug_target::pass_signals (int arg0, unsigned char * arg1)
 void
 target_ops::program_signals (int arg0, unsigned char * arg1)
 {
-  this->beneath->program_signals (arg0, arg1);
+  this->beneath ()->program_signals (arg0, arg1);
 }
 
 void
@@ -1722,9 +1722,9 @@ dummy_target::program_signals (int arg0, unsigned char * arg1)
 void
 debug_target::program_signals (int arg0, unsigned char * arg1)
 {
-  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 ());
+  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);
@@ -1734,7 +1734,7 @@ debug_target::program_signals (int arg0, unsigned char * arg1)
 bool
 target_ops::thread_alive (ptid_t arg0)
 {
-  return this->beneath->thread_alive (arg0);
+  return this->beneath ()->thread_alive (arg0);
 }
 
 bool
@@ -1747,9 +1747,9 @@ bool
 debug_target::thread_alive (ptid_t arg0)
 {
   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 ());
+  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_bool (result);
@@ -1760,7 +1760,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
@@ -1771,16 +1771,16 @@ 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 *
 target_ops::pid_to_str (ptid_t arg0)
 {
-  return this->beneath->pid_to_str (arg0);
+  return this->beneath ()->pid_to_str (arg0);
 }
 
 const char *
@@ -1793,9 +1793,9 @@ const char *
 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 ());
+  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);
@@ -1806,7 +1806,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 *
@@ -1819,9 +1819,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);
@@ -1832,7 +1832,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 *
@@ -1845,9 +1845,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);
@@ -1858,7 +1858,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 *
@@ -1871,9 +1871,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);
@@ -1888,7 +1888,7 @@ debug_target::thread_handle_to_thread_info (const gdb_byte *arg0, int arg1, infe
 void
 target_ops::stop (ptid_t arg0)
 {
-  this->beneath->stop (arg0);
+  this->beneath ()->stop (arg0);
 }
 
 void
@@ -1899,9 +1899,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);
 }
@@ -1909,7 +1909,7 @@ debug_target::stop (ptid_t arg0)
 void
 target_ops::interrupt ()
 {
-  this->beneath->interrupt ();
+  this->beneath ()->interrupt ();
 }
 
 void
@@ -1920,16 +1920,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
@@ -1941,16 +1941,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
@@ -1962,9 +1962,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);
@@ -1974,7 +1974,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 *
@@ -1987,9 +1987,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);
@@ -2000,7 +2000,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
@@ -2011,9 +2011,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);
 }
@@ -2021,7 +2021,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 *
@@ -2034,9 +2034,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);
@@ -2046,7 +2046,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
@@ -2059,9 +2059,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);
@@ -2071,7 +2071,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
@@ -2084,9 +2084,9 @@ 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);
@@ -2096,7 +2096,7 @@ debug_target::attach_no_wait ()
 bool
 target_ops::can_async_p ()
 {
-  return this->beneath->can_async_p ();
+  return this->beneath ()->can_async_p ();
 }
 
 bool
@@ -2109,9 +2109,9 @@ bool
 debug_target::can_async_p ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2121,7 +2121,7 @@ debug_target::can_async_p ()
 bool
 target_ops::is_async_p ()
 {
-  return this->beneath->is_async_p ();
+  return this->beneath ()->is_async_p ();
 }
 
 bool
@@ -2134,9 +2134,9 @@ bool
 debug_target::is_async_p ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2146,7 +2146,7 @@ debug_target::is_async_p ()
 void
 target_ops::async (int arg0)
 {
-  this->beneath->async (arg0);
+  this->beneath ()->async (arg0);
 }
 
 void
@@ -2158,9 +2158,9 @@ 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);
 }
@@ -2168,7 +2168,7 @@ debug_target::async (int arg0)
 void
 target_ops::thread_events (int arg0)
 {
-  this->beneath->thread_events (arg0);
+  this->beneath ()->thread_events (arg0);
 }
 
 void
@@ -2179,9 +2179,9 @@ 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);
 }
@@ -2189,7 +2189,7 @@ debug_target::thread_events (int arg0)
 bool
 target_ops::supports_non_stop ()
 {
-  return this->beneath->supports_non_stop ();
+  return this->beneath ()->supports_non_stop ();
 }
 
 bool
@@ -2202,9 +2202,9 @@ bool
 debug_target::supports_non_stop ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2214,7 +2214,7 @@ debug_target::supports_non_stop ()
 bool
 target_ops::always_non_stop_p ()
 {
-  return this->beneath->always_non_stop_p ();
+  return this->beneath ()->always_non_stop_p ();
 }
 
 bool
@@ -2227,9 +2227,9 @@ bool
 debug_target::always_non_stop_p ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2239,7 +2239,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
@@ -2252,9 +2252,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);
@@ -2267,7 +2267,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 *
@@ -2280,9 +2280,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);
@@ -2295,7 +2295,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 *
@@ -2308,9 +2308,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);
@@ -2323,7 +2323,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
@@ -2335,9 +2335,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);
@@ -2347,7 +2347,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
@@ -2360,9 +2360,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);
@@ -2377,7 +2377,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
@@ -2390,9 +2390,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);
@@ -2415,7 +2415,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
@@ -2428,9 +2428,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);
@@ -2440,7 +2440,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>
@@ -2453,9 +2453,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);
@@ -2465,7 +2465,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
@@ -2477,9 +2477,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);
@@ -2489,7 +2489,7 @@ debug_target::flash_erase (ULONGEST arg0, LONGEST arg1)
 void
 target_ops::flash_done ()
 {
-  this->beneath->flash_done ();
+  this->beneath ()->flash_done ();
 }
 
 void
@@ -2501,16 +2501,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 *
@@ -2523,9 +2523,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);
@@ -2535,7 +2535,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
@@ -2548,9 +2548,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);
@@ -2563,7 +2563,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
@@ -2576,9 +2576,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);
@@ -2595,7 +2595,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
@@ -2608,9 +2608,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);
@@ -2629,7 +2629,7 @@ debug_target::search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2
 bool
 target_ops::can_execute_reverse ()
 {
-  return this->beneath->can_execute_reverse ();
+  return this->beneath ()->can_execute_reverse ();
 }
 
 bool
@@ -2642,9 +2642,9 @@ bool
 debug_target::can_execute_reverse ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2654,7 +2654,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
@@ -2667,9 +2667,9 @@ 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);
@@ -2679,7 +2679,7 @@ debug_target::execution_direction ()
 bool
 target_ops::supports_multi_process ()
 {
-  return this->beneath->supports_multi_process ();
+  return this->beneath ()->supports_multi_process ();
 }
 
 bool
@@ -2692,9 +2692,9 @@ bool
 debug_target::supports_multi_process ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2704,7 +2704,7 @@ debug_target::supports_multi_process ()
 bool
 target_ops::supports_enable_disable_tracepoint ()
 {
-  return this->beneath->supports_enable_disable_tracepoint ();
+  return this->beneath ()->supports_enable_disable_tracepoint ();
 }
 
 bool
@@ -2717,9 +2717,9 @@ bool
 debug_target::supports_enable_disable_tracepoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2729,7 +2729,7 @@ debug_target::supports_enable_disable_tracepoint ()
 bool
 target_ops::supports_disable_randomization ()
 {
-  return this->beneath->supports_disable_randomization ();
+  return this->beneath ()->supports_disable_randomization ();
 }
 
 bool
@@ -2742,9 +2742,9 @@ bool
 debug_target::supports_disable_randomization ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2754,7 +2754,7 @@ debug_target::supports_disable_randomization ()
 bool
 target_ops::supports_string_tracing ()
 {
-  return this->beneath->supports_string_tracing ();
+  return this->beneath ()->supports_string_tracing ();
 }
 
 bool
@@ -2767,9 +2767,9 @@ bool
 debug_target::supports_string_tracing ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2779,7 +2779,7 @@ debug_target::supports_string_tracing ()
 bool
 target_ops::supports_evaluation_of_breakpoint_conditions ()
 {
-  return this->beneath->supports_evaluation_of_breakpoint_conditions ();
+  return this->beneath ()->supports_evaluation_of_breakpoint_conditions ();
 }
 
 bool
@@ -2792,9 +2792,9 @@ bool
 debug_target::supports_evaluation_of_breakpoint_conditions ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2804,7 +2804,7 @@ debug_target::supports_evaluation_of_breakpoint_conditions ()
 bool
 target_ops::can_run_breakpoint_commands ()
 {
-  return this->beneath->can_run_breakpoint_commands ();
+  return this->beneath ()->can_run_breakpoint_commands ();
 }
 
 bool
@@ -2817,9 +2817,9 @@ bool
 debug_target::can_run_breakpoint_commands ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2829,7 +2829,7 @@ 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 *
@@ -2842,9 +2842,9 @@ 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);
@@ -2855,7 +2855,7 @@ 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 *
@@ -2868,9 +2868,9 @@ 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);
@@ -2881,7 +2881,7 @@ debug_target::thread_address_space (ptid_t arg0)
 bool
 target_ops::filesystem_is_local ()
 {
-  return this->beneath->filesystem_is_local ();
+  return this->beneath ()->filesystem_is_local ();
 }
 
 bool
@@ -2894,9 +2894,9 @@ bool
 debug_target::filesystem_is_local ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2906,7 +2906,7 @@ debug_target::filesystem_is_local ()
 void
 target_ops::trace_init ()
 {
-  this->beneath->trace_init ();
+  this->beneath ()->trace_init ();
 }
 
 void
@@ -2918,16 +2918,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
@@ -2939,9 +2939,9 @@ 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);
 }
@@ -2949,7 +2949,7 @@ debug_target::download_tracepoint (struct bp_location *arg0)
 bool
 target_ops::can_download_tracepoint ()
 {
-  return this->beneath->can_download_tracepoint ();
+  return this->beneath ()->can_download_tracepoint ();
 }
 
 bool
@@ -2962,9 +2962,9 @@ bool
 debug_target::can_download_tracepoint ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -2974,7 +2974,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
@@ -2986,9 +2986,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);
 }
@@ -2996,7 +2996,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
@@ -3008,9 +3008,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);
 }
@@ -3018,7 +3018,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
@@ -3030,9 +3030,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);
 }
@@ -3040,7 +3040,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
@@ -3052,16 +3052,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
@@ -3073,16 +3073,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
@@ -3095,9 +3095,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);
@@ -3108,7 +3108,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
@@ -3120,9 +3120,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);
@@ -3132,7 +3132,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
@@ -3144,16 +3144,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
@@ -3166,9 +3166,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);
@@ -3187,7 +3187,7 @@ debug_target::trace_find (enum trace_find_type arg0, int arg1, CORE_ADDR arg2, C
 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);
 }
 
 bool
@@ -3200,9 +3200,9 @@ bool
 debug_target::get_trace_state_variable_value (int arg0, LONGEST *arg1)
 {
   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 ());
+  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);
@@ -3215,7 +3215,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
@@ -3228,9 +3228,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);
@@ -3241,7 +3241,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
@@ -3254,9 +3254,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);
@@ -3267,7 +3267,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
@@ -3280,9 +3280,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);
@@ -3293,7 +3293,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
@@ -3306,9 +3306,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);
@@ -3323,7 +3323,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
@@ -3336,9 +3336,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);
@@ -3348,7 +3348,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
@@ -3359,9 +3359,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);
 }
@@ -3369,7 +3369,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
@@ -3380,9 +3380,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);
 }
@@ -3390,7 +3390,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
@@ -3401,9 +3401,9 @@ 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);
 }
@@ -3411,7 +3411,7 @@ debug_target::set_trace_buffer_size (LONGEST arg0)
 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);
 }
 
 bool
@@ -3424,9 +3424,9 @@ bool
 debug_target::set_trace_notes (const char *arg0, const char *arg1, const char *arg2)
 {
   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 ());
+  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);
@@ -3441,7 +3441,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
@@ -3454,9 +3454,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);
@@ -3467,7 +3467,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
@@ -3480,9 +3480,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);
@@ -3497,7 +3497,7 @@ debug_target::verify_memory (const gdb_byte *arg0, CORE_ADDR arg1, ULONGEST arg2
 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);
 }
 
 bool
@@ -3510,9 +3510,9 @@ bool
 debug_target::get_tib_address (ptid_t arg0, CORE_ADDR *arg1)
 {
   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 ());
+  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);
@@ -3525,7 +3525,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
@@ -3536,16 +3536,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
@@ -3558,9 +3558,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);
@@ -3573,7 +3573,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>
@@ -3586,9 +3586,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);
@@ -3599,7 +3599,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
@@ -3612,9 +3612,9 @@ 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);
@@ -3624,7 +3624,7 @@ debug_target::traceframe_info ()
 bool
 target_ops::use_agent (bool arg0)
 {
-  return this->beneath->use_agent (arg0);
+  return this->beneath ()->use_agent (arg0);
 }
 
 bool
@@ -3637,9 +3637,9 @@ bool
 debug_target::use_agent (bool 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 ());
+  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_bool (result);
@@ -3650,7 +3650,7 @@ debug_target::use_agent (bool arg0)
 bool
 target_ops::can_use_agent ()
 {
-  return this->beneath->can_use_agent ();
+  return this->beneath ()->can_use_agent ();
 }
 
 bool
@@ -3663,9 +3663,9 @@ bool
 debug_target::can_use_agent ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -3675,7 +3675,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 *
@@ -3688,9 +3688,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);
@@ -3703,7 +3703,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
@@ -3715,9 +3715,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);
 }
@@ -3725,7 +3725,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
@@ -3737,9 +3737,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);
 }
@@ -3747,7 +3747,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
@@ -3760,9 +3760,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);
@@ -3777,7 +3777,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 *
@@ -3790,9 +3790,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);
@@ -3803,7 +3803,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
@@ -3816,9 +3816,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);
@@ -3829,7 +3829,7 @@ debug_target::record_method (ptid_t arg0)
 void
 target_ops::stop_recording ()
 {
-  this->beneath->stop_recording ();
+  this->beneath ()->stop_recording ();
 }
 
 void
@@ -3840,16 +3840,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
@@ -3860,16 +3860,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
@@ -3881,9 +3881,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);
 }
@@ -3891,7 +3891,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
@@ -3904,9 +3904,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);
@@ -3916,7 +3916,7 @@ debug_target::supports_delete_record ()
 void
 target_ops::delete_record ()
 {
-  this->beneath->delete_record ();
+  this->beneath ()->delete_record ();
 }
 
 void
@@ -3928,16 +3928,16 @@ 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);
 }
 
 bool
 target_ops::record_is_replaying (ptid_t arg0)
 {
-  return this->beneath->record_is_replaying (arg0);
+  return this->beneath ()->record_is_replaying (arg0);
 }
 
 bool
@@ -3950,9 +3950,9 @@ bool
 debug_target::record_is_replaying (ptid_t arg0)
 {
   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 ());
+  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_bool (result);
@@ -3963,7 +3963,7 @@ debug_target::record_is_replaying (ptid_t arg0)
 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);
 }
 
 bool
@@ -3976,9 +3976,9 @@ bool
 debug_target::record_will_replay (ptid_t arg0, int arg1)
 {
   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 ());
+  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);
@@ -3991,7 +3991,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
@@ -4002,16 +4002,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
@@ -4023,16 +4023,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
@@ -4044,16 +4044,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
@@ -4065,9 +4065,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);
 }
@@ -4075,7 +4075,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
@@ -4087,9 +4087,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);
@@ -4099,7 +4099,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
@@ -4111,9 +4111,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);
@@ -4125,7 +4125,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
@@ -4137,9 +4137,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);
@@ -4151,7 +4151,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
@@ -4163,9 +4163,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);
@@ -4175,7 +4175,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
@@ -4187,9 +4187,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);
@@ -4201,7 +4201,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
@@ -4213,9 +4213,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);
@@ -4227,7 +4227,7 @@ debug_target::call_history_range (ULONGEST arg0, ULONGEST arg1, record_print_fla
 bool
 target_ops::augmented_libraries_svr4_read ()
 {
-  return this->beneath->augmented_libraries_svr4_read ();
+  return this->beneath ()->augmented_libraries_svr4_read ();
 }
 
 bool
@@ -4240,9 +4240,9 @@ bool
 debug_target::augmented_libraries_svr4_read ()
 {
   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 ());
+  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_bool (result);
   fputs_unfiltered ("\n", gdb_stdlog);
@@ -4252,7 +4252,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 *
@@ -4265,9 +4265,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);
@@ -4277,7 +4277,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 *
@@ -4290,9 +4290,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);
@@ -4302,7 +4302,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
@@ -4313,16 +4313,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
@@ -4333,9 +4333,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);
 }
 
diff --git a/gdb/target.c b/gdb/target.c
index 13f7e68fdf..c8fa8e1217 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -268,9 +268,7 @@ default_child_has_execution (ptid_t the_ptid)
 int
 target_has_all_memory_1 (void)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->has_all_memory ())
       return 1;
 
@@ -280,9 +278,7 @@ target_has_all_memory_1 (void)
 int
 target_has_memory_1 (void)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->has_memory ())
       return 1;
 
@@ -292,9 +288,7 @@ target_has_memory_1 (void)
 int
 target_has_stack_1 (void)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->has_stack ())
       return 1;
 
@@ -304,9 +298,7 @@ target_has_stack_1 (void)
 int
 target_has_registers_1 (void)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->has_registers ())
       return 1;
 
@@ -316,9 +308,7 @@ target_has_registers_1 (void)
 int
 target_has_execution_1 (ptid_t the_ptid)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->has_execution (the_ptid))
       return 1;
 
@@ -654,7 +644,7 @@ push_target (struct target_ops *t)
   struct target_ops **cur;
 
   /* Find the proper stratum to install this target in.  */
-  for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->beneath)
+  for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->m_beneath)
     {
       if ((int) (t->to_stratum) >= (int) (*cur)->to_stratum)
 	break;
@@ -669,13 +659,13 @@ push_target (struct target_ops *t)
          and un-hook it from the stack.  */
       struct target_ops *tmp = (*cur);
 
-      (*cur) = (*cur)->beneath;
-      tmp->beneath = NULL;
+      (*cur) = (*cur)->m_beneath;
+      tmp->m_beneath = NULL;
       target_close (tmp);
     }
 
   /* We have removed all targets in our stratum, now add the new one.  */
-  t->beneath = (*cur);
+  t->m_beneath = (*cur);
   (*cur) = t;
 }
 
@@ -695,7 +685,7 @@ unpush_target (struct target_ops *t)
   /* Look for the specified target.  Note that we assume that a target
      can only occur once in the target stack.  */
 
-  for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->beneath)
+  for (cur = &g_current_top_target; (*cur) != NULL; cur = &(*cur)->m_beneath)
     {
       if ((*cur) == t)
 	break;
@@ -708,8 +698,8 @@ unpush_target (struct target_ops *t)
 
   /* Unchain the target.  */
   tmp = (*cur);
-  (*cur) = (*cur)->beneath;
-  tmp->beneath = NULL;
+  (*cur) = (*cur)->m_beneath;
+  tmp->m_beneath = NULL;
 
   /* Finally close the target.  Note we do this after unchaining, so
      any target method calls from within the target_close
@@ -761,9 +751,9 @@ pop_all_targets (void)
 int
 target_is_pushed (struct target_ops *t)
 {
-  struct target_ops *cur;
-
-  for (cur = current_top_target (); cur != NULL; cur = cur->beneath)
+  for (target_ops *cur = current_top_target ();
+       cur != NULL;
+       cur = cur->beneath ())
     if (cur == t)
       return 1;
 
@@ -1060,7 +1050,7 @@ raw_memory_xfer_partial (struct target_ops *ops, gdb_byte *readbuf,
       if (ops->has_all_memory ())
 	break;
 
-      ops = ops->beneath;
+      ops = ops->beneath ();
     }
   while (ops != NULL);
 
@@ -1968,14 +1958,13 @@ target_remove_breakpoint (struct gdbarch *gdbarch,
 static void
 info_target_command (const char *args, int from_tty)
 {
-  struct target_ops *t;
   int has_all_mem = 0;
 
   if (symfile_objfile != NULL)
     printf_unfiltered (_("Symbols from \"%s\".\n"),
 		       objfile_name (symfile_objfile));
 
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       if (!t->has_memory ())
 	continue;
@@ -2405,9 +2394,7 @@ target_search_memory (CORE_ADDR start_addr, ULONGEST search_space_len,
 void
 target_require_runnable (void)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       /* If this target knows how to create a new program, then
 	 assume we will still be able to after killing the current
@@ -2497,7 +2484,7 @@ struct target_ops *
 find_attach_target (void)
 {
   /* If a target on the current stack can attach, use it.  */
-  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       if (t->can_attach ())
 	return t;
@@ -2513,7 +2500,7 @@ struct target_ops *
 find_run_target (void)
 {
   /* If a target on the current stack can run, use it.  */
-  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       if (t->can_create_inferior ())
 	return t;
@@ -2543,7 +2530,7 @@ target_info_proc (const char *args, enum info_proc_what what)
   if (t == NULL)
     t = find_default_run_target (NULL);
 
-  for (; t != NULL; t = t->beneath)
+  for (; t != NULL; t = t->beneath ())
     {
       if (t->info_proc (args, what))
 	{
@@ -2633,6 +2620,14 @@ target_thread_address_space (ptid_t ptid)
   return aspace;
 }
 
+/* See target.h.  */
+
+target_ops *
+target_ops::beneath () const
+{
+  return m_beneath;
+}
+
 void
 target_ops::close ()
 {
@@ -2672,9 +2667,7 @@ target_ops::can_run ()
 int
 target_can_run ()
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       if (t->can_run ())
 	return 1;
@@ -2856,9 +2849,7 @@ target_fileio_open_1 (struct inferior *inf, const char *filename,
 		      int flags, int mode, int warn_if_slow,
 		      int *target_errno)
 {
-  struct target_ops *t;
-
-  for (t = default_fileio_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = default_fileio_target (); t != NULL; t = t->beneath ())
     {
       int fd = t->fileio_open (inf, filename, flags, mode,
 			       warn_if_slow, target_errno);
@@ -3014,9 +3005,7 @@ int
 target_fileio_unlink (struct inferior *inf, const char *filename,
 		      int *target_errno)
 {
-  struct target_ops *t;
-
-  for (t = default_fileio_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = default_fileio_target (); t != NULL; t = t->beneath ())
     {
       int ret = t->fileio_unlink (inf, filename, target_errno);
 
@@ -3042,9 +3031,7 @@ gdb::optional<std::string>
 target_fileio_readlink (struct inferior *inf, const char *filename,
 			int *target_errno)
 {
-  struct target_ops *t;
-
-  for (t = default_fileio_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = default_fileio_target (); t != NULL; t = t->beneath ())
     {
       gdb::optional<std::string> ret
 	= t->fileio_readlink (inf, filename, target_errno);
@@ -3231,7 +3218,7 @@ default_thread_architecture (struct target_ops *ops, ptid_t ptid)
 struct target_ops *
 find_target_beneath (struct target_ops *t)
 {
-  return t->beneath;
+  return t->beneath ();
 }
 
 /* See target.h.  */
@@ -3239,9 +3226,7 @@ find_target_beneath (struct target_ops *t)
 struct target_ops *
 find_target_at (enum strata stratum)
 {
-  struct target_ops *t;
-
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     if (t->to_stratum == stratum)
       return t;
 
@@ -3370,7 +3355,7 @@ dummy_target::info () const
 const target_info &
 debug_target::info () const
 {
-  return beneath->info ();
+  return beneath ()->info ();
 }
 
 
@@ -3906,11 +3891,9 @@ flash_erase_command (const char *cmd, int from_tty)
 static void
 maintenance_print_target_stack (const char *cmd, int from_tty)
 {
-  struct target_ops *t;
-
   printf_filtered (_("The current target stack is:\n"));
 
-  for (t = current_top_target (); t != NULL; t = t->beneath)
+  for (target_ops *t = current_top_target (); t != NULL; t = t->beneath ())
     {
       if (t->to_stratum == debug_stratum)
 	continue;
diff --git a/gdb/target.h b/gdb/target.h
index fbd5c53f36..04047cea48 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -424,7 +424,9 @@ struct target_info
 
 struct target_ops
   {
-    struct target_ops *beneath;	/* To the target under this one.  */
+    /* To the target under this one.  */
+    target_ops *m_beneath;
+    target_ops *beneath () const;
 
     /* Free resources associated with the target.  Note that singleton
        targets, like e.g., native targets, are global objects, not
