convert to_insn_history_from
[deliverable/binutils-gdb.git] / gdb / target.c
index 4185871f73f0cb89a696b897ec29b6ce57fc3bda..453d7adff3bf5692932eccdd8344bddb9bee3ec7 100644 (file)
@@ -57,17 +57,19 @@ static int default_region_ok_for_hw_watchpoint (struct target_ops *,
 
 static void default_rcmd (struct target_ops *, char *, struct ui_file *);
 
-static void tcomplain (void) ATTRIBUTE_NORETURN;
+static ptid_t default_get_ada_task_ptid (struct target_ops *self,
+                                        long lwp, long tid);
 
-static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
+static int default_follow_fork (struct target_ops *self, int follow_child,
+                               int detach_fork);
 
-static int return_zero (void);
+static void default_mourn_inferior (struct target_ops *self);
 
-static int return_one (void);
+static void tcomplain (void) ATTRIBUTE_NORETURN;
 
-static int return_minus_one (void);
+static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
 
-static void *return_null (void);
+static int return_zero (void);
 
 void target_ignore (void);
 
@@ -80,10 +82,22 @@ static target_xfer_partial_ftype default_xfer_partial;
 static struct gdbarch *default_thread_architecture (struct target_ops *ops,
                                                    ptid_t ptid);
 
+static int dummy_find_memory_regions (struct target_ops *self,
+                                     find_memory_region_ftype ignore1,
+                                     void *ignore2);
+
+static char *dummy_make_corefile_notes (struct target_ops *self,
+                                       bfd *ignore1, int *ignore2);
+
+static char *default_pid_to_str (struct target_ops *ops, ptid_t ptid);
+
 static int find_default_can_async_p (struct target_ops *ignore);
 
 static int find_default_is_async_p (struct target_ops *ignore);
 
+static enum exec_direction_kind default_execution_direction
+    (struct target_ops *self);
+
 #include "target-delegates.c"
 
 static void init_dummy_target (void);
@@ -445,19 +459,10 @@ target_ignore (void)
 void
 target_kill (void)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_kill != NULL)
-      {
-       if (targetdebug)
-         fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
-
-        t->to_kill (t);
-       return;
-      }
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_kill ()\n");
 
-  noprocess ();
+  current_target.to_kill (&current_target);
 }
 
 void
@@ -637,8 +642,8 @@ update_current_target (void)
       /* Do not inherit to_follow_fork.  */
       /* Do not inherit to_insert_exec_catchpoint.  */
       /* Do not inherit to_remove_exec_catchpoint.  */
-      INHERIT (to_set_syscall_catchpoint, t);
-      INHERIT (to_has_exited, t);
+      /* Do not inherit to_set_syscall_catchpoint.  */
+      /* Do not inherit to_has_exited.  */
       /* Do not inherit to_mourn_inferior.  */
       INHERIT (to_can_run, t);
       /* Do not inherit to_pass_signals.  */
@@ -646,13 +651,13 @@ update_current_target (void)
       /* Do not inherit to_thread_alive.  */
       /* Do not inherit to_find_new_threads.  */
       /* Do not inherit to_pid_to_str.  */
-      INHERIT (to_extra_thread_info, t);
-      INHERIT (to_thread_name, t);
-      INHERIT (to_stop, t);
+      /* Do not inherit to_extra_thread_info.  */
+      /* Do not inherit to_thread_name.  */
+      /* Do not inherit to_stop.  */
       /* Do not inherit to_xfer_partial.  */
       /* Do not inherit to_rcmd.  */
-      INHERIT (to_pid_to_exec_file, t);
-      INHERIT (to_log_command, t);
+      /* Do not inherit to_pid_to_exec_file.  */
+      /* Do not inherit to_log_command.  */
       INHERIT (to_stratum, t);
       /* Do not inherit to_has_all_memory.  */
       /* Do not inherit to_has_memory.  */
@@ -663,53 +668,54 @@ update_current_target (void)
       /* Do not inherit to_can_async_p.  */
       /* Do not inherit to_is_async_p.  */
       /* Do not inherit to_async.  */
-      INHERIT (to_find_memory_regions, t);
-      INHERIT (to_make_corefile_notes, t);
-      INHERIT (to_get_bookmark, t);
-      INHERIT (to_goto_bookmark, t);
+      /* Do not inherit to_find_memory_regions.  */
+      /* Do not inherit to_make_corefile_notes.  */
+      /* Do not inherit to_get_bookmark.  */
+      /* Do not inherit to_goto_bookmark.  */
       /* Do not inherit to_get_thread_local_address.  */
-      INHERIT (to_can_execute_reverse, t);
-      INHERIT (to_execution_direction, t);
-      INHERIT (to_thread_architecture, t);
+      /* Do not inherit to_can_execute_reverse.  */
+      /* Do not inherit to_execution_direction.  */
+      /* Do not inherit to_thread_architecture.  */
       /* Do not inherit to_read_description.  */
-      INHERIT (to_get_ada_task_ptid, t);
+      /* Do not inherit to_get_ada_task_ptid.  */
       /* Do not inherit to_search_memory.  */
-      INHERIT (to_supports_multi_process, t);
-      INHERIT (to_supports_enable_disable_tracepoint, t);
-      INHERIT (to_supports_string_tracing, t);
-      INHERIT (to_trace_init, t);
-      INHERIT (to_download_tracepoint, t);
-      INHERIT (to_can_download_tracepoint, t);
-      INHERIT (to_download_trace_state_variable, t);
-      INHERIT (to_enable_tracepoint, t);
-      INHERIT (to_disable_tracepoint, t);
-      INHERIT (to_trace_set_readonly_regions, t);
-      INHERIT (to_trace_start, t);
-      INHERIT (to_get_trace_status, t);
-      INHERIT (to_get_tracepoint_status, t);
-      INHERIT (to_trace_stop, t);
-      INHERIT (to_trace_find, t);
-      INHERIT (to_get_trace_state_variable_value, t);
-      INHERIT (to_save_trace_data, t);
-      INHERIT (to_upload_tracepoints, t);
-      INHERIT (to_upload_trace_state_variables, t);
-      INHERIT (to_get_raw_trace_data, t);
-      INHERIT (to_get_min_fast_tracepoint_insn_len, t);
-      INHERIT (to_set_disconnected_tracing, t);
-      INHERIT (to_set_circular_trace_buffer, t);
-      INHERIT (to_set_trace_buffer_size, t);
-      INHERIT (to_set_trace_notes, t);
-      INHERIT (to_get_tib_address, t);
-      INHERIT (to_set_permissions, t);
-      INHERIT (to_static_tracepoint_marker_at, t);
-      INHERIT (to_static_tracepoint_markers_by_strid, t);
-      INHERIT (to_traceframe_info, t);
-      INHERIT (to_use_agent, t);
-      INHERIT (to_can_use_agent, t);
-      INHERIT (to_augmented_libraries_svr4_read, t);
+      /* Do not inherit to_supports_multi_process.  */
+      /* Do not inherit to_supports_enable_disable_tracepoint.  */
+      /* Do not inherit to_supports_string_tracing.  */
+      /* Do not inherit to_trace_init.  */
+      /* Do not inherit to_download_tracepoint.  */
+      /* Do not inherit to_can_download_tracepoint.  */
+      /* Do not inherit to_download_trace_state_variable.  */
+      /* Do not inherit to_enable_tracepoint.  */
+      /* Do not inherit to_disable_tracepoint.  */
+      /* Do not inherit to_trace_set_readonly_regions.  */
+      /* Do not inherit to_trace_start.  */
+      /* Do not inherit to_get_trace_status.  */
+      /* Do not inherit to_get_tracepoint_status.  */
+      /* Do not inherit to_trace_stop.  */
+      /* Do not inherit to_trace_find.  */
+      /* Do not inherit to_get_trace_state_variable_value.  */
+      /* Do not inherit to_save_trace_data.  */
+      /* Do not inherit to_upload_tracepoints.  */
+      /* Do not inherit to_upload_trace_state_variables.  */
+      /* Do not inherit to_get_raw_trace_data.  */
+      /* Do not inherit to_get_min_fast_tracepoint_insn_len.  */
+      /* Do not inherit to_set_disconnected_tracing.  */
+      /* Do not inherit to_set_circular_trace_buffer.  */
+      /* Do not inherit to_set_trace_buffer_size.  */
+      /* Do not inherit to_set_trace_notes.  */
+      /* Do not inherit to_get_tib_address.  */
+      /* Do not inherit to_set_permissions.  */
+      /* Do not inherit to_static_tracepoint_marker_at.  */
+      /* Do not inherit to_static_tracepoint_markers_by_strid.  */
+      /* Do not inherit to_traceframe_info.  */
+      /* Do not inherit to_use_agent.  */
+      /* Do not inherit to_can_use_agent.  */
+      /* Do not inherit to_augmented_libraries_svr4_read.  */
       INHERIT (to_magic, t);
-      INHERIT (to_supports_evaluation_of_breakpoint_conditions, t);
-      INHERIT (to_can_run_breakpoint_commands, t);
+      /* Do not inherit
+        to_supports_evaluation_of_breakpoint_conditions.  */
+      /* Do not inherit to_can_run_breakpoint_commands.  */
       /* Do not inherit to_memory_map.  */
       /* Do not inherit to_flash_erase.  */
       /* Do not inherit to_flash_done.  */
@@ -734,144 +740,10 @@ update_current_target (void)
            (int (*) (CORE_ADDR, gdb_byte *, int, int,
                      struct mem_attrib *, struct target_ops *))
            nomemory);
-  de_fault (to_set_syscall_catchpoint,
-           (int (*) (struct target_ops *, int, int, int, int, int *))
-           return_one);
-  de_fault (to_has_exited,
-           (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 target_ops *, struct thread_info *))
-           return_null);
-  de_fault (to_thread_name,
-           (char *(*) (struct target_ops *, struct thread_info *))
-           return_null);
-  de_fault (to_stop,
-           (void (*) (struct target_ops *, ptid_t))
-           target_ignore);
-  de_fault (to_pid_to_exec_file,
-           (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 (*) (struct target_ops *, long, long))
-            default_get_ada_task_ptid);
-  de_fault (to_supports_multi_process,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_supports_enable_disable_tracepoint,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_supports_string_tracing,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_trace_init,
-           (void (*) (struct target_ops *))
-           tcomplain);
-  de_fault (to_download_tracepoint,
-           (void (*) (struct target_ops *, struct bp_location *))
-           tcomplain);
-  de_fault (to_can_download_tracepoint,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_download_trace_state_variable,
-           (void (*) (struct target_ops *, struct trace_state_variable *))
-           tcomplain);
-  de_fault (to_enable_tracepoint,
-           (void (*) (struct target_ops *, struct bp_location *))
-           tcomplain);
-  de_fault (to_disable_tracepoint,
-           (void (*) (struct target_ops *, struct bp_location *))
-           tcomplain);
-  de_fault (to_trace_set_readonly_regions,
-           (void (*) (struct target_ops *))
-           tcomplain);
-  de_fault (to_trace_start,
-           (void (*) (struct target_ops *))
-           tcomplain);
-  de_fault (to_get_trace_status,
-           (int (*) (struct target_ops *, struct trace_status *))
-           return_minus_one);
-  de_fault (to_get_tracepoint_status,
-           (void (*) (struct target_ops *, struct breakpoint *,
-                      struct uploaded_tp *))
-           tcomplain);
-  de_fault (to_trace_stop,
-           (void (*) (struct target_ops *))
-           tcomplain);
-  de_fault (to_trace_find,
-           (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 (*) (struct target_ops *, int, LONGEST *))
-           return_zero);
-  de_fault (to_save_trace_data,
-           (int (*) (struct target_ops *, const char *))
-           tcomplain);
-  de_fault (to_upload_tracepoints,
-           (int (*) (struct target_ops *, struct uploaded_tp **))
-           return_zero);
-  de_fault (to_upload_trace_state_variables,
-           (int (*) (struct target_ops *, struct uploaded_tsv **))
-           return_zero);
-  de_fault (to_get_raw_trace_data,
-           (LONGEST (*) (struct target_ops *, gdb_byte *, ULONGEST, LONGEST))
-           tcomplain);
-  de_fault (to_get_min_fast_tracepoint_insn_len,
-           (int (*) (struct target_ops *))
-           return_minus_one);
-  de_fault (to_set_disconnected_tracing,
-           (void (*) (struct target_ops *, int))
-           target_ignore);
-  de_fault (to_set_circular_trace_buffer,
-           (void (*) (struct target_ops *, int))
-           target_ignore);
-  de_fault (to_set_trace_buffer_size,
-           (void (*) (struct target_ops *, LONGEST))
-           target_ignore);
-  de_fault (to_set_trace_notes,
-           (int (*) (struct target_ops *,
-                     const char *, const char *, const char *))
-           return_zero);
-  de_fault (to_get_tib_address,
-           (int (*) (struct target_ops *, ptid_t, CORE_ADDR *))
-           tcomplain);
-  de_fault (to_set_permissions,
-           (void (*) (struct target_ops *))
-           target_ignore);
-  de_fault (to_static_tracepoint_marker_at,
-           (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) * (*) (struct target_ops *,
-                                                   const char *))
-           tcomplain);
-  de_fault (to_traceframe_info,
-           (struct traceframe_info * (*) (struct target_ops *))
-           return_null);
-  de_fault (to_supports_evaluation_of_breakpoint_conditions,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_can_run_breakpoint_commands,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_use_agent,
-           (int (*) (struct target_ops *, int))
-           tcomplain);
-  de_fault (to_can_use_agent,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_augmented_libraries_svr4_read,
-           (int (*) (struct target_ops *))
-           return_zero);
-  de_fault (to_execution_direction, default_execution_direction);
 
 #undef de_fault
 
@@ -1216,16 +1088,10 @@ done:
 struct target_section_table *
 target_get_section_table (struct target_ops *target)
 {
-  struct target_ops *t;
-
   if (targetdebug)
     fprintf_unfiltered (gdb_stdlog, "target_get_section_table ()\n");
 
-  for (t = target; t != NULL; t = t->beneath)
-    if (t->to_get_section_table != NULL)
-      return (*t->to_get_section_table) (t);
-
-  return NULL;
+  return (*target->to_get_section_table) (target);
 }
 
 /* Find a section containing ADDR.  */
@@ -1891,36 +1757,18 @@ target_memory_map (void)
 void
 target_flash_erase (ULONGEST address, LONGEST length)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_flash_erase != NULL)
-      {
-       if (targetdebug)
-         fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
-                             hex_string (address), phex (length, 0));
-       t->to_flash_erase (t, address, length);
-       return;
-      }
-
-  tcomplain ();
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
+                       hex_string (address), phex (length, 0));
+  current_target.to_flash_erase (&current_target, address, length);
 }
 
 void
 target_flash_done (void)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_flash_done != NULL)
-      {
-       if (targetdebug)
-         fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
-       t->to_flash_done (t);
-       return;
-      }
-
-  tcomplain ();
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
+  current_target.to_flash_done (&current_target);
 }
 
 static void
@@ -2670,29 +2518,13 @@ target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
 char *
 target_pid_to_str (ptid_t ptid)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_pid_to_str != NULL)
-       return (*t->to_pid_to_str) (t, ptid);
-    }
-
-  return normal_pid_to_str (ptid);
+  return (*current_target.to_pid_to_str) (&current_target, ptid);
 }
 
 char *
 target_thread_name (struct thread_info *info)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_thread_name != NULL)
-       return (*t->to_thread_name) (t, info);
-    }
-
-  return NULL;
+  return current_target.to_thread_name (&current_target, info);
 }
 
 void
@@ -2718,61 +2550,53 @@ target_resume (ptid_t ptid, int step, enum gdb_signal signal)
 void
 target_pass_signals (int numsigs, unsigned char *pass_signals)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
+  if (targetdebug)
     {
-      if (t->to_pass_signals != NULL)
-       {
-         if (targetdebug)
-           {
-             int i;
+      int i;
 
-             fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
-                                 numsigs);
+      fprintf_unfiltered (gdb_stdlog, "target_pass_signals (%d, {",
+                         numsigs);
 
-             for (i = 0; i < numsigs; i++)
-               if (pass_signals[i])
-                 fprintf_unfiltered (gdb_stdlog, " %s",
-                                     gdb_signal_to_name (i));
+      for (i = 0; i < numsigs; i++)
+       if (pass_signals[i])
+         fprintf_unfiltered (gdb_stdlog, " %s",
+                             gdb_signal_to_name (i));
 
-             fprintf_unfiltered (gdb_stdlog, " })\n");
-           }
-
-         (*t->to_pass_signals) (t, numsigs, pass_signals);
-         return;
-       }
+      fprintf_unfiltered (gdb_stdlog, " })\n");
     }
+
+  (*current_target.to_pass_signals) (&current_target, numsigs, pass_signals);
 }
 
 void
 target_program_signals (int numsigs, unsigned char *program_signals)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
+  if (targetdebug)
     {
-      if (t->to_program_signals != NULL)
-       {
-         if (targetdebug)
-           {
-             int i;
-
-             fprintf_unfiltered (gdb_stdlog, "target_program_signals (%d, {",
-                                 numsigs);
+      int i;
 
-             for (i = 0; i < numsigs; i++)
-               if (program_signals[i])
-                 fprintf_unfiltered (gdb_stdlog, " %s",
-                                     gdb_signal_to_name (i));
+      fprintf_unfiltered (gdb_stdlog, "target_program_signals (%d, {",
+                         numsigs);
 
-             fprintf_unfiltered (gdb_stdlog, " })\n");
-           }
+      for (i = 0; i < numsigs; i++)
+       if (program_signals[i])
+         fprintf_unfiltered (gdb_stdlog, " %s",
+                             gdb_signal_to_name (i));
 
-         (*t->to_program_signals) (t, numsigs, program_signals);
-         return;
-       }
+      fprintf_unfiltered (gdb_stdlog, " })\n");
     }
+
+  (*current_target.to_program_signals) (&current_target,
+                                       numsigs, program_signals);
+}
+
+static int
+default_follow_fork (struct target_ops *self, int follow_child,
+                    int detach_fork)
+{
+  /* Some target returned a fork event, but did not know how to follow it.  */
+  internal_error (__FILE__, __LINE__,
+                 _("could not find a target to follow fork"));
 }
 
 /* Look through the list of possible targets for a target that can
@@ -2781,51 +2605,34 @@ target_program_signals (int numsigs, unsigned char *program_signals)
 int
 target_follow_fork (int follow_child, int detach_fork)
 {
-  struct target_ops *t;
+  int retval = current_target.to_follow_fork (&current_target,
+                                             follow_child, detach_fork);
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_follow_fork != NULL)
-       {
-         int retval = t->to_follow_fork (t, follow_child, detach_fork);
-
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog,
-                               "target_follow_fork (%d, %d) = %d\n",
-                               follow_child, detach_fork, retval);
-         return retval;
-       }
-    }
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog,
+                       "target_follow_fork (%d, %d) = %d\n",
+                       follow_child, detach_fork, retval);
+  return retval;
+}
 
-  /* Some target returned a fork event, but did not know how to follow it.  */
+static void
+default_mourn_inferior (struct target_ops *self)
+{
   internal_error (__FILE__, __LINE__,
-                 _("could not find a target to follow fork"));
+                 _("could not find a target to follow mourn inferior"));
 }
 
 void
 target_mourn_inferior (void)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_mourn_inferior != NULL)        
-       {
-         t->to_mourn_inferior (t);
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
-
-          /* We no longer need to keep handles on any of the object files.
-             Make sure to release them to avoid unnecessarily locking any
-             of them while we're not actually debugging.  */
-          bfd_cache_close_all ();
-
-         return;
-       }
-    }
+  current_target.to_mourn_inferior (&current_target);
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_mourn_inferior ()\n");
 
-  internal_error (__FILE__, __LINE__,
-                 _("could not find a target to follow mourn inferior"));
+  /* We no longer need to keep handles on any of the object files.
+     Make sure to release them to avoid unnecessarily locking any
+     of them while we're not actually debugging.  */
+  bfd_cache_close_all ();
 }
 
 /* Look for a target which can describe architectural features, starting
@@ -3590,24 +3397,6 @@ return_zero (void)
   return 0;
 }
 
-static int
-return_one (void)
-{
-  return 1;
-}
-
-static int
-return_minus_one (void)
-{
-  return -1;
-}
-
-static void *
-return_null (void)
-{
-  return 0;
-}
-
 /*
  * Find the next target down the stack from the specified target.
  */
@@ -3681,7 +3470,7 @@ normal_pid_to_str (ptid_t ptid)
 }
 
 static char *
-dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
+default_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   return normal_pid_to_str (ptid);
 }
@@ -3704,21 +3493,6 @@ dummy_make_corefile_notes (struct target_ops *self,
   return NULL;
 }
 
-/* Error-catcher for target_get_bookmark.  */
-static gdb_byte *
-dummy_get_bookmark (struct target_ops *self, char *ignore1, int ignore2)
-{
-  tcomplain ();
-  return NULL;
-}
-
-/* Error-catcher for target_goto_bookmark.  */
-static void
-dummy_goto_bookmark (struct target_ops *self, gdb_byte *ignore, int from_tty)
-{
-  tcomplain ();
-}
-
 /* Set up the handful of non-empty slots needed by the dummy target
    vector.  */
 
@@ -3732,12 +3506,7 @@ init_dummy_target (void)
   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
   dummy_target.to_supports_disable_randomization
     = find_default_supports_disable_randomization;
-  dummy_target.to_pid_to_str = dummy_pid_to_str;
   dummy_target.to_stratum = dummy_stratum;
-  dummy_target.to_find_memory_regions = dummy_find_memory_regions;
-  dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
-  dummy_target.to_get_bookmark = dummy_get_bookmark;
-  dummy_target.to_goto_bookmark = dummy_goto_bookmark;
   dummy_target.to_has_all_memory = (int (*) (struct target_ops *)) return_zero;
   dummy_target.to_has_memory = (int (*) (struct target_ops *)) return_zero;
   dummy_target.to_has_stack = (int (*) (struct target_ops *)) return_zero;
@@ -3806,19 +3575,9 @@ target_thread_alive (ptid_t ptid)
 void
 target_find_new_threads (void)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_find_new_threads != NULL)
-       {
-         t->to_find_new_threads (t);
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
-
-         return;
-       }
-    }
+  current_target.to_find_new_threads (&current_target);
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "target_find_new_threads ()\n");
 }
 
 void
@@ -3929,18 +3688,9 @@ debug_print_register (const char * func,
 void
 target_fetch_registers (struct regcache *regcache, int regno)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_fetch_registers != NULL)
-       {
-         t->to_fetch_registers (t, regcache, regno);
-         if (targetdebug)
-           debug_print_register ("target_fetch_registers", regcache, regno);
-         return;
-       }
-    }
+  current_target.to_fetch_registers (&current_target, regcache, regno);
+  if (targetdebug)
+    debug_print_register ("target_fetch_registers", regcache, regno);
 }
 
 void
@@ -3961,47 +3711,28 @@ target_store_registers (struct regcache *regcache, int regno)
 int
 target_core_of_thread (ptid_t ptid)
 {
-  struct target_ops *t;
+  int retval = current_target.to_core_of_thread (&current_target, ptid);
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_core_of_thread != NULL)
-       {
-         int retval = t->to_core_of_thread (t, ptid);
-
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog,
-                               "target_core_of_thread (%d) = %d\n",
-                               ptid_get_pid (ptid), retval);
-         return retval;
-       }
-    }
-
-  return -1;
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog,
+                       "target_core_of_thread (%d) = %d\n",
+                       ptid_get_pid (ptid), retval);
+  return retval;
 }
 
 int
 target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
 {
-  struct target_ops *t;
+  int retval = current_target.to_verify_memory (&current_target,
+                                               data, memaddr, size);
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    {
-      if (t->to_verify_memory != NULL)
-       {
-         int retval = t->to_verify_memory (t, data, memaddr, size);
-
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog,
-                               "target_verify_memory (%s, %s) = %d\n",
-                               paddress (target_gdbarch (), memaddr),
-                               pulongest (size),
-                               retval);
-         return retval;
-       }
-    }
-
-  tcomplain ();
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog,
+                       "target_verify_memory (%s, %s) = %d\n",
+                       paddress (target_gdbarch (), memaddr),
+                       pulongest (size),
+                       retval);
+  return retval;
 }
 
 /* The documentation for this function is in its prototype declaration in
@@ -4010,25 +3741,18 @@ target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
 int
 target_insert_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_insert_mask_watchpoint != NULL)
-      {
-       int ret;
+  int ret;
 
-       ret = t->to_insert_mask_watchpoint (t, addr, mask, rw);
+  ret = current_target.to_insert_mask_watchpoint (&current_target,
+                                                 addr, mask, rw);
 
-       if (targetdebug)
-         fprintf_unfiltered (gdb_stdlog, "\
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "\
 target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
-                             core_addr_to_string (addr),
-                             core_addr_to_string (mask), rw, ret);
-
-       return ret;
-      }
-
-  return 1;
+                       core_addr_to_string (addr),
+                       core_addr_to_string (mask), rw, ret);
+  
+  return ret;
 }
 
 /* The documentation for this function is in its prototype declaration in
@@ -4037,25 +3761,18 @@ target_insert_mask_watchpoint (%s, %s, %d) = %d\n",
 int
 target_remove_mask_watchpoint (CORE_ADDR addr, CORE_ADDR mask, int rw)
 {
-  struct target_ops *t;
+  int ret;
 
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_remove_mask_watchpoint != NULL)
-      {
-       int ret;
-
-       ret = t->to_remove_mask_watchpoint (t, addr, mask, rw);
+  ret = current_target.to_remove_mask_watchpoint (&current_target,
+                                                 addr, mask, rw);
 
-       if (targetdebug)
-         fprintf_unfiltered (gdb_stdlog, "\
+  if (targetdebug)
+    fprintf_unfiltered (gdb_stdlog, "\
 target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
-                             core_addr_to_string (addr),
-                             core_addr_to_string (mask), rw, ret);
-
-       return ret;
-      }
+                       core_addr_to_string (addr),
+                       core_addr_to_string (mask), rw, ret);
 
-  return 1;
+  return ret;
 }
 
 /* The documentation for this function is in its prototype declaration
@@ -4064,13 +3781,8 @@ target_remove_mask_watchpoint (%s, %s, %d) = %d\n",
 int
 target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_masked_watch_num_registers != NULL)
-      return t->to_masked_watch_num_registers (t, addr, mask);
-
-  return -1;
+  return current_target.to_masked_watch_num_registers (&current_target,
+                                                      addr, mask);
 }
 
 /* The documentation for this function is in its prototype declaration
@@ -4079,13 +3791,7 @@ target_masked_watch_num_registers (CORE_ADDR addr, CORE_ADDR mask)
 int
 target_ranged_break_num_registers (void)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_ranged_break_num_registers != NULL)
-      return t->to_ranged_break_num_registers (t);
-
-  return -1;
+  return current_target.to_ranged_break_num_registers (&current_target);
 }
 
 /* See target.h.  */
@@ -4323,16 +4029,7 @@ target_insn_history (int size, int flags)
 void
 target_insn_history_from (ULONGEST from, int size, int flags)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_insn_history_from != NULL)
-      {
-       t->to_insn_history_from (t, from, size, flags);
-       return;
-      }
-
-  tcomplain ();
+  current_target.to_insn_history_from (&current_target, from, size, flags);
 }
 
 /* See target.h.  */
@@ -4340,16 +4037,7 @@ target_insn_history_from (ULONGEST from, int size, int flags)
 void
 target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_insn_history_range != NULL)
-      {
-       t->to_insn_history_range (t, begin, end, flags);
-       return;
-      }
-
-  tcomplain ();
+  current_target.to_insn_history_range (&current_target, begin, end, flags);
 }
 
 /* See target.h.  */
@@ -4357,16 +4045,7 @@ target_insn_history_range (ULONGEST begin, ULONGEST end, int flags)
 void
 target_call_history (int size, int flags)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_call_history != NULL)
-      {
-       t->to_call_history (t, size, flags);
-       return;
-      }
-
-  tcomplain ();
+  current_target.to_call_history (&current_target, size, flags);
 }
 
 /* See target.h.  */
@@ -4374,16 +4053,7 @@ target_call_history (int size, int flags)
 void
 target_call_history_from (ULONGEST begin, int size, int flags)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_call_history_from != NULL)
-      {
-       t->to_call_history_from (t, begin, size, flags);
-       return;
-      }
-
-  tcomplain ();
+  current_target.to_call_history_from (&current_target, begin, size, flags);
 }
 
 /* See target.h.  */
@@ -4391,16 +4061,7 @@ target_call_history_from (ULONGEST begin, int size, int flags)
 void
 target_call_history_range (ULONGEST begin, ULONGEST end, int flags)
 {
-  struct target_ops *t;
-
-  for (t = current_target.beneath; t != NULL; t = t->beneath)
-    if (t->to_call_history_range != NULL)
-      {
-       t->to_call_history_range (t, begin, end, flags);
-       return;
-      }
-
-  tcomplain ();
+  current_target.to_call_history_range (&current_target, begin, end, flags);
 }
 
 static void
This page took 0.033407 seconds and 4 git commands to generate.