convert to_post_attach
[deliverable/binutils-gdb.git] / gdb / target.c
index bc3176a03b3c165990840e66b16cdcb9c80fa24c..ef961e3eb146a5745d73c58aa01ee09cd5a5f65c 100644 (file)
@@ -47,7 +47,7 @@
 
 static void target_info (char *, int);
 
-static void default_terminal_info (const char *, int);
+static void default_terminal_info (struct target_ops *, const char *, int);
 
 static int default_watchpoint_addr_within_range (struct target_ops *,
                                                 CORE_ADDR, CORE_ADDR, int);
@@ -55,6 +55,8 @@ static int default_watchpoint_addr_within_range (struct target_ops *,
 static int default_region_ok_for_hw_watchpoint (struct target_ops *,
                                                CORE_ADDR, int);
 
+static void default_rcmd (struct target_ops *, char *, struct ui_file *);
+
 static void tcomplain (void) ATTRIBUTE_NORETURN;
 
 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
@@ -134,19 +136,19 @@ static int debug_to_can_accel_watchpoint_condition (struct target_ops *self,
 
 static void debug_to_terminal_init (struct target_ops *self);
 
-static void debug_to_terminal_inferior (void);
+static void debug_to_terminal_inferior (struct target_ops *self);
 
-static void debug_to_terminal_ours_for_output (void);
+static void debug_to_terminal_ours_for_output (struct target_ops *self);
 
-static void debug_to_terminal_save_ours (void);
+static void debug_to_terminal_save_ours (struct target_ops *self);
 
-static void debug_to_terminal_ours (void);
+static void debug_to_terminal_ours (struct target_ops *self);
 
-static void debug_to_load (char *, int);
+static void debug_to_load (struct target_ops *self, char *, int);
 
-static int debug_to_can_run (void);
+static int debug_to_can_run (struct target_ops *self);
 
-static void debug_to_stop (ptid_t);
+static void debug_to_stop (struct target_ops *self, ptid_t);
 
 /* Pointer to array of target architecture structures; the size of the
    array; the current index into the array; the allocated size of the
@@ -462,7 +464,7 @@ void
 target_load (char *arg, int from_tty)
 {
   target_dcache_invalidate ();
-  (*current_target.to_load) (arg, from_tty);
+  (*current_target.to_load) (&current_target, arg, from_tty);
 }
 
 void
@@ -500,7 +502,7 @@ target_terminal_inferior (void)
 
   /* If GDB is resuming the inferior in the foreground, install
      inferior's terminal modes.  */
-  (*current_target.to_terminal_inferior) ();
+  (*current_target.to_terminal_inferior) (&current_target);
 }
 
 static int
@@ -525,7 +527,7 @@ noprocess (void)
 }
 
 static void
-default_terminal_info (const char *args, int from_tty)
+default_terminal_info (struct target_ops *self, const char *args, int from_tty)
 {
   printf_unfiltered (_("No saved terminal information.\n"));
 }
@@ -537,13 +539,13 @@ default_terminal_info (const char *args, int from_tty)
    inferior_ptid.  */
 
 static ptid_t
-default_get_ada_task_ptid (long lwp, long tid)
+default_get_ada_task_ptid (struct target_ops *self, long lwp, long tid)
 {
   return ptid_build (ptid_get_pid (inferior_ptid), lwp, tid);
 }
 
 static enum exec_direction_kind
-default_execution_direction (void)
+default_execution_direction (struct target_ops *self)
 {
   if (!target_can_execute_reverse)
     return EXEC_FORWARD;
@@ -589,7 +591,7 @@ update_current_target (void)
       /* Do not inherit to_open.  */
       /* Do not inherit to_close.  */
       /* Do not inherit to_attach.  */
-      INHERIT (to_post_attach, t);
+      /* Do not inherit to_post_attach.  */
       INHERIT (to_attach_no_wait, t);
       /* Do not inherit to_detach.  */
       /* Do not inherit to_disconnect.  */
@@ -648,7 +650,7 @@ update_current_target (void)
       INHERIT (to_thread_name, t);
       INHERIT (to_stop, t);
       /* Do not inherit to_xfer_partial.  */
-      INHERIT (to_rcmd, t);
+      /* Do not inherit to_rcmd.  */
       INHERIT (to_pid_to_exec_file, t);
       INHERIT (to_log_command, t);
       INHERIT (to_stratum, t);
@@ -728,9 +730,6 @@ update_current_target (void)
   de_fault (to_close,
            (void (*) (struct target_ops *))
            target_ignore);
-  de_fault (to_post_attach,
-           (void (*) (struct target_ops *, int))
-           target_ignore);
   de_fault (to_prepare_to_store,
            (void (*) (struct target_ops *, struct regcache *))
            noprocess);
@@ -772,176 +771,179 @@ update_current_target (void)
            (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_terminal_inferior,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_terminal_ours_for_output,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_terminal_ours,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_terminal_save_ours,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_terminal_info,
            default_terminal_info);
   de_fault (to_load,
-           (void (*) (char *, int))
+           (void (*) (struct target_ops *, char *, int))
            tcomplain);
   de_fault (to_post_startup_inferior,
-           (void (*) (ptid_t))
+           (void (*) (struct target_ops *, ptid_t))
            target_ignore);
   de_fault (to_insert_fork_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_remove_fork_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_insert_vfork_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_remove_vfork_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_insert_exec_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_remove_exec_catchpoint,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            return_one);
   de_fault (to_set_syscall_catchpoint,
-           (int (*) (int, int, int, int, int *))
+           (int (*) (struct target_ops *, int, int, int, int, int *))
            return_one);
   de_fault (to_has_exited,
-           (int (*) (int, int, int *))
+           (int (*) (struct target_ops *, int, int, int *))
            return_zero);
   de_fault (to_can_run,
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_extra_thread_info,
-           (char *(*) (struct thread_info *))
+           (char *(*) (struct target_ops *, struct thread_info *))
            return_null);
   de_fault (to_thread_name,
-           (char *(*) (struct thread_info *))
+           (char *(*) (struct target_ops *, struct thread_info *))
            return_null);
   de_fault (to_stop,
-           (void (*) (ptid_t))
+           (void (*) (struct target_ops *, ptid_t))
            target_ignore);
-  de_fault (to_rcmd,
-           (void (*) (char *, struct ui_file *))
-           tcomplain);
   de_fault (to_pid_to_exec_file,
-           (char *(*) (int))
+           (char *(*) (struct target_ops *, int))
            return_null);
   de_fault (to_thread_architecture,
            default_thread_architecture);
   current_target.to_read_description = NULL;
   de_fault (to_get_ada_task_ptid,
-            (ptid_t (*) (long, long))
+            (ptid_t (*) (struct target_ops *, long, long))
             default_get_ada_task_ptid);
   de_fault (to_supports_multi_process,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_supports_enable_disable_tracepoint,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_supports_string_tracing,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_trace_init,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            tcomplain);
   de_fault (to_download_tracepoint,
-           (void (*) (struct bp_location *))
+           (void (*) (struct target_ops *, struct bp_location *))
            tcomplain);
   de_fault (to_can_download_tracepoint,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_download_trace_state_variable,
-           (void (*) (struct trace_state_variable *))
+           (void (*) (struct target_ops *, struct trace_state_variable *))
            tcomplain);
   de_fault (to_enable_tracepoint,
-           (void (*) (struct bp_location *))
+           (void (*) (struct target_ops *, struct bp_location *))
            tcomplain);
   de_fault (to_disable_tracepoint,
-           (void (*) (struct bp_location *))
+           (void (*) (struct target_ops *, struct bp_location *))
            tcomplain);
   de_fault (to_trace_set_readonly_regions,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            tcomplain);
   de_fault (to_trace_start,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            tcomplain);
   de_fault (to_get_trace_status,
-           (int (*) (struct trace_status *))
+           (int (*) (struct target_ops *, struct trace_status *))
            return_minus_one);
   de_fault (to_get_tracepoint_status,
-           (void (*) (struct breakpoint *, struct uploaded_tp *))
+           (void (*) (struct target_ops *, struct breakpoint *,
+                      struct uploaded_tp *))
            tcomplain);
   de_fault (to_trace_stop,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            tcomplain);
   de_fault (to_trace_find,
-           (int (*) (enum trace_find_type, int, CORE_ADDR, CORE_ADDR, int *))
+           (int (*) (struct target_ops *,
+                     enum trace_find_type, int, CORE_ADDR, CORE_ADDR, int *))
            return_minus_one);
   de_fault (to_get_trace_state_variable_value,
-           (int (*) (int, LONGEST *))
+           (int (*) (struct target_ops *, int, LONGEST *))
            return_zero);
   de_fault (to_save_trace_data,
-           (int (*) (const char *))
+           (int (*) (struct target_ops *, const char *))
            tcomplain);
   de_fault (to_upload_tracepoints,
-           (int (*) (struct uploaded_tp **))
+           (int (*) (struct target_ops *, struct uploaded_tp **))
            return_zero);
   de_fault (to_upload_trace_state_variables,
-           (int (*) (struct uploaded_tsv **))
+           (int (*) (struct target_ops *, struct uploaded_tsv **))
            return_zero);
   de_fault (to_get_raw_trace_data,
-           (LONGEST (*) (gdb_byte *, ULONGEST, LONGEST))
+           (LONGEST (*) (struct target_ops *, gdb_byte *, ULONGEST, LONGEST))
            tcomplain);
   de_fault (to_get_min_fast_tracepoint_insn_len,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_minus_one);
   de_fault (to_set_disconnected_tracing,
-           (void (*) (int))
+           (void (*) (struct target_ops *, int))
            target_ignore);
   de_fault (to_set_circular_trace_buffer,
-           (void (*) (int))
+           (void (*) (struct target_ops *, int))
            target_ignore);
   de_fault (to_set_trace_buffer_size,
-           (void (*) (LONGEST))
+           (void (*) (struct target_ops *, LONGEST))
            target_ignore);
   de_fault (to_set_trace_notes,
-           (int (*) (const char *, const char *, const char *))
+           (int (*) (struct target_ops *,
+                     const char *, const char *, const char *))
            return_zero);
   de_fault (to_get_tib_address,
-           (int (*) (ptid_t, CORE_ADDR *))
+           (int (*) (struct target_ops *, ptid_t, CORE_ADDR *))
            tcomplain);
   de_fault (to_set_permissions,
-           (void (*) (void))
+           (void (*) (struct target_ops *))
            target_ignore);
   de_fault (to_static_tracepoint_marker_at,
-           (int (*) (CORE_ADDR, struct static_tracepoint_marker *))
+           (int (*) (struct target_ops *,
+                     CORE_ADDR, struct static_tracepoint_marker *))
            return_zero);
   de_fault (to_static_tracepoint_markers_by_strid,
-           (VEC(static_tracepoint_marker_p) * (*) (const char *))
+           (VEC(static_tracepoint_marker_p) * (*) (struct target_ops *,
+                                                   const char *))
            tcomplain);
   de_fault (to_traceframe_info,
-           (struct traceframe_info * (*) (void))
+           (struct traceframe_info * (*) (struct target_ops *))
            return_null);
   de_fault (to_supports_evaluation_of_breakpoint_conditions,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_can_run_breakpoint_commands,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_use_agent,
-           (int (*) (int))
+           (int (*) (struct target_ops *, int))
            tcomplain);
   de_fault (to_can_use_agent,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_augmented_libraries_svr4_read,
-           (int (*) (void))
+           (int (*) (struct target_ops *))
            return_zero);
   de_fault (to_execution_direction, default_execution_direction);
 
@@ -2684,19 +2686,10 @@ target_detach (const char *args, int from_tty)
 
   prepare_for_detach ();
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_detach != NULL)
-       {
-         t->to_detach (t, args, from_tty);
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
-                               args, from_tty);
-         return;
-       }
-    }
-
-  internal_error (__FILE__, __LINE__, _("could not find a target to detach"));
+  current_target.to_detach (&current_target, args, from_tty);
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_detach (%s, %d)\n",
+                       args, from_tty);
 }
 
 void
@@ -2770,7 +2763,7 @@ target_thread_name (struct thread_info *info)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_thread_name != NULL)
-       return (*t->to_thread_name) (info);
+       return (*t->to_thread_name) (t, info);
     }
 
   return NULL;
@@ -2820,7 +2813,7 @@ target_pass_signals (int numsigs, unsigned char *pass_signals)
              fprintf_unfiltered (gdb_stdlog, " })\n");
            }
 
-         (*t->to_pass_signals) (numsigs, pass_signals);
+         (*t->to_pass_signals) (t, numsigs, pass_signals);
          return;
        }
     }
@@ -2850,7 +2843,7 @@ target_program_signals (int numsigs, unsigned char *program_signals)
              fprintf_unfiltered (gdb_stdlog, " })\n");
            }
 
-         (*t->to_program_signals) (numsigs, program_signals);
+         (*t->to_program_signals) (t, numsigs, program_signals);
          return;
        }
     }
@@ -3211,13 +3204,13 @@ find_default_is_async_p (struct target_ops *ignore)
 }
 
 static int
-find_default_supports_non_stop (void)
+find_default_supports_non_stop (struct target_ops *self)
 {
   struct target_ops *t;
 
   t = find_default_run_target (NULL);
   if (t && t->to_supports_non_stop)
-    return (t->to_supports_non_stop) ();
+    return (t->to_supports_non_stop) (t);
   return 0;
 }
 
@@ -3228,7 +3221,7 @@ target_supports_non_stop (void)
 
   for (t = &current_target; t != NULL; t = t->beneath)
     if (t->to_supports_non_stop)
-      return t->to_supports_non_stop ();
+      return t->to_supports_non_stop (t);
 
   return 0;
 }
@@ -3266,13 +3259,13 @@ target_info_proc (char *args, enum info_proc_what what)
 }
 
 static int
-find_default_supports_disable_randomization (void)
+find_default_supports_disable_randomization (struct target_ops *self)
 {
   struct target_ops *t;
 
   t = find_default_run_target (NULL);
   if (t && t->to_supports_disable_randomization)
-    return (t->to_supports_disable_randomization) ();
+    return (t->to_supports_disable_randomization) (t);
   return 0;
 }
 
@@ -3283,7 +3276,7 @@ target_supports_disable_randomization (void)
 
   for (t = &current_target; t != NULL; t = t->beneath)
     if (t->to_supports_disable_randomization)
-      return t->to_supports_disable_randomization ();
+      return t->to_supports_disable_randomization (t);
 
   return 0;
 }
@@ -3371,7 +3364,7 @@ target_fileio_open (const char *filename, int flags, int mode,
     {
       if (t->to_fileio_open != NULL)
        {
-         int fd = t->to_fileio_open (filename, flags, mode, target_errno);
+         int fd = t->to_fileio_open (t, filename, flags, mode, target_errno);
 
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog,
@@ -3399,7 +3392,7 @@ target_fileio_pwrite (int fd, const gdb_byte *write_buf, int len,
     {
       if (t->to_fileio_pwrite != NULL)
        {
-         int ret = t->to_fileio_pwrite (fd, write_buf, len, offset,
+         int ret = t->to_fileio_pwrite (t, fd, write_buf, len, offset,
                                         target_errno);
 
          if (targetdebug)
@@ -3429,7 +3422,7 @@ target_fileio_pread (int fd, gdb_byte *read_buf, int len,
     {
       if (t->to_fileio_pread != NULL)
        {
-         int ret = t->to_fileio_pread (fd, read_buf, len, offset,
+         int ret = t->to_fileio_pread (t, fd, read_buf, len, offset,
                                        target_errno);
 
          if (targetdebug)
@@ -3457,7 +3450,7 @@ target_fileio_close (int fd, int *target_errno)
     {
       if (t->to_fileio_close != NULL)
        {
-         int ret = t->to_fileio_close (fd, target_errno);
+         int ret = t->to_fileio_close (t, fd, target_errno);
 
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog,
@@ -3482,7 +3475,7 @@ target_fileio_unlink (const char *filename, int *target_errno)
     {
       if (t->to_fileio_unlink != NULL)
        {
-         int ret = t->to_fileio_unlink (filename, target_errno);
+         int ret = t->to_fileio_unlink (t, filename, target_errno);
 
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog,
@@ -3508,7 +3501,7 @@ target_fileio_readlink (const char *filename, int *target_errno)
     {
       if (t->to_fileio_readlink != NULL)
        {
-         char *ret = t->to_fileio_readlink (filename, target_errno);
+         char *ret = t->to_fileio_readlink (t, filename, target_errno);
 
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog,
@@ -3769,7 +3762,8 @@ dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
 
 /* Error-catcher for target_find_memory_regions.  */
 static int
-dummy_find_memory_regions (find_memory_region_ftype ignore1, void *ignore2)
+dummy_find_memory_regions (struct target_ops *self,
+                          find_memory_region_ftype ignore1, void *ignore2)
 {
   error (_("Command not implemented for this target."));
   return 0;
@@ -3777,7 +3771,8 @@ dummy_find_memory_regions (find_memory_region_ftype ignore1, void *ignore2)
 
 /* Error-catcher for target_make_corefile_notes.  */
 static char *
-dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
+dummy_make_corefile_notes (struct target_ops *self,
+                          bfd *ignore1, int *ignore2)
 {
   error (_("Command not implemented for this target."));
   return NULL;
@@ -3785,7 +3780,7 @@ dummy_make_corefile_notes (bfd *ignore1, int *ignore2)
 
 /* Error-catcher for target_get_bookmark.  */
 static gdb_byte *
-dummy_get_bookmark (char *ignore1, int ignore2)
+dummy_get_bookmark (struct target_ops *self, char *ignore1, int ignore2)
 {
   tcomplain ();
   return NULL;
@@ -3793,7 +3788,7 @@ dummy_get_bookmark (char *ignore1, int ignore2)
 
 /* Error-catcher for target_goto_bookmark.  */
 static void
-dummy_goto_bookmark (gdb_byte *ignore, int from_tty)
+dummy_goto_bookmark (struct target_ops *self, gdb_byte *ignore, int from_tty)
 {
   tcomplain ();
 }
@@ -3807,9 +3802,6 @@ init_dummy_target (void)
   dummy_target.to_shortname = "None";
   dummy_target.to_longname = "None";
   dummy_target.to_doc = "";
-  dummy_target.to_attach = find_default_attach;
-  dummy_target.to_detach = 
-    (void (*)(struct target_ops *, const char *, int))target_ignore;
   dummy_target.to_create_inferior = find_default_create_inferior;
   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
   dummy_target.to_supports_disable_randomization
@@ -3856,22 +3848,10 @@ target_close (struct target_ops *targ)
 void
 target_attach (char *args, int from_tty)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_attach != NULL)        
-       {
-         t->to_attach (t, args, from_tty);
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
-                               args, from_tty);
-         return;
-       }
-    }
-
-  internal_error (__FILE__, __LINE__,
-                 _("could not find a target to attach"));
+  current_target.to_attach (&current_target, args, from_tty);
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_attach (%s, %d)\n",
+                       args, from_tty);
 }
 
 int
@@ -3924,7 +3904,7 @@ target_stop (ptid_t ptid)
       return;
     }
 
-  (*current_target.to_stop) (ptid);
+  (*current_target.to_stop) (&current_target, ptid);
 }
 
 static void
@@ -4191,7 +4171,7 @@ target_enable_btrace (ptid_t ptid)
 
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_enable_btrace != NULL)
-      return t->to_enable_btrace (ptid);
+      return t->to_enable_btrace (t, ptid);
 
   tcomplain ();
   return NULL;
@@ -4207,7 +4187,7 @@ target_disable_btrace (struct btrace_target_info *btinfo)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_disable_btrace != NULL)
       {
-       t->to_disable_btrace (btinfo);
+       t->to_disable_btrace (t, btinfo);
        return;
       }
 
@@ -4224,7 +4204,7 @@ target_teardown_btrace (struct btrace_target_info *btinfo)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_teardown_btrace != NULL)
       {
-       t->to_teardown_btrace (btinfo);
+       t->to_teardown_btrace (t, btinfo);
        return;
       }
 
@@ -4242,7 +4222,7 @@ target_read_btrace (VEC (btrace_block_s) **btrace,
 
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_read_btrace != NULL)
-      return t->to_read_btrace (btrace, btinfo, type);
+      return t->to_read_btrace (t, btrace, btinfo, type);
 
   tcomplain ();
   return BTRACE_ERR_NOT_SUPPORTED;
@@ -4258,7 +4238,7 @@ target_stop_recording (void)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_stop_recording != NULL)
       {
-       t->to_stop_recording ();
+       t->to_stop_recording (t);
        return;
       }
 
@@ -4275,7 +4255,7 @@ target_info_record (void)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_info_record != NULL)
       {
-       t->to_info_record ();
+       t->to_info_record (t);
        return;
       }
 
@@ -4292,7 +4272,7 @@ target_save_record (const char *filename)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_save_record != NULL)
       {
-       t->to_save_record (filename);
+       t->to_save_record (t, filename);
        return;
       }
 
@@ -4323,7 +4303,7 @@ target_delete_record (void)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_delete_record != NULL)
       {
-       t->to_delete_record ();
+       t->to_delete_record (t);
        return;
       }
 
@@ -4339,7 +4319,7 @@ target_record_is_replaying (void)
 
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_record_is_replaying != NULL)
-       return t->to_record_is_replaying ();
+       return t->to_record_is_replaying (t);
 
   return 0;
 }
@@ -4354,7 +4334,7 @@ target_goto_record_begin (void)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_goto_record_begin != NULL)
       {
-       t->to_goto_record_begin ();
+       t->to_goto_record_begin (t);
        return;
       }
 
@@ -4371,7 +4351,7 @@ target_goto_record_end (void)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_goto_record_end != NULL)
       {
-       t->to_goto_record_end ();
+       t->to_goto_record_end (t);
        return;
       }
 
@@ -4388,7 +4368,7 @@ target_goto_record (ULONGEST insn)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_goto_record != NULL)
       {
-       t->to_goto_record (insn);
+       t->to_goto_record (t, insn);
        return;
       }
 
@@ -4405,7 +4385,7 @@ target_insn_history (int size, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_insn_history != NULL)
       {
-       t->to_insn_history (size, flags);
+       t->to_insn_history (t, size, flags);
        return;
       }
 
@@ -4422,7 +4402,7 @@ target_insn_history_from (ULONGEST from, int size, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_insn_history_from != NULL)
       {
-       t->to_insn_history_from (from, size, flags);
+       t->to_insn_history_from (t, from, size, flags);
        return;
       }
 
@@ -4439,7 +4419,7 @@ target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_insn_history_range != NULL)
       {
-       t->to_insn_history_range (begin, end, flags);
+       t->to_insn_history_range (t, begin, end, flags);
        return;
       }
 
@@ -4456,7 +4436,7 @@ target_call_history (int size, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_call_history != NULL)
       {
-       t->to_call_history (size, flags);
+       t->to_call_history (t, size, flags);
        return;
       }
 
@@ -4473,7 +4453,7 @@ target_call_history_from (ULONGEST begin, int size, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_call_history_from != NULL)
       {
-       t->to_call_history_from (begin, size, flags);
+       t->to_call_history_from (t, begin, size, flags);
        return;
       }
 
@@ -4490,7 +4470,7 @@ target_call_history_range (ULONGEST begin, ULONGEST end, int flags)
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_call_history_range != NULL)
       {
-       t->to_call_history_range (begin, end, flags);
+       t->to_call_history_range (t, begin, end, flags);
        return;
       }
 
@@ -4807,69 +4787,70 @@ debug_to_terminal_init (struct target_ops *self)
 }
 
 static void
-debug_to_terminal_inferior (void)
+debug_to_terminal_inferior (struct target_ops *self)
 {
-  debug_target.to_terminal_inferior ();
+  debug_target.to_terminal_inferior (&debug_target);
 
   fprintf_unfiltered (gdb_stdlog, "target_terminal_inferior ()\n");
 }
 
 static void
-debug_to_terminal_ours_for_output (void)
+debug_to_terminal_ours_for_output (struct target_ops *self)
 {
-  debug_target.to_terminal_ours_for_output ();
+  debug_target.to_terminal_ours_for_output (&debug_target);
 
   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours_for_output ()\n");
 }
 
 static void
-debug_to_terminal_ours (void)
+debug_to_terminal_ours (struct target_ops *self)
 {
-  debug_target.to_terminal_ours ();
+  debug_target.to_terminal_ours (&debug_target);
 
   fprintf_unfiltered (gdb_stdlog, "target_terminal_ours ()\n");
 }
 
 static void
-debug_to_terminal_save_ours (void)
+debug_to_terminal_save_ours (struct target_ops *self)
 {
-  debug_target.to_terminal_save_ours ();
+  debug_target.to_terminal_save_ours (&debug_target);
 
   fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
 }
 
 static void
-debug_to_terminal_info (const char *arg, int from_tty)
+debug_to_terminal_info (struct target_ops *self,
+                       const char *arg, int from_tty)
 {
-  debug_target.to_terminal_info (arg, from_tty);
+  debug_target.to_terminal_info (&debug_target, arg, from_tty);
 
   fprintf_unfiltered (gdb_stdlog, "target_terminal_info (%s, %d)\n", arg,
                      from_tty);
 }
 
 static void
-debug_to_load (char *args, int from_tty)
+debug_to_load (struct target_ops *self, char *args, int from_tty)
 {
-  debug_target.to_load (args, from_tty);
+  debug_target.to_load (&debug_target, args, from_tty);
 
   fprintf_unfiltered (gdb_stdlog, "target_load (%s, %d)\n", args, from_tty);
 }
 
 static void
-debug_to_post_startup_inferior (ptid_t ptid)
+debug_to_post_startup_inferior (struct target_ops *self, ptid_t ptid)
 {
-  debug_target.to_post_startup_inferior (ptid);
+  debug_target.to_post_startup_inferior (&debug_target, ptid);
 
   fprintf_unfiltered (gdb_stdlog, "target_post_startup_inferior (%d)\n",
                      ptid_get_pid (ptid));
 }
 
 static int
-debug_to_insert_fork_catchpoint (int pid)
+debug_to_insert_fork_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_insert_fork_catchpoint (pid);
+  retval = debug_target.to_insert_fork_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_insert_fork_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4878,11 +4859,11 @@ debug_to_insert_fork_catchpoint (int pid)
 }
 
 static int
-debug_to_remove_fork_catchpoint (int pid)
+debug_to_remove_fork_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_remove_fork_catchpoint (pid);
+  retval = debug_target.to_remove_fork_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_remove_fork_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4891,11 +4872,11 @@ debug_to_remove_fork_catchpoint (int pid)
 }
 
 static int
-debug_to_insert_vfork_catchpoint (int pid)
+debug_to_insert_vfork_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_insert_vfork_catchpoint (pid);
+  retval = debug_target.to_insert_vfork_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_insert_vfork_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4904,11 +4885,11 @@ debug_to_insert_vfork_catchpoint (int pid)
 }
 
 static int
-debug_to_remove_vfork_catchpoint (int pid)
+debug_to_remove_vfork_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_remove_vfork_catchpoint (pid);
+  retval = debug_target.to_remove_vfork_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_remove_vfork_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4917,11 +4898,11 @@ debug_to_remove_vfork_catchpoint (int pid)
 }
 
 static int
-debug_to_insert_exec_catchpoint (int pid)
+debug_to_insert_exec_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_insert_exec_catchpoint (pid);
+  retval = debug_target.to_insert_exec_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_insert_exec_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4930,11 +4911,11 @@ debug_to_insert_exec_catchpoint (int pid)
 }
 
 static int
-debug_to_remove_exec_catchpoint (int pid)
+debug_to_remove_exec_catchpoint (struct target_ops *self, int pid)
 {
   int retval;
 
-  retval = debug_target.to_remove_exec_catchpoint (pid);
+  retval = debug_target.to_remove_exec_catchpoint (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_remove_exec_catchpoint (%d) = %d\n",
                      pid, retval);
@@ -4943,11 +4924,13 @@ debug_to_remove_exec_catchpoint (int pid)
 }
 
 static int
-debug_to_has_exited (int pid, int wait_status, int *exit_status)
+debug_to_has_exited (struct target_ops *self,
+                    int pid, int wait_status, int *exit_status)
 {
   int has_exited;
 
-  has_exited = debug_target.to_has_exited (pid, wait_status, exit_status);
+  has_exited = debug_target.to_has_exited (&debug_target,
+                                          pid, wait_status, exit_status);
 
   fprintf_unfiltered (gdb_stdlog, "target_has_exited (%d, %d, %d) = %d\n",
                      pid, wait_status, *exit_status, has_exited);
@@ -4956,11 +4939,11 @@ debug_to_has_exited (int pid, int wait_status, int *exit_status)
 }
 
 static int
-debug_to_can_run (void)
+debug_to_can_run (struct target_ops *self)
 {
   int retval;
 
-  retval = debug_target.to_can_run ();
+  retval = debug_target.to_can_run (&debug_target);
 
   fprintf_unfiltered (gdb_stdlog, "target_can_run () = %d\n", retval);
 
@@ -4983,28 +4966,28 @@ debug_to_thread_architecture (struct target_ops *ops, ptid_t ptid)
 }
 
 static void
-debug_to_stop (ptid_t ptid)
+debug_to_stop (struct target_ops *self, ptid_t ptid)
 {
-  debug_target.to_stop (ptid);
+  debug_target.to_stop (&debug_target, ptid);
 
   fprintf_unfiltered (gdb_stdlog, "target_stop (%s)\n",
                      target_pid_to_str (ptid));
 }
 
 static void
-debug_to_rcmd (char *command,
+debug_to_rcmd (struct target_ops *self, char *command,
               struct ui_file *outbuf)
 {
-  debug_target.to_rcmd (command, outbuf);
+  debug_target.to_rcmd (&debug_target, command, outbuf);
   fprintf_unfiltered (gdb_stdlog, "target_rcmd (%s, ...)\n", command);
 }
 
 static char *
-debug_to_pid_to_exec_file (int pid)
+debug_to_pid_to_exec_file (struct target_ops *self, int pid)
 {
   char *exec_file;
 
-  exec_file = debug_target.to_pid_to_exec_file (pid);
+  exec_file = debug_target.to_pid_to_exec_file (&debug_target, pid);
 
   fprintf_unfiltered (gdb_stdlog, "target_pid_to_exec_file (%d) = %s\n",
                      pid, exec_file);
@@ -5066,16 +5049,16 @@ static char targ_desc[] =
 stack of targets currently in use (including the exec-file,\n\
 core-file, and process, if any), as well as the symbol file name.";
 
+static void
+default_rcmd (struct target_ops *self, char *command, struct ui_file *output)
+{
+  error (_("\"monitor\" command not supported by this target."));
+}
+
 static void
 do_monitor_command (char *cmd,
                 int from_tty)
 {
-  if ((current_target.to_rcmd
-       == (void (*) (char *, struct ui_file *)) tcomplain)
-      || (current_target.to_rcmd == debug_to_rcmd
-         && (debug_target.to_rcmd
-             == (void (*) (char *, struct ui_file *)) tcomplain)))
-    error (_("\"monitor\" command not supported by this target."));
   target_rcmd (cmd, gdb_stdtarg);
 }
 
This page took 0.038762 seconds and 4 git commands to generate.